summaryrefslogtreecommitdiffstats
path: root/branches/sdo-java-M2
diff options
context:
space:
mode:
Diffstat (limited to 'branches/sdo-java-M2')
-rw-r--r--branches/sdo-java-M2/sdo-api/BUILDING.txt26
-rw-r--r--branches/sdo-java-M2/sdo-api/LICENSE.txt240
-rw-r--r--branches/sdo-java-M2/sdo-api/NOTICE.txt33
-rw-r--r--branches/sdo-java-M2/sdo-api/STATUS.txt73
-rw-r--r--branches/sdo-java-M2/sdo-api/pom.xml118
-rw-r--r--branches/sdo-java-M2/sdo-api/src/main/java/commonj/sdo/ChangeSummary.java204
-rw-r--r--branches/sdo-java-M2/sdo-api/src/main/java/commonj/sdo/DataGraph.java73
-rw-r--r--branches/sdo-java-M2/sdo-api/src/main/java/commonj/sdo/DataObject.java1105
-rw-r--r--branches/sdo-java-M2/sdo-api/src/main/java/commonj/sdo/Property.java79
-rw-r--r--branches/sdo-java-M2/sdo-api/src/main/java/commonj/sdo/Sequence.java131
-rw-r--r--branches/sdo-java-M2/sdo-api/src/main/java/commonj/sdo/Type.java143
-rw-r--r--branches/sdo-java-M2/sdo-api/src/main/java/commonj/sdo/helper/CopyHelper.java82
-rw-r--r--branches/sdo-java-M2/sdo-api/src/main/java/commonj/sdo/helper/DataFactory.java61
-rw-r--r--branches/sdo-java-M2/sdo-api/src/main/java/commonj/sdo/helper/DataHelper.java184
-rw-r--r--branches/sdo-java-M2/sdo-api/src/main/java/commonj/sdo/helper/EqualityHelper.java89
-rw-r--r--branches/sdo-java-M2/sdo-api/src/main/java/commonj/sdo/helper/TypeHelper.java71
-rw-r--r--branches/sdo-java-M2/sdo-api/src/main/java/commonj/sdo/helper/XMLDocument.java152
-rw-r--r--branches/sdo-java-M2/sdo-api/src/main/java/commonj/sdo/helper/XMLHelper.java167
-rw-r--r--branches/sdo-java-M2/sdo-api/src/main/java/commonj/sdo/helper/XSDHelper.java193
-rw-r--r--branches/sdo-java-M2/sdo-api/src/main/java/commonj/sdo/impl/ExternalizableDelegator.java87
-rw-r--r--branches/sdo-java-M2/sdo-api/src/main/java/commonj/sdo/impl/HelperProvider.java367
-rw-r--r--branches/sdo-java-M2/sdo-api/src/main/java/commonj/sdo/impl/NoHelperProviderException.java58
-rw-r--r--branches/sdo-java-M2/sdo-api/src/main/resources/xml/datagraph.xsd77
-rw-r--r--branches/sdo-java-M2/sdo-api/src/main/resources/xml/sdoJava.xml45
-rw-r--r--branches/sdo-java-M2/sdo-api/src/main/resources/xml/sdoJava.xsd85
-rw-r--r--branches/sdo-java-M2/sdo-api/src/main/resources/xml/sdoModel.xml87
-rw-r--r--branches/sdo-java-M2/sdo-api/src/main/resources/xml/sdoModel.xsd217
-rw-r--r--branches/sdo-java-M2/sdo-api/src/main/resources/xml/sdoXML.xml32
-rw-r--r--branches/sdo-java-M2/sdo-api/src/main/resources/xml/sdoXML.xsd49
-rw-r--r--branches/sdo-java-M2/sdo-api/src/test/java/commonj/sdo/impl/HelperProviderTestCase.java90
-rw-r--r--branches/sdo-java-M2/sdo-api/src/test/java/test/DefaultHelperProvider.java71
-rw-r--r--branches/sdo-java-M2/sdo-api/src/test/java/test/TCCL1HelperProvider.java71
-rw-r--r--branches/sdo-java-M2/sdo-api/src/test/resources/default/META-INF/services/commonj.sdo.impl.HelperProvider3
-rw-r--r--branches/sdo-java-M2/sdo-api/src/test/resources/tccl1/META-INF/services/commonj.sdo.impl.HelperProvider1
-rw-r--r--branches/sdo-java-M2/sdo/BUILDING.txt48
-rw-r--r--branches/sdo-java-M2/sdo/LICENSE.txt416
-rw-r--r--branches/sdo-java-M2/sdo/NOTICE.txt33
-rw-r--r--branches/sdo-java-M2/sdo/STATUS.txt73
-rw-r--r--branches/sdo-java-M2/sdo/distribution/RELEASE_NOTES.txt127
-rw-r--r--branches/sdo-java-M2/sdo/distribution/readme.html45
-rw-r--r--branches/sdo-java-M2/sdo/impl/model/SDO.ecore962
-rw-r--r--branches/sdo-java-M2/sdo/impl/model/SDO.genmodel564
-rw-r--r--branches/sdo-java-M2/sdo/impl/model/SDO.mdl7670
-rw-r--r--branches/sdo-java-M2/sdo/impl/pom.xml130
-rw-r--r--branches/sdo-java-M2/sdo/impl/src/main/java/org/apache/tuscany/sdo/AnyTypeDataObject.java37
-rw-r--r--branches/sdo-java-M2/sdo/impl/src/main/java/org/apache/tuscany/sdo/SDOExtendedMetaData.java38
-rw-r--r--branches/sdo-java-M2/sdo/impl/src/main/java/org/apache/tuscany/sdo/SDOFactory.java176
-rw-r--r--branches/sdo-java-M2/sdo/impl/src/main/java/org/apache/tuscany/sdo/SDOPackage.java1602
-rw-r--r--branches/sdo-java-M2/sdo/impl/src/main/java/org/apache/tuscany/sdo/SDOTypeVisitor.java49
-rw-r--r--branches/sdo-java-M2/sdo/impl/src/main/java/org/apache/tuscany/sdo/SimpleAnyTypeDataObject.java35
-rw-r--r--branches/sdo-java-M2/sdo/impl/src/main/java/org/apache/tuscany/sdo/codegen/BytecodeInterfaceGenerator.java98
-rw-r--r--branches/sdo-java-M2/sdo/impl/src/main/java/org/apache/tuscany/sdo/codegen/GenerationException.java42
-rw-r--r--branches/sdo-java-M2/sdo/impl/src/main/java/org/apache/tuscany/sdo/codegen/JavaInterfaceGenerator.java179
-rw-r--r--branches/sdo-java-M2/sdo/impl/src/main/java/org/apache/tuscany/sdo/codegen/NoJavaImplementationException.java61
-rw-r--r--branches/sdo-java-M2/sdo/impl/src/main/java/org/apache/tuscany/sdo/helper/CopyHelperImpl.java54
-rw-r--r--branches/sdo-java-M2/sdo/impl/src/main/java/org/apache/tuscany/sdo/helper/CrossScopeCopyHelperImpl.java255
-rw-r--r--branches/sdo-java-M2/sdo/impl/src/main/java/org/apache/tuscany/sdo/helper/DataFactoryImpl.java65
-rw-r--r--branches/sdo-java-M2/sdo/impl/src/main/java/org/apache/tuscany/sdo/helper/DataHelperImpl.java469
-rw-r--r--branches/sdo-java-M2/sdo/impl/src/main/java/org/apache/tuscany/sdo/helper/EqualityHelperImpl.java70
-rw-r--r--branches/sdo-java-M2/sdo/impl/src/main/java/org/apache/tuscany/sdo/helper/HelperProviderImpl.java215
-rw-r--r--branches/sdo-java-M2/sdo/impl/src/main/java/org/apache/tuscany/sdo/helper/SDOAnnotations.java51
-rw-r--r--branches/sdo-java-M2/sdo/impl/src/main/java/org/apache/tuscany/sdo/helper/SDOExtendedMetaDataImpl.java99
-rw-r--r--branches/sdo-java-M2/sdo/impl/src/main/java/org/apache/tuscany/sdo/helper/SDOXSDEcoreBuilder.java458
-rw-r--r--branches/sdo-java-M2/sdo/impl/src/main/java/org/apache/tuscany/sdo/helper/SchemaBuilder.java786
-rw-r--r--branches/sdo-java-M2/sdo/impl/src/main/java/org/apache/tuscany/sdo/helper/TypeHelperImpl.java286
-rw-r--r--branches/sdo-java-M2/sdo/impl/src/main/java/org/apache/tuscany/sdo/helper/TypeTable.java254
-rw-r--r--branches/sdo-java-M2/sdo/impl/src/main/java/org/apache/tuscany/sdo/helper/XMLDocumentImpl.java536
-rw-r--r--branches/sdo-java-M2/sdo/impl/src/main/java/org/apache/tuscany/sdo/helper/XMLHelperImpl.java119
-rw-r--r--branches/sdo-java-M2/sdo/impl/src/main/java/org/apache/tuscany/sdo/helper/XMLStreamHelper.java92
-rw-r--r--branches/sdo-java-M2/sdo/impl/src/main/java/org/apache/tuscany/sdo/helper/XMLStreamHelperImpl.java129
-rw-r--r--branches/sdo-java-M2/sdo/impl/src/main/java/org/apache/tuscany/sdo/helper/XSDHelperImpl.java285
-rw-r--r--branches/sdo-java-M2/sdo/impl/src/main/java/org/apache/tuscany/sdo/impl/AnyTypeDataObjectImpl.java299
-rw-r--r--branches/sdo-java-M2/sdo/impl/src/main/java/org/apache/tuscany/sdo/impl/AttributeImpl.java735
-rw-r--r--branches/sdo-java-M2/sdo/impl/src/main/java/org/apache/tuscany/sdo/impl/ChangeSummaryImpl.java682
-rw-r--r--branches/sdo-java-M2/sdo/impl/src/main/java/org/apache/tuscany/sdo/impl/ChangeSummarySettingImpl.java113
-rw-r--r--branches/sdo-java-M2/sdo/impl/src/main/java/org/apache/tuscany/sdo/impl/ClassImpl.java772
-rw-r--r--branches/sdo-java-M2/sdo/impl/src/main/java/org/apache/tuscany/sdo/impl/DataGraphImpl.java823
-rw-r--r--branches/sdo-java-M2/sdo/impl/src/main/java/org/apache/tuscany/sdo/impl/DataObjectBase.java313
-rw-r--r--branches/sdo-java-M2/sdo/impl/src/main/java/org/apache/tuscany/sdo/impl/DataObjectImpl.java1511
-rw-r--r--branches/sdo-java-M2/sdo/impl/src/main/java/org/apache/tuscany/sdo/impl/DataTypeImpl.java753
-rw-r--r--branches/sdo-java-M2/sdo/impl/src/main/java/org/apache/tuscany/sdo/impl/DynamicDataObjectImpl.java199
-rw-r--r--branches/sdo-java-M2/sdo/impl/src/main/java/org/apache/tuscany/sdo/impl/DynamicStoreDataObjectImpl.java91
-rw-r--r--branches/sdo-java-M2/sdo/impl/src/main/java/org/apache/tuscany/sdo/impl/EnumImpl.java173
-rw-r--r--branches/sdo-java-M2/sdo/impl/src/main/java/org/apache/tuscany/sdo/impl/FactoryBase.java304
-rw-r--r--branches/sdo-java-M2/sdo/impl/src/main/java/org/apache/tuscany/sdo/impl/ReferenceImpl.java701
-rw-r--r--branches/sdo-java-M2/sdo/impl/src/main/java/org/apache/tuscany/sdo/impl/SDOFactoryImpl.java328
-rw-r--r--branches/sdo-java-M2/sdo/impl/src/main/java/org/apache/tuscany/sdo/impl/SDOPackageImpl.java2136
-rw-r--r--branches/sdo-java-M2/sdo/impl/src/main/java/org/apache/tuscany/sdo/impl/SimpleAnyTypeDataObjectImpl.java333
-rw-r--r--branches/sdo-java-M2/sdo/impl/src/main/java/org/apache/tuscany/sdo/impl/StoreDataObjectImpl.java314
-rw-r--r--branches/sdo-java-M2/sdo/impl/src/main/java/org/apache/tuscany/sdo/model/BaseDataGraphType.java128
-rw-r--r--branches/sdo-java-M2/sdo/impl/src/main/java/org/apache/tuscany/sdo/model/ChangeSummaryType.java155
-rw-r--r--branches/sdo-java-M2/sdo/impl/src/main/java/org/apache/tuscany/sdo/model/DataGraphType.java53
-rw-r--r--branches/sdo-java-M2/sdo/impl/src/main/java/org/apache/tuscany/sdo/model/DataObject.java33
-rw-r--r--branches/sdo-java-M2/sdo/impl/src/main/java/org/apache/tuscany/sdo/model/ModelFactory.java103
-rw-r--r--branches/sdo-java-M2/sdo/impl/src/main/java/org/apache/tuscany/sdo/model/ModelPackage.java144
-rw-r--r--branches/sdo-java-M2/sdo/impl/src/main/java/org/apache/tuscany/sdo/model/ModelsType.java59
-rw-r--r--branches/sdo-java-M2/sdo/impl/src/main/java/org/apache/tuscany/sdo/model/Property.java345
-rw-r--r--branches/sdo-java-M2/sdo/impl/src/main/java/org/apache/tuscany/sdo/model/TextType.java54
-rw-r--r--branches/sdo-java-M2/sdo/impl/src/main/java/org/apache/tuscany/sdo/model/Type.java374
-rw-r--r--branches/sdo-java-M2/sdo/impl/src/main/java/org/apache/tuscany/sdo/model/Types.java56
-rw-r--r--branches/sdo-java-M2/sdo/impl/src/main/java/org/apache/tuscany/sdo/model/XSDType.java59
-rw-r--r--branches/sdo-java-M2/sdo/impl/src/main/java/org/apache/tuscany/sdo/model/impl/BaseDataGraphTypeImpl.java411
-rw-r--r--branches/sdo-java-M2/sdo/impl/src/main/java/org/apache/tuscany/sdo/model/impl/ChangeSummaryTypeImpl.java399
-rw-r--r--branches/sdo-java-M2/sdo/impl/src/main/java/org/apache/tuscany/sdo/model/impl/DataGraphTypeImpl.java190
-rw-r--r--branches/sdo-java-M2/sdo/impl/src/main/java/org/apache/tuscany/sdo/model/impl/DataObjectImpl.java57
-rw-r--r--branches/sdo-java-M2/sdo/impl/src/main/java/org/apache/tuscany/sdo/model/impl/ModelFactoryImpl.java1108
-rw-r--r--branches/sdo-java-M2/sdo/impl/src/main/java/org/apache/tuscany/sdo/model/impl/ModelPackageImpl.java4334
-rw-r--r--branches/sdo-java-M2/sdo/impl/src/main/java/org/apache/tuscany/sdo/model/impl/ModelsTypeImpl.java192
-rw-r--r--branches/sdo-java-M2/sdo/impl/src/main/java/org/apache/tuscany/sdo/model/impl/PropertyImpl.java804
-rw-r--r--branches/sdo-java-M2/sdo/impl/src/main/java/org/apache/tuscany/sdo/model/impl/TextTypeImpl.java173
-rw-r--r--branches/sdo-java-M2/sdo/impl/src/main/java/org/apache/tuscany/sdo/model/impl/TypeImpl.java854
-rw-r--r--branches/sdo-java-M2/sdo/impl/src/main/java/org/apache/tuscany/sdo/model/impl/TypesImpl.java182
-rw-r--r--branches/sdo-java-M2/sdo/impl/src/main/java/org/apache/tuscany/sdo/model/impl/XSDTypeImpl.java192
-rw-r--r--branches/sdo-java-M2/sdo/impl/src/main/java/org/apache/tuscany/sdo/model/java/JavaFactory.java49
-rw-r--r--branches/sdo-java-M2/sdo/impl/src/main/java/org/apache/tuscany/sdo/model/java/JavaInfo.java63
-rw-r--r--branches/sdo-java-M2/sdo/impl/src/main/java/org/apache/tuscany/sdo/model/java/impl/JavaFactoryImpl.java364
-rw-r--r--branches/sdo-java-M2/sdo/impl/src/main/java/org/apache/tuscany/sdo/model/java/impl/JavaInfoImpl.java188
-rw-r--r--branches/sdo-java-M2/sdo/impl/src/main/java/org/apache/tuscany/sdo/model/java/impl/JavaPackageImpl.java1152
-rw-r--r--branches/sdo-java-M2/sdo/impl/src/main/java/org/apache/tuscany/sdo/util/BasicSequence.java137
-rw-r--r--branches/sdo-java-M2/sdo/impl/src/main/java/org/apache/tuscany/sdo/util/DataGraphResourceFactoryImpl.java699
-rw-r--r--branches/sdo-java-M2/sdo/impl/src/main/java/org/apache/tuscany/sdo/util/DataObjectUtil.java2681
-rw-r--r--branches/sdo-java-M2/sdo/impl/src/main/java/org/apache/tuscany/sdo/util/SDOUtil.java702
-rw-r--r--branches/sdo-java-M2/sdo/impl/src/main/java/org/apache/tuscany/sdo/util/StAX2SAXAdapter.java250
-rw-r--r--branches/sdo-java-M2/sdo/impl/src/main/java/org/apache/tuscany/sdo/util/metadata/JavaMetaData.java88
-rw-r--r--branches/sdo-java-M2/sdo/impl/src/main/java/org/apache/tuscany/sdo/util/metadata/MetadataFactory.java76
-rw-r--r--branches/sdo-java-M2/sdo/impl/src/main/java/org/apache/tuscany/sdo/util/metadata/SDOMetaDataGroup.java89
-rw-r--r--branches/sdo-java-M2/sdo/impl/src/main/java/org/apache/tuscany/sdo/util/metadata/TypeMetaData.java63
-rw-r--r--branches/sdo-java-M2/sdo/impl/src/main/java/org/apache/tuscany/sdo/util/metadata/XSDMetaData.java63
-rw-r--r--branches/sdo-java-M2/sdo/impl/src/main/java/org/apache/tuscany/sdo/util/metadata/impl/JavaMetaDataImpl.java244
-rw-r--r--branches/sdo-java-M2/sdo/impl/src/main/java/org/apache/tuscany/sdo/util/metadata/impl/MetadataFactoryImpl.java177
-rw-r--r--branches/sdo-java-M2/sdo/impl/src/main/java/org/apache/tuscany/sdo/util/metadata/impl/MetadataPackageImpl.java1018
-rw-r--r--branches/sdo-java-M2/sdo/impl/src/main/java/org/apache/tuscany/sdo/util/metadata/impl/SDOMetaDataGroupImpl.java326
-rw-r--r--branches/sdo-java-M2/sdo/impl/src/main/java/org/apache/tuscany/sdo/util/metadata/impl/TypeMetaDataImpl.java188
-rw-r--r--branches/sdo-java-M2/sdo/impl/src/main/java/org/apache/tuscany/sdo/util/metadata/impl/XSDMetaDataImpl.java188
-rw-r--r--branches/sdo-java-M2/sdo/impl/src/main/java/org/apache/tuscany/sdo/util/resource/DataObjectXMLStreamReader.java1525
-rw-r--r--branches/sdo-java-M2/sdo/impl/src/main/java/org/apache/tuscany/sdo/util/resource/SDOXMLResourceFactoryImpl.java47
-rw-r--r--branches/sdo-java-M2/sdo/impl/src/main/java/org/apache/tuscany/sdo/util/resource/SDOXMLResourceImpl.java184
-rw-r--r--branches/sdo-java-M2/sdo/impl/src/main/java/org/apache/tuscany/sdo/util/resource/XMLDocumentStreamReader.java442
-rw-r--r--branches/sdo-java-M2/sdo/impl/src/main/java/org/apache/tuscany/sdo/util/resource/XMLFragmentStreamReader.java50
-rw-r--r--branches/sdo-java-M2/sdo/impl/src/main/java/org/apache/tuscany/sdo/util/resource/XMLStreamSerializer.java258
-rw-r--r--branches/sdo-java-M2/sdo/impl/src/main/resources/META-INF/LICENSE.txt446
-rw-r--r--branches/sdo-java-M2/sdo/impl/src/main/resources/META-INF/MANIFEST.MF25
-rw-r--r--branches/sdo-java-M2/sdo/impl/src/main/resources/META-INF/NOTICE29
-rw-r--r--branches/sdo-java-M2/sdo/impl/src/main/resources/META-INF/README.txt35
-rw-r--r--branches/sdo-java-M2/sdo/impl/src/main/resources/META-INF/services/commonj.sdo.impl.HelperProvider1
-rw-r--r--branches/sdo-java-M2/sdo/impl/src/main/resources/sdo-metadata.xsd45
-rw-r--r--branches/sdo-java-M2/sdo/impl/src/test/java/com/example/simple/Quote.java310
-rw-r--r--branches/sdo-java-M2/sdo/impl/src/test/java/com/example/simple/SimpleFactory.java49
-rw-r--r--branches/sdo-java-M2/sdo/impl/src/test/java/com/example/simple/impl/QuoteImpl.java715
-rw-r--r--branches/sdo-java-M2/sdo/impl/src/test/java/com/example/simple/impl/SimpleFactoryImpl.java141
-rw-r--r--branches/sdo-java-M2/sdo/impl/src/test/java/com/example/simple/impl/SimplePackageImpl.java911
-rw-r--r--branches/sdo-java-M2/sdo/impl/src/test/java/org/apache/tuscany/sdo/codegen/Bar1.java26
-rw-r--r--branches/sdo-java-M2/sdo/impl/src/test/java/org/apache/tuscany/sdo/codegen/Bar2.java26
-rw-r--r--branches/sdo-java-M2/sdo/impl/src/test/java/org/apache/tuscany/sdo/codegen/BytecodeInterfaceGeneratorTestCase.java167
-rw-r--r--branches/sdo-java-M2/sdo/impl/src/test/java/org/apache/tuscany/sdo/codegen/Foo.java26
-rw-r--r--branches/sdo-java-M2/sdo/impl/src/test/java/org/apache/tuscany/sdo/codegen/JavaInterfaceGeneratorTestCase.java129
-rw-r--r--branches/sdo-java-M2/sdo/impl/src/test/java/org/apache/tuscany/sdo/codegen/MockProperty.java78
-rw-r--r--branches/sdo-java-M2/sdo/impl/src/test/java/org/apache/tuscany/sdo/codegen/MockType.java96
-rw-r--r--branches/sdo-java-M2/sdo/impl/src/test/java/org/apache/tuscany/sdo/test/ChangeSummaryTestCase.java92
-rw-r--r--branches/sdo-java-M2/sdo/impl/src/test/java/org/apache/tuscany/sdo/test/CrossScopeCopyTestCase.java469
-rw-r--r--branches/sdo-java-M2/sdo/impl/src/test/java/org/apache/tuscany/sdo/test/DataTypeBaseTypeTestCase.java68
-rw-r--r--branches/sdo-java-M2/sdo/impl/src/test/java/org/apache/tuscany/sdo/test/DateConversionTestCase.java366
-rw-r--r--branches/sdo-java-M2/sdo/impl/src/test/java/org/apache/tuscany/sdo/test/DefineOpenContentPropertyTestCase.java123
-rw-r--r--branches/sdo-java-M2/sdo/impl/src/test/java/org/apache/tuscany/sdo/test/DefineTypeTestCase.java627
-rw-r--r--branches/sdo-java-M2/sdo/impl/src/test/java/org/apache/tuscany/sdo/test/IsManyTestCase.java65
-rw-r--r--branches/sdo-java-M2/sdo/impl/src/test/java/org/apache/tuscany/sdo/test/JiraTestCases.java184
-rw-r--r--branches/sdo-java-M2/sdo/impl/src/test/java/org/apache/tuscany/sdo/test/MixedTypeTestCase.java89
-rw-r--r--branches/sdo-java-M2/sdo/impl/src/test/java/org/apache/tuscany/sdo/test/OpenTypeTestCase.java85
-rw-r--r--branches/sdo-java-M2/sdo/impl/src/test/java/org/apache/tuscany/sdo/test/SerializeTypesTestCase.java133
-rw-r--r--branches/sdo-java-M2/sdo/impl/src/test/java/org/apache/tuscany/sdo/test/SimpleCopyTestCase.java71
-rw-r--r--branches/sdo-java-M2/sdo/impl/src/test/java/org/apache/tuscany/sdo/test/SimpleDynamicTestCase.java81
-rw-r--r--branches/sdo-java-M2/sdo/impl/src/test/java/org/apache/tuscany/sdo/test/SimpleEqualityTestCase.java63
-rw-r--r--branches/sdo-java-M2/sdo/impl/src/test/java/org/apache/tuscany/sdo/test/SubstitutionValuesTestCase.java47
-rw-r--r--branches/sdo-java-M2/sdo/impl/src/test/java/org/apache/tuscany/sdo/test/TestUtil.java285
-rw-r--r--branches/sdo-java-M2/sdo/impl/src/test/java/org/apache/tuscany/sdo/test/TypeConversionTestCase.java883
-rw-r--r--branches/sdo-java-M2/sdo/impl/src/test/java/org/apache/tuscany/sdo/test/TypeRoundTripTestCase.java147
-rw-r--r--branches/sdo-java-M2/sdo/impl/src/test/java/org/apache/tuscany/sdo/test/XMLDocumentTestCase.java110
-rw-r--r--branches/sdo-java-M2/sdo/impl/src/test/java/org/apache/tuscany/sdo/test/XMLStreamHelperTestCase.java144
-rw-r--r--branches/sdo-java-M2/sdo/impl/src/test/java/org/apache/tuscany/sdo/test/XPathTestCase.java128
-rw-r--r--branches/sdo-java-M2/sdo/impl/src/test/java/org/apache/tuscany/sdo/test/XSDHelperTestCase.java192
-rw-r--r--branches/sdo-java-M2/sdo/impl/src/test/resources/SubstitutionValues.xsd30
-rw-r--r--branches/sdo-java-M2/sdo/impl/src/test/resources/XMLDocumentNoNamespaceSchemaLocation.xsd31
-rw-r--r--branches/sdo-java-M2/sdo/impl/src/test/resources/XMLDocumentSchemaLocation.xsd35
-rw-r--r--branches/sdo-java-M2/sdo/impl/src/test/resources/XMLDocumentTestCase.xml14
-rw-r--r--branches/sdo-java-M2/sdo/impl/src/test/resources/api_test.xsd46
-rw-r--r--branches/sdo-java-M2/sdo/impl/src/test/resources/bank.xsd78
-rw-r--r--branches/sdo-java-M2/sdo/impl/src/test/resources/company.xsd44
-rw-r--r--branches/sdo-java-M2/sdo/impl/src/test/resources/customer1.xml8
-rw-r--r--branches/sdo-java-M2/sdo/impl/src/test/resources/customer2.xml8
-rw-r--r--branches/sdo-java-M2/sdo/impl/src/test/resources/datatype.xsd34
-rw-r--r--branches/sdo-java-M2/sdo/impl/src/test/resources/foo-ext.xml9
-rw-r--r--branches/sdo-java-M2/sdo/impl/src/test/resources/foo-ext.xsd44
-rw-r--r--branches/sdo-java-M2/sdo/impl/src/test/resources/foo.xsd232
-rw-r--r--branches/sdo-java-M2/sdo/impl/src/test/resources/mixed.xml9
-rw-r--r--branches/sdo-java-M2/sdo/impl/src/test/resources/mixed.xsd41
-rw-r--r--branches/sdo-java-M2/sdo/impl/src/test/resources/mixed2.xml12
-rw-r--r--branches/sdo-java-M2/sdo/impl/src/test/resources/mixedopen.xml13
-rw-r--r--branches/sdo-java-M2/sdo/impl/src/test/resources/names.xsd33
-rw-r--r--branches/sdo-java-M2/sdo/impl/src/test/resources/open.xml8
-rw-r--r--branches/sdo-java-M2/sdo/impl/src/test/resources/open.xsd44
-rw-r--r--branches/sdo-java-M2/sdo/impl/src/test/resources/open1any.xsd44
-rw-r--r--branches/sdo-java-M2/sdo/impl/src/test/resources/open2.xml9
-rw-r--r--branches/sdo-java-M2/sdo/impl/src/test/resources/openContentProperty.xml12
-rw-r--r--branches/sdo-java-M2/sdo/impl/src/test/resources/po.xsd62
-rw-r--r--branches/sdo-java-M2/sdo/impl/src/test/resources/quote.xml14
-rw-r--r--branches/sdo-java-M2/sdo/impl/src/test/resources/sdoannotations.xsd60
-rw-r--r--branches/sdo-java-M2/sdo/impl/src/test/resources/sdotypes.xsd71
-rw-r--r--branches/sdo-java-M2/sdo/impl/src/test/resources/shallowquote.xml11
-rw-r--r--branches/sdo-java-M2/sdo/impl/src/test/resources/simple.xsd41
-rw-r--r--branches/sdo-java-M2/sdo/impl/src/test/resources/simplechangesummary.xml36
-rw-r--r--branches/sdo-java-M2/sdo/impl/src/test/resources/xpath.xml51
-rw-r--r--branches/sdo-java-M2/sdo/impl/src/test/resources/xpath.xsd75
-rw-r--r--branches/sdo-java-M2/sdo/plugin/pom.xml57
-rw-r--r--branches/sdo-java-M2/sdo/plugin/src/main/java/org/apache/tuscany/sdo/plugin/GeneratorMojo.java312
-rw-r--r--branches/sdo-java-M2/sdo/plugin/src/main/java/org/apache/tuscany/sdo/plugin/SchemaFileOption.java208
-rw-r--r--branches/sdo-java-M2/sdo/plugin/src/main/resources/META-INF/LICENSE.txt1277
-rw-r--r--branches/sdo-java-M2/sdo/plugin/src/main/resources/META-INF/NOTICE29
-rw-r--r--branches/sdo-java-M2/sdo/plugin/src/main/resources/META-INF/README.txt35
-rw-r--r--branches/sdo-java-M2/sdo/pom.xml168
-rw-r--r--branches/sdo-java-M2/sdo/sample/LICENSE.txt236
-rw-r--r--branches/sdo-java-M2/sdo/sample/NOTICE.txt34
-rw-r--r--branches/sdo-java-M2/sdo/sample/README.txt20
-rw-r--r--branches/sdo-java-M2/sdo/sample/STATUS.txt73
-rw-r--r--branches/sdo-java-M2/sdo/sample/pom.xml107
-rw-r--r--branches/sdo-java-M2/sdo/sample/src/main/java/org/apache/tuscany/samples/sdo/ExecuteSamples.java199
-rw-r--r--branches/sdo-java-M2/sdo/sample/src/main/java/org/apache/tuscany/samples/sdo/SdoSampleConstants.java72
-rw-r--r--branches/sdo-java-M2/sdo/sample/src/main/java/org/apache/tuscany/samples/sdo/otherSources/CreateCompany.java249
-rw-r--r--branches/sdo-java-M2/sdo/sample/src/main/java/org/apache/tuscany/samples/sdo/otherSources/CreatePurchaseOrder.java174
-rw-r--r--branches/sdo-java-M2/sdo/sample/src/main/java/org/apache/tuscany/samples/sdo/otherSources/PurchaseOrderCmdLine.java398
-rw-r--r--branches/sdo-java-M2/sdo/sample/src/main/java/org/apache/tuscany/samples/sdo/otherSources/PurchaseOrderControl.java496
-rw-r--r--branches/sdo-java-M2/sdo/sample/src/main/java/org/apache/tuscany/samples/sdo/otherSources/ReadPurchaseOrder.java143
-rw-r--r--branches/sdo-java-M2/sdo/sample/src/main/java/org/apache/tuscany/samples/sdo/otherSources/package.html42
-rw-r--r--branches/sdo-java-M2/sdo/sample/src/main/java/org/apache/tuscany/samples/sdo/overview.html57
-rw-r--r--branches/sdo-java-M2/sdo/sample/src/main/java/org/apache/tuscany/samples/sdo/package.html33
-rw-r--r--branches/sdo-java-M2/sdo/sample/src/main/java/org/apache/tuscany/samples/sdo/specCodeSnippets/AccessDataObjectPropertiesByName.java154
-rw-r--r--branches/sdo-java-M2/sdo/sample/src/main/java/org/apache/tuscany/samples/sdo/specCodeSnippets/AccessDataObjectUsingValidXPath.java146
-rw-r--r--branches/sdo-java-M2/sdo/sample/src/main/java/org/apache/tuscany/samples/sdo/specCodeSnippets/CreateDataObjectFromXmlString.java163
-rw-r--r--branches/sdo-java-M2/sdo/sample/src/main/java/org/apache/tuscany/samples/sdo/specCodeSnippets/CreateDataObjectFromXsdAndXmlFiles.java196
-rw-r--r--branches/sdo-java-M2/sdo/sample/src/main/java/org/apache/tuscany/samples/sdo/specCodeSnippets/DynamicCustomerTypeSample.java192
-rw-r--r--branches/sdo-java-M2/sdo/sample/src/main/java/org/apache/tuscany/samples/sdo/specCodeSnippets/ObtainingDataGraphFromXml.java189
-rw-r--r--branches/sdo-java-M2/sdo/sample/src/main/java/org/apache/tuscany/samples/sdo/specCodeSnippets/PrintPropertiesOfDataObject.java177
-rw-r--r--branches/sdo-java-M2/sdo/sample/src/main/java/org/apache/tuscany/samples/sdo/specCodeSnippets/UsingXPath.java149
-rw-r--r--branches/sdo-java-M2/sdo/sample/src/main/java/org/apache/tuscany/samples/sdo/specCodeSnippets/package.html40
-rw-r--r--branches/sdo-java-M2/sdo/sample/src/main/java/org/apache/tuscany/samples/sdo/specExampleSection/AccessDataObjectsUsingXPath.java251
-rw-r--r--branches/sdo-java-M2/sdo/sample/src/main/java/org/apache/tuscany/samples/sdo/specExampleSection/AccessingDataObjectsViaPropertyIndex.java232
-rw-r--r--branches/sdo-java-M2/sdo/sample/src/main/java/org/apache/tuscany/samples/sdo/specExampleSection/AccessingTheContentsOfASequence.java194
-rw-r--r--branches/sdo-java-M2/sdo/sample/src/main/java/org/apache/tuscany/samples/sdo/specExampleSection/CreatingDataObjectTreesFromXMLDocuments.java136
-rw-r--r--branches/sdo-java-M2/sdo/sample/src/main/java/org/apache/tuscany/samples/sdo/specExampleSection/CreatingXmlFromDataObjects.java160
-rw-r--r--branches/sdo-java-M2/sdo/sample/src/main/java/org/apache/tuscany/samples/sdo/specExampleSection/SerializingDesearializingADataObject.java183
-rw-r--r--branches/sdo-java-M2/sdo/sample/src/main/java/org/apache/tuscany/samples/sdo/specExampleSection/UsingTypeAndPropertyWithDataObjects.java190
-rw-r--r--branches/sdo-java-M2/sdo/sample/src/main/java/org/apache/tuscany/samples/sdo/specExampleSection/package.html40
-rw-r--r--branches/sdo-java-M2/sdo/sample/src/main/resources/company.xsd27
-rw-r--r--branches/sdo-java-M2/sdo/sample/src/main/resources/companyCompleteDataGraph.xml50
-rw-r--r--branches/sdo-java-M2/sdo/sample/src/main/resources/companyDataGraph.xml12
-rw-r--r--branches/sdo-java-M2/sdo/sample/src/main/resources/companyDataGraphGenerated.xml11
-rw-r--r--branches/sdo-java-M2/sdo/sample/src/main/resources/companyGenerated.xml9
-rw-r--r--branches/sdo-java-M2/sdo/sample/src/main/resources/doc-files/cmdPrompt.GIFbin0 -> 9431 bytes
-rw-r--r--branches/sdo-java-M2/sdo/sample/src/main/resources/letter.xml2
-rw-r--r--branches/sdo-java-M2/sdo/sample/src/main/resources/letter.xsd14
-rw-r--r--branches/sdo-java-M2/sdo/sample/src/main/resources/po.xml38
-rw-r--r--branches/sdo-java-M2/sdo/sample/src/main/resources/po.xsd62
-rw-r--r--branches/sdo-java-M2/sdo/sdo.xml62
-rw-r--r--branches/sdo-java-M2/sdo/tools/pom.xml84
-rw-r--r--branches/sdo-java-M2/sdo/tools/readme.htm44
-rw-r--r--branches/sdo-java-M2/sdo/tools/src/main/java/org/apache/tuscany/sdo/generate/Interface2JavaGenerator.java245
-rw-r--r--branches/sdo-java-M2/sdo/tools/src/main/java/org/apache/tuscany/sdo/generate/JavaGenerator.java636
-rw-r--r--branches/sdo-java-M2/sdo/tools/src/main/java/org/apache/tuscany/sdo/generate/XSD2JavaGenerator.java183
-rw-r--r--branches/sdo-java-M2/sdo/tools/src/main/java/org/apache/tuscany/sdo/generate/adapter/SDOGenClassGeneratorAdapter.java46
-rw-r--r--branches/sdo-java-M2/sdo/tools/src/main/java/org/apache/tuscany/sdo/generate/adapter/SDOGenModelGeneratorAdapterFactory.java54
-rw-r--r--branches/sdo-java-M2/sdo/tools/src/main/java/org/apache/tuscany/sdo/generate/adapter/SDOGenPackageGeneratorAdapter.java52
-rw-r--r--branches/sdo-java-M2/sdo/tools/src/main/java/org/apache/tuscany/sdo/generate/templates/model/SDOClass.java4142
-rw-r--r--branches/sdo-java-M2/sdo/tools/src/main/java/org/apache/tuscany/sdo/generate/templates/model/SDOFactoryClass.java1706
-rw-r--r--branches/sdo-java-M2/sdo/tools/src/main/java/org/apache/tuscany/sdo/generate/util/SDOGenUtil.java33
-rw-r--r--branches/sdo-java-M2/sdo/tools/src/main/java/org/eclipse/jdt/core/formatter/CodeFormatter.java27
-rw-r--r--branches/sdo-java-M2/sdo/tools/src/main/resources/META-INF/LICENSE.txt1277
-rw-r--r--branches/sdo-java-M2/sdo/tools/src/main/resources/META-INF/NOTICE29
-rw-r--r--branches/sdo-java-M2/sdo/tools/src/main/resources/META-INF/README.txt35
-rw-r--r--branches/sdo-java-M2/sdo/tools/src/test/java/com/example/sequences/MixedQuote.java326
-rw-r--r--branches/sdo-java-M2/sdo/tools/src/test/java/com/example/sequences/MixedRepeatingChoice.java99
-rw-r--r--branches/sdo-java-M2/sdo/tools/src/test/java/com/example/sequences/RepeatingChoice.java85
-rw-r--r--branches/sdo-java-M2/sdo/tools/src/test/java/com/example/sequences/SequencesFactory.java86
-rw-r--r--branches/sdo-java-M2/sdo/tools/src/test/java/com/example/sequences/TwoRCs.java154
-rw-r--r--branches/sdo-java-M2/sdo/tools/src/test/java/com/example/sequences/TwoRCsMixed.java168
-rw-r--r--branches/sdo-java-M2/sdo/tools/src/test/java/com/example/sequences/impl/MixedQuoteImpl.java660
-rw-r--r--branches/sdo-java-M2/sdo/tools/src/test/java/com/example/sequences/impl/MixedRepeatingChoiceImpl.java302
-rw-r--r--branches/sdo-java-M2/sdo/tools/src/test/java/com/example/sequences/impl/RepeatingChoiceImpl.java268
-rw-r--r--branches/sdo-java-M2/sdo/tools/src/test/java/com/example/sequences/impl/SequencesFactoryImpl.java695
-rw-r--r--branches/sdo-java-M2/sdo/tools/src/test/java/com/example/sequences/impl/TwoRCsImpl.java452
-rw-r--r--branches/sdo-java-M2/sdo/tools/src/test/java/com/example/sequences/impl/TwoRCsMixedImpl.java450
-rw-r--r--branches/sdo-java-M2/sdo/tools/src/test/java/com/example/simple/Quote.java310
-rw-r--r--branches/sdo-java-M2/sdo/tools/src/test/java/com/example/simple/SimpleFactory.java49
-rw-r--r--branches/sdo-java-M2/sdo/tools/src/test/java/com/example/simple/impl/QuoteImpl.java715
-rw-r--r--branches/sdo-java-M2/sdo/tools/src/test/java/com/example/simple/impl/SimpleFactoryImpl.java141
-rw-r--r--branches/sdo-java-M2/sdo/tools/src/test/java/com/example/simple/impl/SimplePackageImpl.java911
-rw-r--r--branches/sdo-java-M2/sdo/tools/src/test/java/org/apache/tuscany/sdo/test/SimpleStaticTest.java67
-rw-r--r--branches/sdo-java-M2/sdo/tools/src/test/java/org/apache/tuscany/sdo/test/StaticSequenceNoEmfTestCase.java252
-rw-r--r--branches/sdo-java-M2/sdo/tools/src/test/java/org/apache/tuscany/sdo/test/TestUtil.java288
-rw-r--r--branches/sdo-java-M2/sdo/tools/src/test/resources/enum.xsd50
-rw-r--r--branches/sdo-java-M2/sdo/tools/src/test/resources/mixedRepeatingChoiceTestResult.xml25
-rw-r--r--branches/sdo-java-M2/sdo/tools/src/test/resources/mixedStaticTestResult.xml34
-rw-r--r--branches/sdo-java-M2/sdo/tools/src/test/resources/repeatingChoice.xsd33
-rw-r--r--branches/sdo-java-M2/sdo/tools/src/test/resources/repeatingChoiceTestResult.xml25
-rw-r--r--branches/sdo-java-M2/sdo/tools/src/test/resources/sequences.xsd100
-rw-r--r--branches/sdo-java-M2/sdo/tools/src/test/resources/simple.xsd41
-rw-r--r--branches/sdo-java-M2/sdo/tools/src/test/resources/twoRepeatingChoicesMixedTestResult.xml28
-rw-r--r--branches/sdo-java-M2/sdo/tools/src/test/resources/twoRepeatingChoicesTestResult.xml28
-rw-r--r--branches/sdo-java-M2/sdo/tools/templates/Header.javajetinc6
-rw-r--r--branches/sdo-java-M2/sdo/tools/templates/models/SDOClass.javajet1844
-rw-r--r--branches/sdo-java-M2/sdo/tools/templates/models/SDOFactoryClass.javajet830
309 files changed, 88101 insertions, 0 deletions
diff --git a/branches/sdo-java-M2/sdo-api/BUILDING.txt b/branches/sdo-java-M2/sdo-api/BUILDING.txt
new file mode 100644
index 0000000000..1b5cc24880
--- /dev/null
+++ b/branches/sdo-java-M2/sdo-api/BUILDING.txt
@@ -0,0 +1,26 @@
+Building the SDO Java Specification Project from the source distribution
+=========================================================================
+(note, these instructions are for building the SDO binary release from
+source, not for establishing a development environment. If you wish to
+participate in sdo development, follow the instructions at
+http://incubator.apache.org/tuscany/java_sdo_overview.html)
+
+Initial Setup
+-------------
+
+1) Install J2SE JDK 1.4.2 or above
+2) Install Maven:
+Download Maven 2.0.4 (download from http://maven.apache.org/download.html).
+
+
+
+Building
+--------
+
+1) Change to the top level directory of the Tuscany SDO Java Spec project (sdo-api) of this source distribution.
+2) Execute: mvn
+This will build an artefact in your local maven repository that the SDO implementation can use.
+
+Note: Depending on the load being experienced by remote Maven 2.0 repositories you may have to execute mvn several times
+ until required dependencies are all located in your local maven repository. After you have completed a full successful
+ build you can use "mvn -o" which is much faster.
diff --git a/branches/sdo-java-M2/sdo-api/LICENSE.txt b/branches/sdo-java-M2/sdo-api/LICENSE.txt
new file mode 100644
index 0000000000..1f4c1af73a
--- /dev/null
+++ b/branches/sdo-java-M2/sdo-api/LICENSE.txt
@@ -0,0 +1,240 @@
+
+ Apache License
+ Version 2.0, January 2004
+ http://www.apache.org/licenses/
+
+ TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION
+
+ 1. Definitions.
+
+ "License" shall mean the terms and conditions for use, reproduction,
+ and distribution as defined by Sections 1 through 9 of this document.
+
+ "Licensor" shall mean the copyright owner or entity authorized by
+ the copyright owner that is granting the License.
+
+ "Legal Entity" shall mean the union of the acting entity and all
+ other entities that control, are controlled by, or are under common
+ control with that entity. For the purposes of this definition,
+ "control" means (i) the power, direct or indirect, to cause the
+ direction or management of such entity, whether by contract or
+ otherwise, or (ii) ownership of fifty percent (50%) or more of the
+ outstanding shares, or (iii) beneficial ownership of such entity.
+
+ "You" (or "Your") shall mean an individual or Legal Entity
+ exercising permissions granted by this License.
+
+ "Source" form shall mean the preferred form for making modifications,
+ including but not limited to software source code, documentation
+ source, and configuration files.
+
+ "Object" form shall mean any form resulting from mechanical
+ transformation or translation of a Source form, including but
+ not limited to compiled object code, generated documentation,
+ and conversions to other media types.
+
+ "Work" shall mean the work of authorship, whether in Source or
+ Object form, made available under the License, as indicated by a
+ copyright notice that is included in or attached to the work
+ (an example is provided in the Appendix below).
+
+ "Derivative Works" shall mean any work, whether in Source or Object
+ form, that is based on (or derived from) the Work and for which the
+ editorial revisions, annotations, elaborations, or other modifications
+ represent, as a whole, an original work of authorship. For the purposes
+ of this License, Derivative Works shall not include works that remain
+ separable from, or merely link (or bind by name) to the interfaces of,
+ the Work and Derivative Works thereof.
+
+ "Contribution" shall mean any work of authorship, including
+ the original version of the Work and any modifications or additions
+ to that Work or Derivative Works thereof, that is intentionally
+ submitted to Licensor for inclusion in the Work by the copyright owner
+ or by an individual or Legal Entity authorized to submit on behalf of
+ the copyright owner. For the purposes of this definition, "submitted"
+ means any form of electronic, verbal, or written communication sent
+ to the Licensor or its representatives, including but not limited to
+ communication on electronic mailing lists, source code control systems,
+ and issue tracking systems that are managed by, or on behalf of, the
+ Licensor for the purpose of discussing and improving the Work, but
+ excluding communication that is conspicuously marked or otherwise
+ designated in writing by the copyright owner as "Not a Contribution."
+
+ "Contributor" shall mean Licensor and any individual or Legal Entity
+ on behalf of whom a Contribution has been received by Licensor and
+ subsequently incorporated within the Work.
+
+ 2. Grant of Copyright License. Subject to the terms and conditions of
+ this License, each Contributor hereby grants to You a perpetual,
+ worldwide, non-exclusive, no-charge, royalty-free, irrevocable
+ copyright license to reproduce, prepare Derivative Works of,
+ publicly display, publicly perform, sublicense, and distribute the
+ Work and such Derivative Works in Source or Object form.
+
+ 3. Grant of Patent License. Subject to the terms and conditions of
+ this License, each Contributor hereby grants to You a perpetual,
+ worldwide, non-exclusive, no-charge, royalty-free, irrevocable
+ (except as stated in this section) patent license to make, have made,
+ use, offer to sell, sell, import, and otherwise transfer the Work,
+ where such license applies only to those patent claims licensable
+ by such Contributor that are necessarily infringed by their
+ Contribution(s) alone or by combination of their Contribution(s)
+ with the Work to which such Contribution(s) was submitted. If You
+ institute patent litigation against any entity (including a
+ cross-claim or counterclaim in a lawsuit) alleging that the Work
+ or a Contribution incorporated within the Work constitutes direct
+ or contributory patent infringement, then any patent licenses
+ granted to You under this License for that Work shall terminate
+ as of the date such litigation is filed.
+
+ 4. Redistribution. You may reproduce and distribute copies of the
+ Work or Derivative Works thereof in any medium, with or without
+ modifications, and in Source or Object form, provided that You
+ meet the following conditions:
+
+ (a) You must give any other recipients of the Work or
+ Derivative Works a copy of this License; and
+
+ (b) You must cause any modified files to carry prominent notices
+ stating that You changed the files; and
+
+ (c) You must retain, in the Source form of any Derivative Works
+ that You distribute, all copyright, patent, trademark, and
+ attribution notices from the Source form of the Work,
+ excluding those notices that do not pertain to any part of
+ the Derivative Works; and
+
+ (d) If the Work includes a "NOTICE" text file as part of its
+ distribution, then any Derivative Works that You distribute must
+ include a readable copy of the attribution notices contained
+ within such NOTICE file, excluding those notices that do not
+ pertain to any part of the Derivative Works, in at least one
+ of the following places: within a NOTICE text file distributed
+ as part of the Derivative Works; within the Source form or
+ documentation, if provided along with the Derivative Works; or,
+ within a display generated by the Derivative Works, if and
+ wherever such third-party notices normally appear. The contents
+ of the NOTICE file are for informational purposes only and
+ do not modify the License. You may add Your own attribution
+ notices within Derivative Works that You distribute, alongside
+ or as an addendum to the NOTICE text from the Work, provided
+ that such additional attribution notices cannot be construed
+ as modifying the License.
+
+ You may add Your own copyright statement to Your modifications and
+ may provide additional or different license terms and conditions
+ for use, reproduction, or distribution of Your modifications, or
+ for any such Derivative Works as a whole, provided Your use,
+ reproduction, and distribution of the Work otherwise complies with
+ the conditions stated in this License.
+
+ 5. Submission of Contributions. Unless You explicitly state otherwise,
+ any Contribution intentionally submitted for inclusion in the Work
+ by You to the Licensor shall be under the terms and conditions of
+ this License, without any additional terms or conditions.
+ Notwithstanding the above, nothing herein shall supersede or modify
+ the terms of any separate license agreement you may have executed
+ with Licensor regarding such Contributions.
+
+ 6. Trademarks. This License does not grant permission to use the trade
+ names, trademarks, service marks, or product names of the Licensor,
+ except as required for reasonable and customary use in describing the
+ origin of the Work and reproducing the content of the NOTICE file.
+
+ 7. Disclaimer of Warranty. Unless required by applicable law or
+ agreed to in writing, Licensor provides the Work (and each
+ Contributor provides its Contributions) on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
+ implied, including, without limitation, any warranties or conditions
+ of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A
+ PARTICULAR PURPOSE. You are solely responsible for determining the
+ appropriateness of using or redistributing the Work and assume any
+ risks associated with Your exercise of permissions under this License.
+
+ 8. Limitation of Liability. In no event and under no legal theory,
+ whether in tort (including negligence), contract, or otherwise,
+ unless required by applicable law (such as deliberate and grossly
+ negligent acts) or agreed to in writing, shall any Contributor be
+ liable to You for damages, including any direct, indirect, special,
+ incidental, or consequential damages of any character arising as a
+ result of this License or out of the use or inability to use the
+ Work (including but not limited to damages for loss of goodwill,
+ work stoppage, computer failure or malfunction, or any and all
+ other commercial damages or losses), even if such Contributor
+ has been advised of the possibility of such damages.
+
+ 9. Accepting Warranty or Additional Liability. While redistributing
+ the Work or Derivative Works thereof, You may choose to offer,
+ and charge a fee for, acceptance of support, warranty, indemnity,
+ or other liability obligations and/or rights consistent with this
+ License. However, in accepting such obligations, You may act only
+ on Your own behalf and on Your sole responsibility, not on behalf
+ of any other Contributor, and only if You agree to indemnify,
+ defend, and hold each Contributor harmless for any liability
+ incurred by, or claims asserted against, such Contributor by reason
+ of your accepting any such warranty or additional liability.
+
+ END OF TERMS AND CONDITIONS
+
+ APPENDIX: How to apply the Apache License to your work.
+
+ To apply the Apache License to your work, attach the following
+ boilerplate notice, with the fields enclosed by brackets "[]"
+ replaced with your own identifying information. (Don't include
+ the brackets!) The text should be enclosed in the appropriate
+ comment syntax for the file format. We also recommend that a
+ file or class name and description of purpose be included on the
+ same "printed page" as the copyright notice for easier
+ identification within third-party archives.
+
+ Copyright [yyyy] [name of copyright owner]
+
+ Licensed 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.
+
+
+
+
+
+===============================================================================================================
+
+
+License for the Service Data Objects JavaDoc and Interface Definition files.
+
+Permission to copy, make derivative works of, and distribute the Service Data Objects
+JavaDoc and Interface Definition Files files in any medium without fee or royalty as part
+of a compliant implementation of the Service Data Objects Specification is hereby granted.
+The Service Data Objects Specification may be found at any of the following locations:
+
+http://dev2dev.bea.com/technologies/commonj/index.jsp
+http://www.ibm.com/developerworks/library/specification/ws-sdo/
+http://oracle.com/technology/webservices/sca
+https://www.sdn.sap.com/
+http://www.xcalia/xdn/specs/sdo
+
+THE SERVICE DATA OBJECTS SPECIFICATION AND THE JAVADOC AND INTERFACE DEFINITION FILES
+ARE PROVIDED "AS IS," AND THE AUTHORS MAKE NO REPRESENTATIONS OR WARRANTIES, EXPRESS OR IMPLIED, REGARDING THIS
+SPECIFICATION OR THE JAVADOC AND INTERFACE DEFINITION FILES AND THE IMPLEMENTATION OF THEIR CONTENTS,
+INCLUDING, BUT NOT LIMITED TO, WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE,
+NON-INFRINGEMENT OR TITLE. THE AUTHORS WILL NOT BE LIABLE FOR ANY DIRECT, INDIRECT, SPECIAL,
+INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF OR RELATING TO ANY USE OR DISTRIBUTION OF THE
+SERVICE DATA OBJECTS SPECIFICATION OR THE JAVADOC OR INTERFACE DEFINTION FILES.
+
+The name and trademarks of the Authors may NOT be used in any manner, including advertising or
+publicity pertaining to the Service Component Architecture Specification or its contents without specific,
+written prior permission. Title to copyright in the Service Data Objects Specification and the
+JavaDoc and Interface Definition Files will at all times remain with the Authors.
+
+No other rights are granted by implication, estoppel or otherwise.
+
+
+
diff --git a/branches/sdo-java-M2/sdo-api/NOTICE.txt b/branches/sdo-java-M2/sdo-api/NOTICE.txt
new file mode 100644
index 0000000000..32e5f84d1c
--- /dev/null
+++ b/branches/sdo-java-M2/sdo-api/NOTICE.txt
@@ -0,0 +1,33 @@
+Apache Tuscany SDO for Java
+Copyright 2006 The Apache Software Foundation
+
+This product includes software developed at
+The Apache Software Foundation (http://www.apache.org/).
+
+Apache Tuscany is an effort undergoing incubation at The Apache Software Foundation (ASF),
+sponsored by the Apache Web Services PMC. Incubation is required of all newly accepted
+projects until a further review indicates that the infrastructure, communications,
+and decision making process have stabilized in a manner consistent with other successful
+ASF projects. While incubation status is not necessarily a reflection of the completeness
+or stability of the code, it does indicate that the project has yet to be fully endorsed
+by the ASF.
+
+Unless otherwise indicated, all distribution made available by the Apache Software Foundation
+is provided to you under the terms and conditions of the Apache License Version 2.0 ("AL").
+A copy of the AL is provided with this distribution as the LICENSE.txt file present in the
+root directory, and is also available at http://www.apache.org/licenses/.
+
+The terms and conditions governing the distribution may refer to the AL or other license
+agreements, notices or terms and conditions. Some of these other license agreements may
+include (but are not limited to):
+
+ . Eclipse Public License Version 1.0 (available at http://www.eclipse.org/legal/epl-v10.html)
+ . Common Public License Version 1.0 (available at http://www.eclipse.org/legal/cpl-v10.html)
+
+It is your obligation to read and accept all such terms and conditions prior to use of the
+distribution. If term or condition is provided, please contact the Apache Software Foundation
+to determine what terms and conditions govern that particular distribution.
+
+This product also includes software developed by the Open Service Oriented Architecture organisation
+(http://osoa.org). The license for this software may be found in the LICENSE.txt file contained in this
+distribution.
diff --git a/branches/sdo-java-M2/sdo-api/STATUS.txt b/branches/sdo-java-M2/sdo-api/STATUS.txt
new file mode 100644
index 0000000000..24a37ea606
--- /dev/null
+++ b/branches/sdo-java-M2/sdo-api/STATUS.txt
@@ -0,0 +1,73 @@
+Apache Tuscany Status
+
+Tuscany provides multiple language implementations of the Service Component Architecture (SCA) specifications and related technologies such as SDO.
+
+PROJECT STATUS
+==============
+
+ Tuscany is being incubated at the request of the Apache Web Services PMC.
+ For information on incubation please visit the project page at
+ http://incubator.apache.org/projects/tuscany.html
+
+PENDING ISSUES
+==============
+XXXX-XX-XX CCLA received for IBM's contribution of a C++ implementation
+XXXX-XX-XX CCLA received for BEA and IBM joint contribution of a Java implementation
+
+RESOLVED ISSUES SINCE LAST STATUS
+=================================
+None
+
+OTHER NEWS
+==========
+
+2006-09-29 Vote to add Ignacio Silva-Lepe as a new committer
+2006-09-18 Vote to add Venkata Krishnan as a new committer
+2006-08-10 Vote to add Andrew Borley as a new committer
+2006-08-07 Vote to add Meeraj Kunnumpurath as a new committer
+2006-08-07 Vote to add Kelvin Goodson as a new committer
+2006-08-06 Vote to add Brent Daniel as a new committer
+2006-08-04 Vote to add Raymond Feng as a new committer
+2006-08-01 C++ Milestone 1 release
+2006-06-07 Java Milestone 1 release
+2006-05-02 Vote to add Dan Kulp as a new committer
+
+2006-01-05 Contribution of Java implementation by BEA and IBM committed
+2006-01-05 Contribution of C+ implementation by IBM committed
+
+RELEASE STATUS
+==============
+None
+
+REFERENCES
+==========
+Status file http://svn.apache.org/repos/asf/incubator/tuscany/STATUS
+User List tuscany-user@ws.apache.org
+Developer List tuscany-dev@ws.apache.org
+Commits List tuscany-commits@ws.apache.org
+Source Code http://svn.apache.org/repos/asf/incubator/tuscany/
+Issue Tracking http://issues.apache.org/jira/browse/TUSCANY
+
+Committers
+ ajborley Andrew Borley
+ antelder Ant Elder
+ bdaniel Brent Daniel
+ dkulp Dan Kulp
+ dims Davanum Srinivas
+ edslattery Ed Slattery
+ ekoneil Eddie O'Neil
+ frankb Frank Budinsky
+ geirm Geir Magnusson Jr
+ isilval Ignacio Silva-Lepe
+ jsdelfino Jean-Sebastien Delfino
+ jboynes Jeremy Boynes
+ jmarino Jim Marino
+ kelvingoodson Kelvin Goodson
+ kentam Ken Tam
+ kwilliams Kevin Williams
+ edwardsmj Mike Edwards
+ meerajk Meeraj Kunnumpurath
+ rfeng Raymond Feng
+ robbinspg Pete Robbins
+ rineholt Rick Rineholt
+ svkrish Venkata Krishnan
diff --git a/branches/sdo-java-M2/sdo-api/pom.xml b/branches/sdo-java-M2/sdo-api/pom.xml
new file mode 100644
index 0000000000..4c9aedf6ed
--- /dev/null
+++ b/branches/sdo-java-M2/sdo-api/pom.xml
@@ -0,0 +1,118 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+-->
+<project>
+ <modelVersion>4.0.0</modelVersion>
+ <parent>
+ <groupId>org.apache.tuscany</groupId>
+ <artifactId>parent</artifactId>
+ <version>1-incubator</version>
+ </parent>
+ <groupId>commonj</groupId>
+ <artifactId>sdo-api-r${specVersion}</artifactId>
+ <packaging>osgi-bundle</packaging>
+ <version>1.0-incubator-M2</version>
+ <name>SDO API</name>
+ <description>API classes for Service Data Objects</description>
+
+ <properties>
+ <specVersion>2.0.1</specVersion>
+ </properties>
+
+ <!-- definition of repositories where the parent pom can be found -->
+ <repositories>
+ <repository>
+ <id>apache.snapshots</id>
+ <name>Apache Snapshot Repository</name>
+ <url>http://people.apache.org/repo/m2-snapshot-repository</url>
+ <releases>
+ <enabled>false</enabled>
+ </releases>
+ <snapshots>
+ <enabled>true</enabled>
+ </snapshots>
+ </repository>
+ <repository>
+ <id>apache.incubator</id>
+ <name>Apache Incubator Repository</name>
+ <url>http://people.apache.org/repo/m2-incubating-repository/</url>
+ <releases>
+ <enabled>true</enabled>
+ </releases>
+ <snapshots>
+ <enabled>false</enabled>
+ </snapshots>
+ </repository>
+ </repositories>
+
+ <dependencies>
+ <dependency>
+ <groupId>junit</groupId>
+ <artifactId>junit</artifactId>
+ <version>3.8.1</version>
+ <scope>test</scope>
+ </dependency>
+ </dependencies>
+
+ <build>
+ <plugins>
+ <plugin>
+ <groupId>org.apache.maven.plugins</groupId>
+ <artifactId>maven-compiler-plugin</artifactId>
+ <configuration>
+ <source>1.4</source>
+ <target>1.4</target>
+ </configuration>
+ </plugin>
+ <plugin>
+ <groupId>org.apache.felix.plugins</groupId>
+ <artifactId>maven-osgi-plugin</artifactId>
+ <extensions>true</extensions>
+ <configuration>
+ <osgiManifest>
+ <bundleName>${pom.name}</bundleName>
+ <bundleDescription>${pom.description}</bundleDescription>
+ <bundleVendor>${pom.organization.name}</bundleVendor>
+ <bundleLocalization>plugin</bundleLocalization>
+ <bundleSymbolicName>commonj.sdo</bundleSymbolicName>
+ <exportPackage>commonj.sdo;version="${specVersion}", commonj.sdo.helper;version="${specVersion}, commonj.sdo.impl;version="${specVersion}"</exportPackage>
+ </osgiManifest>
+ </configuration>
+ </plugin>
+ <plugin>
+ <groupId>org.apache.maven.plugins</groupId>
+ <artifactId>maven-javadoc-plugin</artifactId>
+ <configuration>
+ <!-- overview>${basedir}/src/main/java/commonj/sdo/overview.html</overview -->
+ <version>2.0</version>
+ </configuration>
+ <executions>
+ <execution>
+ <id>package</id>
+ <phase>package</phase>
+ <goals>
+ <goal>jar</goal>
+ </goals>
+ </execution>
+ </executions>
+ </plugin>
+ </plugins>
+ <defaultGoal>install</defaultGoal>
+ </build>
+</project>
diff --git a/branches/sdo-java-M2/sdo-api/src/main/java/commonj/sdo/ChangeSummary.java b/branches/sdo-java-M2/sdo-api/src/main/java/commonj/sdo/ChangeSummary.java
new file mode 100644
index 0000000000..3eeacf4c01
--- /dev/null
+++ b/branches/sdo-java-M2/sdo-api/src/main/java/commonj/sdo/ChangeSummary.java
@@ -0,0 +1,204 @@
+/**
+ * <copyright>
+ *
+ * Service Data Objects
+ * Version 2.0
+ * Licensed Materials - Property of BEA and IBM
+ *
+ * (c) Copyright BEA Systems, Inc. and International Business Machines Corp 2005. All rights reserved.
+ *
+ * </copyright>
+ *
+ */
+
+package commonj.sdo;
+
+import java.util.List;
+
+/**
+ * A change summary is used to record changes to DataObjects,
+ * allowing applications to efficiently and incrementally update back-end storage when required.
+ */
+public interface ChangeSummary
+{
+ /**
+ * Indicates whether change logging is on (<code>true</code>) or off (<code>false</code>).
+ * @return <code>true</code> if change logging is on.
+ * @see #beginLogging
+ * @see #endLogging
+ */
+ boolean isLogging();
+
+ /**
+ * Returns the {@link DataGraph data graph} associated with this change summary or null.
+ * @return the data graph.
+ * @see DataGraph#getChangeSummary
+ */
+ DataGraph getDataGraph();
+
+ /**
+ * Returns a list consisting of all the {@link DataObject data objects} that have been changed while {@link #isLogging logging}.
+ * <p>
+ * The {@link #isCreated new} and {@link #isModified modified} objects in the List are references to objects
+ * associated with this ChangeSummary.
+ * The {@link #isDeleted deleted} objects in the List are references to objects
+ * at the time that event logging was enabled;
+ * <p> Each changed object must have exactly one of the following methods return true:
+ * {@link #isCreated isCreated},
+ * {@link #isDeleted isDeleted}, or
+ * {@link #isModified isModified}.
+ * @return a list of changed data objects.
+ * @see #isCreated(DataObject)
+ * @see #isDeleted(DataObject)
+ * @see #isModified(DataObject)
+ */
+ List /*DataObject*/ getChangedDataObjects();
+
+ /**
+ * Returns whether or not the specified data object was created while {@link #isLogging logging}.
+ * Any object that was added to the scope
+ * but was not in the scope when logging began,
+ * will be considered created.
+ * @param dataObject the data object in question.
+ * @return <code>true</code> if the specified data object was created.
+ * @see #getChangedDataObjects
+ */
+ boolean isCreated(DataObject dataObject);
+
+ /**
+ * Returns whether or not the specified data object was deleted while {@link #isLogging logging}.
+ * Any object that is not in scope but was in scope when logging began
+ * will be considered deleted.
+ * @param dataObject the data object in question.
+ * @return <code>true</code> if the specified data object was deleted.
+ * @see #getChangedDataObjects
+ */
+ boolean isDeleted(DataObject dataObject);
+
+ /**
+ * A setting encapsulates a {@link Property property} and a corresponding single value of the property's {@link Property#getType type}.
+ */
+ public interface Setting
+ {
+ /**
+ * Returns the property of the setting.
+ * @return the setting property.
+ */
+ Property getProperty();
+
+ /**
+ * Returns the value of the setting.
+ * @return the setting value.
+ */
+ Object getValue();
+
+ /**
+ * Returns whether or not the property is set.
+ * @return <code>true</code> if the property is set.
+ */
+ boolean isSet();
+ }
+
+ /**
+ * Returns a list of {@link ChangeSummary.Setting settings}
+ * that represent the property values of the given <code>dataObject</code>
+ * at the point when logging {@link #beginLogging() began}.
+ * <p>In the case of a {@link #isDeleted(DataObject) deleted} object,
+ * the List will include settings for all the Properties.
+ * <p> An old value setting indicates the value at the
+ * point logging begins. A setting is only produced for
+ * {@link #isModified modified} objects if
+ * either the old value differs from the current value or
+ * if the isSet differs from the current value.
+ * <p> No settings are produced for {@link #isCreated created} objects.
+ * @param dataObject the object in question.
+ * @return a list of settings.
+ * @see #getChangedDataObjects
+ */
+ List /*ChangeSummary.Setting*/ getOldValues(DataObject dataObject);
+
+ /**
+ * Clears the List of {@link #getChangedDataObjects changes} and turns change logging on.
+ * No operation occurs if logging is already on.
+ * @see #endLogging
+ * @see #isLogging
+ */
+ void beginLogging();
+
+ /**
+ * An implementation that requires logging may throw an UnsupportedOperationException.
+ * Turns change logging off. No operation occurs if logging is already off.
+ * @see #beginLogging
+ * @see #isLogging
+ */
+ void endLogging();
+
+
+ /**
+ * Returns whether or not the specified data object was updated while {@link #isLogging logging}.
+ * An object that was contained in the scope when logging began
+ * and remains in the scope when logging ends will be considered potentially modified.
+ * <p> An object considered modified must have at least one old value setting.
+ * @param dataObject the data object in question.
+ * @return <code>true</code> if the specified data object was modified.
+ * @see #getChangedDataObjects
+ */
+ boolean isModified(DataObject dataObject);
+
+ /**
+ * Returns the ChangeSummary root DataObject - the object from which
+ * changes are tracked.
+ * When a DataGraph is used, this is the same as getDataGraph().getRootObject().
+ * @return the ChangeSummary root DataObject
+ */
+ DataObject getRootObject();
+
+ /**
+ * Returns a {@link ChangeSummary.Setting setting} for the specified property
+ * representing the property value of the given <code>dataObject</code>
+ * at the point when logging {@link #beginLogging() began}.
+ * <p>Returns null if the property was not modified and
+ * has not been {@link #isDeleted(DataObject) deleted}.
+ * @param dataObject the object in question.
+ * @param property the property of the object.
+ * @return the Setting for the specified property.
+ * @see #getChangedDataObjects
+ */
+ Setting getOldValue(DataObject dataObject, Property property);
+
+ /**
+ * Returns the value of the {@link DataObject#getContainer container} data object
+ * at the point when logging {@link #beginLogging() began}.
+ * @param dataObject the object in question.
+ * @return the old container data object.
+ */
+ DataObject getOldContainer(DataObject dataObject);
+
+ /**
+ * Returns the value of the {@link DataObject#getContainmentProperty containment property} data object property
+ * at the point when logging {@link #beginLogging() began}.
+ * @param dataObject the object in question.
+ * @return the old containment property.
+ */
+ Property getOldContainmentProperty(DataObject dataObject);
+
+ /**
+ * Returns the value of the {@link DataObject#getSequence sequence} for the data object
+ * at the point when logging {@link #beginLogging() began}.
+ * @param dataObject the object in question.
+ * @return the old containment property.
+ */
+ Sequence getOldSequence(DataObject dataObject);
+
+ /**
+ * This method is intended for use by service implementations only.
+ * Undoes all changes in the log to restore the tree of
+ * DataObjects to its original state when logging began.
+ * isLogging() is unchanged. The log is cleared.
+ * @see #beginLogging
+ * @see #endLogging
+ * @see #isLogging
+ */
+ void undoChanges();
+
+}
diff --git a/branches/sdo-java-M2/sdo-api/src/main/java/commonj/sdo/DataGraph.java b/branches/sdo-java-M2/sdo-api/src/main/java/commonj/sdo/DataGraph.java
new file mode 100644
index 0000000000..78bc7227a1
--- /dev/null
+++ b/branches/sdo-java-M2/sdo-api/src/main/java/commonj/sdo/DataGraph.java
@@ -0,0 +1,73 @@
+/**
+ * <copyright>
+ *
+ * Service Data Objects
+ * Version 2.0
+ * Licensed Materials - Property of BEA and IBM
+ *
+ * (c) Copyright BEA Systems, Inc. and International Business Machines Corp 2005. All rights reserved.
+ *
+ * </copyright>
+ *
+ */
+
+package commonj.sdo;
+
+import java.io.Serializable;
+
+/**
+ * A data graph is used to package a graph of {@link DataObject data objects} along with their
+ * metadata, that is, data describing the data.
+ * A data graph also contains a {@link #getChangeSummary change summary}
+ * which is used to record changes made to the objects in the graph.
+ */
+
+public interface DataGraph extends Serializable
+{
+ /**
+ * Returns the root {@link DataObject data object} of this data graph.
+ * @return the root data object.
+ * @see DataObject#getDataGraph
+ */
+ DataObject getRootObject();
+
+ /**
+ * Returns the {@link ChangeSummary change summary} associated with this data graph.
+ * @return the change summary.
+ * @see ChangeSummary#getDataGraph
+ */
+ ChangeSummary getChangeSummary();
+
+ /**
+ * Returns the {@link Type type} with the given the {@link Type#getURI() URI},
+ * or contained by the resource at the given URI,
+ * and with the given {@link Type#getName name}.
+ * @param uri the namespace URI of a type or the location URI of a resource containing a type.
+ * @param typeName name of a type.
+ * @return the type with the corresponding namespace and name.
+ */
+ Type getType(String uri, String typeName);
+
+ /**
+ * Creates a new root data object of the {@link #getType specified type}.
+ * An exception is thrown if a root object exists.
+ * @param namespaceURI namespace of the type.
+ * @param typeName name of the type.
+ * @return the new root.
+ * @throws IllegalStateException if the root object already exists.
+ * @see #createRootObject(Type)
+ * @see #getType(String, String)
+ */
+ DataObject createRootObject(String namespaceURI, String typeName);
+
+ /**
+ * Creates a new root data object of the specified type.
+ * An exception is thrown if a root object exists.
+ * @param type the type of the new root.
+ * @return the new root.
+ * @throws IllegalStateException if the root object already exists.
+ * @see #createRootObject(String, String)
+ */
+ DataObject createRootObject(Type type);
+
+}
diff --git a/branches/sdo-java-M2/sdo-api/src/main/java/commonj/sdo/DataObject.java b/branches/sdo-java-M2/sdo-api/src/main/java/commonj/sdo/DataObject.java
new file mode 100644
index 0000000000..8a1819f475
--- /dev/null
+++ b/branches/sdo-java-M2/sdo-api/src/main/java/commonj/sdo/DataObject.java
@@ -0,0 +1,1105 @@
+/**
+ * <copyright>
+ *
+ * Service Data Objects
+ * Version 2.0
+ * Licensed Materials - Property of BEA and IBM
+ *
+ * (c) Copyright BEA Systems, Inc. and International Business Machines Corp 2005. All rights reserved.
+ *
+ * </copyright>
+ *
+ */
+
+package commonj.sdo;
+
+import java.io.Serializable;
+import java.math.BigDecimal;
+import java.math.BigInteger;
+import java.util.Date;
+import java.util.List;
+
+/**
+ * A data object is a representation of some structured data.
+ * It is the fundamental component in the SDO (Service Data Objects) package.
+ * Data objects support reflection, path-based accesss, convenience creation and deletion methods,
+ * and the ability to be part of a {@link DataGraph data graph}.
+ * <p>
+ * Each data object holds its data as a series of {@link Property Properties}.
+ * Properties can be accessed by name, property index, or using the property meta object itself.
+ * A data object can also contain references to other data objects, through reference-type Properties.
+ * <p>
+ * A data object has a series of convenience accessors for its Properties.
+ * These methods either use a path (String),
+ * a property index,
+ * or the {@link Property property's meta object} itself, to identify the property.
+ * Some examples of the path-based accessors are as follows:
+ *<pre>
+ * DataObject company = ...;
+ * company.get("name"); is the same as company.get(company.getType().getProperty("name"))
+ * company.set("name", "acme");
+ * company.get("department.0/name") is the same as ((DataObject)((List)company.get("department")).get(0)).get("name")
+ * .n indexes from 0 ... implies the name property of the first department
+ * company.get("department[1]/name") [] indexes from 1 ... implies the name property of the first department
+ * company.get("department[number=123]") returns the first department where number=123
+ * company.get("..") returns the containing data object
+ * company.get("/") returns the root containing data object
+ *</pre>
+ * <p> There are general accessors for Properties, i.e., {@link #get(Property) get} and {@link #set(Property, Object) set},
+ * as well as specific accessors for the primitive types and commonly used data types like
+ * String, Date, List, BigInteger, and BigDecimal.
+ */
+public interface DataObject extends Serializable
+{
+ /**
+ * Returns the value of a property of either this object or an object reachable from it, as identified by the
+ * specified path.
+ * @param path the path to a valid object and property.
+ * @return the value of the specified property.
+ * @see #get(Property)
+ */
+ Object get(String path);
+
+ /**
+ * Sets a property of either this object or an object reachable from it, as identified by the specified path,
+ * to the specified value.
+ * @param path the path to a valid object and property.
+ * @param value the new value for the property.
+ * @see #set(Property, Object)
+ */
+ void set(String path, Object value);
+
+ /**
+ * Returns whether a property of either this object or an object reachable from it, as identified by the specified path,
+ * is considered to be set.
+ * @param path the path to a valid object and property.
+ * @see #isSet(Property)
+ */
+ boolean isSet(String path);
+
+ /**
+ * Unsets a property of either this object or an object reachable from it, as identified by the specified path.
+ * @param path the path to a valid object and property.
+ * @see #unset(Property)
+ */
+ void unset(String path);
+
+ /**
+ * Returns the value of a <code>boolean</code> property identified by the specified path.
+ * @param path the path to a valid object and property.
+ * @return the <code>boolean</code> value of the specified property.
+ * @see #get(String)
+ */
+ boolean getBoolean(String path);
+
+ /**
+ * Returns the value of a <code>byte</code> property identified by the specified path.
+ * @param path the path to a valid object and property.
+ * @return the <code>byte</code> value of the specified property.
+ * @see #get(String)
+ */
+ byte getByte(String path);
+
+ /**
+ * Returns the value of a <code>char</code> property identified by the specified path.
+ * @param path the path to a valid object and property.
+ * @return the <code>char</code> value of the specified property.
+ * @see #get(String)
+ */
+ char getChar(String path);
+
+ /**
+ * Returns the value of a <code>double</code> property identified by the specified path.
+ * @param path the path to a valid object and property.
+ * @return the <code>double</code> value of the specified property.
+ * @see #get(String)
+ */
+ double getDouble(String path);
+
+ /**
+ * Returns the value of a <code>float</code> property identified by the specified path.
+ * @param path the path to a valid object and property.
+ * @return the <code>float</code> value of the specified property.
+ * @see #get(String)
+ */
+ float getFloat(String path);
+
+ /**
+ * Returns the value of a <code>int</code> property identified by the specified path.
+ * @param path the path to a valid object and property.
+ * @return the <code>int</code> value of the specified property.
+ * @see #get(String)
+ */
+ int getInt(String path);
+
+ /**
+ * Returns the value of a <code>long</code> property identified by the specified path.
+ * @param path the path to a valid object and property.
+ * @return the <code>long</code> value of the specified property.
+ * @see #get(String)
+ */
+ long getLong(String path);
+
+ /**
+ * Returns the value of a <code>short</code> property identified by the specified path.
+ * @param path the path to a valid object and property.
+ * @return the <code>short</code> value of the specified property.
+ * @see #get(String)
+ */
+ short getShort(String path);
+
+ /**
+ * Returns the value of a <code>byte[]</code> property identified by the specified path.
+ * @param path the path to a valid object and property.
+ * @return the <code>byte[]</code> value of the specified property.
+ * @see #get(String)
+ */
+ byte[] getBytes(String path);
+
+ /**
+ * Returns the value of a <code>BigDecimal</code> property identified by the specified path.
+ * @param path the path to a valid object and property.
+ * @return the <code>BigDecimal</code> value of the specified property.
+ * @see #get(String)
+ */
+ BigDecimal getBigDecimal(String path);
+
+ /**
+ * Returns the value of a <code>BigInteger</code> property identified by the specified path.
+ * @param path the path to a valid object and property.
+ * @return the <code>BigInteger</code> value of the specified property.
+ * @see #get(String)
+ */
+ BigInteger getBigInteger(String path);
+
+ /**
+ * Returns the value of a <code>DataObject</code> property identified by the specified path.
+ * @param path the path to a valid object and property.
+ * @return the <code>DataObject</code> value of the specified property.
+ * @see #get(String)
+ */
+ DataObject getDataObject(String path);
+
+ /**
+ * Returns the value of a <code>Date</code> property identified by the specified path.
+ * @param path the path to a valid object and property.
+ * @return the <code>Date</code> value of the specified property.
+ * @see #get(String)
+ */
+ Date getDate(String path);
+
+ /**
+ * Returns the value of a <code>String</code> property identified by the specified path.
+ * @param path the path to a valid object and property.
+ * @return the <code>String</code> value of the specified property.
+ * @see #get(String)
+ */
+ String getString(String path);
+
+ /**
+ * Returns the value of a <code>List</code> property identified by the specified path.
+ * @param path the path to a valid object and property.
+ * @return the <code>List</code> value of the specified property.
+ * @see #get(String)
+ */
+ List getList(String path);
+
+ /**
+ * Returns the value of a <code>Sequence</code> property identified by the specified path.
+ * @param path the path to a valid object and property.
+ * @return the <code>Sequence</code> value of the specified property.
+ * @see #get(String)
+ */
+ Sequence getSequence(String path);
+
+ /**
+ * Sets the value of a <code>boolean</code> property identified by the specified path, to the specified value.
+ * @param path the path to a valid object and property.
+ * @param value the new value for the property.
+ * @see #set(String, Object)
+ */
+ void setBoolean(String path, boolean value);
+
+ /**
+ * Sets the value of a <code>byte</code> property identified by the specified path, to the specified value.
+ * @param path the path to a valid object and property.
+ * @param value the new value for the property.
+ * @see #set(String, Object)
+ */
+ void setByte(String path, byte value);
+
+ /**
+ * Sets the value of a <code>char</code> property identified by the specified path, to the specified value.
+ * @param path the path to a valid object and property.
+ * @param value the new value for the property.
+ * @see #set(String, Object)
+ */
+ void setChar(String path, char value);
+
+ /**
+ * Sets the value of a <code>double</code> property identified by the specified path, to the specified value.
+ * @param path the path to a valid object and property.
+ * @param value the new value for the property.
+ * @see #set(String, Object)
+ */
+ void setDouble(String path, double value);
+
+ /**
+ * Sets the value of a <code>float</code> property identified by the specified path, to the specified value.
+ * @param path the path to a valid object and property.
+ * @param value the new value for the property.
+ * @see #set(String, Object)
+ */
+ void setFloat(String path, float value);
+
+ /**
+ * Sets the value of a <code>int</code> property identified by the specified path, to the specified value.
+ * @param path the path to a valid object and property.
+ * @param value the new value for the property.
+ * @see #set(String, Object)
+ */
+ void setInt(String path, int value);
+
+ /**
+ * Sets the value of a <code>long</code> property identified by the specified path, to the specified value.
+ * @param path the path to a valid object and property.
+ * @param value the new value for the property.
+ * @see #set(String, Object)
+ */
+ void setLong(String path, long value);
+
+ /**
+ * Sets the value of a <code>short</code> property identified by the specified path, to the specified value.
+ * @param path the path to a valid object and property.
+ * @param value the new value for the property.
+ * @see #set(String, Object)
+ */
+ void setShort(String path, short value);
+
+ /**
+ * Sets the value of a <code>byte[]</code> property identified by the specified path, to the specified value.
+ * @param path the path to a valid object and property.
+ * @param value the new value for the property.
+ * @see #set(String, Object)
+ */
+ void setBytes(String path, byte[] value);
+
+ /**
+ * Sets the value of a <code>BigDecimal</code> property identified by the specified path, to the specified value.
+ * @param path the path to a valid object and property.
+ * @param value the new value for the property.
+ * @see #set(String, Object)
+ */
+ void setBigDecimal(String path, BigDecimal value);
+
+ /**
+ * Sets the value of a <code>BigInteger</code> property identified by the specified path, to the specified value.
+ * @param path the path to a valid object and property.
+ * @param value the new value for the property.
+ * @see #set(String, Object)
+ */
+ void setBigInteger(String path, BigInteger value);
+
+ /**
+ * Sets the value of a <code>DataObject</code> property identified by the specified path, to the specified value.
+ * @param path the path to a valid object and property.
+ * @param value the new value for the property.
+ * @see #set(String, Object)
+ */
+ void setDataObject(String path, DataObject value);
+
+ /**
+ * Sets the value of a <code>Date</code> property identified by the specified path, to the specified value.
+ * @param path the path to a valid object and property.
+ * @param value the new value for the property.
+ * @see #set(String, Object)
+ */
+ void setDate(String path, Date value);
+
+ /**
+ * Sets the value of a <code>String</code> property identified by the specified path, to the specified value.
+ * @param path the path to a valid object and property.
+ * @param value the new value for the property.
+ * @see #set(String, Object)
+ */
+ void setString(String path, String value);
+
+ /**
+ * Sets the value of a <code>List</code> property identified by the specified path, to the specified value.
+ * @param path the path to a valid object and property.
+ * @param value the new value for the property.
+ * @see #set(String, Object)
+ * @see #setList(Property, List)
+ */
+ void setList(String path, List value);
+
+ /**
+ * Returns the value of the property at the specified index in {@link Type#getProperties property list}
+ * of this object's {@link Type type}.
+ * @param propertyIndex the index of the property.
+ * @return the value of the specified property.
+ * @see #get(Property)
+ */
+ Object get(int propertyIndex);
+
+ /**
+ * Sets the property at the specified index in {@link Type#getProperties property list} of this object's
+ * {@link Type type}, to the specified value.
+ * @param propertyIndex the index of the property.
+ * @param value the new value for the property.
+ * @see #set(Property, Object)
+ */
+ void set(int propertyIndex, Object value);
+
+ /**
+ * Returns whether the the property at the specified index in {@link Type#getProperties property list} of this object's
+ * {@link Type type}, is considered to be set.
+ * @param propertyIndex the index of the property.
+ * @return whether the specified property is set.
+ * @see #isSet(Property)
+ */
+ boolean isSet(int propertyIndex);
+
+ /**
+ * Unsets the property at the specified index in {@link Type#getProperties property list} of this object's {@link Type type}.
+ * @param propertyIndex the index of the property.
+ * @see #unset(Property)
+ */
+ void unset(int propertyIndex);
+
+ /**
+ * Returns the value of a <code>boolean</code> property identified by the specified property index.
+ * @param propertyIndex the index of the property.
+ * @return the <code>boolean</code> value of the specified property.
+ * @see #get(int)
+ */
+ boolean getBoolean(int propertyIndex);
+
+ /**
+ * Returns the value of a <code>byte</code> property identified by the specified property index.
+ * @param propertyIndex the index of the property.
+ * @return the <code>byte</code> value of the specified property.
+ * @see #get(int)
+ */
+ byte getByte(int propertyIndex);
+
+ /**
+ * Returns the value of a <code>char</code> property identified by the specified property index.
+ * @param propertyIndex the index of the property.
+ * @return the <code>char</code> value of the specified property.
+ * @see #get(int)
+ */
+ char getChar(int propertyIndex);
+
+ /**
+ * Returns the value of a <code>double</code> property identified by the specified property index.
+ * @param propertyIndex the index of the property.
+ * @return the <code>double</code> value of the specified property.
+ * @see #get(int)
+ */
+ double getDouble(int propertyIndex);
+
+ /**
+ * Returns the value of a <code>float</code> property identified by the specified property index.
+ * @param propertyIndex the index of the property.
+ * @return the <code>float</code> value of the specified property.
+ * @see #get(int)
+ */
+ float getFloat(int propertyIndex);
+
+ /**
+ * Returns the value of a <code>int</code> property identified by the specified property index.
+ * @param propertyIndex the index of the property.
+ * @return the <code>int</code> value of the specified property.
+ * @see #get(int)
+ */
+ int getInt(int propertyIndex);
+
+ /**
+ * Returns the value of a <code>long</code> property identified by the specified property index.
+ * @param propertyIndex the index of the property.
+ * @return the <code>long</code> value of the specified property.
+ * @see #get(int)
+ */
+ long getLong(int propertyIndex);
+
+ /**
+ * Returns the value of a <code>short</code> property identified by the specified property index.
+ * @param propertyIndex the index of the property.
+ * @return the <code>short</code> value of the specified property.
+ * @see #get(int)
+ */
+ short getShort(int propertyIndex);
+
+ /**
+ * Returns the value of a <code>byte[]</code> property identified by the specified property index.
+ * @param propertyIndex the index of the property.
+ * @return the <code>byte[]</code> value of the specified property.
+ * @see #get(int)
+ */
+ byte[] getBytes(int propertyIndex);
+
+ /**
+ * Returns the value of a <code>BigDecimal</code> property identified by the specified property index.
+ * @param propertyIndex the index of the property.
+ * @return the <code>BigDecimal</code> value of the specified property.
+ * @see #get(int)
+ */
+ BigDecimal getBigDecimal(int propertyIndex);
+
+ /**
+ * Returns the value of a <code>BigInteger</code> property identified by the specified property index.
+ * @param propertyIndex the index of the property.
+ * @return the <code>BigInteger</code> value of the specified property.
+ * @see #get(int)
+ */
+ BigInteger getBigInteger(int propertyIndex);
+
+ /**
+ * Returns the value of a <code>DataObject</code> property identified by the specified property index.
+ * @param propertyIndex the index of the property.
+ * @return the <code>DataObject</code> value of the specified property.
+ * @see #get(int)
+ */
+ DataObject getDataObject(int propertyIndex);
+
+ /**
+ * Returns the value of a <code>Date</code> property identified by the specified property index.
+ * @param propertyIndex the index of the property.
+ * @return the <code>Date</code> value of the specified property.
+ * @see #get(int)
+ */
+ Date getDate(int propertyIndex);
+
+ /**
+ * Returns the value of a <code>String</code> property identified by the specified property index.
+ * @param propertyIndex the index of the property.
+ * @return the <code>String</code> value of the specified property.
+ * @see #get(int)
+ */
+ String getString(int propertyIndex);
+
+ /**
+ * Returns the value of a <code>List</code> property identified by the specified property index.
+ * @param propertyIndex the index of the property.
+ * @return the <code>List</code> value of the specified property.
+ * @see #get(int)
+ */
+ List getList(int propertyIndex);
+
+ /**
+ * Returns the value of a <code>Sequence</code> property identified by the specified property index.
+ * @param propertyIndex the index of the property.
+ * @return the <code>Sequence</code> value of the specified property.
+ * @see #get(int)
+ */
+ Sequence getSequence(int propertyIndex);
+
+ /**
+ * Sets the value of a <code>boolean</code> property identified by the specified property index, to the specified value.
+ * @param propertyIndex the index of the property.
+ * @param value the new value for the property.
+ * @see #set(int, Object)
+ */
+ void setBoolean(int propertyIndex, boolean value);
+
+ /**
+ * Sets the value of a <code>byte</code> property identified by the specified property index, to the specified value.
+ * @param propertyIndex the index of the property.
+ * @param value the new value for the property.
+ * @see #set(int, Object)
+ */
+ void setByte(int propertyIndex, byte value);
+
+ /**
+ * Sets the value of a <code>char</code> property identified by the specified property index, to the specified value.
+ * @param propertyIndex the index of the property.
+ * @param value the new value for the property.
+ * @see #set(int, Object)
+ */
+ void setChar(int propertyIndex, char value);
+
+ /**
+ * Sets the value of a <code>double</code> property identified by the specified property index, to the specified value.
+ * @param propertyIndex the index of the property.
+ * @param value the new value for the property.
+ * @see #set(int, Object)
+ */
+ void setDouble(int propertyIndex, double value);
+
+ /**
+ * Sets the value of a <code>float</code> property identified by the specified property index, to the specified value.
+ * @param propertyIndex the index of the property.
+ * @param value the new value for the property.
+ * @see #set(int, Object)
+ */
+ void setFloat(int propertyIndex, float value);
+
+ /**
+ * Sets the value of a <code>int</code> property identified by the specified property index, to the specified value.
+ * @param propertyIndex the index of the property.
+ * @param value the new value for the property.
+ * @see #set(int, Object)
+ */
+ void setInt(int propertyIndex, int value);
+
+ /**
+ * Sets the value of a <code>long</code> property identified by the specified property index, to the specified value.
+ * @param propertyIndex the index of the property.
+ * @param value the new value for the property.
+ * @see #set(int, Object)
+ */
+ void setLong(int propertyIndex, long value);
+
+ /**
+ * Sets the value of a <code>short</code> property identified by the specified property index, to the specified value.
+ * @param propertyIndex the index of the property.
+ * @param value the new value for the property.
+ * @see #set(int, Object)
+ */
+ void setShort(int propertyIndex, short value);
+
+ /**
+ * Sets the value of a <code>byte[]</code> property identified by the specified property index, to the specified value.
+ * @param propertyIndex the index of the property.
+ * @param value the new value for the property.
+ * @see #set(int, Object)
+ */
+ void setBytes(int propertyIndex, byte[] value);
+
+ /**
+ * Sets the value of a <code>BigDecimal</code> property identified by the specified property index, to the specified value.
+ * @param propertyIndex the index of the property.
+ * @param value the new value for the property.
+ * @see #set(int, Object)
+ */
+ void setBigDecimal(int propertyIndex, BigDecimal value);
+
+ /**
+ * Sets the value of a <code>BigInteger</code> property identified by the specified property index, to the specified value.
+ * @param propertyIndex the index of the property.
+ * @param value the new value for the property.
+ * @see #set(int, Object)
+ */
+ void setBigInteger(int propertyIndex, BigInteger value);
+
+ /**
+ * Sets the value of a <code>DataObject</code> property identified by the specified property index, to the specified value.
+ * @param propertyIndex the index of the property.
+ * @param value the new value for the property.
+ * @see #set(int, Object)
+ */
+ void setDataObject(int propertyIndex, DataObject value);
+
+ /**
+ * Sets the value of a <code>Date</code> property identified by the specified property index, to the specified value.
+ * @param propertyIndex the index of the property.
+ * @param value the new value for the property.
+ * @see #set(int, Object)
+ */
+ void setDate(int propertyIndex, Date value);
+
+ /**
+ * Sets the value of a <code>String</code> property identified by the specified property index, to the specified value.
+ * @param propertyIndex the index of the property.
+ * @param value the new value for the property.
+ * @see #set(int, Object)
+ */
+ void setString(int propertyIndex, String value);
+
+ /**
+ * Sets the value of a <code>List</code> property identified by the specified property index, to the specified value.
+ * @param propertyIndex the index of the property.
+ * @param value the new value for the property.
+ * @see #set(int, Object)
+ * @see #setList(Property, List)
+ */
+ void setList(int propertyIndex, List value);
+
+ /**
+ * Returns the value of the given property of this object.
+ * <p>
+ * If the property is {@link Property#isMany many-valued},
+ * the result will be a {@link java.util.List}
+ * and each object in the List will be {@link Type#isInstance an instance of}
+ * the property's {@link Property#getType type}.
+ * Otherwise the result will directly be an instance of the property's type.
+ * @param property the property of the value to fetch.
+ * @return the value of the given property of the object.
+ * @see #set(Property, Object)
+ * @see #unset(Property)
+ * @see #isSet(Property)
+ */
+ Object get(Property property);
+
+ /**
+ * Sets the value of the given property of the object to the new value.
+ * <p>
+ * If the property is {@link Property#isMany many-valued},
+ * the new value must be a {@link java.util.List}
+ * and each object in that list must be {@link Type#isInstance an instance of}
+ * the property's {@link Property#getType type};
+ * the existing contents are cleared and the contents of the new value are added.
+ * Otherwise the new value directly must be an instance of the property's type
+ * and it becomes the new value of the property of the object.
+ * @param property the property of the value to set.
+ * @param value the new value for the property.
+ * @see #unset(Property)
+ * @see #isSet(Property)
+ * @see #get(Property)
+ */
+ void set(Property property, Object value);
+
+ /**
+ * Returns whether the property of the object is considered to be set.
+ * <p>
+ * isSet() for many-valued Properties returns true if the List is not empty and
+ * false if the List is empty. For single-valued Properties:
+ * <ul><li>If the Property has not been set() or has been unset() then isSet() returns false.</li>
+ * <li>If the current value is not the Property's default or null, isSet() returns true.</li>
+ * <li>For the remaining cases the implementation may decide between two policies: </li>
+ * <ol><li>any call to set() without a call to unset() will cause isSet() to return true, or </li>
+ * <li>the current value is compared to the default value and isSet() returns true when they differ.</li>
+ * </ol></ul><p>
+ * @param property the property in question.
+ * @return whether the property of the object is set.
+ * @see #set(Property, Object)
+ * @see #unset(Property)
+ * @see #get(Property)
+ */
+ boolean isSet(Property property);
+
+ /**
+ * Unsets the property of the object.
+ * <p>
+ * If the property is {@link Property#isMany many-valued},
+ * the value must be an {@link java.util.List}
+ * and that list is cleared.
+ * Otherwise,
+ * the value of the property of the object
+ * is set to the property's {@link Property#getDefault default value}.
+ * The property will no longer be considered {@link #isSet set}.
+ * @param property the property in question.
+ * @see #isSet(Property)
+ * @see #set(Property, Object)
+ * @see #get(Property)
+ */
+ void unset(Property property);
+
+ /**
+ * Returns the value of the specified <code>boolean</code> property.
+ * @param property the property to get.
+ * @return the <code>boolean</code> value of the specified property.
+ * @see #get(Property)
+ */
+ boolean getBoolean(Property property);
+
+ /**
+ * Returns the value of the specified <code>byte</code> property.
+ * @param property the property to get.
+ * @return the <code>byte</code> value of the specified property.
+ * @see #get(Property)
+ */
+ byte getByte(Property property);
+
+ /**
+ * Returns the value of the specified <code>char</code> property.
+ * @param property the property to get.
+ * @return the <code>char</code> value of the specified property.
+ * @see #get(Property)
+ */
+ char getChar(Property property);
+
+ /**
+ * Returns the value of the specified <code>double</code> property.
+ * @param property the property to get.
+ * @return the <code>double</code> value of the specified property.
+ * @see #get(Property)
+ */
+ double getDouble(Property property);
+
+ /**
+ * Returns the value of the specified <code>float</code> property.
+ * @param property the property to get.
+ * @return the <code>float</code> value of the specified property.
+ * @see #get(Property)
+ */
+ float getFloat(Property property);
+
+ /**
+ * Returns the value of the specified <code>int</code> property.
+ * @param property the property to get.
+ * @return the <code>int</code> value of the specified property.
+ * @see #get(Property)
+ */
+ int getInt(Property property);
+
+ /**
+ * Returns the value of the specified <code>long</code> property.
+ * @param property the property to get.
+ * @return the <code>long</code> value of the specified property.
+ * @see #get(Property)
+ */
+ long getLong(Property property);
+
+ /**
+ * Returns the value of the specified <code>short</code> property.
+ * @param property the property to get.
+ * @return the <code>short</code> value of the specified property.
+ * @see #get(Property)
+ */
+ short getShort(Property property);
+
+ /**
+ * Returns the value of the specified <code>byte[]</code> property.
+ * @param property the property to get.
+ * @return the <code>byte[]</code> value of the specified property.
+ * @see #get(Property)
+ */
+ byte[] getBytes(Property property);
+
+ /**
+ * Returns the value of the specified <code>BigDecimal</code> property.
+ * @param property the property to get.
+ * @return the <code>BigDecimal</code> value of the specified property.
+ * @see #get(Property)
+ */
+ BigDecimal getBigDecimal(Property property);
+
+ /**
+ * Returns the value of the specified <code>BigInteger</code> property.
+ * @param property the property to get.
+ * @return the <code>BigInteger</code> value of the specified property.
+ * @see #get(Property)
+ */
+ BigInteger getBigInteger(Property property);
+
+ /**
+ * Returns the value of the specified <code>DataObject</code> property.
+ * @param property the property to get.
+ * @return the <code>DataObject</code> value of the specified property.
+ * @see #get(Property)
+ */
+ DataObject getDataObject(Property property);
+
+ /**
+ * Returns the value of the specified <code>Date</code> property.
+ * @param property the property to get.
+ * @return the <code>Date</code> value of the specified property.
+ * @see #get(Property)
+ */
+ Date getDate(Property property);
+
+ /**
+ * Returns the value of the specified <code>String</code> property.
+ * @param property the property to get.
+ * @return the <code>String</code> value of the specified property.
+ * @see #get(Property)
+ */
+ String getString(Property property);
+
+ /**
+ * Returns the value of the specified <code>List</code> property.
+ * The List returned contains the current values.
+ * Updates through the List interface operate on the current values of the DataObject.
+ * Each access returns the same List object.
+ * @param property the property to get.
+ * @return the <code>List</code> value of the specified property.
+ * @see #get(Property)
+ */
+ List getList(Property property);
+
+ /**
+ * Returns the value of the specified <code>Sequence</code> property.
+ * @param property the property to get.
+ * @return the <code>Sequence</code> value of the specified property.
+ * @see #get(Property)
+ */
+ Sequence getSequence(Property property);
+
+ /**
+ * Sets the value of the specified <code>boolean</code> property, to the specified value.
+ * @param property the property to set.
+ * @param value the new value for the property.
+ * @see #set(Property, Object)
+ */
+ void setBoolean(Property property, boolean value);
+
+ /**
+ * Sets the value of the specified <code>byte</code> property, to the specified value.
+ * @param property the property to set.
+ * @param value the new value for the property.
+ * @see #set(Property, Object)
+ */
+ void setByte(Property property, byte value);
+
+ /**
+ * Sets the value of the specified <code>char</code> property, to the specified value.
+ * @param property the property to set.
+ * @param value the new value for the property.
+ * @see #set(Property, Object)
+ */
+ void setChar(Property property, char value);
+
+ /**
+ * Sets the value of the specified <code>double</code> property, to the specified value.
+ * @param property the property to set.
+ * @param value the new value for the property.
+ * @see #set(Property, Object)
+ */
+ void setDouble(Property property, double value);
+
+ /**
+ * Sets the value of the specified <code>float</code> property, to the specified value.
+ * @param property the property to set.
+ * @param value the new value for the property.
+ * @see #set(Property, Object)
+ */
+ void setFloat(Property property, float value);
+
+ /**
+ * Sets the value of the specified <code>int</code> property, to the specified value.
+ * @param property the property to set.
+ * @param value the new value for the property.
+ * @see #set(Property, Object)
+ */
+ void setInt(Property property, int value);
+
+ /**
+ * Sets the value of the specified <code>long</code> property, to the specified value.
+ * @param property the property to set.
+ * @param value the new value for the property.
+ * @see #set(Property, Object)
+ */
+ void setLong(Property property, long value);
+
+ /**
+ * Sets the value of the specified <code>short</code> property, to the specified value.
+ * @param property the property to set.
+ * @param value the new value for the property.
+ * @see #set(Property, Object)
+ */
+ void setShort(Property property, short value);
+
+ /**
+ * Sets the value of the specified <code>byte[]</code> property, to the specified value.
+ * @param property the property to set.
+ * @param value the new value for the property.
+ * @see #set(Property, Object)
+ */
+ void setBytes(Property property, byte[] value);
+
+ /**
+ * Sets the value of the specified <code>BigDecimal</code> property, to the specified value.
+ * @param property the property to set.
+ * @param value the new value for the property.
+ * @see #set(Property, Object)
+ */
+ void setBigDecimal(Property property, BigDecimal value);
+
+ /**
+ * Sets the value of the specified <code>BigInteger</code> property, to the specified value.
+ * @param property the property to set.
+ * @param value the new value for the property.
+ * @see #set(Property, Object)
+ */
+ void setBigInteger(Property property, BigInteger value);
+
+ /**
+ * Sets the value of the specified <code>DataObject</code> property, to the specified value.
+ * @param property the property to set.
+ * @param value the new value for the property.
+ * @see #set(Property, Object)
+ */
+ void setDataObject(Property property, DataObject value);
+
+ /**
+ * Sets the value of the specified <code>Date</code> property, to the specified value.
+ * @param property the property to set.
+ * @param value the new value for the property.
+ * @see #set(Property, Object)
+ */
+ void setDate(Property property, Date value);
+
+ /**
+ * Sets the value of the specified <code>String</code> property, to the specified value.
+ * @param property the property to set.
+ * @param value the new value for the property.
+ * @see #set(Property, Object)
+ */
+ void setString(Property property, String value);
+
+ /**
+ * Sets the value of the specified <code>List</code> property, to the specified value.
+ * <p> The new value must be a {@link java.util.List}
+ * and each object in that list must be {@link Type#isInstance an instance of}
+ * the property's {@link Property#getType type};
+ * the existing contents are cleared and the contents of the new value are added.
+ * @param property the property to set.
+ * @param value the new value for the property.
+ * @see #set(Property, Object)
+ */
+ void setList(Property property, List value);
+
+ /**
+ * Returns a new {@link DataObject data object} contained by this object using the specified property,
+ * which must be a {@link Property#isContainment containment property}.
+ * The type of the created object is the {@link Property#getType declared type} of the specified property.
+ * @param propertyName the name of the specified containment property.
+ * @return the created data object.
+ * @see #createDataObject(String, String, String)
+ */
+ DataObject createDataObject(String propertyName);
+
+ /**
+ * Returns a new {@link DataObject data object} contained by this object using the specified property,
+ * which must be a {@link Property#isContainment containment property}.
+ * The type of the created object is the {@link Property#getType declared type} of the specified property.
+ * @param propertyIndex the index of the specified containment property.
+ * @return the created data object.
+ * @see #createDataObject(int, String, String)
+ */
+ DataObject createDataObject(int propertyIndex);
+
+ /**
+ * Returns a new {@link DataObject data object} contained by this object using the specified property,
+ * which must be a {@link Property#isContainment containment property}.
+ * The type of the created object is the {@link Property#getType declared type} of the specified property.
+ * @param property the specified containment property.
+ * @return the created data object.
+ * @see #createDataObject(Property, Type)
+ */
+ DataObject createDataObject(Property property);
+
+ /**
+ * Returns a new {@link DataObject data object} contained by this object using the specified property,
+ * which must be a {@link Property#isContainment containment property}.
+ * The type of the created object is specified by the packageURI and typeName arguments.
+ * The specified type must be a compatible target for the property identified by propertyName.
+ * @param propertyName the name of the specified containment property.
+ * @param namespaceURI the namespace URI of the package containing the type of object to be created.
+ * @param typeName the name of a type in the specified package.
+ * @return the created data object.
+ * @see #createDataObject(String)
+ * @see DataGraph#getType
+ */
+ DataObject createDataObject(String propertyName, String namespaceURI, String typeName);
+
+ /**
+ * Returns a new {@link DataObject data object} contained by this object using the specified property,
+ * which must be a {@link Property#isContainment containment property}.
+ * The type of the created object is specified by the packageURI and typeName arguments.
+ * The specified type must be a compatible target for the property identified by propertyIndex.
+ * @param propertyIndex the index of the specified containment property.
+ * @param namespaceURI the namespace URI of the package containing the type of object to be created.
+ * @param typeName the name of a type in the specified package.
+ * @return the created data object.
+ * @see #createDataObject(int)
+ * @see DataGraph#getType
+ */
+ DataObject createDataObject(int propertyIndex, String namespaceURI, String typeName);
+
+ /**
+ * Returns a new {@link DataObject data object} contained by this object using the specified property,
+ * which must be of {@link Property#isContainment containment type}.
+ * The type of the created object is specified by the type argument,
+ * which must be a compatible target for the speicifed property.
+ * @param property a containment property of this object.
+ * @param type the type of object to be created.
+ * @return the created data object.
+ * @see #createDataObject(int)
+ */
+ DataObject createDataObject(Property property, Type type);
+
+ /**
+ * Remove this object from its container and then unset all its non-{@link Property#isReadOnly readOnly} Properties.
+ * If this object is contained by a {@link Property#isReadOnly readOnly} {@link Property#isContainment containment property}, its non-{@link Property#isReadOnly readOnly} Properties will be unset but the object will not be removed from its container.
+ * All DataObjects recursively contained by {@link Property#isContainment containment Properties} will also be deleted.
+ */
+ void delete();
+
+ /**
+ * Returns the containing {@link DataObject data object}
+ * or <code>null</code> if there is no container.
+ * @return the containing data object or <code>null</code>.
+ */
+ DataObject getContainer();
+
+ /**
+ * Return the Property of the {@link DataObject data object} containing this data object
+ * or <code>null</code> if there is no container.
+ * @return the property containing this data object.
+ */
+ Property getContainmentProperty();
+
+ /**
+ * Returns the {@link DataGraph data graph} for this object or <code>null</code> if there isn't one.
+ * @return the containing data graph or <code>null</code>.
+ */
+ DataGraph getDataGraph();
+
+ /**
+ * Returns the data object's type.
+ * <p>
+ * The type defines the Properties available for reflective access.
+ * @return the type.
+ */
+ Type getType();
+
+ /**
+ * Returns the <code>Sequence</code> for this DataObject.
+ * When getType().isSequencedType() == true,
+ * the Sequence of a DataObject corresponds to the
+ * XML elements representing the values of its Properties.
+ * Updates through DataObject and the Lists or Sequences returned
+ * from DataObject operate on the same data.
+ * When getType().isSequencedType() == false, null is returned.
+ * @return the <code>Sequence</code> or null.
+ */
+ Sequence getSequence();
+
+ /**
+ * Returns a read-only List of the Properties currently used in this DataObject.
+ * This list will contain all of the Properties in getType().getProperties()
+ * and any Properties where isSet(property) is true.
+ * For example, Properties resulting from the use of
+ * open or mixed XML content are present if allowed by the Type.
+ * the List does not contain duplicates.
+ * The order of the Properties in the List begins with getType().getProperties()
+ * and the order of the remaining Properties is determined by the implementation.
+ * The same list will be returned unless the DataObject is updated so that
+ * the contents of the List change.
+ * @return the List of Properties currently used in this DataObject.
+ */
+ List /* Property */ getInstanceProperties();
+
+ /**
+ * Returns the named Property from the current instance properties,
+ * or null if not found. The instance properties are getInstanceProperties().
+ * @param propertyName the name of the Property
+ * @return the named Property from the DataObject's current instance properties, or null.
+ */
+ Property getProperty(String propertyName);
+
+ /**
+ * Returns the root {@link DataObject data object}.
+ * @return the root data object.
+ */
+ DataObject getRootObject();
+
+ /**
+ * Returns the ChangeSummary with scope covering this dataObject, or null
+ * if there is no ChangeSummary.
+ * @return the ChangeSummary with scope covering this dataObject, or null.
+ */
+ ChangeSummary getChangeSummary();
+
+ /**
+ * Removes this DataObject from its container, if any.
+ * Same as
+ * getContainer().getList(getContainmentProperty()).remove(this) or
+ * getContainer().unset(getContainmentProperty())
+ * depending on getContainmentProperty().isMany() respectively.
+ */
+ void detach();
+}
diff --git a/branches/sdo-java-M2/sdo-api/src/main/java/commonj/sdo/Property.java b/branches/sdo-java-M2/sdo-api/src/main/java/commonj/sdo/Property.java
new file mode 100644
index 0000000000..cc96e90b44
--- /dev/null
+++ b/branches/sdo-java-M2/sdo-api/src/main/java/commonj/sdo/Property.java
@@ -0,0 +1,79 @@
+/**
+ * <copyright>
+ *
+ * Service Data Objects
+ * Version 2.0
+ * Licensed Materials - Property of BEA and IBM
+ *
+ * (c) Copyright BEA Systems, Inc. and International Business Machines Corp 2005. All rights reserved.
+ *
+ * </copyright>
+ *
+ */
+
+package commonj.sdo;
+
+import java.util.List;
+
+/**
+ * A representation of a Property in the {@link Type type} of a {@link DataObject data object}.
+ */
+public interface Property
+{
+ /**
+ * Returns the name of the Property.
+ * @return the Property name.
+ */
+ String getName();
+
+ /**
+ * Returns the type of the Property.
+ * @return the Property type.
+ */
+ Type getType();
+
+ /**
+ * Returns whether the Property is many-valued.
+ * @return <code>true</code> if the Property is many-valued.
+ */
+ boolean isMany();
+
+ /**
+ * Returns whether the Property is containment, i.e., whether it represents by-value composition.
+ * @return <code>true</code> if the Property is containment.
+ */
+ boolean isContainment();
+
+ /**
+ * Returns the containing type of this Property.
+ * @return the Property's containing type.
+ * @see Type#getProperties()
+ */
+ Type getContainingType();
+
+ /**
+ * Returns the default value this Property will have in a {@link DataObject data object} where the Property hasn't been set.
+ * @return the default value.
+ */
+ Object getDefault();
+
+ /**
+ * Returns true if values for this Property cannot be modified using the SDO APIs.
+ * When true, DataObject.set(Property property, Object value) throws an exception.
+ * Values may change due to other factors, such as services operating on DataObjects.
+ * @return true if values for this Property cannot be modified.
+ */
+ boolean isReadOnly();
+
+ /**
+ * Returns the opposite Property if the Property is bi-directional or null otherwise.
+ * @return the opposite Property if the Property is bi-directional or null
+ */
+ Property getOpposite();
+
+ /**
+ * Return a list of alias names for this Property.
+ * @return a list of alias names for this Property.
+ */
+ List /*String*/ getAliasNames();
+}
diff --git a/branches/sdo-java-M2/sdo-api/src/main/java/commonj/sdo/Sequence.java b/branches/sdo-java-M2/sdo-api/src/main/java/commonj/sdo/Sequence.java
new file mode 100644
index 0000000000..b46a5be7e0
--- /dev/null
+++ b/branches/sdo-java-M2/sdo-api/src/main/java/commonj/sdo/Sequence.java
@@ -0,0 +1,131 @@
+/**
+ * <copyright>
+ *
+ * Service Data Objects
+ * Version 2.0
+ * Licensed Materials - Property of BEA and IBM
+ *
+ * (c) Copyright BEA Systems, Inc. and International Business Machines Corp 2005. All rights reserved.
+ *
+ * </copyright>
+ *
+ */
+
+package commonj.sdo;
+
+/**
+ * A sequence is a heterogeneous list of {@link Property properties} and corresponding values.
+ * It represents an ordered arbitrary mixture of data values from more than one property of a {@link DataObject data object}.
+ */
+public interface Sequence
+{
+ /**
+ * Returns the number of entries in the sequence.
+ * @return the number of entries.
+ */
+ int size();
+
+ /**
+ * Returns the property for the given entry index.
+ * Returns <code>null</code> for mixed text entries.
+ * @param index the index of the entry.
+ * @return the property or <code>null</code> for the given entry index.
+ */
+ Property getProperty(int index);
+
+ /**
+ * Returns the property value for the given entry index.
+ * @param index the index of the entry.
+ * @return the value for the given entry index.
+ */
+ Object getValue(int index);
+
+ /**
+ * Sets the entry at a specified index to the new value.
+ * @param index the index of the entry.
+ * @param value the new value for the entry.
+ */
+ Object setValue(int index, Object value);
+
+ /**
+ * Adds a new entry with the specified property name and value
+ * to the end of the entries.
+ * @param propertyName the name of the entry's property.
+ * @param value the value for the entry.
+ */
+ boolean add(String propertyName, Object value);
+
+ /**
+ * Adds a new entry with the specified property index and value
+ * to the end of the entries.
+ * @param propertyIndex the index of the entry's property.
+ * @param value the value for the entry.
+ */
+ boolean add(int propertyIndex, Object value);
+
+ /**
+ * Adds a new entry with the specified property and value
+ * to the end of the entries.
+ * @param property the property of the entry.
+ * @param value the value for the entry.
+ */
+ boolean add(Property property, Object value);
+
+ /**
+ * Adds a new entry with the specified property name and value
+ * at the specified entry index.
+ * @param index the index at which to add the entry.
+ * @param propertyName the name of the entry's property.
+ * @param value the value for the entry.
+ */
+ void add(int index, String propertyName, Object value);
+
+ /**
+ * Adds a new entry with the specified property index and value
+ * at the specified entry index.
+ * @param index the index at which to add the entry.
+ * @param propertyIndex the index of the entry's property.
+ * @param value the value for the entry.
+ */
+ void add(int index, int propertyIndex, Object value);
+
+ /**
+ * Adds a new entry with the specified property and value
+ * at the specified entry index.
+ * @param index the index at which to add the entry.
+ * @param property the property of the entry.
+ * @param value the value for the entry.
+ */
+ void add(int index, Property property, Object value);
+
+ /**
+ * Removes the entry at the given entry index.
+ * @param index the index of the entry.
+ */
+ void remove(int index);
+
+ /**
+ * Moves the entry at <code>fromIndex</code> to <code>toIndex</code>.
+ * @param toIndex the index of the entry destination.
+ * @param fromIndex the index of the entry to move.
+ */
+ void move(int toIndex, int fromIndex);
+
+ /**
+ * Adds a new entry with the SDO text Property
+ * to the end of the Sequence.
+ * Same as add(property, text) where property is the SDO text Property.
+ * @param text value of the entry.
+ */
+ void add(String text);
+
+ /**
+ * Adds a new entry with the SDO text Property
+ * at the given index.
+ * Same as add(index, property, text) where property is the SDO text Property.
+ * @param index the index at which to add the entry.
+ * @param text value of the entry.
+ */
+ void add(int index, String text);
+
+}
diff --git a/branches/sdo-java-M2/sdo-api/src/main/java/commonj/sdo/Type.java b/branches/sdo-java-M2/sdo-api/src/main/java/commonj/sdo/Type.java
new file mode 100644
index 0000000000..85d43aad60
--- /dev/null
+++ b/branches/sdo-java-M2/sdo-api/src/main/java/commonj/sdo/Type.java
@@ -0,0 +1,143 @@
+/**
+ * <copyright>
+ *
+ * Service Data Objects
+ * Version 2.0
+ * Licensed Materials - Property of BEA and IBM
+ *
+ * (c) Copyright BEA Systems, Inc. and International Business Machines Corp 2005. All rights reserved.
+ *
+ * </copyright>
+ *
+ */
+
+package commonj.sdo;
+
+import java.util.List;
+
+/**
+ * A representation of the type of a {@link Property property} of a {@link DataObject data object}.
+ */
+public interface Type
+{
+ /**
+ * Returns the name of the type.
+ * @return the type name.
+ */
+ String getName();
+
+ /**
+ * Returns the namespace URI of the type.
+ * @return the namespace URI.
+ */
+ String getURI();
+
+ /**
+ * Returns the Java class that this type represents.
+ * @return the Java class.
+ */
+ Class getInstanceClass();
+
+ /**
+ * Returns whether the specified object is an instance of this type.
+ * @param object the object in question.
+ * @return <code>true</code> if the object is an instance.
+ * @see Class#isInstance
+ */
+ boolean isInstance(Object object);
+
+ /**
+ * Returns the List of the {@link Property Properties} of this type.
+ * <p>
+ * The expression
+ *<pre>
+ * type.getProperties().indexOf(property)
+ *</pre>
+ * yields the property's index relative to this type.
+ * As such, these expressions are equivalent:
+ *<pre>
+ * dataObject.{@link DataObject#get(int) get}(i)
+ * dataObject.{@link DataObject#get(Property) get}((Property)dataObject.getType().getProperties().get(i));
+ *</pre>
+ * </p>
+ * @return the Properties of the type.
+ * @see Property#getContainingType
+ */
+ List /*Property*/ getProperties();
+
+ /**
+ * Returns from {@link #getProperties all the Properties} of this type, the one with the specified name.
+ * As such, these expressions are equivalent:
+ *<pre>
+ * dataObject.{@link DataObject#get(String) get}("name")
+ * dataObject.{@link DataObject#get(Property) get}(dataObject.getType().getProperty("name"))
+ *</pre>
+ * </p>
+ * @return the Property with the specified name.
+ * @see #getProperties
+ */
+ Property getProperty(String propertyName);
+
+ /**
+ * Indicates if this Type specifies DataTypes (true) or DataObjects (false).
+ * When false, any object that is an instance of this type
+ * also implements the DataObject interface.
+ * True for simple types such as Strings and numbers.
+ * For any object:
+ * <pre>
+ * isInstance(object) && !isDataType() implies
+ * DataObject.class.isInstance(object) returns true.
+ * </pre>
+ * @return true if Type specifies DataTypes, false for DataObjects.
+ */
+ boolean isDataType();
+
+ /**
+ * Indicates if this Type allows any form of open content. If false,
+ * dataObject.getInstanceProperties() must be the same as
+ * dataObject.getType().getProperties() for any DataObject dataObject of this Type.
+ * @return true if this Type allows open content.
+ */
+ boolean isOpen();
+
+ /**
+ * Indicates if this Type specifies Sequenced DataObjects.
+ * Sequenced DataObjects are used when the order of values
+ * between Properties must be preserved.
+ * When true, a DataObject will return a Sequence. For example,
+ * <pre>
+ * Sequence elements = dataObject.{@link DataObject#getSequence() getSequence}();
+ * </pre>
+ * @return true if this Type specifies Sequenced DataObjects.
+ */
+ boolean isSequenced();
+
+ /**
+ * Indicates if this Type is abstract. If true, this Type cannot be
+ * instantiated. Abstract types cannot be used in DataObject or
+ * DataFactory create methods.
+ * @return true if this Type is abstract.
+ */
+ boolean isAbstract();
+
+ /**
+ * Returns the List of base Types for this Type. The List is empty
+ * if there are no base Types. XSD <extension>, <restriction>, and
+ * Java extends keyword are mapped to this list.
+ * @return the List of base Types for this Type.
+ */
+ List /*Type*/ getBaseTypes();
+
+ /**
+ * Returns the Properties declared in this Type as opposed to
+ * those declared in base Types.
+ * @return the Properties declared in this Type.
+ */
+ List /*Property*/ getDeclaredProperties();
+
+ /**
+ * Return a list of alias names for this Type.
+ * @return a list of alias names for this Type.
+ */
+ List /*String*/ getAliasNames();
+}
diff --git a/branches/sdo-java-M2/sdo-api/src/main/java/commonj/sdo/helper/CopyHelper.java b/branches/sdo-java-M2/sdo-api/src/main/java/commonj/sdo/helper/CopyHelper.java
new file mode 100644
index 0000000000..f0bf98aada
--- /dev/null
+++ b/branches/sdo-java-M2/sdo-api/src/main/java/commonj/sdo/helper/CopyHelper.java
@@ -0,0 +1,82 @@
+/**
+ * <copyright>
+ *
+ * Service Data Objects
+ * Version 2.0
+ * Licensed Materials - Property of BEA and IBM
+ *
+ * (c) Copyright BEA Systems, Inc. and International Business Machines Corp 2005. All rights reserved.
+ *
+ * </copyright>
+ *
+ */
+
+package commonj.sdo.helper;
+
+import commonj.sdo.DataObject;
+import commonj.sdo.impl.HelperProvider;
+
+/**
+ * A helper for copying DataObjects.
+ */
+public interface CopyHelper
+{
+ /**
+ * Create a shallow copy of the DataObject dataObject:
+ * Creates a new DataObject copiedDataObject with the same values
+ * as the source dataObject for each property where
+ * property.getType().isDataType() is true.
+ * The value of such a Property property in copiedDataObject is:
+ * dataObject.get(property) for single-valued Properties
+ * (copiedDataObject.get(property) equals() dataObject.get(property)), or
+ * a List where each member is equal to the member at the
+ * same index in dataObject for multi-valued Properties
+ * copiedDataObject.getList(property).get(i) equals() dataObject.getList(property).get(i)
+ * The copied Object is unset for each Property where
+ * property.getType().isDataType() is false
+ * since they are not copied.
+ * Read-only properties are copied.
+ * A copied object shares metadata with the source object
+ * sourceDO.getType() == copiedDO.getType()
+ * If a ChangeSummary is part of the source DataObject
+ * the copy has a new, empty ChangeSummary.
+ * Logging state is the same as the source ChangeSummary.
+ *
+ * @param dataObject to be copied
+ * @return copy of dataObject
+ */
+ DataObject copyShallow(DataObject dataObject);
+
+ /**
+ * Create a deep copy of the DataObject tree:
+ * Copies the dataObject and all its {@link commonj.sdo.Property#isContainment() contained}
+ * DataObjects recursively.
+ * Values of Properties are copied as in shallow copy,
+ * and values of Properties where
+ * property.getType().isDataType() is false
+ * are copied where each value copied must be a
+ * DataObject contained by the source dataObject.
+ * If a DataObject is outside the DataObject tree and the
+ * property is bidirectional, then the DataObject is skipped.
+ * If a DataObject is outside the DataObject tree and the
+ * property is unidirectional, then the same DataObject is referenced.
+ * Read-only properties are copied.
+ * If any DataObject referenced is not in the containment
+ * tree an IllegalArgumentException is thrown.
+ * If a ChangeSummary is part of the copy tree the new
+ * ChangeSummary refers to objects in the new DataObject tree.
+ * Logging state is the same as the source ChangeSummary.
+ *
+ * @param dataObject to be copied.
+ * @return copy of dataObject
+ * @throws IllegalArgumentException if any referenced DataObject
+ * is not part of the containment tree.
+ */
+ DataObject copy(DataObject dataObject);
+
+ /**
+ * The default CopyHelper.
+ */
+ CopyHelper INSTANCE = HelperProvider.getCopyHelper();
+
+}
diff --git a/branches/sdo-java-M2/sdo-api/src/main/java/commonj/sdo/helper/DataFactory.java b/branches/sdo-java-M2/sdo-api/src/main/java/commonj/sdo/helper/DataFactory.java
new file mode 100644
index 0000000000..fc9bf96ba4
--- /dev/null
+++ b/branches/sdo-java-M2/sdo-api/src/main/java/commonj/sdo/helper/DataFactory.java
@@ -0,0 +1,61 @@
+/**
+ * <copyright>
+ *
+ * Service Data Objects
+ * Version 2.0
+ * Licensed Materials - Property of BEA and IBM
+ *
+ * (c) Copyright BEA Systems, Inc. and International Business Machines Corp 2005. All rights reserved.
+ *
+ * </copyright>
+ *
+ */
+
+package commonj.sdo.helper;
+
+import commonj.sdo.DataObject;
+import commonj.sdo.Type;
+import commonj.sdo.impl.HelperProvider;
+
+/**
+ * A Factory for creating DataObjects.
+ * The created DataObjects are not connected to any other DataObjects.
+ */
+public interface DataFactory
+{
+ /**
+ * Create a DataObject of the Type specified by typeName with the given package uri.
+ * @param uri The uri of the Type.
+ * @param typeName The name of the Type.
+ * @return the created DataObject.
+ * @throws IllegalArgumentException if the uri and typeName does
+ * not correspond to a Type this factory can instantiate.
+ */
+ DataObject create(String uri, String typeName);
+
+ /**
+ * Create a DataObject supporting the given interface.
+ * InterfaceClass is the interface for the DataObject's Type.
+ * The DataObject created is an instance of the interfaceClass.
+ * @param interfaceClass is the interface for the DataObject's Type.
+ * @return the created DataObject.
+ * @throws IllegalArgumentException if the instanceClass does
+ * not correspond to a Type this factory can instantiate.
+ */
+ DataObject create(Class interfaceClass);
+
+ /**
+ * Create a DataObject of the Type specified.
+ * @param type The Type.
+ * @return the created DataObject.
+ * @throws IllegalArgumentException if the Type
+ * cannot be instantiaed by this factory.
+ */
+ DataObject create(Type type);
+
+ /**
+ * The default DataFactory.
+ */
+ DataFactory INSTANCE = HelperProvider.getDataFactory();
+
+}
diff --git a/branches/sdo-java-M2/sdo-api/src/main/java/commonj/sdo/helper/DataHelper.java b/branches/sdo-java-M2/sdo-api/src/main/java/commonj/sdo/helper/DataHelper.java
new file mode 100644
index 0000000000..1a630e4118
--- /dev/null
+++ b/branches/sdo-java-M2/sdo-api/src/main/java/commonj/sdo/helper/DataHelper.java
@@ -0,0 +1,184 @@
+/**
+ * <copyright>
+ *
+ * Service Data Objects
+ * Version 2.0
+ * Licensed Materials - Property of BEA and IBM
+ *
+ * (c) Copyright BEA Systems, Inc. and International Business Machines Corp 2005. All rights reserved.
+ *
+ * </copyright>
+ *
+ */
+
+package commonj.sdo.helper;
+
+import java.util.Calendar;
+import java.util.Date;
+import java.util.Locale;
+
+import commonj.sdo.impl.HelperProvider;
+
+/**
+ * Data helper methods.
+ */
+public interface DataHelper
+{
+ /**
+ * Convert from a String representation of an SDO date type to a Date.
+ * @param dateString the String representation of an SDO date type
+ * @return a Date representation of an SDO date type.
+ * @throws IllegalArgumentException for invalid formats.
+ */
+ Date toDate(String dateString);
+
+ /**
+ * Convert from a String representation of an SDO date type to a Calendar using the
+ * default locale. Same as toCalendar(dateString, null).
+ * @param dateString the String representation of an SDO date type
+ * @return a Calendar representation of an SDO date type.
+ * @throws IllegalArgumentException for invalid formats.
+ */
+ Calendar toCalendar(String dateString);
+
+ /**
+ * Convert from a String representation of an SDO date type to a Calendar using the
+ * specified locale, or the default locale if the locale is null.
+ * @param dateString the String representation of an SDO date type
+ * @param locale the locale or null for default locale.
+ * @return a Calendar representation of an SDO date type.
+ * @throws IllegalArgumentException for invalid formats.
+ */
+ Calendar toCalendar(String dateString, Locale locale);
+
+ /**
+ * Convert from a Date to a String representation of the DateTime type.
+ * @param date the date
+ * @return a Date to a String representation of the DateTime type.
+ */
+ String toDateTime(Date date);
+
+ /**
+ * Convert from a Date to a String representation of the Duration type.
+ * @param date the date
+ * @return a Date to a String representation of the Duration type.
+ */
+ String toDuration(Date date);
+
+ /**
+ * Convert from a Date to a String representation of the Time type.
+ * @param date the date
+ * @return a Date to a String representation of the Time type.
+ */
+ String toTime(Date date);
+
+ /**
+ * Convert from a Date to a String representation of the Day type.
+ * @param date the date
+ * @return a Date to a String representation of the Day type.
+ */
+ String toDay(Date date);
+
+ /**
+ * Convert from a Date to a String representation of the Month type.
+ * @param date the date
+ * @return a Date to a String representation of the Month type.
+ */
+ String toMonth(Date date);
+
+ /**
+ * Convert from a Date to a String representation of the MonthDay type.
+ * @param date the date
+ * @return a Date to a String representation of the MonthDay type.
+ */
+ String toMonthDay(Date date);
+
+ /**
+ * Convert from a Date to a String representation of the Year type.
+ * @param date the date
+ * @return a Date to a String representation of the Year type.
+ */
+ String toYear(Date date);
+
+ /**
+ * Convert from a Date to a String representation of the YearMonth type.
+ * @param date the date
+ * @return a Date to a String representation of the YearMonth type.
+ */
+ String toYearMonth(Date date);
+
+ /**
+ * Convert from a Date to a String representation of the YearMonthDay type.
+ * @param date the date
+ * @return a Date to a String representation of the YearMonthDay type.
+ */
+ String toYearMonthDay(Date date);
+
+ /**
+ * Convert from a Calendar to a String representation of the DateTime type.
+ * @param calendar the calendar to convert
+ * @return a Calendar to a String representation of the DateTime type.
+ */
+ String toDateTime(Calendar calendar);
+
+ /**
+ * Convert from a Calendar to a String representation of the Duration type.
+ * @param calendar the calendar to convert
+ * @return a Calendar to a String representation of the Duration type.
+ */
+ String toDuration(Calendar calendar);
+
+ /**
+ * Convert from a Calendar to a String representation of the Time type.
+ * @param calendar the calendar to convert
+ * @return a Calendar to a String representation of the Time type.
+ */
+ String toTime(Calendar calendar);
+
+ /**
+ * Convert from a Calendar to a String representation of the Day type.
+ * @param calendar the calendar to convert
+ * @return a Calendar to a String representation of the Day type.
+ */
+ String toDay(Calendar calendar);
+
+ /**
+ * Convert from a Calendar to a String representation of the Month type.
+ * @param calendar the calendar to convert
+ * @return a Calendar to a String representation of the Month type.
+ */
+ String toMonth(Calendar calendar);
+
+ /**
+ * Convert from a Calendar to a String representation of the MonthDay type.
+ * @param calendar the calendar to convert
+ * @return a Calendar to a String representation of the MonthDay type.
+ */
+ String toMonthDay(Calendar calendar);
+
+ /**
+ * Convert from a Calendar to a String representation of the Year type.
+ * @param calendar the calendar to convert
+ * @return a Calendar to a String representation of the Year type.
+ */
+ String toYear(Calendar calendar);
+
+ /**
+ * Convert from a Calendar to a String representation of the YearMonth type.
+ * @param calendar the calendar to convert
+ * @return a Calendar to a String representation of the YearMonth type.
+ */
+ String toYearMonth(Calendar calendar);
+
+ /**
+ * Convert from a Calendar to a String representation of the YearMonthDay type.
+ * @param calendar the calendar to convert
+ * @return a Calendar to a String representation of the YearMonthDay type.
+ */
+ String toYearMonthDay(Calendar calendar);
+
+ /**
+ * The default TypeHelper.
+ */
+ DataHelper INSTANCE = HelperProvider.getDataHelper();
+}
diff --git a/branches/sdo-java-M2/sdo-api/src/main/java/commonj/sdo/helper/EqualityHelper.java b/branches/sdo-java-M2/sdo-api/src/main/java/commonj/sdo/helper/EqualityHelper.java
new file mode 100644
index 0000000000..6214020701
--- /dev/null
+++ b/branches/sdo-java-M2/sdo-api/src/main/java/commonj/sdo/helper/EqualityHelper.java
@@ -0,0 +1,89 @@
+/**
+ * <copyright>
+ *
+ * Service Data Objects
+ * Version 2.0
+ * Licensed Materials - Property of BEA and IBM
+ *
+ * (c) Copyright BEA Systems, Inc. and International Business Machines Corp 2005. All rights reserved.
+ *
+ * </copyright>
+ *
+ */
+
+package commonj.sdo.helper;
+
+import commonj.sdo.DataObject;
+import commonj.sdo.impl.HelperProvider;
+
+/**
+ * A helper for comparing DataObjects.
+ */
+public interface EqualityHelper
+{
+ /**
+ * <p>Two DataObjects are equalShallow if
+ * they have the same {@link DataObject#getType Type}
+ * and all their compared Properties are equal.
+ * The set of Properties compared are the
+ * {@link DataObject#getInstanceProperties() instance properties}
+ * where property.getType().isDataType() is true
+ * and property.getType() is not ChangeSummaryType.
+ * <br/>Two of these Property values are equal if they are both not
+ * {@link DataObject#isSet(Property) set}, or set to an equal value
+ * dataObject1.get(property).equals(dataObject2.get(property))
+ * <br/>If the type is a sequenced type, the sequence entries must be the same.
+ * For each entry x in the sequence where the property is used in the comparison,
+ * dataObject1.getSequence().getValue(x).equals(
+ * dataObject2.getSequence().getValue(x)) and
+ * dataObject1.getSequence().getProperty(x) ==
+ * dataObject2.getSequence().getProperty(x)
+ * must be true.
+ * </p>
+ * Returns true the objects have the same Type and all values of all compared Properties are equal.
+ * @param dataObject1 DataObject to be compared
+ * @param dataObject2 DataObject to be compared
+ * @return true the objects have the same Type and all values of all compared Properties are equal.
+ */
+ boolean equalShallow(DataObject dataObject1, DataObject dataObject2);
+
+ /**
+ * <p>Two DataObjects are equal(Deep) if they are equalShallow,
+ * all their compared Properties are equal, and all reachable DataObjects in their
+ * graphs excluding containers are equal.
+ * The set of Properties compared are the
+ * {@link DataObject#getInstanceProperties() instance properties}
+ * where property.getType().isDataType() is false,
+ * and is not a container property, ie !property.getOpposite().isContainment()
+ * <br/>Two of these Property values are equal if they are both not
+ * {@link DataObject#isSet(Property) set}, or all the DataObjects
+ * they refer to are {@link #equal(DataObject, DataObject) equal} in the
+ * context of dataObject1 and dataObject2.
+ * <br/>Note that properties to a containing DataObject are not compared
+ * which means two DataObject trees can be equal even if their containers are not equal.
+ * <br/>If the type is a sequenced type, the sequence entries must be the same.
+ * For each entry x in the sequence where the property is used in the comparison,
+ * equal(dataObject1.getSequence().getValue(x),
+ * dataObject2.getSequence().getValue(x)) and
+ * dataObject1.getSequence().getProperty(x) ==
+ * dataObject2.getSequence().getProperty(x)
+ * must be true.
+ * </p><p>
+ * A DataObject directly or indirectly referenced by dataObject1 or dataObject2
+ * can only be equal to exactly one DataObject directly or indirectly referenced
+ * by dataObject1 or dataObject2, respectively.
+ * This ensures that dataObject1 and dataObject2 are equal if the graph formed by
+ * all their referenced DataObjects have the same shape.
+ * </p>
+ * Returns true if the trees of DataObjects are equal(Deep).
+ * @param dataObject1 DataObject to be compared
+ * @param dataObject2 DataObject to be compared
+ * @return true if the trees of DataObjects are equal(Deep).
+ */
+ boolean equal(DataObject dataObject1, DataObject dataObject2);
+
+ /**
+ * The default EqualityHelper.
+ */
+ EqualityHelper INSTANCE = HelperProvider.getEqualityHelper();
+}
diff --git a/branches/sdo-java-M2/sdo-api/src/main/java/commonj/sdo/helper/TypeHelper.java b/branches/sdo-java-M2/sdo-api/src/main/java/commonj/sdo/helper/TypeHelper.java
new file mode 100644
index 0000000000..d178789a67
--- /dev/null
+++ b/branches/sdo-java-M2/sdo-api/src/main/java/commonj/sdo/helper/TypeHelper.java
@@ -0,0 +1,71 @@
+/**
+ * <copyright>
+ *
+ * Service Data Objects
+ * Version 2.0
+ * Licensed Materials - Property of BEA and IBM
+ *
+ * (c) Copyright BEA Systems, Inc. and International Business Machines Corp 2005. All rights reserved.
+ *
+ * </copyright>
+ *
+ */
+
+package commonj.sdo.helper;
+
+import java.util.List;
+
+import commonj.sdo.DataObject;
+import commonj.sdo.Property;
+import commonj.sdo.Type;
+import commonj.sdo.impl.HelperProvider;
+
+/**
+ * Look up a Type given the uri and typeName or interfaceClass.
+ * SDO Types are available through the
+ * getType("commonj.sdo", typeName) method.
+ * Defines Types from DataObjects.
+ */
+public interface TypeHelper
+{
+ /**
+ * Return the Type specified by typeName with the given uri,
+ * or null if not found.
+ * @param uri The uri of the Type - type.getURI();
+ * @param typeName The name of the Type - type.getName();
+ * @return the Type specified by typeName with the given uri,
+ * or null if not found.
+ */
+ Type getType(String uri, String typeName);
+
+ /**
+ * Return the Type for this interfaceClass or null if not found.
+ * @param interfaceClass is the interface for the DataObject's Type -
+ * type.getInstanceClass();
+ * @return the Type for this interfaceClass or null if not found.
+ */
+ Type getType(Class interfaceClass);
+
+ /**
+ * Define the DataObject as a Type.
+ * The Type is available through TypeHelper and DataGraph getType() methods.
+ * @param type the DataObject representing the Type.
+ * @return the defined Type.
+ * @throws IllegalArgumentException if the Type could not be defined.
+ */
+ Type define(DataObject type);
+
+ /**
+ * Define the list of DataObjects as Types.
+ * The Types are available through TypeHelper and DataGraph getType() methods.
+ * @param types a List of DataObjects representing the Types.
+ * @return the defined Types.
+ * @throws IllegalArgumentException if the Types could not be defined.
+ */
+ List /*Type*/ define(List /*DataObject*/ types);
+
+ /**
+ * The default TypeHelper.
+ */
+ TypeHelper INSTANCE = HelperProvider.getTypeHelper();
+}
diff --git a/branches/sdo-java-M2/sdo-api/src/main/java/commonj/sdo/helper/XMLDocument.java b/branches/sdo-java-M2/sdo-api/src/main/java/commonj/sdo/helper/XMLDocument.java
new file mode 100644
index 0000000000..3ef7fd70c8
--- /dev/null
+++ b/branches/sdo-java-M2/sdo-api/src/main/java/commonj/sdo/helper/XMLDocument.java
@@ -0,0 +1,152 @@
+/**
+ * <copyright>
+ *
+ * Service Data Objects
+ * Version 2.0
+ * Licensed Materials - Property of BEA and IBM
+ *
+ * (c) Copyright BEA Systems, Inc. and International Business Machines Corp 2005. All rights reserved.
+ *
+ * </copyright>
+ *
+ */
+
+package commonj.sdo.helper;
+
+import commonj.sdo.DataObject;
+
+/**
+ * Represents an XML Document containing a tree of DataObjects.
+ *
+ * An example XMLDocument fragment is:
+ * <?xml version="1.0"?>
+ * <purchaseOrder orderDate="1999-10-20">
+ *
+ * created from this XML Schema fragment:
+ * <xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema">
+ * <xsd:element name="purchaseOrder" type="PurchaseOrderType"/>
+ * <xsd:complexType name="PurchaseOrderType">
+ *
+ * Upon loading this XMLDocument:
+ * DataObject is an instance of Type PurchaseOrderType.
+ * RootElementURI is null because the XSD has no targetNamespace URI.
+ * RootElementName is purchaseOrder.
+ * Encoding is null because the document did not specify an encoding.
+ * XMLDeclaration is true because the document contained an XML declaration.
+ * XMLVersion is 1.0
+ * SchemaLocation and noNamespaceSchemaLocation are null because they are
+ * not specified in the document.
+ *
+ * When saving the root element, if the type of the root dataObject is not the
+ * type of global element specified by rootElementURI and rootElementName,
+ * or if a global element does not exist for rootElementURI and rootElementName,
+ * then an xsi:type declaration is written to record the root DataObject's Type.
+ *
+ * When loading the root element and an xsi:type declaration is found
+ * it is used as the type of the root DataObject. In this case,
+ * if validation is not being performed, it is not an error if the
+ * rootElementName is not a global element.
+ */
+public interface XMLDocument
+{
+ /**
+ * Return the root DataObject for the XMLDocument.
+ * @return root DataObject for the XMLDocument.
+ */
+ DataObject getRootObject();
+
+ /**
+ * Return the targetNamespace URI for the root element.
+ * If there is no targetNamespace URI, the value is null.
+ * The root element is a global element of the XML Schema
+ * with a type compatible to the DataObject.
+ * @return the targetNamespace URI for the root element.
+ */
+ String getRootElementURI();
+
+ /**
+ * Return the name of the root element.
+ * The root element is a global element of the XML Schema
+ * with a type compatible to the DataObject.
+ * @return the name of the root element.
+ */
+ String getRootElementName();
+
+ /**
+ * Return the XML encoding of the document, or null if not specified.
+ * The default value is "UTF-8".
+ * Specification of other values is implementation-dependent.
+ * @return the XML encoding of the document, or null if not specified.
+ */
+ String getEncoding();
+
+ /**
+ * Set the XML encoding of the document, or null if not specified.
+ * @param encoding
+ */
+ void setEncoding(String encoding);
+
+ /**
+ * Return the XML declaration of the document. If true,
+ * XMLHelper save() will produce a declaration of the form:
+ * <?xml version="1.0" encoding="UTF-8"?>
+ * Encoding will be suppressed if getEncoding() is null.
+ * The default value is true.
+ * @return the XML declaration of the document.
+ */
+ boolean isXMLDeclaration();
+
+ /**
+ * Set the XML declaration version of the document.
+ * @param xmlDeclaration the XML declaration version of the document.
+ */
+ void setXMLDeclaration(boolean xmlDeclaration);
+
+ /**
+ * Return the XML version of the document, or null if not specified.
+ * The default value is "1.0".
+ * Specification of other values is implementation-dependent.
+ * @return the XML version of the document, or null if not specified.
+ */
+ String getXMLVersion();
+
+ /**
+ * Set the XML version of the document, or null if not specified.
+ * @param xmlVersion the XML version of the document, or null if not specified.
+ */
+ void setXMLVersion(String xmlVersion);
+
+ /**
+ * Return the value of the schemaLocation declaration
+ * for the http://www.w3.org/2001/XMLSchema-instance namespace in the
+ * root element, or null if not present.
+ * @return the value of the schemaLocation declaration,
+ * or null if not present.
+ */
+ String getSchemaLocation();
+
+ /**
+ * Sets the value of the schemaLocation declaration
+ * for the http://www.w3.org/2001/XMLSchema-instance namespace in the
+ * root element, or null if it should not be present.
+ * @param schemaLocation the value of the schemaLocation declaration, or null.
+ */
+ void setSchemaLocation(String schemaLocation);
+
+ /**
+ * Return the value of the noNamespaceSchemaLocation declaration
+ * for the http://www.w3.org/2001/XMLSchema-instance namespace in the
+ * root element, or null if not present.
+ * @return the value of the noNamespaceSchemaLocation declaration,
+ * or null if not present.
+ */
+ String getNoNamespaceSchemaLocation();
+
+ /**
+ * Sets the value of the noNamespaceSchemaLocation declaration
+ * for the http://www.w3.org/2001/XMLSchema-instance namespace in the
+ * root element, or null if it should not be present.
+ * @param schemaLocation the value of the noNamespaceSchemaLocation declaration, or null.
+ */
+ void setNoNamespaceSchemaLocation(String schemaLocation);
+}
diff --git a/branches/sdo-java-M2/sdo-api/src/main/java/commonj/sdo/helper/XMLHelper.java b/branches/sdo-java-M2/sdo-api/src/main/java/commonj/sdo/helper/XMLHelper.java
new file mode 100644
index 0000000000..1d0c6ca127
--- /dev/null
+++ b/branches/sdo-java-M2/sdo-api/src/main/java/commonj/sdo/helper/XMLHelper.java
@@ -0,0 +1,167 @@
+/**
+ * <copyright>
+ *
+ * Service Data Objects
+ * Version 2.0
+ * Licensed Materials - Property of BEA and IBM
+ *
+ * (c) Copyright BEA Systems, Inc. and International Business Machines Corp 2005. All rights reserved.
+ *
+ * </copyright>
+ *
+ */
+
+package commonj.sdo.helper;
+
+import java.io.IOException;
+import java.io.InputStream;
+import java.io.OutputStream;
+import java.io.Reader;
+import java.io.Writer;
+
+import commonj.sdo.DataObject;
+import commonj.sdo.impl.HelperProvider;
+
+/**
+ * A helper to convert XML documents into DataObects and
+ * DataObjects into XML documnets.
+ */
+public interface XMLHelper
+{
+ /**
+ * Creates and returns an XMLDocument from the input String.
+ * By default does not perform XSD validation.
+ * Same as
+ * load(new StringReader(inputString), null, null);
+ *
+ * @param inputString specifies the String to read from
+ * @return the new XMLDocument loaded
+ * @throws RuntimeException for errors in XML parsing or
+ * implementation-specific validation.
+ */
+ XMLDocument load(String inputString);
+
+ /**
+ * Creates and returns an XMLDocument from the inputStream.
+ * The InputStream will be closed after reading.
+ * By default does not perform XSD validation.
+ * Same as
+ * load(inputStream, null, null);
+ *
+ * @param inputStream specifies the InputStream to read from
+ * @return the new XMLDocument loaded
+ * @throws IOException for stream exceptions.
+ * @throws RuntimeException for errors in XML parsing or
+ * implementation-specific validation.
+ */
+ XMLDocument load(InputStream inputStream) throws IOException;
+
+ /**
+ * Creates and returns an XMLDocument from the inputStream.
+ * The InputStream will be closed after reading.
+ * By default does not perform XSD validation.
+ * @param inputStream specifies the InputStream to read from
+ * @param locationURI specifies the URI of the document for relative schema locations
+ * @param options implementation-specific options.
+ * @return the new XMLDocument loaded
+ * @throws IOException for stream exceptions.
+ * @throws RuntimeException for errors in XML parsing or
+ * implementation-specific validation.
+ */
+ XMLDocument load(InputStream inputStream, String locationURI, Object options) throws IOException;
+
+ /**
+ * Creates and returns an XMLDocument from the inputReader.
+ * The InputStream will be closed after reading.
+ * By default does not perform XSD validation.
+ * @param inputReader specifies the Reader to read from
+ * @param locationURI specifies the URI of the document for relative schema locations
+ * @param options implementation-specific options.
+ * @return the new XMLDocument loaded
+ * @throws IOException for stream exceptions.
+ * @throws RuntimeException for errors in XML parsing or
+ * implementation-specific validation.
+ */
+ XMLDocument load(Reader inputReader, String locationURI, Object options) throws IOException;
+
+ /**
+ * Returns the DataObject saved as an XML document with the specified root element.
+ * Same as
+ * StringWriter stringWriter = new StringWriter();
+ * save(createDocument(dataObject, rootElementURI, rootElementName),
+ * stringWriter, null);
+ * stringWriter.toString();
+ *
+ * @param dataObject specifies DataObject to be saved
+ * @param rootElementURI the Target Namespace URI of the root XML element
+ * @param rootElementName the Name of the root XML element
+ * @return the saved XML document as a string
+ * @throws IllegalArgumentException if the dataObject tree
+ * is not closed or has no container.
+ */
+ String save(DataObject dataObject, String rootElementURI, String rootElementName);
+
+ /**
+ * Saves the DataObject as an XML document with the specified root element.
+ * Same as
+ * save(createDocument(dataObject, rootElementURI, rootElementName),
+ * outputStream, null);
+ *
+ * @param dataObject specifies DataObject to be saved
+ * @param rootElementURI the Target Namespace URI of the root XML element
+ * @param rootElementName the Name of the root XML element
+ * @param outputStream specifies the OutputStream to write to.
+ * @throws IOException for stream exceptions.
+ * @throws IllegalArgumentException if the dataObject tree
+ * is not closed or has no container.
+ */
+ void save(DataObject dataObject, String rootElementURI, String rootElementName, OutputStream outputStream) throws IOException;
+
+ /**
+ * Serializes an XMLDocument as an XML document into the outputStream.
+ * If the DataObject's Type was defined by an XSD, the serialization
+ * will follow the XSD.
+ * Otherwise the serialization will follow the format as if an XSD
+ * were generated as defined by the SDO specification.
+ * The OutputStream will be flushed after writing.
+ * Does not perform validation to ensure compliance with an XSD.
+ * @param xmlDocument specifies XMLDocument to be saved
+ * @param outputStream specifies the OutputStream to write to.
+ * @param options implementation-specific options.
+ * @throws IOException for stream exceptions.
+ * @throws IllegalArgumentException if the dataObject tree
+ * is not closed or has no container.
+ */
+ void save(XMLDocument xmlDocument, OutputStream outputStream, Object options) throws IOException;
+
+ /**
+ * Serializes an XMLDocument as an XML document into the outputWriter.
+ * If the DataObject's Type was defined by an XSD, the serialization
+ * will follow the XSD.
+ * Otherwise the serialization will follow the format as if an XSD
+ * were generated as defined by the SDO specification.
+ * The OutputStream will be flushed after writing.
+ * Does not perform validation to ensure compliance with an XSD.
+ * @param xmlDocument specifies XMLDocument to be saved
+ * @param outputWriter specifies the Writer to write to.
+ * @param options implementation-specific options.
+ * @throws IOException for stream exceptions.
+ * @throws IllegalArgumentException if the dataObject tree
+ * is not closed or has no container.
+ */
+ void save(XMLDocument xmlDocument, Writer outputWriter, Object options) throws IOException;
+
+ /**
+ * Creates an XMLDocument with the specified XML rootElement for the DataObject.
+ * @param dataObject specifies DataObject to be saved
+ * @param rootElementURI the Target Namespace URI of the root XML element
+ * @param rootElementName the Name of the root XML element
+ * @return XMLDocument a new XMLDocument set with the specified parameters.
+ */
+ XMLDocument createDocument(DataObject dataObject, String rootElementURI, String rootElementName);
+
+ /**
+ * The default XMLHelper.
+ */
+ XMLHelper INSTANCE = HelperProvider.getXMLHelper();
+}
diff --git a/branches/sdo-java-M2/sdo-api/src/main/java/commonj/sdo/helper/XSDHelper.java b/branches/sdo-java-M2/sdo-api/src/main/java/commonj/sdo/helper/XSDHelper.java
new file mode 100644
index 0000000000..7b4a99493c
--- /dev/null
+++ b/branches/sdo-java-M2/sdo-api/src/main/java/commonj/sdo/helper/XSDHelper.java
@@ -0,0 +1,193 @@
+/**
+ * <copyright>
+ *
+ * Service Data Objects
+ * Version 2.0
+ * Licensed Materials - Property of BEA and IBM
+ *
+ * (c) Copyright BEA Systems, Inc. and International Business Machines Corp 2005. All rights reserved.
+ *
+ * </copyright>
+ *
+ */
+
+package commonj.sdo.helper;
+
+import java.io.InputStream;
+import java.io.Reader;
+import java.util.List;
+import java.util.Map;
+
+import commonj.sdo.Property;
+import commonj.sdo.Type;
+import commonj.sdo.impl.HelperProvider;
+
+/**
+ * Provides access to additional information when the
+ * Type or Property is defined by an XML Schema (XSD).
+ * Methods return null/false otherwise or if the information is unavailable.
+ * Defines Types from an XSD.
+*/
+public interface XSDHelper
+{
+ /**
+ * Returns the local name as declared in the XSD.
+ * @param type to return local name for.
+ * @return the local name as declared in the XSD.
+ */
+ String getLocalName(Type type);
+
+ /**
+ * Returns the local name as declared in the XSD.
+ * @param property to return local name for.
+ * @return the local name as declared in the XSD.
+ */
+ String getLocalName(Property property);
+
+ /**
+ * Returns the namespace URI as declared in the XSD.
+ * @param property to return namespace URI for.
+ * @return the namespace URI as declared in the XSD.
+ */
+ String getNamespaceURI(Property property);
+
+ /**
+ * Returns true if the property is declared as an attribute in the XSD.
+ * Returns false if not known or for advanced cases.
+ * It is possible for both isAttribute and isElement to return false
+ * but they will not both return true.
+ * @param property to identify if an attribute.
+ * @return true if the property is declared as an attribute in the XSD.
+ */
+ boolean isAttribute(Property property);
+
+ /**
+ * Returns true if the property is declared as an element in the XSD.
+ * Returns false if not known or for advanced cases.
+ * It is possible for both isAttribute and isElement to return false
+ * but they will not both return true.
+ * @param property to identify if an element.
+ * @return true if the property is declared as an element in the XSD.
+ */
+ boolean isElement(Property property);
+
+ /**
+ * Returns true if the Type is declared to contain mixed content.
+ * A DataObject's mixed content values are typically accessed via a Sequence.
+ * @param type to identify if mixed content.
+ * @return true if the Type is declared to contain mixed content.
+ */
+ boolean isMixed(Type type);
+
+ /**
+ * Indicates if this helper contains XSD information for the specified type.
+ * @param type the type.
+ * @return true if this helper contains XSD information for the specified type.
+ */
+ boolean isXSD(Type type);
+
+ /**
+ * Returns the Property defined by the named global element or attribute
+ * in the targetNamespace uri, or null if not found.
+ * @param uri The uri of the targetNamespace.
+ * @param propertyName The name of the global property.
+ * @param isElement is true for global elements, false for global attributes.
+ * @return the Property defined by the named global element or attribute
+ * in the targetNamespace uri, or null if not found.
+ */
+ Property getGlobalProperty(String uri, String propertyName, boolean isElement);
+
+ /**
+ * Return the appinfo declared for this Type and source.
+ * The appinfo start and end tags and content are returned.
+ * The xml namespace context is preserved in the appinfo element.
+ * If more than one appinfo with the same source is declared on the same
+ * Type their contents are concatenated.
+ * @param type the type with the appinfo declaration
+ * @param source the source of the appinfo declaration.
+ * @return the appinfo declared for this Type and source.
+ */
+ String getAppinfo(Type type, String source);
+
+ /**
+ * Return the content of the appinfo declared for this Property and source.
+ * If the property is defined by ref= the appinfo of the referenced
+ * element or attribute is included.
+ * The appinfo start and end tags and content are returned.
+ * The xml namespace context is preserved in the appinfo element.
+ * If more than one appinfo with the same source is declared on the same
+ * Type their contents are concatenated.
+ * @param property the Property with the appinfo declaration
+ * @param source the source of the appinfo declaration.
+ * @return the appinfo declared for this Property and source.
+ */
+ String getAppinfo(Property property, String source);
+
+ /**
+ * Define the XML Schema as Types.
+ * The Types are available through TypeHelper and DataGraph getType() methods.
+ * Same as define(new StringReader(xsd), null)
+ * @param xsd the XML Schema.
+ * @return the defined Types.
+ * @throws IllegalArgumentException if the Types could not be defined.
+ */
+ List /*Type*/ define(String xsd);
+
+ /**
+ * Define XML Schema as Types.
+ * The Types are available through TypeHelper and DataGraph getType() methods.
+ * @param xsdReader reader to an XML Schema.
+ * @param schemaLocation the URI of the location of the schema, used
+ * for processing relative imports and includes. May be null if not used.
+ * @return the defined Types.
+ * @throws IllegalArgumentException if the Types could not be defined.
+ */
+ List /*Type*/ define(Reader xsdReader, String schemaLocation);
+
+ /**
+ * Define XML Schema as Types.
+ * The Types are available through TypeHelper and DataGraph getType() methods.
+ * @param xsdInputStream input stream to an XML Schema.
+ * @param schemaLocation the URI of the location of the schema, used
+ * for processing relative imports and includes. May be null if not used.
+ * @return the defined Types.
+ * @throws IllegalArgumentException if the Types could not be defined.
+ */
+ List /*Type*/ define(InputStream xsdInputStream, String schemaLocation);
+
+ /**
+ * Generate an XML Schema Declaration (XSD) from Types.
+ * Same as generate(types, null);
+ * @param types a List containing the Types
+ * @return a String containing the generated XSD.
+ * @throws IllegalArgumentException if the XSD could not be generated.
+ */
+ String generate(List /*Type*/ types);
+
+ /**
+ * Generate an XML Schema Declaration (XSD) from Types.
+ * Round trip from SDO to XSD to SDO is supported.
+ * Round trip from XSD to SDO to XSD is not supported.
+ * Use the original schema if one exists instead of generating a new one, as
+ * the generated XSD validates a different set of documents than the original XSD.
+ * Generating an XSD does not affect the XSDHelper or the Types.
+ * The Types must all have the same URI.
+ * The result is a String containing the generated XSD.
+ * All Types referenced with the same URI will be generated in the XSD
+ * and the list will be expanded to include all types generated.
+ * Any Types referenced with other URIs will cause
+ * imports to be produced as appropriate.
+ * Imports will include a schemaLocation if a Map is provided with an entry
+ * of the form key=import target namespace, value=schemaLocation
+ * @param types a List containing the Types
+ * @param namespaceToSchemaLocation map of target namespace to schema locations or null
+ * @return a String containing the generated XSD.
+ * @throws IllegalArgumentException if the XSD could not be generated.
+ */
+ String generate(List /*Type*/ types, Map /*String, String*/ namespaceToSchemaLocation);
+
+ /**
+ * The default XSDHelper.
+ */
+ XSDHelper INSTANCE = HelperProvider.getXSDHelper();
+}
diff --git a/branches/sdo-java-M2/sdo-api/src/main/java/commonj/sdo/impl/ExternalizableDelegator.java b/branches/sdo-java-M2/sdo-api/src/main/java/commonj/sdo/impl/ExternalizableDelegator.java
new file mode 100644
index 0000000000..886138d3a5
--- /dev/null
+++ b/branches/sdo-java-M2/sdo-api/src/main/java/commonj/sdo/impl/ExternalizableDelegator.java
@@ -0,0 +1,87 @@
+/**
+ * <copyright>
+ *
+ * Service Data Objects
+ * Version 2.0
+ * Licensed Materials - Property of BEA and IBM
+ *
+ * (c) Copyright BEA Systems, Inc. and International Business Machines Corp 2005. All rights reserved.
+ *
+ * </copyright>
+ *
+ */
+
+package commonj.sdo.impl;
+
+import java.io.Externalizable;
+import java.io.IOException;
+import java.io.ObjectInput;
+import java.io.ObjectOutput;
+import java.io.ObjectStreamException;
+
+/**
+ * Delegates DataObject serialization while ensuring implementation independent
+ * java.io.Serialization. An implementation of DataObject
+ * returns an ExternalizableDelegator from its writeReplace() method.
+ *
+ * The root DataObject is the object returned from do.getRootObject() where
+ * do is the DataObject being serialized in a java.io.ObjectOutputStream.
+ * When do.getContainer() == null then do is a root object.
+ *
+ * The byte format for each DataObject in the stream is:
+ * [0] [path] [root] // when do is not a root object
+ * [1] [rootXML] // when do is a root object
+ *
+ * where:
+ * [0] is the byte 0, serialized using writeByte(0).
+ * [1] is the byte 1, serialized using writeByte(1).
+ *
+ * [path] is an SDO path expression from the root DataObject to the serialized
+ * DataObject such that root.getDataObject(path) == do.
+ * Serialized using writeUTF(path).
+ *
+ * [root] is the root object serialized using writeObject(root).
+ *
+ * [rootXML] is the GZip of the XML serialization of the root DataObject.
+ * The XML serialization is the same as
+ * XMLHelper.INSTANCE.save(root, "commonj.sdo", "dataObject", stream);
+ * where stream is a GZIPOutputStream, length is the number of bytes
+ * in the stream, and bytes are the contents of the stream.
+ * Serialized using writeInt(length), write(bytes).
+ *
+ */
+public class ExternalizableDelegator implements Externalizable
+{
+ public interface Resolvable extends Externalizable
+ {
+ Object readResolve() throws ObjectStreamException;
+ }
+
+ static final long serialVersionUID = 1;
+ transient Resolvable delegate;
+
+ public ExternalizableDelegator()
+ {
+ delegate = HelperProvider.createResolvable();
+ }
+
+ public ExternalizableDelegator(Object target)
+ {
+ delegate = HelperProvider.createResolvable(target);
+ }
+
+ public void writeExternal(ObjectOutput out) throws IOException
+ {
+ delegate.writeExternal(out);
+ }
+
+ public void readExternal(ObjectInput in) throws IOException, ClassNotFoundException
+ {
+ delegate.readExternal(in);
+ }
+
+ public Object readResolve() throws ObjectStreamException
+ {
+ return delegate.readResolve();
+ }
+}
diff --git a/branches/sdo-java-M2/sdo-api/src/main/java/commonj/sdo/impl/HelperProvider.java b/branches/sdo-java-M2/sdo-api/src/main/java/commonj/sdo/impl/HelperProvider.java
new file mode 100644
index 0000000000..6fbdad8bd5
--- /dev/null
+++ b/branches/sdo-java-M2/sdo-api/src/main/java/commonj/sdo/impl/HelperProvider.java
@@ -0,0 +1,367 @@
+/**
+ *
+ * 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 commonj.sdo.impl;
+
+import java.io.BufferedReader;
+import java.io.IOException;
+import java.io.InputStream;
+import java.io.InputStreamReader;
+import java.io.UnsupportedEncodingException;
+import java.security.AccessController;
+import java.security.PrivilegedAction;
+
+import commonj.sdo.helper.CopyHelper;
+import commonj.sdo.helper.DataFactory;
+import commonj.sdo.helper.DataHelper;
+import commonj.sdo.helper.EqualityHelper;
+import commonj.sdo.helper.TypeHelper;
+import commonj.sdo.helper.XMLHelper;
+import commonj.sdo.helper.XSDHelper;
+
+/**
+ * A HelperProvider obtains specific default helpers and other
+ * implementation-specific objects used by a Java implementation of SDO.
+ *
+ * @version $Rev$ $Date$
+ */
+public abstract class HelperProvider {
+ /**
+ * The default HelperProvider INSTANCE. This is located using the ClassLoader used
+ * to load the HelperProvider class itself and if no default implementation is available
+ * this field will be set to null.
+ */
+ public static final HelperProvider INSTANCE;
+
+ /**
+ * The name of the resource that is used for service location.
+ */
+ public static final String SERVICE_RESOURCE_NAME = "META-INF/services/commonj.sdo.impl.HelperProvider";
+
+ /**
+ * The name of the system property that will be checked for an implementation name.
+ */
+ public static final String PROPERTY_NAME = "commonj.sdo.impl.HelperProvider";
+
+ static {
+ // initialize the default instance using this class's classloader
+ // set to null if none could be located (implies no default implementation)
+ HelperProvider provider;
+ try {
+ provider = getInstance(HelperProvider.class.getClassLoader());
+ } catch (NoHelperProviderException e) {
+ provider = null;
+ }
+ INSTANCE = provider;
+ }
+
+ /**
+ * Locate and instantiate a HelperProvider.
+ * <p/>
+ * Attempt to locate a HelperProvider using first the Thread's current context classloader and then,
+ * if that is not set, not readable, or does not provide an implementation, using the classloader
+ * used to load the HelperProvider class itself.
+ * <p/>
+ * A new instance is returned for each sucessful invocation.
+ *
+ * @return an implementation of HelperProvider
+ * @throws NoHelperProviderException if no provider implementation was defined or it could not be instantiated
+ */
+ public static HelperProvider getInstance() throws NoHelperProviderException {
+ String implName = getImplementationName();
+
+ ClassLoader cl = getContextClassLoader();
+ if (cl != null) {
+ HelperProvider provider = loadImplementation(cl, implName);
+ if (provider != null) {
+ return provider;
+ }
+ }
+
+ cl = HelperProvider.class.getClassLoader();
+ HelperProvider provider = loadImplementation(cl, implName);
+ if (provider != null) {
+ return provider;
+ }
+
+ throw new NoHelperProviderException(implName);
+ }
+
+
+ /**
+ * Locate and instantiate a HelperProvider using the supplied ClassLoader.
+ * <p/>
+ * The name of the implementation to use is determined by the value of the "commonj.sdo.impl.HelperProvider"
+ * system property. If this is not set or this code does not have permission to read it then the name
+ * will be retrieved from the META-INF/services/commonj.sdo.impl.HelperProvider resource as returned
+ * by the supplied classloader as described in the
+ * <a href="http://java.sun.com/j2se/1.5.0/docs/guide/jar/jar.html#Service%20Provider">JAR file specification</a>.
+ * <p/>
+ * A new instance is returned for each sucessful invocation.
+ *
+ * @param cl the classloader to use to locate and instantiate the implementation
+ * @return the specified implementation of HelperProvider
+ * @throws NoHelperProviderException if no provider implementation was defined or it could not be instantiated
+ */
+ public static HelperProvider getInstance(ClassLoader cl) throws NoHelperProviderException {
+ String implName = getImplementationName();
+ HelperProvider provider = loadImplementation(cl, implName);
+ if (provider == null) {
+ throw new NoHelperProviderException(implName);
+ }
+ return provider;
+ }
+
+ private static ClassLoader getContextClassLoader() {
+ try {
+ return (ClassLoader)AccessController.doPrivileged(new PrivilegedAction() {
+ public Object run() {
+ return Thread.currentThread().getContextClassLoader();
+ }
+ });
+ } catch (SecurityException e) {
+ return null;
+ }
+ }
+
+ private static HelperProvider loadImplementation(ClassLoader cl, String implName) throws NoHelperProviderException {
+ // if no name is requested, locate using the supplied classloader
+ if (implName == null) {
+ implName = getImplementationName(cl);
+ }
+ // no implementation to try, return null
+ if (implName == null) {
+ return null;
+ }
+
+ // try an instantiate the implementation
+ try {
+ return (HelperProvider) cl.loadClass(implName).newInstance();
+ } catch (InstantiationException e) {
+ throw new NoHelperProviderException(implName, e);
+ } catch (IllegalAccessException e) {
+ throw new NoHelperProviderException(implName, e);
+ } catch (ClassNotFoundException e) {
+ throw new NoHelperProviderException(implName, e);
+ }
+ }
+
+ private static String getImplementationName() {
+ try {
+ return (String)AccessController.doPrivileged(new PrivilegedAction() {
+ public Object run() {
+ return System.getProperty(PROPERTY_NAME);
+ }
+ });
+ } catch (SecurityException e) {
+ return null;
+ }
+ }
+
+ private static String getImplementationName(ClassLoader cl) {
+ InputStream is = cl.getResourceAsStream(SERVICE_RESOURCE_NAME);
+ if (is == null) {
+ return null;
+ }
+
+ InputStreamReader in;
+ try {
+ in = new InputStreamReader(is, "UTF-8");
+ } catch (UnsupportedEncodingException e) {
+ throw new AssertionError("UTF-8 encoding not available");
+ }
+
+ try {
+ BufferedReader reader = new BufferedReader(in, 128);
+ try {
+ String line;
+ while ((line = reader.readLine()) != null) {
+ int i = line.indexOf('#');
+ if (i != -1) {
+ line = line.substring(0, i);
+ }
+ line = line.trim();
+ if (line.length() > 0) {
+ return line;
+ }
+ }
+ return null;
+ } finally {
+ reader.close();
+ }
+ } catch (IOException e) {
+ throw new NoHelperProviderException(e);
+ }
+ }
+
+
+ ///////////////////////////////////////////////////////////////////////////////////////////////////////////////////
+ // implementation specific methods for users that don't want to use the default implementation
+
+ /**
+ * Returns a CopyHelper obtained from this implementation.
+ *
+ * @return a CopyHelper obtained from this implementation
+ */
+ public abstract CopyHelper copyHelper();
+
+ /**
+ * Returns a DataFactory obtained from this implementation.
+ *
+ * @return a DataFactory obtained from this implementation
+ */
+ public abstract DataFactory dataFactory();
+
+ /**
+ * Returns a DataHelper obtained from this implementation.
+ *
+ * @return a DataHelper obtained from this implementation
+ */
+ public abstract DataHelper dataHelper();
+
+ /**
+ * Returns a EqualityHelper obtained from this implementation.
+ *
+ * @return a EqualityHelper obtained from this implementation
+ */
+ public abstract EqualityHelper equalityHelper();
+
+ /**
+ * Returns a TypeHelper obtained from this implementation.
+ *
+ * @return a TypeHelper obtained from this implementation
+ */
+ public abstract TypeHelper typeHelper();
+
+ /**
+ * Returns a XMLHelper obtained from this implementation.
+ *
+ * @return a XMLHelper obtained from this implementation
+ */
+ public abstract XMLHelper xmlHelper();
+
+ /**
+ * Returns a XSDHelper obtained from this implementation.
+ *
+ * @return a XSDHelper obtained from this implementation
+ */
+ public abstract XSDHelper xsdHelper();
+
+ /**
+ * Create a Resolvable using this implementation
+ *
+ * @return a Resolvable created using this implementation
+ */
+ public abstract ExternalizableDelegator.Resolvable resolvable();
+
+ /**
+ * Create a Resolvable using this implementation
+ *
+ * @param target the object to be resolved
+ * @return a Resolvable created using this implementation
+ */
+ public abstract ExternalizableDelegator.Resolvable resolvable(Object target);
+
+
+ ///////////////////////////////////////////////////////////////////////////////////////////////////////////////////
+ // static helper methods required by the specification
+
+ /**
+ * Returns a CopyHelper obtained from the default HelperProvider.
+ *
+ * @return a CopyHelper obtained from the default HelperProvider
+ */
+ public static CopyHelper getCopyHelper() {
+ return INSTANCE.copyHelper();
+ }
+
+ /**
+ * Returns a DataFactory obtained from the default HelperProvider.
+ *
+ * @return a DataFactory obtained from the default HelperProvider
+ */
+ public static DataFactory getDataFactory() {
+ return INSTANCE.dataFactory();
+ }
+
+ /**
+ * Returns a DataHelper obtained from the default HelperProvider.
+ *
+ * @return a DataHelper obtained from the default HelperProvider
+ */
+ public static DataHelper getDataHelper() {
+ return INSTANCE.dataHelper();
+ }
+
+ /**
+ * Returns a EqualityHelper obtained from the default HelperProvider.
+ *
+ * @return a EqualityHelper obtained from the default HelperProvider
+ */
+ public static EqualityHelper getEqualityHelper() {
+ return INSTANCE.equalityHelper();
+ }
+
+ /**
+ * Returns a TypeHelper obtained from the default HelperProvider.
+ *
+ * @return a TypeHelper obtained from the default HelperProvider
+ */
+ public static TypeHelper getTypeHelper() {
+ return INSTANCE.typeHelper();
+ }
+
+ /**
+ * Returns a XMLHelper obtained from the default HelperProvider.
+ *
+ * @return a XMLHelper obtained from the default HelperProvider
+ */
+ public static XMLHelper getXMLHelper() {
+ return INSTANCE.xmlHelper();
+ }
+
+ /**
+ * Returns a XSDHelper obtained from the default HelperProvider.
+ *
+ * @return a XSDHelper obtained from the default HelperProvider
+ */
+ public static XSDHelper getXSDHelper() {
+ return INSTANCE.xsdHelper();
+ }
+
+ /**
+ * Create a Resolvable using the default HelperProvider
+ *
+ * @return a Resolvable created using the default HelperProvider
+ */
+ public static ExternalizableDelegator.Resolvable createResolvable() {
+ return INSTANCE.resolvable();
+ }
+
+ /**
+ * Create a Resolvable using the default HelperProvider
+ *
+ * @param target the object to be resolved
+ * @return a Resolvable created using the default HelperProvider
+ */
+ public static ExternalizableDelegator.Resolvable createResolvable(Object target) {
+ return INSTANCE.resolvable(target);
+ }
+}
diff --git a/branches/sdo-java-M2/sdo-api/src/main/java/commonj/sdo/impl/NoHelperProviderException.java b/branches/sdo-java-M2/sdo-api/src/main/java/commonj/sdo/impl/NoHelperProviderException.java
new file mode 100644
index 0000000000..83f0b21e2e
--- /dev/null
+++ b/branches/sdo-java-M2/sdo-api/src/main/java/commonj/sdo/impl/NoHelperProviderException.java
@@ -0,0 +1,58 @@
+/**
+ *
+ * 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 commonj.sdo.impl;
+
+/**
+ * Exception indicating that a HelperProvider could not be located or instantiated.
+ * The message will be set to the name of the implementation class; a null value
+ * indicates that the name of the implementation could not be determined.
+ * The cause will be set to the Throwable that prevented the provider from being
+ * located or created.
+ *
+ * @version $Revision$ $Date$
+ */
+public class NoHelperProviderException extends RuntimeException {
+ private static final long serialVersionUID = 727646133930924084L;
+
+ public NoHelperProviderException() {
+ }
+
+ public NoHelperProviderException(String message) {
+ super(message);
+ }
+
+ public NoHelperProviderException(String message, Throwable cause) {
+ super(message, cause);
+ }
+
+ public NoHelperProviderException(Throwable cause) {
+ super(cause);
+ }
+
+ /**
+ * Return the name of the implementation class that could not be provided.
+ *
+ * @return the name of the implementation class; may be null if not known
+ */
+ public String getImplementationName() {
+ return getMessage();
+ }
+}
diff --git a/branches/sdo-java-M2/sdo-api/src/main/resources/xml/datagraph.xsd b/branches/sdo-java-M2/sdo-api/src/main/resources/xml/datagraph.xsd
new file mode 100644
index 0000000000..30727473a0
--- /dev/null
+++ b/branches/sdo-java-M2/sdo-api/src/main/resources/xml/datagraph.xsd
@@ -0,0 +1,77 @@
+<?xml version="1.0" encoding="UTF-8"?>
+
+<!--
+/**
+ * <copyright>
+ *
+ * Service Data Objects
+ * Version 2.0
+ * Licensed Materials - Property of BEA and IBM
+ *
+ * (c) Copyright BEA Systems, Inc. and International Business Machines Corp 2005. All rights reserved.
+ *
+ * </copyright>
+ *
+ */
+-->
+
+<xsd:schema
+ xmlns:xsd="http://www.w3.org/2001/XMLSchema"
+ xmlns:sdo="commonj.sdo"
+ targetNamespace="commonj.sdo">
+
+ <xsd:element name="datagraph" type="sdo:DataGraphType"/>
+
+ <xsd:complexType name="DataGraphType">
+ <xsd:complexContent>
+ <xsd:extension base="sdo:BaseDataGraphType">
+ <xsd:sequence>
+ <xsd:any minOccurs="0" maxOccurs="1" namespace="##other" processContents="lax"/>
+ </xsd:sequence>
+ </xsd:extension>
+ </xsd:complexContent>
+ </xsd:complexType>
+
+ <xsd:complexType name="BaseDataGraphType" abstract="true">
+ <xsd:sequence>
+ <xsd:element name="models" type="sdo:ModelsType" minOccurs="0"/>
+ <xsd:element name="xsd" type="sdo:XSDType" minOccurs="0"/>
+ <xsd:element name="changeSummary" type="sdo:ChangeSummaryType" minOccurs="0"/>
+ </xsd:sequence>
+ <xsd:anyAttribute namespace="##other" processContents="lax"/>
+ </xsd:complexType>
+
+ <xsd:complexType name="ModelsType">
+ <xsd:annotation>
+ <xsd:documentation>
+ Expected type is emof:Package.
+ </xsd:documentation>
+ </xsd:annotation>
+ <xsd:sequence>
+ <xsd:any minOccurs="0" maxOccurs="unbounded" namespace="##other" processContents="lax"/>
+ </xsd:sequence>
+ </xsd:complexType>
+
+ <xsd:complexType name="XSDType">
+ <xsd:annotation>
+ <xsd:documentation>
+ Expected type is xsd:schema.
+ </xsd:documentation>
+ </xsd:annotation>
+ <xsd:sequence>
+ <xsd:any minOccurs="0" maxOccurs="unbounded" namespace="http://www.w3.org/2001/XMLSchema" processContents="lax"/>
+ </xsd:sequence>
+ </xsd:complexType>
+
+ <xsd:complexType name="ChangeSummaryType">
+ <xsd:sequence>
+ <xsd:any minOccurs="0" maxOccurs="unbounded" namespace="##any" processContents="lax"/>
+ </xsd:sequence>
+ <xsd:attribute name="create" type="xsd:string"/>
+ <xsd:attribute name="delete" type="xsd:string"/>
+ <xsd:attribute name="logging" type="xsd:boolean"/>
+ </xsd:complexType>
+
+ <xsd:attribute name="ref" type="xsd:string"/>
+
+</xsd:schema>
diff --git a/branches/sdo-java-M2/sdo-api/src/main/resources/xml/sdoJava.xml b/branches/sdo-java-M2/sdo-api/src/main/resources/xml/sdoJava.xml
new file mode 100644
index 0000000000..08c3b9734c
--- /dev/null
+++ b/branches/sdo-java-M2/sdo-api/src/main/resources/xml/sdoJava.xml
@@ -0,0 +1,45 @@
+<?xml version="1.0" encoding="UTF-8"?>
+
+<!--
+/**
+ * <copyright>
+ *
+ * Service Data Objects
+ * Version 2.0
+ * Licensed Materials - Property of BEA and IBM
+ *
+ * (c) Copyright BEA Systems, Inc. and International Business Machines Corp 2005. All rights reserved.
+ *
+ * </copyright>
+ *
+ */
+-->
+
+<types xmlns="commonj.sdo"
+ xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+ xmlns:sdoJava="commonj.sdo/java"
+ xsi:schemaLocation="commonj.sdo sdoModel.xsd commonj.sdo/java sdoJava.xsd commonj.sdo/xml sdoXML.xsd">
+
+<!--
+ JavaInfo declares properties used in open content for
+ the Java binding of SDO Types and Properties.
+-->
+
+ <type name="JavaInfo" uri="commonj.sdo/java">
+ <property name="javaClass" type="commonj.sdo#String"/>
+ </type>
+
+<!--
+ The Java object data types.
+-->
+
+ <type name="BooleanObject" dataType="true" sdoJava:instanceClass="java.lang.Boolean" uri="commonj.sdo/java"/>
+ <type name="ByteObject" dataType="true" sdoJava:instanceClass="java.lang.Byte" uri="commonj.sdo/java"/>
+ <type name="CharacterObject" dataType="true" sdoJava:instanceClass="java.lang.Character" uri="commonj.sdo/java"/>
+ <type name="DoubleObject" dataType="true" sdoJava:instanceClass="java.lang.Double" uri="commonj.sdo/java"/>
+ <type name="FloatObject" dataType="true" sdoJava:instanceClass="java.lang.Float" uri="commonj.sdo/java"/>
+ <type name="IntObject" dataType="true" sdoJava:instanceClass="java.lang.Int" uri="commonj.sdo/java"/>
+ <type name="LongObject" dataType="true" sdoJava:instanceClass="java.lang.Long" uri="commonj.sdo/java"/>
+ <type name="ShortObject" dataType="true" sdoJava:instanceClass="java.lang.Short" uri="commonj.sdo/java"/>
+
+</types>
diff --git a/branches/sdo-java-M2/sdo-api/src/main/resources/xml/sdoJava.xsd b/branches/sdo-java-M2/sdo-api/src/main/resources/xml/sdoJava.xsd
new file mode 100644
index 0000000000..094a705aa5
--- /dev/null
+++ b/branches/sdo-java-M2/sdo-api/src/main/resources/xml/sdoJava.xsd
@@ -0,0 +1,85 @@
+<?xml version="1.0" encoding="UTF-8"?>
+
+<!--
+/**
+ * <copyright>
+ *
+ * Service Data Objects
+ * Version 2.0
+ * Licensed Materials - Property of BEA and IBM
+ *
+ * (c) Copyright BEA Systems, Inc. and International Business Machines Corp 2005. All rights reserved.
+ *
+ * </copyright>
+ *
+ */
+-->
+
+<xsd:schema
+ targetNamespace="commonj.sdo/java"
+ xmlns:sdoJava="commonj.sdo/java"
+ xmlns:sdo="commonj.sdo"
+ xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+ xmlns:xsd="http://www.w3.org/2001/XMLSchema">
+
+<xsd:import namespace="commonj.sdo" schemaLocation="sdoModel.xsd"/>
+
+<!--
+ These attributes are used to customize the Java mapping of
+ XSD to SDO Types and Properties.
+-->
+
+<xsd:attribute name="package" type="xsd:string" />
+<xsd:attribute name="instanceClass" type="xsd:string" />
+<xsd:attribute name="extendedInstanceClass" type="xsd:string" />
+<xsd:attribute name="nestedInterfaces" type="xsd:boolean" />
+
+<!--
+ JavaInfo declares properties used in open content for
+ the Java binding of SDO Types and Properties.
+-->
+
+<!-- FIXME need this global attribute because as per spec Type's with JavaInfo.javaClass cannot be (de)serialized -->
+<xsd:attribute name="javaClass" type="sdo:String"/>
+
+<xsd:complexType name="JavaInfo">
+ <xsd:attribute ref="sdoJava:javaClass"/>
+</xsd:complexType>
+
+<!--
+ The Java object data types.
+-->
+
+<xsd:simpleType name="BooleanObject" sdoJava:instanceClass="java.lang.Boolean">
+ <xsd:restriction base="xsd:boolean"/>
+</xsd:simpleType>
+
+<xsd:simpleType name="ByteObject" sdoJava:instanceClass="java.lang.Byte">
+ <xsd:restriction base="xsd:byte"/>
+</xsd:simpleType>
+
+<xsd:simpleType name="CharacterObject" sdoJava:instanceClass="java.lang.Character">
+ <xsd:restriction base="xsd:string"/>
+</xsd:simpleType>
+
+<xsd:simpleType name="DoubleObject" sdoJava:instanceClass="java.lang.Double">
+ <xsd:restriction base="xsd:double"/>
+</xsd:simpleType>
+
+<xsd:simpleType name="FloatObject" sdoJava:instanceClass="java.lang.Float">
+ <xsd:restriction base="xsd:float"/>
+</xsd:simpleType>
+
+<xsd:simpleType name="IntObject" sdoJava:instanceClass="java.lang.Integer">
+ <xsd:restriction base="xsd:int"/>
+</xsd:simpleType>
+
+<xsd:simpleType name="LongObject" sdoJava:instanceClass="java.lang.Long">
+ <xsd:restriction base="xsd:long"/>
+</xsd:simpleType>
+
+<xsd:simpleType name="ShortObject" sdoJava:instanceClass="java.lang.Short">
+ <xsd:restriction base="xsd:short"/>
+</xsd:simpleType>
+
+</xsd:schema>
diff --git a/branches/sdo-java-M2/sdo-api/src/main/resources/xml/sdoModel.xml b/branches/sdo-java-M2/sdo-api/src/main/resources/xml/sdoModel.xml
new file mode 100644
index 0000000000..fcd1a4e283
--- /dev/null
+++ b/branches/sdo-java-M2/sdo-api/src/main/resources/xml/sdoModel.xml
@@ -0,0 +1,87 @@
+<?xml version="1.0" encoding="UTF-8"?>
+
+<!--
+/**
+ * <copyright>
+ *
+ * Service Data Objects
+ * Version 2.0
+ * Licensed Materials - Property of BEA and IBM
+ *
+ * (c) Copyright BEA Systems, Inc. and International Business Machines Corp 2005. All rights reserved.
+ *
+ * </copyright>
+ *
+ */
+-->
+
+<types xmlns="commonj.sdo"
+ xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+ xmlns:sdoJava="commonj.sdo/java"
+ xsi:schemaLocation="commonj.sdo sdoModel.xsd commonj.sdo/java sdoJava.xsd commonj.sdo/xml sdoXML.xsd">
+
+<!-- Model Types
+ SDO Type and Property are defined in terms of themselves.
+-->
+
+ <type name="Type" open="true" uri="commonj.sdo">
+ <property name="baseType" type="#Type" many="true"/>
+ <property name="property" type="#Property" containment="true" many="true"/>
+ <property name="aliasName" type="#String" many="true"/>
+ <property name="name" type="#String"/>
+ <property name="uri" type="#String"/>
+ <property name="dataType" type="#Boolean"/>
+ <property name="open" type="#Boolean"/>
+ <property name="sequenced" type="#Boolean"/>
+ <property name="abstract" type="#Boolean"/>
+ </type>
+
+ <type name="Property" open="true" uri="commonj.sdo">
+ <property name="aliasName" type="#String" many="true"/>
+ <property name="name" type="#String"/>
+ <property name="many" type="#Boolean"/>
+ <property name="containment" type="#Boolean"/>
+ <property name="type" type="#Type" />
+ <property name="default" type="#String"/>
+ <property name="readOnly" type="#Boolean"/>
+ <property name="opposite" type="#Property"/>
+ </type>
+
+ <!-- SDO special types -->
+
+ <type name="DataObject" abstract="true" sdoJava:instanceClass="commonj.sdo.DataObject" uri="commonj.sdo"/>
+ <type name="ObjectType" abstract="true" datatype="true" sdoJava:instanceClass="java.lang.Object" uri="commonj.sdo"/>
+ <type name="ChangeSummaryType" abstract="true" datatype="true" sdoJava:instanceClass="commonj.sdo.ChangeSummary" uri="commonj.sdo"/>
+
+ <type name="TextType" abstract="true">
+ <property name="text" type="#String" many="true"/>
+ </type>
+
+ <!-- SDO data types -->
+
+ <type name="Boolean" datatype="true" sdoJava:instanceClass="boolean" uri="commonj.sdo"/>
+ <type name="Byte" datatype="true" sdoJava:instanceClass="byte" uri="commonj.sdo"/>
+ <type name="Bytes" datatype="true" sdoJava:instanceClass="byte[]" uri="commonj.sdo"/>
+ <type name="Character" datatype="true" sdoJava:instanceClass="char" uri="commonj.sdo"/>
+ <type name="Date" datatype="true" sdoJava:instanceClass="java.util.Date" uri="commonj.sdo"/>
+ <type name="DateTime" datatype="true" sdoJava:instanceClass="java.lang.String" uri="commonj.sdo"/>
+ <type name="Day" datatype="true" sdoJava:instanceClass="java.lang.String" uri="commonj.sdo"/>
+ <type name="Decimal" datatype="true" sdoJava:instanceClass="java.math.BigDecimal" uri="commonj.sdo"/>
+ <type name="Duration" datatype="true" sdoJava:instanceClass="java.lang.String" uri="commonj.sdo"/>
+ <type name="Double" datatype="true" sdoJava:instanceClass="double" uri="commonj.sdo"/>
+ <type name="Float" datatype="true" sdoJava:instanceClass="float" uri="commonj.sdo"/>
+ <type name="Int" datatype="true" sdoJava:instanceClass="int" uri="commonj.sdo"/>
+ <type name="Integer" datatype="true" sdoJava:instanceClass="java.math.BigInteger" uri="commonj.sdo"/>
+ <type name="Long" datatype="true" sdoJava:instanceClass="long" uri="commonj.sdo"/>
+ <type name="MonthDay" datatype="true" sdoJava:instanceClass="java.lang.String" uri="commonj.sdo"/>
+ <type name="Month" datatype="true" sdoJava:instanceClass="java.lang.String" uri="commonj.sdo"/>
+ <type name="Short" datatype="true" sdoJava:instanceClass="short" uri="commonj.sdo"/>
+ <type name="String" datatype="true" sdoJava:instanceClass="java.lang.String" uri="commonj.sdo"/>
+ <type name="Strings" datatype="true" sdoJava:instanceClass="java.util.List" uri="commonj.sdo"/>
+ <type name="Time" datatype="true" sdoJava:instanceClass="java.lang.String" uri="commonj.sdo"/>
+ <type name="Year" datatype="true" sdoJava:instanceClass="java.lang.String" uri="commonj.sdo"/>
+ <type name="YearMonth" datatype="true" sdoJava:instanceClass="java.lang.String" uri="commonj.sdo"/>
+ <type name="YearMonthDay" datatype="true" sdoJava:instanceClass="java.lang.String" uri="commonj.sdo"/>
+ <type name="URI" datatype="true" sdoJava:instanceClass="java.lang.String" uri="commonj.sdo"/>
+
+</types>
diff --git a/branches/sdo-java-M2/sdo-api/src/main/resources/xml/sdoModel.xsd b/branches/sdo-java-M2/sdo-api/src/main/resources/xml/sdoModel.xsd
new file mode 100644
index 0000000000..114fb57145
--- /dev/null
+++ b/branches/sdo-java-M2/sdo-api/src/main/resources/xml/sdoModel.xsd
@@ -0,0 +1,217 @@
+<?xml version="1.0" encoding="UTF-8"?>
+
+<!--
+/**
+ * <copyright>
+ *
+ * Service Data Objects
+ * Version 2.0
+ * Licensed Materials - Property of BEA and IBM
+ *
+ * (c) Copyright BEA Systems, Inc. and International Business Machines Corp 2005. All rights reserved.
+ *
+ * </copyright>
+ *
+ */
+
+-->
+
+<xsd:schema
+ targetNamespace="commonj.sdo"
+ xmlns:xsd="http://www.w3.org/2001/XMLSchema"
+ xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+ xmlns:sdo="commonj.sdo"
+ xmlns:sdoXML="commonj.sdo/xml"
+ xmlns:sdoJava="commonj.sdo/java"
+ elementFormDefault="qualified"
+ xsi:schemaLocation="commonj.sdo/xml sdoXML.xsd
+ commonj.sdo/java sdoJava.xsd">
+
+<xsd:include schemaLocation="datagraph.xsd"/>
+
+<!-- Root element for defining several Types in one document.
+ Is not part of the model.
+-->
+<xsd:element name="types" type="sdo:Types"/>
+<xsd:complexType name="Types">
+ <xsd:sequence>
+ <xsd:element name="type" type="sdo:Type" minOccurs="0" maxOccurs="unbounded"/>
+ </xsd:sequence>
+</xsd:complexType>
+
+<!-- Any data object may be serialized with this element,
+ with xsi:type to declare the
+ actual type of the DataObject serialized.
+-->
+<xsd:element name="dataObject" type="xsd:anyType"/>
+
+<!-- Model Types
+ SDO Type and Property are defined in terms of themselves.
+-->
+<xsd:element name="type" type="sdo:Type"/>
+<xsd:complexType name="Type">
+ <xsd:sequence>
+ <xsd:element name="baseType" type="sdo:URI"
+ minOccurs="0" maxOccurs="unbounded"
+ sdoXML:propertyType="sdo:Type" />
+ <xsd:element name="property" type="sdo:Property"
+ minOccurs="0" maxOccurs="unbounded" />
+ <xsd:element name="aliasName" type="sdo:String"
+ minOccurs="0" maxOccurs="unbounded" />
+ <xsd:any namespace="##other" processContents="lax"
+ minOccurs="0" maxOccurs="unbounded" />
+ </xsd:sequence>
+ <xsd:attribute name="name" type="xsd:ID" sdo:dataType="sdo:String"/>
+ <xsd:attribute name="uri" type="sdo:URI"/>
+ <xsd:attribute name="dataType" type="sdo:Boolean"/>
+ <xsd:attribute name="open" type="sdo:Boolean"/>
+ <xsd:attribute name="sequenced" type="sdo:Boolean"/>
+ <xsd:attribute name="abstract" type="sdo:Boolean"/>
+ <xsd:anyAttribute namespace="##any" processContents="lax"/>
+</xsd:complexType>
+
+<xsd:complexType name="Property">
+ <xsd:sequence>
+ <xsd:element name="aliasName" type="sdo:String"
+ minOccurs="0" maxOccurs="unbounded" />
+ <xsd:any namespace="##other" processContents="lax"
+ minOccurs="0" maxOccurs="unbounded" />
+ </xsd:sequence>
+ <xsd:attribute name="name" type="sdo:String"/>
+ <xsd:attribute name="many" type="sdo:Boolean"/>
+ <xsd:attribute name="containment" type="sdo:Boolean"/>
+ <xsd:attribute name="default" type="sdo:String"/>
+ <xsd:attribute name="readOnly" type="sdo:Boolean"/>
+ <xsd:attribute name="type" type="sdo:URI" sdoXML:propertyType="sdo:Type" />
+ <xsd:attribute name="opposite" type="sdo:URI" sdoXML:propertyType="sdo:Property" />
+ <xsd:anyAttribute namespace="##any" processContents="lax"/>
+</xsd:complexType>
+
+<!-- Special Types -->
+<xsd:complexType name="DataObject" abstract="true"/>
+
+<xsd:complexType name="TextType" abstract="true">
+ <xsd:sequence>
+ <xsd:element name="text" minOccurs="0" maxOccurs="unbounded" type="xsd:string"/>
+ </xsd:sequence>
+</xsd:complexType>
+
+<!-- ChangeSummaryType is defined in datagraph.xsd.
+ Although declared there as a ComplexType,
+ at the model level it is treated as a SimpleType
+ with a special XML serialization.
+-->
+
+
+<!-- Data Types -->
+<xsd:simpleType name="Boolean" sdoJava:instanceClass="boolean">
+ <xsd:restriction base="xsd:boolean"/>
+</xsd:simpleType>
+
+<xsd:simpleType name="Byte" sdoJava:instanceClass="byte">
+ <xsd:restriction base="xsd:byte"/>
+</xsd:simpleType>
+
+<xsd:simpleType name="Bytes" sdoJava:instanceClass="byte[]">
+ <xsd:restriction base="xsd:hexBinary"/>
+</xsd:simpleType>
+
+<xsd:simpleType name="Character" sdoJava:instanceClass="char">
+ <xsd:restriction base="xsd:string"/>
+</xsd:simpleType>
+
+<xsd:simpleType name="Date" sdoJava:instanceClass="java.util.Date">
+ <xsd:restriction base="xsd:dateTime"/>
+</xsd:simpleType>
+
+<xsd:simpleType name="DateTime" sdoJava:instanceClass="java.lang.String">
+ <xsd:restriction base="xsd:dateTime"/>
+</xsd:simpleType>
+
+<xsd:simpleType name="Day" sdoJava:instanceClass="java.lang.String">
+ <xsd:restriction base="xsd:gDay"/>
+</xsd:simpleType>
+
+<xsd:simpleType name="Decimal" sdoJava:instanceClass="java.math.BigDecimal">
+ <xsd:restriction base="xsd:decimal"/>
+</xsd:simpleType>
+
+<xsd:simpleType name="Double" sdoJava:instanceClass="double">
+ <xsd:restriction base="xsd:double"/>
+</xsd:simpleType>
+
+<xsd:simpleType name="Duration" sdoJava:instanceClass="java.lang.String">
+ <xsd:restriction base="xsd:duration"/>
+</xsd:simpleType>
+
+<xsd:simpleType name="Float" sdoJava:instanceClass="float">
+ <xsd:restriction base="xsd:float"/>
+</xsd:simpleType>
+
+<xsd:simpleType name="Int" sdoJava:instanceClass="int">
+ <xsd:restriction base="xsd:int"/>
+</xsd:simpleType>
+
+<xsd:simpleType name="Integer" sdoJava:instanceClass="java.math.BigInteger">
+ <xsd:restriction base="xsd:integer"/>
+</xsd:simpleType>
+
+<xsd:simpleType name="Long" sdoJava:instanceClass="long">
+ <xsd:restriction base="xsd:long"/>
+</xsd:simpleType>
+
+<xsd:simpleType name="Month" sdoJava:instanceClass="java.lang.String">
+ <xsd:restriction base="xsd:gMonth"/>
+</xsd:simpleType>
+
+<xsd:simpleType name="MonthDay" sdoJava:instanceClass="java.lang.String">
+ <xsd:restriction base="xsd:gMonthDay"/>
+</xsd:simpleType>
+
+<xsd:simpleType name="Object" sdoJava:instanceClass="java.lang.Object">
+ <!-- Only the schema for schemas is allowed to restrict anySimpleType.
+ <xsd:restriction base="xsd:anySimpleType"/>
+ The equivalent declaration is a union of the predefined XSD data types.
+ -->
+ <xsd:union memberTypes="xsd:anyURI xsd:base64Binary xsd:boolean xsd:byte
+ xsd:date xsd:dateTime xsd:decimal xsd:double xsd:duration xsd:ENTITIES xsd:ENTITY xsd:float
+ xsd:gDay xsd:gMonth xsd:gMonthDay xsd:gYear xsd:gYearMonth xsd:hexBinary xsd:ID xsd:IDREF xsd:IDREFS
+ xsd:int xsd:integer xsd:language xsd:long xsd:Name xsd:NCName xsd:negativeInteger
+ xsd:NMTOKEN xsd:NMTOKENS xsd:nonNegativeInteger xsd:nonPositiveInteger
+ xsd:normalizedString xsd:NOTATION xsd:positiveInteger xsd:QName xsd:short xsd:string
+ xsd:time xsd:token xsd:unsignedByte xsd:unsignedInt xsd:unsignedLong xsd:unsignedShort"/>
+</xsd:simpleType>
+
+<xsd:simpleType name="Short" sdoJava:instanceClass="short">
+ <xsd:restriction base="xsd:short"/>
+</xsd:simpleType>
+
+<xsd:simpleType name="String" sdoJava:instanceClass="java.lang.String">
+ <xsd:restriction base="xsd:string"/>
+</xsd:simpleType>
+
+<xsd:simpleType name="Strings" sdoJava:instanceClass="java.util.List">
+ <xsd:restriction base="xsd:string"/>
+</xsd:simpleType>
+
+<xsd:simpleType name="Time" sdoJava:instanceClass="java.lang.String">
+ <xsd:restriction base="xsd:time"/>
+</xsd:simpleType>
+
+<xsd:simpleType name="Year" sdoJava:instanceClass="java.lang.String">
+ <xsd:restriction base="xsd:gYear"/>
+</xsd:simpleType>
+
+<xsd:simpleType name="YearMonth" sdoJava:instanceClass="java.lang.String">
+ <xsd:restriction base="xsd:gYearMonth"/>
+</xsd:simpleType>
+
+<xsd:simpleType name="YearMonthDay" sdoJava:instanceClass="java.lang.String">
+ <xsd:restriction base="xsd:date"/>
+</xsd:simpleType>
+
+<xsd:simpleType name="URI" sdoJava:instanceClass="java.lang.String">
+ <xsd:restriction base="xsd:anyURI"/>
+</xsd:simpleType>
+
+</xsd:schema>
diff --git a/branches/sdo-java-M2/sdo-api/src/main/resources/xml/sdoXML.xml b/branches/sdo-java-M2/sdo-api/src/main/resources/xml/sdoXML.xml
new file mode 100644
index 0000000000..ac831576fb
--- /dev/null
+++ b/branches/sdo-java-M2/sdo-api/src/main/resources/xml/sdoXML.xml
@@ -0,0 +1,32 @@
+<?xml version="1.0" encoding="UTF-8"?>
+
+<!--
+/**
+ * <copyright>
+ *
+ * Service Data Objects
+ * Version 2.0
+ * Licensed Materials - Property of BEA and IBM
+ *
+ * (c) Copyright BEA Systems, Inc. and International Business Machines Corp 2005. All rights reserved.
+ *
+ * </copyright>
+ *
+ */
+-->
+
+<types xmlns="commonj.sdo"
+ xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+ xmlns:sdoXML="commonj.sdo/xml"
+ xsi:schemaLocation="commonj.sdo sdoModel.xsd commonj.sdo/java sdoJava.xsd commonj.sdo/xml sdoXML.xsd">
+
+<!--
+ XMLInfo declares properties used in open content for
+ the XML binding of SDO Types and Properties.
+-->
+
+ <type name="XMLInfo" uri="commonj.sdo/xml">
+ <property name="xmlElement" type="commonj.sdo#Boolean"/>
+ </type>
+
+</types>
diff --git a/branches/sdo-java-M2/sdo-api/src/main/resources/xml/sdoXML.xsd b/branches/sdo-java-M2/sdo-api/src/main/resources/xml/sdoXML.xsd
new file mode 100644
index 0000000000..88fc7daaf6
--- /dev/null
+++ b/branches/sdo-java-M2/sdo-api/src/main/resources/xml/sdoXML.xsd
@@ -0,0 +1,49 @@
+<?xml version="1.0" encoding="UTF-8"?>
+
+<!--
+/**
+ * <copyright>
+ *
+ * Service Data Objects
+ * Version 2.0
+ * Licensed Materials - Property of BEA and IBM
+ *
+ * (c) Copyright BEA Systems, Inc. and International Business Machines Corp 2005. All rights reserved.
+ *
+ * </copyright>
+ *
+ */
+-->
+
+<xsd:schema
+ targetNamespace="commonj.sdo/xml"
+ xmlns:sdo="commonj.sdo"
+ xmlns:sdoXML="commonj.sdo/xml"
+ xmlns:xsd="http://www.w3.org/2001/XMLSchema">
+
+<xsd:import namespace="commonj.sdo" schemaLocation="sdoModel.xsd"/>
+
+
+<!--
+ These attributes are used to customize the XSD mapping of SDO Types and Properties.
+-->
+
+<xsd:attribute name="name" type="xsd:string" />
+<xsd:attribute name="propertyType" type="xsd:QName" />
+<xsd:attribute name="oppositeProperty" type="xsd:string" />
+<xsd:attribute name="sequence" type="xsd:boolean" />
+<xsd:attribute name="string" type="xsd:boolean" />
+<xsd:attribute name="dataType" type="xsd:QName" />
+<xsd:attribute name="aliasName" type="xsd:string" />
+<xsd:attribute name="readOnly" type="xsd:boolean" />
+
+<!--
+ XMLInfo declares properties used in open content for
+ the XML binding of SDO Types and Properties.
+-->
+
+<xsd:complexType name="XMLInfo">
+ <xsd:attribute name="xmlElement" type="sdo:Boolean"/>
+</xsd:complexType>
+
+</xsd:schema>
diff --git a/branches/sdo-java-M2/sdo-api/src/test/java/commonj/sdo/impl/HelperProviderTestCase.java b/branches/sdo-java-M2/sdo-api/src/test/java/commonj/sdo/impl/HelperProviderTestCase.java
new file mode 100644
index 0000000000..8854e936b7
--- /dev/null
+++ b/branches/sdo-java-M2/sdo-api/src/test/java/commonj/sdo/impl/HelperProviderTestCase.java
@@ -0,0 +1,90 @@
+/**
+ *
+ * Copyright 2005 International Business Machines Corporation
+ *
+ * Licensed 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 commonj.sdo.impl;
+
+import java.net.URL;
+import java.net.URLClassLoader;
+
+import junit.framework.TestCase;
+import test.DefaultHelperProvider;
+import test.TCCL1HelperProvider;
+
+/**
+ * @version $Revision$ $Date$
+ */
+public class HelperProviderTestCase extends TestCase {
+ private URL classes;
+ private URL testClasses;
+ private URL def;
+ private URL tccl1;
+
+ public void testInstanceIsNullWithNoImplementation() throws Exception {
+ assertNull(HelperProvider.INSTANCE);
+ }
+
+ public void testDefaultInstance() throws Exception {
+ ClassLoader cl = new URLClassLoader(new URL[]{classes, def, testClasses}, null);
+ Class providerClass = cl.loadClass(HelperProvider.class.getName());
+ Class implClass = cl.loadClass(DefaultHelperProvider.class.getName());
+ Object instance = providerClass.getField("INSTANCE").get(null);
+ assertNotNull(instance);
+ assertEquals(implClass, instance.getClass());
+ }
+
+ public void testLocateFromClassLoader() throws Exception {
+ ClassLoader cl = new URLClassLoader(new URL[]{classes, tccl1, testClasses}, null);
+ Class providerClass = cl.loadClass(HelperProvider.class.getName());
+ Object provider = providerClass.getMethod("getInstance", new Class[] {ClassLoader.class})
+ .invoke(null, new Object[] {cl});
+ assertNotNull(provider);
+ assertEquals(TCCL1HelperProvider.class.getName(), provider.getClass().getName());
+ }
+
+ public void testThreadContextInstance() throws Exception {
+ ClassLoader cl = new URLClassLoader(new URL[]{classes, tccl1, testClasses}, null);
+ ClassLoader tccl = Thread.currentThread().getContextClassLoader();
+ try {
+ Thread.currentThread().setContextClassLoader(cl);
+ Class providerClass = cl.loadClass(HelperProvider.class.getName());
+ Object provider = providerClass.getMethod("getInstance", new Class[0]).invoke(null, new Object[0]);
+ assertNotNull(provider);
+ assertEquals(TCCL1HelperProvider.class.getName(), provider.getClass().getName());
+ } finally {
+ Thread.currentThread().setContextClassLoader(tccl);
+ }
+
+ }
+
+ public void testSystemProperty() {
+ System.setProperty("commonj.sdo.impl.HelperProvider", "test.TCCL1HelperProvider");
+ try {
+ HelperProvider provider = HelperProvider.getInstance();
+ assertNotNull(provider);
+ assertEquals(TCCL1HelperProvider.class, provider.getClass());
+ } finally {
+ System.getProperties().remove("commonj.sdo.impl.HelperProvider");
+ }
+ }
+
+ protected void setUp() throws Exception {
+ super.setUp();
+ classes = new URL(HelperProvider.class.getResource("HelperProvider.class"), "../../..");
+ testClasses = new URL(HelperProviderTestCase.class.getResource("HelperProviderTestCase.class"), "../../..");
+ tccl1 = new URL(testClasses, "tccl1/");
+ def = new URL(testClasses, "default/");
+ }
+}
diff --git a/branches/sdo-java-M2/sdo-api/src/test/java/test/DefaultHelperProvider.java b/branches/sdo-java-M2/sdo-api/src/test/java/test/DefaultHelperProvider.java
new file mode 100644
index 0000000000..77d6206972
--- /dev/null
+++ b/branches/sdo-java-M2/sdo-api/src/test/java/test/DefaultHelperProvider.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 test;
+
+import commonj.sdo.impl.HelperProvider;
+import commonj.sdo.impl.ExternalizableDelegator;
+import commonj.sdo.helper.CopyHelper;
+import commonj.sdo.helper.DataFactory;
+import commonj.sdo.helper.DataHelper;
+import commonj.sdo.helper.EqualityHelper;
+import commonj.sdo.helper.TypeHelper;
+import commonj.sdo.helper.XMLHelper;
+import commonj.sdo.helper.XSDHelper;
+
+/**
+ * @version $Revision$ $Date$
+ */
+public class DefaultHelperProvider extends HelperProvider {
+ public CopyHelper copyHelper() {
+ throw new UnsupportedOperationException();
+ }
+
+ public DataFactory dataFactory() {
+ throw new UnsupportedOperationException();
+ }
+
+ public DataHelper dataHelper() {
+ throw new UnsupportedOperationException();
+ }
+
+ public EqualityHelper equalityHelper() {
+ throw new UnsupportedOperationException();
+ }
+
+ public TypeHelper typeHelper() {
+ throw new UnsupportedOperationException();
+ }
+
+ public XMLHelper xmlHelper() {
+ throw new UnsupportedOperationException();
+ }
+
+ public XSDHelper xsdHelper() {
+ throw new UnsupportedOperationException();
+ }
+
+ public ExternalizableDelegator.Resolvable resolvable() {
+ throw new UnsupportedOperationException();
+ }
+
+ public ExternalizableDelegator.Resolvable resolvable(Object target) {
+ throw new UnsupportedOperationException();
+ }
+}
diff --git a/branches/sdo-java-M2/sdo-api/src/test/java/test/TCCL1HelperProvider.java b/branches/sdo-java-M2/sdo-api/src/test/java/test/TCCL1HelperProvider.java
new file mode 100644
index 0000000000..05b1b04925
--- /dev/null
+++ b/branches/sdo-java-M2/sdo-api/src/test/java/test/TCCL1HelperProvider.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 test;
+
+import commonj.sdo.impl.HelperProvider;
+import commonj.sdo.impl.ExternalizableDelegator;
+import commonj.sdo.helper.CopyHelper;
+import commonj.sdo.helper.DataFactory;
+import commonj.sdo.helper.DataHelper;
+import commonj.sdo.helper.EqualityHelper;
+import commonj.sdo.helper.TypeHelper;
+import commonj.sdo.helper.XMLHelper;
+import commonj.sdo.helper.XSDHelper;
+
+/**
+ * @version $Revision$ $Date$
+ */
+public class TCCL1HelperProvider extends HelperProvider {
+ public CopyHelper copyHelper() {
+ throw new UnsupportedOperationException();
+ }
+
+ public DataFactory dataFactory() {
+ throw new UnsupportedOperationException();
+ }
+
+ public DataHelper dataHelper() {
+ throw new UnsupportedOperationException();
+ }
+
+ public EqualityHelper equalityHelper() {
+ throw new UnsupportedOperationException();
+ }
+
+ public TypeHelper typeHelper() {
+ throw new UnsupportedOperationException();
+ }
+
+ public XMLHelper xmlHelper() {
+ throw new UnsupportedOperationException();
+ }
+
+ public XSDHelper xsdHelper() {
+ throw new UnsupportedOperationException();
+ }
+
+ public ExternalizableDelegator.Resolvable resolvable() {
+ throw new UnsupportedOperationException();
+ }
+
+ public ExternalizableDelegator.Resolvable resolvable(Object target) {
+ throw new UnsupportedOperationException();
+ }
+}
diff --git a/branches/sdo-java-M2/sdo-api/src/test/resources/default/META-INF/services/commonj.sdo.impl.HelperProvider b/branches/sdo-java-M2/sdo-api/src/test/resources/default/META-INF/services/commonj.sdo.impl.HelperProvider
new file mode 100644
index 0000000000..5175e5abea
--- /dev/null
+++ b/branches/sdo-java-M2/sdo-api/src/test/resources/default/META-INF/services/commonj.sdo.impl.HelperProvider
@@ -0,0 +1,3 @@
+# test comment and blank line
+
+ test.DefaultHelperProvider # comment
diff --git a/branches/sdo-java-M2/sdo-api/src/test/resources/tccl1/META-INF/services/commonj.sdo.impl.HelperProvider b/branches/sdo-java-M2/sdo-api/src/test/resources/tccl1/META-INF/services/commonj.sdo.impl.HelperProvider
new file mode 100644
index 0000000000..fa88e4c705
--- /dev/null
+++ b/branches/sdo-java-M2/sdo-api/src/test/resources/tccl1/META-INF/services/commonj.sdo.impl.HelperProvider
@@ -0,0 +1 @@
+test.TCCL1HelperProvider
diff --git a/branches/sdo-java-M2/sdo/BUILDING.txt b/branches/sdo-java-M2/sdo/BUILDING.txt
new file mode 100644
index 0000000000..d8621aefe9
--- /dev/null
+++ b/branches/sdo-java-M2/sdo/BUILDING.txt
@@ -0,0 +1,48 @@
+Building SDO Releases
+=====================
+The SDO specification source distribution and the SDO implementation source distribution
+together with a computer with a live internet connection, maven 2.0.4 installed and java 1.4.2
+or above installed are all you need to build
+1) the SDO binary distribution
+2) the SDO samples source distribution (note that the source distribution is a derivative of
+the binary distribution, since it ships with javadoc, which is generated by the binary distribution)
+
+Building the SDO Java Implementation Project Binary Release from the source distribution
+========================================================================================
+(note, these instructions are for building the SDO binary release from
+source, not for establishing a development environment. If you wish to
+participate in sdo development, follow the instructions at
+http://incubator.apache.org/tuscany/java_sdo_overview.html
+
+Building
+--------
+1) Download the corresponding SDO specification source distribution from http://incubator.apache.org/tuscany
+2) Execute the instructions in that archive for building the SDO specification component
+Note: following this step you will have maven installed, and a Java JDK at level 1.4.2 or above installed.
+3) If you have chosen to install a JDK at level 5 then all will be fine, but there is one value add component in the
+ Tuscany SDO implementation which relies on new JDK 5.0 features. If you do not wish to use JDK 5 for the following
+ build step, then you will need to delete the file
+ sdo/tools/src/main/java/org/apache/tuscany/sdo/generate/Interface2JavaGenerator.java before proceding
+4) Change to the top level directory of the Tuscany SDO Java Implementation project (sdo) of this source distribution.
+6) Execute: mvn
+ This will install the sdo implementation jar in you local repository
+5) Execute: mvn package javadoc:javadoc assembly:assembly
+ This will build the Tuscany SDO for Java binary distribution artefacts in the sdo/distribution/target
+ directory.
+
+Note: Depending on the load being experienced by remote Maven 2.0 repositories you may have to execute mvn several
+ times until required dependencies are all located in your local maven repository. After you have completed a
+ full successful build you can use "mvn -o" which is much faster.
+
+6) To run the sample programs, change directory to the "sample" directory, and run the command "mvn". Then look in the sample/target/site/apidocs/index.html file for javadoc that describes how to run the samples.
+
+
+Building the SDO Samples Source distribution
+============================================
+
+To build the SDO Samples source distribution
+1) copy the sdo/sample directory from the SDO implementation source distribution to a temporary folder
+2) Build the SDO binary distribution as instructed above
+3) From the top level directory of your SDO implementation build tree change directory to the sample directory and execute the command mvn javadoc:javadoc to create javadoc for the samples in the target/site directory
+4) copy the site folder to the temporary directory created for step 1
+4) create .zip and .tar.gz archives of the sample source and javadoc \ No newline at end of file
diff --git a/branches/sdo-java-M2/sdo/LICENSE.txt b/branches/sdo-java-M2/sdo/LICENSE.txt
new file mode 100644
index 0000000000..517cda22ca
--- /dev/null
+++ b/branches/sdo-java-M2/sdo/LICENSE.txt
@@ -0,0 +1,416 @@
+
+ Apache License
+ Version 2.0, January 2004
+ http://www.apache.org/licenses/
+
+ TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION
+
+ 1. Definitions.
+
+ "License" shall mean the terms and conditions for use, reproduction,
+ and distribution as defined by Sections 1 through 9 of this document.
+
+ "Licensor" shall mean the copyright owner or entity authorized by
+ the copyright owner that is granting the License.
+
+ "Legal Entity" shall mean the union of the acting entity and all
+ other entities that control, are controlled by, or are under common
+ control with that entity. For the purposes of this definition,
+ "control" means (i) the power, direct or indirect, to cause the
+ direction or management of such entity, whether by contract or
+ otherwise, or (ii) ownership of fifty percent (50%) or more of the
+ outstanding shares, or (iii) beneficial ownership of such entity.
+
+ "You" (or "Your") shall mean an individual or Legal Entity
+ exercising permissions granted by this License.
+
+ "Source" form shall mean the preferred form for making modifications,
+ including but not limited to software source code, documentation
+ source, and configuration files.
+
+ "Object" form shall mean any form resulting from mechanical
+ transformation or translation of a Source form, including but
+ not limited to compiled object code, generated documentation,
+ and conversions to other media types.
+
+ "Work" shall mean the work of authorship, whether in Source or
+ Object form, made available under the License, as indicated by a
+ copyright notice that is included in or attached to the work
+ (an example is provided in the Appendix below).
+
+ "Derivative Works" shall mean any work, whether in Source or Object
+ form, that is based on (or derived from) the Work and for which the
+ editorial revisions, annotations, elaborations, or other modifications
+ represent, as a whole, an original work of authorship. For the purposes
+ of this License, Derivative Works shall not include works that remain
+ separable from, or merely link (or bind by name) to the interfaces of,
+ the Work and Derivative Works thereof.
+
+ "Contribution" shall mean any work of authorship, including
+ the original version of the Work and any modifications or additions
+ to that Work or Derivative Works thereof, that is intentionally
+ submitted to Licensor for inclusion in the Work by the copyright owner
+ or by an individual or Legal Entity authorized to submit on behalf of
+ the copyright owner. For the purposes of this definition, "submitted"
+ means any form of electronic, verbal, or written communication sent
+ to the Licensor or its representatives, including but not limited to
+ communication on electronic mailing lists, source code control systems,
+ and issue tracking systems that are managed by, or on behalf of, the
+ Licensor for the purpose of discussing and improving the Work, but
+ excluding communication that is conspicuously marked or otherwise
+ designated in writing by the copyright owner as "Not a Contribution."
+
+ "Contributor" shall mean Licensor and any individual or Legal Entity
+ on behalf of whom a Contribution has been received by Licensor and
+ subsequently incorporated within the Work.
+
+ 2. Grant of Copyright License. Subject to the terms and conditions of
+ this License, each Contributor hereby grants to You a perpetual,
+ worldwide, non-exclusive, no-charge, royalty-free, irrevocable
+ copyright license to reproduce, prepare Derivative Works of,
+ publicly display, publicly perform, sublicense, and distribute the
+ Work and such Derivative Works in Source or Object form.
+
+ 3. Grant of Patent License. Subject to the terms and conditions of
+ this License, each Contributor hereby grants to You a perpetual,
+ worldwide, non-exclusive, no-charge, royalty-free, irrevocable
+ (except as stated in this section) patent license to make, have made,
+ use, offer to sell, sell, import, and otherwise transfer the Work,
+ where such license applies only to those patent claims licensable
+ by such Contributor that are necessarily infringed by their
+ Contribution(s) alone or by combination of their Contribution(s)
+ with the Work to which such Contribution(s) was submitted. If You
+ institute patent litigation against any entity (including a
+ cross-claim or counterclaim in a lawsuit) alleging that the Work
+ or a Contribution incorporated within the Work constitutes direct
+ or contributory patent infringement, then any patent licenses
+ granted to You under this License for that Work shall terminate
+ as of the date such litigation is filed.
+
+ 4. Redistribution. You may reproduce and distribute copies of the
+ Work or Derivative Works thereof in any medium, with or without
+ modifications, and in Source or Object form, provided that You
+ meet the following conditions:
+
+ (a) You must give any other recipients of the Work or
+ Derivative Works a copy of this License; and
+
+ (b) You must cause any modified files to carry prominent notices
+ stating that You changed the files; and
+
+ (c) You must retain, in the Source form of any Derivative Works
+ that You distribute, all copyright, patent, trademark, and
+ attribution notices from the Source form of the Work,
+ excluding those notices that do not pertain to any part of
+ the Derivative Works; and
+
+ (d) If the Work includes a "NOTICE" text file as part of its
+ distribution, then any Derivative Works that You distribute must
+ include a readable copy of the attribution notices contained
+ within such NOTICE file, excluding those notices that do not
+ pertain to any part of the Derivative Works, in at least one
+ of the following places: within a NOTICE text file distributed
+ as part of the Derivative Works; within the Source form or
+ documentation, if provided along with the Derivative Works; or,
+ within a display generated by the Derivative Works, if and
+ wherever such third-party notices normally appear. The contents
+ of the NOTICE file are for informational purposes only and
+ do not modify the License. You may add Your own attribution
+ notices within Derivative Works that You distribute, alongside
+ or as an addendum to the NOTICE text from the Work, provided
+ that such additional attribution notices cannot be construed
+ as modifying the License.
+
+ You may add Your own copyright statement to Your modifications and
+ may provide additional or different license terms and conditions
+ for use, reproduction, or distribution of Your modifications, or
+ for any such Derivative Works as a whole, provided Your use,
+ reproduction, and distribution of the Work otherwise complies with
+ the conditions stated in this License.
+
+ 5. Submission of Contributions. Unless You explicitly state otherwise,
+ any Contribution intentionally submitted for inclusion in the Work
+ by You to the Licensor shall be under the terms and conditions of
+ this License, without any additional terms or conditions.
+ Notwithstanding the above, nothing herein shall supersede or modify
+ the terms of any separate license agreement you may have executed
+ with Licensor regarding such Contributions.
+
+ 6. Trademarks. This License does not grant permission to use the trade
+ names, trademarks, service marks, or product names of the Licensor,
+ except as required for reasonable and customary use in describing the
+ origin of the Work and reproducing the content of the NOTICE file.
+
+ 7. Disclaimer of Warranty. Unless required by applicable law or
+ agreed to in writing, Licensor provides the Work (and each
+ Contributor provides its Contributions) on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
+ implied, including, without limitation, any warranties or conditions
+ of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A
+ PARTICULAR PURPOSE. You are solely responsible for determining the
+ appropriateness of using or redistributing the Work and assume any
+ risks associated with Your exercise of permissions under this License.
+
+ 8. Limitation of Liability. In no event and under no legal theory,
+ whether in tort (including negligence), contract, or otherwise,
+ unless required by applicable law (such as deliberate and grossly
+ negligent acts) or agreed to in writing, shall any Contributor be
+ liable to You for damages, including any direct, indirect, special,
+ incidental, or consequential damages of any character arising as a
+ result of this License or out of the use or inability to use the
+ Work (including but not limited to damages for loss of goodwill,
+ work stoppage, computer failure or malfunction, or any and all
+ other commercial damages or losses), even if such Contributor
+ has been advised of the possibility of such damages.
+
+ 9. Accepting Warranty or Additional Liability. While redistributing
+ the Work or Derivative Works thereof, You may choose to offer,
+ and charge a fee for, acceptance of support, warranty, indemnity,
+ or other liability obligations and/or rights consistent with this
+ License. However, in accepting such obligations, You may act only
+ on Your own behalf and on Your sole responsibility, not on behalf
+ of any other Contributor, and only if You agree to indemnify,
+ defend, and hold each Contributor harmless for any liability
+ incurred by, or claims asserted against, such Contributor by reason
+ of your accepting any such warranty or additional liability.
+
+ END OF TERMS AND CONDITIONS
+
+ APPENDIX: How to apply the Apache License to your work.
+
+ To apply the Apache License to your work, attach the following
+ boilerplate notice, with the fields enclosed by brackets "[]"
+ replaced with your own identifying information. (Don't include
+ the brackets!) The text should be enclosed in the appropriate
+ comment syntax for the file format. We also recommend that a
+ file or class name and description of purpose be included on the
+ same "printed page" as the copyright notice for easier
+ identification within third-party archives.
+
+ Copyright [yyyy] [name of copyright owner]
+
+ Licensed 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.
+
+===============================================================================================================
+
+
+License for the Service Data Objects JavaDoc and Interface Definition files.
+
+Permission to copy, make derivative works of, and distribute the Service Data Objects
+JavaDoc and Interface Definition Files files in any medium without fee or royalty as part
+of a compliant implementation of the Service Data Objects Specification is hereby granted.
+The Service Data Objects Specification may be found at any of the following locations:
+
+http://dev2dev.bea.com/technologies/commonj/index.jsp
+http://www.ibm.com/developerworks/library/specification/ws-sdo/
+http://oracle.com/technology/webservices/sca
+https://www.sdn.sap.com/
+http://www.xcalia/xdn/specs/sdo
+
+THE SERVICE DATA OBJECTS SPECIFICATION AND THE JAVADOC AND INTERFACE DEFINITION FILES
+ARE PROVIDED "AS IS," AND THE AUTHORS MAKE NO REPRESENTATIONS OR WARRANTIES, EXPRESS OR IMPLIED, REGARDING THIS
+SPECIFICATION OR THE JAVADOC AND INTERFACE DEFINITION FILES AND THE IMPLEMENTATION OF THEIR CONTENTS,
+INCLUDING, BUT NOT LIMITED TO, WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE,
+NON-INFRINGEMENT OR TITLE. THE AUTHORS WILL NOT BE LIABLE FOR ANY DIRECT, INDIRECT, SPECIAL,
+INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF OR RELATING TO ANY USE OR DISTRIBUTION OF THE
+SERVICE DATA OBJECTS SPECIFICATION OR THE JAVADOC OR INTERFACE DEFINTION FILES.
+
+The name and trademarks of the Authors may NOT be used in any manner, including advertising or
+publicity pertaining to the Service Component Architecture Specification or its contents without specific,
+written prior permission. Title to copyright in the Service Data Objects Specification and the
+JavaDoc and Interface Definition Files will at all times remain with the Authors.
+
+No other rights are granted by implication, estoppel or otherwise.
+
+=================================================================================================================
+Eclipse Public License - v 1.0
+
+THE ACCOMPANYING PROGRAM IS PROVIDED UNDER THE TERMS OF THIS ECLIPSE PUBLIC LICENSE ("AGREEMENT"). ANY USE, REPRODUCTION OR DISTRIBUTION OF THE PROGRAM CONSTITUTES RECIPIENT'S ACCEPTANCE OF THIS AGREEMENT.
+
+1. DEFINITIONS
+
+"Contribution" means:
+
+a) in the case of the initial Contributor, the initial code and documentation distributed under this Agreement, and
+b) in the case of each subsequent Contributor:
+
+i) changes to the Program, and
+
+ii) additions to the Program;
+
+where such changes and/or additions to the Program originate from and are distributed by that particular Contributor. A Contribution 'originates' from a Contributor if it was added to the Program by such Contributor itself or anyone acting on such Contributor's behalf. Contributions do not include additions to the Program which: (i) are separate modules of software distributed in conjunction with the Program under their own license agreement, and (ii) are not derivative works of the Program.
+
+"Contributor" means any person or entity that distributes the Program.
+
+"Licensed Patents " mean patent claims licensable by a Contributor which are necessarily infringed by the use or sale of its Contribution alone or when combined with the Program.
+
+"Program" means the Contributions distributed in accordance with this Agreement.
+
+"Recipient" means anyone who receives the Program under this Agreement, including all Contributors.
+
+2. GRANT OF RIGHTS
+
+a) Subject to the terms of this Agreement, each Contributor hereby grants Recipient a non-exclusive, worldwide, royalty-free copyright license to reproduce, prepare derivative works of, publicly display, publicly perform, distribute and sublicense the Contribution of such Contributor, if any, and such derivative works, in source code and object code form.
+
+b) Subject to the terms of this Agreement, each Contributor hereby grants Recipient a non-exclusive, worldwide, royalty-free patent license under Licensed Patents to make, use, sell, offer to sell, import and otherwise transfer the Contribution of such Contributor, if any, in source code and object code form. This patent license shall apply to the combination of the Contribution and the Program if, at the time the Contribution is added by the Contributor, such addition of the Contribution causes such combination to be covered by the Licensed Patents. The patent license shall not apply to any other combinations which include the Contribution. No hardware per se is licensed hereunder.
+
+c) Recipient understands that although each Contributor grants the licenses to its Contributions set forth herein, no assurances are provided by any Contributor that the Program does not infringe the patent or other intellectual property rights of any other entity. Each Contributor disclaims any liability to Recipient for claims brought by any other entity based on infringement of intellectual property rights or otherwise. As a condition to exercising the rights and licenses granted hereunder, each Recipient hereby assumes sole responsibility to secure any other intellectual property rights needed, if any. For example, if a third party patent license is required to allow Recipient to distribute the Program, it is Recipient's responsibility to acquire that license before distributing the Program.
+
+d) Each Contributor represents that to its knowledge it has sufficient copyright rights in its Contribution, if any, to grant the copyright license set forth in this Agreement.
+
+3. REQUIREMENTS
+
+A Contributor may choose to distribute the Program in object code form under its own license agreement, provided that:
+
+a) it complies with the terms and conditions of this Agreement; and
+
+b) its license agreement:
+
+i) effectively disclaims on behalf of all Contributors all warranties and conditions, express and implied, including warranties or conditions of title and non-infringement, and implied warranties or conditions of merchantability and fitness for a particular purpose;
+
+ii) effectively excludes on behalf of all Contributors all liability for damages, including direct, indirect, special, incidental and consequential damages, such as lost profits;
+
+iii) states that any provisions which differ from this Agreement are offered by that Contributor alone and not by any other party; and
+
+iv) states that source code for the Program is available from such Contributor, and informs licensees how to obtain it in a reasonable manner on or through a medium customarily used for software exchange.
+
+When the Program is made available in source code form:
+
+a) it must be made available under this Agreement; and
+
+b) a copy of this Agreement must be included with each copy of the Program.
+
+Contributors may not remove or alter any copyright notices contained within the Program.
+
+Each Contributor must identify itself as the originator of its Contribution, if any, in a manner that reasonably allows subsequent Recipients to identify the originator of the Contribution.
+
+4. COMMERCIAL DISTRIBUTION
+
+Commercial distributors of software may accept certain responsibilities with respect to end users, business partners and the like. While this license is intended to facilitate the commercial use of the Program, the Contributor who includes the Program in a commercial product offering should do so in a manner which does not create potential liability for other Contributors. Therefore, if a Contributor includes the Program in a commercial product offering, such Contributor ("Commercial Contributor") hereby agrees to defend and indemnify every other Contributor ("Indemnified Contributor") against any losses, damages and costs (collectively "Losses") arising from claims, lawsuits and other legal actions brought by a third party against the Indemnified Contributor to the extent caused by the acts or omissions of such Commercial Contributor in connection with its distribution of the Program in a commercial product offering. The obligations in this section do not apply to any claims or Losses relating to any actual or alleged intellectual property infringement. In order to qualify, an Indemnified Contributor must: a) promptly notify the Commercial Contributor in writing of such claim, and b) allow the Commercial Contributor to control, and cooperate with the Commercial Contributor in, the defense and any related settlement negotiations. The Indemnified Contributor may participate in any such claim at its own expense.
+
+For example, a Contributor might include the Program in a commercial product offering, Product X. That Contributor is then a Commercial Contributor. If that Commercial Contributor then makes performance claims, or offers warranties related to Product X, those performance claims and warranties are such Commercial Contributor's responsibility alone. Under this section, the Commercial Contributor would have to defend claims against the other Contributors related to those performance claims and warranties, and if a court requires any other Contributor to pay any damages as a result, the Commercial Contributor must pay those damages.
+
+5. NO WARRANTY
+
+EXCEPT AS EXPRESSLY SET FORTH IN THIS AGREEMENT, THE PROGRAM IS PROVIDED ON AN "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED INCLUDING, WITHOUT LIMITATION, ANY WARRANTIES OR CONDITIONS OF TITLE, NON-INFRINGEMENT, MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE. Each Recipient is solely responsible for determining the appropriateness of using and distributing the Program and assumes all risks associated with its exercise of rights under this Agreement , including but not limited to the risks and costs of program errors, compliance with applicable laws, damage to or loss of data, programs or equipment, and unavailability or interruption of operations.
+
+6. DISCLAIMER OF LIABILITY
+
+EXCEPT AS EXPRESSLY SET FORTH IN THIS AGREEMENT, NEITHER RECIPIENT NOR ANY CONTRIBUTORS SHALL HAVE ANY LIABILITY FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING WITHOUT LIMITATION LOST PROFITS), HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OR DISTRIBUTION OF THE PROGRAM OR THE EXERCISE OF ANY RIGHTS GRANTED HEREUNDER, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGES.
+
+7. GENERAL
+
+If any provision of this Agreement is invalid or unenforceable under applicable law, it shall not affect the validity or enforceability of the remainder of the terms of this Agreement, and without further action by the parties hereto, such provision shall be reformed to the minimum extent necessary to make such provision valid and enforceable.
+
+If Recipient institutes patent litigation against any entity (including a cross-claim or counterclaim in a lawsuit) alleging that the Program itself (excluding combinations of the Program with other software or hardware) infringes such Recipient's patent(s), then such Recipient's rights granted under Section 2(b) shall terminate as of the date such litigation is filed.
+
+All Recipient's rights under this Agreement shall terminate if it fails to comply with any of the material terms or conditions of this Agreement and does not cure such failure in a reasonable period of time after becoming aware of such noncompliance. If all Recipient's rights under this Agreement terminate, Recipient agrees to cease use and distribution of the Program as soon as reasonably practicable. However, Recipient's obligations under this Agreement and any licenses granted by Recipient relating to the Program shall continue and survive.
+
+Everyone is permitted to copy and distribute copies of this Agreement, but in order to avoid inconsistency the Agreement is copyrighted and may only be modified in the following manner. The Agreement Steward reserves the right to publish new versions (including revisions) of this Agreement from time to time. No one other than the Agreement Steward has the right to modify this Agreement. The Eclipse Foundation is the initial Agreement Steward. The Eclipse Foundation may assign the responsibility to serve as the Agreement Steward to a suitable separate entity. Each new version of the Agreement will be given a distinguishing version number. The Program (including Contributions) may always be distributed subject to the version of the Agreement under which it was received. In addition, after a new version of the Agreement is published, Contributor may elect to distribute the Program (including its Contributions) under the new version. Except as expressly stated in Sections 2(a) and 2(b) above, Recipient receives no rights or licenses to the intellectual property of any Contributor under this Agreement, whether expressly, by implication, estoppel or otherwise. All rights in the Program not expressly granted under this Agreement are reserved.
+
+This Agreement is governed by the laws of the State of New York and the intellectual property laws of the United States of America. No party to this Agreement will bring a legal action under this Agreement more than one year after the cause of action arose. Each party waives its rights to a jury trial in any resulting litigation.
+
+===================================================================================================
+
+Common Public License - v 1.0
+
+THE ACCOMPANYING PROGRAM IS PROVIDED UNDER THE TERMS OF THIS COMMON PUBLIC LICENSE ("AGREEMENT"). ANY USE, REPRODUCTION OR DISTRIBUTION OF THE PROGRAM CONSTITUTES RECIPIENT'S ACCEPTANCE OF THIS AGREEMENT.
+
+1. DEFINITIONS
+
+"Contribution" means:
+
+ a) in the case of the initial Contributor, the initial code and documentation distributed under this Agreement, and
+ b) in the case of each subsequent Contributor:
+
+ i) changes to the Program, and
+
+ ii) additions to the Program;
+
+ where such changes and/or additions to the Program originate from and are distributed by that particular Contributor. A Contribution 'originates' from a Contributor if it was added to the Program by such Contributor itself or anyone acting on such Contributor's behalf. Contributions do not include additions to the Program which: (i) are separate modules of software distributed in conjunction with the Program under their own license agreement, and (ii) are not derivative works of the Program.
+
+"Contributor" means any person or entity that distributes the Program.
+
+"Licensed Patents " mean patent claims licensable by a Contributor which are necessarily infringed by the use or sale of its Contribution alone or when combined with the Program.
+
+"Program" means the Contributions distributed in accordance with this Agreement.
+
+"Recipient" means anyone who receives the Program under this Agreement, including all Contributors.
+
+2. GRANT OF RIGHTS
+
+ a) Subject to the terms of this Agreement, each Contributor hereby grants Recipient a non-exclusive, worldwide, royalty-free copyright license to reproduce, prepare derivative works of, publicly display, publicly perform, distribute and sublicense the Contribution of such Contributor, if any, and such derivative works, in source code and object code form.
+
+ b) Subject to the terms of this Agreement, each Contributor hereby grants Recipient a non-exclusive, worldwide, royalty-free patent license under Licensed Patents to make, use, sell, offer to sell, import and otherwise transfer the Contribution of such Contributor, if any, in source code and object code form. This patent license shall apply to the combination of the Contribution and the Program if, at the time the Contribution is added by the Contributor, such addition of the Contribution causes such combination to be covered by the Licensed Patents. The patent license shall not apply to any other combinations which include the Contribution. No hardware per se is licensed hereunder.
+
+ c) Recipient understands that although each Contributor grants the licenses to its Contributions set forth herein, no assurances are provided by any Contributor that the Program does not infringe the patent or other intellectual property rights of any other entity. Each Contributor disclaims any liability to Recipient for claims brought by any other entity based on infringement of intellectual property rights or otherwise. As a condition to exercising the rights and licenses granted hereunder, each Recipient hereby assumes sole responsibility to secure any other intellectual property rights needed, if any. For example, if a third party patent license is required to allow Recipient to distribute the Program, it is Recipient's responsibility to acquire that license before distributing the Program.
+
+ d) Each Contributor represents that to its knowledge it has sufficient copyright rights in its Contribution, if any, to grant the copyright license set forth in this Agreement.
+
+3. REQUIREMENTS
+
+A Contributor may choose to distribute the Program in object code form under its own license agreement, provided that:
+
+ a) it complies with the terms and conditions of this Agreement; and
+
+ b) its license agreement:
+
+ i) effectively disclaims on behalf of all Contributors all warranties and conditions, express and implied, including warranties or conditions of title and non-infringement, and implied warranties or conditions of merchantability and fitness for a particular purpose;
+
+ ii) effectively excludes on behalf of all Contributors all liability for damages, including direct, indirect, special, incidental and consequential damages, such as lost profits;
+
+ iii) states that any provisions which differ from this Agreement are offered by that Contributor alone and not by any other party; and
+
+ iv) states that source code for the Program is available from such Contributor, and informs licensees how to obtain it in a reasonable manner on or through a medium customarily used for software exchange.
+
+When the Program is made available in source code form:
+
+ a) it must be made available under this Agreement; and
+
+ b) a copy of this Agreement must be included with each copy of the Program.
+
+Contributors may not remove or alter any copyright notices contained within the Program.
+
+Each Contributor must identify itself as the originator of its Contribution, if any, in a manner that reasonably allows subsequent Recipients to identify the originator of the Contribution.
+
+4. COMMERCIAL DISTRIBUTION
+
+Commercial distributors of software may accept certain responsibilities with respect to end users, business partners and the like. While this license is intended to facilitate the commercial use of the Program, the Contributor who includes the Program in a commercial product offering should do so in a manner which does not create potential liability for other Contributors. Therefore, if a Contributor includes the Program in a commercial product offering, such Contributor ("Commercial Contributor") hereby agrees to defend and indemnify every other Contributor ("Indemnified Contributor") against any losses, damages and costs (collectively "Losses") arising from claims, lawsuits and other legal actions brought by a third party against the Indemnified Contributor to the extent caused by the acts or omissions of such Commercial Contributor in connection with its distribution of the Program in a commercial product offering. The obligations in this section do not apply to any claims or Losses relating to any actual or alleged intellectual property infringement. In order to qualify, an Indemnified Contributor must: a) promptly notify the Commercial Contributor in writing of such claim, and b) allow the Commercial Contributor to control, and cooperate with the Commercial Contributor in, the defense and any related settlement negotiations. The Indemnified Contributor may participate in any such claim at its own expense.
+
+For example, a Contributor might include the Program in a commercial product offering, Product X. That Contributor is then a Commercial Contributor. If that Commercial Contributor then makes performance claims, or offers warranties related to Product X, those performance claims and warranties are such Commercial Contributor's responsibility alone. Under this section, the Commercial Contributor would have to defend claims against the other Contributors related to those performance claims and warranties, and if a court requires any other Contributor to pay any damages as a result, the Commercial Contributor must pay those damages.
+
+5. NO WARRANTY
+
+EXCEPT AS EXPRESSLY SET FORTH IN THIS AGREEMENT, THE PROGRAM IS PROVIDED ON AN "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED INCLUDING, WITHOUT LIMITATION, ANY WARRANTIES OR CONDITIONS OF TITLE, NON-INFRINGEMENT, MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE. Each Recipient is solely responsible for determining the appropriateness of using and distributing the Program and assumes all risks associated with its exercise of rights under this Agreement, including but not limited to the risks and costs of program errors, compliance with applicable laws, damage to or loss of data, programs or equipment, and unavailability or interruption of operations.
+
+6. DISCLAIMER OF LIABILITY
+
+EXCEPT AS EXPRESSLY SET FORTH IN THIS AGREEMENT, NEITHER RECIPIENT NOR ANY CONTRIBUTORS SHALL HAVE ANY LIABILITY FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING WITHOUT LIMITATION LOST PROFITS), HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OR DISTRIBUTION OF THE PROGRAM OR THE EXERCISE OF ANY RIGHTS GRANTED HEREUNDER, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGES.
+
+7. GENERAL
+
+If any provision of this Agreement is invalid or unenforceable under applicable law, it shall not affect the validity or enforceability of the remainder of the terms of this Agreement, and without further action by the parties hereto, such provision shall be reformed to the minimum extent necessary to make such provision valid and enforceable.
+
+If Recipient institutes patent litigation against a Contributor with respect to a patent applicable to software (including a cross-claim or counterclaim in a lawsuit), then any patent licenses granted by that Contributor to such Recipient under this Agreement shall terminate as of the date such litigation is filed. In addition, if Recipient institutes patent litigation against any entity (including a cross-claim or counterclaim in a lawsuit) alleging that the Program itself (excluding combinations of the Program with other software or hardware) infringes such Recipient's patent(s), then such Recipient's rights granted under Section 2(b) shall terminate as of the date such litigation is filed.
+
+All Recipient's rights under this Agreement shall terminate if it fails to comply with any of the material terms or conditions of this Agreement and does not cure such failure in a reasonable period of time after becoming aware of such noncompliance. If all Recipient's rights under this Agreement terminate, Recipient agrees to cease use and distribution of the Program as soon as reasonably practicable. However, Recipient's obligations under this Agreement and any licenses granted by Recipient relating to the Program shall continue and survive.
+
+Everyone is permitted to copy and distribute copies of this Agreement, but in order to avoid inconsistency the Agreement is copyrighted and may only be modified in the following manner. The Agreement Steward reserves the right to publish new versions (including revisions) of this Agreement from time to time. No one other than the Agreement Steward has the right to modify this Agreement. IBM is the initial Agreement Steward. IBM may assign the responsibility to serve as the Agreement Steward to a suitable separate entity. Each new version of the Agreement will be given a distinguishing version number. The Program (including Contributions) may always be distributed subject to the version of the Agreement under which it was received. In addition, after a new version of the Agreement is published, Contributor may elect to distribute the Program (including its Contributions) under the new version. Except as expressly stated in Sections 2(a) and 2(b) above, Recipient receives no rights or licenses to the intellectual property of any Contributor under this Agreement, whether expressly, by implication, estoppel or otherwise. All rights in the Program not expressly granted under this Agreement are reserved.
+
+This Agreement is governed by the laws of the State of New York and the intellectual property laws of the United States of America. No party to this Agreement will bring a legal action under this Agreement more than one year after the cause of action arose. Each party waives its rights to a jury trial in any resulting litigation.
+
+
+
+
+
+
diff --git a/branches/sdo-java-M2/sdo/NOTICE.txt b/branches/sdo-java-M2/sdo/NOTICE.txt
new file mode 100644
index 0000000000..0ef0d54fb6
--- /dev/null
+++ b/branches/sdo-java-M2/sdo/NOTICE.txt
@@ -0,0 +1,33 @@
+Apache Tuscany SDO for Java
+Copyright 2006 The Apache Software Foundation
+
+This product includes software developed at
+The Apache Software Foundation (http://www.apache.org/).
+
+Apache Tuscany is an effort undergoing incubation at The Apache Software Foundation (ASF),
+sponsored by the Apache Web Services PMC. Incubation is required of all newly accepted
+projects until a further review indicates that the infrastructure, communications,
+and decision making process have stabilized in a manner consistent with other successful
+ASF projects. While incubation status is not necessarily a reflection of the completeness
+or stability of the code, it does indicate that the project has yet to be fully endorsed
+by the ASF.
+
+Unless otherwise indicated, all distribution made available by the Apache Software Foundation
+is provided to you under the terms and conditions of the Apache License Version 2.0 ("AL").
+A copy of the AL is provided with this distribution as the LICENSE.txt file present in the
+root directory, and is also available at http://www.apache.org/licenses/.
+
+The terms and conditions governing the distribution may refer to the AL or other license
+agreements, notices or terms and conditions. Some of these other license agreements may
+include (but are not limited to):
+
+ . Eclipse Public License Version 1.0 (available at http://www.eclipse.org/legal/epl-v10.html)
+ . Common Public License Version 1.0 (available at http://www.eclipse.org/legal/cpl-v10.html)
+
+It is your obligation to read and accept all such terms and conditions prior to use of the
+distribution. If term or condition is provided, please contact the Apache Software Foundation
+to determine what terms and conditions govern that particular distribution.
+
+This product also includes software developed by the Open Service Oriented Architecture organisation
+(http://osoa.org). The license for this software may be found in the LICENSE.txt file contained in this
+distribution.
diff --git a/branches/sdo-java-M2/sdo/STATUS.txt b/branches/sdo-java-M2/sdo/STATUS.txt
new file mode 100644
index 0000000000..24a37ea606
--- /dev/null
+++ b/branches/sdo-java-M2/sdo/STATUS.txt
@@ -0,0 +1,73 @@
+Apache Tuscany Status
+
+Tuscany provides multiple language implementations of the Service Component Architecture (SCA) specifications and related technologies such as SDO.
+
+PROJECT STATUS
+==============
+
+ Tuscany is being incubated at the request of the Apache Web Services PMC.
+ For information on incubation please visit the project page at
+ http://incubator.apache.org/projects/tuscany.html
+
+PENDING ISSUES
+==============
+XXXX-XX-XX CCLA received for IBM's contribution of a C++ implementation
+XXXX-XX-XX CCLA received for BEA and IBM joint contribution of a Java implementation
+
+RESOLVED ISSUES SINCE LAST STATUS
+=================================
+None
+
+OTHER NEWS
+==========
+
+2006-09-29 Vote to add Ignacio Silva-Lepe as a new committer
+2006-09-18 Vote to add Venkata Krishnan as a new committer
+2006-08-10 Vote to add Andrew Borley as a new committer
+2006-08-07 Vote to add Meeraj Kunnumpurath as a new committer
+2006-08-07 Vote to add Kelvin Goodson as a new committer
+2006-08-06 Vote to add Brent Daniel as a new committer
+2006-08-04 Vote to add Raymond Feng as a new committer
+2006-08-01 C++ Milestone 1 release
+2006-06-07 Java Milestone 1 release
+2006-05-02 Vote to add Dan Kulp as a new committer
+
+2006-01-05 Contribution of Java implementation by BEA and IBM committed
+2006-01-05 Contribution of C+ implementation by IBM committed
+
+RELEASE STATUS
+==============
+None
+
+REFERENCES
+==========
+Status file http://svn.apache.org/repos/asf/incubator/tuscany/STATUS
+User List tuscany-user@ws.apache.org
+Developer List tuscany-dev@ws.apache.org
+Commits List tuscany-commits@ws.apache.org
+Source Code http://svn.apache.org/repos/asf/incubator/tuscany/
+Issue Tracking http://issues.apache.org/jira/browse/TUSCANY
+
+Committers
+ ajborley Andrew Borley
+ antelder Ant Elder
+ bdaniel Brent Daniel
+ dkulp Dan Kulp
+ dims Davanum Srinivas
+ edslattery Ed Slattery
+ ekoneil Eddie O'Neil
+ frankb Frank Budinsky
+ geirm Geir Magnusson Jr
+ isilval Ignacio Silva-Lepe
+ jsdelfino Jean-Sebastien Delfino
+ jboynes Jeremy Boynes
+ jmarino Jim Marino
+ kelvingoodson Kelvin Goodson
+ kentam Ken Tam
+ kwilliams Kevin Williams
+ edwardsmj Mike Edwards
+ meerajk Meeraj Kunnumpurath
+ rfeng Raymond Feng
+ robbinspg Pete Robbins
+ rineholt Rick Rineholt
+ svkrish Venkata Krishnan
diff --git a/branches/sdo-java-M2/sdo/distribution/RELEASE_NOTES.txt b/branches/sdo-java-M2/sdo/distribution/RELEASE_NOTES.txt
new file mode 100644
index 0000000000..25ae065c9f
--- /dev/null
+++ b/branches/sdo-java-M2/sdo/distribution/RELEASE_NOTES.txt
@@ -0,0 +1,127 @@
+What's New in SDO Java M2
+
+ 1. `java.io.Serializable` support for `DataObject`s including objects not in a `DataGraph` (TUSCANY-22)
+ 2. Java code generator improvements
+ 3. XML Schema generation (TUSCANY-535)
+ 4. StAX-based Load load and save support (TUSCANY-118)
+ 5. new SDOUtil methods
+ 6. CrossScopeCopyHelper (TUSCANY-627)
+ 7. open content creation API (SDO 2.1 enhancement early implementation - see draft 2.1 spec)
+ 8. sample programs
+ 9. More than 12 new bugfixes
+
+Details are described below.
+
+SDO Java M2 is a superset of previous SDO Java M1 release.
+Anything in M1 is also in M2, but M2 contains features and bugfixes not present in M1 release.
+
+Downloading
+ http://incubator.apache.org/tuscany/downloads.html#Apache%20Tuscany%20Java%20Downloads
+
+Compatibility Concerns
+ M2 is still on SDO Java specification 2.01 same as M1.
+ SDO Java M2 maintains API/SPI compatibility with M1 release, by only adding new functions.
+ A program written to the M1 API/SPI can both compile and run using M2 libraries.
+ However, a program written for M2 cannot necessarily compile or run against M1 libraries.
+
+Command Line Output Changes
+ Although the SDO Java developers try hard to keep output from the command line programs compatible between releases,
+ new information sometimes has to be added. This might break scripts that rely on the exact format of the output.
+ In M2, for example, SDO static code generator help information is updated as new options available.
+
+New Features
+
+ 1. `java.io.Serializable` support for `DataObject`s including objects not in a `DataGraph` (TUSCANY-22)
+ DataObject used to be required to put into DataGraph before being Java serialized;
+ from M2 on, DataObject can be Java serialized standalone.
+ And the data object serialization format conforms to SDO Java specification 2.01.
+ At the same time, DataGraph serialization is also working now although whose format is still not compliant yet.
+
+ 2. Java code generator improvements
+ A new option (-interfaceDataObject) is available to generate interfaces that extend commonj.sdo.DataObject (TUSCANY-254).
+ The existed option (-noEMF) pattern has been improved, e.g.,
+ inheritance and bidirectional references are now working (sca-core.xsd can be generated).
+ On the other hand, generated interfaces now extend java.io.Serializable by default convenient to remote invocation.
+
+ 3. XML Schema generation (TUSCANY-535)
+ XSDHelper used to go only one way that #define methods import models from XML Schema,
+ SDO Java M2 has implemented `XSDHelper.generate()` methods to export models as XML Schema.
+
+ 4. StAX-based Load load and save support (TUSCANY-118)
+ A new helper XMLStreamHelper has been added,
+ it's based on Stream API for XML which makes SDO convenient to use in StAX environment.
+ On the other hand, StAX load/save is a better-performance alternative sometimes.
+
+ 5. new SDOUtil methods
+
+ * SDOUtil.getSubstitutionValues()
+ SDO user used to assume the SDO implementation is based on EMF
+ and use EMF API/SPI to access substitutable Property since no such API/SPI available in SDO Java M1.
+ M2 has provided such non-EMF way to get the Sequence corresponding to a substitutable Property (TUSCANY-502/503)
+
+ * SDOUtil.isRequired()
+ Determine if a property is required, that is, minOccurs > 0 (TUSCANY-504)
+
+ * SDOUtil.setRootObject()
+ SDO user used to be only able to get the root object of a DataGraph in SDO Java M1,
+ M2 has enabled setting the root object of a DataGraph (TUSCANY-512)
+
+ * SDOUtil.getTypes()
+ Gets all of the types associated with a uri (TUSCANY-583)
+
+ * SDOUtil.registerDataGraphTypes
+ DataObject/DataGraph serialization used to be instances only;
+ models are expected on the other endpoint otherwise either anyType will be used to deserialize DataObject/DataGraph
+ or ClassNotFoundException will be thrown.
+ Even if no ClassNotFoundException, anyType isn't always satisfying.
+ SDO Java M2 has enabled models seriallization by registering Types to be serialized along with a DataGraph (TUSCANY-670)
+
+ 6. CrossScopeCopyHelper (TUSCANY-627)
+ Types are registered within certain scopes (TypeHelpers).
+ Two Types from different scopes (TypeHelper) are two different types even if imported from very same source such as XML Schema.
+ Some scenario such as local invocation prefers copying to serialization
+ which requires copying to use Types from (invocation) destination endpoint instead of the source/original one.
+ SDO Java M2 has enabled copying DataObject instances from one TypeHelper to another scope.
+
+ 7. open content creation API (SDO 2.1 enhancement early implementation - see draft 2.1 spec)
+ * TypeHelper.createOpenContentProperty()
+ * TypeHelper.getOpenContentProperty()
+
+ 8. sample programs
+ * There are currently three groups of samples
+ 8.1. Simple code snippets located throughout the specifiction with comparative methods for acheiving the same results
+ # Create DataObject from XML String
+ # Create DataObject from XSD and XML files
+ # Access DataObject Properties by name
+ # Dynamic "Customer" Type sample
+ # Print Properties of DataObject
+ # Using XPath
+ # Obtaining DataGraph from XML
+ 8.2. Full examples located within Examples section of specification
+ # Access DataObjects using XPath
+ # Accessing DataObjects via Property index
+ # Accessing the contents of a Sequence
+ # Creating DataObject trees from XMLDocuments
+ # Creating XML from DataObjects
+ # Serializing desearializing a DataObject
+ # Using Type and Property with DataObjects
+ 8.3. Other sample sources such as white papers and online articles
+ # Create PurchaseOrder
+ # Read PurchaseOrder
+ # PurchaseOrder command line
+
+ 9. bug fixes
+ * DataObject string accessors were not working for XPath segements with @ prefix, e.g. "@property" (TUSCANY-425)
+ * string accessors fixed to throw IndexOutOfBounds exception for "property[0]" since index starts with 1 (TUSCANY-475)
+ * fixed Date-Type properties (including Day, Date, DateTime, Duration, etc.) that were not working/roundtripping properly (TUSCANY-579/582)
+ * dynamically-created global (open content) properties were not serializing properly (TUSCANY-530/531)
+ * properties created from XSD attributes now appear, in the Type, in the same order as the attributes in the XSD complexType
+ * fixed test harness to allow comments in XML test files (TUSCANY-427)
+ * loading XSDs with nillable elements, of built-in types, caused NPE (TUSCANY-676)
+ * fixed NPE when loading XSD without targetNamespace (TUSCANY-645)
+ * made Type.getProperty(String) implementaion thread safe (TUSCANY-682)
+ * support base64Binary and hexBinary XSD types correctly (TUSCANY-685)
+ * fixed generation of invalid prefixes in XML serialization (TUSCANY-711)
+ * sometimes SDOXMLResourceImpl (instead of XSDResourceImp) was incorrectly used when loading .xsd files (TUSCANY-714)
+ * roundtripping an xsd:anyType via XML using XMLStreamHelper gave wrong kind of DataObject (TUSCANY-755)
+ * cardinality of global elements should be adaptive according to usage context (TUSCANY-115)
diff --git a/branches/sdo-java-M2/sdo/distribution/readme.html b/branches/sdo-java-M2/sdo/distribution/readme.html
new file mode 100644
index 0000000000..e9bc489bef
--- /dev/null
+++ b/branches/sdo-java-M2/sdo/distribution/readme.html
@@ -0,0 +1,45 @@
+<HTML>
+<head>
+<title>
+Tuscany SDO for Java M2 Binary Distribution
+</title>
+</head>
+<body>
+<H1>Tuscany SDO for Java M2 Binary Distribution Readme File</h1>
+<h2>Legal Notices</h2>
+<p>
+See the <a href="LICENSE.txt">LICENSE.txt</a> and <a href="NOTICE.txt">NOTICE.txt</a> files for legal information concerning this distribution.
+</p>
+<h2>Release Information</h2>
+<p>
+See the <a href="RELEASE_NOTES.txt">RELEASE_NOTES.txt</a> file for a summary of what's new with this release, or the <a href="CHANGES.txt">CHANGES.txt</a> file for a detailed list of the changes since the M1 release.
+</p>
+<h2>Documentation</h2>
+<p>
+For general documentation about the Tuscany project and the SDO for Java, see the <a href="http://incubator.apache.org/tuscany">Tuscany</a> website.
+</p>
+<p>
+This distribution contains javadoc for the <a href="javadoc/api/index.html">SDO 2.0.1 API</a>.
+It also contains Javadoc for the <a href="javadoc/impl/index.html">implementation code</a>.
+Although this is not of general use to the SDO user, there are some classes in the implementation code which are of interest
+to the user of SDO, these include
+<ul>
+
+ <li>org.apache.tuscany.sdo.util.SDOUtil</li>
+ <li>org.apache.tuscany.sdo.generate.XSD2JavaGenerator</li>
+ <li>org.apache.tuscany.sdo.generate.Interface2JavaGenerator</li>
+</ul>
+</p>
+<h2>Samples</h2>
+<p>
+Sample source code is available to <a href="http://incubator.apache.org/tuscany/downloads.html">download</a> as a separate distribution to accompany this binary distribution.
+Download and unpack a suitable archive and follow the instructions in the archive to build and run the samples.
+</p>
+<p>
+</p>
+<p>
+</p>
+</body>
+</HTML>
+
+
diff --git a/branches/sdo-java-M2/sdo/impl/model/SDO.ecore b/branches/sdo-java-M2/sdo/impl/model/SDO.ecore
new file mode 100644
index 0000000000..dce261ecd2
--- /dev/null
+++ b/branches/sdo-java-M2/sdo/impl/model/SDO.ecore
@@ -0,0 +1,962 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<ecore:EPackage xmi:version="2.0"
+ xmlns:xmi="http://www.omg.org/XMI" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+ xmlns:ecore="http://www.eclipse.org/emf/2002/Ecore" name="sdo"
+ nsURI="http://www.apache.org/tuscany/2005/SDO" nsPrefix="sdo">
+ <eClassifiers xsi:type="ecore:EClass" name="ChangeSummary" instanceClassName="commonj.sdo.ChangeSummary"
+ eSuperTypes="../../org.eclipse.emf.ecore.change/model/Change.ecore#//ChangeDescription">
+ <eOperations name="beginLogging"/>
+ <eOperations name="endLogging"/>
+ <eOperations name="isCreated" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean">
+ <eParameters name="dataObject" eType="#//DataObject"/>
+ </eOperations>
+ <eOperations name="isDeleted" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean">
+ <eParameters name="dataObject" eType="#//DataObject"/>
+ </eOperations>
+ <eOperations name="getOldValues" eType="#//EJavaList">
+ <eParameters name="dataObject" eType="#//DataObject"/>
+ </eOperations>
+ <eOperations name="isModified" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean">
+ <eParameters name="dataObject" eType="#//DataObject"/>
+ </eOperations>
+ <eOperations name="getOldValue" eType="#//ChangeSummarySetting">
+ <eParameters name="dataObject" eType="#//DataObject"/>
+ <eParameters name="property" eType="#//Property"/>
+ </eOperations>
+ <eOperations name="getOldContainer" eType="#//DataObject">
+ <eParameters name="dataObject" eType="#//DataObject"/>
+ </eOperations>
+ <eOperations name="getOldContainmentProperty" eType="#//Property">
+ <eParameters name="dataObject" eType="#//DataObject"/>
+ </eOperations>
+ <eOperations name="getOldSequence" eType="#//Sequence">
+ <eParameters name="dataObject" eType="#//DataObject"/>
+ </eOperations>
+ <eOperations name="undoChanges"/>
+ <eOperations name="isLogging" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean"/>
+ <eOperations name="getDataGraph" eType="#//DataGraph"/>
+ <eOperations name="getChangedObjects" eType="#//EJavaList"/>
+ <eOperations name="getRootObject" eType="#//DataObject"/>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="eDataGraph" lowerBound="1"
+ eType="#//DataGraph" transient="true" resolveProxies="false" eOpposite="#//DataGraph/eChangeSummary"/>
+ </eClassifiers>
+ <eClassifiers xsi:type="ecore:EClass" name="ChangeSummarySetting" instanceClassName="commonj.sdo.ChangeSummary$Setting"
+ eSuperTypes="../../org.eclipse.emf.ecore.change/model/Change.ecore#//FeatureChange">
+ <eOperations name="isSet" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean"/>
+ <eOperations name="getValue" eType="ecore:EDataType ../../org.eclipse.emf.ecore/model/Ecore.ecore#//EJavaObject"/>
+ <eOperations name="getProperty" eType="#//Property"/>
+ </eClassifiers>
+ <eClassifiers xsi:type="ecore:EClass" name="DataGraph" instanceClassName="commonj.sdo.DataGraph"
+ eSuperTypes="../../org.eclipse.emf.ecore/model/Ecore.ecore#//EObject">
+ <eOperations name="createRootObject" eType="#//DataObject">
+ <eParameters name="namespaceURI" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EString"/>
+ <eParameters name="typeName" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EString"/>
+ </eOperations>
+ <eOperations name="createRootObject" eType="#//DataObject">
+ <eParameters name="type" eType="#//Type"/>
+ </eOperations>
+ <eOperations name="getType" eType="#//Type">
+ <eParameters name="namespaceURI" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EString"/>
+ <eParameters name="typeName" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EString"/>
+ </eOperations>
+ <eOperations name="getRootObject" eType="#//DataObject"/>
+ <eOperations name="getChangeSummary" eType="#//ChangeSummary"/>
+ <eStructuralFeatures xsi:type="ecore:EAttribute" name="resourceSet" eType="ecore:EDataType ../../org.eclipse.emf.ecore/model/Ecore.ecore#//EResourceSet"
+ transient="true"/>
+ <eStructuralFeatures xsi:type="ecore:EAttribute" name="rootResource" eType="ecore:EDataType ../../org.eclipse.emf.ecore/model/Ecore.ecore#//EResource"
+ changeable="false" volatile="true" transient="true" derived="true"/>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="eChangeSummary" lowerBound="1"
+ eType="#//ChangeSummary" resolveProxies="false" eOpposite="#//ChangeSummary/eDataGraph"/>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="eRootObject" lowerBound="1"
+ eType="ecore:EClass ../../org.eclipse.emf.ecore/model/Ecore.ecore#//EObject"
+ resolveProxies="false"/>
+ </eClassifiers>
+ <eClassifiers xsi:type="ecore:EClass" name="DataObject" instanceClassName="commonj.sdo.DataObject"
+ abstract="true">
+ <eOperations name="get" eType="ecore:EDataType ../../org.eclipse.emf.ecore/model/Ecore.ecore#//EJavaObject">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="body" value="return &lt;%org.apache.sdo.util.SDOUtil%>.get(this, path);"/>
+ </eAnnotations>
+ <eParameters name="path" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EString"/>
+ </eOperations>
+ <eOperations name="set">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="body" value="&lt;%org.apache.sdo.util.SDOUtil%>.set(this, path, value);"/>
+ </eAnnotations>
+ <eParameters name="path" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EString"/>
+ <eParameters name="value" eType="ecore:EDataType ../../org.eclipse.emf.ecore/model/Ecore.ecore#//EJavaObject"/>
+ </eOperations>
+ <eOperations name="isSet" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="body" value="return &lt;%org.apache.sdo.util.SDOUtil%>.isSet(this, path);"/>
+ </eAnnotations>
+ <eParameters name="path" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EString"/>
+ </eOperations>
+ <eOperations name="unset">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="body" value="&lt;%org.apache.sdo.util.SDOUtil%>.unset(this, path);"/>
+ </eAnnotations>
+ <eParameters name="path" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EString"/>
+ </eOperations>
+ <eOperations name="get" eType="ecore:EDataType ../../org.eclipse.emf.ecore/model/Ecore.ecore#//EJavaObject">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="body" value="return &lt;%org.apache.sdo.util.SDOUtil%>.get(this, propertyIndex);"/>
+ </eAnnotations>
+ <eParameters name="propertyIndex" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EInt"/>
+ </eOperations>
+ <eOperations name="set">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="body" value="&lt;%org.apache.sdo.util.SDOUtil%>.set(this, propertyIndex, value);"/>
+ </eAnnotations>
+ <eParameters name="propertyIndex" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EInt"/>
+ <eParameters name="value" eType="ecore:EDataType ../../org.eclipse.emf.ecore/model/Ecore.ecore#//EJavaObject"/>
+ </eOperations>
+ <eOperations name="isSet" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="body" value="return &lt;%org.apache.sdo.util.SDOUtil%>.isSet(this, propertyIndex);"/>
+ </eAnnotations>
+ <eParameters name="propertyIndex" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EInt"/>
+ </eOperations>
+ <eOperations name="unset">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="body" value="&lt;%org.apache.sdo.util.SDOUtil%>.unset(this, propertyIndex);"/>
+ </eAnnotations>
+ <eParameters name="propertyIndex" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EInt"/>
+ </eOperations>
+ <eOperations name="get" eType="ecore:EDataType ../../org.eclipse.emf.ecore/model/Ecore.ecore#//EJavaObject">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="body" value="return &lt;%org.apache.sdo.util.SDOUtil%>.get(this, property);"/>
+ </eAnnotations>
+ <eParameters name="property" eType="#//Property"/>
+ </eOperations>
+ <eOperations name="set">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="body" value="&lt;%org.apache.sdo.util.SDOUtil%>.set(this, property, value);"/>
+ </eAnnotations>
+ <eParameters name="property" eType="#//Property"/>
+ <eParameters name="value" eType="ecore:EDataType ../../org.eclipse.emf.ecore/model/Ecore.ecore#//EJavaObject"/>
+ </eOperations>
+ <eOperations name="isSet" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="body" value="return &lt;%org.apache.sdo.util.SDOUtil%>.isSet(this, property);"/>
+ </eAnnotations>
+ <eParameters name="property" eType="#//Property"/>
+ </eOperations>
+ <eOperations name="unset">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="body" value="&lt;%org.apache.sdo.util.SDOUtil%>.unset(this, property);"/>
+ </eAnnotations>
+ <eParameters name="property" eType="#//Property"/>
+ </eOperations>
+ <eOperations name="getContainer" eType="#//DataObject">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="body" value="return &lt;%org.apache.sdo.util.SDOUtil%>.getContainer(this);"/>
+ </eAnnotations>
+ </eOperations>
+ <eOperations name="getContainmentProperty" eType="#//Property">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="body" value="return &lt;%org.apache.sdo.util.SDOUtil%>.getContainmentProperty(this);"/>
+ </eAnnotations>
+ </eOperations>
+ <eOperations name="getDataGraph" eType="#//DataGraph">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="body" value="return &lt;%org.apache.sdo.util.SDOUtil%>.getDataGraph(this);"/>
+ </eAnnotations>
+ </eOperations>
+ <eOperations name="getType" eType="#//Type">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="body" value="return &lt;%org.apache.sdo.util.SDOUtil%>.getType(this);"/>
+ </eAnnotations>
+ </eOperations>
+ <eOperations name="getBigDecimal" eType="ecore:EDataType ../../org.eclipse.emf.ecore/model/Ecore.ecore#//EBigDecimal">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="body" value="return &lt;%org.apache.sdo.util.SDOUtil%>.getBigDecimal(this, path);"/>
+ </eAnnotations>
+ <eParameters name="path" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EString"/>
+ </eOperations>
+ <eOperations name="getBigInteger" eType="ecore:EDataType ../../org.eclipse.emf.ecore/model/Ecore.ecore#//EBigInteger">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="body" value="return &lt;%org.apache.sdo.util.SDOUtil%>.getBigInteger(this, path);"/>
+ </eAnnotations>
+ <eParameters name="path" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EString"/>
+ </eOperations>
+ <eOperations name="getBoolean" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="body" value="return &lt;%org.apache.sdo.util.SDOUtil%>.getBoolean(this, path);"/>
+ </eAnnotations>
+ <eParameters name="path" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EString"/>
+ </eOperations>
+ <eOperations name="getByte" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EByte">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="body" value="return &lt;%org.apache.sdo.util.SDOUtil%>.getByte(this, path);"/>
+ </eAnnotations>
+ <eParameters name="path" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EString"/>
+ </eOperations>
+ <eOperations name="getBytes" eType="ecore:EDataType ../../org.eclipse.emf.ecore/model/Ecore.ecore#//EByteArray">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="body" value="return &lt;%org.apache.sdo.util.SDOUtil%>.getBytes(this, path);"/>
+ </eAnnotations>
+ <eParameters name="path" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EString"/>
+ </eOperations>
+ <eOperations name="getChar" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EChar">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="body" value="return &lt;%org.apache.sdo.util.SDOUtil%>.getChar(this, path);"/>
+ </eAnnotations>
+ <eParameters name="path" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EString"/>
+ </eOperations>
+ <eOperations name="getDataObject" eType="#//DataObject">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="body" value="return &lt;%org.apache.sdo.util.SDOUtil%>.getDataObject(this, path);"/>
+ </eAnnotations>
+ <eParameters name="path" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EString"/>
+ </eOperations>
+ <eOperations name="getDate" eType="ecore:EDataType ../../org.eclipse.emf.ecore/model/Ecore.ecore#//EDate">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="body" value="return &lt;%org.apache.sdo.util.SDOUtil%>.getDate(this, path);"/>
+ </eAnnotations>
+ <eParameters name="path" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EString"/>
+ </eOperations>
+ <eOperations name="getDouble" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDouble">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="body" value="return &lt;%org.apache.sdo.util.SDOUtil%>.getDouble(this, path);"/>
+ </eAnnotations>
+ <eParameters name="path" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EString"/>
+ </eOperations>
+ <eOperations name="getFloat" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EFloat">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="body" value="return &lt;%org.apache.sdo.util.SDOUtil%>.getFloat(this, path);"/>
+ </eAnnotations>
+ <eParameters name="path" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EString"/>
+ </eOperations>
+ <eOperations name="getInt" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EInt">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="body" value="return &lt;%org.apache.sdo.util.SDOUtil%>.getInt(this, path);"/>
+ </eAnnotations>
+ <eParameters name="path" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EString"/>
+ </eOperations>
+ <eOperations name="getList" eType="#//EJavaList">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="body" value="return &lt;%org.apache.sdo.util.SDOUtil%>.getList(this, path);"/>
+ </eAnnotations>
+ <eParameters name="path" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EString"/>
+ </eOperations>
+ <eOperations name="getLong" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//ELong">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="body" value="return &lt;%org.apache.sdo.util.SDOUtil%>.getLong(this, path);"/>
+ </eAnnotations>
+ <eParameters name="path" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EString"/>
+ </eOperations>
+ <eOperations name="getSequence" eType="#//Sequence">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="body" value="return &lt;%org.apache.sdo.util.SDOUtil%>.getSequence(this, path);"/>
+ </eAnnotations>
+ <eParameters name="path" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EString"/>
+ </eOperations>
+ <eOperations name="getShort" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EShort">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="body" value="return &lt;%org.apache.sdo.util.SDOUtil%>.getShort(this, path);"/>
+ </eAnnotations>
+ <eParameters name="path" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EString"/>
+ </eOperations>
+ <eOperations name="getString" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EString">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="body" value="return &lt;%org.apache.sdo.util.SDOUtil%>.getString(this, path);"/>
+ </eAnnotations>
+ <eParameters name="path" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EString"/>
+ </eOperations>
+ <eOperations name="setBigDecimal">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="body" value="&lt;%org.apache.sdo.util.SDOUtil%>.setBigDecimal(this, path, value);"/>
+ </eAnnotations>
+ <eParameters name="path" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EString"/>
+ <eParameters name="value" eType="ecore:EDataType ../../org.eclipse.emf.ecore/model/Ecore.ecore#//EBigDecimal"/>
+ </eOperations>
+ <eOperations name="setBigInteger">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="body" value="&lt;%org.apache.sdo.util.SDOUtil%>.setBigInteger(this, path, value);"/>
+ </eAnnotations>
+ <eParameters name="path" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EString"/>
+ <eParameters name="value" eType="ecore:EDataType ../../org.eclipse.emf.ecore/model/Ecore.ecore#//EBigInteger"/>
+ </eOperations>
+ <eOperations name="setBoolean">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="body" value="&lt;%org.apache.sdo.util.SDOUtil%>.setBoolean(this, path, value);"/>
+ </eAnnotations>
+ <eParameters name="path" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EString"/>
+ <eParameters name="value" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean"/>
+ </eOperations>
+ <eOperations name="setByte">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="body" value="&lt;%org.apache.sdo.util.SDOUtil%>.setByte(this, path, value);"/>
+ </eAnnotations>
+ <eParameters name="path" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EString"/>
+ <eParameters name="value" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EByte"/>
+ </eOperations>
+ <eOperations name="setBytes">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="body" value="&lt;%org.apache.sdo.util.SDOUtil%>.setBytes(this, path, value);"/>
+ </eAnnotations>
+ <eParameters name="path" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EString"/>
+ <eParameters name="value" eType="ecore:EDataType ../../org.eclipse.emf.ecore/model/Ecore.ecore#//EByteArray"/>
+ </eOperations>
+ <eOperations name="setChar">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="body" value="&lt;%org.apache.sdo.util.SDOUtil%>.setChar(this, path, value);"/>
+ </eAnnotations>
+ <eParameters name="path" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EString"/>
+ <eParameters name="value" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EChar"/>
+ </eOperations>
+ <eOperations name="setDataObject">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="body" value="&lt;%org.apache.sdo.util.SDOUtil%>.setDataObject(this, path, value);"/>
+ </eAnnotations>
+ <eParameters name="path" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EString"/>
+ <eParameters name="value" eType="#//DataObject"/>
+ </eOperations>
+ <eOperations name="setDate">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="body" value="&lt;%org.apache.sdo.util.SDOUtil%>.setDate(this, path, value);"/>
+ </eAnnotations>
+ <eParameters name="path" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EString"/>
+ <eParameters name="value" eType="ecore:EDataType ../../org.eclipse.emf.ecore/model/Ecore.ecore#//EDate"/>
+ </eOperations>
+ <eOperations name="setDouble">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="body" value="&lt;%org.apache.sdo.util.SDOUtil%>.setDouble(this, path, value);"/>
+ </eAnnotations>
+ <eParameters name="path" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EString"/>
+ <eParameters name="value" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDouble"/>
+ </eOperations>
+ <eOperations name="setFloat">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="body" value="&lt;%org.apache.sdo.util.SDOUtil%>.setFloat(this, path, value);"/>
+ </eAnnotations>
+ <eParameters name="path" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EString"/>
+ <eParameters name="value" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EFloat"/>
+ </eOperations>
+ <eOperations name="setInt">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="body" value="&lt;%org.apache.sdo.util.SDOUtil%>.setInt(this, path, value);"/>
+ </eAnnotations>
+ <eParameters name="path" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EString"/>
+ <eParameters name="value" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EInt"/>
+ </eOperations>
+ <eOperations name="setList">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="body" value="&lt;%org.apache.sdo.util.SDOUtil%>.setList(this, path, value);"/>
+ </eAnnotations>
+ <eParameters name="path" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EString"/>
+ <eParameters name="value" eType="#//EJavaList"/>
+ </eOperations>
+ <eOperations name="setLong">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="body" value="&lt;%org.apache.sdo.util.SDOUtil%>.setLong(this, path, value);"/>
+ </eAnnotations>
+ <eParameters name="path" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EString"/>
+ <eParameters name="value" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//ELong"/>
+ </eOperations>
+ <eOperations name="setShort">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="body" value="&lt;%org.apache.sdo.util.SDOUtil%>.setShort(this, path, value);"/>
+ </eAnnotations>
+ <eParameters name="path" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EString"/>
+ <eParameters name="value" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EShort"/>
+ </eOperations>
+ <eOperations name="setString">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="body" value="&lt;%org.apache.sdo.util.SDOUtil%>.setString(this, path, value);"/>
+ </eAnnotations>
+ <eParameters name="path" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EString"/>
+ <eParameters name="value" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EString"/>
+ </eOperations>
+ <eOperations name="getBigDecimal" eType="ecore:EDataType ../../org.eclipse.emf.ecore/model/Ecore.ecore#//EBigDecimal">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="body" value="return &lt;%org.apache.sdo.util.SDOUtil%>.getBigDecimal(this, propertyIndex);"/>
+ </eAnnotations>
+ <eParameters name="propertyIndex" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EInt"/>
+ </eOperations>
+ <eOperations name="getBigInteger" eType="ecore:EDataType ../../org.eclipse.emf.ecore/model/Ecore.ecore#//EBigInteger">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="body" value="return &lt;%org.apache.sdo.util.SDOUtil%>.getBigInteger(this, propertyIndex);"/>
+ </eAnnotations>
+ <eParameters name="propertyIndex" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EInt"/>
+ </eOperations>
+ <eOperations name="getBoolean" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="body" value="return &lt;%org.apache.sdo.util.SDOUtil%>.getBoolean(this, propertyIndex);"/>
+ </eAnnotations>
+ <eParameters name="propertyIndex" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EInt"/>
+ </eOperations>
+ <eOperations name="getByte" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EByte">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="body" value="return &lt;%org.apache.sdo.util.SDOUtil%>.getByte(this, propertyIndex);"/>
+ </eAnnotations>
+ <eParameters name="propertyIndex" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EInt"/>
+ </eOperations>
+ <eOperations name="getBytes" eType="ecore:EDataType ../../org.eclipse.emf.ecore/model/Ecore.ecore#//EByteArray">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="body" value="return &lt;%org.apache.sdo.util.SDOUtil%>.getBytes(this, propertyIndex);"/>
+ </eAnnotations>
+ <eParameters name="propertyIndex" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EInt"/>
+ </eOperations>
+ <eOperations name="getChar" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EChar">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="body" value="return &lt;%org.apache.sdo.util.SDOUtil%>.getChar(this, propertyIndex);"/>
+ </eAnnotations>
+ <eParameters name="propertyIndex" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EInt"/>
+ </eOperations>
+ <eOperations name="getDataObject" eType="#//DataObject">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="body" value="return &lt;%org.apache.sdo.util.SDOUtil%>.getDataObject(this, propertyIndex);"/>
+ </eAnnotations>
+ <eParameters name="propertyIndex" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EInt"/>
+ </eOperations>
+ <eOperations name="getDate" eType="ecore:EDataType ../../org.eclipse.emf.ecore/model/Ecore.ecore#//EDate">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="body" value="return &lt;%org.apache.sdo.util.SDOUtil%>.getDate(this, propertyIndex);"/>
+ </eAnnotations>
+ <eParameters name="propertyIndex" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EInt"/>
+ </eOperations>
+ <eOperations name="getDouble" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDouble">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="body" value="return &lt;%org.apache.sdo.util.SDOUtil%>.getDouble(this, propertyIndex);"/>
+ </eAnnotations>
+ <eParameters name="propertyIndex" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EInt"/>
+ </eOperations>
+ <eOperations name="getFloat" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EFloat">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="body" value="return &lt;%org.apache.sdo.util.SDOUtil%>.getFloat(this, propertyIndex);"/>
+ </eAnnotations>
+ <eParameters name="propertyIndex" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EInt"/>
+ </eOperations>
+ <eOperations name="getInt" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EInt">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="body" value="return &lt;%org.apache.sdo.util.SDOUtil%>.getInt(this, propertyIndex);"/>
+ </eAnnotations>
+ <eParameters name="propertyIndex" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EInt"/>
+ </eOperations>
+ <eOperations name="getList" eType="#//EJavaList">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="body" value="return &lt;%org.apache.sdo.util.SDOUtil%>.getList(this, propertyIndex);"/>
+ </eAnnotations>
+ <eParameters name="propertyIndex" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EInt"/>
+ </eOperations>
+ <eOperations name="getLong" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//ELong">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="body" value="return &lt;%org.apache.sdo.util.SDOUtil%>.getLong(this, propertyIndex);"/>
+ </eAnnotations>
+ <eParameters name="propertyIndex" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EInt"/>
+ </eOperations>
+ <eOperations name="getSequence" eType="#//Sequence">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="body" value="return &lt;%org.apache.sdo.util.SDOUtil%>.getSequence(this, propertyIndex);"/>
+ </eAnnotations>
+ <eParameters name="propertyIndex" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EInt"/>
+ </eOperations>
+ <eOperations name="getShort" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EShort">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="body" value="return &lt;%org.apache.sdo.util.SDOUtil%>.getShort(this, propertyIndex);"/>
+ </eAnnotations>
+ <eParameters name="propertyIndex" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EInt"/>
+ </eOperations>
+ <eOperations name="getString" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EString">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="body" value="return &lt;%org.apache.sdo.util.SDOUtil%>.getString(this, propertyIndex);"/>
+ </eAnnotations>
+ <eParameters name="propertyIndex" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EInt"/>
+ </eOperations>
+ <eOperations name="setBigDecimal">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="body" value="&lt;%org.apache.sdo.util.SDOUtil%>.setBigDecimal(this, propertyIndex, value);"/>
+ </eAnnotations>
+ <eParameters name="propertyIndex" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EInt"/>
+ <eParameters name="value" eType="ecore:EDataType ../../org.eclipse.emf.ecore/model/Ecore.ecore#//EBigDecimal"/>
+ </eOperations>
+ <eOperations name="setBigInteger">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="body" value="&lt;%org.apache.sdo.util.SDOUtil%>.setBigInteger(this, propertyIndex, value);"/>
+ </eAnnotations>
+ <eParameters name="propertyIndex" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EInt"/>
+ <eParameters name="value" eType="ecore:EDataType ../../org.eclipse.emf.ecore/model/Ecore.ecore#//EBigInteger"/>
+ </eOperations>
+ <eOperations name="setBoolean">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="body" value="&lt;%org.apache.sdo.util.SDOUtil%>.setBoolean(this, propertyIndex, value);"/>
+ </eAnnotations>
+ <eParameters name="propertyIndex" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EInt"/>
+ <eParameters name="value" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean"/>
+ </eOperations>
+ <eOperations name="setByte">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="body" value="&lt;%org.apache.sdo.util.SDOUtil%>.setByte(this, propertyIndex, value);"/>
+ </eAnnotations>
+ <eParameters name="propertyIndex" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EInt"/>
+ <eParameters name="value" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EByte"/>
+ </eOperations>
+ <eOperations name="setBytes">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="body" value="&lt;%org.apache.sdo.util.SDOUtil%>.setBytes(this, propertyIndex, value);"/>
+ </eAnnotations>
+ <eParameters name="propertyIndex" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EInt"/>
+ <eParameters name="value" eType="ecore:EDataType ../../org.eclipse.emf.ecore/model/Ecore.ecore#//EByteArray"/>
+ </eOperations>
+ <eOperations name="setChar">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="body" value="&lt;%org.apache.sdo.util.SDOUtil%>.setChar(this, propertyIndex, value);"/>
+ </eAnnotations>
+ <eParameters name="propertyIndex" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EInt"/>
+ <eParameters name="value" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EChar"/>
+ </eOperations>
+ <eOperations name="setDataObject">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="body" value="&lt;%org.apache.sdo.util.SDOUtil%>.setDataObject(this, propertyIndex, value);"/>
+ </eAnnotations>
+ <eParameters name="propertyIndex" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EInt"/>
+ <eParameters name="value" eType="#//DataObject"/>
+ </eOperations>
+ <eOperations name="setDate">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="body" value="&lt;%org.apache.sdo.util.SDOUtil%>.setDate(this, propertyIndex, value);"/>
+ </eAnnotations>
+ <eParameters name="propertyIndex" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EInt"/>
+ <eParameters name="value" eType="ecore:EDataType ../../org.eclipse.emf.ecore/model/Ecore.ecore#//EDate"/>
+ </eOperations>
+ <eOperations name="setDouble">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="body" value="&lt;%org.apache.sdo.util.SDOUtil%>.setDouble(this, propertyIndex, value);"/>
+ </eAnnotations>
+ <eParameters name="propertyIndex" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EInt"/>
+ <eParameters name="value" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDouble"/>
+ </eOperations>
+ <eOperations name="setFloat">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="body" value="&lt;%org.apache.sdo.util.SDOUtil%>.setFloat(this, propertyIndex, value);"/>
+ </eAnnotations>
+ <eParameters name="propertyIndex" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EInt"/>
+ <eParameters name="value" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EFloat"/>
+ </eOperations>
+ <eOperations name="setInt">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="body" value="&lt;%org.apache.sdo.util.SDOUtil%>.setInt(this, propertyIndex, value);"/>
+ </eAnnotations>
+ <eParameters name="propertyIndex" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EInt"/>
+ <eParameters name="value" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EInt"/>
+ </eOperations>
+ <eOperations name="setList">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="body" value="&lt;%org.apache.sdo.util.SDOUtil%>.setList(this, propertyIndex, value);"/>
+ </eAnnotations>
+ <eParameters name="propertyIndex" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EInt"/>
+ <eParameters name="value" eType="#//EJavaList"/>
+ </eOperations>
+ <eOperations name="setLong">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="body" value="&lt;%org.apache.sdo.util.SDOUtil%>.setLong(this, propertyIndex, value);"/>
+ </eAnnotations>
+ <eParameters name="propertyIndex" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EInt"/>
+ <eParameters name="value" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//ELong"/>
+ </eOperations>
+ <eOperations name="setShort">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="body" value="&lt;%org.apache.sdo.util.SDOUtil%>.setShort(this, propertyIndex, value);"/>
+ </eAnnotations>
+ <eParameters name="propertyIndex" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EInt"/>
+ <eParameters name="value" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EShort"/>
+ </eOperations>
+ <eOperations name="setString">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="body" value="&lt;%org.apache.sdo.util.SDOUtil%>.setString(this, propertyIndex, value);"/>
+ </eAnnotations>
+ <eParameters name="propertyIndex" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EInt"/>
+ <eParameters name="value" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EString"/>
+ </eOperations>
+ <eOperations name="getBigDecimal" eType="ecore:EDataType ../../org.eclipse.emf.ecore/model/Ecore.ecore#//EBigDecimal">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="body" value="return &lt;%org.apache.sdo.util.SDOUtil%>.getBigDecimal(this, property);"/>
+ </eAnnotations>
+ <eParameters name="property" eType="#//Property"/>
+ </eOperations>
+ <eOperations name="getBigInteger" eType="ecore:EDataType ../../org.eclipse.emf.ecore/model/Ecore.ecore#//EBigInteger">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="body" value="return &lt;%org.apache.sdo.util.SDOUtil%>.getBigInteger(this, property);"/>
+ </eAnnotations>
+ <eParameters name="property" eType="#//Property"/>
+ </eOperations>
+ <eOperations name="getBoolean" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="body" value="return &lt;%org.apache.sdo.util.SDOUtil%>.getBoolean(this, property);"/>
+ </eAnnotations>
+ <eParameters name="property" eType="#//Property"/>
+ </eOperations>
+ <eOperations name="getByte" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EByte">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="body" value="return &lt;%org.apache.sdo.util.SDOUtil%>.getByte(this, property);"/>
+ </eAnnotations>
+ <eParameters name="property" eType="#//Property"/>
+ </eOperations>
+ <eOperations name="getBytes" eType="ecore:EDataType ../../org.eclipse.emf.ecore/model/Ecore.ecore#//EByteArray">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="body" value="return &lt;%org.apache.sdo.util.SDOUtil%>.getBytes(this, property);"/>
+ </eAnnotations>
+ <eParameters name="property" eType="#//Property"/>
+ </eOperations>
+ <eOperations name="getChar" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EChar">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="body" value="return &lt;%org.apache.sdo.util.SDOUtil%>.getChar(this, property);"/>
+ </eAnnotations>
+ <eParameters name="property" eType="#//Property"/>
+ </eOperations>
+ <eOperations name="getDataObject" eType="#//DataObject">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="body" value="return &lt;%org.apache.sdo.util.SDOUtil%>.getDataObject(this, property);"/>
+ </eAnnotations>
+ <eParameters name="property" eType="#//Property"/>
+ </eOperations>
+ <eOperations name="getDate" eType="ecore:EDataType ../../org.eclipse.emf.ecore/model/Ecore.ecore#//EDate">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="body" value="return &lt;%org.apache.sdo.util.SDOUtil%>.getDate(this, property);"/>
+ </eAnnotations>
+ <eParameters name="property" eType="#//Property"/>
+ </eOperations>
+ <eOperations name="getDouble" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDouble">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="body" value="return &lt;%org.apache.sdo.util.SDOUtil%>.getDouble(this, property);"/>
+ </eAnnotations>
+ <eParameters name="property" eType="#//Property"/>
+ </eOperations>
+ <eOperations name="getFloat" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EFloat">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="body" value="return &lt;%org.apache.sdo.util.SDOUtil%>.getFloat(this, property);"/>
+ </eAnnotations>
+ <eParameters name="property" eType="#//Property"/>
+ </eOperations>
+ <eOperations name="getInt" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EInt">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="body" value="return &lt;%org.apache.sdo.util.SDOUtil%>.getInt(this, property);"/>
+ </eAnnotations>
+ <eParameters name="property" eType="#//Property"/>
+ </eOperations>
+ <eOperations name="getList" eType="#//EJavaList">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="body" value="return &lt;%org.apache.sdo.util.SDOUtil%>.getList(this, property);"/>
+ </eAnnotations>
+ <eParameters name="property" eType="#//Property"/>
+ </eOperations>
+ <eOperations name="getLong" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//ELong">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="body" value="return &lt;%org.apache.sdo.util.SDOUtil%>.getLong(this, property);"/>
+ </eAnnotations>
+ <eParameters name="property" eType="#//Property"/>
+ </eOperations>
+ <eOperations name="getSequence" eType="#//Sequence">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="body" value="return &lt;%org.apache.sdo.util.SDOUtil%>.getSequence(this, property);"/>
+ </eAnnotations>
+ <eParameters name="property" eType="#//Property"/>
+ </eOperations>
+ <eOperations name="getShort" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EShort">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="body" value="return &lt;%org.apache.sdo.util.SDOUtil%>.getShort(this, property);"/>
+ </eAnnotations>
+ <eParameters name="property" eType="#//Property"/>
+ </eOperations>
+ <eOperations name="getString" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EString">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="body" value="return &lt;%org.apache.sdo.util.SDOUtil%>.getString(this, property);"/>
+ </eAnnotations>
+ <eParameters name="property" eType="#//Property"/>
+ </eOperations>
+ <eOperations name="setBigDecimal">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="body" value="&lt;%org.apache.sdo.util.SDOUtil%>.setBigDecimal(this, property, value);"/>
+ </eAnnotations>
+ <eParameters name="property" eType="#//Property"/>
+ <eParameters name="value" eType="ecore:EDataType ../../org.eclipse.emf.ecore/model/Ecore.ecore#//EBigDecimal"/>
+ </eOperations>
+ <eOperations name="setBigInteger">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="body" value="&lt;%org.apache.sdo.util.SDOUtil%>.setBigInteger(this, property, value);"/>
+ </eAnnotations>
+ <eParameters name="property" eType="#//Property"/>
+ <eParameters name="value" eType="ecore:EDataType ../../org.eclipse.emf.ecore/model/Ecore.ecore#//EBigInteger"/>
+ </eOperations>
+ <eOperations name="setBoolean">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="body" value="&lt;%org.apache.sdo.util.SDOUtil%>.setBoolean(this, property, value);"/>
+ </eAnnotations>
+ <eParameters name="property" eType="#//Property"/>
+ <eParameters name="value" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean"/>
+ </eOperations>
+ <eOperations name="setByte">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="body" value="&lt;%org.apache.sdo.util.SDOUtil%>.setByte(this, property, value);"/>
+ </eAnnotations>
+ <eParameters name="property" eType="#//Property"/>
+ <eParameters name="value" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EByte"/>
+ </eOperations>
+ <eOperations name="setBytes">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="body" value="&lt;%org.apache.sdo.util.SDOUtil%>.setBytes(this, property, value);"/>
+ </eAnnotations>
+ <eParameters name="property" eType="#//Property"/>
+ <eParameters name="value" eType="ecore:EDataType ../../org.eclipse.emf.ecore/model/Ecore.ecore#//EByteArray"/>
+ </eOperations>
+ <eOperations name="setChar">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="body" value="&lt;%org.apache.sdo.util.SDOUtil%>.setChar(this, property, value);"/>
+ </eAnnotations>
+ <eParameters name="property" eType="#//Property"/>
+ <eParameters name="value" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EChar"/>
+ </eOperations>
+ <eOperations name="setDataObject">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="body" value="&lt;%org.apache.sdo.util.SDOUtil%>.setDataObject(this, property, value);"/>
+ </eAnnotations>
+ <eParameters name="property" eType="#//Property"/>
+ <eParameters name="value" eType="#//DataObject"/>
+ </eOperations>
+ <eOperations name="setDate">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="body" value="&lt;%org.apache.sdo.util.SDOUtil%>.setDate(this, property, value);"/>
+ </eAnnotations>
+ <eParameters name="property" eType="#//Property"/>
+ <eParameters name="value" eType="ecore:EDataType ../../org.eclipse.emf.ecore/model/Ecore.ecore#//EDate"/>
+ </eOperations>
+ <eOperations name="setDouble">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="body" value="&lt;%org.apache.sdo.util.SDOUtil%>.setDouble(this, property, value);"/>
+ </eAnnotations>
+ <eParameters name="property" eType="#//Property"/>
+ <eParameters name="value" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDouble"/>
+ </eOperations>
+ <eOperations name="setFloat">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="body" value="&lt;%org.apache.sdo.util.SDOUtil%>.setFloat(this, property, value);"/>
+ </eAnnotations>
+ <eParameters name="property" eType="#//Property"/>
+ <eParameters name="value" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EFloat"/>
+ </eOperations>
+ <eOperations name="setInt">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="body" value="&lt;%org.apache.sdo.util.SDOUtil%>.setInt(this, property, value);"/>
+ </eAnnotations>
+ <eParameters name="property" eType="#//Property"/>
+ <eParameters name="value" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EInt"/>
+ </eOperations>
+ <eOperations name="setList">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="body" value="&lt;%org.apache.sdo.util.SDOUtil%>.setList(this, property, value);"/>
+ </eAnnotations>
+ <eParameters name="property" eType="#//Property"/>
+ <eParameters name="value" eType="#//EJavaList"/>
+ </eOperations>
+ <eOperations name="setLong">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="body" value="&lt;%org.apache.sdo.util.SDOUtil%>.setLong(this, property, value);"/>
+ </eAnnotations>
+ <eParameters name="property" eType="#//Property"/>
+ <eParameters name="value" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//ELong"/>
+ </eOperations>
+ <eOperations name="setShort">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="body" value="&lt;%org.apache.sdo.util.SDOUtil%>.setShort(this, property, value);"/>
+ </eAnnotations>
+ <eParameters name="property" eType="#//Property"/>
+ <eParameters name="value" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EShort"/>
+ </eOperations>
+ <eOperations name="setString">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="body" value="&lt;%org.apache.sdo.util.SDOUtil%>.setString(this, property, value);"/>
+ </eAnnotations>
+ <eParameters name="property" eType="#//Property"/>
+ <eParameters name="value" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EString"/>
+ </eOperations>
+ <eOperations name="createDataObject" eType="#//DataObject">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="body" value="return &lt;%org.apache.sdo.util.SDOUtil%>.createDataObject(this, propertyName);"/>
+ </eAnnotations>
+ <eParameters name="propertyName" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EString"/>
+ </eOperations>
+ <eOperations name="createDataObject" eType="#//DataObject">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="body" value="return &lt;%org.apache.sdo.util.SDOUtil%>.createDataObject(this, propertyIndex);"/>
+ </eAnnotations>
+ <eParameters name="propertyIndex" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EInt"/>
+ </eOperations>
+ <eOperations name="createDataObject" eType="#//DataObject">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="body" value="return &lt;%org.apache.sdo.util.SDOUtil%>.createDataObject(this, property);"/>
+ </eAnnotations>
+ <eParameters name="property" eType="#//Property"/>
+ </eOperations>
+ <eOperations name="createDataObject" eType="#//DataObject">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="body" value="return &lt;%org.apache.sdo.util.SDOUtil%>.createDataObject(this, propertyName, namespaceURI, typeName);"/>
+ </eAnnotations>
+ <eParameters name="propertyName" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EString"/>
+ <eParameters name="namespaceURI" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EString"/>
+ <eParameters name="typeName" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EString"/>
+ </eOperations>
+ <eOperations name="createDataObject" eType="#//DataObject">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="body" value="return &lt;%org.apache.sdo.util.SDOUtil%>.createDataObject(this, propertyIndex, namespaceURI, typeName);"/>
+ </eAnnotations>
+ <eParameters name="propertyIndex" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EInt"/>
+ <eParameters name="namespaceURI" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EString"/>
+ <eParameters name="typeName" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EString"/>
+ </eOperations>
+ <eOperations name="createDataObject" eType="#//DataObject">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="body" value="return &lt;%org.apache.sdo.util.SDOUtil%>.createDataObject(this, property, type);"/>
+ </eAnnotations>
+ <eParameters name="property" eType="#//Property"/>
+ <eParameters name="type" eType="#//Type"/>
+ </eOperations>
+ <eOperations name="delete">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="body" value="&lt;%org.apache.sdo.util.SDOUtil%>.delete(this);"/>
+ </eAnnotations>
+ </eOperations>
+ <eOperations name="getSequence" eType="#//Sequence">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="body" value="return &lt;%org.apache.sdo.util.SDOUtil%>.getSequence(this);"/>
+ </eAnnotations>
+ </eOperations>
+ <eOperations name="getInstanceProperties" eType="#//EJavaList">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="body" value="return &lt;%org.apache.sdo.util.SDOUtil%>.getInstanceProperties(this);"/>
+ </eAnnotations>
+ </eOperations>
+ <eOperations name="getProperty" eType="#//Property">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="body" value="return &lt;%org.apache.sdo.util.SDOUtil%>.getProperty(this, propertyName);"/>
+ </eAnnotations>
+ <eParameters name="propertyName" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EString"/>
+ </eOperations>
+ <eOperations name="getRootObject" eType="#//DataObject">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="body" value="return &lt;%org.apache.sdo.util.SDOUtil%>.getRootObject(this);"/>
+ </eAnnotations>
+ </eOperations>
+ <eOperations name="getChangeSummary" eType="#//ChangeSummary">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="body" value="return &lt;%org.apache.sdo.util.SDOUtil%>.getChangeSummary(this);"/>
+ </eAnnotations>
+ </eOperations>
+ <eOperations name="detach">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="body" value="&lt;%org.apache.sdo.util.SDOUtil%>.detach(this);"/>
+ </eAnnotations>
+ </eOperations>
+ </eClassifiers>
+ <eClassifiers xsi:type="ecore:EClass" name="Property" instanceClassName="commonj.sdo.Property"
+ abstract="true" interface="true">
+ <eOperations name="getName" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EString"/>
+ <eOperations name="getType" eType="#//Type"/>
+ <eOperations name="isMany" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean"/>
+ <eOperations name="isContainment" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean"/>
+ <eOperations name="isReadOnly" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean"/>
+ <eOperations name="getContainingType" eType="#//Type"/>
+ <eOperations name="getAliasNames" eType="#//EJavaList"/>
+ <eOperations name="getOpposite" eType="#//Property"/>
+ <eOperations name="getDefault" eType="ecore:EDataType ../../org.eclipse.emf.ecore/model/Ecore.ecore#//EJavaObject"/>
+ </eClassifiers>
+ <eClassifiers xsi:type="ecore:EClass" name="Sequence" instanceClassName="commonj.sdo.Sequence"
+ abstract="true" interface="true">
+ <eOperations name="size" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EInt"/>
+ <eOperations name="getProperty" eType="#//Property">
+ <eParameters name="index" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EInt"/>
+ </eOperations>
+ <eOperations name="getValue" eType="ecore:EDataType ../../org.eclipse.emf.ecore/model/Ecore.ecore#//EJavaObject">
+ <eParameters name="index" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EInt"/>
+ </eOperations>
+ <eOperations name="setValue" eType="ecore:EDataType ../../org.eclipse.emf.ecore/model/Ecore.ecore#//EJavaObject">
+ <eParameters name="index" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EInt"/>
+ <eParameters name="value" eType="ecore:EDataType ../../org.eclipse.emf.ecore/model/Ecore.ecore#//EJavaObject"/>
+ </eOperations>
+ <eOperations name="add" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean">
+ <eParameters name="propertyName" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EString"/>
+ <eParameters name="value" eType="ecore:EDataType ../../org.eclipse.emf.ecore/model/Ecore.ecore#//EJavaObject"/>
+ </eOperations>
+ <eOperations name="add" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean">
+ <eParameters name="propertIndex" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EInt"/>
+ <eParameters name="value" eType="ecore:EDataType ../../org.eclipse.emf.ecore/model/Ecore.ecore#//EJavaObject"/>
+ </eOperations>
+ <eOperations name="add" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean">
+ <eParameters name="property" eType="#//Property"/>
+ <eParameters name="value" eType="ecore:EDataType ../../org.eclipse.emf.ecore/model/Ecore.ecore#//EJavaObject"/>
+ </eOperations>
+ <eOperations name="add">
+ <eParameters name="index" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EInt"/>
+ <eParameters name="propertyName" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EString"/>
+ <eParameters name="value" eType="ecore:EDataType ../../org.eclipse.emf.ecore/model/Ecore.ecore#//EJavaObject"/>
+ </eOperations>
+ <eOperations name="add">
+ <eParameters name="index" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EInt"/>
+ <eParameters name="propertyIndex" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EInt"/>
+ <eParameters name="value" eType="ecore:EDataType ../../org.eclipse.emf.ecore/model/Ecore.ecore#//EJavaObject"/>
+ </eOperations>
+ <eOperations name="add">
+ <eParameters name="index" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EInt"/>
+ <eParameters name="property" eType="#//Property"/>
+ <eParameters name="value" eType="ecore:EDataType ../../org.eclipse.emf.ecore/model/Ecore.ecore#//EJavaObject"/>
+ </eOperations>
+ <eOperations name="add">
+ <eParameters name="text" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EString"/>
+ </eOperations>
+ <eOperations name="add">
+ <eParameters name="index" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EInt"/>
+ <eParameters name="text" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EString"/>
+ </eOperations>
+ </eClassifiers>
+ <eClassifiers xsi:type="ecore:EClass" name="Type" instanceClassName="commonj.sdo.Type"
+ abstract="true" interface="true">
+ <eOperations name="getName" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EString"/>
+ <eOperations name="getURI" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EString"/>
+ <eOperations name="getInstanceClass" eType="ecore:EDataType ../../org.eclipse.emf.ecore/model/Ecore.ecore#//EJavaClass"/>
+ <eOperations name="isInstance" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean">
+ <eParameters name="object" eType="ecore:EDataType ../../org.eclipse.emf.ecore/model/Ecore.ecore#//EJavaObject"/>
+ </eOperations>
+ <eOperations name="isDataType" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean"/>
+ <eOperations name="isSequenced" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean"/>
+ <eOperations name="isOpen" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean"/>
+ <eOperations name="isAbstract" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean"/>
+ <eOperations name="getBaseTypes" eType="#//EJavaList"/>
+ <eOperations name="getAliasNames" eType="#//EJavaList"/>
+ <eOperations name="getProperties" eType="#//EJavaList"/>
+ <eOperations name="getDeclaredProperties" eType="#//EJavaList"/>
+ <eOperations name="getProperty" eType="#//Property">
+ <eParameters name="propertyName" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EString"/>
+ </eOperations>
+ </eClassifiers>
+ <eClassifiers xsi:type="ecore:EDataType" name="EJavaList" instanceClassName="java.util.List"
+ serializable="false"/>
+ <eClassifiers xsi:type="ecore:EDataType" name="EObjectStreamException" instanceClassName="java.io.ObjectStreamException"
+ serializable="false"/>
+ <eClassifiers xsi:type="ecore:EClass" name="AnyTypeDataObject" eSuperTypes="#//DataObject ../../org.eclipse.emf.ecore/model/XMLType.ecore#//AnyType">
+ <eAnnotations source="http:///org/eclipse/emf/ecore/util/ExtendedMetaData">
+ <details key="kind" value="mixed"/>
+ </eAnnotations>
+ </eClassifiers>
+ <eClassifiers xsi:type="ecore:EClass" name="SimpleAnyTypeDataObject" eSuperTypes="#//AnyTypeDataObject ../../org.eclipse.emf.ecore/model/XMLType.ecore#//SimpleAnyType">
+ <eAnnotations source="http:///org/eclipse/emf/ecore/util/ExtendedMetaData">
+ <details key="kind" value="simple"/>
+ </eAnnotations>
+ </eClassifiers>
+ <eClassifiers xsi:type="ecore:EClass" name="Class" instanceClassName="commonj.sdo.Type"
+ eSuperTypes="../../org.eclipse.emf.ecore/model/Ecore.ecore#//EClass #//Type"/>
+ <eClassifiers xsi:type="ecore:EClass" name="DataType" instanceClassName="commonj.sdo.Type"
+ eSuperTypes="../../org.eclipse.emf.ecore/model/Ecore.ecore#//EDataType #//Type"/>
+ <eClassifiers xsi:type="ecore:EClass" name="Attribute" instanceClassName="commonj.sdo.Property"
+ eSuperTypes="../../org.eclipse.emf.ecore/model/Ecore.ecore#//EAttribute #//Property"/>
+ <eClassifiers xsi:type="ecore:EClass" name="Reference" instanceClassName="commonj.sdo.Property"
+ eSuperTypes="../../org.eclipse.emf.ecore/model/Ecore.ecore#//EReference #//Property"/>
+ <eClassifiers xsi:type="ecore:EClass" name="Enum" instanceClassName="commonj.sdo.Type"
+ eSuperTypes="../../org.eclipse.emf.ecore/model/Ecore.ecore#//EEnum #//Type"/>
+ <eClassifiers xsi:type="ecore:EClass" name="DynamicDataObject" instanceClassName="commonj.sdo.DataObject"
+ eSuperTypes="#//DataObject"/>
+ <eClassifiers xsi:type="ecore:EClass" name="StoreDataObject" instanceClassName="commonj.sdo.DataObject"
+ eSuperTypes="#//DataObject"/>
+ <eClassifiers xsi:type="ecore:EClass" name="DynamicStoreDataObject" instanceClassName="commonj.sdo.DataObject"
+ eSuperTypes="#//StoreDataObject"/>
+</ecore:EPackage>
diff --git a/branches/sdo-java-M2/sdo/impl/model/SDO.genmodel b/branches/sdo-java-M2/sdo/impl/model/SDO.genmodel
new file mode 100644
index 0000000000..d28946204c
--- /dev/null
+++ b/branches/sdo-java-M2/sdo/impl/model/SDO.genmodel
@@ -0,0 +1,564 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<genmodel:GenModel xmi:version="2.0"
+ xmlns:xmi="http://www.omg.org/XMI" xmlns:ecore="http://www.eclipse.org/emf/2002/Ecore"
+ xmlns:genmodel="http://www.eclipse.org/emf/2002/GenModel" modelDirectory="/org.apache.tuscany.sdo.impl/src/main/java"
+ creationCommands="false" modelPluginID="org.apache.tuscany.sdo.impl" runtimeJar="true"
+ modelName="SDO" modelPluginClass="" updateClasspath="false" rootExtendsClass="org.eclipse.emf.ecore.impl.BasicEObjectImpl"
+ rootImplementsInterface="" testsDirectory="" importerID="org.eclipse.emf.importer.rose"
+ usedGenPackages="../../org.eclipse.emf.ecore/model/Ecore.genmodel#//ecore ../../org.eclipse.emf.ecore/model/XMLType.genmodel#//type ../../org.eclipse.emf.ecore.change/model/Change.genmodel#//change">
+ <foreignModel>SDO.mdl</foreignModel>
+ <foreignModel>VABASE_PLUGINS_PATH</foreignModel>
+ <foreignModel>../..</foreignModel>
+ <genPackages prefix="SDO" basePackage="org.apache.tuscany" disposableProviderFactory="true"
+ adapterFactory="false" generateExampleClass="false" ecorePackage="SDO.ecore#/">
+ <genDataTypes ecoreDataType="SDO.ecore#//EJavaList"/>
+ <genDataTypes ecoreDataType="SDO.ecore#//EObjectStreamException"/>
+ <genClasses ecoreClass="SDO.ecore#//ChangeSummary">
+ <genFeatures notify="false" createChild="false" ecoreFeature="ecore:EReference SDO.ecore#//ChangeSummary/eDataGraph"/>
+ <genOperations ecoreOperation="SDO.ecore#//ChangeSummary/beginLogging"/>
+ <genOperations ecoreOperation="SDO.ecore#//ChangeSummary/endLogging"/>
+ <genOperations ecoreOperation="SDO.ecore#//ChangeSummary/isCreated">
+ <genParameters ecoreParameter="SDO.ecore#//ChangeSummary/isCreated/dataObject"/>
+ </genOperations>
+ <genOperations ecoreOperation="SDO.ecore#//ChangeSummary/isDeleted">
+ <genParameters ecoreParameter="SDO.ecore#//ChangeSummary/isDeleted/dataObject"/>
+ </genOperations>
+ <genOperations ecoreOperation="SDO.ecore#//ChangeSummary/getOldValues">
+ <genParameters ecoreParameter="SDO.ecore#//ChangeSummary/getOldValues/dataObject"/>
+ </genOperations>
+ <genOperations ecoreOperation="SDO.ecore#//ChangeSummary/isModified">
+ <genParameters ecoreParameter="SDO.ecore#//ChangeSummary/isModified/dataObject"/>
+ </genOperations>
+ <genOperations ecoreOperation="SDO.ecore#//ChangeSummary/getOldValue">
+ <genParameters ecoreParameter="SDO.ecore#//ChangeSummary/getOldValue/dataObject"/>
+ <genParameters ecoreParameter="SDO.ecore#//ChangeSummary/getOldValue/property"/>
+ </genOperations>
+ <genOperations ecoreOperation="SDO.ecore#//ChangeSummary/getOldContainer">
+ <genParameters ecoreParameter="SDO.ecore#//ChangeSummary/getOldContainer/dataObject"/>
+ </genOperations>
+ <genOperations ecoreOperation="SDO.ecore#//ChangeSummary/getOldContainmentProperty">
+ <genParameters ecoreParameter="SDO.ecore#//ChangeSummary/getOldContainmentProperty/dataObject"/>
+ </genOperations>
+ <genOperations ecoreOperation="SDO.ecore#//ChangeSummary/getOldSequence">
+ <genParameters ecoreParameter="SDO.ecore#//ChangeSummary/getOldSequence/dataObject"/>
+ </genOperations>
+ <genOperations ecoreOperation="SDO.ecore#//ChangeSummary/undoChanges"/>
+ <genOperations ecoreOperation="SDO.ecore#//ChangeSummary/isLogging"/>
+ <genOperations ecoreOperation="SDO.ecore#//ChangeSummary/getDataGraph"/>
+ <genOperations ecoreOperation="SDO.ecore#//ChangeSummary/getChangedObjects"/>
+ <genOperations ecoreOperation="SDO.ecore#//ChangeSummary/getRootObject"/>
+ </genClasses>
+ <genClasses ecoreClass="SDO.ecore#//ChangeSummarySetting">
+ <genOperations ecoreOperation="SDO.ecore#//ChangeSummarySetting/isSet"/>
+ <genOperations ecoreOperation="SDO.ecore#//ChangeSummarySetting/getValue"/>
+ <genOperations ecoreOperation="SDO.ecore#//ChangeSummarySetting/getProperty"/>
+ </genClasses>
+ <genClasses ecoreClass="SDO.ecore#//DataGraph">
+ <genFeatures createChild="false" ecoreFeature="ecore:EAttribute SDO.ecore#//DataGraph/resourceSet"/>
+ <genFeatures property="Readonly" createChild="false" ecoreFeature="ecore:EAttribute SDO.ecore#//DataGraph/rootResource"/>
+ <genFeatures notify="false" createChild="false" ecoreFeature="ecore:EReference SDO.ecore#//DataGraph/eChangeSummary"/>
+ <genFeatures notify="false" createChild="false" ecoreFeature="ecore:EReference SDO.ecore#//DataGraph/eRootObject"/>
+ <genOperations ecoreOperation="SDO.ecore#//DataGraph/createRootObject">
+ <genParameters ecoreParameter="SDO.ecore#//DataGraph/createRootObject/namespaceURI"/>
+ <genParameters ecoreParameter="SDO.ecore#//DataGraph/createRootObject/typeName"/>
+ </genOperations>
+ <genOperations ecoreOperation="SDO.ecore#//DataGraph/createRootObject.1">
+ <genParameters ecoreParameter="SDO.ecore#//DataGraph/createRootObject.1/type"/>
+ </genOperations>
+ <genOperations ecoreOperation="SDO.ecore#//DataGraph/getType">
+ <genParameters ecoreParameter="SDO.ecore#//DataGraph/getType/namespaceURI"/>
+ <genParameters ecoreParameter="SDO.ecore#//DataGraph/getType/typeName"/>
+ </genOperations>
+ <genOperations ecoreOperation="SDO.ecore#//DataGraph/getRootObject"/>
+ <genOperations ecoreOperation="SDO.ecore#//DataGraph/getChangeSummary"/>
+ </genClasses>
+ <genClasses ecoreClass="SDO.ecore#//DataObject">
+ <genOperations ecoreOperation="SDO.ecore#//DataObject/get">
+ <genParameters ecoreParameter="SDO.ecore#//DataObject/get/path"/>
+ </genOperations>
+ <genOperations ecoreOperation="SDO.ecore#//DataObject/set">
+ <genParameters ecoreParameter="SDO.ecore#//DataObject/set/path"/>
+ <genParameters ecoreParameter="SDO.ecore#//DataObject/set/value"/>
+ </genOperations>
+ <genOperations ecoreOperation="SDO.ecore#//DataObject/isSet">
+ <genParameters ecoreParameter="SDO.ecore#//DataObject/isSet/path"/>
+ </genOperations>
+ <genOperations ecoreOperation="SDO.ecore#//DataObject/unset">
+ <genParameters ecoreParameter="SDO.ecore#//DataObject/unset/path"/>
+ </genOperations>
+ <genOperations ecoreOperation="SDO.ecore#//DataObject/get.1">
+ <genParameters ecoreParameter="SDO.ecore#//DataObject/get.1/propertyIndex"/>
+ </genOperations>
+ <genOperations ecoreOperation="SDO.ecore#//DataObject/set.1">
+ <genParameters ecoreParameter="SDO.ecore#//DataObject/set.1/propertyIndex"/>
+ <genParameters ecoreParameter="SDO.ecore#//DataObject/set.1/value"/>
+ </genOperations>
+ <genOperations ecoreOperation="SDO.ecore#//DataObject/isSet.1">
+ <genParameters ecoreParameter="SDO.ecore#//DataObject/isSet.1/propertyIndex"/>
+ </genOperations>
+ <genOperations ecoreOperation="SDO.ecore#//DataObject/unset.1">
+ <genParameters ecoreParameter="SDO.ecore#//DataObject/unset.1/propertyIndex"/>
+ </genOperations>
+ <genOperations ecoreOperation="SDO.ecore#//DataObject/get.2">
+ <genParameters ecoreParameter="SDO.ecore#//DataObject/get.2/property"/>
+ </genOperations>
+ <genOperations ecoreOperation="SDO.ecore#//DataObject/set.2">
+ <genParameters ecoreParameter="SDO.ecore#//DataObject/set.2/property"/>
+ <genParameters ecoreParameter="SDO.ecore#//DataObject/set.2/value"/>
+ </genOperations>
+ <genOperations ecoreOperation="SDO.ecore#//DataObject/isSet.2">
+ <genParameters ecoreParameter="SDO.ecore#//DataObject/isSet.2/property"/>
+ </genOperations>
+ <genOperations ecoreOperation="SDO.ecore#//DataObject/unset.2">
+ <genParameters ecoreParameter="SDO.ecore#//DataObject/unset.2/property"/>
+ </genOperations>
+ <genOperations ecoreOperation="SDO.ecore#//DataObject/getContainer"/>
+ <genOperations ecoreOperation="SDO.ecore#//DataObject/getContainmentProperty"/>
+ <genOperations ecoreOperation="SDO.ecore#//DataObject/getDataGraph"/>
+ <genOperations ecoreOperation="SDO.ecore#//DataObject/getType"/>
+ <genOperations ecoreOperation="SDO.ecore#//DataObject/getBigDecimal">
+ <genParameters ecoreParameter="SDO.ecore#//DataObject/getBigDecimal/path"/>
+ </genOperations>
+ <genOperations ecoreOperation="SDO.ecore#//DataObject/getBigInteger">
+ <genParameters ecoreParameter="SDO.ecore#//DataObject/getBigInteger/path"/>
+ </genOperations>
+ <genOperations ecoreOperation="SDO.ecore#//DataObject/getBoolean">
+ <genParameters ecoreParameter="SDO.ecore#//DataObject/getBoolean/path"/>
+ </genOperations>
+ <genOperations ecoreOperation="SDO.ecore#//DataObject/getByte">
+ <genParameters ecoreParameter="SDO.ecore#//DataObject/getByte/path"/>
+ </genOperations>
+ <genOperations ecoreOperation="SDO.ecore#//DataObject/getBytes">
+ <genParameters ecoreParameter="SDO.ecore#//DataObject/getBytes/path"/>
+ </genOperations>
+ <genOperations ecoreOperation="SDO.ecore#//DataObject/getChar">
+ <genParameters ecoreParameter="SDO.ecore#//DataObject/getChar/path"/>
+ </genOperations>
+ <genOperations ecoreOperation="SDO.ecore#//DataObject/getDataObject">
+ <genParameters ecoreParameter="SDO.ecore#//DataObject/getDataObject/path"/>
+ </genOperations>
+ <genOperations ecoreOperation="SDO.ecore#//DataObject/getDate">
+ <genParameters ecoreParameter="SDO.ecore#//DataObject/getDate/path"/>
+ </genOperations>
+ <genOperations ecoreOperation="SDO.ecore#//DataObject/getDouble">
+ <genParameters ecoreParameter="SDO.ecore#//DataObject/getDouble/path"/>
+ </genOperations>
+ <genOperations ecoreOperation="SDO.ecore#//DataObject/getFloat">
+ <genParameters ecoreParameter="SDO.ecore#//DataObject/getFloat/path"/>
+ </genOperations>
+ <genOperations ecoreOperation="SDO.ecore#//DataObject/getInt">
+ <genParameters ecoreParameter="SDO.ecore#//DataObject/getInt/path"/>
+ </genOperations>
+ <genOperations ecoreOperation="SDO.ecore#//DataObject/getList">
+ <genParameters ecoreParameter="SDO.ecore#//DataObject/getList/path"/>
+ </genOperations>
+ <genOperations ecoreOperation="SDO.ecore#//DataObject/getLong">
+ <genParameters ecoreParameter="SDO.ecore#//DataObject/getLong/path"/>
+ </genOperations>
+ <genOperations ecoreOperation="SDO.ecore#//DataObject/getSequence">
+ <genParameters ecoreParameter="SDO.ecore#//DataObject/getSequence/path"/>
+ </genOperations>
+ <genOperations ecoreOperation="SDO.ecore#//DataObject/getShort">
+ <genParameters ecoreParameter="SDO.ecore#//DataObject/getShort/path"/>
+ </genOperations>
+ <genOperations ecoreOperation="SDO.ecore#//DataObject/getString">
+ <genParameters ecoreParameter="SDO.ecore#//DataObject/getString/path"/>
+ </genOperations>
+ <genOperations ecoreOperation="SDO.ecore#//DataObject/setBigDecimal">
+ <genParameters ecoreParameter="SDO.ecore#//DataObject/setBigDecimal/path"/>
+ <genParameters ecoreParameter="SDO.ecore#//DataObject/setBigDecimal/value"/>
+ </genOperations>
+ <genOperations ecoreOperation="SDO.ecore#//DataObject/setBigInteger">
+ <genParameters ecoreParameter="SDO.ecore#//DataObject/setBigInteger/path"/>
+ <genParameters ecoreParameter="SDO.ecore#//DataObject/setBigInteger/value"/>
+ </genOperations>
+ <genOperations ecoreOperation="SDO.ecore#//DataObject/setBoolean">
+ <genParameters ecoreParameter="SDO.ecore#//DataObject/setBoolean/path"/>
+ <genParameters ecoreParameter="SDO.ecore#//DataObject/setBoolean/value"/>
+ </genOperations>
+ <genOperations ecoreOperation="SDO.ecore#//DataObject/setByte">
+ <genParameters ecoreParameter="SDO.ecore#//DataObject/setByte/path"/>
+ <genParameters ecoreParameter="SDO.ecore#//DataObject/setByte/value"/>
+ </genOperations>
+ <genOperations ecoreOperation="SDO.ecore#//DataObject/setBytes">
+ <genParameters ecoreParameter="SDO.ecore#//DataObject/setBytes/path"/>
+ <genParameters ecoreParameter="SDO.ecore#//DataObject/setBytes/value"/>
+ </genOperations>
+ <genOperations ecoreOperation="SDO.ecore#//DataObject/setChar">
+ <genParameters ecoreParameter="SDO.ecore#//DataObject/setChar/path"/>
+ <genParameters ecoreParameter="SDO.ecore#//DataObject/setChar/value"/>
+ </genOperations>
+ <genOperations ecoreOperation="SDO.ecore#//DataObject/setDataObject">
+ <genParameters ecoreParameter="SDO.ecore#//DataObject/setDataObject/path"/>
+ <genParameters ecoreParameter="SDO.ecore#//DataObject/setDataObject/value"/>
+ </genOperations>
+ <genOperations ecoreOperation="SDO.ecore#//DataObject/setDate">
+ <genParameters ecoreParameter="SDO.ecore#//DataObject/setDate/path"/>
+ <genParameters ecoreParameter="SDO.ecore#//DataObject/setDate/value"/>
+ </genOperations>
+ <genOperations ecoreOperation="SDO.ecore#//DataObject/setDouble">
+ <genParameters ecoreParameter="SDO.ecore#//DataObject/setDouble/path"/>
+ <genParameters ecoreParameter="SDO.ecore#//DataObject/setDouble/value"/>
+ </genOperations>
+ <genOperations ecoreOperation="SDO.ecore#//DataObject/setFloat">
+ <genParameters ecoreParameter="SDO.ecore#//DataObject/setFloat/path"/>
+ <genParameters ecoreParameter="SDO.ecore#//DataObject/setFloat/value"/>
+ </genOperations>
+ <genOperations ecoreOperation="SDO.ecore#//DataObject/setInt">
+ <genParameters ecoreParameter="SDO.ecore#//DataObject/setInt/path"/>
+ <genParameters ecoreParameter="SDO.ecore#//DataObject/setInt/value"/>
+ </genOperations>
+ <genOperations ecoreOperation="SDO.ecore#//DataObject/setList">
+ <genParameters ecoreParameter="SDO.ecore#//DataObject/setList/path"/>
+ <genParameters ecoreParameter="SDO.ecore#//DataObject/setList/value"/>
+ </genOperations>
+ <genOperations ecoreOperation="SDO.ecore#//DataObject/setLong">
+ <genParameters ecoreParameter="SDO.ecore#//DataObject/setLong/path"/>
+ <genParameters ecoreParameter="SDO.ecore#//DataObject/setLong/value"/>
+ </genOperations>
+ <genOperations ecoreOperation="SDO.ecore#//DataObject/setShort">
+ <genParameters ecoreParameter="SDO.ecore#//DataObject/setShort/path"/>
+ <genParameters ecoreParameter="SDO.ecore#//DataObject/setShort/value"/>
+ </genOperations>
+ <genOperations ecoreOperation="SDO.ecore#//DataObject/setString">
+ <genParameters ecoreParameter="SDO.ecore#//DataObject/setString/path"/>
+ <genParameters ecoreParameter="SDO.ecore#//DataObject/setString/value"/>
+ </genOperations>
+ <genOperations ecoreOperation="SDO.ecore#//DataObject/getBigDecimal.1">
+ <genParameters ecoreParameter="SDO.ecore#//DataObject/getBigDecimal.1/propertyIndex"/>
+ </genOperations>
+ <genOperations ecoreOperation="SDO.ecore#//DataObject/getBigInteger.1">
+ <genParameters ecoreParameter="SDO.ecore#//DataObject/getBigInteger.1/propertyIndex"/>
+ </genOperations>
+ <genOperations ecoreOperation="SDO.ecore#//DataObject/getBoolean.1">
+ <genParameters ecoreParameter="SDO.ecore#//DataObject/getBoolean.1/propertyIndex"/>
+ </genOperations>
+ <genOperations ecoreOperation="SDO.ecore#//DataObject/getByte.1">
+ <genParameters ecoreParameter="SDO.ecore#//DataObject/getByte.1/propertyIndex"/>
+ </genOperations>
+ <genOperations ecoreOperation="SDO.ecore#//DataObject/getBytes.1">
+ <genParameters ecoreParameter="SDO.ecore#//DataObject/getBytes.1/propertyIndex"/>
+ </genOperations>
+ <genOperations ecoreOperation="SDO.ecore#//DataObject/getChar.1">
+ <genParameters ecoreParameter="SDO.ecore#//DataObject/getChar.1/propertyIndex"/>
+ </genOperations>
+ <genOperations ecoreOperation="SDO.ecore#//DataObject/getDataObject.1">
+ <genParameters ecoreParameter="SDO.ecore#//DataObject/getDataObject.1/propertyIndex"/>
+ </genOperations>
+ <genOperations ecoreOperation="SDO.ecore#//DataObject/getDate.1">
+ <genParameters ecoreParameter="SDO.ecore#//DataObject/getDate.1/propertyIndex"/>
+ </genOperations>
+ <genOperations ecoreOperation="SDO.ecore#//DataObject/getDouble.1">
+ <genParameters ecoreParameter="SDO.ecore#//DataObject/getDouble.1/propertyIndex"/>
+ </genOperations>
+ <genOperations ecoreOperation="SDO.ecore#//DataObject/getFloat.1">
+ <genParameters ecoreParameter="SDO.ecore#//DataObject/getFloat.1/propertyIndex"/>
+ </genOperations>
+ <genOperations ecoreOperation="SDO.ecore#//DataObject/getInt.1">
+ <genParameters ecoreParameter="SDO.ecore#//DataObject/getInt.1/propertyIndex"/>
+ </genOperations>
+ <genOperations ecoreOperation="SDO.ecore#//DataObject/getList.1">
+ <genParameters ecoreParameter="SDO.ecore#//DataObject/getList.1/propertyIndex"/>
+ </genOperations>
+ <genOperations ecoreOperation="SDO.ecore#//DataObject/getLong.1">
+ <genParameters ecoreParameter="SDO.ecore#//DataObject/getLong.1/propertyIndex"/>
+ </genOperations>
+ <genOperations ecoreOperation="SDO.ecore#//DataObject/getSequence.1">
+ <genParameters ecoreParameter="SDO.ecore#//DataObject/getSequence.1/propertyIndex"/>
+ </genOperations>
+ <genOperations ecoreOperation="SDO.ecore#//DataObject/getShort.1">
+ <genParameters ecoreParameter="SDO.ecore#//DataObject/getShort.1/propertyIndex"/>
+ </genOperations>
+ <genOperations ecoreOperation="SDO.ecore#//DataObject/getString.1">
+ <genParameters ecoreParameter="SDO.ecore#//DataObject/getString.1/propertyIndex"/>
+ </genOperations>
+ <genOperations ecoreOperation="SDO.ecore#//DataObject/setBigDecimal.1">
+ <genParameters ecoreParameter="SDO.ecore#//DataObject/setBigDecimal.1/propertyIndex"/>
+ <genParameters ecoreParameter="SDO.ecore#//DataObject/setBigDecimal.1/value"/>
+ </genOperations>
+ <genOperations ecoreOperation="SDO.ecore#//DataObject/setBigInteger.1">
+ <genParameters ecoreParameter="SDO.ecore#//DataObject/setBigInteger.1/propertyIndex"/>
+ <genParameters ecoreParameter="SDO.ecore#//DataObject/setBigInteger.1/value"/>
+ </genOperations>
+ <genOperations ecoreOperation="SDO.ecore#//DataObject/setBoolean.1">
+ <genParameters ecoreParameter="SDO.ecore#//DataObject/setBoolean.1/propertyIndex"/>
+ <genParameters ecoreParameter="SDO.ecore#//DataObject/setBoolean.1/value"/>
+ </genOperations>
+ <genOperations ecoreOperation="SDO.ecore#//DataObject/setByte.1">
+ <genParameters ecoreParameter="SDO.ecore#//DataObject/setByte.1/propertyIndex"/>
+ <genParameters ecoreParameter="SDO.ecore#//DataObject/setByte.1/value"/>
+ </genOperations>
+ <genOperations ecoreOperation="SDO.ecore#//DataObject/setBytes.1">
+ <genParameters ecoreParameter="SDO.ecore#//DataObject/setBytes.1/propertyIndex"/>
+ <genParameters ecoreParameter="SDO.ecore#//DataObject/setBytes.1/value"/>
+ </genOperations>
+ <genOperations ecoreOperation="SDO.ecore#//DataObject/setChar.1">
+ <genParameters ecoreParameter="SDO.ecore#//DataObject/setChar.1/propertyIndex"/>
+ <genParameters ecoreParameter="SDO.ecore#//DataObject/setChar.1/value"/>
+ </genOperations>
+ <genOperations ecoreOperation="SDO.ecore#//DataObject/setDataObject.1">
+ <genParameters ecoreParameter="SDO.ecore#//DataObject/setDataObject.1/propertyIndex"/>
+ <genParameters ecoreParameter="SDO.ecore#//DataObject/setDataObject.1/value"/>
+ </genOperations>
+ <genOperations ecoreOperation="SDO.ecore#//DataObject/setDate.1">
+ <genParameters ecoreParameter="SDO.ecore#//DataObject/setDate.1/propertyIndex"/>
+ <genParameters ecoreParameter="SDO.ecore#//DataObject/setDate.1/value"/>
+ </genOperations>
+ <genOperations ecoreOperation="SDO.ecore#//DataObject/setDouble.1">
+ <genParameters ecoreParameter="SDO.ecore#//DataObject/setDouble.1/propertyIndex"/>
+ <genParameters ecoreParameter="SDO.ecore#//DataObject/setDouble.1/value"/>
+ </genOperations>
+ <genOperations ecoreOperation="SDO.ecore#//DataObject/setFloat.1">
+ <genParameters ecoreParameter="SDO.ecore#//DataObject/setFloat.1/propertyIndex"/>
+ <genParameters ecoreParameter="SDO.ecore#//DataObject/setFloat.1/value"/>
+ </genOperations>
+ <genOperations ecoreOperation="SDO.ecore#//DataObject/setInt.1">
+ <genParameters ecoreParameter="SDO.ecore#//DataObject/setInt.1/propertyIndex"/>
+ <genParameters ecoreParameter="SDO.ecore#//DataObject/setInt.1/value"/>
+ </genOperations>
+ <genOperations ecoreOperation="SDO.ecore#//DataObject/setList.1">
+ <genParameters ecoreParameter="SDO.ecore#//DataObject/setList.1/propertyIndex"/>
+ <genParameters ecoreParameter="SDO.ecore#//DataObject/setList.1/value"/>
+ </genOperations>
+ <genOperations ecoreOperation="SDO.ecore#//DataObject/setLong.1">
+ <genParameters ecoreParameter="SDO.ecore#//DataObject/setLong.1/propertyIndex"/>
+ <genParameters ecoreParameter="SDO.ecore#//DataObject/setLong.1/value"/>
+ </genOperations>
+ <genOperations ecoreOperation="SDO.ecore#//DataObject/setShort.1">
+ <genParameters ecoreParameter="SDO.ecore#//DataObject/setShort.1/propertyIndex"/>
+ <genParameters ecoreParameter="SDO.ecore#//DataObject/setShort.1/value"/>
+ </genOperations>
+ <genOperations ecoreOperation="SDO.ecore#//DataObject/setString.1">
+ <genParameters ecoreParameter="SDO.ecore#//DataObject/setString.1/propertyIndex"/>
+ <genParameters ecoreParameter="SDO.ecore#//DataObject/setString.1/value"/>
+ </genOperations>
+ <genOperations ecoreOperation="SDO.ecore#//DataObject/getBigDecimal.2">
+ <genParameters ecoreParameter="SDO.ecore#//DataObject/getBigDecimal.2/property"/>
+ </genOperations>
+ <genOperations ecoreOperation="SDO.ecore#//DataObject/getBigInteger.2">
+ <genParameters ecoreParameter="SDO.ecore#//DataObject/getBigInteger.2/property"/>
+ </genOperations>
+ <genOperations ecoreOperation="SDO.ecore#//DataObject/getBoolean.2">
+ <genParameters ecoreParameter="SDO.ecore#//DataObject/getBoolean.2/property"/>
+ </genOperations>
+ <genOperations ecoreOperation="SDO.ecore#//DataObject/getByte.2">
+ <genParameters ecoreParameter="SDO.ecore#//DataObject/getByte.2/property"/>
+ </genOperations>
+ <genOperations ecoreOperation="SDO.ecore#//DataObject/getBytes.2">
+ <genParameters ecoreParameter="SDO.ecore#//DataObject/getBytes.2/property"/>
+ </genOperations>
+ <genOperations ecoreOperation="SDO.ecore#//DataObject/getChar.2">
+ <genParameters ecoreParameter="SDO.ecore#//DataObject/getChar.2/property"/>
+ </genOperations>
+ <genOperations ecoreOperation="SDO.ecore#//DataObject/getDataObject.2">
+ <genParameters ecoreParameter="SDO.ecore#//DataObject/getDataObject.2/property"/>
+ </genOperations>
+ <genOperations ecoreOperation="SDO.ecore#//DataObject/getDate.2">
+ <genParameters ecoreParameter="SDO.ecore#//DataObject/getDate.2/property"/>
+ </genOperations>
+ <genOperations ecoreOperation="SDO.ecore#//DataObject/getDouble.2">
+ <genParameters ecoreParameter="SDO.ecore#//DataObject/getDouble.2/property"/>
+ </genOperations>
+ <genOperations ecoreOperation="SDO.ecore#//DataObject/getFloat.2">
+ <genParameters ecoreParameter="SDO.ecore#//DataObject/getFloat.2/property"/>
+ </genOperations>
+ <genOperations ecoreOperation="SDO.ecore#//DataObject/getInt.2">
+ <genParameters ecoreParameter="SDO.ecore#//DataObject/getInt.2/property"/>
+ </genOperations>
+ <genOperations ecoreOperation="SDO.ecore#//DataObject/getList.2">
+ <genParameters ecoreParameter="SDO.ecore#//DataObject/getList.2/property"/>
+ </genOperations>
+ <genOperations ecoreOperation="SDO.ecore#//DataObject/getLong.2">
+ <genParameters ecoreParameter="SDO.ecore#//DataObject/getLong.2/property"/>
+ </genOperations>
+ <genOperations ecoreOperation="SDO.ecore#//DataObject/getSequence.2">
+ <genParameters ecoreParameter="SDO.ecore#//DataObject/getSequence.2/property"/>
+ </genOperations>
+ <genOperations ecoreOperation="SDO.ecore#//DataObject/getShort.2">
+ <genParameters ecoreParameter="SDO.ecore#//DataObject/getShort.2/property"/>
+ </genOperations>
+ <genOperations ecoreOperation="SDO.ecore#//DataObject/getString.2">
+ <genParameters ecoreParameter="SDO.ecore#//DataObject/getString.2/property"/>
+ </genOperations>
+ <genOperations ecoreOperation="SDO.ecore#//DataObject/setBigDecimal.2">
+ <genParameters ecoreParameter="SDO.ecore#//DataObject/setBigDecimal.2/property"/>
+ <genParameters ecoreParameter="SDO.ecore#//DataObject/setBigDecimal.2/value"/>
+ </genOperations>
+ <genOperations ecoreOperation="SDO.ecore#//DataObject/setBigInteger.2">
+ <genParameters ecoreParameter="SDO.ecore#//DataObject/setBigInteger.2/property"/>
+ <genParameters ecoreParameter="SDO.ecore#//DataObject/setBigInteger.2/value"/>
+ </genOperations>
+ <genOperations ecoreOperation="SDO.ecore#//DataObject/setBoolean.2">
+ <genParameters ecoreParameter="SDO.ecore#//DataObject/setBoolean.2/property"/>
+ <genParameters ecoreParameter="SDO.ecore#//DataObject/setBoolean.2/value"/>
+ </genOperations>
+ <genOperations ecoreOperation="SDO.ecore#//DataObject/setByte.2">
+ <genParameters ecoreParameter="SDO.ecore#//DataObject/setByte.2/property"/>
+ <genParameters ecoreParameter="SDO.ecore#//DataObject/setByte.2/value"/>
+ </genOperations>
+ <genOperations ecoreOperation="SDO.ecore#//DataObject/setBytes.2">
+ <genParameters ecoreParameter="SDO.ecore#//DataObject/setBytes.2/property"/>
+ <genParameters ecoreParameter="SDO.ecore#//DataObject/setBytes.2/value"/>
+ </genOperations>
+ <genOperations ecoreOperation="SDO.ecore#//DataObject/setChar.2">
+ <genParameters ecoreParameter="SDO.ecore#//DataObject/setChar.2/property"/>
+ <genParameters ecoreParameter="SDO.ecore#//DataObject/setChar.2/value"/>
+ </genOperations>
+ <genOperations ecoreOperation="SDO.ecore#//DataObject/setDataObject.2">
+ <genParameters ecoreParameter="SDO.ecore#//DataObject/setDataObject.2/property"/>
+ <genParameters ecoreParameter="SDO.ecore#//DataObject/setDataObject.2/value"/>
+ </genOperations>
+ <genOperations ecoreOperation="SDO.ecore#//DataObject/setDate.2">
+ <genParameters ecoreParameter="SDO.ecore#//DataObject/setDate.2/property"/>
+ <genParameters ecoreParameter="SDO.ecore#//DataObject/setDate.2/value"/>
+ </genOperations>
+ <genOperations ecoreOperation="SDO.ecore#//DataObject/setDouble.2">
+ <genParameters ecoreParameter="SDO.ecore#//DataObject/setDouble.2/property"/>
+ <genParameters ecoreParameter="SDO.ecore#//DataObject/setDouble.2/value"/>
+ </genOperations>
+ <genOperations ecoreOperation="SDO.ecore#//DataObject/setFloat.2">
+ <genParameters ecoreParameter="SDO.ecore#//DataObject/setFloat.2/property"/>
+ <genParameters ecoreParameter="SDO.ecore#//DataObject/setFloat.2/value"/>
+ </genOperations>
+ <genOperations ecoreOperation="SDO.ecore#//DataObject/setInt.2">
+ <genParameters ecoreParameter="SDO.ecore#//DataObject/setInt.2/property"/>
+ <genParameters ecoreParameter="SDO.ecore#//DataObject/setInt.2/value"/>
+ </genOperations>
+ <genOperations ecoreOperation="SDO.ecore#//DataObject/setList.2">
+ <genParameters ecoreParameter="SDO.ecore#//DataObject/setList.2/property"/>
+ <genParameters ecoreParameter="SDO.ecore#//DataObject/setList.2/value"/>
+ </genOperations>
+ <genOperations ecoreOperation="SDO.ecore#//DataObject/setLong.2">
+ <genParameters ecoreParameter="SDO.ecore#//DataObject/setLong.2/property"/>
+ <genParameters ecoreParameter="SDO.ecore#//DataObject/setLong.2/value"/>
+ </genOperations>
+ <genOperations ecoreOperation="SDO.ecore#//DataObject/setShort.2">
+ <genParameters ecoreParameter="SDO.ecore#//DataObject/setShort.2/property"/>
+ <genParameters ecoreParameter="SDO.ecore#//DataObject/setShort.2/value"/>
+ </genOperations>
+ <genOperations ecoreOperation="SDO.ecore#//DataObject/setString.2">
+ <genParameters ecoreParameter="SDO.ecore#//DataObject/setString.2/property"/>
+ <genParameters ecoreParameter="SDO.ecore#//DataObject/setString.2/value"/>
+ </genOperations>
+ <genOperations ecoreOperation="SDO.ecore#//DataObject/createDataObject">
+ <genParameters ecoreParameter="SDO.ecore#//DataObject/createDataObject/propertyName"/>
+ </genOperations>
+ <genOperations ecoreOperation="SDO.ecore#//DataObject/createDataObject.1">
+ <genParameters ecoreParameter="SDO.ecore#//DataObject/createDataObject.1/propertyIndex"/>
+ </genOperations>
+ <genOperations ecoreOperation="SDO.ecore#//DataObject/createDataObject.2">
+ <genParameters ecoreParameter="SDO.ecore#//DataObject/createDataObject.2/property"/>
+ </genOperations>
+ <genOperations ecoreOperation="SDO.ecore#//DataObject/createDataObject.3">
+ <genParameters ecoreParameter="SDO.ecore#//DataObject/createDataObject.3/propertyName"/>
+ <genParameters ecoreParameter="SDO.ecore#//DataObject/createDataObject.3/namespaceURI"/>
+ <genParameters ecoreParameter="SDO.ecore#//DataObject/createDataObject.3/typeName"/>
+ </genOperations>
+ <genOperations ecoreOperation="SDO.ecore#//DataObject/createDataObject.4">
+ <genParameters ecoreParameter="SDO.ecore#//DataObject/createDataObject.4/propertyIndex"/>
+ <genParameters ecoreParameter="SDO.ecore#//DataObject/createDataObject.4/namespaceURI"/>
+ <genParameters ecoreParameter="SDO.ecore#//DataObject/createDataObject.4/typeName"/>
+ </genOperations>
+ <genOperations ecoreOperation="SDO.ecore#//DataObject/createDataObject.5">
+ <genParameters ecoreParameter="SDO.ecore#//DataObject/createDataObject.5/property"/>
+ <genParameters ecoreParameter="SDO.ecore#//DataObject/createDataObject.5/type"/>
+ </genOperations>
+ <genOperations ecoreOperation="SDO.ecore#//DataObject/delete"/>
+ <genOperations ecoreOperation="SDO.ecore#//DataObject/getSequence.3"/>
+ <genOperations ecoreOperation="SDO.ecore#//DataObject/getInstanceProperties"/>
+ <genOperations ecoreOperation="SDO.ecore#//DataObject/getProperty">
+ <genParameters ecoreParameter="SDO.ecore#//DataObject/getProperty/propertyName"/>
+ </genOperations>
+ <genOperations ecoreOperation="SDO.ecore#//DataObject/getRootObject"/>
+ <genOperations ecoreOperation="SDO.ecore#//DataObject/getChangeSummary"/>
+ <genOperations ecoreOperation="SDO.ecore#//DataObject/detach"/>
+ </genClasses>
+ <genClasses ecoreClass="SDO.ecore#//Property">
+ <genOperations ecoreOperation="SDO.ecore#//Property/getName"/>
+ <genOperations ecoreOperation="SDO.ecore#//Property/getType"/>
+ <genOperations ecoreOperation="SDO.ecore#//Property/isMany"/>
+ <genOperations ecoreOperation="SDO.ecore#//Property/isContainment"/>
+ <genOperations ecoreOperation="SDO.ecore#//Property/isReadOnly"/>
+ <genOperations ecoreOperation="SDO.ecore#//Property/getContainingType"/>
+ <genOperations ecoreOperation="SDO.ecore#//Property/getAliasNames"/>
+ <genOperations ecoreOperation="SDO.ecore#//Property/getOpposite"/>
+ <genOperations ecoreOperation="SDO.ecore#//Property/getDefault"/>
+ </genClasses>
+ <genClasses ecoreClass="SDO.ecore#//Sequence">
+ <genOperations ecoreOperation="SDO.ecore#//Sequence/size"/>
+ <genOperations ecoreOperation="SDO.ecore#//Sequence/getProperty">
+ <genParameters ecoreParameter="SDO.ecore#//Sequence/getProperty/index"/>
+ </genOperations>
+ <genOperations ecoreOperation="SDO.ecore#//Sequence/getValue">
+ <genParameters ecoreParameter="SDO.ecore#//Sequence/getValue/index"/>
+ </genOperations>
+ <genOperations ecoreOperation="SDO.ecore#//Sequence/setValue">
+ <genParameters ecoreParameter="SDO.ecore#//Sequence/setValue/index"/>
+ <genParameters ecoreParameter="SDO.ecore#//Sequence/setValue/value"/>
+ </genOperations>
+ <genOperations ecoreOperation="SDO.ecore#//Sequence/add">
+ <genParameters ecoreParameter="SDO.ecore#//Sequence/add/propertyName"/>
+ <genParameters ecoreParameter="SDO.ecore#//Sequence/add/value"/>
+ </genOperations>
+ <genOperations ecoreOperation="SDO.ecore#//Sequence/add.1">
+ <genParameters ecoreParameter="SDO.ecore#//Sequence/add.1/propertIndex"/>
+ <genParameters ecoreParameter="SDO.ecore#//Sequence/add.1/value"/>
+ </genOperations>
+ <genOperations ecoreOperation="SDO.ecore#//Sequence/add.2">
+ <genParameters ecoreParameter="SDO.ecore#//Sequence/add.2/property"/>
+ <genParameters ecoreParameter="SDO.ecore#//Sequence/add.2/value"/>
+ </genOperations>
+ <genOperations ecoreOperation="SDO.ecore#//Sequence/add.3">
+ <genParameters ecoreParameter="SDO.ecore#//Sequence/add.3/index"/>
+ <genParameters ecoreParameter="SDO.ecore#//Sequence/add.3/propertyName"/>
+ <genParameters ecoreParameter="SDO.ecore#//Sequence/add.3/value"/>
+ </genOperations>
+ <genOperations ecoreOperation="SDO.ecore#//Sequence/add.4">
+ <genParameters ecoreParameter="SDO.ecore#//Sequence/add.4/index"/>
+ <genParameters ecoreParameter="SDO.ecore#//Sequence/add.4/propertyIndex"/>
+ <genParameters ecoreParameter="SDO.ecore#//Sequence/add.4/value"/>
+ </genOperations>
+ <genOperations ecoreOperation="SDO.ecore#//Sequence/add.5">
+ <genParameters ecoreParameter="SDO.ecore#//Sequence/add.5/index"/>
+ <genParameters ecoreParameter="SDO.ecore#//Sequence/add.5/property"/>
+ <genParameters ecoreParameter="SDO.ecore#//Sequence/add.5/value"/>
+ </genOperations>
+ <genOperations ecoreOperation="SDO.ecore#//Sequence/add.6">
+ <genParameters ecoreParameter="SDO.ecore#//Sequence/add.6/text"/>
+ </genOperations>
+ <genOperations ecoreOperation="SDO.ecore#//Sequence/add.7">
+ <genParameters ecoreParameter="SDO.ecore#//Sequence/add.7/index"/>
+ <genParameters ecoreParameter="SDO.ecore#//Sequence/add.7/text"/>
+ </genOperations>
+ </genClasses>
+ <genClasses ecoreClass="SDO.ecore#//Type">
+ <genOperations ecoreOperation="SDO.ecore#//Type/getName"/>
+ <genOperations ecoreOperation="SDO.ecore#//Type/getURI"/>
+ <genOperations ecoreOperation="SDO.ecore#//Type/getInstanceClass"/>
+ <genOperations ecoreOperation="SDO.ecore#//Type/isInstance">
+ <genParameters ecoreParameter="SDO.ecore#//Type/isInstance/object"/>
+ </genOperations>
+ <genOperations ecoreOperation="SDO.ecore#//Type/isDataType"/>
+ <genOperations ecoreOperation="SDO.ecore#//Type/isSequenced"/>
+ <genOperations ecoreOperation="SDO.ecore#//Type/isOpen"/>
+ <genOperations ecoreOperation="SDO.ecore#//Type/isAbstract"/>
+ <genOperations ecoreOperation="SDO.ecore#//Type/getBaseTypes"/>
+ <genOperations ecoreOperation="SDO.ecore#//Type/getAliasNames"/>
+ <genOperations ecoreOperation="SDO.ecore#//Type/getProperties"/>
+ <genOperations ecoreOperation="SDO.ecore#//Type/getDeclaredProperties"/>
+ <genOperations ecoreOperation="SDO.ecore#//Type/getProperty">
+ <genParameters ecoreParameter="SDO.ecore#//Type/getProperty/propertyName"/>
+ </genOperations>
+ </genClasses>
+ <genClasses ecoreClass="SDO.ecore#//AnyTypeDataObject"/>
+ <genClasses ecoreClass="SDO.ecore#//SimpleAnyTypeDataObject"/>
+ <genClasses ecoreClass="SDO.ecore#//Class"/>
+ <genClasses ecoreClass="SDO.ecore#//DataType"/>
+ <genClasses ecoreClass="SDO.ecore#//Attribute"/>
+ <genClasses ecoreClass="SDO.ecore#//Reference"/>
+ <genClasses ecoreClass="SDO.ecore#//Enum"/>
+ <genClasses ecoreClass="SDO.ecore#//DynamicDataObject"/>
+ <genClasses ecoreClass="SDO.ecore#//StoreDataObject"/>
+ <genClasses ecoreClass="SDO.ecore#//DynamicStoreDataObject"/>
+ </genPackages>
+</genmodel:GenModel>
diff --git a/branches/sdo-java-M2/sdo/impl/model/SDO.mdl b/branches/sdo-java-M2/sdo/impl/model/SDO.mdl
new file mode 100644
index 0000000000..2288766bab
--- /dev/null
+++ b/branches/sdo-java-M2/sdo/impl/model/SDO.mdl
@@ -0,0 +1,7670 @@
+
+(object Petal
+ version 42
+ _written "Rose 4.5.8163.3"
+ charSet 0)
+
+(object Design "Logical View"
+ is_unit TRUE
+ is_loaded TRUE
+ defaults (object defaults
+ rightMargin 0.250000
+ leftMargin 0.250000
+ topMargin 0.250000
+ bottomMargin 0.500000
+ pageOverlap 0.250000
+ clipIconLabels TRUE
+ autoResize FALSE
+ snapToGrid TRUE
+ gridX 16
+ gridY 16
+ defaultFont (object Font
+ size 10
+ face "Arial"
+ bold FALSE
+ italics FALSE
+ underline FALSE
+ strike FALSE
+ color 0
+ default_color TRUE)
+ showMessageNum 1
+ showClassOfObject TRUE
+ notation "Unified")
+ root_usecase_package (object Class_Category "Use Case View"
+ quid "3FAA8E8700BE"
+ exportControl "Public"
+ global TRUE
+ logical_models (list unit_reference_list)
+ logical_presentations (list unit_reference_list
+ (object UseCaseDiagram "Main"
+ quid "3FAA8E8700EF"
+ title "Main"
+ zoom 100
+ max_height 28350
+ max_width 21600
+ origin_x 0
+ origin_y 0
+ items (list diagram_item_list))))
+ root_category (object Class_Category "Logical View"
+ quid "3FAA8E8700BD"
+ exportControl "Public"
+ global TRUE
+ subsystem "Component View"
+ quidu "3FAA8E8700BF"
+ logical_models (list unit_reference_list
+ (object Class_Category "sdo"
+ attributes (list Attribute_Set
+ (object Attribute
+ tool "Ecore"
+ name "nsPrefix"
+ value "sdo")
+ (object Attribute
+ tool "Ecore"
+ name "nsURI"
+ value "http://www.apache.org/tuscany/2005/SDO")
+ (object Attribute
+ tool "Ecore"
+ name "basePackage"
+ value "org.apache.tuscany")
+ (object Attribute
+ tool "Ecore"
+ name "prefix"
+ value "SDO"))
+ quid "3FAA8E8B0306"
+ exportControl "Public"
+ logical_models (list unit_reference_list
+ (object Class "ChangeSummary"
+ quid "3FAB7C360208"
+ superclasses (list inheritance_relationship_list
+ (object Inheritance_Relationship
+ quid "4361480602D8"
+ supplier "Logical View::change::ChangeDescription"
+ quidu "4FAB6F110198"))
+ operations (list Operations
+ (object Operation "beginLogging"
+ quid "3FAB8899003B"
+ concurrency "Sequential"
+ opExportControl "Public"
+ uid 0)
+ (object Operation "endLogging"
+ quid "3FAB88AB0145"
+ concurrency "Sequential"
+ opExportControl "Public"
+ uid 0)
+ (object Operation "isCreated"
+ quid "3FAB89650125"
+ parameters (list Parameters
+ (object Parameter "dataObject"
+ type "DataObject"))
+ result "boolean"
+ concurrency "Sequential"
+ opExportControl "Public"
+ uid 0)
+ (object Operation "isDeleted"
+ quid "3FAB896F0314"
+ parameters (list Parameters
+ (object Parameter "dataObject"
+ type "DataObject"))
+ result "boolean"
+ concurrency "Sequential"
+ opExportControl "Public"
+ uid 0)
+ (object Operation "getOldValues"
+ quid "3FAB89A4039C"
+ parameters (list Parameters
+ (object Parameter "dataObject"
+ type "DataObject"))
+ result "EJavaList"
+ concurrency "Sequential"
+ opExportControl "Public"
+ uid 0)
+ (object Operation "isModified"
+ quid "435500FB024C"
+ parameters (list Parameters
+ (object Parameter "dataObject"
+ type "DataObject"))
+ result "boolean"
+ concurrency "Sequential"
+ opExportControl "Public"
+ uid 0)
+ (object Operation "getOldValue"
+ quid "435501180185"
+ parameters (list Parameters
+ (object Parameter "dataObject"
+ type "DataObject")
+ (object Parameter "property"
+ type "Property"))
+ result "ChangeSummarySetting"
+ concurrency "Sequential"
+ opExportControl "Public"
+ uid 0)
+ (object Operation "getOldContainer"
+ quid "43550265035B"
+ parameters (list Parameters
+ (object Parameter "dataObject"
+ type "DataObject"))
+ result "DataObject"
+ concurrency "Sequential"
+ opExportControl "Public"
+ uid 0)
+ (object Operation "getOldContainmentProperty"
+ quid "4355027F01D2"
+ parameters (list Parameters
+ (object Parameter "dataObject"
+ type "DataObject"))
+ result "Property"
+ concurrency "Sequential"
+ opExportControl "Public"
+ uid 0)
+ (object Operation "getOldSequence"
+ quid "4355029E03A3"
+ parameters (list Parameters
+ (object Parameter "dataObject"
+ type "DataObject"))
+ result "Sequence"
+ concurrency "Sequential"
+ opExportControl "Public"
+ uid 0)
+ (object Operation "undoChanges"
+ quid "435502B303D5"
+ concurrency "Sequential"
+ opExportControl "Public"
+ uid 0)
+ (object Operation "isLogging"
+ quid "435D2CB50354"
+ result "boolean"
+ concurrency "Sequential"
+ opExportControl "Public"
+ uid 0)
+ (object Operation "getDataGraph"
+ quid "435D2CC200A0"
+ result "DataGraph"
+ concurrency "Sequential"
+ opExportControl "Public"
+ uid 0)
+ (object Operation "getChangedDataObjects"
+ quid "435D2D2B001F"
+ result "EJavaList"
+ concurrency "Sequential"
+ opExportControl "Public"
+ uid 0)
+ (object Operation "getRootObject"
+ quid "435D2D360151"
+ result "DataObject"
+ concurrency "Sequential"
+ opExportControl "Public"
+ uid 0))
+ class_attributes (list class_attribute_list
+ (object ClassAttribute "commonj.sdo.ChangeSummary"
+ quid "3FAB7C4D0373"
+ stereotype "javaclass"
+ exportControl "Public")))
+ (object Class "ChangeSummarySetting"
+ quid "3FAB8BF8005A"
+ superclasses (list inheritance_relationship_list
+ (object Inheritance_Relationship
+ quid "436134F001A6"
+ supplier "Logical View::change::FeatureChange"
+ quidu "4FC39D6D0177"))
+ operations (list Operations
+ (object Operation "isSet"
+ quid "3FD14B5800BD"
+ result "boolean"
+ concurrency "Sequential"
+ opExportControl "Public"
+ uid 0)
+ (object Operation "getValue"
+ quid "3FDEF80600EA"
+ result "EJavaObject"
+ concurrency "Sequential"
+ opExportControl "Public"
+ uid 0)
+ (object Operation "getProperty"
+ quid "435D2C440045"
+ result "Property"
+ concurrency "Sequential"
+ opExportControl "Public"
+ uid 0))
+ class_attributes (list class_attribute_list
+ (object ClassAttribute "commonj.sdo.ChangeSummary$Setting"
+ quid "3FAB8C05003A"
+ stereotype "javaclass"
+ exportControl "Public")))
+ (object Class "DataGraph"
+ quid "3FAB7BFE03C0"
+ superclasses (list inheritance_relationship_list
+ (object Inheritance_Relationship
+ quid "43612C7B0243"
+ supplier "Logical View::ecore::EObject"
+ quidu "3C4F1C860123"))
+ operations (list Operations
+ (object Operation "createRootObject"
+ quid "3FAB86D40102"
+ parameters (list Parameters
+ (object Parameter "namespaceURI"
+ type "String")
+ (object Parameter "typeName"
+ type "String"))
+ result "DataObject"
+ concurrency "Sequential"
+ opExportControl "Public"
+ uid 0)
+ (object Operation "createRootObject"
+ quid "3FAB87520135"
+ parameters (list Parameters
+ (object Parameter "type"
+ type "Type"))
+ result "DataObject"
+ concurrency "Sequential"
+ opExportControl "Public"
+ uid 0)
+ (object Operation "getType"
+ quid "3FAB87E20024"
+ parameters (list Parameters
+ (object Parameter "namespaceURI"
+ type "String")
+ (object Parameter "typeName"
+ type "String"))
+ result "Type"
+ concurrency "Sequential"
+ opExportControl "Public"
+ uid 0)
+ (object Operation "getRootObject"
+ quid "435D2C900120"
+ result "DataObject"
+ concurrency "Sequential"
+ opExportControl "Public"
+ uid 0)
+ (object Operation "getChangeSummary"
+ quid "435D2C9B039D"
+ result "ChangeSummary"
+ concurrency "Sequential"
+ opExportControl "Public"
+ uid 0))
+ class_attributes (list class_attribute_list
+ (object ClassAttribute "commonj.sdo.DataGraph"
+ quid "3FAB7C1A0171"
+ stereotype "javaclass"
+ exportControl "Public")
+ (object ClassAttribute "resourceSet"
+ attributes (list Attribute_Set
+ (object Attribute
+ tool "Ecore"
+ name "isTransient"
+ value TRUE))
+ quid "436129AF0208"
+ type "EResourceSet"
+ exportControl "Public")
+ (object ClassAttribute "rootResource"
+ attributes (list Attribute_Set
+ (object Attribute
+ tool "Ecore"
+ name "isTransient"
+ value TRUE)
+ (object Attribute
+ tool "Ecore"
+ name "isVolatile"
+ value TRUE)
+ (object Attribute
+ tool "Ecore"
+ name "isChangeable"
+ value FALSE))
+ quid "436129BF0016"
+ type "EResource"
+ exportControl "Public"
+ derived TRUE)))
+ (object Class "DataObject"
+ quid "3FAB6F7501C4"
+ operations (list Operations
+ (object Operation "get"
+ quid "3FAB8EF201A0"
+ parameters (list Parameters
+ (object Parameter "path"
+ type "String"))
+ result "EJavaObject"
+ concurrency "Sequential"
+ semantics (object Semantic_Info
+ PDL "return <%org.apache.sdo.util.SDOUtil%>.get(this, path);")
+ opExportControl "Public"
+ uid 0)
+ (object Operation "set"
+ quid "3FAB8FE502FE"
+ parameters (list Parameters
+ (object Parameter "path"
+ type "String")
+ (object Parameter "value"
+ type "EJavaObject"))
+ concurrency "Sequential"
+ semantics (object Semantic_Info
+ PDL "<%org.apache.sdo.util.SDOUtil%>.set(this, path, value);")
+ opExportControl "Public"
+ uid 0)
+ (object Operation "isSet"
+ quid "3FAB901001BF"
+ parameters (list Parameters
+ (object Parameter "path"
+ type "String"))
+ result "boolean"
+ concurrency "Sequential"
+ semantics (object Semantic_Info
+ PDL "return <%org.apache.sdo.util.SDOUtil%>.isSet(this, path);")
+ opExportControl "Public"
+ uid 0)
+ (object Operation "unset"
+ quid "3FAB901803B6"
+ parameters (list Parameters
+ (object Parameter "path"
+ type "String"))
+ concurrency "Sequential"
+ semantics (object Semantic_Info
+ PDL "<%org.apache.sdo.util.SDOUtil%>.unset(this, path);")
+ opExportControl "Public"
+ uid 0)
+ (object Operation "get"
+ quid "01EDEDEDEDED"
+ parameters (list Parameters
+ (object Parameter "propertyIndex"
+ type "int"))
+ result "EJavaObject"
+ concurrency "Sequential"
+ semantics (object Semantic_Info
+ PDL "return <%org.apache.sdo.util.SDOUtil%>.get(this, propertyIndex);")
+ opExportControl "Public"
+ uid 0)
+ (object Operation "set"
+ quid "02EDEDEDEDED"
+ parameters (list Parameters
+ (object Parameter "propertyIndex"
+ type "int")
+ (object Parameter "value"
+ type "EJavaObject"))
+ concurrency "Sequential"
+ semantics (object Semantic_Info
+ PDL "<%org.apache.sdo.util.SDOUtil%>.set(this, propertyIndex, value);")
+ opExportControl "Public"
+ uid 0)
+ (object Operation "isSet"
+ quid "03EDEDEDEDED"
+ parameters (list Parameters
+ (object Parameter "propertyIndex"
+ type "int"))
+ result "boolean"
+ concurrency "Sequential"
+ semantics (object Semantic_Info
+ PDL "return <%org.apache.sdo.util.SDOUtil%>.isSet(this, propertyIndex);")
+ opExportControl "Public"
+ uid 0)
+ (object Operation "unset"
+ quid "04EDEDEDEDED"
+ parameters (list Parameters
+ (object Parameter "propertyIndex"
+ type "int"))
+ concurrency "Sequential"
+ semantics (object Semantic_Info
+ PDL "<%org.apache.sdo.util.SDOUtil%>.unset(this, propertyIndex);")
+ opExportControl "Public"
+ uid 0)
+ (object Operation "get"
+ quid "01ADEDEDEDED"
+ parameters (list Parameters
+ (object Parameter "property"
+ type "Property"))
+ result "EJavaObject"
+ concurrency "Sequential"
+ semantics (object Semantic_Info
+ PDL "return <%org.apache.sdo.util.SDOUtil%>.get(this, property);")
+ opExportControl "Public"
+ uid 0)
+ (object Operation "set"
+ quid "02ADEDEDEDED"
+ parameters (list Parameters
+ (object Parameter "property"
+ type "Property")
+ (object Parameter "value"
+ type "EJavaObject"))
+ concurrency "Sequential"
+ semantics (object Semantic_Info
+ PDL "<%org.apache.sdo.util.SDOUtil%>.set(this, property, value);")
+ opExportControl "Public"
+ uid 0)
+ (object Operation "isSet"
+ quid "03ADEDEDEDED"
+ parameters (list Parameters
+ (object Parameter "property"
+ type "Property"))
+ result "boolean"
+ concurrency "Sequential"
+ semantics (object Semantic_Info
+ PDL "return <%org.apache.sdo.util.SDOUtil%>.isSet(this, property);")
+ opExportControl "Public"
+ uid 0)
+ (object Operation "unset"
+ quid "04ADEDEDEDED"
+ parameters (list Parameters
+ (object Parameter "property"
+ type "Property"))
+ concurrency "Sequential"
+ semantics (object Semantic_Info
+ PDL "<%org.apache.sdo.util.SDOUtil%>.unset(this, property);")
+ opExportControl "Public"
+ uid 0)
+ (object Operation "getContainer"
+ quid "AAEDEDEDEDE0"
+ result "DataObject"
+ concurrency "Sequential"
+ semantics (object Semantic_Info
+ PDL "return <%org.apache.sdo.util.SDOUtil%>.getContainer(this);")
+ opExportControl "Public"
+ uid 0)
+ (object Operation "getContainmentProperty"
+ quid "AAEDEDEDEDE2"
+ result "Property"
+ concurrency "Sequential"
+ semantics (object Semantic_Info
+ PDL "return <%org.apache.sdo.util.SDOUtil%>.getContainmentProperty(this);")
+ opExportControl "Public"
+ uid 0)
+ (object Operation "getDataGraph"
+ quid "AAEDEDEDEDE3"
+ result "DataGraph"
+ concurrency "Sequential"
+ semantics (object Semantic_Info
+ PDL "return <%org.apache.sdo.util.SDOUtil%>.getDataGraph(this);")
+ opExportControl "Public"
+ uid 0)
+ (object Operation "getType"
+ quid "AAEDEDEDEDE1"
+ result "Type"
+ concurrency "Sequential"
+ semantics (object Semantic_Info
+ PDL "return <%org.apache.sdo.util.SDOUtil%>.getType(this);")
+ opExportControl "Public"
+ uid 0)
+ (object Operation "getBigDecimal"
+ quid "EDEDEDED0000"
+ parameters (list Parameters
+ (object Parameter "path"
+ type "String"))
+ result "EBigDecimal"
+ concurrency "Sequential"
+ semantics (object Semantic_Info
+ PDL "return <%org.apache.sdo.util.SDOUtil%>.getBigDecimal(this, path);")
+ opExportControl "Public"
+ uid 0)
+ (object Operation "getBigInteger"
+ quid "EDEDEDED0001"
+ parameters (list Parameters
+ (object Parameter "path"
+ type "String"))
+ result "EBigInteger"
+ concurrency "Sequential"
+ semantics (object Semantic_Info
+ PDL "return <%org.apache.sdo.util.SDOUtil%>.getBigInteger(this, path);")
+ opExportControl "Public"
+ uid 0)
+ (object Operation "getBoolean"
+ quid "EDEDEDED0002"
+ parameters (list Parameters
+ (object Parameter "path"
+ type "String"))
+ result "boolean"
+ concurrency "Sequential"
+ semantics (object Semantic_Info
+ PDL "return <%org.apache.sdo.util.SDOUtil%>.getBoolean(this, path);")
+ opExportControl "Public"
+ uid 0)
+ (object Operation "getByte"
+ quid "EDEDEDED0003"
+ parameters (list Parameters
+ (object Parameter "path"
+ type "String"))
+ result "byte"
+ concurrency "Sequential"
+ semantics (object Semantic_Info
+ PDL "return <%org.apache.sdo.util.SDOUtil%>.getByte(this, path);")
+ opExportControl "Public"
+ uid 0)
+ (object Operation "getBytes"
+ quid "EDEDEDED0004"
+ parameters (list Parameters
+ (object Parameter "path"
+ type "String"))
+ result "EByteArray"
+ concurrency "Sequential"
+ semantics (object Semantic_Info
+ PDL "return <%org.apache.sdo.util.SDOUtil%>.getBytes(this, path);")
+ opExportControl "Public"
+ uid 0)
+ (object Operation "getChar"
+ quid "EDEDEDED0005"
+ parameters (list Parameters
+ (object Parameter "path"
+ type "String"))
+ result "char"
+ concurrency "Sequential"
+ semantics (object Semantic_Info
+ PDL "return <%org.apache.sdo.util.SDOUtil%>.getChar(this, path);")
+ opExportControl "Public"
+ uid 0)
+ (object Operation "getDataObject"
+ quid "EDEDEDED0006"
+ parameters (list Parameters
+ (object Parameter "path"
+ type "String"))
+ result "DataObject"
+ concurrency "Sequential"
+ semantics (object Semantic_Info
+ PDL "return <%org.apache.sdo.util.SDOUtil%>.getDataObject(this, path);")
+ opExportControl "Public"
+ uid 0)
+ (object Operation "getDate"
+ quid "EDEDEDED0007"
+ parameters (list Parameters
+ (object Parameter "path"
+ type "String"))
+ result "EDate"
+ concurrency "Sequential"
+ semantics (object Semantic_Info
+ PDL "return <%org.apache.sdo.util.SDOUtil%>.getDate(this, path);")
+ opExportControl "Public"
+ uid 0)
+ (object Operation "getDouble"
+ quid "EDEDEDED0008"
+ parameters (list Parameters
+ (object Parameter "path"
+ type "String"))
+ result "double"
+ concurrency "Sequential"
+ semantics (object Semantic_Info
+ PDL "return <%org.apache.sdo.util.SDOUtil%>.getDouble(this, path);")
+ opExportControl "Public"
+ uid 0)
+ (object Operation "getFloat"
+ quid "EDEDEDED0009"
+ parameters (list Parameters
+ (object Parameter "path"
+ type "String"))
+ result "float"
+ concurrency "Sequential"
+ semantics (object Semantic_Info
+ PDL "return <%org.apache.sdo.util.SDOUtil%>.getFloat(this, path);")
+ opExportControl "Public"
+ uid 0)
+ (object Operation "getInt"
+ quid "EDEDEDED000A"
+ parameters (list Parameters
+ (object Parameter "path"
+ type "String"))
+ result "int"
+ concurrency "Sequential"
+ semantics (object Semantic_Info
+ PDL "return <%org.apache.sdo.util.SDOUtil%>.getInt(this, path);")
+ opExportControl "Public"
+ uid 0)
+ (object Operation "getList"
+ quid "EDEDEDED000B"
+ parameters (list Parameters
+ (object Parameter "path"
+ type "String"))
+ result "EJavaList"
+ concurrency "Sequential"
+ semantics (object Semantic_Info
+ PDL "return <%org.apache.sdo.util.SDOUtil%>.getList(this, path);")
+ opExportControl "Public"
+ uid 0)
+ (object Operation "getLong"
+ quid "EDEDEDED000C"
+ parameters (list Parameters
+ (object Parameter "path"
+ type "String"))
+ result "long"
+ concurrency "Sequential"
+ semantics (object Semantic_Info
+ PDL "return <%org.apache.sdo.util.SDOUtil%>.getLong(this, path);")
+ opExportControl "Public"
+ uid 0)
+ (object Operation "getSequence"
+ quid "EDEDEDED000D"
+ parameters (list Parameters
+ (object Parameter "path"
+ type "String"))
+ result "Sequence"
+ concurrency "Sequential"
+ semantics (object Semantic_Info
+ PDL "return <%org.apache.sdo.util.SDOUtil%>.getSequence(this, path);")
+ opExportControl "Public"
+ uid 0)
+ (object Operation "getShort"
+ quid "EDEDEDED000E"
+ parameters (list Parameters
+ (object Parameter "path"
+ type "String"))
+ result "short"
+ concurrency "Sequential"
+ semantics (object Semantic_Info
+ PDL "return <%org.apache.sdo.util.SDOUtil%>.getShort(this, path);")
+ opExportControl "Public"
+ uid 0)
+ (object Operation "getString"
+ quid "EDEDEDED000F"
+ parameters (list Parameters
+ (object Parameter "path"
+ type "String"))
+ result "String"
+ concurrency "Sequential"
+ semantics (object Semantic_Info
+ PDL "return <%org.apache.sdo.util.SDOUtil%>.getString(this, path);")
+ opExportControl "Public"
+ uid 0)
+ (object Operation "setBigDecimal"
+ quid "EDEDEDED1000"
+ parameters (list Parameters
+ (object Parameter "path"
+ type "String")
+ (object Parameter "value"
+ type "EBigDecimal"))
+ concurrency "Sequential"
+ semantics (object Semantic_Info
+ PDL "<%org.apache.sdo.util.SDOUtil%>.setBigDecimal(this, path, value);")
+ opExportControl "Public"
+ uid 0)
+ (object Operation "setBigInteger"
+ quid "EDEDEDED1001"
+ parameters (list Parameters
+ (object Parameter "path"
+ type "String")
+ (object Parameter "value"
+ type "EBigInteger"))
+ concurrency "Sequential"
+ semantics (object Semantic_Info
+ PDL "<%org.apache.sdo.util.SDOUtil%>.setBigInteger(this, path, value);")
+ opExportControl "Public"
+ uid 0)
+ (object Operation "setBoolean"
+ quid "EDEDEDED1002"
+ parameters (list Parameters
+ (object Parameter "path"
+ type "String")
+ (object Parameter "value"
+ type "boolean"))
+ concurrency "Sequential"
+ semantics (object Semantic_Info
+ PDL "<%org.apache.sdo.util.SDOUtil%>.setBoolean(this, path, value);")
+ opExportControl "Public"
+ uid 0)
+ (object Operation "setByte"
+ quid "EDEDEDED1003"
+ parameters (list Parameters
+ (object Parameter "path"
+ type "String")
+ (object Parameter "value"
+ type "byte"))
+ concurrency "Sequential"
+ semantics (object Semantic_Info
+ PDL "<%org.apache.sdo.util.SDOUtil%>.setByte(this, path, value);")
+ opExportControl "Public"
+ uid 0)
+ (object Operation "setBytes"
+ quid "EDEDEDED1004"
+ parameters (list Parameters
+ (object Parameter "path"
+ type "String")
+ (object Parameter "value"
+ type "EByteArray"))
+ concurrency "Sequential"
+ semantics (object Semantic_Info
+ PDL "<%org.apache.sdo.util.SDOUtil%>.setBytes(this, path, value);")
+ opExportControl "Public"
+ uid 0)
+ (object Operation "setChar"
+ quid "EDEDEDED1005"
+ parameters (list Parameters
+ (object Parameter "path"
+ type "String")
+ (object Parameter "value"
+ type "char"))
+ concurrency "Sequential"
+ semantics (object Semantic_Info
+ PDL "<%org.apache.sdo.util.SDOUtil%>.setChar(this, path, value);")
+ opExportControl "Public"
+ uid 0)
+ (object Operation "setDataObject"
+ quid "EDEDEDED1006"
+ parameters (list Parameters
+ (object Parameter "path"
+ type "String")
+ (object Parameter "value"
+ type "DataObject"))
+ concurrency "Sequential"
+ semantics (object Semantic_Info
+ PDL "<%org.apache.sdo.util.SDOUtil%>.setDataObject(this, path, value);")
+ opExportControl "Public"
+ uid 0)
+ (object Operation "setDate"
+ quid "EDEDEDED1007"
+ parameters (list Parameters
+ (object Parameter "path"
+ type "String")
+ (object Parameter "value"
+ type "EDate"))
+ concurrency "Sequential"
+ semantics (object Semantic_Info
+ PDL "<%org.apache.sdo.util.SDOUtil%>.setDate(this, path, value);")
+ opExportControl "Public"
+ uid 0)
+ (object Operation "setDouble"
+ quid "EDEDEDED1008"
+ parameters (list Parameters
+ (object Parameter "path"
+ type "String")
+ (object Parameter "value"
+ type "double"))
+ concurrency "Sequential"
+ semantics (object Semantic_Info
+ PDL "<%org.apache.sdo.util.SDOUtil%>.setDouble(this, path, value);")
+ opExportControl "Public"
+ uid 0)
+ (object Operation "setFloat"
+ quid "EDEDEDED1009"
+ parameters (list Parameters
+ (object Parameter "path"
+ type "String")
+ (object Parameter "value"
+ type "float"))
+ concurrency "Sequential"
+ semantics (object Semantic_Info
+ PDL "<%org.apache.sdo.util.SDOUtil%>.setFloat(this, path, value);")
+ opExportControl "Public"
+ uid 0)
+ (object Operation "setInt"
+ quid "EDEDEDED100A"
+ parameters (list Parameters
+ (object Parameter "path"
+ type "String")
+ (object Parameter "value"
+ type "int"))
+ concurrency "Sequential"
+ semantics (object Semantic_Info
+ PDL "<%org.apache.sdo.util.SDOUtil%>.setInt(this, path, value);")
+ opExportControl "Public"
+ uid 0)
+ (object Operation "setList"
+ quid "EDEDEDED100B"
+ parameters (list Parameters
+ (object Parameter "path"
+ type "String")
+ (object Parameter "value"
+ type "EJavaList"))
+ concurrency "Sequential"
+ semantics (object Semantic_Info
+ PDL "<%org.apache.sdo.util.SDOUtil%>.setList(this, path, value);")
+ opExportControl "Public"
+ uid 0)
+ (object Operation "setLong"
+ quid "EDEDEDED100C"
+ parameters (list Parameters
+ (object Parameter "path"
+ type "String")
+ (object Parameter "value"
+ type "long"))
+ concurrency "Sequential"
+ semantics (object Semantic_Info
+ PDL "<%org.apache.sdo.util.SDOUtil%>.setLong(this, path, value);")
+ opExportControl "Public"
+ uid 0)
+ (object Operation "setShort"
+ quid "EDEDEDED100E"
+ parameters (list Parameters
+ (object Parameter "path"
+ type "String")
+ (object Parameter "value"
+ type "short"))
+ concurrency "Sequential"
+ semantics (object Semantic_Info
+ PDL "<%org.apache.sdo.util.SDOUtil%>.setShort(this, path, value);")
+ opExportControl "Public"
+ uid 0)
+ (object Operation "setString"
+ quid "EDEDEDED100F"
+ parameters (list Parameters
+ (object Parameter "path"
+ type "String")
+ (object Parameter "value"
+ type "String"))
+ concurrency "Sequential"
+ semantics (object Semantic_Info
+ PDL "<%org.apache.sdo.util.SDOUtil%>.setString(this, path, value);")
+ opExportControl "Public"
+ uid 0)
+ (object Operation "getBigDecimal"
+ quid "EDEDEDED2000"
+ parameters (list Parameters
+ (object Parameter "propertyIndex"
+ type "int"))
+ result "EBigDecimal"
+ concurrency "Sequential"
+ semantics (object Semantic_Info
+ PDL "return <%org.apache.sdo.util.SDOUtil%>.getBigDecimal(this, propertyIndex);")
+ opExportControl "Public"
+ uid 0)
+ (object Operation "getBigInteger"
+ quid "EDEDEDED2001"
+ parameters (list Parameters
+ (object Parameter "propertyIndex"
+ type "int"))
+ result "EBigInteger"
+ concurrency "Sequential"
+ semantics (object Semantic_Info
+ PDL "return <%org.apache.sdo.util.SDOUtil%>.getBigInteger(this, propertyIndex);")
+ opExportControl "Public"
+ uid 0)
+ (object Operation "getBoolean"
+ quid "EDEDEDED2002"
+ parameters (list Parameters
+ (object Parameter "propertyIndex"
+ type "int"))
+ result "boolean"
+ concurrency "Sequential"
+ semantics (object Semantic_Info
+ PDL "return <%org.apache.sdo.util.SDOUtil%>.getBoolean(this, propertyIndex);")
+ opExportControl "Public"
+ uid 0)
+ (object Operation "getByte"
+ quid "EDEDEDED2003"
+ parameters (list Parameters
+ (object Parameter "propertyIndex"
+ type "int"))
+ result "byte"
+ concurrency "Sequential"
+ semantics (object Semantic_Info
+ PDL "return <%org.apache.sdo.util.SDOUtil%>.getByte(this, propertyIndex);")
+ opExportControl "Public"
+ uid 0)
+ (object Operation "getBytes"
+ quid "EDEDEDED2004"
+ parameters (list Parameters
+ (object Parameter "propertyIndex"
+ type "int"))
+ result "EByteArray"
+ concurrency "Sequential"
+ semantics (object Semantic_Info
+ PDL "return <%org.apache.sdo.util.SDOUtil%>.getBytes(this, propertyIndex);")
+ opExportControl "Public"
+ uid 0)
+ (object Operation "getChar"
+ quid "EDEDEDED2005"
+ parameters (list Parameters
+ (object Parameter "propertyIndex"
+ type "int"))
+ result "char"
+ concurrency "Sequential"
+ semantics (object Semantic_Info
+ PDL "return <%org.apache.sdo.util.SDOUtil%>.getChar(this, propertyIndex);")
+ opExportControl "Public"
+ uid 0)
+ (object Operation "getDataObject"
+ quid "EDEDEDED2006"
+ parameters (list Parameters
+ (object Parameter "propertyIndex"
+ type "int"))
+ result "DataObject"
+ concurrency "Sequential"
+ semantics (object Semantic_Info
+ PDL "return <%org.apache.sdo.util.SDOUtil%>.getDataObject(this, propertyIndex);")
+ opExportControl "Public"
+ uid 0)
+ (object Operation "getDate"
+ quid "EDEDEDED2007"
+ parameters (list Parameters
+ (object Parameter "propertyIndex"
+ type "int"))
+ result "EDate"
+ concurrency "Sequential"
+ semantics (object Semantic_Info
+ PDL "return <%org.apache.sdo.util.SDOUtil%>.getDate(this, propertyIndex);")
+ opExportControl "Public"
+ uid 0)
+ (object Operation "getDouble"
+ quid "EDEDEDED2008"
+ parameters (list Parameters
+ (object Parameter "propertyIndex"
+ type "int"))
+ result "double"
+ concurrency "Sequential"
+ semantics (object Semantic_Info
+ PDL "return <%org.apache.sdo.util.SDOUtil%>.getDouble(this, propertyIndex);")
+ opExportControl "Public"
+ uid 0)
+ (object Operation "getFloat"
+ quid "EDEDEDED2009"
+ parameters (list Parameters
+ (object Parameter "propertyIndex"
+ type "int"))
+ result "float"
+ concurrency "Sequential"
+ semantics (object Semantic_Info
+ PDL "return <%org.apache.sdo.util.SDOUtil%>.getFloat(this, propertyIndex);")
+ opExportControl "Public"
+ uid 0)
+ (object Operation "getInt"
+ quid "EDEDEDED200A"
+ parameters (list Parameters
+ (object Parameter "propertyIndex"
+ type "int"))
+ result "int"
+ concurrency "Sequential"
+ semantics (object Semantic_Info
+ PDL "return <%org.apache.sdo.util.SDOUtil%>.getInt(this, propertyIndex);")
+ opExportControl "Public"
+ uid 0)
+ (object Operation "getList"
+ quid "EDEDEDED200B"
+ parameters (list Parameters
+ (object Parameter "propertyIndex"
+ type "int"))
+ result "EJavaList"
+ concurrency "Sequential"
+ semantics (object Semantic_Info
+ PDL "return <%org.apache.sdo.util.SDOUtil%>.getList(this, propertyIndex);")
+ opExportControl "Public"
+ uid 0)
+ (object Operation "getLong"
+ quid "EDEDEDED200C"
+ parameters (list Parameters
+ (object Parameter "propertyIndex"
+ type "int"))
+ result "long"
+ concurrency "Sequential"
+ semantics (object Semantic_Info
+ PDL "return <%org.apache.sdo.util.SDOUtil%>.getLong(this, propertyIndex);")
+ opExportControl "Public"
+ uid 0)
+ (object Operation "getSequence"
+ quid "EDEDEDED200D"
+ parameters (list Parameters
+ (object Parameter "propertyIndex"
+ type "int"))
+ result "Sequence"
+ concurrency "Sequential"
+ semantics (object Semantic_Info
+ PDL "return <%org.apache.sdo.util.SDOUtil%>.getSequence(this, propertyIndex);")
+ opExportControl "Public"
+ uid 0)
+ (object Operation "getShort"
+ quid "EDEDEDED200E"
+ parameters (list Parameters
+ (object Parameter "propertyIndex"
+ type "int"))
+ result "short"
+ concurrency "Sequential"
+ semantics (object Semantic_Info
+ PDL "return <%org.apache.sdo.util.SDOUtil%>.getShort(this, propertyIndex);")
+ opExportControl "Public"
+ uid 0)
+ (object Operation "getString"
+ quid "EDEDEDED200F"
+ parameters (list Parameters
+ (object Parameter "propertyIndex"
+ type "int"))
+ result "String"
+ concurrency "Sequential"
+ semantics (object Semantic_Info
+ PDL "return <%org.apache.sdo.util.SDOUtil%>.getString(this, propertyIndex);")
+ opExportControl "Public"
+ uid 0)
+ (object Operation "setBigDecimal"
+ quid "EDEDEDED3000"
+ parameters (list Parameters
+ (object Parameter "propertyIndex"
+ type "int")
+ (object Parameter "value"
+ type "EBigDecimal"))
+ concurrency "Sequential"
+ semantics (object Semantic_Info
+ PDL "<%org.apache.sdo.util.SDOUtil%>.setBigDecimal(this, propertyIndex, value);")
+ opExportControl "Public"
+ uid 0)
+ (object Operation "setBigInteger"
+ quid "EDEDEDED3001"
+ parameters (list Parameters
+ (object Parameter "propertyIndex"
+ type "int")
+ (object Parameter "value"
+ type "EBigInteger"))
+ concurrency "Sequential"
+ semantics (object Semantic_Info
+ PDL "<%org.apache.sdo.util.SDOUtil%>.setBigInteger(this, propertyIndex, value);")
+ opExportControl "Public"
+ uid 0)
+ (object Operation "setBoolean"
+ quid "EDEDEDED3002"
+ parameters (list Parameters
+ (object Parameter "propertyIndex"
+ type "int")
+ (object Parameter "value"
+ type "boolean"))
+ concurrency "Sequential"
+ semantics (object Semantic_Info
+ PDL "<%org.apache.sdo.util.SDOUtil%>.setBoolean(this, propertyIndex, value);")
+ opExportControl "Public"
+ uid 0)
+ (object Operation "setByte"
+ quid "EDEDEDED3003"
+ parameters (list Parameters
+ (object Parameter "propertyIndex"
+ type "int")
+ (object Parameter "value"
+ type "byte"))
+ concurrency "Sequential"
+ semantics (object Semantic_Info
+ PDL "<%org.apache.sdo.util.SDOUtil%>.setByte(this, propertyIndex, value);")
+ opExportControl "Public"
+ uid 0)
+ (object Operation "setBytes"
+ quid "EDEDEDED3004"
+ parameters (list Parameters
+ (object Parameter "propertyIndex"
+ type "int")
+ (object Parameter "value"
+ type "EByteArray"))
+ concurrency "Sequential"
+ semantics (object Semantic_Info
+ PDL "<%org.apache.sdo.util.SDOUtil%>.setBytes(this, propertyIndex, value);")
+ opExportControl "Public"
+ uid 0)
+ (object Operation "setChar"
+ quid "EDEDEDED3005"
+ parameters (list Parameters
+ (object Parameter "propertyIndex"
+ type "int")
+ (object Parameter "value"
+ type "char"))
+ concurrency "Sequential"
+ semantics (object Semantic_Info
+ PDL "<%org.apache.sdo.util.SDOUtil%>.setChar(this, propertyIndex, value);")
+ opExportControl "Public"
+ uid 0)
+ (object Operation "setDataObject"
+ quid "EDEDEDED3006"
+ parameters (list Parameters
+ (object Parameter "propertyIndex"
+ type "int")
+ (object Parameter "value"
+ type "DataObject"))
+ concurrency "Sequential"
+ semantics (object Semantic_Info
+ PDL "<%org.apache.sdo.util.SDOUtil%>.setDataObject(this, propertyIndex, value);")
+ opExportControl "Public"
+ uid 0)
+ (object Operation "setDate"
+ quid "EDEDEDED3007"
+ parameters (list Parameters
+ (object Parameter "propertyIndex"
+ type "int")
+ (object Parameter "value"
+ type "EDate"))
+ concurrency "Sequential"
+ semantics (object Semantic_Info
+ PDL "<%org.apache.sdo.util.SDOUtil%>.setDate(this, propertyIndex, value);")
+ opExportControl "Public"
+ uid 0)
+ (object Operation "setDouble"
+ quid "EDEDEDED3008"
+ parameters (list Parameters
+ (object Parameter "propertyIndex"
+ type "int")
+ (object Parameter "value"
+ type "double"))
+ concurrency "Sequential"
+ semantics (object Semantic_Info
+ PDL "<%org.apache.sdo.util.SDOUtil%>.setDouble(this, propertyIndex, value);")
+ opExportControl "Public"
+ uid 0)
+ (object Operation "setFloat"
+ quid "EDEDEDED3009"
+ parameters (list Parameters
+ (object Parameter "propertyIndex"
+ type "int")
+ (object Parameter "value"
+ type "float"))
+ concurrency "Sequential"
+ semantics (object Semantic_Info
+ PDL "<%org.apache.sdo.util.SDOUtil%>.setFloat(this, propertyIndex, value);")
+ opExportControl "Public"
+ uid 0)
+ (object Operation "setInt"
+ quid "EDEDEDED300A"
+ parameters (list Parameters
+ (object Parameter "propertyIndex"
+ type "int")
+ (object Parameter "value"
+ type "int"))
+ concurrency "Sequential"
+ semantics (object Semantic_Info
+ PDL "<%org.apache.sdo.util.SDOUtil%>.setInt(this, propertyIndex, value);")
+ opExportControl "Public"
+ uid 0)
+ (object Operation "setList"
+ quid "EDEDEDED300B"
+ parameters (list Parameters
+ (object Parameter "propertyIndex"
+ type "int")
+ (object Parameter "value"
+ type "EJavaList"))
+ concurrency "Sequential"
+ semantics (object Semantic_Info
+ PDL "<%org.apache.sdo.util.SDOUtil%>.setList(this, propertyIndex, value);")
+ opExportControl "Public"
+ uid 0)
+ (object Operation "setLong"
+ quid "EDEDEDED300C"
+ parameters (list Parameters
+ (object Parameter "propertyIndex"
+ type "int")
+ (object Parameter "value"
+ type "long"))
+ concurrency "Sequential"
+ semantics (object Semantic_Info
+ PDL "<%org.apache.sdo.util.SDOUtil%>.setLong(this, propertyIndex, value);")
+ opExportControl "Public"
+ uid 0)
+ (object Operation "setShort"
+ quid "EDEDEDED300E"
+ parameters (list Parameters
+ (object Parameter "propertyIndex"
+ type "int")
+ (object Parameter "value"
+ type "short"))
+ concurrency "Sequential"
+ semantics (object Semantic_Info
+ PDL "<%org.apache.sdo.util.SDOUtil%>.setShort(this, propertyIndex, value);")
+ opExportControl "Public"
+ uid 0)
+ (object Operation "setString"
+ quid "EDEDEDED300F"
+ parameters (list Parameters
+ (object Parameter "propertyIndex"
+ type "int")
+ (object Parameter "value"
+ type "String"))
+ concurrency "Sequential"
+ semantics (object Semantic_Info
+ PDL "<%org.apache.sdo.util.SDOUtil%>.setString(this, propertyIndex, value);")
+ opExportControl "Public"
+ uid 0)
+ (object Operation "getBigDecimal"
+ quid "EDEDEEEE2000"
+ parameters (list Parameters
+ (object Parameter "property"
+ type "Property"))
+ result "EBigDecimal"
+ concurrency "Sequential"
+ semantics (object Semantic_Info
+ PDL "return <%org.apache.sdo.util.SDOUtil%>.getBigDecimal(this, property);")
+ opExportControl "Public"
+ uid 0)
+ (object Operation "getBigInteger"
+ quid "EDEDEEEE2001"
+ parameters (list Parameters
+ (object Parameter "property"
+ type "Property"))
+ result "EBigInteger"
+ concurrency "Sequential"
+ semantics (object Semantic_Info
+ PDL "return <%org.apache.sdo.util.SDOUtil%>.getBigInteger(this, property);")
+ opExportControl "Public"
+ uid 0)
+ (object Operation "getBoolean"
+ quid "EDEDEEEE2002"
+ parameters (list Parameters
+ (object Parameter "property"
+ type "Property"))
+ result "boolean"
+ concurrency "Sequential"
+ semantics (object Semantic_Info
+ PDL "return <%org.apache.sdo.util.SDOUtil%>.getBoolean(this, property);")
+ opExportControl "Public"
+ uid 0)
+ (object Operation "getByte"
+ quid "EDEDEEEE2003"
+ parameters (list Parameters
+ (object Parameter "property"
+ type "Property"))
+ result "byte"
+ concurrency "Sequential"
+ semantics (object Semantic_Info
+ PDL "return <%org.apache.sdo.util.SDOUtil%>.getByte(this, property);")
+ opExportControl "Public"
+ uid 0)
+ (object Operation "getBytes"
+ quid "EDEDEEEE2004"
+ parameters (list Parameters
+ (object Parameter "property"
+ type "Property"))
+ result "EByteArray"
+ concurrency "Sequential"
+ semantics (object Semantic_Info
+ PDL "return <%org.apache.sdo.util.SDOUtil%>.getBytes(this, property);")
+ opExportControl "Public"
+ uid 0)
+ (object Operation "getChar"
+ quid "EDEDEEEE2005"
+ parameters (list Parameters
+ (object Parameter "property"
+ type "Property"))
+ result "char"
+ concurrency "Sequential"
+ semantics (object Semantic_Info
+ PDL "return <%org.apache.sdo.util.SDOUtil%>.getChar(this, property);")
+ opExportControl "Public"
+ uid 0)
+ (object Operation "getDataObject"
+ quid "EDEDEEEE2006"
+ parameters (list Parameters
+ (object Parameter "property"
+ type "Property"))
+ result "DataObject"
+ concurrency "Sequential"
+ semantics (object Semantic_Info
+ PDL "return <%org.apache.sdo.util.SDOUtil%>.getDataObject(this, property);")
+ opExportControl "Public"
+ uid 0)
+ (object Operation "getDate"
+ quid "EDEDEEEE2007"
+ parameters (list Parameters
+ (object Parameter "property"
+ type "Property"))
+ result "EDate"
+ concurrency "Sequential"
+ semantics (object Semantic_Info
+ PDL "return <%org.apache.sdo.util.SDOUtil%>.getDate(this, property);")
+ opExportControl "Public"
+ uid 0)
+ (object Operation "getDouble"
+ quid "EDEDEEEE2008"
+ parameters (list Parameters
+ (object Parameter "property"
+ type "Property"))
+ result "double"
+ concurrency "Sequential"
+ semantics (object Semantic_Info
+ PDL "return <%org.apache.sdo.util.SDOUtil%>.getDouble(this, property);")
+ opExportControl "Public"
+ uid 0)
+ (object Operation "getFloat"
+ quid "EDEDEEEE2009"
+ parameters (list Parameters
+ (object Parameter "property"
+ type "Property"))
+ result "float"
+ concurrency "Sequential"
+ semantics (object Semantic_Info
+ PDL "return <%org.apache.sdo.util.SDOUtil%>.getFloat(this, property);")
+ opExportControl "Public"
+ uid 0)
+ (object Operation "getInt"
+ quid "EDEDEEEE200A"
+ parameters (list Parameters
+ (object Parameter "property"
+ type "Property"))
+ result "int"
+ concurrency "Sequential"
+ semantics (object Semantic_Info
+ PDL "return <%org.apache.sdo.util.SDOUtil%>.getInt(this, property);")
+ opExportControl "Public"
+ uid 0)
+ (object Operation "getList"
+ quid "EDEDEEEE200B"
+ parameters (list Parameters
+ (object Parameter "property"
+ type "Property"))
+ result "EJavaList"
+ concurrency "Sequential"
+ semantics (object Semantic_Info
+ PDL "return <%org.apache.sdo.util.SDOUtil%>.getList(this, property);")
+ opExportControl "Public"
+ uid 0)
+ (object Operation "getLong"
+ quid "EDEDEEEE200C"
+ parameters (list Parameters
+ (object Parameter "property"
+ type "Property"))
+ result "long"
+ concurrency "Sequential"
+ semantics (object Semantic_Info
+ PDL "return <%org.apache.sdo.util.SDOUtil%>.getLong(this, property);")
+ opExportControl "Public"
+ uid 0)
+ (object Operation "getSequence"
+ quid "EDEDEEEE200D"
+ parameters (list Parameters
+ (object Parameter "property"
+ type "Property"))
+ result "Sequence"
+ concurrency "Sequential"
+ semantics (object Semantic_Info
+ PDL "return <%org.apache.sdo.util.SDOUtil%>.getSequence(this, property);")
+ opExportControl "Public"
+ uid 0)
+ (object Operation "getShort"
+ quid "EDEDEEEE200E"
+ parameters (list Parameters
+ (object Parameter "property"
+ type "Property"))
+ result "short"
+ concurrency "Sequential"
+ semantics (object Semantic_Info
+ PDL "return <%org.apache.sdo.util.SDOUtil%>.getShort(this, property);")
+ opExportControl "Public"
+ uid 0)
+ (object Operation "getString"
+ quid "EDEDEEEE200F"
+ parameters (list Parameters
+ (object Parameter "property"
+ type "Property"))
+ result "String"
+ concurrency "Sequential"
+ semantics (object Semantic_Info
+ PDL "return <%org.apache.sdo.util.SDOUtil%>.getString(this, property);")
+ opExportControl "Public"
+ uid 0)
+ (object Operation "setBigDecimal"
+ quid "EDEDEEEE3000"
+ parameters (list Parameters
+ (object Parameter "property"
+ type "Property")
+ (object Parameter "value"
+ type "EBigDecimal"))
+ concurrency "Sequential"
+ semantics (object Semantic_Info
+ PDL "<%org.apache.sdo.util.SDOUtil%>.setBigDecimal(this, property, value);")
+ opExportControl "Public"
+ uid 0)
+ (object Operation "setBigInteger"
+ quid "EDEDEEEE3001"
+ parameters (list Parameters
+ (object Parameter "property"
+ type "Property")
+ (object Parameter "value"
+ type "EBigInteger"))
+ concurrency "Sequential"
+ semantics (object Semantic_Info
+ PDL "<%org.apache.sdo.util.SDOUtil%>.setBigInteger(this, property, value);")
+ opExportControl "Public"
+ uid 0)
+ (object Operation "setBoolean"
+ quid "EDEDEEEE3002"
+ parameters (list Parameters
+ (object Parameter "property"
+ type "Property")
+ (object Parameter "value"
+ type "boolean"))
+ concurrency "Sequential"
+ semantics (object Semantic_Info
+ PDL "<%org.apache.sdo.util.SDOUtil%>.setBoolean(this, property, value);")
+ opExportControl "Public"
+ uid 0)
+ (object Operation "setByte"
+ quid "EDEDEEEE3003"
+ parameters (list Parameters
+ (object Parameter "property"
+ type "Property")
+ (object Parameter "value"
+ type "byte"))
+ concurrency "Sequential"
+ semantics (object Semantic_Info
+ PDL "<%org.apache.sdo.util.SDOUtil%>.setByte(this, property, value);")
+ opExportControl "Public"
+ uid 0)
+ (object Operation "setBytes"
+ quid "EDEDEEEE3004"
+ parameters (list Parameters
+ (object Parameter "property"
+ type "Property")
+ (object Parameter "value"
+ type "EByteArray"))
+ concurrency "Sequential"
+ semantics (object Semantic_Info
+ PDL "<%org.apache.sdo.util.SDOUtil%>.setBytes(this, property, value);")
+ opExportControl "Public"
+ uid 0)
+ (object Operation "setChar"
+ quid "EDEDEEEE3005"
+ parameters (list Parameters
+ (object Parameter "property"
+ type "Property")
+ (object Parameter "value"
+ type "char"))
+ concurrency "Sequential"
+ semantics (object Semantic_Info
+ PDL "<%org.apache.sdo.util.SDOUtil%>.setChar(this, property, value);")
+ opExportControl "Public"
+ uid 0)
+ (object Operation "setDataObject"
+ quid "EDEDEEEE3006"
+ parameters (list Parameters
+ (object Parameter "property"
+ type "Property")
+ (object Parameter "value"
+ type "DataObject"))
+ concurrency "Sequential"
+ semantics (object Semantic_Info
+ PDL "<%org.apache.sdo.util.SDOUtil%>.setDataObject(this, property, value);")
+ opExportControl "Public"
+ uid 0)
+ (object Operation "setDate"
+ quid "EDEDEEEE3007"
+ parameters (list Parameters
+ (object Parameter "property"
+ type "Property")
+ (object Parameter "value"
+ type "EDate"))
+ concurrency "Sequential"
+ semantics (object Semantic_Info
+ PDL "<%org.apache.sdo.util.SDOUtil%>.setDate(this, property, value);")
+ opExportControl "Public"
+ uid 0)
+ (object Operation "setDouble"
+ quid "EDEDEEEE3008"
+ parameters (list Parameters
+ (object Parameter "property"
+ type "Property")
+ (object Parameter "value"
+ type "double"))
+ concurrency "Sequential"
+ semantics (object Semantic_Info
+ PDL "<%org.apache.sdo.util.SDOUtil%>.setDouble(this, property, value);")
+ opExportControl "Public"
+ uid 0)
+ (object Operation "setFloat"
+ quid "EDEDEEEE3009"
+ parameters (list Parameters
+ (object Parameter "property"
+ type "Property")
+ (object Parameter "value"
+ type "float"))
+ concurrency "Sequential"
+ semantics (object Semantic_Info
+ PDL "<%org.apache.sdo.util.SDOUtil%>.setFloat(this, property, value);")
+ opExportControl "Public"
+ uid 0)
+ (object Operation "setInt"
+ quid "EDEDEEEE300A"
+ parameters (list Parameters
+ (object Parameter "property"
+ type "Property")
+ (object Parameter "value"
+ type "int"))
+ concurrency "Sequential"
+ semantics (object Semantic_Info
+ PDL "<%org.apache.sdo.util.SDOUtil%>.setInt(this, property, value);")
+ opExportControl "Public"
+ uid 0)
+ (object Operation "setList"
+ quid "EDEDEEEE300B"
+ parameters (list Parameters
+ (object Parameter "property"
+ type "Property")
+ (object Parameter "value"
+ type "EJavaList"))
+ concurrency "Sequential"
+ semantics (object Semantic_Info
+ PDL "<%org.apache.sdo.util.SDOUtil%>.setList(this, property, value);")
+ opExportControl "Public"
+ uid 0)
+ (object Operation "setLong"
+ quid "EDEDEEEE300C"
+ parameters (list Parameters
+ (object Parameter "property"
+ type "Property")
+ (object Parameter "value"
+ type "long"))
+ concurrency "Sequential"
+ semantics (object Semantic_Info
+ PDL "<%org.apache.sdo.util.SDOUtil%>.setLong(this, property, value);")
+ opExportControl "Public"
+ uid 0)
+ (object Operation "setShort"
+ quid "EDEDEEEE300E"
+ parameters (list Parameters
+ (object Parameter "property"
+ type "Property")
+ (object Parameter "value"
+ type "short"))
+ concurrency "Sequential"
+ semantics (object Semantic_Info
+ PDL "<%org.apache.sdo.util.SDOUtil%>.setShort(this, property, value);")
+ opExportControl "Public"
+ uid 0)
+ (object Operation "setString"
+ quid "EDEDEEEE300F"
+ parameters (list Parameters
+ (object Parameter "property"
+ type "Property")
+ (object Parameter "value"
+ type "String"))
+ concurrency "Sequential"
+ semantics (object Semantic_Info
+ PDL "<%org.apache.sdo.util.SDOUtil%>.setString(this, property, value);")
+ opExportControl "Public"
+ uid 0)
+ (object Operation "createDataObject"
+ quid "EDEDEEEEEEE0"
+ parameters (list Parameters
+ (object Parameter "propertyName"
+ type "String"))
+ result "DataObject"
+ concurrency "Sequential"
+ semantics (object Semantic_Info
+ PDL "return <%org.apache.sdo.util.SDOUtil%>.createDataObject(this, propertyName);")
+ opExportControl "Public"
+ uid 0)
+ (object Operation "createDataObject"
+ quid "EDEDEEEEEEE1"
+ parameters (list Parameters
+ (object Parameter "propertyIndex"
+ type "int"))
+ result "DataObject"
+ concurrency "Sequential"
+ semantics (object Semantic_Info
+ PDL "return <%org.apache.sdo.util.SDOUtil%>.createDataObject(this, propertyIndex);")
+ opExportControl "Public"
+ uid 0)
+ (object Operation "createDataObject"
+ quid "EDEDEEEEEEE2"
+ parameters (list Parameters
+ (object Parameter "property"
+ type "Property"))
+ result "DataObject"
+ concurrency "Sequential"
+ semantics (object Semantic_Info
+ PDL "return <%org.apache.sdo.util.SDOUtil%>.createDataObject(this, property);")
+ opExportControl "Public"
+ uid 0)
+ (object Operation "createDataObject"
+ quid "EDEDEEEEEEE3"
+ parameters (list Parameters
+ (object Parameter "propertyName"
+ type "String")
+ (object Parameter "namespaceURI"
+ type "String")
+ (object Parameter "typeName"
+ type "String"))
+ result "DataObject"
+ concurrency "Sequential"
+ semantics (object Semantic_Info
+ PDL "return <%org.apache.sdo.util.SDOUtil%>.createDataObject(this, propertyName, namespaceURI, typeName);")
+ opExportControl "Public"
+ uid 0)
+ (object Operation "createDataObject"
+ quid "EDEDEEEEEEE4"
+ parameters (list Parameters
+ (object Parameter "propertyIndex"
+ type "int")
+ (object Parameter "namespaceURI"
+ type "String")
+ (object Parameter "typeName"
+ type "String"))
+ result "DataObject"
+ concurrency "Sequential"
+ semantics (object Semantic_Info
+ PDL "return <%org.apache.sdo.util.SDOUtil%>.createDataObject(this, propertyIndex, namespaceURI, typeName);")
+ opExportControl "Public"
+ uid 0)
+ (object Operation "createDataObject"
+ quid "EDEDEEEEEEE5"
+ parameters (list Parameters
+ (object Parameter "property"
+ type "Property")
+ (object Parameter "type"
+ type "Type"))
+ result "DataObject"
+ concurrency "Sequential"
+ semantics (object Semantic_Info
+ PDL "return <%org.apache.sdo.util.SDOUtil%>.createDataObject(this, property, type);")
+ opExportControl "Public"
+ uid 0)
+ (object Operation "delete"
+ quid "EDEDEEEEEEE6"
+ concurrency "Sequential"
+ semantics (object Semantic_Info
+ PDL "<%org.apache.sdo.util.SDOUtil%>.delete(this);")
+ opExportControl "Public"
+ uid 0)
+ (object Operation "getSequence"
+ quid "4354FB2702D3"
+ result "Sequence"
+ concurrency "Sequential"
+ semantics (object Semantic_Info
+ PDL "return <%org.apache.sdo.util.SDOUtil%>.getSequence(this);")
+ opExportControl "Public"
+ uid 0)
+ (object Operation "getInstanceProperties"
+ quid "4354FB9F00CC"
+ result "EJavaList"
+ concurrency "Sequential"
+ semantics (object Semantic_Info
+ PDL "return <%org.apache.sdo.util.SDOUtil%>.getInstanceProperties(this);")
+ opExportControl "Public"
+ uid 0)
+ (object Operation "getProperty"
+ quid "4354FBB20369"
+ parameters (list Parameters
+ (object Parameter "propertyName"
+ type "String"))
+ result "Property"
+ concurrency "Sequential"
+ semantics (object Semantic_Info
+ PDL "return <%org.apache.sdo.util.SDOUtil%>.getProperty(this, propertyName);")
+ opExportControl "Public"
+ uid 0)
+ (object Operation "getRootObject"
+ quid "4354FBDD01B2"
+ result "DataObject"
+ concurrency "Sequential"
+ semantics (object Semantic_Info
+ PDL "return <%org.apache.sdo.util.SDOUtil%>.getRootObject(this);")
+ opExportControl "Public"
+ uid 0)
+ (object Operation "getChangeSummary"
+ quid "4354FC0400F0"
+ result "ChangeSummary"
+ concurrency "Sequential"
+ semantics (object Semantic_Info
+ PDL "return <%org.apache.sdo.util.SDOUtil%>.getChangeSummary(this);")
+ opExportControl "Public"
+ uid 0)
+ (object Operation "detach"
+ quid "4354FC150068"
+ concurrency "Sequential"
+ semantics (object Semantic_Info
+ PDL "<%org.apache.sdo.util.SDOUtil%>.detach(this);")
+ opExportControl "Public"
+ uid 0))
+ class_attributes (list class_attribute_list
+ (object ClassAttribute "commonj.sdo.DataObject"
+ quid "3FAB6F8B0284"
+ stereotype "javaclass"
+ exportControl "Public"))
+ abstract TRUE)
+ (object Class "Property"
+ quid "3FAB7CA1031A"
+ stereotype "Interface"
+ operations (list Operations
+ (object Operation "getName"
+ quid "4357B5A1009C"
+ result "String"
+ concurrency "Sequential"
+ opExportControl "Public"
+ uid 0)
+ (object Operation "getType"
+ quid "4358FF1A0291"
+ result "Type"
+ concurrency "Sequential"
+ opExportControl "Public"
+ uid 0)
+ (object Operation "isMany"
+ quid "4357B64B019A"
+ result "boolean"
+ concurrency "Sequential"
+ opExportControl "Public"
+ uid 0)
+ (object Operation "isContainment"
+ quid "4357B76501FA"
+ result "boolean"
+ concurrency "Sequential"
+ opExportControl "Public"
+ uid 0)
+ (object Operation "isReadOnly"
+ quid "4358FF3501DC"
+ result "boolean"
+ concurrency "Sequential"
+ opExportControl "Public"
+ uid 0)
+ (object Operation "getContainingType"
+ quid "4358FF3C03D1"
+ result "Type"
+ concurrency "Sequential"
+ opExportControl "Public"
+ uid 0)
+ (object Operation "getAliasNames"
+ quid "4358FF4D02EF"
+ result "EJavaList"
+ concurrency "Sequential"
+ opExportControl "Public"
+ uid 0)
+ (object Operation "getOpposite"
+ quid "4358FF59013D"
+ result "Property"
+ concurrency "Sequential"
+ opExportControl "Public"
+ uid 0)
+ (object Operation "getDefault"
+ quid "4358FF66029B"
+ result "EJavaObject"
+ concurrency "Sequential"
+ opExportControl "Public"
+ uid 0))
+ class_attributes (list class_attribute_list
+ (object ClassAttribute "commonj.sdo.Property"
+ quid "3FAB7CAB00E4"
+ stereotype "javaclass"
+ exportControl "Public")))
+ (object Class "Sequence"
+ quid "3FAB7CC302B5"
+ stereotype "Interface"
+ operations (list Operations
+ (object Operation "size"
+ quid "3FD1F958017D"
+ result "int"
+ concurrency "Sequential"
+ opExportControl "Public"
+ uid 0)
+ (object Operation "getProperty"
+ quid "3FAC32F4028D"
+ parameters (list Parameters
+ (object Parameter "index"
+ type "int"))
+ result "Property"
+ concurrency "Sequential"
+ opExportControl "Public"
+ uid 0)
+ (object Operation "getValue"
+ quid "3FAC3318010E"
+ parameters (list Parameters
+ (object Parameter "index"
+ type "int"))
+ result "EJavaObject"
+ concurrency "Sequential"
+ opExportControl "Public"
+ uid 0)
+ (object Operation "setValue"
+ quid "3FAC33270259"
+ parameters (list Parameters
+ (object Parameter "index"
+ type "int")
+ (object Parameter "value"
+ type "EJavaObject"))
+ result "EJavaObject"
+ concurrency "Sequential"
+ opExportControl "Public"
+ uid 0)
+ (object Operation "add"
+ quid "3FAC333D017C"
+ parameters (list Parameters
+ (object Parameter "propertyName"
+ type "String")
+ (object Parameter "value"
+ type "EJavaObject"))
+ result "boolean"
+ concurrency "Sequential"
+ opExportControl "Public"
+ uid 0)
+ (object Operation "add"
+ quid "3FAC3371009F"
+ parameters (list Parameters
+ (object Parameter "propertIndex"
+ type "int")
+ (object Parameter "value"
+ type "EJavaObject"))
+ result "boolean"
+ concurrency "Sequential"
+ opExportControl "Public"
+ uid 0)
+ (object Operation "add"
+ quid "3FAC338C00CE"
+ parameters (list Parameters
+ (object Parameter "property"
+ type "Property")
+ (object Parameter "value"
+ type "EJavaObject"))
+ result "boolean"
+ concurrency "Sequential"
+ opExportControl "Public"
+ uid 0)
+ (object Operation "add"
+ quid "3FAC33AD02C6"
+ parameters (list Parameters
+ (object Parameter "index"
+ type "int")
+ (object Parameter "propertyName"
+ type "String")
+ (object Parameter "value"
+ type "EJavaObject"))
+ concurrency "Sequential"
+ opExportControl "Public"
+ uid 0)
+ (object Operation "add"
+ quid "3FAC33C40263"
+ parameters (list Parameters
+ (object Parameter "index"
+ type "int")
+ (object Parameter "propertyIndex"
+ type "int")
+ (object Parameter "value"
+ type "EJavaObject"))
+ concurrency "Sequential"
+ opExportControl "Public"
+ uid 0)
+ (object Operation "add"
+ quid "3FAC33C70375"
+ parameters (list Parameters
+ (object Parameter "index"
+ type "int")
+ (object Parameter "property"
+ type "Property")
+ (object Parameter "value"
+ type "EJavaObject"))
+ concurrency "Sequential"
+ opExportControl "Public"
+ uid 0)
+ (object Operation "add"
+ quid "43550F7D01DE"
+ parameters (list Parameters
+ (object Parameter "text"
+ type "String"))
+ concurrency "Sequential"
+ opExportControl "Public"
+ uid 0)
+ (object Operation "add"
+ quid "43550F930352"
+ parameters (list Parameters
+ (object Parameter "index"
+ type "int")
+ (object Parameter "text"
+ type "String"))
+ concurrency "Sequential"
+ opExportControl "Public"
+ uid 0))
+ class_attributes (list class_attribute_list
+ (object ClassAttribute "commonj.sdo.Sequence"
+ quid "3FAB7CEB00D2"
+ stereotype "javaclass"
+ exportControl "Public")))
+ (object Class "Type"
+ quid "3FAB7C7C0349"
+ stereotype "Interface"
+ operations (list Operations
+ (object Operation "getName"
+ quid "4357B56E012E"
+ result "String"
+ concurrency "Sequential"
+ opExportControl "Public"
+ uid 0)
+ (object Operation "getURI"
+ quid "4358FE18013C"
+ result "String"
+ concurrency "Sequential"
+ opExportControl "Public"
+ uid 0)
+ (object Operation "getInstanceClass"
+ quid "4357B6380265"
+ result "EJavaClass"
+ concurrency "Sequential"
+ opExportControl "Public"
+ uid 0)
+ (object Operation "isInstance"
+ quid "3FAB82AD0027"
+ parameters (list Parameters
+ (object Parameter "object"
+ type "EJavaObject"))
+ result "boolean"
+ concurrency "Sequential"
+ opExportControl "Public"
+ uid 0)
+ (object Operation "isDataType"
+ quid "4358FE26031D"
+ result "boolean"
+ concurrency "Sequential"
+ opExportControl "Public"
+ uid 0)
+ (object Operation "isSequenced"
+ quid "4358FE33020D"
+ result "boolean"
+ concurrency "Sequential"
+ opExportControl "Public"
+ uid 0)
+ (object Operation "isOpen"
+ quid "4358FE4000F3"
+ result "boolean"
+ concurrency "Sequential"
+ opExportControl "Public"
+ uid 0)
+ (object Operation "isAbstract"
+ quid "4357B7440365"
+ result "boolean"
+ concurrency "Sequential"
+ opExportControl "Public"
+ uid 0)
+ (object Operation "getBaseTypes"
+ quid "4358FE4B0316"
+ result "EJavaList"
+ concurrency "Sequential"
+ opExportControl "Public"
+ uid 0)
+ (object Operation "getAliasNames"
+ quid "4358FE740351"
+ result "EJavaList"
+ concurrency "Sequential"
+ opExportControl "Public"
+ uid 0)
+ (object Operation "getProperties"
+ quid "4358FE8D0248"
+ result "EJavaList"
+ concurrency "Sequential"
+ opExportControl "Public"
+ uid 0)
+ (object Operation "getDeclaredProperties"
+ quid "4358FE9C02A4"
+ result "EJavaList"
+ concurrency "Sequential"
+ opExportControl "Public"
+ uid 0)
+ (object Operation "getProperty"
+ quid "3FAB831701D8"
+ parameters (list Parameters
+ (object Parameter "propertyName"
+ type "String"))
+ result "Property"
+ concurrency "Sequential"
+ opExportControl "Public"
+ uid 0))
+ class_attributes (list class_attribute_list
+ (object ClassAttribute "commonj.sdo.Type"
+ quid "3FAB7C8B0015"
+ stereotype "javaclass"
+ exportControl "Public")))
+ (object Class "EJavaList"
+ quid "3FAB8A010237"
+ stereotype "datatype"
+ class_attributes (list class_attribute_list
+ (object ClassAttribute "java.util.List"
+ quid "3FAB8A0F01F1"
+ stereotype "javaclass"
+ exportControl "Public"))
+ abstract TRUE)
+ (object Class "EObjectStreamException"
+ quid "3FC352DE038F"
+ stereotype "datatype"
+ class_attributes (list class_attribute_list
+ (object ClassAttribute "java.io.ObjectStreamException"
+ quid "3FC352F90171"
+ stereotype "javaclass"
+ exportControl "Public"))
+ abstract TRUE)
+ (object Class "AnyTypeDataObject"
+ attributes (list Attribute_Set
+ (object Attribute
+ tool "Ecore"
+ name "xmlContentKind"
+ value ("ContentKind" 3)))
+ quid "4069645E0146"
+ superclasses (list inheritance_relationship_list
+ (object Inheritance_Relationship
+ quid "406964870375"
+ supplier "Logical View::type::AnyType"
+ quidu "40695FE40332")
+ (object Inheritance_Relationship
+ quid "436141F003E7"
+ stereotype "extend"
+ supplier "Logical View::sdo::DataObject"
+ quidu "3FAB6F7501C4")))
+ (object Class "SimpleAnyTypeDataObject"
+ attributes (list Attribute_Set
+ (object Attribute
+ tool "Ecore"
+ name "xmlContentKind"
+ value ("ContentKind" 2)))
+ quid "406964710189"
+ superclasses (list inheritance_relationship_list
+ (object Inheritance_Relationship
+ quid "4069648302E3"
+ stereotype "extend"
+ supplier "Logical View::sdo::AnyTypeDataObject"
+ quidu "4069645E0146")
+ (object Inheritance_Relationship
+ quid "4069648D02E8"
+ supplier "Logical View::type::SimpleAnyType"
+ quidu "406961210099")))
+ (object Class "Class"
+ quid "43559BB702E7"
+ superclasses (list inheritance_relationship_list
+ (object Inheritance_Relationship
+ quid "43559D3A01A3"
+ supplier "Logical View::ecore::EClass"
+ quidu "3903D5BF000A")
+ (object Inheritance_Relationship
+ quid "435901C600DC"
+ supplier "Logical View::sdo::Type"
+ quidu "3FAB7C7C0349"))
+ class_attributes (list class_attribute_list
+ (object ClassAttribute "commonj.sdo.Type"
+ quid "435900CF00F5"
+ stereotype "javaclass"
+ exportControl "Public")))
+ (object Class "DataType"
+ quid "43559BE502F7"
+ superclasses (list inheritance_relationship_list
+ (object Inheritance_Relationship
+ quid "43590C6F016D"
+ supplier "Logical View::sdo::Type"
+ quidu "3FAB7C7C0349")
+ (object Inheritance_Relationship
+ quid "43590C73038F"
+ supplier "Logical View::ecore::EDataType"
+ quidu "3903D525033E"))
+ class_attributes (list class_attribute_list
+ (object ClassAttribute "commonj.sdo.Type"
+ quid "4358FFE30331"
+ stereotype "javaclass"
+ exportControl "Public")))
+ (object Class "Attribute"
+ quid "43559E690004"
+ superclasses (list inheritance_relationship_list
+ (object Inheritance_Relationship
+ quid "43559ED801E4"
+ supplier "Logical View::ecore::EAttribute"
+ quidu "39238472039D")
+ (object Inheritance_Relationship
+ quid "43567DFD03B6"
+ supplier "Logical View::sdo::Property"
+ quidu "3FAB7CA1031A"))
+ class_attributes (list class_attribute_list
+ (object ClassAttribute "commonj.sdo.Property"
+ quid "4359014A0246"
+ stereotype "javaclass"
+ exportControl "Public")))
+ (object Class "Reference"
+ quid "43559E86025E"
+ superclasses (list inheritance_relationship_list
+ (object Inheritance_Relationship
+ quid "43559EE0011D"
+ supplier "Logical View::ecore::EReference"
+ quidu "39238479039D")
+ (object Inheritance_Relationship
+ quid "43567DF9022A"
+ supplier "Logical View::sdo::Property"
+ quidu "3FAB7CA1031A"))
+ class_attributes (list class_attribute_list
+ (object ClassAttribute "commonj.sdo.Property"
+ quid "4359018E0226"
+ stereotype "javaclass"
+ exportControl "Public")))
+ (object Class "Enum"
+ quid "4357B1010017"
+ superclasses (list inheritance_relationship_list
+ (object Inheritance_Relationship
+ quid "4357B1410218"
+ supplier "Logical View::sdo::Type"
+ quidu "3FAB7C7C0349")
+ (object Inheritance_Relationship
+ quid "4357B14701DA"
+ supplier "Logical View::ecore::EEnum"
+ quidu "39A473E901D4"))
+ class_attributes (list class_attribute_list
+ (object ClassAttribute "commonj.sdo.Type"
+ quid "4359006102CE"
+ stereotype "javaclass"
+ exportControl "Public")))
+ (object Class "DynamicDataObject"
+ quid "435E94210124"
+ superclasses (list inheritance_relationship_list
+ (object Inheritance_Relationship
+ quid "435E9435008D"
+ supplier "Logical View::sdo::DataObject"
+ quidu "3FAB6F7501C4"))
+ class_attributes (list class_attribute_list
+ (object ClassAttribute "commonj.sdo.DataObject"
+ quid "435E9459021F"
+ stereotype "javaclass"
+ exportControl "Public")))
+ (object Class "StoreDataObject"
+ quid "43621EBA03B4"
+ superclasses (list inheritance_relationship_list
+ (object Inheritance_Relationship
+ quid "43621F0B03A6"
+ supplier "Logical View::sdo::DataObject"
+ quidu "3FAB6F7501C4"))
+ class_attributes (list class_attribute_list
+ (object ClassAttribute "commonj.sdo.DataObject"
+ quid "43621EDF015E"
+ stereotype "javaclass"
+ exportControl "Public")))
+ (object Class "DynamicStoreDataObject"
+ quid "43621F4203CD"
+ superclasses (list inheritance_relationship_list
+ (object Inheritance_Relationship
+ quid "43621F920242"
+ supplier "Logical View::sdo::StoreDataObject"
+ quidu "43621EBA03B4"))
+ class_attributes (list class_attribute_list
+ (object ClassAttribute "commonj.sdo.DataObject"
+ quid "43621F5701ED"
+ stereotype "javaclass"
+ exportControl "Public")))
+ (object Association "$UNNAMED$0"
+ quid "3FAD10CA01D5"
+ roles (list role_list
+ (object Role "eDataGraph"
+ attributes (list Attribute_Set
+ (object Attribute
+ tool "Ecore"
+ name "isResolveProxies"
+ value FALSE)
+ (object Attribute
+ tool "Ecore"
+ name "isTransient"
+ value TRUE))
+ quid "3FAD10CC001F"
+ label "eDataGraph"
+ supplier "Logical View::sdo::DataGraph"
+ quidu "3FAB7BFE03C0"
+ client_cardinality (value cardinality "1")
+ is_navigable TRUE)
+ (object Role "eChangeSummary"
+ attributes (list Attribute_Set
+ (object Attribute
+ tool "Ecore"
+ name "isResolveProxies"
+ value FALSE))
+ quid "3FAD10CC0020"
+ label "eChangeSummary"
+ supplier "Logical View::sdo::ChangeSummary"
+ quidu "3FAB7C360208"
+ client_cardinality (value cardinality "1")
+ Containment "By Value"
+ is_navigable TRUE)))
+ (object Association "$UNNAMED$1"
+ quid "3FAD26E802F5"
+ roles (list role_list
+ (object Role "$UNNAMED$2"
+ quid "3FAD26ED00E9"
+ supplier "Logical View::sdo::DataGraph"
+ quidu "3FAB7BFE03C0")
+ (object Role "eRootObject"
+ attributes (list Attribute_Set
+ (object Attribute
+ tool "Ecore"
+ name "isResolveProxies"
+ value FALSE))
+ quid "3FAD26ED00F3"
+ label "eRootObject"
+ supplier "Logical View::ecore::EObject"
+ quidu "3C4F1C860123"
+ client_cardinality (value cardinality "1")
+ is_navigable TRUE)))
+ (object Association "$UNNAMED$3"
+ quid "406962A200CF"
+ roles (list role_list
+ (object Role "$UNNAMED$4"
+ quid "406962A30076"
+ supplier "Logical View::type::SimpleAnyType"
+ quidu "406961210099")
+ (object Role "instanceType"
+ attributes (list Attribute_Set
+ (object Attribute
+ tool "Ecore"
+ name "isResolveProxies"
+ value FALSE))
+ quid "406962A30077"
+ label "instanceType"
+ supplier "Logical View::ecore::EDataType"
+ quidu "3903D525033E"
+ client_cardinality (value cardinality "1")
+ is_navigable TRUE))))
+ logical_presentations (list unit_reference_list
+ (object ClassDiagram "SDO Interfaces"
+ quid "3FAB8BAA0329"
+ title "SDO Interfaces"
+ zoom 100
+ max_height 28350
+ max_width 21600
+ origin_x 764
+ origin_y 0
+ items (list diagram_item_list
+ (object ClassView "Class" "Logical View::sdo::Sequence" @1
+ ShowCompartmentStereotypes TRUE
+ IncludeAttribute TRUE
+ IncludeOperation TRUE
+ ShowOperationSignature TRUE
+ location (2560, 2032)
+ label (object ItemLabel
+ Parent_View @1
+ location (1999, 1673)
+ fill_color 13434879
+ nlines 1
+ max_width 1122
+ justify 0
+ label "Sequence")
+ stereotype (object ItemLabel
+ Parent_View @1
+ location (1999, 1623)
+ fill_color 13434879
+ anchor 10
+ nlines 1
+ max_width 1122
+ justify 0
+ label "<<Interface>>")
+ icon "Interface"
+ icon_style "Label"
+ line_color 3342489
+ fill_color 13434879
+ quidu "3FAB7CC302B5"
+ compartment (object Compartment
+ Parent_View @1
+ location (1999, 1733)
+ icon_style "Icon"
+ fill_color 16777215
+ anchor 2
+ nlines 14
+ max_width 1128)
+ width 1140
+ height 842
+ annotation 8
+ autoResize TRUE)
+ (object ClassView "Class" "Logical View::sdo::DataGraph" @2
+ ShowCompartmentStereotypes TRUE
+ IncludeAttribute TRUE
+ IncludeOperation TRUE
+ ShowOperationSignature TRUE
+ location (768, 304)
+ label (object ItemLabel
+ Parent_View @2
+ location (65, 48)
+ fill_color 13434879
+ nlines 1
+ max_width 1406
+ justify 0
+ label "DataGraph")
+ icon_style "Icon"
+ line_color 3342489
+ fill_color 13434879
+ quidu "3FAB7BFE03C0"
+ compartment (object Compartment
+ Parent_View @2
+ location (65, 108)
+ icon_style "Icon"
+ fill_color 16777215
+ anchor 2
+ nlines 9
+ max_width 1412)
+ width 1424
+ height 536
+ annotation 8
+ autoResize TRUE)
+ (object ClassView "Class" "Logical View::sdo::DataObject" @3
+ ShowCompartmentStereotypes TRUE
+ IncludeAttribute TRUE
+ ShowOperationSignature TRUE
+ location (976, 1280)
+ font (object Font
+ italics TRUE)
+ label (object ItemLabel
+ Parent_View @3
+ location (62, 674)
+ fill_color 13434879
+ nlines 1
+ max_width 1828
+ justify 0
+ label "DataObject")
+ icon_style "Icon"
+ line_color 3342489
+ fill_color 13434879
+ quidu "3FAB6F7501C4"
+ compartment (object Compartment
+ Parent_View @3
+ location (62, 734)
+ icon_style "Icon"
+ fill_color 13434879
+ anchor 2
+ nlines 23
+ max_width 1834
+ compartmentItems (list Compartment
+ "+ get(property : Property) : EJavaObject"
+ "+ set(property : Property, value : EJavaObject)"
+ "+ isSet(property : Property) : boolean"
+ "+ unset(property : Property)"
+ "+ getContainer() : DataObject"
+ "+ getContainmentProperty() : Property"
+ "+ getDataGraph() : DataGraph"
+ "+ getType() : Type"
+ "+ createDataObject(propertyName : String) : DataObject"
+ "+ createDataObject(propertyIndex : int) : DataObject"
+ "+ createDataObject(property : Property) : DataObject"
+ "+ createDataObject(propertyName : String, namespaceURI : String, typeName : String) : DataObject"
+ "+ createDataObject(propertyIndex : int, namespaceURI : String, typeName : String) : DataObject"
+ "+ createDataObject(property : Property, type : Type) : DataObject"
+ "+ delete()"
+ "+ getSequence() : Sequence"
+ "+ getInstanceProperties() : EJavaList"
+ "+ getProperty(propertyName : String) : Property"
+ "+ getRootObject() : DataObject"
+ "+ getChangeSummary() : ChangeSummary"
+ "+ detach()"))
+ width 1846
+ height 1236
+ annotation 8
+ autoResize TRUE)
+ (object ClassView "Class" "Logical View::sdo::ChangeSummary" @4
+ ShowCompartmentStereotypes TRUE
+ IncludeAttribute TRUE
+ IncludeOperation TRUE
+ ShowOperationSignature TRUE
+ location (2768, 528)
+ label (object ItemLabel
+ Parent_View @4
+ location (1979, 72)
+ fill_color 13434879
+ nlines 1
+ max_width 1578
+ justify 0
+ label "ChangeSummary")
+ icon_style "Icon"
+ line_color 3342489
+ fill_color 13434879
+ quidu "3FAB7C360208"
+ compartment (object Compartment
+ Parent_View @4
+ location (1979, 132)
+ icon_style "Icon"
+ fill_color 16777215
+ anchor 2
+ nlines 17
+ max_width 1575)
+ width 1596
+ height 936
+ annotation 8
+ autoResize TRUE)
+ (object ClassView "Class" "Logical View::sdo::Type" @5
+ ShowCompartmentStereotypes TRUE
+ IncludeAttribute TRUE
+ IncludeOperation TRUE
+ ShowOperationSignature TRUE
+ location (512, 2448)
+ label (object ItemLabel
+ Parent_View @5
+ location (75, 2064)
+ fill_color 13434879
+ nlines 1
+ max_width 874
+ justify 0
+ label "Type")
+ stereotype (object ItemLabel
+ Parent_View @5
+ location (75, 2014)
+ fill_color 13434879
+ anchor 10
+ nlines 1
+ max_width 874
+ justify 0
+ label "<<Interface>>")
+ icon "Interface"
+ icon_style "Label"
+ line_color 3342489
+ fill_color 13434879
+ quidu "3FAB7C7C0349"
+ compartment (object Compartment
+ Parent_View @5
+ location (75, 2124)
+ icon_style "Icon"
+ fill_color 16777215
+ anchor 2
+ nlines 15
+ max_width 881)
+ width 892
+ height 892
+ annotation 8
+ autoResize TRUE)
+ (object ClassView "Class" "Logical View::sdo::Property" @6
+ ShowCompartmentStereotypes TRUE
+ IncludeAttribute TRUE
+ IncludeOperation TRUE
+ ShowOperationSignature TRUE
+ location (1424, 2352)
+ label (object ItemLabel
+ Parent_View @6
+ location (1054, 2068)
+ fill_color 13434879
+ nlines 1
+ max_width 740
+ justify 0
+ label "Property")
+ stereotype (object ItemLabel
+ Parent_View @6
+ location (1054, 2018)
+ fill_color 13434879
+ anchor 10
+ nlines 1
+ max_width 740
+ justify 0
+ label "<<Interface>>")
+ icon "Interface"
+ icon_style "Label"
+ line_color 3342489
+ fill_color 13434879
+ quidu "3FAB7CA1031A"
+ compartment (object Compartment
+ Parent_View @6
+ location (1054, 2128)
+ icon_style "Icon"
+ fill_color 16777215
+ anchor 2
+ nlines 11
+ max_width 746)
+ width 758
+ height 692
+ annotation 8
+ autoResize TRUE)
+ (object ClassView "Class" "Logical View::sdo::ChangeSummarySetting" @7
+ ShowCompartmentStereotypes TRUE
+ IncludeAttribute TRUE
+ IncludeOperation TRUE
+ ShowOperationSignature TRUE
+ location (2528, 1328)
+ label (object ItemLabel
+ Parent_View @7
+ location (2003, 1144)
+ fill_color 13434879
+ nlines 1
+ max_width 1050
+ justify 0
+ label "ChangeSummarySetting")
+ icon_style "Icon"
+ line_color 3342489
+ fill_color 13434879
+ quidu "3FAB8BF8005A"
+ compartment (object Compartment
+ Parent_View @7
+ location (2003, 1204)
+ icon_style "Icon"
+ fill_color 16777215
+ anchor 2
+ nlines 5
+ max_width 1056)
+ width 1068
+ height 392
+ annotation 8
+ autoResize TRUE)))
+ (object ClassDiagram "SDO DataObject Access"
+ quid "3FAC2D8D008D"
+ title "SDO DataObject Access"
+ zoom 100
+ max_height 28350
+ max_width 21600
+ origin_x 0
+ origin_y 0
+ items (list diagram_item_list
+ (object ClassView "Class" "Logical View::sdo::DataObject" @8
+ ShowCompartmentStereotypes TRUE
+ IncludeAttribute TRUE
+ ShowOperationSignature TRUE
+ location (528, 1360)
+ font (object Font
+ italics TRUE)
+ label (object ItemLabel
+ Parent_View @8
+ location (53, 79)
+ fill_color 13434879
+ nlines 1
+ max_width 950
+ justify 0
+ label "DataObject")
+ icon_style "Icon"
+ line_color 3342489
+ fill_color 16316638
+ quidu "3FAB6F7501C4"
+ compartment (object Compartment
+ Parent_View @8
+ location (53, 139)
+ icon_style "Icon"
+ fill_color 13434879
+ anchor 2
+ nlines 50
+ max_width 0
+ compartmentItems (list Compartment
+ "+ getBigDecimal(path : String) : EBigDecimal"
+ "+ getBigInteger(path : String) : EBigInteger"
+ "+ getBoolean(path : String) : boolean"
+ "+ getByte(path : String) : byte"
+ "+ getBytes(path : String) : EByteArray"
+ "+ getChar(path : String) : char"
+ "+ getDataObject(path : String) : DataObject"
+ "+ getDate(path : String) : EDate"
+ "+ getDouble(path : String) : double"
+ "+ getFloat(path : String) : float"
+ "+ getInt(path : String) : int"
+ "+ getList(path : String) : EJavaList"
+ "+ getLong(path : String) : long"
+ "+ getSequence(path : String) : Sequence"
+ "+ getShort(path : String) : short"
+ "+ getString(path : String) : String"
+ "+ getBigDecimal(propertyIndex : int) : EBigDecimal"
+ "+ getBigInteger(propertyIndex : int) : EBigInteger"
+ "+ getBoolean(propertyIndex : int) : boolean"
+ "+ getByte(propertyIndex : int) : byte"
+ "+ getBytes(propertyIndex : int) : EByteArray"
+ "+ getChar(propertyIndex : int) : char"
+ "+ getDataObject(propertyIndex : int) : DataObject"
+ "+ getDate(propertyIndex : int) : EDate"
+ "+ getDouble(propertyIndex : int) : double"
+ "+ getFloat(propertyIndex : int) : float"
+ "+ getInt(propertyIndex : int) : int"
+ "+ getList(propertyIndex : int) : EJavaList"
+ "+ getLong(propertyIndex : int) : long"
+ "+ getSequence(propertyIndex : int) : Sequence"
+ "+ getShort(propertyIndex : int) : short"
+ "+ getString(propertyIndex : int) : String"
+ "+ getBigDecimal(property : Property) : EBigDecimal"
+ "+ getBigInteger(property : Property) : EBigInteger"
+ "+ getBoolean(property : Property) : boolean"
+ "+ getByte(property : Property) : byte"
+ "+ getBytes(property : Property) : EByteArray"
+ "+ getChar(property : Property) : char"
+ "+ getDataObject(property : Property) : DataObject"
+ "+ getDate(property : Property) : EDate"
+ "+ getDouble(property : Property) : double"
+ "+ getFloat(property : Property) : float"
+ "+ getInt(property : Property) : int"
+ "+ getList(property : Property) : EJavaList"
+ "+ getLong(property : Property) : long"
+ "+ getSequence(property : Property) : Sequence"
+ "+ getShort(property : Property) : short"
+ "+ getString(property : Property) : String"
+ "<<javaclass>> + commonj.sdo.DataObject"))
+ width 968
+ height 2586
+ annotation 8
+ autoResize TRUE)
+ (object ClassView "Class" "Logical View::sdo::DataObject" @9
+ ShowCompartmentStereotypes TRUE
+ IncludeAttribute TRUE
+ ShowOperationSignature TRUE
+ location (1664, 1280)
+ font (object Font
+ italics TRUE)
+ label (object ItemLabel
+ Parent_View @9
+ location (1131, 74)
+ fill_color 13434879
+ nlines 1
+ max_width 1066
+ justify 0
+ label "DataObject")
+ icon_style "Icon"
+ line_color 3342489
+ fill_color 16316638
+ quidu "3FAB6F7501C4"
+ compartment (object Compartment
+ Parent_View @9
+ location (1131, 134)
+ icon_style "Icon"
+ fill_color 13434879
+ anchor 2
+ nlines 47
+ max_width 0
+ compartmentItems (list Compartment
+ "+ setBigDecimal(path : String, value : EBigDecimal)"
+ "+ setBigInteger(path : String, value : EBigInteger)"
+ "+ setBoolean(path : String, value : boolean)"
+ "+ setByte(path : String, value : byte)"
+ "+ setBytes(path : String, value : EByteArray)"
+ "+ setChar(path : String, value : char)"
+ "+ setDataObject(path : String, value : DataObject)"
+ "+ setDate(path : String, value : EDate)"
+ "+ setDouble(path : String, value : double)"
+ "+ setFloat(path : String, value : float)"
+ "+ setInt(path : String, value : int)"
+ "+ setList(path : String, value : EJavaList)"
+ "+ setLong(path : String, value : long)"
+ "+ setShort(path : String, value : short)"
+ "+ setString(path : String, value : String)"
+ "+ setBigDecimal(propertyIndex : int, value : EBigDecimal)"
+ "+ setBigInteger(propertyIndex : int, value : EBigInteger)"
+ "+ setBoolean(propertyIndex : int, value : boolean)"
+ "+ setByte(propertyIndex : int, value : byte)"
+ "+ setBytes(propertyIndex : int, value : EByteArray)"
+ "+ setChar(propertyIndex : int, value : char)"
+ "+ setDataObject(propertyIndex : int, value : DataObject)"
+ "+ setDate(propertyIndex : int, value : EDate)"
+ "+ setDouble(propertyIndex : int, value : double)"
+ "+ setFloat(propertyIndex : int, value : float)"
+ "+ setInt(propertyIndex : int, value : int)"
+ "+ setList(propertyIndex : int, value : EJavaList)"
+ "+ setLong(propertyIndex : int, value : long)"
+ "+ setShort(propertyIndex : int, value : short)"
+ "+ setString(propertyIndex : int, value : String)"
+ "+ setBigDecimal(property : Property, value : EBigDecimal)"
+ "+ setBigInteger(property : Property, value : EBigInteger)"
+ "+ setBoolean(property : Property, value : boolean)"
+ "+ setByte(property : Property, value : byte)"
+ "+ setBytes(property : Property, value : EByteArray)"
+ "+ setChar(property : Property, value : char)"
+ "+ setDataObject(property : Property, value : DataObject)"
+ "+ setDate(property : Property, value : EDate)"
+ "+ setDouble(property : Property, value : double)"
+ "+ setFloat(property : Property, value : float)"
+ "+ setInt(property : Property, value : int)"
+ "+ setList(property : Property, value : EJavaList)"
+ "+ setLong(property : Property, value : long)"
+ "+ setShort(property : Property, value : short)"
+ "+ setString(property : Property, value : String)"
+ "<<javaclass>> + commonj.sdo.DataObject"))
+ width 1084
+ height 2436
+ annotation 8
+ autoResize TRUE)))
+ (object ClassDiagram "Ecore SDO"
+ quid "3FAC379A02D5"
+ title "Ecore SDO"
+ zoom 100
+ max_height 28350
+ max_width 21600
+ origin_x 0
+ origin_y 0
+ items (list diagram_item_list
+ (object ClassView "Class" "Logical View::sdo::DataGraph" @10
+ ShowCompartmentStereotypes TRUE
+ SuppressOperation TRUE
+ location (464, 160)
+ label (object ItemLabel
+ Parent_View @10
+ location (74, 104)
+ fill_color 13434879
+ nlines 1
+ max_width 780
+ justify 0
+ label "DataGraph")
+ icon_style "Icon"
+ line_color 3342489
+ fill_color 13434879
+ quidu "3FAB7BFE03C0"
+ compartment (object Compartment
+ Parent_View @10
+ location (74, 164)
+ icon_style "Icon"
+ fill_color 13434879
+ anchor 2
+ nlines 1
+ max_width 0
+ compartmentItems (list Compartment
+ "<<javaclass>> + commonj.sdo.DataGraph"))
+ width 798
+ height 136
+ annotation 8
+ autoResize TRUE)
+ (object ClassView "Class" "Logical View::sdo::ChangeSummary" @11
+ ShowCompartmentStereotypes TRUE
+ SuppressOperation TRUE
+ location (528, 400)
+ label (object ItemLabel
+ Parent_View @11
+ location (78, 344)
+ fill_color 13434879
+ nlines 1
+ max_width 900
+ justify 0
+ label "ChangeSummary")
+ icon_style "Icon"
+ line_color 3342489
+ fill_color 13434879
+ quidu "3FAB7C360208"
+ compartment (object Compartment
+ Parent_View @11
+ location (78, 404)
+ icon_style "Icon"
+ fill_color 13434879
+ anchor 2
+ nlines 1
+ max_width 0
+ compartmentItems (list Compartment
+ "<<javaclass>> + commonj.sdo.ChangeSummary"))
+ width 918
+ height 136
+ annotation 8
+ autoResize TRUE)
+ (object ClassView "Class" "Logical View::sdo::Type" @12
+ ShowCompartmentStereotypes TRUE
+ SuppressOperation TRUE
+ location (416, 1088)
+ label (object ItemLabel
+ Parent_View @12
+ location (79, 1054)
+ fill_color 13434879
+ nlines 1
+ max_width 674
+ justify 0
+ label "Type")
+ stereotype (object ItemLabel
+ Parent_View @12
+ location (79, 1004)
+ fill_color 13434879
+ anchor 10
+ nlines 1
+ max_width 674
+ justify 0
+ label "<<Interface>>")
+ icon "Interface"
+ icon_style "Label"
+ line_color 3342489
+ fill_color 13434879
+ quidu "3FAB7C7C0349"
+ compartment (object Compartment
+ Parent_View @12
+ location (79, 1114)
+ icon_style "Icon"
+ fill_color 13434879
+ anchor 2
+ nlines 1
+ max_width 0
+ compartmentItems (list Compartment
+ "<<javaclass>> + commonj.sdo.Type"))
+ width 692
+ height 192
+ annotation 8
+ autoResize TRUE)
+ (object ClassView "Class" "Logical View::sdo::Property" @13
+ ShowCompartmentStereotypes TRUE
+ SuppressOperation TRUE
+ location (448, 1648)
+ label (object ItemLabel
+ Parent_View @13
+ location (78, 1614)
+ fill_color 13434879
+ nlines 1
+ max_width 740
+ justify 0
+ label "Property")
+ stereotype (object ItemLabel
+ Parent_View @13
+ location (78, 1564)
+ fill_color 13434879
+ anchor 10
+ nlines 1
+ max_width 740
+ justify 0
+ label "<<Interface>>")
+ icon "Interface"
+ icon_style "Label"
+ line_color 3342489
+ fill_color 13434879
+ quidu "3FAB7CA1031A"
+ compartment (object Compartment
+ Parent_View @13
+ location (78, 1674)
+ icon_style "Icon"
+ fill_color 13434879
+ anchor 2
+ nlines 1
+ max_width 0
+ compartmentItems (list Compartment
+ "<<javaclass>> + commonj.sdo.Property"))
+ width 758
+ height 192
+ annotation 8
+ autoResize TRUE)
+ (object ClassView "Class" "Logical View::sdo::ChangeSummarySetting" @14
+ ShowCompartmentStereotypes TRUE
+ SuppressOperation TRUE
+ IncludeOperation TRUE
+ location (608, 640)
+ label (object ItemLabel
+ Parent_View @14
+ location (83, 584)
+ fill_color 13434879
+ nlines 1
+ max_width 1050
+ justify 0
+ label "ChangeSummarySetting")
+ icon_style "Icon"
+ line_color 3342489
+ fill_color 13434879
+ quidu "3FAB8BF8005A"
+ compartment (object Compartment
+ Parent_View @14
+ location (83, 644)
+ icon_style "Icon"
+ fill_color 13434879
+ anchor 2
+ nlines 1
+ max_width 0
+ compartmentItems (list Compartment
+ "<<javaclass>> + commonj.sdo.ChangeSummary$Setting"))
+ width 1068
+ height 136
+ annotation 8
+ autoResize TRUE)
+ (object ClassView "Class" "Logical View::change::ChangeDescription" @15
+ ShowCompartmentStereotypes TRUE
+ SuppressAttribute TRUE
+ SuppressOperation TRUE
+ IncludeAttribute TRUE
+ IncludeOperation TRUE
+ location (2496, 400)
+ label (object ItemLabel
+ Parent_View @15
+ location (2311, 350)
+ fill_color 13434879
+ nlines 1
+ max_width 370
+ justify 0
+ label "ChangeDescription")
+ icon_style "Icon"
+ line_color 3342489
+ fill_color 13434879
+ quidu "4FAB6F110198"
+ width 388
+ height 124
+ annotation 8
+ autoResize TRUE)
+ (object ClassView "Class" "Logical View::ecore::EObject" @16
+ ShowCompartmentStereotypes TRUE
+ SuppressAttribute TRUE
+ SuppressOperation TRUE
+ location (2592, 160)
+ label (object ItemLabel
+ Parent_View @16
+ location (2503, 110)
+ fill_color 13434879
+ nlines 1
+ max_width 178
+ justify 0
+ label "EObject")
+ icon_style "Icon"
+ line_color 3342489
+ fill_color 13434879
+ quidu "3C4F1C860123"
+ width 196
+ height 124
+ annotation 8
+ autoResize TRUE)
+ (object ClassView "Class" "Logical View::change::FeatureChange" @17
+ ShowCompartmentStereotypes TRUE
+ SuppressAttribute TRUE
+ SuppressOperation TRUE
+ IncludeAttribute TRUE
+ IncludeOperation TRUE
+ location (2528, 640)
+ label (object ItemLabel
+ Parent_View @17
+ location (2374, 590)
+ fill_color 13434879
+ nlines 1
+ max_width 308
+ justify 0
+ label "FeatureChange")
+ icon_style "Icon"
+ line_color 3342489
+ fill_color 13434879
+ quidu "4FC39D6D0177"
+ width 326
+ height 124
+ annotation 8
+ autoResize TRUE)
+ (object ClassView "Class" "Logical View::sdo::Class" @18
+ ShowCompartmentStereotypes TRUE
+ SuppressOperation TRUE
+ IncludeAttribute TRUE
+ IncludeOperation TRUE
+ location (1648, 1296)
+ label (object ItemLabel
+ Parent_View @18
+ location (1311, 1241)
+ fill_color 13434879
+ nlines 1
+ max_width 674
+ justify 0
+ label "Class")
+ icon_style "Icon"
+ line_color 3342489
+ fill_color 13434879
+ quidu "43559BB702E7"
+ width 692
+ height 134
+ annotation 8)
+ (object ClassView "Class" "Logical View::sdo::DataType" @19
+ ShowCompartmentStereotypes TRUE
+ SuppressOperation TRUE
+ IncludeAttribute TRUE
+ IncludeOperation TRUE
+ location (1648, 880)
+ label (object ItemLabel
+ Parent_View @19
+ location (1311, 825)
+ fill_color 13434879
+ nlines 1
+ max_width 674
+ justify 0
+ label "DataType")
+ icon_style "Icon"
+ line_color 3342489
+ fill_color 13434879
+ quidu "43559BE502F7"
+ width 692
+ height 134
+ annotation 8)
+ (object ClassView "Class" "Logical View::ecore::EClass" @20
+ ShowCompartmentStereotypes TRUE
+ SuppressAttribute TRUE
+ SuppressOperation TRUE
+ IncludeAttribute TRUE
+ IncludeOperation TRUE
+ location (2592, 1296)
+ label (object ItemLabel
+ Parent_View @20
+ location (2502, 1246)
+ fill_color 13434879
+ nlines 1
+ max_width 181
+ justify 0
+ label "EClass")
+ icon_style "Icon"
+ line_color 3342489
+ fill_color 13434879
+ quidu "3903D5BF000A"
+ width 199
+ height 124
+ annotation 8)
+ (object ClassView "Class" "Logical View::ecore::EDataType" @21
+ ShowCompartmentStereotypes TRUE
+ SuppressAttribute TRUE
+ SuppressOperation TRUE
+ IncludeAttribute TRUE
+ IncludeOperation TRUE
+ location (2560, 880)
+ label (object ItemLabel
+ Parent_View @21
+ location (2444, 830)
+ fill_color 13434879
+ nlines 1
+ max_width 232
+ justify 0
+ label "EDataType")
+ icon_style "Icon"
+ line_color 3342489
+ fill_color 13434879
+ quidu "3903D525033E"
+ width 250
+ height 124
+ annotation 8)
+ (object ClassView "Class" "Logical View::sdo::Attribute" @22
+ ShowCompartmentStereotypes TRUE
+ SuppressOperation TRUE
+ IncludeAttribute TRUE
+ IncludeOperation TRUE
+ location (1664, 1536)
+ label (object ItemLabel
+ Parent_View @22
+ location (1294, 1481)
+ fill_color 13434879
+ nlines 1
+ max_width 740
+ justify 0
+ label "Attribute")
+ icon_style "Icon"
+ line_color 3342489
+ fill_color 13434879
+ quidu "43559E690004"
+ width 758
+ height 134
+ annotation 8)
+ (object ClassView "Class" "Logical View::sdo::Reference" @23
+ ShowCompartmentStereotypes TRUE
+ SuppressOperation TRUE
+ IncludeAttribute TRUE
+ IncludeOperation TRUE
+ location (1664, 1760)
+ label (object ItemLabel
+ Parent_View @23
+ location (1294, 1705)
+ fill_color 13434879
+ nlines 1
+ max_width 740
+ justify 0
+ label "Reference")
+ icon_style "Icon"
+ line_color 3342489
+ fill_color 13434879
+ quidu "43559E86025E"
+ width 758
+ height 134
+ annotation 8)
+ (object ClassView "Class" "Logical View::ecore::EAttribute" @24
+ ShowCompartmentStereotypes TRUE
+ SuppressAttribute TRUE
+ SuppressOperation TRUE
+ IncludeAttribute TRUE
+ IncludeOperation TRUE
+ location (2576, 1536)
+ label (object ItemLabel
+ Parent_View @24
+ location (2470, 1486)
+ fill_color 13434879
+ nlines 1
+ max_width 212
+ justify 0
+ label "EAttribute")
+ icon_style "Icon"
+ line_color 3342489
+ fill_color 13434879
+ quidu "39238472039D"
+ width 230
+ height 124
+ annotation 8)
+ (object ClassView "Class" "Logical View::ecore::EReference" @25
+ ShowCompartmentStereotypes TRUE
+ SuppressAttribute TRUE
+ SuppressOperation TRUE
+ IncludeAttribute TRUE
+ IncludeOperation TRUE
+ location (2576, 1760)
+ label (object ItemLabel
+ Parent_View @25
+ location (2458, 1710)
+ fill_color 13434879
+ nlines 1
+ max_width 236
+ justify 0
+ label "EReference")
+ icon_style "Icon"
+ line_color 3342489
+ fill_color 13434879
+ quidu "39238479039D"
+ width 254
+ height 124
+ annotation 8)
+ (object InheritView "" @26
+ stereotype TRUE
+ line_color 3342489
+ quidu "43559ED801E4"
+ client @22
+ supplier @24
+ line_style 0)
+ (object InheritView "" @27
+ stereotype TRUE
+ line_color 3342489
+ quidu "43559EE0011D"
+ client @23
+ supplier @25
+ line_style 0)
+ (object InheritView "" @28
+ stereotype TRUE
+ line_color 3342489
+ quidu "43567DF9022A"
+ client @23
+ supplier @13
+ line_style 0)
+ (object InheritView "" @29
+ stereotype TRUE
+ line_color 3342489
+ quidu "43567DFD03B6"
+ client @22
+ supplier @13
+ line_style 0)
+ (object ClassView "Class" "Logical View::sdo::Enum" @30
+ ShowCompartmentStereotypes TRUE
+ SuppressOperation TRUE
+ IncludeAttribute TRUE
+ IncludeOperation TRUE
+ location (1648, 1088)
+ label (object ItemLabel
+ Parent_View @30
+ location (1311, 1033)
+ fill_color 13434879
+ nlines 1
+ max_width 674
+ justify 0
+ label "Enum")
+ icon_style "Icon"
+ line_color 3342489
+ fill_color 13434879
+ quidu "4357B1010017"
+ width 692
+ height 134
+ annotation 8)
+ (object ClassView "Class" "Logical View::ecore::EEnum" @31
+ ShowCompartmentStereotypes TRUE
+ SuppressAttribute TRUE
+ SuppressOperation TRUE
+ IncludeAttribute TRUE
+ IncludeOperation TRUE
+ location (2592, 1088)
+ label (object ItemLabel
+ Parent_View @31
+ location (2502, 1038)
+ fill_color 13434879
+ nlines 1
+ max_width 181
+ justify 0
+ label "EEnum")
+ icon_style "Icon"
+ line_color 3342489
+ fill_color 13434879
+ quidu "39A473E901D4"
+ width 199
+ height 124
+ annotation 8)
+ (object InheritView "" @32
+ stereotype TRUE
+ line_color 3342489
+ quidu "4357B1410218"
+ client @30
+ supplier @12
+ line_style 0)
+ (object InheritView "" @33
+ stereotype TRUE
+ line_color 3342489
+ quidu "4357B14701DA"
+ client @30
+ supplier @31
+ line_style 0)
+ (object InheritView "" @34
+ stereotype TRUE
+ line_color 3342489
+ quidu "43559D3A01A3"
+ client @18
+ supplier @20
+ line_style 0)
+ (object InheritView "" @35
+ stereotype TRUE
+ line_color 3342489
+ quidu "435901C600DC"
+ client @18
+ supplier @12
+ line_style 0)
+ (object InheritView "" @36
+ stereotype TRUE
+ line_color 3342489
+ quidu "43590C6F016D"
+ client @19
+ supplier @12
+ line_style 0)
+ (object InheritView "" @37
+ stereotype TRUE
+ line_color 3342489
+ quidu "43590C73038F"
+ client @19
+ supplier @21
+ line_style 0)
+ (object InheritView "" @38
+ stereotype TRUE
+ line_color 3342489
+ quidu "43612C7B0243"
+ client @10
+ supplier @16
+ line_style 0)
+ (object InheritView "" @39
+ stereotype TRUE
+ line_color 3342489
+ quidu "436134F001A6"
+ client @14
+ supplier @17
+ line_style 0)
+ (object InheritView "" @40
+ stereotype TRUE
+ line_color 3342489
+ quidu "4361480602D8"
+ client @11
+ supplier @15
+ line_style 0)))
+ (object ClassDiagram "Ecore Data Graph"
+ quid "3FAD029E0142"
+ title "Ecore Data Graph"
+ zoom 100
+ max_height 28350
+ max_width 21600
+ origin_x 0
+ origin_y 0
+ items (list diagram_item_list
+ (object ClassView "Class" "Logical View::ecore::EObject" @41
+ ShowCompartmentStereotypes TRUE
+ SuppressAttribute TRUE
+ SuppressOperation TRUE
+ IncludeAttribute TRUE
+ IncludeOperation TRUE
+ location (464, 832)
+ label (object ItemLabel
+ Parent_View @41
+ location (375, 782)
+ fill_color 13434879
+ nlines 1
+ max_width 178
+ justify 0
+ label "EObject")
+ icon_style "Icon"
+ line_color 3342489
+ fill_color 13434879
+ quidu "3C4F1C860123"
+ width 196
+ height 124
+ annotation 8
+ autoResize TRUE)
+ (object ClassView "Class" "Logical View::sdo::DataGraph" @42
+ ShowCompartmentStereotypes TRUE
+ SuppressOperation TRUE
+ IncludeAttribute TRUE
+ IncludeOperation TRUE
+ location (768, 256)
+ label (object ItemLabel
+ Parent_View @42
+ location (378, 150)
+ fill_color 13434879
+ nlines 1
+ max_width 780
+ justify 0
+ label "DataGraph")
+ icon_style "Icon"
+ line_color 3342489
+ fill_color 13434879
+ quidu "3FAB7BFE03C0"
+ width 798
+ height 236
+ annotation 8)
+ (object AssociationViewNew "$UNNAMED$1" @43
+ location (469, 572)
+ stereotype TRUE
+ quidu "3FAD26E802F5"
+ roleview_list (list RoleViews
+ (object RoleView "$UNNAMED$2" @44
+ Parent_View @43
+ location (-1067, -932)
+ stereotype TRUE
+ line_color 3342489
+ quidu "3FAD26ED00E9"
+ client @43
+ supplier @42
+ line_style 3
+ origin_attachment (469, 572)
+ terminal_attachment (469, 374))
+ (object RoleView "eRootObject" @45
+ Parent_View @43
+ location (-1067, -932)
+ label (object SegLabel @46
+ Parent_View @45
+ location (324, 683)
+ anchor 1
+ anchor_loc 1
+ nlines 1
+ max_width 252
+ justify 0
+ label "+eRootObject"
+ pctDist 0.567708
+ height 146
+ orientation 1)
+ stereotype TRUE
+ line_color 3342489
+ quidu "3FAD26ED00F3"
+ client @43
+ supplier @41
+ line_style 3
+ origin_attachment (469, 572)
+ terminal_attachment (469, 770)
+ label (object SegLabel @47
+ Parent_View @45
+ location (512, 690)
+ anchor 2
+ anchor_loc 1
+ nlines 1
+ max_width 15
+ justify 0
+ label "1"
+ pctDist 0.598958
+ height 43
+ orientation 0))))
+ (object ClassView "Class" "Logical View::sdo::ChangeSummary" @48
+ ShowCompartmentStereotypes TRUE
+ SuppressAttribute TRUE
+ SuppressOperation TRUE
+ IncludeAttribute TRUE
+ IncludeOperation TRUE
+ location (1072, 832)
+ label (object ItemLabel
+ Parent_View @48
+ location (881, 782)
+ fill_color 13434879
+ nlines 1
+ max_width 382
+ justify 0
+ label "ChangeSummary")
+ icon_style "Icon"
+ line_color 3342489
+ fill_color 13434879
+ quidu "3FAB7C360208"
+ width 400
+ height 125
+ annotation 8)
+ (object AssociationViewNew "$UNNAMED$0" @49
+ location (1078, 572)
+ stereotype TRUE
+ quidu "3FAD10CA01D5"
+ roleview_list (list RoleViews
+ (object RoleView "eDataGraph" @50
+ Parent_View @49
+ location (662, -692)
+ label (object SegLabel @51
+ Parent_View @50
+ location (929, 437)
+ anchor 1
+ anchor_loc 1
+ nlines 1
+ max_width 240
+ justify 0
+ label "+eDataGraph"
+ pctDist 0.686170
+ height 150
+ orientation 0)
+ stereotype TRUE
+ line_color 3342489
+ quidu "3FAD10CC001F"
+ client @49
+ supplier @42
+ line_style 3
+ origin_attachment (1078, 572)
+ terminal_attachment (1078, 374)
+ label (object SegLabel @52
+ Parent_View @50
+ location (1115, 437)
+ anchor 2
+ anchor_loc 1
+ nlines 1
+ max_width 15
+ justify 0
+ label "1"
+ pctDist 0.686170
+ height 37
+ orientation 1))
+ (object RoleView "eChangeSummary" @53
+ Parent_View @49
+ location (662, -692)
+ label (object SegLabel @54
+ Parent_View @53
+ location (876, 692)
+ anchor 1
+ anchor_loc 1
+ nlines 1
+ max_width 360
+ justify 0
+ label "+eChangeSummary"
+ pctDist 0.611702
+ height 203
+ orientation 1)
+ stereotype TRUE
+ line_color 3342489
+ quidu "3FAD10CC0020"
+ client @49
+ supplier @48
+ line_style 3
+ origin_attachment (1078, 572)
+ terminal_attachment (1078, 770)
+ label (object SegLabel @55
+ Parent_View @53
+ location (1114, 692)
+ anchor 2
+ anchor_loc 1
+ nlines 1
+ max_width 15
+ justify 0
+ label "1"
+ pctDist 0.611702
+ height 36
+ orientation 0))))))
+ (object ClassDiagram "External Types"
+ quid "3FAB907F00F7"
+ title "External Types"
+ zoom 100
+ max_height 28350
+ max_width 21600
+ origin_x 0
+ origin_y 0
+ items (list diagram_item_list
+ (object ClassView "Class" "Logical View::sdo::EObjectStreamException" @56
+ ShowCompartmentStereotypes TRUE
+ SuppressOperation TRUE
+ IncludeAttribute TRUE
+ IncludeOperation TRUE
+ ShowOperationSignature TRUE
+ location (1184, 176)
+ font (object Font
+ italics TRUE)
+ label (object ItemLabel
+ Parent_View @56
+ location (741, 142)
+ fill_color 13434879
+ nlines 1
+ max_width 886
+ justify 0
+ label "EObjectStreamException")
+ stereotype (object ItemLabel
+ Parent_View @56
+ location (741, 92)
+ fill_color 13434879
+ anchor 10
+ nlines 1
+ max_width 886
+ justify 0
+ label "<<datatype>>")
+ icon_style "Icon"
+ line_color 3342489
+ fill_color 12303359
+ quidu "3FC352DE038F"
+ width 904
+ height 192
+ annotation 8
+ autoResize TRUE)
+ (object ClassView "Class" "Logical View::sdo::EJavaList" @57
+ ShowCompartmentStereotypes TRUE
+ SuppressOperation TRUE
+ IncludeAttribute TRUE
+ IncludeOperation TRUE
+ ShowOperationSignature TRUE
+ location (352, 176)
+ font (object Font
+ italics TRUE)
+ label (object ItemLabel
+ Parent_View @57
+ location (80, 142)
+ fill_color 13434879
+ nlines 1
+ max_width 544
+ justify 0
+ label "EJavaList")
+ stereotype (object ItemLabel
+ Parent_View @57
+ location (80, 92)
+ fill_color 13434879
+ anchor 10
+ nlines 1
+ max_width 544
+ justify 0
+ label "<<datatype>>")
+ icon_style "Icon"
+ line_color 3342489
+ fill_color 8963327
+ quidu "3FAB8A010237"
+ width 562
+ height 192
+ annotation 8)))
+ (object ClassDiagram "SDO XML Type"
+ quid "406964270056"
+ title "SDO XML Type"
+ zoom 100
+ max_height 28350
+ max_width 21600
+ origin_x 0
+ origin_y 0
+ items (list diagram_item_list
+ (object ClassView "Class" "Logical View::type::AnyType" @58
+ ShowCompartmentStereotypes TRUE
+ IncludeAttribute TRUE
+ IncludeOperation TRUE
+ ShowOperationSignature TRUE
+ location (1488, 576)
+ label (object ItemLabel
+ Parent_View @58
+ location (1075, 421)
+ fill_color 13434879
+ nlines 1
+ max_width 826
+ justify 0
+ label "AnyType")
+ icon_style "Icon"
+ line_color 3342489
+ fill_color 13434879
+ quidu "40695FE40332"
+ width 844
+ height 334
+ annotation 8)
+ (object ClassView "Class" "Logical View::type::SimpleAnyType" @59
+ ShowCompartmentStereotypes TRUE
+ IncludeAttribute TRUE
+ IncludeOperation TRUE
+ ShowOperationSignature TRUE
+ location (1488, 1040)
+ label (object ItemLabel
+ Parent_View @59
+ location (1272, 910)
+ fill_color 13434879
+ nlines 1
+ max_width 432
+ justify 0
+ label "SimpleAnyType")
+ icon_style "Icon"
+ line_color 3342489
+ fill_color 13434879
+ quidu "406961210099"
+ width 450
+ height 284
+ annotation 8)
+ (object ClassView "Class" "Logical View::sdo::AnyTypeDataObject" @60
+ ShowCompartmentStereotypes TRUE
+ IncludeAttribute TRUE
+ IncludeOperation TRUE
+ ShowOperationSignature TRUE
+ location (448, 560)
+ label (object ItemLabel
+ Parent_View @60
+ location (250, 509)
+ fill_color 13434879
+ nlines 1
+ max_width 396
+ justify 0
+ label "AnyTypeDataObject")
+ icon_style "Icon"
+ line_color 3342489
+ fill_color 13434879
+ quidu "4069645E0146"
+ width 414
+ height 126
+ annotation 8
+ autoResize TRUE)
+ (object ClassView "Class" "Logical View::sdo::SimpleAnyTypeDataObject" @61
+ ShowCompartmentStereotypes TRUE
+ IncludeAttribute TRUE
+ IncludeOperation TRUE
+ ShowOperationSignature TRUE
+ location (464, 1024)
+ label (object ItemLabel
+ Parent_View @61
+ location (201, 973)
+ fill_color 13434879
+ nlines 1
+ max_width 526
+ justify 0
+ label "SimpleAnyTypeDataObject")
+ icon_style "Icon"
+ line_color 3342489
+ fill_color 13434879
+ quidu "406964710189"
+ width 544
+ height 126
+ annotation 8
+ autoResize TRUE)
+ (object ClassView "Class" "Logical View::sdo::DataObject" @62
+ ShowCompartmentStereotypes TRUE
+ SuppressAttribute TRUE
+ SuppressOperation TRUE
+ IncludeAttribute TRUE
+ IncludeOperation TRUE
+ location (448, 208)
+ font (object Font
+ italics TRUE)
+ label (object ItemLabel
+ Parent_View @62
+ location (328, 165)
+ fill_color 13434879
+ nlines 1
+ max_width 240
+ justify 0
+ label "DataObject")
+ icon_style "Icon"
+ line_color 3342489
+ fill_color 13434879
+ quidu "3FAB6F7501C4"
+ width 258
+ height 110
+ annotation 8)
+ (object InheritView "" @63
+ stereotype (object SegLabel @64
+ Parent_View @63
+ location (298, 791)
+ anchor 10
+ anchor_loc 1
+ nlines 1
+ max_width 450
+ justify 0
+ label "<<extend>>"
+ pctDist 0.502959
+ height 150
+ orientation 0)
+ line_color 3342489
+ quidu "4069648302E3"
+ client @61
+ supplier @60
+ line_style 3
+ origin_attachment (448, 961)
+ terminal_attachment (448, 623))
+ (object InheritView "" @65
+ stereotype TRUE
+ line_color 3342489
+ quidu "4069648D02E8"
+ client @61
+ supplier @59
+ line_style 3
+ origin_attachment (736, 1002)
+ terminal_attachment (1263, 1002))
+ (object InheritView "" @66
+ stereotype TRUE
+ line_color 3342489
+ quidu "40696143020B"
+ client @59
+ supplier @58
+ line_style 3
+ origin_attachment (1479, 898)
+ terminal_attachment (1479, 743))
+ (object InheritView "" @67
+ stereotype TRUE
+ line_color 3342489
+ quidu "406964870375"
+ client @60
+ supplier @58
+ line_style 3
+ origin_attachment (655, 561)
+ terminal_attachment (1066, 561))
+ (object InheritView "" @68
+ stereotype (object SegLabel @69
+ Parent_View @68
+ location (294, 403)
+ anchor 10
+ anchor_loc 1
+ nlines 1
+ max_width 450
+ justify 0
+ label "<<extend>>"
+ pctDist 0.405229
+ height 155
+ orientation 0)
+ line_color 3342489
+ quidu "436141F003E7"
+ client @60
+ supplier @62
+ line_style 0)))
+ (object ClassDiagram "SDO DataObject Implementations"
+ quid "43621DF90149"
+ title "SDO DataObject Implementations"
+ zoom 100
+ max_height 28350
+ max_width 21600
+ origin_x 0
+ origin_y 0
+ items (list diagram_item_list
+ (object ClassView "Class" "Logical View::sdo::DataObject" @70
+ ShowCompartmentStereotypes TRUE
+ SuppressOperation TRUE
+ location (1056, 368)
+ font (object Font
+ italics TRUE)
+ label (object ItemLabel
+ Parent_View @70
+ location (661, 312)
+ fill_color 13434879
+ nlines 1
+ max_width 790
+ justify 0
+ label "DataObject")
+ icon_style "Icon"
+ line_color 3342489
+ fill_color 13434879
+ quidu "3FAB6F7501C4"
+ compartment (object Compartment
+ Parent_View @70
+ location (661, 372)
+ icon_style "Icon"
+ fill_color 13434879
+ anchor 2
+ nlines 1
+ max_width 0
+ compartmentItems (list Compartment
+ "<<javaclass>> + commonj.sdo.DataObject"))
+ width 808
+ height 136
+ annotation 8
+ autoResize TRUE)
+ (object ClassView "Class" "Logical View::sdo::DynamicDataObject" @71
+ ShowCompartmentStereotypes TRUE
+ SuppressOperation TRUE
+ IncludeAttribute TRUE
+ IncludeOperation TRUE
+ location (576, 720)
+ label (object ItemLabel
+ Parent_View @71
+ location (181, 664)
+ fill_color 13434879
+ nlines 1
+ max_width 790
+ justify 0
+ label "DynamicDataObject")
+ icon_style "Icon"
+ line_color 3342489
+ fill_color 13434879
+ quidu "435E94210124"
+ width 808
+ height 136
+ annotation 8)
+ (object ClassView "Class" "Logical View::sdo::StoreDataObject" @72
+ ShowCompartmentStereotypes TRUE
+ SuppressOperation TRUE
+ IncludeAttribute TRUE
+ IncludeOperation TRUE
+ location (1680, 720)
+ label (object ItemLabel
+ Parent_View @72
+ location (1285, 664)
+ fill_color 13434879
+ nlines 1
+ max_width 790
+ justify 0
+ label "StoreDataObject")
+ icon_style "Icon"
+ line_color 3342489
+ fill_color 13434879
+ quidu "43621EBA03B4"
+ width 808
+ height 136
+ annotation 8)
+ (object InheritTreeView "" @73
+ location (1053, 559)
+ line_color 3342489
+ fill_color 13434879
+ supplier @70
+ vertices (list Points
+ (1053, 559)
+ (1053, 436)))
+ (object InheritView "" @74
+ stereotype TRUE
+ line_color 3342489
+ quidu "435E9435008D"
+ client @71
+ supplier @70
+ line_style 3
+ origin_attachment (562, 652)
+ terminal_attachment (562, 559)
+ drawSupplier @73)
+ (object ClassView "Class" "Logical View::sdo::DynamicStoreDataObject" @75
+ ShowCompartmentStereotypes TRUE
+ SuppressOperation TRUE
+ IncludeAttribute TRUE
+ IncludeOperation TRUE
+ location (1680, 1056)
+ label (object ItemLabel
+ Parent_View @75
+ location (1285, 1000)
+ fill_color 13434879
+ nlines 1
+ max_width 790
+ justify 0
+ label "DynamicStoreDataObject")
+ icon_style "Icon"
+ line_color 3342489
+ fill_color 13434879
+ quidu "43621F4203CD"
+ width 808
+ height 136
+ annotation 8)
+ (object InheritView "" @76
+ stereotype TRUE
+ line_color 3342489
+ quidu "43621F920242"
+ client @75
+ supplier @72
+ line_style 0)
+ (object InheritView "" @77
+ stereotype TRUE
+ line_color 3342489
+ quidu "43621F0B03A6"
+ client @72
+ supplier @70
+ line_style 3
+ origin_attachment (1681, 652)
+ terminal_attachment (1681, 559)
+ drawSupplier @73)))))
+ (object Class_Category "ecore"
+ is_unit TRUE
+ is_loaded FALSE
+ file_name "$VABASE_PLUGINS_PATH\\org.eclipse.emf.ecore\\model\\org.eclipse.emf.Ecore.cat"
+ quid "39A5ED04004E")
+ (object Class_Category "change"
+ is_unit TRUE
+ is_loaded FALSE
+ file_name "$VABASE_PLUGINS_PATH\\org.eclipse.emf.ecore.change\\model\\org.eclipse.emf.ecore.Change.cat"
+ quid "4FAA8E8B0306")
+ (object Class_Category "type"
+ attributes (list Attribute_Set
+ (object Attribute
+ tool "Ecore"
+ name "packageName"
+ value "type")
+ (object Attribute
+ tool "Ecore"
+ name "nsPrefix"
+ value "xml.type")
+ (object Attribute
+ tool "Ecore"
+ name "nsURI"
+ value "http://www.eclipse.org/emf/2003/XMLType")
+ (object Attribute
+ tool "Ecore"
+ name "basePackage"
+ value "org.eclipse.emf.ecore.xml")
+ (object Attribute
+ tool "Ecore"
+ name "prefix"
+ value "XMLType"))
+ quid "40696924000C"
+ exportControl "Public"
+ logical_models (list unit_reference_list
+ (object Class "AnyType"
+ attributes (list Attribute_Set
+ (object Attribute
+ tool "Ecore"
+ name "xmlContentKind"
+ value ("ContentKind" 3)))
+ quid "40695FE40332"
+ class_attributes (list class_attribute_list
+ (object ClassAttribute "mixed"
+ attributes (list Attribute_Set
+ (object Attribute
+ tool "Ecore"
+ name "isUnique"
+ value FALSE))
+ quid "40696039001D"
+ stereotype "0..*"
+ type "EFeatureMapEntry"
+ exportControl "Public")
+ (object ClassAttribute "any"
+ attributes (list Attribute_Set
+ (object Attribute
+ tool "Ecore"
+ name "isTransient"
+ value TRUE)
+ (object Attribute
+ tool "Ecore"
+ name "isVolatile"
+ value TRUE)
+ (object Attribute
+ tool "Ecore"
+ name "isUnique"
+ value FALSE))
+ quid "40696084002F"
+ stereotype "0..*"
+ type "EFeatureMapEntry"
+ exportControl "Public"
+ derived TRUE)
+ (object ClassAttribute "anyAttribute"
+ attributes (list Attribute_Set
+ (object Attribute
+ tool "Ecore"
+ name "isUnique"
+ value FALSE))
+ quid "4069609A0153"
+ stereotype "0..*"
+ type "EFeatureMapEntry"
+ exportControl "Public")))
+ (object Class "SimpleAnyType"
+ attributes (list Attribute_Set
+ (object Attribute
+ tool "Ecore"
+ name "xmlContentKind"
+ value ("ContentKind" 2)))
+ quid "406961210099"
+ superclasses (list inheritance_relationship_list
+ (object Inheritance_Relationship
+ quid "40696143020B"
+ supplier "Logical View::type::AnyType"
+ quidu "40695FE40332"))
+ class_attributes (list class_attribute_list
+ (object ClassAttribute "rawValue"
+ attributes (list Attribute_Set
+ (object Attribute
+ tool "Ecore"
+ name "isTransient"
+ value TRUE)
+ (object Attribute
+ tool "Ecore"
+ name "isVolatile"
+ value TRUE)
+ (object Attribute
+ tool "Ecore"
+ name "isUnique"
+ value FALSE))
+ quid "4069612E0391"
+ type "String"
+ exportControl "Public"
+ derived TRUE)
+ (object ClassAttribute "value"
+ attributes (list Attribute_Set
+ (object Attribute
+ tool "Ecore"
+ name "isTransient"
+ value TRUE)
+ (object Attribute
+ tool "Ecore"
+ name "isVolatile"
+ value TRUE)
+ (object Attribute
+ tool "Ecore"
+ name "isUnique"
+ value FALSE))
+ quid "406961A40106"
+ type "EJavaObject"
+ exportControl "Public"
+ derived TRUE))))
+ logical_presentations (list unit_reference_list)))
+ logical_presentations (list unit_reference_list
+ (object ClassDiagram "Main"
+ quid "3FAA8E8700D0"
+ title "Main"
+ zoom 100
+ max_height 28350
+ max_width 21600
+ origin_x 0
+ origin_y 0
+ items (list diagram_item_list
+ (object CategoryView "Logical View::ecore" @78
+ location (912, 272)
+ label (object ItemLabel
+ Parent_View @78
+ location (768, 188)
+ fill_color 13434879
+ nlines 2
+ max_width 288
+ justify 0
+ label "ecore")
+ icon_style "Icon"
+ line_color 3342489
+ fill_color 13434879
+ quidu "39A5ED04004E"
+ width 300
+ height 180)
+ (object CategoryView "Logical View::sdo" @79
+ location (368, 272)
+ label (object ItemLabel
+ Parent_View @79
+ location (224, 188)
+ fill_color 13434879
+ nlines 2
+ max_width 288
+ justify 0
+ label "sdo")
+ icon_style "Icon"
+ line_color 3342489
+ fill_color 13434879
+ quidu "3FAA8E8B0306"
+ width 300
+ height 180)
+ (object CategoryView "Logical View::change" @80
+ location (1440, 272)
+ label (object ItemLabel
+ Parent_View @80
+ location (1296, 188)
+ fill_color 13434879
+ nlines 2
+ max_width 288
+ justify 0
+ label "change")
+ icon_style "Icon"
+ line_color 3342489
+ fill_color 13434879
+ quidu "4FAA8E8B0306"
+ width 300
+ height 180)))))
+ root_subsystem (object SubSystem "Component View"
+ quid "3FAA8E8700BF"
+ physical_models (list unit_reference_list)
+ physical_presentations (list unit_reference_list
+ (object Module_Diagram "Main"
+ quid "3FAA8E8700EE"
+ title "Main"
+ zoom 100
+ max_height 28350
+ max_width 21600
+ origin_x 0
+ origin_y 0
+ items (list diagram_item_list))))
+ process_structure (object Processes
+ quid "3FAA8E8700C0"
+ ProcsNDevs (list
+ (object Process_Diagram "Deployment View"
+ quid "3FAA8E8700C2"
+ title "Deployment View"
+ zoom 100
+ max_height 28350
+ max_width 21600
+ origin_x 0
+ origin_y 0
+ items (list diagram_item_list))))
+ properties (object Properties
+ attributes (list Attribute_Set
+ (object Attribute
+ tool "DDL"
+ name "propertyId"
+ value "809135966")
+ (object Attribute
+ tool "DDL"
+ name "default__Project"
+ value (list Attribute_Set
+ (object Attribute
+ tool "DDL"
+ name "Directory"
+ value "AUTO GENERATE")
+ (object Attribute
+ tool "DDL"
+ name "DataBase"
+ value ("DataBaseSet" 800))
+ (object Attribute
+ tool "DDL"
+ name "DataBaseSet"
+ value (list Attribute_Set
+ (object Attribute
+ tool "DDL"
+ name "ANSI"
+ value 800)
+ (object Attribute
+ tool "DDL"
+ name "Oracle"
+ value 801)
+ (object Attribute
+ tool "DDL"
+ name "SQLServer"
+ value 802)
+ (object Attribute
+ tool "DDL"
+ name "Sybase"
+ value 803)
+ (object Attribute
+ tool "DDL"
+ name "Watcom"
+ value 804)))
+ (object Attribute
+ tool "DDL"
+ name "PrimaryKeyColumnName"
+ value "Id")
+ (object Attribute
+ tool "DDL"
+ name "PrimaryKeyColumnType"
+ value "NUMBER(5)")
+ (object Attribute
+ tool "DDL"
+ name "ViewName"
+ value "V_")
+ (object Attribute
+ tool "DDL"
+ name "TableName"
+ value "T_")
+ (object Attribute
+ tool "DDL"
+ name "InheritSuffix"
+ value "_V")
+ (object Attribute
+ tool "DDL"
+ name "DropClause"
+ value FALSE)
+ (object Attribute
+ tool "DDL"
+ name "BaseViews"
+ value FALSE)
+ (object Attribute
+ tool "DDL"
+ name "DDLScriptFilename"
+ value "DDL1.SQL")))
+ (object Attribute
+ tool "DDL"
+ name "default__Attribute"
+ value (list Attribute_Set
+ (object Attribute
+ tool "DDL"
+ name "ColumnType"
+ value "VARCHAR")
+ (object Attribute
+ tool "DDL"
+ name "Length"
+ value "")
+ (object Attribute
+ tool "DDL"
+ name "NullsOK"
+ value TRUE)
+ (object Attribute
+ tool "DDL"
+ name "PrimaryKey"
+ value FALSE)
+ (object Attribute
+ tool "DDL"
+ name "Unique"
+ value FALSE)
+ (object Attribute
+ tool "DDL"
+ name "CompositeUnique"
+ value FALSE)
+ (object Attribute
+ tool "DDL"
+ name "CheckConstraint"
+ value "")))
+ (object Attribute
+ tool "DDL"
+ name "HiddenTool"
+ value FALSE)
+ (object Attribute
+ tool "IDL"
+ name "propertyId"
+ value "809135966")
+ (object Attribute
+ tool "IDL"
+ name "default__Project"
+ value (list Attribute_Set
+ (object Attribute
+ tool "IDL"
+ name "CreateMissingDirectories"
+ value TRUE)
+ (object Attribute
+ tool "IDL"
+ name "StopOnError"
+ value TRUE)
+ (object Attribute
+ tool "IDL"
+ name "Directory"
+ value "AUTO GENERATE")
+ (object Attribute
+ tool "IDL"
+ name "GeneratePreserveRegions"
+ value TRUE)))
+ (object Attribute
+ tool "IDL"
+ name "default__Class"
+ value (list Attribute_Set
+ (object Attribute
+ tool "IDL"
+ name "ImplementationType"
+ value "")
+ (object Attribute
+ tool "IDL"
+ name "ConstValue"
+ value "")
+ (object Attribute
+ tool "IDL"
+ name "GenerateDefaultSpecifier"
+ value FALSE)
+ (object Attribute
+ tool "IDL"
+ name "DefaultSpecifier"
+ value "")
+ (object Attribute
+ tool "IDL"
+ name "IDLElement"
+ value TRUE)
+ (object Attribute
+ tool "IDL"
+ name "IDLSpecificationType"
+ value ("IDLSpecSet" 22))
+ (object Attribute
+ tool "IDL"
+ name "IDLSpecSet"
+ value (list Attribute_Set
+ (object Attribute
+ tool "IDL"
+ name "Interface"
+ value 22)
+ (object Attribute
+ tool "IDL"
+ name "Typedef"
+ value 54)
+ (object Attribute
+ tool "IDL"
+ name "Enumeration"
+ value 8)
+ (object Attribute
+ tool "IDL"
+ name "Const"
+ value 71)
+ (object Attribute
+ tool "IDL"
+ name "Exception"
+ value 61)
+ (object Attribute
+ tool "IDL"
+ name "Struct"
+ value 51)
+ (object Attribute
+ tool "IDL"
+ name "Union"
+ value 81)))))
+ (object Attribute
+ tool "IDL"
+ name "default__Module-Spec"
+ value (list Attribute_Set
+ (object Attribute
+ tool "IDL"
+ name "Generate"
+ value TRUE)
+ (object Attribute
+ tool "IDL"
+ name "CmIdentification"
+ value (value Text " %X% @(#) plugins/org.eclipse.emf.ecore.sdo/model/SDO.mdl, emf.ecore.sdo, org.eclipse.dev"))
+ (object Attribute
+ tool "IDL"
+ name "CopyrightNotice"
+ value (value Text ""))
+ (object Attribute
+ tool "IDL"
+ name "FileName"
+ value "AUTO GENERATE")
+ (object Attribute
+ tool "IDL"
+ name "GenerateIDLModule"
+ value FALSE)
+ (object Attribute
+ tool "IDL"
+ name "InclusionProtectionSymbol"
+ value "AUTO GENERATE")
+ (object Attribute
+ tool "IDL"
+ name "AdditionalIncludes"
+ value (value Text ""))
+ (object Attribute
+ tool "IDL"
+ name "IncludeBySimpleName"
+ value FALSE)))
+ (object Attribute
+ tool "IDL"
+ name "default__Module-Body"
+ value (list Attribute_Set
+ (object Attribute
+ tool "IDL"
+ name "CmIdentification"
+ value (value Text " %X% @(#) plugins/org.eclipse.emf.ecore.sdo/model/SDO.mdl, emf.ecore.sdo, org.eclipse.dev"))
+ (object Attribute
+ tool "IDL"
+ name "CopyrightNotice"
+ value (value Text ""))
+ (object Attribute
+ tool "IDL"
+ name "FileName"
+ value "AUTO GENERATE")
+ (object Attribute
+ tool "IDL"
+ name "AdditionalIncludes"
+ value (value Text ""))
+ (object Attribute
+ tool "IDL"
+ name "IncludeBySimpleName"
+ value FALSE)))
+ (object Attribute
+ tool "IDL"
+ name "default__Operation"
+ value (list Attribute_Set
+ (object Attribute
+ tool "IDL"
+ name "OperationIsOneWay"
+ value FALSE)
+ (object Attribute
+ tool "IDL"
+ name "Context"
+ value "")
+ (object Attribute
+ tool "IDL"
+ name "Raises"
+ value "")))
+ (object Attribute
+ tool "IDL"
+ name "default__Attribute"
+ value (list Attribute_Set
+ (object Attribute
+ tool "IDL"
+ name "CaseSpecifier"
+ value "")
+ (object Attribute
+ tool "IDL"
+ name "GenerateDataMember"
+ value TRUE)
+ (object Attribute
+ tool "IDL"
+ name "DataMemberName"
+ value "$relationship")
+ (object Attribute
+ tool "IDL"
+ name "IsReadOnly"
+ value FALSE)
+ (object Attribute
+ tool "IDL"
+ name "IsConst"
+ value FALSE)
+ (object Attribute
+ tool "IDL"
+ name "ConstValue"
+ value "")))
+ (object Attribute
+ tool "IDL"
+ name "default__Has"
+ value (list Attribute_Set
+ (object Attribute
+ tool "IDL"
+ name "NameIfUnlabeled"
+ value "the_$supplier")
+ (object Attribute
+ tool "IDL"
+ name "GenerateDataMember"
+ value TRUE)
+ (object Attribute
+ tool "IDL"
+ name "DataMemberName"
+ value "$relationship")
+ (object Attribute
+ tool "IDL"
+ name "GenerateForwardReference"
+ value FALSE)
+ (object Attribute
+ tool "IDL"
+ name "IsReadOnly"
+ value FALSE)
+ (object Attribute
+ tool "IDL"
+ name "BoundedHasRelType"
+ value ("HasRelTypeSet" 47))
+ (object Attribute
+ tool "IDL"
+ name "HasRelTypeSet"
+ value (list Attribute_Set
+ (object Attribute
+ tool "IDL"
+ name "Array"
+ value 24)
+ (object Attribute
+ tool "IDL"
+ name "Sequence"
+ value 47)))))
+ (object Attribute
+ tool "IDL"
+ name "default__Role"
+ value (list Attribute_Set
+ (object Attribute
+ tool "IDL"
+ name "NameIfUnlabeled"
+ value "the_$supplier")
+ (object Attribute
+ tool "IDL"
+ name "GenerateDataMember"
+ value TRUE)
+ (object Attribute
+ tool "IDL"
+ name "DataMemberName"
+ value "$relationship")
+ (object Attribute
+ tool "IDL"
+ name "GenerateForwardReference"
+ value FALSE)
+ (object Attribute
+ tool "IDL"
+ name "IsReadOnly"
+ value FALSE)
+ (object Attribute
+ tool "IDL"
+ name "BoundedRoleType"
+ value ("AssocTypeSet" 47))
+ (object Attribute
+ tool "IDL"
+ name "AssocTypeSet"
+ value (list Attribute_Set
+ (object Attribute
+ tool "IDL"
+ name "Array"
+ value 24)
+ (object Attribute
+ tool "IDL"
+ name "Sequence"
+ value 47)))))
+ (object Attribute
+ tool "IDL"
+ name "default__Uses"
+ value (list Attribute_Set
+ (object Attribute
+ tool "IDL"
+ name "GenerateForwardReference"
+ value FALSE)))
+ (object Attribute
+ tool "IDL"
+ name "default__Subsystem"
+ value (list Attribute_Set
+ (object Attribute
+ tool "IDL"
+ name "Directory"
+ value "AUTO GENERATE")))
+ (object Attribute
+ tool "IDL"
+ name "HiddenTool"
+ value FALSE)
+ (object Attribute
+ tool "SCC"
+ name "HiddenTool"
+ value FALSE)
+ (object Attribute
+ tool "Ecore"
+ name "propertyId"
+ value "809135969")
+ (object Attribute
+ tool "Ecore"
+ name "default__Category"
+ value (list Attribute_Set
+ (object Attribute
+ tool "Ecore"
+ name "packageName"
+ value "")
+ (object Attribute
+ tool "Ecore"
+ name "nsPrefix"
+ value "")
+ (object Attribute
+ tool "Ecore"
+ name "nsURI"
+ value "")
+ (object Attribute
+ tool "Ecore"
+ name "basePackage"
+ value "")
+ (object Attribute
+ tool "Ecore"
+ name "prefix"
+ value "")
+ (object Attribute
+ tool "Ecore"
+ name "annotation"
+ value "")))
+ (object Attribute
+ tool "Ecore"
+ name "default__Class"
+ value (list Attribute_Set
+ (object Attribute
+ tool "Ecore"
+ name "classifierName"
+ value "")
+ (object Attribute
+ tool "Ecore"
+ name "xmlName"
+ value "")
+ (object Attribute
+ tool "Ecore"
+ name "xmlContentKind"
+ value ("ContentKind" 0))
+ (object Attribute
+ tool "Ecore"
+ name "ContentKind"
+ value (list Attribute_Set
+ (object Attribute
+ tool "Ecore"
+ name "Unspecified"
+ value 0)
+ (object Attribute
+ tool "Ecore"
+ name "Empty"
+ value 1)
+ (object Attribute
+ tool "Ecore"
+ name "Simple"
+ value 2)
+ (object Attribute
+ tool "Ecore"
+ name "Mixed"
+ value 3)
+ (object Attribute
+ tool "Ecore"
+ name "ElementOnly"
+ value 4)))
+ (object Attribute
+ tool "Ecore"
+ name "annotation"
+ value "")))
+ (object Attribute
+ tool "Ecore"
+ name "default__Operation"
+ value (list Attribute_Set
+ (object Attribute
+ tool "Ecore"
+ name "operationName"
+ value "")
+ (object Attribute
+ tool "Ecore"
+ name "annotation"
+ value "")))
+ (object Attribute
+ tool "Ecore"
+ name "default__Attribute"
+ value (list Attribute_Set
+ (object Attribute
+ tool "Ecore"
+ name "attributeName"
+ value "")
+ (object Attribute
+ tool "Ecore"
+ name "isTransient"
+ value FALSE)
+ (object Attribute
+ tool "Ecore"
+ name "isVolatile"
+ value FALSE)
+ (object Attribute
+ tool "Ecore"
+ name "isChangeable"
+ value TRUE)
+ (object Attribute
+ tool "Ecore"
+ name "isUnsettable"
+ value FALSE)
+ (object Attribute
+ tool "Ecore"
+ name "isUnique"
+ value TRUE)
+ (object Attribute
+ tool "Ecore"
+ name "isID"
+ value FALSE)
+ (object Attribute
+ tool "Ecore"
+ name "xmlName"
+ value "")
+ (object Attribute
+ tool "Ecore"
+ name "xmlNamespace"
+ value "")
+ (object Attribute
+ tool "Ecore"
+ name "xmlFeatureKind"
+ value ("FeatureKind" 0))
+ (object Attribute
+ tool "Ecore"
+ name "FeatureKind"
+ value (list Attribute_Set
+ (object Attribute
+ tool "Ecore"
+ name "Unspecified"
+ value 0)
+ (object Attribute
+ tool "Ecore"
+ name "Simple"
+ value 1)
+ (object Attribute
+ tool "Ecore"
+ name "Attribute"
+ value 2)
+ (object Attribute
+ tool "Ecore"
+ name "Element"
+ value 4)))
+ (object Attribute
+ tool "Ecore"
+ name "annotation"
+ value "")))
+ (object Attribute
+ tool "Ecore"
+ name "default__Role"
+ value (list Attribute_Set
+ (object Attribute
+ tool "Ecore"
+ name "referenceName"
+ value "")
+ (object Attribute
+ tool "Ecore"
+ name "isTransient"
+ value FALSE)
+ (object Attribute
+ tool "Ecore"
+ name "isVolatile"
+ value FALSE)
+ (object Attribute
+ tool "Ecore"
+ name "isChangeable"
+ value TRUE)
+ (object Attribute
+ tool "Ecore"
+ name "isUnsettable"
+ value FALSE)
+ (object Attribute
+ tool "Ecore"
+ name "isResolveProxies"
+ value TRUE)
+ (object Attribute
+ tool "Ecore"
+ name "xmlName"
+ value "")
+ (object Attribute
+ tool "Ecore"
+ name "xmlNamespace"
+ value "")
+ (object Attribute
+ tool "Ecore"
+ name "xmlFeatureKind"
+ value ("FeatureKind" 0))
+ (object Attribute
+ tool "Ecore"
+ name "FeatureKind"
+ value (list Attribute_Set
+ (object Attribute
+ tool "Ecore"
+ name "Unspecified"
+ value 0)
+ (object Attribute
+ tool "Ecore"
+ name "Simple"
+ value 1)
+ (object Attribute
+ tool "Ecore"
+ name "Attribute"
+ value 2)
+ (object Attribute
+ tool "Ecore"
+ name "Element"
+ value 4)))
+ (object Attribute
+ tool "Ecore"
+ name "annotation"
+ value "")))
+ (object Attribute
+ tool "framework"
+ name "HiddenTool"
+ value FALSE)
+ (object Attribute
+ tool "Java"
+ name "propertyId"
+ value "809135966")
+ (object Attribute
+ tool "Java"
+ name "default__Project"
+ value (list Attribute_Set
+ (object Attribute
+ tool "Java"
+ name "CreateMissingDirectories"
+ value TRUE)
+ (object Attribute
+ tool "Java"
+ name "StopOnError"
+ value FALSE)
+ (object Attribute
+ tool "Java"
+ name "Directory"
+ value "AUTO GENERATE")
+ (object Attribute
+ tool "Java"
+ name "UsePrefixes"
+ value FALSE)
+ (object Attribute
+ tool "Java"
+ name "InstanceVariablePrefix"
+ value "m_")
+ (object Attribute
+ tool "Java"
+ name "ClassVariablePrefix"
+ value "s_")
+ (object Attribute
+ tool "Java"
+ name "DefaultAttributeDataType"
+ value "int")
+ (object Attribute
+ tool "Java"
+ name "DefaultOperationReturnType"
+ value "void")))
+ (object Attribute
+ tool "Java"
+ name "default__Class"
+ value (list Attribute_Set
+ (object Attribute
+ tool "Java"
+ name "Final"
+ value FALSE)
+ (object Attribute
+ tool "Java"
+ name "GenerateDefaultConstructor"
+ value TRUE)
+ (object Attribute
+ tool "Java"
+ name "ConstructorIs"
+ value ("Ctor_Set" 62))
+ (object Attribute
+ tool "Java"
+ name "Ctor_Set"
+ value (list Attribute_Set
+ (object Attribute
+ tool "Java"
+ name "Public"
+ value 62)
+ (object Attribute
+ tool "Java"
+ name "Protected"
+ value 63)
+ (object Attribute
+ tool "Java"
+ name "Private"
+ value 64)))
+ (object Attribute
+ tool "Java"
+ name "GenerateFinalizer"
+ value FALSE)
+ (object Attribute
+ tool "Java"
+ name "GenerateStaticInitializer"
+ value FALSE)
+ (object Attribute
+ tool "Java"
+ name "GenerateInstanceInitializer"
+ value FALSE)))
+ (object Attribute
+ tool "Java"
+ name "default__Module-Spec"
+ value (list Attribute_Set
+ (object Attribute
+ tool "Java"
+ name "Generate"
+ value TRUE)
+ (object Attribute
+ tool "Java"
+ name "CmIdentification"
+ value (value Text ""))
+ (object Attribute
+ tool "Java"
+ name "CopyrightNotice"
+ value (value Text ""))
+ (object Attribute
+ tool "Java"
+ name "AdditionalImports"
+ value (value Text ""))))
+ (object Attribute
+ tool "Java"
+ name "default__Module-Body"
+ value (list Attribute_Set
+ (object Attribute
+ tool "Java"
+ name "Generate"
+ value TRUE)
+ (object Attribute
+ tool "Java"
+ name "CmIdentification"
+ value (value Text ""))
+ (object Attribute
+ tool "Java"
+ name "CopyrightNotice"
+ value (value Text ""))
+ (object Attribute
+ tool "Java"
+ name "AdditionalImports"
+ value (value Text ""))))
+ (object Attribute
+ tool "Java"
+ name "default__Operation"
+ value (list Attribute_Set
+ (object Attribute
+ tool "Java"
+ name "Abstract"
+ value FALSE)
+ (object Attribute
+ tool "Java"
+ name "Static"
+ value FALSE)
+ (object Attribute
+ tool "Java"
+ name "Final"
+ value FALSE)
+ (object Attribute
+ tool "Java"
+ name "Native"
+ value FALSE)
+ (object Attribute
+ tool "Java"
+ name "Synchronized"
+ value FALSE)))
+ (object Attribute
+ tool "Java"
+ name "default__Attribute"
+ value (list Attribute_Set
+ (object Attribute
+ tool "Java"
+ name "GenerateDataMember"
+ value TRUE)
+ (object Attribute
+ tool "Java"
+ name "Final"
+ value FALSE)
+ (object Attribute
+ tool "Java"
+ name "Transient"
+ value FALSE)
+ (object Attribute
+ tool "Java"
+ name "Volatile"
+ value FALSE)))
+ (object Attribute
+ tool "Java"
+ name "default__Role"
+ value (list Attribute_Set
+ (object Attribute
+ tool "Java"
+ name "GenerateDataMember"
+ value TRUE)
+ (object Attribute
+ tool "Java"
+ name "ContainerClass"
+ value "")
+ (object Attribute
+ tool "Java"
+ name "InitialValue"
+ value "")
+ (object Attribute
+ tool "Java"
+ name "Final"
+ value FALSE)
+ (object Attribute
+ tool "Java"
+ name "Transient"
+ value FALSE)
+ (object Attribute
+ tool "Java"
+ name "Volatile"
+ value FALSE)))
+ (object Attribute
+ tool "Java"
+ name "HiddenTool"
+ value FALSE)
+ (object Attribute
+ tool "Oracle8"
+ name "propertyId"
+ value "360000002")
+ (object Attribute
+ tool "Oracle8"
+ name "default__Project"
+ value (list Attribute_Set
+ (object Attribute
+ tool "Oracle8"
+ name "DDLScriptFilename"
+ value "DDL1.SQL")
+ (object Attribute
+ tool "Oracle8"
+ name "DropClause"
+ value FALSE)
+ (object Attribute
+ tool "Oracle8"
+ name "PrimaryKeyColumnName"
+ value "_ID")
+ (object Attribute
+ tool "Oracle8"
+ name "PrimaryKeyColumnType"
+ value "NUMBER(5,0)")
+ (object Attribute
+ tool "Oracle8"
+ name "SchemaNamePrefix"
+ value "")
+ (object Attribute
+ tool "Oracle8"
+ name "SchemaNameSuffix"
+ value "")
+ (object Attribute
+ tool "Oracle8"
+ name "TableNamePrefix"
+ value "")
+ (object Attribute
+ tool "Oracle8"
+ name "TableNameSuffix"
+ value "")
+ (object Attribute
+ tool "Oracle8"
+ name "TypeNamePrefix"
+ value "")
+ (object Attribute
+ tool "Oracle8"
+ name "TypeNameSuffix"
+ value "")
+ (object Attribute
+ tool "Oracle8"
+ name "ViewNamePrefix"
+ value "")
+ (object Attribute
+ tool "Oracle8"
+ name "ViewNameSuffix"
+ value "")
+ (object Attribute
+ tool "Oracle8"
+ name "VarrayNamePrefix"
+ value "")
+ (object Attribute
+ tool "Oracle8"
+ name "VarrayNameSuffix"
+ value "")
+ (object Attribute
+ tool "Oracle8"
+ name "NestedTableNamePrefix"
+ value "")
+ (object Attribute
+ tool "Oracle8"
+ name "NestedTableNameSuffix"
+ value "")
+ (object Attribute
+ tool "Oracle8"
+ name "ObjectTableNamePrefix"
+ value "")
+ (object Attribute
+ tool "Oracle8"
+ name "ObjectTableNameSuffix"
+ value "")))
+ (object Attribute
+ tool "Oracle8"
+ name "default__Module-Spec"
+ value (list Attribute_Set
+ (object Attribute
+ tool "Oracle8"
+ name "IsSchema"
+ value FALSE)))
+ (object Attribute
+ tool "Oracle8"
+ name "default__Class"
+ value (list Attribute_Set
+ (object Attribute
+ tool "Oracle8"
+ name "OID"
+ value "")
+ (object Attribute
+ tool "Oracle8"
+ name "WhereClause"
+ value "")
+ (object Attribute
+ tool "Oracle8"
+ name "CheckConstraint"
+ value "")
+ (object Attribute
+ tool "Oracle8"
+ name "CollectionTypeLength"
+ value "")
+ (object Attribute
+ tool "Oracle8"
+ name "CollectionTypePrecision"
+ value "")
+ (object Attribute
+ tool "Oracle8"
+ name "CollectionTypeScale"
+ value "")
+ (object Attribute
+ tool "Oracle8"
+ name "CollectionOfREFS"
+ value FALSE)))
+ (object Attribute
+ tool "Oracle8"
+ name "default__Operation"
+ value (list Attribute_Set
+ (object Attribute
+ tool "Oracle8"
+ name "MethodKind"
+ value ("MethodKindSet" 1903))
+ (object Attribute
+ tool "Oracle8"
+ name "OverloadID"
+ value "")
+ (object Attribute
+ tool "Oracle8"
+ name "OrderNumber"
+ value "")
+ (object Attribute
+ tool "Oracle8"
+ name "IsReadNoDataState"
+ value FALSE)
+ (object Attribute
+ tool "Oracle8"
+ name "IsReadNoProcessState"
+ value FALSE)
+ (object Attribute
+ tool "Oracle8"
+ name "IsWriteNoDataState"
+ value FALSE)
+ (object Attribute
+ tool "Oracle8"
+ name "IsWriteNoProcessState"
+ value FALSE)
+ (object Attribute
+ tool "Oracle8"
+ name "IsSelfish"
+ value FALSE)
+ (object Attribute
+ tool "Oracle8"
+ name "TriggerType"
+ value ("TriggerTypeSet" 1801))
+ (object Attribute
+ tool "Oracle8"
+ name "TriggerEvent"
+ value ("TriggerEventSet" 1601))
+ (object Attribute
+ tool "Oracle8"
+ name "TriggerText"
+ value "")
+ (object Attribute
+ tool "Oracle8"
+ name "TriggerReferencingNames"
+ value "")
+ (object Attribute
+ tool "Oracle8"
+ name "TriggerForEach"
+ value ("TriggerForEachSet" 1701))
+ (object Attribute
+ tool "Oracle8"
+ name "TriggerWhenClause"
+ value "")
+ (object Attribute
+ tool "Oracle8"
+ name "MethodKindSet"
+ value (list Attribute_Set
+ (object Attribute
+ tool "Oracle8"
+ name "MapMethod"
+ value 1901)
+ (object Attribute
+ tool "Oracle8"
+ name "OrderMethod"
+ value 1902)
+ (object Attribute
+ tool "Oracle8"
+ name "Function"
+ value 1903)
+ (object Attribute
+ tool "Oracle8"
+ name "Procedure"
+ value 1904)
+ (object Attribute
+ tool "Oracle8"
+ name "Operator"
+ value 1905)
+ (object Attribute
+ tool "Oracle8"
+ name "Constructor"
+ value 1906)
+ (object Attribute
+ tool "Oracle8"
+ name "Destructor"
+ value 1907)
+ (object Attribute
+ tool "Oracle8"
+ name "Trigger"
+ value 1908)
+ (object Attribute
+ tool "Oracle8"
+ name "Calculated"
+ value 1909)))
+ (object Attribute
+ tool "Oracle8"
+ name "TriggerTypeSet"
+ value (list Attribute_Set
+ (object Attribute
+ tool "Oracle8"
+ name "AFTER"
+ value 1801)
+ (object Attribute
+ tool "Oracle8"
+ name "BEFORE"
+ value 1802)
+ (object Attribute
+ tool "Oracle8"
+ name "INSTEAD OF"
+ value 1803)))
+ (object Attribute
+ tool "Oracle8"
+ name "TriggerForEachSet"
+ value (list Attribute_Set
+ (object Attribute
+ tool "Oracle8"
+ name "ROW"
+ value 1701)
+ (object Attribute
+ tool "Oracle8"
+ name "STATEMENT"
+ value 1702)))
+ (object Attribute
+ tool "Oracle8"
+ name "TriggerEventSet"
+ value (list Attribute_Set
+ (object Attribute
+ tool "Oracle8"
+ name "INSERT"
+ value 1601)
+ (object Attribute
+ tool "Oracle8"
+ name "UPDATE"
+ value 1602)
+ (object Attribute
+ tool "Oracle8"
+ name "DELETE"
+ value 1603)
+ (object Attribute
+ tool "Oracle8"
+ name "INSERT OR UPDATE"
+ value 1604)
+ (object Attribute
+ tool "Oracle8"
+ name "INSERT OR DELETE"
+ value 1605)
+ (object Attribute
+ tool "Oracle8"
+ name "UPDATE OR DELETE"
+ value 1606)
+ (object Attribute
+ tool "Oracle8"
+ name "INSERT OR UPDATE OR DELETE"
+ value 1607)))))
+ (object Attribute
+ tool "Oracle8"
+ name "default__Role"
+ value (list Attribute_Set
+ (object Attribute
+ tool "Oracle8"
+ name "OrderNumber"
+ value "")))
+ (object Attribute
+ tool "Oracle8"
+ name "default__Attribute"
+ value (list Attribute_Set
+ (object Attribute
+ tool "Oracle8"
+ name "OrderNumber"
+ value "")
+ (object Attribute
+ tool "Oracle8"
+ name "IsUnique"
+ value FALSE)
+ (object Attribute
+ tool "Oracle8"
+ name "NullsAllowed"
+ value TRUE)
+ (object Attribute
+ tool "Oracle8"
+ name "Length"
+ value "")
+ (object Attribute
+ tool "Oracle8"
+ name "Precision"
+ value "2")
+ (object Attribute
+ tool "Oracle8"
+ name "Scale"
+ value "6")
+ (object Attribute
+ tool "Oracle8"
+ name "IsIndex"
+ value FALSE)
+ (object Attribute
+ tool "Oracle8"
+ name "IsPrimaryKey"
+ value FALSE)
+ (object Attribute
+ tool "Oracle8"
+ name "CompositeUnique"
+ value FALSE)
+ (object Attribute
+ tool "Oracle8"
+ name "CheckConstraint"
+ value "")))
+ (object Attribute
+ tool "Oracle8"
+ name "HiddenTool"
+ value FALSE)
+ (object Attribute
+ tool "Repository"
+ name "HiddenTool"
+ value FALSE)
+ (object Attribute
+ tool "cg"
+ name "propertyId"
+ value "809135966")
+ (object Attribute
+ tool "cg"
+ name "default__Project"
+ value (list Attribute_Set
+ (object Attribute
+ tool "cg"
+ name "UseMSVC"
+ value FALSE)
+ (object Attribute
+ tool "cg"
+ name "HeaderFileExtension"
+ value "h")
+ (object Attribute
+ tool "cg"
+ name "HeaderFileBackupExtension"
+ value "h~")
+ (object Attribute
+ tool "cg"
+ name "HeaderFileTemporaryExtension"
+ value "h#")
+ (object Attribute
+ tool "cg"
+ name "CodeFileExtension"
+ value "cpp")
+ (object Attribute
+ tool "cg"
+ name "CodeFileBackupExtension"
+ value "cp~")
+ (object Attribute
+ tool "cg"
+ name "CodeFileTemporaryExtension"
+ value "cp#")
+ (object Attribute
+ tool "cg"
+ name "CreateMissingDirectories"
+ value TRUE)
+ (object Attribute
+ tool "cg"
+ name "StopOnError"
+ value FALSE)
+ (object Attribute
+ tool "cg"
+ name "ErrorLimit"
+ value 30)
+ (object Attribute
+ tool "cg"
+ name "Directory"
+ value "$ROSECPP_SOURCE")
+ (object Attribute
+ tool "cg"
+ name "PathSeparator"
+ value "")
+ (object Attribute
+ tool "cg"
+ name "FileNameFormat"
+ value "128vx_b")
+ (object Attribute
+ tool "cg"
+ name "BooleanType"
+ value "int")
+ (object Attribute
+ tool "cg"
+ name "AllowTemplates"
+ value TRUE)
+ (object Attribute
+ tool "cg"
+ name "AllowExplicitInstantiations"
+ value TRUE)
+ (object Attribute
+ tool "cg"
+ name "AllowProtectedInheritance"
+ value TRUE)
+ (object Attribute
+ tool "cg"
+ name "CommentWidth"
+ value 60)
+ (object Attribute
+ tool "cg"
+ name "OneByValueContainer"
+ value "$targetClass")
+ (object Attribute
+ tool "cg"
+ name "OneByReferenceContainer"
+ value "$targetClass *")
+ (object Attribute
+ tool "cg"
+ name "OptionalByValueContainer"
+ value "OptionalByValue<$targetClass>")
+ (object Attribute
+ tool "cg"
+ name "OptionalByReferenceContainer"
+ value "$targetClass *")
+ (object Attribute
+ tool "cg"
+ name "FixedByValueContainer"
+ value "$targetClass[$limit]")
+ (object Attribute
+ tool "cg"
+ name "UnorderedFixedByValueContainer"
+ value "$targetClass[$limit]")
+ (object Attribute
+ tool "cg"
+ name "FixedByReferenceContainer"
+ value "$targetClass *[$limit]")
+ (object Attribute
+ tool "cg"
+ name "UnorderedFixedByReferenceContainer"
+ value "$targetClass *[$limit]")
+ (object Attribute
+ tool "cg"
+ name "BoundedByValueContainer"
+ value "BoundedListByValue<$targetClass,$limit>")
+ (object Attribute
+ tool "cg"
+ name "UnorderedBoundedByValueContainer"
+ value "BoundedSetByValue<$targetClass,$limit>")
+ (object Attribute
+ tool "cg"
+ name "BoundedByReferenceContainer"
+ value "BoundedListByReference<$targetClass,$limit>")
+ (object Attribute
+ tool "cg"
+ name "UnorderedBoundedByReferenceContainer"
+ value "BoundedSetByReference<$targetClass,$limit>")
+ (object Attribute
+ tool "cg"
+ name "UnboundedByValueContainer"
+ value "UnboundedListByValue<$targetClass>")
+ (object Attribute
+ tool "cg"
+ name "UnorderedUnboundedByValueContainer"
+ value "UnboundedSetByValue<$targetClass>")
+ (object Attribute
+ tool "cg"
+ name "UnboundedByReferenceContainer"
+ value "UnboundedListByReference<$targetClass>")
+ (object Attribute
+ tool "cg"
+ name "UnorderedUnboundedByReferenceContainer"
+ value "UnboundedSetByReference<$targetClass>")
+ (object Attribute
+ tool "cg"
+ name "QualifiedByValueContainer"
+ value "AssociationByValue<$qualtype, $qualcont>")
+ (object Attribute
+ tool "cg"
+ name "UnorderedQualifiedByValueContainer"
+ value "DictionaryByValue<$qualtype, $qualcont>")
+ (object Attribute
+ tool "cg"
+ name "QualifiedByReferenceContainer"
+ value "AssociationByReference<$qualtype, $qualcont>")
+ (object Attribute
+ tool "cg"
+ name "UnorderedQualifiedByReferenceContainer"
+ value "DictionaryByReference<$qualtype, $qualcont>")
+ (object Attribute
+ tool "cg"
+ name "GeneratePreserveRegions"
+ value TRUE)))
+ (object Attribute
+ tool "cg"
+ name "default__Class"
+ value (list Attribute_Set
+ (object Attribute
+ tool "cg"
+ name "CodeName"
+ value "")
+ (object Attribute
+ tool "cg"
+ name "ImplementationType"
+ value "")
+ (object Attribute
+ tool "cg"
+ name "ClassKey"
+ value "class")
+ (object Attribute
+ tool "cg"
+ name "GenerateEmptyRegions"
+ value ("GenerateEmptyRegionSet" 3))
+ (object Attribute
+ tool "cg"
+ name "GenerateEmptyRegionSet"
+ value (list Attribute_Set
+ (object Attribute
+ tool "cg"
+ name "None"
+ value 0)
+ (object Attribute
+ tool "cg"
+ name "Preserved"
+ value 1)
+ (object Attribute
+ tool "cg"
+ name "Unpreserved"
+ value 2)
+ (object Attribute
+ tool "cg"
+ name "All"
+ value 3)))
+ (object Attribute
+ tool "cg"
+ name "PutBodiesInSpec"
+ value FALSE)
+ (object Attribute
+ tool "cg"
+ name "GenerateDefaultConstructor"
+ value ("GenerateSet" 199))
+ (object Attribute
+ tool "cg"
+ name "DefaultConstructorVisibility"
+ value ("VisibilitySet" 45))
+ (object Attribute
+ tool "cg"
+ name "InlineDefaultConstructor"
+ value FALSE)
+ (object Attribute
+ tool "cg"
+ name "ExplicitDefaultConstructor"
+ value FALSE)
+ (object Attribute
+ tool "cg"
+ name "GenerateCopyConstructor"
+ value ("GenerateSet" 199))
+ (object Attribute
+ tool "cg"
+ name "CopyConstructorVisibility"
+ value ("VisibilitySet" 45))
+ (object Attribute
+ tool "cg"
+ name "InlineCopyConstructor"
+ value FALSE)
+ (object Attribute
+ tool "cg"
+ name "ExplicitCopyConstructor"
+ value FALSE)
+ (object Attribute
+ tool "cg"
+ name "GenerateDestructor"
+ value TRUE)
+ (object Attribute
+ tool "cg"
+ name "DestructorVisibility"
+ value ("VisibilitySet" 45))
+ (object Attribute
+ tool "cg"
+ name "DestructorKind"
+ value ("ThreeKindSet" 200))
+ (object Attribute
+ tool "cg"
+ name "InlineDestructor"
+ value FALSE)
+ (object Attribute
+ tool "cg"
+ name "GenerateAssignmentOperation"
+ value ("GenerateSet" 199))
+ (object Attribute
+ tool "cg"
+ name "AssignmentVisibility"
+ value ("VisibilitySet" 45))
+ (object Attribute
+ tool "cg"
+ name "AssignmentKind"
+ value ("ThreeKindSet" 200))
+ (object Attribute
+ tool "cg"
+ name "InlineAssignmentOperation"
+ value FALSE)
+ (object Attribute
+ tool "cg"
+ name "GenerateEqualityOperations"
+ value ("GenerateSet" 199))
+ (object Attribute
+ tool "cg"
+ name "EqualityVisibility"
+ value ("VisibilitySet" 45))
+ (object Attribute
+ tool "cg"
+ name "EqualityKind"
+ value ("FriendKindSet" 200))
+ (object Attribute
+ tool "cg"
+ name "InlineEqualityOperations"
+ value FALSE)
+ (object Attribute
+ tool "cg"
+ name "GenerateRelationalOperations"
+ value FALSE)
+ (object Attribute
+ tool "cg"
+ name "RelationalVisibility"
+ value ("VisibilitySet" 45))
+ (object Attribute
+ tool "cg"
+ name "RelationalKind"
+ value ("FriendKindSet" 200))
+ (object Attribute
+ tool "cg"
+ name "InlineRelationalOperations"
+ value FALSE)
+ (object Attribute
+ tool "cg"
+ name "GenerateStorageMgmtOperations"
+ value FALSE)
+ (object Attribute
+ tool "cg"
+ name "StorageMgmtVisibility"
+ value ("VisibilitySet" 45))
+ (object Attribute
+ tool "cg"
+ name "InlineStorageMgmtOperations"
+ value FALSE)
+ (object Attribute
+ tool "cg"
+ name "GenerateSubscriptOperation"
+ value FALSE)
+ (object Attribute
+ tool "cg"
+ name "SubscriptVisibility"
+ value ("VisibilitySet" 45))
+ (object Attribute
+ tool "cg"
+ name "SubscriptKind"
+ value ("ThreeKindSet" 200))
+ (object Attribute
+ tool "cg"
+ name "SubscriptResultType"
+ value "")
+ (object Attribute
+ tool "cg"
+ name "InlineSubscriptOperation"
+ value FALSE)
+ (object Attribute
+ tool "cg"
+ name "GenerateDereferenceOperation"
+ value FALSE)
+ (object Attribute
+ tool "cg"
+ name "DereferenceVisibility"
+ value ("VisibilitySet" 45))
+ (object Attribute
+ tool "cg"
+ name "DereferenceKind"
+ value ("ThreeKindSet" 200))
+ (object Attribute
+ tool "cg"
+ name "DereferenceResultType"
+ value "")
+ (object Attribute
+ tool "cg"
+ name "InlineDereferenceOperation"
+ value FALSE)
+ (object Attribute
+ tool "cg"
+ name "GenerateIndirectionOperation"
+ value FALSE)
+ (object Attribute
+ tool "cg"
+ name "IndirectionVisibility"
+ value ("VisibilitySet" 45))
+ (object Attribute
+ tool "cg"
+ name "IndirectionKind"
+ value ("ThreeKindSet" 200))
+ (object Attribute
+ tool "cg"
+ name "IndirectionResultType"
+ value "")
+ (object Attribute
+ tool "cg"
+ name "InlineIndirectionOperation"
+ value FALSE)
+ (object Attribute
+ tool "cg"
+ name "GenerateStreamOperations"
+ value FALSE)
+ (object Attribute
+ tool "cg"
+ name "StreamVisibility"
+ value ("VisibilitySet" 45))
+ (object Attribute
+ tool "cg"
+ name "InlineStreamOperations"
+ value FALSE)
+ (object Attribute
+ tool "cg"
+ name "ThreeKindSet"
+ value (list Attribute_Set
+ (object Attribute
+ tool "cg"
+ name "Common"
+ value 200)
+ (object Attribute
+ tool "cg"
+ name "Virtual"
+ value 201)
+ (object Attribute
+ tool "cg"
+ name "Abstract"
+ value 202)))
+ (object Attribute
+ tool "cg"
+ name "KindSet"
+ value (list Attribute_Set
+ (object Attribute
+ tool "cg"
+ name "Common"
+ value 200)
+ (object Attribute
+ tool "cg"
+ name "Virtual"
+ value 201)
+ (object Attribute
+ tool "cg"
+ name "Abstract"
+ value 202)
+ (object Attribute
+ tool "cg"
+ name "Static"
+ value 203)))
+ (object Attribute
+ tool "cg"
+ name "FriendKindSet"
+ value (list Attribute_Set
+ (object Attribute
+ tool "cg"
+ name "Common"
+ value 200)
+ (object Attribute
+ tool "cg"
+ name "Virtual"
+ value 201)
+ (object Attribute
+ tool "cg"
+ name "Abstract"
+ value 202)
+ (object Attribute
+ tool "cg"
+ name "Friend"
+ value 204)))
+ (object Attribute
+ tool "cg"
+ name "GenerateSet"
+ value (list Attribute_Set
+ (object Attribute
+ tool "cg"
+ name "DeclareAndDefine"
+ value 199)
+ (object Attribute
+ tool "cg"
+ name "DeclareOnly"
+ value 205)
+ (object Attribute
+ tool "cg"
+ name "DoNotDeclare"
+ value 206)))
+ (object Attribute
+ tool "cg"
+ name "VisibilitySet"
+ value (list Attribute_Set
+ (object Attribute
+ tool "cg"
+ name "Public"
+ value 45)
+ (object Attribute
+ tool "cg"
+ name "Protected"
+ value 44)
+ (object Attribute
+ tool "cg"
+ name "Private"
+ value 43)
+ (object Attribute
+ tool "cg"
+ name "Implementation"
+ value 14)))
+ (object Attribute
+ tool "cg"
+ name "ConstValue"
+ value "")
+ (object Attribute
+ tool "cg"
+ name "GenerateDefaultSpecifier"
+ value FALSE)
+ (object Attribute
+ tool "cg"
+ name "DefaultSpecifier"
+ value "")))
+ (object Attribute
+ tool "cg"
+ name "default__Module-Spec"
+ value (list Attribute_Set
+ (object Attribute
+ tool "cg"
+ name "Generate"
+ value TRUE)
+ (object Attribute
+ tool "cg"
+ name "GenerateEmptyRegions"
+ value ("GenerateEmptyRegionSet" 3))
+ (object Attribute
+ tool "cg"
+ name "GenerateEmptyRegionSet"
+ value (list Attribute_Set
+ (object Attribute
+ tool "cg"
+ name "None"
+ value 0)
+ (object Attribute
+ tool "cg"
+ name "Preserved"
+ value 1)
+ (object Attribute
+ tool "cg"
+ name "Unpreserved"
+ value 2)
+ (object Attribute
+ tool "cg"
+ name "All"
+ value 3)))
+ (object Attribute
+ tool "cg"
+ name "CmIdentification"
+ value (value Text " %X% %Q% %Z% %W%"))
+ (object Attribute
+ tool "cg"
+ name "CopyrightNotice"
+ value (value Text ""))
+ (object Attribute
+ tool "cg"
+ name "FileName"
+ value "AUTO GENERATE")
+ (object Attribute
+ tool "cg"
+ name "AllowExtensionlessFileName"
+ value FALSE)
+ (object Attribute
+ tool "cg"
+ name "InclusionProtectionSymbol"
+ value "AUTO GENERATE")
+ (object Attribute
+ tool "cg"
+ name "IncludeFormat"
+ value (value Text
+|// $package
+|#include "$file"
+|
+ ))
+ (object Attribute
+ tool "cg"
+ name "IncludeBySimpleName"
+ value FALSE)
+ (object Attribute
+ tool "cg"
+ name "IncludePrecompiledHeader"
+ value FALSE)
+ (object Attribute
+ tool "cg"
+ name "IncludeOrder"
+ value "AMIR")
+ (object Attribute
+ tool "cg"
+ name "AdditionalIncludes"
+ value (value Text ""))
+ (object Attribute
+ tool "cg"
+ name "InliningStyle"
+ value ("InliningStyleSet" 207))
+ (object Attribute
+ tool "cg"
+ name "InliningStyleSet"
+ value (list Attribute_Set
+ (object Attribute
+ tool "cg"
+ name "InClassDeclaration"
+ value 208)
+ (object Attribute
+ tool "cg"
+ name "FollowingClassDeclaration"
+ value 207)))
+ (object Attribute
+ tool "cg"
+ name "TypesDefined"
+ value (value Text ""))
+ (object Attribute
+ tool "cg"
+ name "IncludeClosure"
+ value (value Text ""))))
+ (object Attribute
+ tool "cg"
+ name "default__Module-Body"
+ value (list Attribute_Set
+ (object Attribute
+ tool "cg"
+ name "Generate"
+ value TRUE)
+ (object Attribute
+ tool "cg"
+ name "GenerateEmptyRegions"
+ value ("GenerateEmptyRegionSet" 3))
+ (object Attribute
+ tool "cg"
+ name "GenerateEmptyRegionSet"
+ value (list Attribute_Set
+ (object Attribute
+ tool "cg"
+ name "None"
+ value 0)
+ (object Attribute
+ tool "cg"
+ name "Preserved"
+ value 1)
+ (object Attribute
+ tool "cg"
+ name "Unpreserved"
+ value 2)
+ (object Attribute
+ tool "cg"
+ name "All"
+ value 3)))
+ (object Attribute
+ tool "cg"
+ name "CmIdentification"
+ value (value Text " %X% %Q% %Z% %W%"))
+ (object Attribute
+ tool "cg"
+ name "CopyrightNotice"
+ value (value Text ""))
+ (object Attribute
+ tool "cg"
+ name "FileName"
+ value "AUTO GENERATE")
+ (object Attribute
+ tool "cg"
+ name "AllowExtensionlessFileName"
+ value FALSE)
+ (object Attribute
+ tool "cg"
+ name "IncludeFormat"
+ value (value Text
+|// $package
+|#include "$file"
+|
+ ))
+ (object Attribute
+ tool "cg"
+ name "IncludeBySimpleName"
+ value FALSE)
+ (object Attribute
+ tool "cg"
+ name "IncludePrecompiledHeader"
+ value TRUE)
+ (object Attribute
+ tool "cg"
+ name "IncludeOrder"
+ value "AMIR")
+ (object Attribute
+ tool "cg"
+ name "AdditionalIncludes"
+ value (value Text ""))
+ (object Attribute
+ tool "cg"
+ name "InliningStyle"
+ value ("InliningStyleSet" 207))
+ (object Attribute
+ tool "cg"
+ name "InliningStyleSet"
+ value (list Attribute_Set
+ (object Attribute
+ tool "cg"
+ name "InClassDeclaration"
+ value 208)
+ (object Attribute
+ tool "cg"
+ name "FollowingClassDeclaration"
+ value 207)))
+ (object Attribute
+ tool "cg"
+ name "TypesDefined"
+ value (value Text ""))
+ (object Attribute
+ tool "cg"
+ name "IncludeClosure"
+ value (value Text ""))))
+ (object Attribute
+ tool "cg"
+ name "default__Operation"
+ value (list Attribute_Set
+ (object Attribute
+ tool "cg"
+ name "CodeName"
+ value "")
+ (object Attribute
+ tool "cg"
+ name "OperationKind"
+ value ("OperationKindSet" 200))
+ (object Attribute
+ tool "cg"
+ name "OperationKindSet"
+ value (list Attribute_Set
+ (object Attribute
+ tool "cg"
+ name "Common"
+ value 200)
+ (object Attribute
+ tool "cg"
+ name "Virtual"
+ value 201)
+ (object Attribute
+ tool "cg"
+ name "Abstract"
+ value 202)
+ (object Attribute
+ tool "cg"
+ name "Static"
+ value 203)
+ (object Attribute
+ tool "cg"
+ name "Friend"
+ value 204)))
+ (object Attribute
+ tool "cg"
+ name "OperationIsConst"
+ value FALSE)
+ (object Attribute
+ tool "cg"
+ name "OperationIsExplicit"
+ value FALSE)
+ (object Attribute
+ tool "cg"
+ name "Inline"
+ value FALSE)
+ (object Attribute
+ tool "cg"
+ name "EntryCode"
+ value (value Text ""))
+ (object Attribute
+ tool "cg"
+ name "ExitCode"
+ value (value Text ""))
+ (object Attribute
+ tool "cg"
+ name "GenerateEmptyRegions"
+ value ("GenerateEmptyRegionSet" 3))
+ (object Attribute
+ tool "cg"
+ name "GenerateEmptyRegionSet"
+ value (list Attribute_Set
+ (object Attribute
+ tool "cg"
+ name "None"
+ value 0)
+ (object Attribute
+ tool "cg"
+ name "Preserved"
+ value 1)
+ (object Attribute
+ tool "cg"
+ name "Unpreserved"
+ value 2)
+ (object Attribute
+ tool "cg"
+ name "All"
+ value 3)))
+ (object Attribute
+ tool "cg"
+ name "BodyAnnotations"
+ value "")
+ (object Attribute
+ tool "cg"
+ name "OperationIsOneWay"
+ value FALSE)
+ (object Attribute
+ tool "cg"
+ name "Context"
+ value "")
+ (object Attribute
+ tool "cg"
+ name "Raises"
+ value "")))
+ (object Attribute
+ tool "cg"
+ name "default__Has"
+ value (list Attribute_Set
+ (object Attribute
+ tool "cg"
+ name "CodeName"
+ value "")
+ (object Attribute
+ tool "cg"
+ name "Ordered"
+ value TRUE)
+ (object Attribute
+ tool "cg"
+ name "NameIfUnlabeled"
+ value "the_$supplier")
+ (object Attribute
+ tool "cg"
+ name "GenerateDataMember"
+ value TRUE)
+ (object Attribute
+ tool "cg"
+ name "DataMemberName"
+ value "$relationship")
+ (object Attribute
+ tool "cg"
+ name "DataMemberVisibility"
+ value ("DataMemberVisibilitySet" 14))
+ (object Attribute
+ tool "cg"
+ name "DataMemberVisibilitySet"
+ value (list Attribute_Set
+ (object Attribute
+ tool "cg"
+ name "Public"
+ value 45)
+ (object Attribute
+ tool "cg"
+ name "Protected"
+ value 44)
+ (object Attribute
+ tool "cg"
+ name "Private"
+ value 43)
+ (object Attribute
+ tool "cg"
+ name "Implementation"
+ value 14)
+ (object Attribute
+ tool "cg"
+ name "AtRelationshipVisibility"
+ value 210)))
+ (object Attribute
+ tool "cg"
+ name "DataMemberMutability"
+ value ("DataMemberMutabilitySet" 0))
+ (object Attribute
+ tool "cg"
+ name "DataMemberMutabilitySet"
+ value (list Attribute_Set
+ (object Attribute
+ tool "cg"
+ name "Unrestricted"
+ value 0)
+ (object Attribute
+ tool "cg"
+ name "Mutable"
+ value 1)
+ (object Attribute
+ tool "cg"
+ name "Const"
+ value 2)))
+ (object Attribute
+ tool "cg"
+ name "DataMemberIsVolatile"
+ value FALSE)
+ (object Attribute
+ tool "cg"
+ name "DataMemberFieldSize"
+ value "")
+ (object Attribute
+ tool "cg"
+ name "InitialValue"
+ value (value Text ""))
+ (object Attribute
+ tool "cg"
+ name "GenerateGetOperation"
+ value TRUE)
+ (object Attribute
+ tool "cg"
+ name "GenerateSetOperation"
+ value TRUE)
+ (object Attribute
+ tool "cg"
+ name "GetName"
+ value "get_$relationship")
+ (object Attribute
+ tool "cg"
+ name "SetName"
+ value "set_$relationship")
+ (object Attribute
+ tool "cg"
+ name "GetSetKinds"
+ value ("GetSetKindsSet" 200))
+ (object Attribute
+ tool "cg"
+ name "GetSetKindsSet"
+ value (list Attribute_Set
+ (object Attribute
+ tool "cg"
+ name "Common"
+ value 200)
+ (object Attribute
+ tool "cg"
+ name "Virtual"
+ value 201)
+ (object Attribute
+ tool "cg"
+ name "Abstract"
+ value 202)
+ (object Attribute
+ tool "cg"
+ name "Static"
+ value 203)
+ (object Attribute
+ tool "cg"
+ name "Friend"
+ value 204)))
+ (object Attribute
+ tool "cg"
+ name "ContainerClass"
+ value "")
+ (object Attribute
+ tool "cg"
+ name "SelectorName"
+ value "")
+ (object Attribute
+ tool "cg"
+ name "SelectorType"
+ value "")
+ (object Attribute
+ tool "cg"
+ name "GetIsConst"
+ value TRUE)
+ (object Attribute
+ tool "cg"
+ name "GetResultIsConst"
+ value ("GetResultIsConstSet" 2))
+ (object Attribute
+ tool "cg"
+ name "GetResultIsConstSet"
+ value (list Attribute_Set
+ (object Attribute
+ tool "cg"
+ name "False"
+ value 0)
+ (object Attribute
+ tool "cg"
+ name "True"
+ value 1)
+ (object Attribute
+ tool "cg"
+ name "Same_As_Function"
+ value 2)))
+ (object Attribute
+ tool "cg"
+ name "GetSetByReference"
+ value FALSE)
+ (object Attribute
+ tool "cg"
+ name "InlineGet"
+ value TRUE)
+ (object Attribute
+ tool "cg"
+ name "SetReturnsValue"
+ value FALSE)
+ (object Attribute
+ tool "cg"
+ name "InlineSet"
+ value TRUE)
+ (object Attribute
+ tool "cg"
+ name "ForwardReferenceOnly"
+ value FALSE)
+ (object Attribute
+ tool "cg"
+ name "GenerateForwardReference"
+ value FALSE)
+ (object Attribute
+ tool "cg"
+ name "IsReadOnly"
+ value FALSE)
+ (object Attribute
+ tool "cg"
+ name "BoundedHasRelType"
+ value ("HasRelTypeSet" 47))
+ (object Attribute
+ tool "cg"
+ name "HasRelTypeSet"
+ value (list Attribute_Set
+ (object Attribute
+ tool "cg"
+ name "Array"
+ value 24)
+ (object Attribute
+ tool "cg"
+ name "Sequence"
+ value 47)))))
+ (object Attribute
+ tool "cg"
+ name "default__Association"
+ value (list Attribute_Set
+ (object Attribute
+ tool "cg"
+ name "NameIfUnlabeled"
+ value "the_$targetClass")))
+ (object Attribute
+ tool "cg"
+ name "default__Inherit"
+ value (list Attribute_Set
+ (object Attribute
+ tool "cg"
+ name "InstanceArguments"
+ value "")))
+ (object Attribute
+ tool "cg"
+ name "default__Role"
+ value (list Attribute_Set
+ (object Attribute
+ tool "cg"
+ name "CodeName"
+ value "")
+ (object Attribute
+ tool "cg"
+ name "ForwardReferenceOnly"
+ value FALSE)
+ (object Attribute
+ tool "cg"
+ name "NameIfUnlabeled"
+ value "the_$targetClass")
+ (object Attribute
+ tool "cg"
+ name "GenerateDataMember"
+ value TRUE)
+ (object Attribute
+ tool "cg"
+ name "DataMemberName"
+ value "$target")
+ (object Attribute
+ tool "cg"
+ name "DataMemberVisibility"
+ value ("DataMemberVisibilitySet" 14))
+ (object Attribute
+ tool "cg"
+ name "DataMemberVisibilitySet"
+ value (list Attribute_Set
+ (object Attribute
+ tool "cg"
+ name "Public"
+ value 45)
+ (object Attribute
+ tool "cg"
+ name "Protected"
+ value 44)
+ (object Attribute
+ tool "cg"
+ name "Private"
+ value 43)
+ (object Attribute
+ tool "cg"
+ name "Implementation"
+ value 14)
+ (object Attribute
+ tool "cg"
+ name "AtRelationshipVisibility"
+ value 210)))
+ (object Attribute
+ tool "cg"
+ name "DataMemberMutability"
+ value ("DataMemberMutabilitySet" 0))
+ (object Attribute
+ tool "cg"
+ name "DataMemberMutabilitySet"
+ value (list Attribute_Set
+ (object Attribute
+ tool "cg"
+ name "Unrestricted"
+ value 0)
+ (object Attribute
+ tool "cg"
+ name "Mutable"
+ value 1)
+ (object Attribute
+ tool "cg"
+ name "Const"
+ value 2)))
+ (object Attribute
+ tool "cg"
+ name "DataMemberIsVolatile"
+ value FALSE)
+ (object Attribute
+ tool "cg"
+ name "DataMemberFieldSize"
+ value "")
+ (object Attribute
+ tool "cg"
+ name "InitialValue"
+ value (value Text ""))
+ (object Attribute
+ tool "cg"
+ name "ContainerClass"
+ value "")
+ (object Attribute
+ tool "cg"
+ name "ContainerGet"
+ value "$data.get($keys)")
+ (object Attribute
+ tool "cg"
+ name "ContainerSet"
+ value "$data.set($keys,$value)")
+ (object Attribute
+ tool "cg"
+ name "QualifiedContainer"
+ value "")
+ (object Attribute
+ tool "cg"
+ name "AssocClassContainer"
+ value "$supplier *")
+ (object Attribute
+ tool "cg"
+ name "AssocClassInitialValue"
+ value (value Text ""))
+ (object Attribute
+ tool "cg"
+ name "GetSetKinds"
+ value ("GetSetKindsSet" 200))
+ (object Attribute
+ tool "cg"
+ name "GetSetKindsSet"
+ value (list Attribute_Set
+ (object Attribute
+ tool "cg"
+ name "Common"
+ value 200)
+ (object Attribute
+ tool "cg"
+ name "Virtual"
+ value 201)
+ (object Attribute
+ tool "cg"
+ name "Abstract"
+ value 202)
+ (object Attribute
+ tool "cg"
+ name "Static"
+ value 203)
+ (object Attribute
+ tool "cg"
+ name "Friend"
+ value 204)))
+ (object Attribute
+ tool "cg"
+ name "GetSetByReference"
+ value FALSE)
+ (object Attribute
+ tool "cg"
+ name "GenerateGetOperation"
+ value TRUE)
+ (object Attribute
+ tool "cg"
+ name "GetName"
+ value "get_$target")
+ (object Attribute
+ tool "cg"
+ name "GetIsConst"
+ value TRUE)
+ (object Attribute
+ tool "cg"
+ name "GetResultIsConst"
+ value ("GetResultIsConstSet" 2))
+ (object Attribute
+ tool "cg"
+ name "GetResultIsConstSet"
+ value (list Attribute_Set
+ (object Attribute
+ tool "cg"
+ name "False"
+ value 0)
+ (object Attribute
+ tool "cg"
+ name "True"
+ value 1)
+ (object Attribute
+ tool "cg"
+ name "Same_As_Function"
+ value 2)))
+ (object Attribute
+ tool "cg"
+ name "InlineGet"
+ value TRUE)
+ (object Attribute
+ tool "cg"
+ name "GenerateSetOperation"
+ value TRUE)
+ (object Attribute
+ tool "cg"
+ name "SetName"
+ value "set_$target")
+ (object Attribute
+ tool "cg"
+ name "SetReturnsValue"
+ value FALSE)
+ (object Attribute
+ tool "cg"
+ name "InlineSet"
+ value TRUE)
+ (object Attribute
+ tool "cg"
+ name "QualifiedGetSetByReference"
+ value ("QualifiedGetSetByReferenceSet" 2))
+ (object Attribute
+ tool "cg"
+ name "QualifiedGetSetByReferenceSet"
+ value (list Attribute_Set
+ (object Attribute
+ tool "cg"
+ name "False"
+ value 0)
+ (object Attribute
+ tool "cg"
+ name "True"
+ value 1)
+ (object Attribute
+ tool "cg"
+ name "Same_As_GetSetByReference"
+ value 2)))
+ (object Attribute
+ tool "cg"
+ name "GenerateQualifiedGetOperation"
+ value TRUE)
+ (object Attribute
+ tool "cg"
+ name "QualifiedGetName"
+ value "get_$target")
+ (object Attribute
+ tool "cg"
+ name "QualifiedGetIsConst"
+ value TRUE)
+ (object Attribute
+ tool "cg"
+ name "QualifiedGetResultIsConst"
+ value ("GetResultIsConstSet" 2))
+ (object Attribute
+ tool "cg"
+ name "InlineQualifiedGet"
+ value TRUE)
+ (object Attribute
+ tool "cg"
+ name "GenerateQualifiedSetOperation"
+ value TRUE)
+ (object Attribute
+ tool "cg"
+ name "QualifiedSetName"
+ value "set_$target")
+ (object Attribute
+ tool "cg"
+ name "QualifiedSetReturnsValue"
+ value FALSE)
+ (object Attribute
+ tool "cg"
+ name "InlineQualifiedSet"
+ value TRUE)
+ (object Attribute
+ tool "cg"
+ name "GenerateAssocClassDataMember"
+ value TRUE)
+ (object Attribute
+ tool "cg"
+ name "AssocClassDataMemberName"
+ value "$target")
+ (object Attribute
+ tool "cg"
+ name "AssocClassDataMemberVisibility"
+ value ("DataMemberVisibilitySet" 14))
+ (object Attribute
+ tool "cg"
+ name "DataMemberVisibilitySet"
+ value (list Attribute_Set
+ (object Attribute
+ tool "cg"
+ name "Public"
+ value 45)
+ (object Attribute
+ tool "cg"
+ name "Protected"
+ value 44)
+ (object Attribute
+ tool "cg"
+ name "Private"
+ value 43)
+ (object Attribute
+ tool "cg"
+ name "Implementation"
+ value 14)
+ (object Attribute
+ tool "cg"
+ name "AtRelationshipVisibility"
+ value 210)))
+ (object Attribute
+ tool "cg"
+ name "AssocClassDataMemberMutability"
+ value ("DataMemberMutabilitySet" 0))
+ (object Attribute
+ tool "cg"
+ name "DataMemberMutabilitySet"
+ value (list Attribute_Set
+ (object Attribute
+ tool "cg"
+ name "Unrestricted"
+ value 0)
+ (object Attribute
+ tool "cg"
+ name "Mutable"
+ value 1)
+ (object Attribute
+ tool "cg"
+ name "Const"
+ value 2)))
+ (object Attribute
+ tool "cg"
+ name "AssocClassDataMemberIsVolatile"
+ value FALSE)
+ (object Attribute
+ tool "cg"
+ name "AssocClassGetSetKinds"
+ value ("GetSetKindsSet" 200))
+ (object Attribute
+ tool "cg"
+ name "GenerateAssocClassGetOperation"
+ value TRUE)
+ (object Attribute
+ tool "cg"
+ name "AssocClassGetName"
+ value "get_$target")
+ (object Attribute
+ tool "cg"
+ name "AssocClassGetIsConst"
+ value TRUE)
+ (object Attribute
+ tool "cg"
+ name "AssocClassGetResultIsConst"
+ value ("GetResultIsConstSet" 2))
+ (object Attribute
+ tool "cg"
+ name "InlineAssocClassGet"
+ value TRUE)
+ (object Attribute
+ tool "cg"
+ name "GenerateAssocClassSetOperation"
+ value TRUE)
+ (object Attribute
+ tool "cg"
+ name "AssocClassSetName"
+ value "set_$target")
+ (object Attribute
+ tool "cg"
+ name "AssocClassSetReturnsValue"
+ value FALSE)
+ (object Attribute
+ tool "cg"
+ name "InlineAssocClassSet"
+ value TRUE)
+ (object Attribute
+ tool "cg"
+ name "AssocClassForwardReferenceOnly"
+ value TRUE)
+ (object Attribute
+ tool "cg"
+ name "GenerateForwardReference"
+ value FALSE)
+ (object Attribute
+ tool "cg"
+ name "IsReadOnly"
+ value FALSE)
+ (object Attribute
+ tool "cg"
+ name "BoundedRoleType"
+ value ("AssocTypeSet" 47))
+ (object Attribute
+ tool "cg"
+ name "AssocTypeSet"
+ value (list Attribute_Set
+ (object Attribute
+ tool "cg"
+ name "Array"
+ value 24)
+ (object Attribute
+ tool "cg"
+ name "Sequence"
+ value 47)))))
+ (object Attribute
+ tool "cg"
+ name "default__Attribute"
+ value (list Attribute_Set
+ (object Attribute
+ tool "cg"
+ name "CodeName"
+ value "")
+ (object Attribute
+ tool "cg"
+ name "GenerateDataMember"
+ value TRUE)
+ (object Attribute
+ tool "cg"
+ name "DataMemberName"
+ value "$attribute")
+ (object Attribute
+ tool "cg"
+ name "DataMemberVisibility"
+ value ("DataMemberVisibilitySet" 14))
+ (object Attribute
+ tool "cg"
+ name "DataMemberVisibilitySet"
+ value (list Attribute_Set
+ (object Attribute
+ tool "cg"
+ name "Public"
+ value 45)
+ (object Attribute
+ tool "cg"
+ name "Protected"
+ value 44)
+ (object Attribute
+ tool "cg"
+ name "Private"
+ value 43)
+ (object Attribute
+ tool "cg"
+ name "Implementation"
+ value 14)
+ (object Attribute
+ tool "cg"
+ name "AtAttributeVisibility"
+ value 211)))
+ (object Attribute
+ tool "cg"
+ name "DataMemberMutability"
+ value ("DataMemberMutabilitySet" 0))
+ (object Attribute
+ tool "cg"
+ name "DataMemberMutabilitySet"
+ value (list Attribute_Set
+ (object Attribute
+ tool "cg"
+ name "Unrestricted"
+ value 0)
+ (object Attribute
+ tool "cg"
+ name "Mutable"
+ value 1)
+ (object Attribute
+ tool "cg"
+ name "Const"
+ value 2)))
+ (object Attribute
+ tool "cg"
+ name "DataMemberIsVolatile"
+ value FALSE)
+ (object Attribute
+ tool "cg"
+ name "DataMemberFieldSize"
+ value "")
+ (object Attribute
+ tool "cg"
+ name "GenerateGetOperation"
+ value TRUE)
+ (object Attribute
+ tool "cg"
+ name "GenerateSetOperation"
+ value TRUE)
+ (object Attribute
+ tool "cg"
+ name "GetName"
+ value "get_$attribute")
+ (object Attribute
+ tool "cg"
+ name "SetName"
+ value "set_$attribute")
+ (object Attribute
+ tool "cg"
+ name "GetSetKinds"
+ value ("GetSetKindsSet" 200))
+ (object Attribute
+ tool "cg"
+ name "GetSetKindsSet"
+ value (list Attribute_Set
+ (object Attribute
+ tool "cg"
+ name "Common"
+ value 200)
+ (object Attribute
+ tool "cg"
+ name "Virtual"
+ value 201)
+ (object Attribute
+ tool "cg"
+ name "Abstract"
+ value 202)
+ (object Attribute
+ tool "cg"
+ name "Static"
+ value 203)
+ (object Attribute
+ tool "cg"
+ name "Friend"
+ value 204)))
+ (object Attribute
+ tool "cg"
+ name "GetIsConst"
+ value TRUE)
+ (object Attribute
+ tool "cg"
+ name "GetResultIsConst"
+ value ("GetResultIsConstSet" 2))
+ (object Attribute
+ tool "cg"
+ name "GetResultIsConstSet"
+ value (list Attribute_Set
+ (object Attribute
+ tool "cg"
+ name "False"
+ value 0)
+ (object Attribute
+ tool "cg"
+ name "True"
+ value 1)
+ (object Attribute
+ tool "cg"
+ name "Same_As_Function"
+ value 2)))
+ (object Attribute
+ tool "cg"
+ name "GetSetByReference"
+ value FALSE)
+ (object Attribute
+ tool "cg"
+ name "InlineGet"
+ value TRUE)
+ (object Attribute
+ tool "cg"
+ name "SetReturnsValue"
+ value FALSE)
+ (object Attribute
+ tool "cg"
+ name "InlineSet"
+ value TRUE)
+ (object Attribute
+ tool "cg"
+ name "CaseSpecifier"
+ value "")
+ (object Attribute
+ tool "cg"
+ name "IsReadOnly"
+ value FALSE)))
+ (object Attribute
+ tool "cg"
+ name "default__Uses"
+ value (list Attribute_Set
+ (object Attribute
+ tool "cg"
+ name "ForwardReferenceOnly"
+ value FALSE)
+ (object Attribute
+ tool "cg"
+ name "BodyReferenceOnly"
+ value FALSE)
+ (object Attribute
+ tool "cg"
+ name "GenerateForwardReference"
+ value FALSE)))
+ (object Attribute
+ tool "cg"
+ name "default__Subsystem"
+ value (list Attribute_Set
+ (object Attribute
+ tool "cg"
+ name "Directory"
+ value "AUTO GENERATE")
+ (object Attribute
+ tool "cg"
+ name "DirectoryIsOnSearchList"
+ value FALSE)
+ (object Attribute
+ tool "cg"
+ name "PrecompiledHeader"
+ value "")))
+ (object Attribute
+ tool "cg"
+ name "default__Category"
+ value (list Attribute_Set
+ (object Attribute
+ tool "cg"
+ name "IsNamespace"
+ value FALSE)
+ (object Attribute
+ tool "cg"
+ name "Indent"
+ value 2)
+ (object Attribute
+ tool "cg"
+ name "CodeName"
+ value "")
+ (object Attribute
+ tool "cg"
+ name "GenerateEmptyRegions"
+ value ("GenerateEmptyRegionSet" 3))
+ (object Attribute
+ tool "cg"
+ name "GenerateEmptyRegionSet"
+ value (list Attribute_Set
+ (object Attribute
+ tool "cg"
+ name "None"
+ value 0)
+ (object Attribute
+ tool "cg"
+ name "Preserved"
+ value 1)
+ (object Attribute
+ tool "cg"
+ name "Unpreserved"
+ value 2)
+ (object Attribute
+ tool "cg"
+ name "All"
+ value 3)))))
+ (object Attribute
+ tool "MSVC"
+ name "propertyId"
+ value "809135966")
+ (object Attribute
+ tool "MSVC"
+ name "default__Project"
+ value (list Attribute_Set
+ (object Attribute
+ tool "MSVC"
+ name "Version"
+ value "5.0")))
+ (object Attribute
+ tool "MSVC"
+ name "default__Class"
+ value (list Attribute_Set
+ (object Attribute
+ tool "MSVC"
+ name "Type"
+ value ("MSVCClassTypeSet" 0))
+ (object Attribute
+ tool "MSVC"
+ name "MSVCClassTypeSet"
+ value (list Attribute_Set
+ (object Attribute
+ tool "MSVC"
+ name "Normal"
+ value 0)
+ (object Attribute
+ tool "MSVC"
+ name "Interface_Part"
+ value 1)
+ (object Attribute
+ tool "MSVC"
+ name "Connection_Part"
+ value 2)
+ (object Attribute
+ tool "MSVC"
+ name "Class_Factory"
+ value 3)))
+ (object Attribute
+ tool "MSVC"
+ name "CObjectFunctionality"
+ value ("CObjectFunctionalitySet" 0))
+ (object Attribute
+ tool "MSVC"
+ name "CObjectFunctionalitySet"
+ value (list Attribute_Set
+ (object Attribute
+ tool "MSVC"
+ name "None"
+ value 0)
+ (object Attribute
+ tool "MSVC"
+ name "Dynamic"
+ value 1)
+ (object Attribute
+ tool "MSVC"
+ name "Dyncreate"
+ value 2)
+ (object Attribute
+ tool "MSVC"
+ name "Serial"
+ value 3)))
+ (object Attribute
+ tool "MSVC"
+ name "GenerateOverrideGroup"
+ value FALSE)
+ (object Attribute
+ tool "MSVC"
+ name "GenerateDataGroup"
+ value FALSE)
+ (object Attribute
+ tool "MSVC"
+ name "AFX_DATA_Entries"
+ value (value Text ""))
+ (object Attribute
+ tool "MSVC"
+ name "GenerateFieldGroup"
+ value FALSE)
+ (object Attribute
+ tool "MSVC"
+ name "AFX_FIELD_Entries"
+ value (value Text ""))
+ (object Attribute
+ tool "MSVC"
+ name "GenerateMessageGroup"
+ value FALSE)
+ (object Attribute
+ tool "MSVC"
+ name "GenerateMessageMap"
+ value FALSE)
+ (object Attribute
+ tool "MSVC"
+ name "AFX_MSG_MAP_Entries"
+ value (value Text ""))
+ (object Attribute
+ tool "MSVC"
+ name "MESSAGE_MAP_Entries"
+ value (value Text ""))
+ (object Attribute
+ tool "MSVC"
+ name "OLEFactory"
+ value ("OLEFactorySet" 0))
+ (object Attribute
+ tool "MSVC"
+ name "OLEFactorySet"
+ value (list Attribute_Set
+ (object Attribute
+ tool "MSVC"
+ name "None"
+ value 0)
+ (object Attribute
+ tool "MSVC"
+ name "Built_in"
+ value 1)
+ (object Attribute
+ tool "MSVC"
+ name "Simple"
+ value 2)
+ (object Attribute
+ tool "MSVC"
+ name "Licensed"
+ value 3)))
+ (object Attribute
+ tool "MSVC"
+ name "OLEName"
+ value "")
+ (object Attribute
+ tool "MSVC"
+ name "OLEClassID"
+ value "")
+ (object Attribute
+ tool "MSVC"
+ name "GenerateOLECtlType"
+ value FALSE)
+ (object Attribute
+ tool "MSVC"
+ name "OLECtlType"
+ value "")
+ (object Attribute
+ tool "MSVC"
+ name "GenerateOLETypeLib"
+ value FALSE)
+ (object Attribute
+ tool "MSVC"
+ name "OLETypeLibID"
+ value "")
+ (object Attribute
+ tool "MSVC"
+ name "OLETypeLibMajor"
+ value "")
+ (object Attribute
+ tool "MSVC"
+ name "OLETypeLibMinor"
+ value "")
+ (object Attribute
+ tool "MSVC"
+ name "GeneratePropPageIDs"
+ value FALSE)
+ (object Attribute
+ tool "MSVC"
+ name "OLEPropPageIDs"
+ value (value Text ""))
+ (object Attribute
+ tool "MSVC"
+ name "GenerateDispatchMap"
+ value FALSE)
+ (object Attribute
+ tool "MSVC"
+ name "AFX_DISPATCH_Entries"
+ value (value Text ""))
+ (object Attribute
+ tool "MSVC"
+ name "AFX_DISPATCH_MAP_Entries"
+ value (value Text ""))
+ (object Attribute
+ tool "MSVC"
+ name "DISPATCH_MAP_Entries"
+ value (value Text ""))
+ (object Attribute
+ tool "MSVC"
+ name "StockProperties"
+ value (value Text ""))
+ (object Attribute
+ tool "MSVC"
+ name "StockFunctions"
+ value (value Text ""))
+ (object Attribute
+ tool "MSVC"
+ name "DispatchDefValue"
+ value "")
+ (object Attribute
+ tool "MSVC"
+ name "GenerateDispIdEnum"
+ value FALSE)
+ (object Attribute
+ tool "MSVC"
+ name "AFX_DISP_ID_Entries"
+ value (value Text ""))
+ (object Attribute
+ tool "MSVC"
+ name "GenerateInterfaceMap"
+ value FALSE)
+ (object Attribute
+ tool "MSVC"
+ name "INTERFACE_MAP_Entries"
+ value (value Text ""))
+ (object Attribute
+ tool "MSVC"
+ name "InitInterface"
+ value "")
+ (object Attribute
+ tool "MSVC"
+ name "GenerateEventMap"
+ value FALSE)
+ (object Attribute
+ tool "MSVC"
+ name "AFX_EVENT_Entries"
+ value (value Text ""))
+ (object Attribute
+ tool "MSVC"
+ name "AFX_EVENT_MAP_Entries"
+ value (value Text ""))
+ (object Attribute
+ tool "MSVC"
+ name "EVENT_MAP_Entries"
+ value (value Text ""))
+ (object Attribute
+ tool "MSVC"
+ name "StockEvents"
+ value (value Text ""))
+ (object Attribute
+ tool "MSVC"
+ name "GenerateEventSinkMap"
+ value FALSE)
+ (object Attribute
+ tool "MSVC"
+ name "AFX_EVENTSINK_Entries"
+ value (value Text ""))
+ (object Attribute
+ tool "MSVC"
+ name "AFX_EVENTSINK_MAP_Entries"
+ value (value Text ""))
+ (object Attribute
+ tool "MSVC"
+ name "EVENTSINK_MAP_Entries"
+ value (value Text ""))
+ (object Attribute
+ tool "MSVC"
+ name "PropNotifySinks"
+ value (value Text ""))
+ (object Attribute
+ tool "MSVC"
+ name "GenerateConnectionMap"
+ value FALSE)
+ (object Attribute
+ tool "MSVC"
+ name "CONNECTION_MAP_Entries"
+ value (value Text ""))
+ (object Attribute
+ tool "MSVC"
+ name "ConnectionPointIID"
+ value "")
+ (object Attribute
+ tool "MSVC"
+ name "InheritanceType"
+ value "")
+ (object Attribute
+ tool "MSVC"
+ name "DeclSpec"
+ value "")
+ (object Attribute
+ tool "MSVC"
+ name "OLECommands"
+ value (value Text ""))
+ (object Attribute
+ tool "MSVC"
+ name "MFCDeclares"
+ value (value Text ""))
+ (object Attribute
+ tool "MSVC"
+ name "MFCImplements"
+ value (value Text ""))
+ (object Attribute
+ tool "MSVC"
+ name "ATL_Declares"
+ value (value Text ""))
+ (object Attribute
+ tool "MSVC"
+ name "GenerateCOMMap"
+ value FALSE)
+ (object Attribute
+ tool "MSVC"
+ name "COM_MAP_Entries"
+ value (value Text ""))
+ (object Attribute
+ tool "MSVC"
+ name "GenerateConnectionPointMap"
+ value FALSE)
+ (object Attribute
+ tool "MSVC"
+ name "CONNECTION_POINT_MAP_Entries"
+ value (value Text ""))
+ (object Attribute
+ tool "MSVC"
+ name "GenerateMsgMap"
+ value FALSE)
+ (object Attribute
+ tool "MSVC"
+ name "MSG_MAP_Entries"
+ value (value Text ""))
+ (object Attribute
+ tool "MSVC"
+ name "GeneratePropertyMap"
+ value FALSE)
+ (object Attribute
+ tool "MSVC"
+ name "PROPERTY_MAP_Entries"
+ value (value Text ""))))
+ (object Attribute
+ tool "MSVC"
+ name "default__Operation"
+ value (list Attribute_Set
+ (object Attribute
+ tool "MSVC"
+ name "Type"
+ value ("MSVCOperationTypeSet" 0))
+ (object Attribute
+ tool "MSVC"
+ name "MSVCOperationTypeSet"
+ value (list Attribute_Set
+ (object Attribute
+ tool "MSVC"
+ name "Normal"
+ value 0)
+ (object Attribute
+ tool "MSVC"
+ name "Virtual_Override"
+ value 1)
+ (object Attribute
+ tool "MSVC"
+ name "Message_Handler"
+ value 2)
+ (object Attribute
+ tool "MSVC"
+ name "Dispatch_Handler"
+ value 3)
+ (object Attribute
+ tool "MSVC"
+ name "Event_Firing_Function"
+ value 4)
+ (object Attribute
+ tool "MSVC"
+ name "Event_Sink_Handler"
+ value 5)
+ (object Attribute
+ tool "MSVC"
+ name "Std_OLE_Method"
+ value 6)
+ (object Attribute
+ tool "MSVC"
+ name "Command_Parser"
+ value 7)
+ (object Attribute
+ tool "MSVC"
+ name "Property_Get_Function"
+ value 8)
+ (object Attribute
+ tool "MSVC"
+ name "Property_Set_Function"
+ value 9)
+ (object Attribute
+ tool "MSVC"
+ name "Property_Notify_Function"
+ value 10)
+ (object Attribute
+ tool "MSVC"
+ name "Macro_Generated_Function"
+ value 11)))
+ (object Attribute
+ tool "MSVC"
+ name "AFX_MSG_MAP_Entries"
+ value (value Text ""))
+ (object Attribute
+ tool "MSVC"
+ name "MESSAGE_MAP_Entries"
+ value (value Text ""))
+ (object Attribute
+ tool "MSVC"
+ name "AFX_DISPATCH_MAP_Entries"
+ value (value Text ""))
+ (object Attribute
+ tool "MSVC"
+ name "DISPATCH_MAP_Entries"
+ value (value Text ""))
+ (object Attribute
+ tool "MSVC"
+ name "AFX_EVENT_MAP_Entries"
+ value (value Text ""))
+ (object Attribute
+ tool "MSVC"
+ name "EVENT_MAP_Entries"
+ value (value Text ""))
+ (object Attribute
+ tool "MSVC"
+ name "AFX_EVENTSINK_MAP_Entries"
+ value (value Text ""))
+ (object Attribute
+ tool "MSVC"
+ name "EVENTSINK_MAP_Entries"
+ value (value Text ""))
+ (object Attribute
+ tool "MSVC"
+ name "CallType"
+ value "")
+ (object Attribute
+ tool "MSVC"
+ name "DeclSpec"
+ value "")
+ (object Attribute
+ tool "MSVC"
+ name "BodyImage"
+ value (value Text ""))))
+ (object Attribute
+ tool "MSVC"
+ name "default__Role"
+ value (list Attribute_Set
+ (object Attribute
+ tool "MSVC"
+ name "Type"
+ value ("MSVCAttributeTypeSet" 0))
+ (object Attribute
+ tool "MSVC"
+ name "MSVCAttributeTypeSet"
+ value (list Attribute_Set
+ (object Attribute
+ tool "MSVC"
+ name "Normal"
+ value 0)
+ (object Attribute
+ tool "MSVC"
+ name "Member_Property"
+ value 1)
+ (object Attribute
+ tool "MSVC"
+ name "Get_Set_Property"
+ value 2)
+ (object Attribute
+ tool "MSVC"
+ name "Dialog_Data"
+ value 3)
+ (object Attribute
+ tool "MSVC"
+ name "Field_Data"
+ value 4)
+ (object Attribute
+ tool "MSVC"
+ name "Stock_Property"
+ value 5)))
+ (object Attribute
+ tool "MSVC"
+ name "AFX_DISPATCH_MAP_Entries"
+ value (value Text ""))
+ (object Attribute
+ tool "MSVC"
+ name "DISPATCH_MAP_Entries"
+ value (value Text ""))
+ (object Attribute
+ tool "MSVC"
+ name "DeclSpec"
+ value "")
+ (object Attribute
+ tool "MSVC"
+ name "PointerBase"
+ value "")
+ (object Attribute
+ tool "MSVC"
+ name "CallType"
+ value "")
+ (object Attribute
+ tool "MSVC"
+ name "StockPropertyImplementation"
+ value "")))
+ (object Attribute
+ tool "MSVC"
+ name "default__Has"
+ value (list Attribute_Set
+ (object Attribute
+ tool "MSVC"
+ name "Type"
+ value ("MSVCAttributeTypeSet" 0))
+ (object Attribute
+ tool "MSVC"
+ name "MSVCAttributeTypeSet"
+ value (list Attribute_Set
+ (object Attribute
+ tool "MSVC"
+ name "Normal"
+ value 0)
+ (object Attribute
+ tool "MSVC"
+ name "Member_Property"
+ value 1)
+ (object Attribute
+ tool "MSVC"
+ name "Get_Set_Property"
+ value 2)
+ (object Attribute
+ tool "MSVC"
+ name "Dialog_Data"
+ value 3)
+ (object Attribute
+ tool "MSVC"
+ name "Field_Data"
+ value 4)
+ (object Attribute
+ tool "MSVC"
+ name "Stock_Property"
+ value 5)))
+ (object Attribute
+ tool "MSVC"
+ name "AFX_DISPATCH_MAP_Entries"
+ value (value Text ""))
+ (object Attribute
+ tool "MSVC"
+ name "DISPATCH_MAP_Entries"
+ value (value Text ""))
+ (object Attribute
+ tool "MSVC"
+ name "DeclSpec"
+ value "")
+ (object Attribute
+ tool "MSVC"
+ name "PointerBase"
+ value "")
+ (object Attribute
+ tool "MSVC"
+ name "CallType"
+ value "")
+ (object Attribute
+ tool "MSVC"
+ name "StockPropertyImplementation"
+ value "")))
+ (object Attribute
+ tool "MSVC"
+ name "default__Attribute"
+ value (list Attribute_Set
+ (object Attribute
+ tool "MSVC"
+ name "Type"
+ value ("MSVCAttributeTypeSet" 0))
+ (object Attribute
+ tool "MSVC"
+ name "MSVCAttributeTypeSet"
+ value (list Attribute_Set
+ (object Attribute
+ tool "MSVC"
+ name "Normal"
+ value 0)
+ (object Attribute
+ tool "MSVC"
+ name "Member_Property"
+ value 1)
+ (object Attribute
+ tool "MSVC"
+ name "Get_Set_Property"
+ value 2)
+ (object Attribute
+ tool "MSVC"
+ name "Dialog_Data"
+ value 3)
+ (object Attribute
+ tool "MSVC"
+ name "Field_Data"
+ value 4)
+ (object Attribute
+ tool "MSVC"
+ name "Stock_Property"
+ value 5)))
+ (object Attribute
+ tool "MSVC"
+ name "AFX_DISPATCH_MAP_Entries"
+ value (value Text ""))
+ (object Attribute
+ tool "MSVC"
+ name "DISPATCH_MAP_Entries"
+ value (value Text ""))
+ (object Attribute
+ tool "MSVC"
+ name "DeclSpec"
+ value "")
+ (object Attribute
+ tool "MSVC"
+ name "PointerBase"
+ value "")
+ (object Attribute
+ tool "MSVC"
+ name "CallType"
+ value "")
+ (object Attribute
+ tool "MSVC"
+ name "StockPropertyImplementation"
+ value "")))
+ (object Attribute
+ tool "MSVC"
+ name "default__Module-Spec"
+ value (list Attribute_Set
+ (object Attribute
+ tool "MSVC"
+ name "GenerateIncludesGroup"
+ value FALSE)
+ (object Attribute
+ tool "MSVC"
+ name "AFX_INCLUDES_Entries"
+ value (value Text ""))
+ (object Attribute
+ tool "MSVC"
+ name "GenerateInsertLocation"
+ value FALSE)))
+ (object Attribute
+ tool "MSVC"
+ name "default__Module-Body"
+ value (list Attribute_Set
+ (object Attribute
+ tool "MSVC"
+ name "GenerateIncludesGroup"
+ value FALSE)
+ (object Attribute
+ tool "MSVC"
+ name "AFX_INCLUDES_Entries"
+ value (value Text ""))
+ (object Attribute
+ tool "MSVC"
+ name "GenerateInsertLocation"
+ value FALSE)))
+ (object Attribute
+ tool "cg"
+ name "HiddenTool"
+ value FALSE)
+ (object Attribute
+ tool "TypeLibImporter"
+ name "HiddenTool"
+ value FALSE)
+ (object Attribute
+ tool "Visual Basic"
+ name "propertyId"
+ value "783606378")
+ (object Attribute
+ tool "Visual Basic"
+ name "default__Class"
+ value (list Attribute_Set
+ (object Attribute
+ tool "Visual Basic"
+ name "CreatableSet"
+ value (list Attribute_Set
+ (object Attribute
+ tool "Visual Basic"
+ name "Private"
+ value 221)
+ (object Attribute
+ tool "Visual Basic"
+ name "PublicNotCreatable"
+ value 213)
+ (object Attribute
+ tool "Visual Basic"
+ name "SingleUse"
+ value 214)
+ (object Attribute
+ tool "Visual Basic"
+ name "GlobalSingleUse"
+ value 215)
+ (object Attribute
+ tool "Visual Basic"
+ name "MultiUse"
+ value 219)
+ (object Attribute
+ tool "Visual Basic"
+ name "GlobalMultiUse"
+ value 220)))
+ (object Attribute
+ tool "Visual Basic"
+ name "OptionBase"
+ value "0")
+ (object Attribute
+ tool "Visual Basic"
+ name "OptionExplicit"
+ value TRUE)
+ (object Attribute
+ tool "Visual Basic"
+ name "OptionCompare"
+ value ("CompareSet" 202))
+ (object Attribute
+ tool "Visual Basic"
+ name "Creatable"
+ value ("CreatableSet" 221))
+ (object Attribute
+ tool "Visual Basic"
+ name "GenerateInitialization"
+ value FALSE)
+ (object Attribute
+ tool "Visual Basic"
+ name "GenerateTermination"
+ value FALSE)
+ (object Attribute
+ tool "Visual Basic"
+ name "CollectionClass"
+ value "Collection")
+ (object Attribute
+ tool "Visual Basic"
+ name "CompareSet"
+ value (list Attribute_Set
+ (object Attribute
+ tool "Visual Basic"
+ name "None"
+ value 202)
+ (object Attribute
+ tool "Visual Basic"
+ name "Binary"
+ value 203)
+ (object Attribute
+ tool "Visual Basic"
+ name "Text"
+ value 204)))))
+ (object Attribute
+ tool "Visual Basic"
+ name "default__Operation"
+ value (list Attribute_Set
+ (object Attribute
+ tool "Visual Basic"
+ name "OperationName"
+ value "$operation")
+ (object Attribute
+ tool "Visual Basic"
+ name "LibraryName"
+ value "")
+ (object Attribute
+ tool "Visual Basic"
+ name "AliasName"
+ value "")
+ (object Attribute
+ tool "Visual Basic"
+ name "IsStatic"
+ value FALSE)
+ (object Attribute
+ tool "Visual Basic"
+ name "EntryCode"
+ value (value Text ""))
+ (object Attribute
+ tool "Visual Basic"
+ name "ExitCode"
+ value (value Text ""))))
+ (object Attribute
+ tool "Visual Basic"
+ name "default__Attribute"
+ value (list Attribute_Set
+ (object Attribute
+ tool "Visual Basic"
+ name "IsConst"
+ value FALSE)
+ (object Attribute
+ tool "Visual Basic"
+ name "New"
+ value FALSE)
+ (object Attribute
+ tool "Visual Basic"
+ name "WithEvents"
+ value FALSE)
+ (object Attribute
+ tool "Visual Basic"
+ name "Subscript"
+ value "")
+ (object Attribute
+ tool "Visual Basic"
+ name "NameIfUnlabeled"
+ value "the$supplier")
+ (object Attribute
+ tool "Visual Basic"
+ name "GenerateDataMember"
+ value TRUE)
+ (object Attribute
+ tool "Visual Basic"
+ name "DataMemberName"
+ value "$relationship")
+ (object Attribute
+ tool "Visual Basic"
+ name "GenerateGetOperation"
+ value FALSE)
+ (object Attribute
+ tool "Visual Basic"
+ name "GenerateSetOperation"
+ value FALSE)
+ (object Attribute
+ tool "Visual Basic"
+ name "GenerateLetOperation"
+ value FALSE)))
+ (object Attribute
+ tool "Visual Basic"
+ name "default__Role"
+ value (list Attribute_Set
+ (object Attribute
+ tool "Visual Basic"
+ name "New"
+ value FALSE)
+ (object Attribute
+ tool "Visual Basic"
+ name "WithEvents"
+ value FALSE)
+ (object Attribute
+ tool "Visual Basic"
+ name "Subscript"
+ value "")
+ (object Attribute
+ tool "Visual Basic"
+ name "NameIfUnlabeled"
+ value "the$supplier")
+ (object Attribute
+ tool "Visual Basic"
+ name "GenerateDataMember"
+ value TRUE)
+ (object Attribute
+ tool "Visual Basic"
+ name "DataMemberName"
+ value "$relationship")
+ (object Attribute
+ tool "Visual Basic"
+ name "GenerateGetOperation"
+ value FALSE)
+ (object Attribute
+ tool "Visual Basic"
+ name "GenerateSetOperation"
+ value FALSE)
+ (object Attribute
+ tool "Visual Basic"
+ name "GenerateLetOperation"
+ value FALSE)))
+ (object Attribute
+ tool "Visual Basic"
+ name "default__Inherit"
+ value (list Attribute_Set
+ (object Attribute
+ tool "Visual Basic"
+ name "ImplementsDelegation"
+ value TRUE)))
+ (object Attribute
+ tool "Visual Basic"
+ name "default__Module-Spec"
+ value (list Attribute_Set
+ (object Attribute
+ tool "Visual Basic"
+ name "ProjectFile"
+ value "")))
+ (object Attribute
+ tool "Visual Basic"
+ name "HiddenTool"
+ value FALSE)
+ (object Attribute
+ tool "VisualStudio"
+ name "HiddenTool"
+ value FALSE))
+ quid "3FAA8E8700C1"))
diff --git a/branches/sdo-java-M2/sdo/impl/pom.xml b/branches/sdo-java-M2/sdo/impl/pom.xml
new file mode 100644
index 0000000000..ff70c1e0b3
--- /dev/null
+++ b/branches/sdo-java-M2/sdo/impl/pom.xml
@@ -0,0 +1,130 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+-->
+<project>
+ <parent>
+ <groupId>org.apache.tuscany.sdo</groupId>
+ <artifactId>tuscany-sdo</artifactId>
+ <version>1.0-incubator-M2</version>
+ </parent>
+ <modelVersion>4.0.0</modelVersion>
+ <artifactId>tuscany-sdo-impl</artifactId>
+ <name>Tuscany SDO Implementation</name>
+ <description>Tuscany implementation of SDO API.</description>
+
+ <dependencies>
+ <dependency>
+ <groupId>commonj</groupId>
+ <artifactId>sdo-api-r${specVersion}</artifactId>
+ </dependency>
+
+ <dependency>
+ <groupId>org.eclipse.emf</groupId>
+ <artifactId>common</artifactId>
+ <version>${emfVersion}</version>
+ <scope>compile</scope>
+ </dependency>
+ <dependency>
+ <groupId>org.eclipse.emf</groupId>
+ <artifactId>ecore</artifactId>
+ <version>${emfVersion}</version>
+ <scope>compile</scope>
+ </dependency>
+ <dependency>
+ <groupId>org.eclipse.emf</groupId>
+ <artifactId>ecore-change</artifactId>
+ <version>${emfVersion}</version>
+ <scope>compile</scope>
+ </dependency>
+ <dependency>
+ <groupId>org.eclipse.emf</groupId>
+ <artifactId>ecore-xmi</artifactId>
+ <version>${emfVersion}</version>
+ <scope>compile</scope>
+ </dependency>
+ <dependency>
+ <groupId>org.eclipse.xsd</groupId>
+ <artifactId>xsd</artifactId>
+ <version>${emfVersion}</version>
+ <scope>compile</scope>
+ </dependency>
+
+ <!-- dependencies for optional code generation functions -->
+ <dependency>
+ <groupId>asm</groupId>
+ <artifactId>asm</artifactId>
+ <version>2.2</version>
+ <scope>provided</scope>
+ <optional>true</optional>
+ </dependency>
+
+ <!-- dependencies for optional StAX functions -->
+ <dependency>
+ <groupId>stax</groupId>
+ <artifactId>stax-api</artifactId>
+ <version>1.0.1</version>
+ <scope>provided</scope>
+ <optional>true</optional>
+ </dependency>
+
+ <!-- dependencies for test cases -->
+ <dependency>
+ <groupId>junit</groupId>
+ <artifactId>junit</artifactId>
+ </dependency>
+ <dependency>
+ <groupId>woodstox</groupId>
+ <artifactId>wstx-asl</artifactId>
+ <version>3.0.1</version>
+ <scope>test</scope>
+ </dependency>
+ </dependencies>
+
+ <build>
+ <plugins>
+ <plugin>
+ <groupId>org.apache.maven.plugins</groupId>
+ <artifactId>maven-jar-plugin</artifactId>
+ <configuration>
+ <archive>
+ <manifestFile>src/main/resources/META-INF/MANIFEST.MF</manifestFile>
+ </archive>
+ </configuration>
+ </plugin>
+ <plugin>
+ <groupId>org.apache.maven.plugins</groupId>
+ <artifactId>maven-javadoc-plugin</artifactId>
+ <configuration>
+ <overview>${basedir}/src/main/java/org/apache/tuscany/sdo/overview.html</overview>
+ <version>2.0</version>
+ </configuration>
+ <!-- <executions>
+ <execution>
+ <id>package</id>
+ <phase>package</phase>
+ <goals>
+ <goal>jar</goal>
+ </goals>
+ </execution>
+ </executions> -->
+ </plugin>
+
+ </plugins>
+ </build>
+</project>
diff --git a/branches/sdo-java-M2/sdo/impl/src/main/java/org/apache/tuscany/sdo/AnyTypeDataObject.java b/branches/sdo-java-M2/sdo/impl/src/main/java/org/apache/tuscany/sdo/AnyTypeDataObject.java
new file mode 100644
index 0000000000..79deec6d29
--- /dev/null
+++ b/branches/sdo-java-M2/sdo/impl/src/main/java/org/apache/tuscany/sdo/AnyTypeDataObject.java
@@ -0,0 +1,37 @@
+/**
+ *
+ * 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;
+
+import commonj.sdo.DataObject;
+
+import org.eclipse.emf.ecore.xml.type.AnyType;
+
+/**
+ * <!-- begin-user-doc -->
+ * A representation of the model object '<em><b>Any Type Data Object</b></em>'.
+ * <!-- end-user-doc -->
+ *
+ *
+ * @see org.apache.tuscany.sdo.SDOPackage#getAnyTypeDataObject()
+ * @model extendedMetaData="kind='mixed'"
+ * @generated
+ */
+public interface AnyTypeDataObject extends DataObject, AnyType {
+} // AnyTypeDataObject
diff --git a/branches/sdo-java-M2/sdo/impl/src/main/java/org/apache/tuscany/sdo/SDOExtendedMetaData.java b/branches/sdo-java-M2/sdo/impl/src/main/java/org/apache/tuscany/sdo/SDOExtendedMetaData.java
new file mode 100644
index 0000000000..355b62f7b2
--- /dev/null
+++ b/branches/sdo-java-M2/sdo/impl/src/main/java/org/apache/tuscany/sdo/SDOExtendedMetaData.java
@@ -0,0 +1,38 @@
+/**
+ *
+ * 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;
+
+import java.util.List;
+
+import org.apache.tuscany.sdo.helper.SDOExtendedMetaDataImpl;
+import org.eclipse.emf.ecore.EModelElement;
+import org.eclipse.emf.ecore.util.ExtendedMetaData;
+
+public interface SDOExtendedMetaData extends ExtendedMetaData {
+
+ SDOExtendedMetaData INSTANCE = new SDOExtendedMetaDataImpl();
+
+ List getAliasNames(EModelElement eModelElement);
+
+ void setAliasNames(EModelElement eModelElement, List aliasNames);
+
+ void setAliasNames(EModelElement eModelElement, String aliasNames);
+
+}
diff --git a/branches/sdo-java-M2/sdo/impl/src/main/java/org/apache/tuscany/sdo/SDOFactory.java b/branches/sdo-java-M2/sdo/impl/src/main/java/org/apache/tuscany/sdo/SDOFactory.java
new file mode 100644
index 0000000000..6d07e4b01a
--- /dev/null
+++ b/branches/sdo-java-M2/sdo/impl/src/main/java/org/apache/tuscany/sdo/SDOFactory.java
@@ -0,0 +1,176 @@
+/**
+ *
+ * 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;
+
+import commonj.sdo.ChangeSummary;
+import commonj.sdo.DataGraph;
+import commonj.sdo.DataObject;
+import org.eclipse.emf.ecore.EFactory;
+import org.eclipse.emf.ecore.EStructuralFeature;
+
+import commonj.sdo.Property;
+import commonj.sdo.Type;
+
+/**
+ * <!-- begin-user-doc -->
+ * The <b>Factory</b> for the model.
+ * It provides a create method for each non-abstract class of the model.
+ * <!-- end-user-doc -->
+ * @see org.apache.tuscany.sdo.SDOPackage
+ * @generated
+ */
+public interface SDOFactory extends EFactory{
+ /**
+ * The singleton instance of the factory.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ SDOFactory eINSTANCE = org.apache.tuscany.sdo.impl.SDOFactoryImpl.init();
+
+ /**
+ * Returns a new object of class '<em>Change Summary</em>'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return a new object of class '<em>Change Summary</em>'.
+ * @generated
+ */
+ ChangeSummary createChangeSummary();
+
+ /**
+ * Returns a new object of class '<em>Change Summary Setting</em>'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return a new object of class '<em>Change Summary Setting</em>'.
+ * @generated
+ */
+ ChangeSummary.Setting createChangeSummarySetting();
+
+ /**
+ * Returns a new object of class '<em>Data Graph</em>'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return a new object of class '<em>Data Graph</em>'.
+ * @generated
+ */
+ DataGraph createDataGraph();
+
+ /**
+ * Returns a new object of class '<em>Any Type Data Object</em>'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return a new object of class '<em>Any Type Data Object</em>'.
+ * @generated
+ */
+ AnyTypeDataObject createAnyTypeDataObject();
+
+ /**
+ * Returns a new object of class '<em>Simple Any Type Data Object</em>'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return a new object of class '<em>Simple Any Type Data Object</em>'.
+ * @generated
+ */
+ SimpleAnyTypeDataObject createSimpleAnyTypeDataObject();
+
+ /**
+ * Returns a new object of class '<em>Class</em>'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return a new object of class '<em>Class</em>'.
+ * @generated
+ */
+ Type createClass();
+
+ /**
+ * Returns a new object of class '<em>Data Type</em>'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return a new object of class '<em>Data Type</em>'.
+ * @generated
+ */
+ Type createDataType();
+
+ /**
+ * Returns a new object of class '<em>Attribute</em>'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return a new object of class '<em>Attribute</em>'.
+ * @generated
+ */
+ Property createAttribute();
+
+ /**
+ * Returns a new object of class '<em>Reference</em>'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return a new object of class '<em>Reference</em>'.
+ * @generated
+ */
+ Property createReference();
+
+ /**
+ * Returns a new object of class '<em>Enum</em>'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return a new object of class '<em>Enum</em>'.
+ * @generated
+ */
+ Type createEnum();
+
+ /**
+ * Returns a new object of class '<em>Dynamic Data Object</em>'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return a new object of class '<em>Dynamic Data Object</em>'.
+ * @generated
+ */
+ DataObject createDynamicDataObject();
+
+ /**
+ * Returns a new object of class '<em>Store Data Object</em>'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return a new object of class '<em>Store Data Object</em>'.
+ * @generated
+ */
+ DataObject createStoreDataObject();
+
+ /**
+ * Returns a new object of class '<em>Dynamic Store Data Object</em>'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return a new object of class '<em>Dynamic Store Data Object</em>'.
+ * @generated
+ */
+ DataObject createDynamicStoreDataObject();
+
+ /**
+ * Returns the package supported by this factory.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the package supported by this factory.
+ * @generated
+ */
+ SDOPackage getSDOPackage();
+
+ ChangeSummary.Setting createChangeSummarySetting(EStructuralFeature eStructuralFeature, Object value, boolean isSet);
+
+} //SDOFactory
diff --git a/branches/sdo-java-M2/sdo/impl/src/main/java/org/apache/tuscany/sdo/SDOPackage.java b/branches/sdo-java-M2/sdo/impl/src/main/java/org/apache/tuscany/sdo/SDOPackage.java
new file mode 100644
index 0000000000..f9023aec4b
--- /dev/null
+++ b/branches/sdo-java-M2/sdo/impl/src/main/java/org/apache/tuscany/sdo/SDOPackage.java
@@ -0,0 +1,1602 @@
+/**
+ *
+ * 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;
+
+import org.eclipse.emf.ecore.EAttribute;
+import org.eclipse.emf.ecore.EClass;
+import org.eclipse.emf.ecore.EDataType;
+import org.eclipse.emf.ecore.EPackage;
+import org.eclipse.emf.ecore.EReference;
+import org.eclipse.emf.ecore.EcorePackage;
+import org.eclipse.emf.ecore.change.ChangePackage;
+
+/**
+ * <!-- begin-user-doc -->
+ * The <b>Package</b> for the model.
+ * It contains accessors for the meta objects to represent
+ * <ul>
+ * <li>each class,</li>
+ * <li>each feature of each class,</li>
+ * <li>each enum,</li>
+ * <li>and each data type</li>
+ * </ul>
+ * <!-- end-user-doc -->
+ * @see org.apache.tuscany.sdo.SDOFactory
+ * @model kind="package"
+ * @generated
+ */
+public interface SDOPackage extends EPackage{
+ /**
+ * The package name.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ String eNAME = "sdo";
+
+ /**
+ * The package namespace URI.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ String eNS_URI = "http://www.apache.org/tuscany/2005/SDO";
+
+ /**
+ * The package namespace name.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ String eNS_PREFIX = "sdo";
+
+ /**
+ * The singleton instance of the package.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ SDOPackage eINSTANCE = org.apache.tuscany.sdo.impl.SDOPackageImpl.init();
+
+ /**
+ * The meta object id for the '{@link org.apache.tuscany.sdo.impl.DataGraphImpl <em>Data Graph</em>}' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see org.apache.tuscany.sdo.impl.DataGraphImpl
+ * @see org.apache.tuscany.sdo.impl.SDOPackageImpl#getDataGraph()
+ * @generated
+ */
+ int DATA_GRAPH = 2;
+
+ /**
+ * The meta object id for the '{@link org.apache.tuscany.sdo.impl.ChangeSummaryImpl <em>Change Summary</em>}' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see org.apache.tuscany.sdo.impl.ChangeSummaryImpl
+ * @see org.apache.tuscany.sdo.impl.SDOPackageImpl#getChangeSummary()
+ * @generated
+ */
+ int CHANGE_SUMMARY = 0;
+
+ /**
+ * The feature id for the '<em><b>Object Changes</b></em>' map.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int CHANGE_SUMMARY__OBJECT_CHANGES = ChangePackage.CHANGE_DESCRIPTION__OBJECT_CHANGES;
+
+ /**
+ * The feature id for the '<em><b>Objects To Detach</b></em>' reference list.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int CHANGE_SUMMARY__OBJECTS_TO_DETACH = ChangePackage.CHANGE_DESCRIPTION__OBJECTS_TO_DETACH;
+
+ /**
+ * The feature id for the '<em><b>Objects To Attach</b></em>' containment reference list.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int CHANGE_SUMMARY__OBJECTS_TO_ATTACH = ChangePackage.CHANGE_DESCRIPTION__OBJECTS_TO_ATTACH;
+
+ /**
+ * The feature id for the '<em><b>Resource Changes</b></em>' containment reference list.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int CHANGE_SUMMARY__RESOURCE_CHANGES = ChangePackage.CHANGE_DESCRIPTION__RESOURCE_CHANGES;
+
+ /**
+ * The feature id for the '<em><b>EData Graph</b></em>' reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int CHANGE_SUMMARY__EDATA_GRAPH = ChangePackage.CHANGE_DESCRIPTION_FEATURE_COUNT + 0;
+
+ /**
+ * The number of structural features of the '<em>Change Summary</em>' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int CHANGE_SUMMARY_FEATURE_COUNT = ChangePackage.CHANGE_DESCRIPTION_FEATURE_COUNT + 1;
+
+ /**
+ * The meta object id for the '{@link org.apache.tuscany.sdo.impl.ChangeSummarySettingImpl <em>Change Summary Setting</em>}' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see org.apache.tuscany.sdo.impl.ChangeSummarySettingImpl
+ * @see org.apache.tuscany.sdo.impl.SDOPackageImpl#getChangeSummarySetting()
+ * @generated
+ */
+ int CHANGE_SUMMARY_SETTING = 1;
+
+ /**
+ * The feature id for the '<em><b>Feature Name</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int CHANGE_SUMMARY_SETTING__FEATURE_NAME = ChangePackage.FEATURE_CHANGE__FEATURE_NAME;
+
+ /**
+ * The feature id for the '<em><b>Data Value</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int CHANGE_SUMMARY_SETTING__DATA_VALUE = ChangePackage.FEATURE_CHANGE__DATA_VALUE;
+
+ /**
+ * The feature id for the '<em><b>Set</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int CHANGE_SUMMARY_SETTING__SET = ChangePackage.FEATURE_CHANGE__SET;
+
+ /**
+ * The feature id for the '<em><b>Value</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int CHANGE_SUMMARY_SETTING__VALUE = ChangePackage.FEATURE_CHANGE__VALUE;
+
+ /**
+ * The feature id for the '<em><b>Feature</b></em>' reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int CHANGE_SUMMARY_SETTING__FEATURE = ChangePackage.FEATURE_CHANGE__FEATURE;
+
+ /**
+ * The feature id for the '<em><b>Reference Value</b></em>' reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int CHANGE_SUMMARY_SETTING__REFERENCE_VALUE = ChangePackage.FEATURE_CHANGE__REFERENCE_VALUE;
+
+ /**
+ * The feature id for the '<em><b>List Changes</b></em>' containment reference list.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int CHANGE_SUMMARY_SETTING__LIST_CHANGES = ChangePackage.FEATURE_CHANGE__LIST_CHANGES;
+
+ /**
+ * The number of structural features of the '<em>Change Summary Setting</em>' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int CHANGE_SUMMARY_SETTING_FEATURE_COUNT = ChangePackage.FEATURE_CHANGE_FEATURE_COUNT + 0;
+
+ /**
+ * The feature id for the '<em><b>Resource Set</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int DATA_GRAPH__RESOURCE_SET = EcorePackage.EOBJECT_FEATURE_COUNT + 0;
+
+ /**
+ * The feature id for the '<em><b>Root Resource</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int DATA_GRAPH__ROOT_RESOURCE = EcorePackage.EOBJECT_FEATURE_COUNT + 1;
+
+ /**
+ * The feature id for the '<em><b>EChange Summary</b></em>' reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int DATA_GRAPH__ECHANGE_SUMMARY = EcorePackage.EOBJECT_FEATURE_COUNT + 2;
+
+ /**
+ * The feature id for the '<em><b>ERoot Object</b></em>' reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int DATA_GRAPH__EROOT_OBJECT = EcorePackage.EOBJECT_FEATURE_COUNT + 3;
+
+ /**
+ * The number of structural features of the '<em>Data Graph</em>' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int DATA_GRAPH_FEATURE_COUNT = EcorePackage.EOBJECT_FEATURE_COUNT + 4;
+
+ /**
+ * The meta object id for the '{@link org.apache.tuscany.sdo.impl.DataObjectImpl <em>Data Object</em>}' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see org.apache.tuscany.sdo.impl.DataObjectImpl
+ * @see org.apache.tuscany.sdo.impl.SDOPackageImpl#getDataObject()
+ * @generated
+ */
+ int DATA_OBJECT = 3;
+
+ /**
+ * The meta object id for the '{@link commonj.sdo.Property <em>Property</em>}' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see commonj.sdo.Property
+ * @see org.apache.tuscany.sdo.impl.SDOPackageImpl#getProperty()
+ * @generated
+ */
+ int PROPERTY = 4;
+
+ /**
+ * The meta object id for the '{@link commonj.sdo.Sequence <em>Sequence</em>}' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see commonj.sdo.Sequence
+ * @see org.apache.tuscany.sdo.impl.SDOPackageImpl#getSequence()
+ * @generated
+ */
+ int SEQUENCE = 5;
+
+ /**
+ * The meta object id for the '{@link commonj.sdo.Type <em>Type</em>}' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see commonj.sdo.Type
+ * @see org.apache.tuscany.sdo.impl.SDOPackageImpl#getType()
+ * @generated
+ */
+ int TYPE = 6;
+
+ /**
+ * The number of structural features of the '<em>Data Object</em>' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int DATA_OBJECT_FEATURE_COUNT = 0;
+
+ /**
+ * The number of structural features of the '<em>Property</em>' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int PROPERTY_FEATURE_COUNT = 0;
+
+ /**
+ * The number of structural features of the '<em>Sequence</em>' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int SEQUENCE_FEATURE_COUNT = 0;
+
+ /**
+ * The number of structural features of the '<em>Type</em>' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int TYPE_FEATURE_COUNT = 0;
+
+ /**
+ * The meta object id for the '{@link org.apache.tuscany.sdo.impl.AnyTypeDataObjectImpl <em>Any Type Data Object</em>}' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see org.apache.tuscany.sdo.impl.AnyTypeDataObjectImpl
+ * @see org.apache.tuscany.sdo.impl.SDOPackageImpl#getAnyTypeDataObject()
+ * @generated
+ */
+ int ANY_TYPE_DATA_OBJECT = 7;
+
+ /**
+ * The feature id for the '<em><b>Mixed</b></em>' attribute list.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int ANY_TYPE_DATA_OBJECT__MIXED = DATA_OBJECT_FEATURE_COUNT + 0;
+
+ /**
+ * The feature id for the '<em><b>Any</b></em>' attribute list.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int ANY_TYPE_DATA_OBJECT__ANY = DATA_OBJECT_FEATURE_COUNT + 1;
+
+ /**
+ * The feature id for the '<em><b>Any Attribute</b></em>' attribute list.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int ANY_TYPE_DATA_OBJECT__ANY_ATTRIBUTE = DATA_OBJECT_FEATURE_COUNT + 2;
+
+ /**
+ * The number of structural features of the '<em>Any Type Data Object</em>' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int ANY_TYPE_DATA_OBJECT_FEATURE_COUNT = DATA_OBJECT_FEATURE_COUNT + 3;
+
+ /**
+ * The meta object id for the '{@link org.apache.tuscany.sdo.impl.SimpleAnyTypeDataObjectImpl <em>Simple Any Type Data Object</em>}' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see org.apache.tuscany.sdo.impl.SimpleAnyTypeDataObjectImpl
+ * @see org.apache.tuscany.sdo.impl.SDOPackageImpl#getSimpleAnyTypeDataObject()
+ * @generated
+ */
+ int SIMPLE_ANY_TYPE_DATA_OBJECT = 8;
+
+ /**
+ * The feature id for the '<em><b>Mixed</b></em>' attribute list.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int SIMPLE_ANY_TYPE_DATA_OBJECT__MIXED = ANY_TYPE_DATA_OBJECT__MIXED;
+
+ /**
+ * The feature id for the '<em><b>Any</b></em>' attribute list.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int SIMPLE_ANY_TYPE_DATA_OBJECT__ANY = ANY_TYPE_DATA_OBJECT__ANY;
+
+ /**
+ * The feature id for the '<em><b>Any Attribute</b></em>' attribute list.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int SIMPLE_ANY_TYPE_DATA_OBJECT__ANY_ATTRIBUTE = ANY_TYPE_DATA_OBJECT__ANY_ATTRIBUTE;
+
+ /**
+ * The feature id for the '<em><b>Raw Value</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int SIMPLE_ANY_TYPE_DATA_OBJECT__RAW_VALUE = ANY_TYPE_DATA_OBJECT_FEATURE_COUNT + 0;
+
+ /**
+ * The feature id for the '<em><b>Value</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int SIMPLE_ANY_TYPE_DATA_OBJECT__VALUE = ANY_TYPE_DATA_OBJECT_FEATURE_COUNT + 1;
+
+ /**
+ * The feature id for the '<em><b>Instance Type</b></em>' reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int SIMPLE_ANY_TYPE_DATA_OBJECT__INSTANCE_TYPE = ANY_TYPE_DATA_OBJECT_FEATURE_COUNT + 2;
+
+ /**
+ * The number of structural features of the '<em>Simple Any Type Data Object</em>' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int SIMPLE_ANY_TYPE_DATA_OBJECT_FEATURE_COUNT = ANY_TYPE_DATA_OBJECT_FEATURE_COUNT + 3;
+
+ /**
+ * The meta object id for the '{@link org.apache.tuscany.sdo.impl.ClassImpl <em>Class</em>}' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see org.apache.tuscany.sdo.impl.ClassImpl
+ * @see org.apache.tuscany.sdo.impl.SDOPackageImpl#getClass_()
+ * @generated
+ */
+ int CLASS = 9;
+
+ /**
+ * The feature id for the '<em><b>EAnnotations</b></em>' containment reference list.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int CLASS__EANNOTATIONS = EcorePackage.ECLASS__EANNOTATIONS;
+
+ /**
+ * The feature id for the '<em><b>Name</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int CLASS__NAME = EcorePackage.ECLASS__NAME;
+
+ /**
+ * The feature id for the '<em><b>Instance Class Name</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int CLASS__INSTANCE_CLASS_NAME = EcorePackage.ECLASS__INSTANCE_CLASS_NAME;
+
+ /**
+ * The feature id for the '<em><b>Instance Class</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int CLASS__INSTANCE_CLASS = EcorePackage.ECLASS__INSTANCE_CLASS;
+
+ /**
+ * The feature id for the '<em><b>Default Value</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int CLASS__DEFAULT_VALUE = EcorePackage.ECLASS__DEFAULT_VALUE;
+
+ /**
+ * The feature id for the '<em><b>EPackage</b></em>' container reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int CLASS__EPACKAGE = EcorePackage.ECLASS__EPACKAGE;
+
+ /**
+ * The feature id for the '<em><b>Abstract</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int CLASS__ABSTRACT = EcorePackage.ECLASS__ABSTRACT;
+
+ /**
+ * The feature id for the '<em><b>Interface</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int CLASS__INTERFACE = EcorePackage.ECLASS__INTERFACE;
+
+ /**
+ * The feature id for the '<em><b>ESuper Types</b></em>' reference list.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int CLASS__ESUPER_TYPES = EcorePackage.ECLASS__ESUPER_TYPES;
+
+ /**
+ * The feature id for the '<em><b>EOperations</b></em>' containment reference list.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int CLASS__EOPERATIONS = EcorePackage.ECLASS__EOPERATIONS;
+
+ /**
+ * The feature id for the '<em><b>EAll Attributes</b></em>' reference list.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int CLASS__EALL_ATTRIBUTES = EcorePackage.ECLASS__EALL_ATTRIBUTES;
+
+ /**
+ * The feature id for the '<em><b>EAll References</b></em>' reference list.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int CLASS__EALL_REFERENCES = EcorePackage.ECLASS__EALL_REFERENCES;
+
+ /**
+ * The feature id for the '<em><b>EReferences</b></em>' reference list.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int CLASS__EREFERENCES = EcorePackage.ECLASS__EREFERENCES;
+
+ /**
+ * The feature id for the '<em><b>EAttributes</b></em>' reference list.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int CLASS__EATTRIBUTES = EcorePackage.ECLASS__EATTRIBUTES;
+
+ /**
+ * The feature id for the '<em><b>EAll Containments</b></em>' reference list.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int CLASS__EALL_CONTAINMENTS = EcorePackage.ECLASS__EALL_CONTAINMENTS;
+
+ /**
+ * The feature id for the '<em><b>EAll Operations</b></em>' reference list.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int CLASS__EALL_OPERATIONS = EcorePackage.ECLASS__EALL_OPERATIONS;
+
+ /**
+ * The feature id for the '<em><b>EAll Structural Features</b></em>' reference list.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int CLASS__EALL_STRUCTURAL_FEATURES = EcorePackage.ECLASS__EALL_STRUCTURAL_FEATURES;
+
+ /**
+ * The feature id for the '<em><b>EAll Super Types</b></em>' reference list.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int CLASS__EALL_SUPER_TYPES = EcorePackage.ECLASS__EALL_SUPER_TYPES;
+
+ /**
+ * The feature id for the '<em><b>EID Attribute</b></em>' reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int CLASS__EID_ATTRIBUTE = EcorePackage.ECLASS__EID_ATTRIBUTE;
+
+ /**
+ * The feature id for the '<em><b>EStructural Features</b></em>' containment reference list.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int CLASS__ESTRUCTURAL_FEATURES = EcorePackage.ECLASS__ESTRUCTURAL_FEATURES;
+
+ /**
+ * The number of structural features of the '<em>Class</em>' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int CLASS_FEATURE_COUNT = EcorePackage.ECLASS_FEATURE_COUNT + 0;
+
+ /**
+ * The meta object id for the '{@link org.apache.tuscany.sdo.impl.DataTypeImpl <em>Data Type</em>}' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see org.apache.tuscany.sdo.impl.DataTypeImpl
+ * @see org.apache.tuscany.sdo.impl.SDOPackageImpl#getDataType()
+ * @generated
+ */
+ int DATA_TYPE = 10;
+
+ /**
+ * The feature id for the '<em><b>EAnnotations</b></em>' containment reference list.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int DATA_TYPE__EANNOTATIONS = EcorePackage.EDATA_TYPE__EANNOTATIONS;
+
+ /**
+ * The feature id for the '<em><b>Name</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int DATA_TYPE__NAME = EcorePackage.EDATA_TYPE__NAME;
+
+ /**
+ * The feature id for the '<em><b>Instance Class Name</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int DATA_TYPE__INSTANCE_CLASS_NAME = EcorePackage.EDATA_TYPE__INSTANCE_CLASS_NAME;
+
+ /**
+ * The feature id for the '<em><b>Instance Class</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int DATA_TYPE__INSTANCE_CLASS = EcorePackage.EDATA_TYPE__INSTANCE_CLASS;
+
+ /**
+ * The feature id for the '<em><b>Default Value</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int DATA_TYPE__DEFAULT_VALUE = EcorePackage.EDATA_TYPE__DEFAULT_VALUE;
+
+ /**
+ * The feature id for the '<em><b>EPackage</b></em>' container reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int DATA_TYPE__EPACKAGE = EcorePackage.EDATA_TYPE__EPACKAGE;
+
+ /**
+ * The feature id for the '<em><b>Serializable</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int DATA_TYPE__SERIALIZABLE = EcorePackage.EDATA_TYPE__SERIALIZABLE;
+
+ /**
+ * The number of structural features of the '<em>Data Type</em>' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int DATA_TYPE_FEATURE_COUNT = EcorePackage.EDATA_TYPE_FEATURE_COUNT + 0;
+
+ /**
+ * The meta object id for the '{@link org.apache.tuscany.sdo.impl.AttributeImpl <em>Attribute</em>}' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see org.apache.tuscany.sdo.impl.AttributeImpl
+ * @see org.apache.tuscany.sdo.impl.SDOPackageImpl#getAttribute()
+ * @generated
+ */
+ int ATTRIBUTE = 11;
+
+ /**
+ * The feature id for the '<em><b>EAnnotations</b></em>' containment reference list.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int ATTRIBUTE__EANNOTATIONS = EcorePackage.EATTRIBUTE__EANNOTATIONS;
+
+ /**
+ * The feature id for the '<em><b>Name</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int ATTRIBUTE__NAME = EcorePackage.EATTRIBUTE__NAME;
+
+ /**
+ * The feature id for the '<em><b>Ordered</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int ATTRIBUTE__ORDERED = EcorePackage.EATTRIBUTE__ORDERED;
+
+ /**
+ * The feature id for the '<em><b>Unique</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int ATTRIBUTE__UNIQUE = EcorePackage.EATTRIBUTE__UNIQUE;
+
+ /**
+ * The feature id for the '<em><b>Lower Bound</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int ATTRIBUTE__LOWER_BOUND = EcorePackage.EATTRIBUTE__LOWER_BOUND;
+
+ /**
+ * The feature id for the '<em><b>Upper Bound</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int ATTRIBUTE__UPPER_BOUND = EcorePackage.EATTRIBUTE__UPPER_BOUND;
+
+ /**
+ * The feature id for the '<em><b>Many</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int ATTRIBUTE__MANY = EcorePackage.EATTRIBUTE__MANY;
+
+ /**
+ * The feature id for the '<em><b>Required</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int ATTRIBUTE__REQUIRED = EcorePackage.EATTRIBUTE__REQUIRED;
+
+ /**
+ * The feature id for the '<em><b>EType</b></em>' reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int ATTRIBUTE__ETYPE = EcorePackage.EATTRIBUTE__ETYPE;
+
+ /**
+ * The feature id for the '<em><b>Changeable</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int ATTRIBUTE__CHANGEABLE = EcorePackage.EATTRIBUTE__CHANGEABLE;
+
+ /**
+ * The feature id for the '<em><b>Volatile</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int ATTRIBUTE__VOLATILE = EcorePackage.EATTRIBUTE__VOLATILE;
+
+ /**
+ * The feature id for the '<em><b>Transient</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int ATTRIBUTE__TRANSIENT = EcorePackage.EATTRIBUTE__TRANSIENT;
+
+ /**
+ * The feature id for the '<em><b>Default Value Literal</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int ATTRIBUTE__DEFAULT_VALUE_LITERAL = EcorePackage.EATTRIBUTE__DEFAULT_VALUE_LITERAL;
+
+ /**
+ * The feature id for the '<em><b>Default Value</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int ATTRIBUTE__DEFAULT_VALUE = EcorePackage.EATTRIBUTE__DEFAULT_VALUE;
+
+ /**
+ * The feature id for the '<em><b>Unsettable</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int ATTRIBUTE__UNSETTABLE = EcorePackage.EATTRIBUTE__UNSETTABLE;
+
+ /**
+ * The feature id for the '<em><b>Derived</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int ATTRIBUTE__DERIVED = EcorePackage.EATTRIBUTE__DERIVED;
+
+ /**
+ * The feature id for the '<em><b>EContaining Class</b></em>' container reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int ATTRIBUTE__ECONTAINING_CLASS = EcorePackage.EATTRIBUTE__ECONTAINING_CLASS;
+
+ /**
+ * The feature id for the '<em><b>ID</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int ATTRIBUTE__ID = EcorePackage.EATTRIBUTE__ID;
+
+ /**
+ * The feature id for the '<em><b>EAttribute Type</b></em>' reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int ATTRIBUTE__EATTRIBUTE_TYPE = EcorePackage.EATTRIBUTE__EATTRIBUTE_TYPE;
+
+ /**
+ * The number of structural features of the '<em>Attribute</em>' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int ATTRIBUTE_FEATURE_COUNT = EcorePackage.EATTRIBUTE_FEATURE_COUNT + 0;
+
+ /**
+ * The meta object id for the '{@link org.apache.tuscany.sdo.impl.ReferenceImpl <em>Reference</em>}' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see org.apache.tuscany.sdo.impl.ReferenceImpl
+ * @see org.apache.tuscany.sdo.impl.SDOPackageImpl#getReference()
+ * @generated
+ */
+ int REFERENCE = 12;
+
+ /**
+ * The feature id for the '<em><b>EAnnotations</b></em>' containment reference list.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int REFERENCE__EANNOTATIONS = EcorePackage.EREFERENCE__EANNOTATIONS;
+
+ /**
+ * The feature id for the '<em><b>Name</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int REFERENCE__NAME = EcorePackage.EREFERENCE__NAME;
+
+ /**
+ * The feature id for the '<em><b>Ordered</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int REFERENCE__ORDERED = EcorePackage.EREFERENCE__ORDERED;
+
+ /**
+ * The feature id for the '<em><b>Unique</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int REFERENCE__UNIQUE = EcorePackage.EREFERENCE__UNIQUE;
+
+ /**
+ * The feature id for the '<em><b>Lower Bound</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int REFERENCE__LOWER_BOUND = EcorePackage.EREFERENCE__LOWER_BOUND;
+
+ /**
+ * The feature id for the '<em><b>Upper Bound</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int REFERENCE__UPPER_BOUND = EcorePackage.EREFERENCE__UPPER_BOUND;
+
+ /**
+ * The feature id for the '<em><b>Many</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int REFERENCE__MANY = EcorePackage.EREFERENCE__MANY;
+
+ /**
+ * The feature id for the '<em><b>Required</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int REFERENCE__REQUIRED = EcorePackage.EREFERENCE__REQUIRED;
+
+ /**
+ * The feature id for the '<em><b>EType</b></em>' reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int REFERENCE__ETYPE = EcorePackage.EREFERENCE__ETYPE;
+
+ /**
+ * The feature id for the '<em><b>Changeable</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int REFERENCE__CHANGEABLE = EcorePackage.EREFERENCE__CHANGEABLE;
+
+ /**
+ * The feature id for the '<em><b>Volatile</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int REFERENCE__VOLATILE = EcorePackage.EREFERENCE__VOLATILE;
+
+ /**
+ * The feature id for the '<em><b>Transient</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int REFERENCE__TRANSIENT = EcorePackage.EREFERENCE__TRANSIENT;
+
+ /**
+ * The feature id for the '<em><b>Default Value Literal</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int REFERENCE__DEFAULT_VALUE_LITERAL = EcorePackage.EREFERENCE__DEFAULT_VALUE_LITERAL;
+
+ /**
+ * The feature id for the '<em><b>Default Value</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int REFERENCE__DEFAULT_VALUE = EcorePackage.EREFERENCE__DEFAULT_VALUE;
+
+ /**
+ * The feature id for the '<em><b>Unsettable</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int REFERENCE__UNSETTABLE = EcorePackage.EREFERENCE__UNSETTABLE;
+
+ /**
+ * The feature id for the '<em><b>Derived</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int REFERENCE__DERIVED = EcorePackage.EREFERENCE__DERIVED;
+
+ /**
+ * The feature id for the '<em><b>EContaining Class</b></em>' container reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int REFERENCE__ECONTAINING_CLASS = EcorePackage.EREFERENCE__ECONTAINING_CLASS;
+
+ /**
+ * The feature id for the '<em><b>Containment</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int REFERENCE__CONTAINMENT = EcorePackage.EREFERENCE__CONTAINMENT;
+
+ /**
+ * The feature id for the '<em><b>Container</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int REFERENCE__CONTAINER = EcorePackage.EREFERENCE__CONTAINER;
+
+ /**
+ * The feature id for the '<em><b>Resolve Proxies</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int REFERENCE__RESOLVE_PROXIES = EcorePackage.EREFERENCE__RESOLVE_PROXIES;
+
+ /**
+ * The feature id for the '<em><b>EOpposite</b></em>' reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int REFERENCE__EOPPOSITE = EcorePackage.EREFERENCE__EOPPOSITE;
+
+ /**
+ * The feature id for the '<em><b>EReference Type</b></em>' reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int REFERENCE__EREFERENCE_TYPE = EcorePackage.EREFERENCE__EREFERENCE_TYPE;
+
+ /**
+ * The number of structural features of the '<em>Reference</em>' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int REFERENCE_FEATURE_COUNT = EcorePackage.EREFERENCE_FEATURE_COUNT + 0;
+
+ /**
+ * The meta object id for the '{@link org.apache.tuscany.sdo.impl.EnumImpl <em>Enum</em>}' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see org.apache.tuscany.sdo.impl.EnumImpl
+ * @see org.apache.tuscany.sdo.impl.SDOPackageImpl#getEnum()
+ * @generated
+ */
+ int ENUM = 13;
+
+ /**
+ * The feature id for the '<em><b>EAnnotations</b></em>' containment reference list.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int ENUM__EANNOTATIONS = EcorePackage.EENUM__EANNOTATIONS;
+
+ /**
+ * The feature id for the '<em><b>Name</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int ENUM__NAME = EcorePackage.EENUM__NAME;
+
+ /**
+ * The feature id for the '<em><b>Instance Class Name</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int ENUM__INSTANCE_CLASS_NAME = EcorePackage.EENUM__INSTANCE_CLASS_NAME;
+
+ /**
+ * The feature id for the '<em><b>Instance Class</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int ENUM__INSTANCE_CLASS = EcorePackage.EENUM__INSTANCE_CLASS;
+
+ /**
+ * The feature id for the '<em><b>Default Value</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int ENUM__DEFAULT_VALUE = EcorePackage.EENUM__DEFAULT_VALUE;
+
+ /**
+ * The feature id for the '<em><b>EPackage</b></em>' container reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int ENUM__EPACKAGE = EcorePackage.EENUM__EPACKAGE;
+
+ /**
+ * The feature id for the '<em><b>Serializable</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int ENUM__SERIALIZABLE = EcorePackage.EENUM__SERIALIZABLE;
+
+ /**
+ * The feature id for the '<em><b>ELiterals</b></em>' containment reference list.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int ENUM__ELITERALS = EcorePackage.EENUM__ELITERALS;
+
+ /**
+ * The number of structural features of the '<em>Enum</em>' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int ENUM_FEATURE_COUNT = EcorePackage.EENUM_FEATURE_COUNT + 0;
+
+ /**
+ * The meta object id for the '{@link org.apache.tuscany.sdo.impl.DynamicDataObjectImpl <em>Dynamic Data Object</em>}' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see org.apache.tuscany.sdo.impl.DynamicDataObjectImpl
+ * @see org.apache.tuscany.sdo.impl.SDOPackageImpl#getDynamicDataObject()
+ * @generated
+ */
+ int DYNAMIC_DATA_OBJECT = 14;
+
+ /**
+ * The number of structural features of the '<em>Dynamic Data Object</em>' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int DYNAMIC_DATA_OBJECT_FEATURE_COUNT = DATA_OBJECT_FEATURE_COUNT + 0;
+
+ /**
+ * The meta object id for the '{@link org.apache.tuscany.sdo.impl.StoreDataObjectImpl <em>Store Data Object</em>}' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see org.apache.tuscany.sdo.impl.StoreDataObjectImpl
+ * @see org.apache.tuscany.sdo.impl.SDOPackageImpl#getStoreDataObject()
+ * @generated
+ */
+ int STORE_DATA_OBJECT = 15;
+
+ /**
+ * The number of structural features of the '<em>Store Data Object</em>' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int STORE_DATA_OBJECT_FEATURE_COUNT = DATA_OBJECT_FEATURE_COUNT + 0;
+
+ /**
+ * The meta object id for the '{@link org.apache.tuscany.sdo.impl.DynamicStoreDataObjectImpl <em>Dynamic Store Data Object</em>}' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see org.apache.tuscany.sdo.impl.DynamicStoreDataObjectImpl
+ * @see org.apache.tuscany.sdo.impl.SDOPackageImpl#getDynamicStoreDataObject()
+ * @generated
+ */
+ int DYNAMIC_STORE_DATA_OBJECT = 16;
+
+ /**
+ * The number of structural features of the '<em>Dynamic Store Data Object</em>' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int DYNAMIC_STORE_DATA_OBJECT_FEATURE_COUNT = STORE_DATA_OBJECT_FEATURE_COUNT + 0;
+
+ /**
+ * The meta object id for the '<em>EJava List</em>' data type.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see java.util.List
+ * @see org.apache.tuscany.sdo.impl.SDOPackageImpl#getEJavaList()
+ * @generated
+ */
+ int EJAVA_LIST = 17;
+
+ /**
+ * The meta object id for the '<em>EObject Stream Exception</em>' data type.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see java.io.ObjectStreamException
+ * @see org.apache.tuscany.sdo.impl.SDOPackageImpl#getEObjectStreamException()
+ * @generated
+ */
+ int EOBJECT_STREAM_EXCEPTION = 18;
+
+
+ /**
+ * Returns the meta object for class '{@link commonj.sdo.ChangeSummary <em>Change Summary</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for class '<em>Change Summary</em>'.
+ * @see commonj.sdo.ChangeSummary
+ * @model instanceClass="commonj.sdo.ChangeSummary"
+ * @generated
+ */
+ EClass getChangeSummary();
+
+ /**
+ * Returns the meta object for the reference '{@link commonj.sdo.ChangeSummary#getEDataGraph <em>EData Graph</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for the reference '<em>EData Graph</em>'.
+ * @see commonj.sdo.ChangeSummary#getEDataGraph()
+ * @see #getChangeSummary()
+ * @generated
+ */
+ EReference getChangeSummary_EDataGraph();
+
+ /**
+ * Returns the meta object for class '{@link commonj.sdo.ChangeSummary.Setting <em>Change Summary Setting</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for class '<em>Change Summary Setting</em>'.
+ * @see commonj.sdo.ChangeSummary.Setting
+ * @model instanceClass="commonj.sdo.ChangeSummary$Setting"
+ * @generated
+ */
+ EClass getChangeSummarySetting();
+
+ /**
+ * Returns the meta object for class '{@link commonj.sdo.DataGraph <em>Data Graph</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for class '<em>Data Graph</em>'.
+ * @see commonj.sdo.DataGraph
+ * @model instanceClass="commonj.sdo.DataGraph"
+ * @generated
+ */
+ EClass getDataGraph();
+
+ /**
+ * Returns the meta object for the attribute '{@link commonj.sdo.DataGraph#getResourceSet <em>Resource Set</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for the attribute '<em>Resource Set</em>'.
+ * @see commonj.sdo.DataGraph#getResourceSet()
+ * @see #getDataGraph()
+ * @generated
+ */
+ EAttribute getDataGraph_ResourceSet();
+
+ /**
+ * Returns the meta object for the attribute '{@link commonj.sdo.DataGraph#getRootResource <em>Root Resource</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for the attribute '<em>Root Resource</em>'.
+ * @see commonj.sdo.DataGraph#getRootResource()
+ * @see #getDataGraph()
+ * @generated
+ */
+ EAttribute getDataGraph_RootResource();
+
+ /**
+ * Returns the meta object for the reference '{@link commonj.sdo.DataGraph#getEChangeSummary <em>EChange Summary</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for the reference '<em>EChange Summary</em>'.
+ * @see commonj.sdo.DataGraph#getEChangeSummary()
+ * @see #getDataGraph()
+ * @generated
+ */
+ EReference getDataGraph_EChangeSummary();
+
+ /**
+ * Returns the meta object for the reference '{@link commonj.sdo.DataGraph#getERootObject <em>ERoot Object</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for the reference '<em>ERoot Object</em>'.
+ * @see commonj.sdo.DataGraph#getERootObject()
+ * @see #getDataGraph()
+ * @generated
+ */
+ EReference getDataGraph_ERootObject();
+
+ /**
+ * Returns the meta object for class '{@link commonj.sdo.DataObject <em>Data Object</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for class '<em>Data Object</em>'.
+ * @see commonj.sdo.DataObject
+ * @model instanceClass="commonj.sdo.DataObject"
+ * @generated
+ */
+ EClass getDataObject();
+
+ /**
+ * Returns the meta object for class '{@link commonj.sdo.Property <em>Property</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for class '<em>Property</em>'.
+ * @see commonj.sdo.Property
+ * @model instanceClass="commonj.sdo.Property"
+ * @generated
+ */
+ EClass getProperty();
+
+ /**
+ * Returns the meta object for class '{@link commonj.sdo.Sequence <em>Sequence</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for class '<em>Sequence</em>'.
+ * @see commonj.sdo.Sequence
+ * @model instanceClass="commonj.sdo.Sequence"
+ * @generated
+ */
+ EClass getSequence();
+
+ /**
+ * Returns the meta object for class '{@link commonj.sdo.Type <em>Type</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for class '<em>Type</em>'.
+ * @see commonj.sdo.Type
+ * @model instanceClass="commonj.sdo.Type"
+ * @generated
+ */
+ EClass getType();
+
+ /**
+ * Returns the meta object for class '{@link org.apache.tuscany.sdo.AnyTypeDataObject <em>Any Type Data Object</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for class '<em>Any Type Data Object</em>'.
+ * @see org.apache.tuscany.sdo.AnyTypeDataObject
+ * @generated
+ */
+ EClass getAnyTypeDataObject();
+
+ /**
+ * Returns the meta object for class '{@link org.apache.tuscany.sdo.SimpleAnyTypeDataObject <em>Simple Any Type Data Object</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for class '<em>Simple Any Type Data Object</em>'.
+ * @see org.apache.tuscany.sdo.SimpleAnyTypeDataObject
+ * @generated
+ */
+ EClass getSimpleAnyTypeDataObject();
+
+ /**
+ * Returns the meta object for class '{@link commonj.sdo.Type <em>Class</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for class '<em>Class</em>'.
+ * @see commonj.sdo.Type
+ * @model instanceClass="commonj.sdo.Type"
+ * @generated
+ */
+ EClass getClass_();
+
+ /**
+ * Returns the meta object for class '{@link commonj.sdo.Type <em>Data Type</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for class '<em>Data Type</em>'.
+ * @see commonj.sdo.Type
+ * @model instanceClass="commonj.sdo.Type"
+ * @generated
+ */
+ EClass getDataType();
+
+ /**
+ * Returns the meta object for class '{@link commonj.sdo.Property <em>Attribute</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for class '<em>Attribute</em>'.
+ * @see commonj.sdo.Property
+ * @model instanceClass="commonj.sdo.Property"
+ * @generated
+ */
+ EClass getAttribute();
+
+ /**
+ * Returns the meta object for class '{@link commonj.sdo.Property <em>Reference</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for class '<em>Reference</em>'.
+ * @see commonj.sdo.Property
+ * @model instanceClass="commonj.sdo.Property"
+ * @generated
+ */
+ EClass getReference();
+
+ /**
+ * Returns the meta object for class '{@link commonj.sdo.Type <em>Enum</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for class '<em>Enum</em>'.
+ * @see commonj.sdo.Type
+ * @model instanceClass="commonj.sdo.Type"
+ * @generated
+ */
+ EClass getEnum();
+
+ /**
+ * Returns the meta object for class '{@link commonj.sdo.DataObject <em>Dynamic Data Object</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for class '<em>Dynamic Data Object</em>'.
+ * @see commonj.sdo.DataObject
+ * @model instanceClass="commonj.sdo.DataObject"
+ * @generated
+ */
+ EClass getDynamicDataObject();
+
+ /**
+ * Returns the meta object for class '{@link commonj.sdo.DataObject <em>Store Data Object</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for class '<em>Store Data Object</em>'.
+ * @see commonj.sdo.DataObject
+ * @model instanceClass="commonj.sdo.DataObject"
+ * @generated
+ */
+ EClass getStoreDataObject();
+
+ /**
+ * Returns the meta object for class '{@link commonj.sdo.DataObject <em>Dynamic Store Data Object</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for class '<em>Dynamic Store Data Object</em>'.
+ * @see commonj.sdo.DataObject
+ * @model instanceClass="commonj.sdo.DataObject"
+ * @generated
+ */
+ EClass getDynamicStoreDataObject();
+
+ /**
+ * Returns the meta object for data type '{@link java.util.List <em>EJava List</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for data type '<em>EJava List</em>'.
+ * @see java.util.List
+ * @model instanceClass="java.util.List" serializable="false"
+ * @generated
+ */
+ EDataType getEJavaList();
+
+ /**
+ * Returns the meta object for data type '{@link java.io.ObjectStreamException <em>EObject Stream Exception</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for data type '<em>EObject Stream Exception</em>'.
+ * @see java.io.ObjectStreamException
+ * @model instanceClass="java.io.ObjectStreamException" serializable="false"
+ * @generated
+ */
+ EDataType getEObjectStreamException();
+
+ /**
+ * Returns the factory that creates the instances of the model.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the factory that creates the instances of the model.
+ * @generated
+ */
+ SDOFactory getSDOFactory();
+
+} //SDOPackage
diff --git a/branches/sdo-java-M2/sdo/impl/src/main/java/org/apache/tuscany/sdo/SDOTypeVisitor.java b/branches/sdo-java-M2/sdo/impl/src/main/java/org/apache/tuscany/sdo/SDOTypeVisitor.java
new file mode 100644
index 0000000000..5d3640100c
--- /dev/null
+++ b/branches/sdo-java-M2/sdo/impl/src/main/java/org/apache/tuscany/sdo/SDOTypeVisitor.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 org.apache.tuscany.sdo;
+
+import commonj.sdo.Property;
+import commonj.sdo.Type;
+
+/**
+ * Visitor interface that allows applications to process SDO type metadata.
+ *
+ * @version $Rev$ $Date$
+ */
+public interface SDOTypeVisitor {
+ /**
+ * Visit a type definition.
+ *
+ * @param type the type to visit
+ */
+ void visitType(Type type);
+
+ /**
+ * Visit a property definition.
+ *
+ * @param property the property to visit
+ */
+ void visitProperty(Property property);
+
+ /**
+ * Visit after all properties.
+ */
+ void visitEnd();
+}
diff --git a/branches/sdo-java-M2/sdo/impl/src/main/java/org/apache/tuscany/sdo/SimpleAnyTypeDataObject.java b/branches/sdo-java-M2/sdo/impl/src/main/java/org/apache/tuscany/sdo/SimpleAnyTypeDataObject.java
new file mode 100644
index 0000000000..93ff2ebf14
--- /dev/null
+++ b/branches/sdo-java-M2/sdo/impl/src/main/java/org/apache/tuscany/sdo/SimpleAnyTypeDataObject.java
@@ -0,0 +1,35 @@
+/**
+ *
+ * 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;
+
+import org.eclipse.emf.ecore.xml.type.SimpleAnyType;
+
+/**
+ * <!-- begin-user-doc -->
+ * A representation of the model object '<em><b>Simple Any Type Data Object</b></em>'.
+ * <!-- end-user-doc -->
+ *
+ *
+ * @see org.apache.tuscany.sdo.SDOPackage#getSimpleAnyTypeDataObject()
+ * @model extendedMetaData="kind='simple'"
+ * @generated
+ */
+public interface SimpleAnyTypeDataObject extends AnyTypeDataObject, SimpleAnyType {
+} // SimpleAnyTypeDataObject
diff --git a/branches/sdo-java-M2/sdo/impl/src/main/java/org/apache/tuscany/sdo/codegen/BytecodeInterfaceGenerator.java b/branches/sdo-java-M2/sdo/impl/src/main/java/org/apache/tuscany/sdo/codegen/BytecodeInterfaceGenerator.java
new file mode 100644
index 0000000000..3fe2cd952e
--- /dev/null
+++ b/branches/sdo-java-M2/sdo/impl/src/main/java/org/apache/tuscany/sdo/codegen/BytecodeInterfaceGenerator.java
@@ -0,0 +1,98 @@
+/**
+ *
+ * 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;
+import org.objectweb.asm.ClassWriter;
+import org.objectweb.asm.Opcodes;
+
+import org.apache.tuscany.sdo.SDOTypeVisitor;
+
+/**
+ * Implementation of a generator that will directly emit bytecode for an interface that
+ * corresponds to the static properties of a SDO type.
+ *
+ * @version $Rev$ $Date$
+ */
+public class BytecodeInterfaceGenerator implements SDOTypeVisitor {
+ private final ClassWriter cw;
+
+ public BytecodeInterfaceGenerator() {
+ cw = new ClassWriter(false);
+ }
+
+ public void visitType(Type type) {
+ String name = type.getName();
+ int lastDot = name.lastIndexOf('.');
+ if (lastDot != -1) {
+ name = name.replace('.', '/');
+ } else {
+ name = Character.toUpperCase(name.charAt(0)) + name.substring(1);
+ }
+
+ List baseTypes = type.getBaseTypes();
+ String[] interfaces = new String[baseTypes.size()];
+ for (int i = 0; i < baseTypes.size(); i++) {
+ Type baseType = (Type) baseTypes.get(i);
+ interfaces[i] = baseType.getInstanceClass().getName().replace('.', '/');
+ }
+
+ cw.visit(Opcodes.V1_4,
+ Opcodes.ACC_PUBLIC + Opcodes.ACC_ABSTRACT + Opcodes.ACC_INTERFACE,
+ name, null, "java/lang/Object", interfaces);
+ }
+
+ public void visitProperty(Property property) {
+ String name = property.getName();
+ String propertyName = Character.toUpperCase(name.charAt(0)) + name.substring(1);
+ Class javaType = property.getType().getInstanceClass();
+ String desc = org.objectweb.asm.Type.getDescriptor(javaType);
+
+ if (property.isMany()) {
+ cw.visitMethod(Opcodes.ACC_PUBLIC + Opcodes.ACC_ABSTRACT, "get" + propertyName, "()Ljava/util/List;", null, null).visitEnd();
+ } else {
+ if (boolean.class.equals(javaType)) {
+ cw.visitMethod(Opcodes.ACC_PUBLIC + Opcodes.ACC_ABSTRACT, "is" + propertyName, "()Z", null, null).visitEnd();
+ } else {
+ cw.visitMethod(Opcodes.ACC_PUBLIC + Opcodes.ACC_ABSTRACT, "get" + propertyName, "()" + desc, null, null).visitEnd();
+ }
+ if (!property.isReadOnly()) {
+ cw.visitMethod(Opcodes.ACC_PUBLIC + Opcodes.ACC_ABSTRACT, "set" + propertyName, '(' + desc + ")V", null, null).visitEnd();
+ }
+ }
+ }
+
+ public void visitEnd() {
+ cw.visitEnd();
+ }
+
+ /**
+ * Return the bytecode for the interface class in a form that can be written
+ * to disk, added to a JAR file, or passed to a ClassLoader.
+ *
+ * @return the bytecode for the SDO Type's interface class
+ */
+ public byte[] getClassData() {
+ return cw.toByteArray();
+ }
+}
diff --git a/branches/sdo-java-M2/sdo/impl/src/main/java/org/apache/tuscany/sdo/codegen/GenerationException.java b/branches/sdo-java-M2/sdo/impl/src/main/java/org/apache/tuscany/sdo/codegen/GenerationException.java
new file mode 100644
index 0000000000..3d645be1da
--- /dev/null
+++ b/branches/sdo-java-M2/sdo/impl/src/main/java/org/apache/tuscany/sdo/codegen/GenerationException.java
@@ -0,0 +1,42 @@
+/**
+ *
+ * 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;
+
+/**
+ * Exception indicating there was a problem with code generation.
+ *
+ * @version $Rev$ $Date$
+ */
+public abstract class GenerationException extends RuntimeException {
+ public GenerationException() {
+ }
+
+ public GenerationException(String message) {
+ super(message);
+ }
+
+ public GenerationException(String message, Throwable cause) {
+ super(message, cause);
+ }
+
+ public GenerationException(Throwable cause) {
+ super(cause);
+ }
+}
diff --git a/branches/sdo-java-M2/sdo/impl/src/main/java/org/apache/tuscany/sdo/codegen/JavaInterfaceGenerator.java b/branches/sdo-java-M2/sdo/impl/src/main/java/org/apache/tuscany/sdo/codegen/JavaInterfaceGenerator.java
new file mode 100644
index 0000000000..dc88a0d60d
--- /dev/null
+++ b/branches/sdo-java-M2/sdo/impl/src/main/java/org/apache/tuscany/sdo/codegen/JavaInterfaceGenerator.java
@@ -0,0 +1,179 @@
+/**
+ *
+ * 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.util.List;
+
+import commonj.sdo.Property;
+import commonj.sdo.Type;
+
+import org.apache.tuscany.sdo.SDOTypeVisitor;
+
+/**
+ * Implementation of a generator that will output the source code for a Java interface
+ * that corresponds to the SDO Type's static properties.
+ *
+ * @version $Rev$ $Date$
+ */
+public class JavaInterfaceGenerator implements SDOTypeVisitor {
+
+ private static String canonicalize(String className) {
+ if (className == null) {
+ return "";
+ }
+ if (className.charAt(0) != '[') { // if not array
+ return className;
+ }
+ // process array
+ boolean invalidClassName = false;
+ int nestLevel = 1;
+ StringBuffer sb = new StringBuffer();
+ try {
+ while (className.charAt(nestLevel) == '[') {
+ nestLevel++;
+ }
+ char typeChar = className.charAt(nestLevel);
+ int end = nestLevel;
+ switch (typeChar) {
+ case 'L':
+ end = className.length() - 1;
+ if (className.charAt(end) != ';') {
+ invalidClassName = true;
+ } else {
+ sb.append(className.substring(nestLevel+1, end));
+ }
+ break;
+ case 'Z':
+ sb.append("boolean");
+ break;
+ case 'B':
+ sb.append("byte");
+ break;
+ case 'C':
+ sb.append("char");
+ break;
+ case 'D':
+ sb.append("double");
+ break;
+ case 'F':
+ sb.append("float");
+ break;
+ case 'I':
+ sb.append("int");
+ break;
+ case 'J':
+ sb.append("long");
+ break;
+ case 'S':
+ sb.append("short");
+ break;
+ default:
+ invalidClassName = true;
+ break;
+ }
+ if (end != (className.length() - 1)) {
+ invalidClassName = true; // we have not used all the characters
+ } else {
+ for (int i=0; i<nestLevel; i++) {
+ sb.append("[]");
+ }
+ }
+ } catch(Exception e) {
+ invalidClassName = true;
+ }
+ if (invalidClassName) {
+ System.err.println("unable to canonicalize class name: "+className);
+ return className;
+ }
+ return sb.toString();
+ }
+
+ private final PrintWriter writer;
+
+ /**
+ * Constructor providing the Writer to output the source to.
+ *
+ * @param writer where the generated source code will be written to
+ */
+ public JavaInterfaceGenerator(PrintWriter writer) {
+ this.writer = writer;
+ }
+
+ public void visitType(Type type) {
+ String name = type.getName();
+ int lastDot = name.lastIndexOf('.');
+ if (lastDot != -1) {
+ writer.print("package ");
+ writer.print(name.substring(0, lastDot));
+ writer.println(';');
+ writer.println();
+
+ name = name.substring(lastDot + 1);
+ } else {
+ name = Character.toUpperCase(name.charAt(0)) + name.substring(1);
+ }
+
+ writer.print("public interface ");
+ writer.print(name);
+ List baseTypes = type.getBaseTypes();
+ for (int i = 0; i < baseTypes.size(); i++) {
+ Type baseType = (Type) baseTypes.get(i);
+ if (i == 0) {
+ writer.print(" extends ");
+ } else {
+ writer.print(", ");
+ }
+ writer.print(baseType.getInstanceClass().getName());
+ }
+
+ writer.println(" {");
+ }
+
+ public void visitProperty(Property property) {
+ String name = property.getName();
+ String propertyName = Character.toUpperCase(name.charAt(0)) + name.substring(1);
+ String javaType = canonicalize(property.getType().getInstanceClass().getName());
+
+ if (!property.isMany()) {
+ writer.print(" ");
+ writer.print(javaType);
+ writer.print("boolean".equals(javaType) ? " is" : " get");
+ writer.print(propertyName);
+ writer.println("();");
+ if (!property.isReadOnly()) {
+ writer.print(" void set");
+ writer.print(propertyName);
+ writer.print('(');
+ writer.print(javaType);
+ writer.println(" value);");
+ }
+ } else {
+ writer.print(" java.util.List get");
+ writer.print(propertyName);
+ writer.println("();");
+ }
+ }
+
+ public void visitEnd() {
+ writer.println('}');
+ writer.flush();
+ }
+}
diff --git a/branches/sdo-java-M2/sdo/impl/src/main/java/org/apache/tuscany/sdo/codegen/NoJavaImplementationException.java b/branches/sdo-java-M2/sdo/impl/src/main/java/org/apache/tuscany/sdo/codegen/NoJavaImplementationException.java
new file mode 100644
index 0000000000..a6253e8131
--- /dev/null
+++ b/branches/sdo-java-M2/sdo/impl/src/main/java/org/apache/tuscany/sdo/codegen/NoJavaImplementationException.java
@@ -0,0 +1,61 @@
+/**
+ *
+ * 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 commonj.sdo.Type;
+
+/**
+ * Exception that indicates there is no Java mapping for an SDO type.
+ *
+ * @version $Rev$ $Date$
+ */
+public class NoJavaImplementationException extends GenerationException {
+ private final Type type;
+
+ /**
+ * Constructor supplying the Type that did not have a Java implementation.
+ * A default message is provided of the form "${URI}#${Name}"
+ *
+ * @param type the type that did not have a Java implementation.
+ */
+ public NoJavaImplementationException(Type type) {
+ super(type == null ? null : type.getURI() + "#" + type.getName());
+ this.type = type;
+ }
+
+ /**
+ * Constructor supplying a message and the Type that did not have a Java implementation.
+ *
+ * @param message the message
+ * @param type the type that did not have a Java implementation.
+ */
+ public NoJavaImplementationException(String message, Type type) {
+ super(message);
+ this.type = type;
+ }
+
+ /**
+ * Return the type that did not have a Java implementation.
+ * @return the type that did not have a Java implementation
+ */
+ public Type getType() {
+ return type;
+ }
+}
diff --git a/branches/sdo-java-M2/sdo/impl/src/main/java/org/apache/tuscany/sdo/helper/CopyHelperImpl.java b/branches/sdo-java-M2/sdo/impl/src/main/java/org/apache/tuscany/sdo/helper/CopyHelperImpl.java
new file mode 100644
index 0000000000..16bafe68ca
--- /dev/null
+++ b/branches/sdo-java-M2/sdo/impl/src/main/java/org/apache/tuscany/sdo/helper/CopyHelperImpl.java
@@ -0,0 +1,54 @@
+/**
+ *
+ * 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.helper;
+
+
+import org.eclipse.emf.ecore.EObject;
+import org.eclipse.emf.ecore.EReference;
+import org.eclipse.emf.ecore.util.EcoreUtil;
+import org.eclipse.emf.ecore.util.EcoreUtil.Copier;
+
+import commonj.sdo.DataObject;
+import commonj.sdo.helper.CopyHelper;
+
+
+/**
+ * A helper for copying DataObjects.
+ */
+public class CopyHelperImpl implements CopyHelper
+{
+ public DataObject copyShallow(DataObject dataObject)
+ {
+ Copier copier = new Copier()
+ {
+ protected void copyContainment(EReference eReference, EObject eObject, EObject copyEObject)
+ {
+ }
+ };
+ EObject result = copier.copy((EObject)dataObject);
+ copier.copyReferences();
+ return (DataObject)result;
+ }
+
+ public DataObject copy(DataObject dataObject)
+ {
+ return (DataObject)EcoreUtil.copy((EObject)dataObject);
+ }
+}
diff --git a/branches/sdo-java-M2/sdo/impl/src/main/java/org/apache/tuscany/sdo/helper/CrossScopeCopyHelperImpl.java b/branches/sdo-java-M2/sdo/impl/src/main/java/org/apache/tuscany/sdo/helper/CrossScopeCopyHelperImpl.java
new file mode 100644
index 0000000000..b7a5534800
--- /dev/null
+++ b/branches/sdo-java-M2/sdo/impl/src/main/java/org/apache/tuscany/sdo/helper/CrossScopeCopyHelperImpl.java
@@ -0,0 +1,255 @@
+/**
+ *
+ * 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.helper;
+
+import java.util.Iterator;
+import java.util.Map;
+
+import org.eclipse.emf.ecore.EAttribute;
+import org.eclipse.emf.ecore.EClass;
+import org.eclipse.emf.ecore.EObject;
+import org.eclipse.emf.ecore.EReference;
+import org.eclipse.emf.ecore.EStructuralFeature;
+import org.eclipse.emf.ecore.util.EcoreUtil;
+import org.eclipse.emf.ecore.util.FeatureMap;
+import org.eclipse.emf.ecore.util.FeatureMapUtil;
+import org.eclipse.emf.ecore.util.InternalEList;
+import org.eclipse.emf.ecore.util.EcoreUtil.Copier;
+
+import commonj.sdo.DataObject;
+import commonj.sdo.Type;
+import commonj.sdo.helper.CopyHelper;
+import commonj.sdo.helper.TypeHelper;
+
+/**
+ * A CopyHelper implementation that creates the copy objects in a specific metadata scope.
+ * The target scope must contain a compatible version of the Types needed to create the copy objects.
+ */
+public class CrossScopeCopyHelperImpl implements CopyHelper
+{
+ protected TypeHelper scope;
+
+ public CrossScopeCopyHelperImpl(TypeHelper targetScope)
+ {
+ scope = targetScope;
+ }
+
+ public DataObject copyShallow(DataObject dataObject)
+ {
+ Copier copier = new CrossScopeCopier()
+ {
+ protected void copyContainment(EReference eReference, EObject eObject, EObject copyEObject)
+ {
+ }
+ protected void copyAttribute(EAttribute eAttribute, EObject eObject, EObject copyEObject)
+ {
+ if (eObject.eIsSet(eAttribute) && !FeatureMapUtil.isFeatureMap(eAttribute))
+ {
+ super.copyAttribute(eAttribute,eObject,copyEObject);
+ }
+ }
+ };
+ EObject result = copier.copy((EObject)dataObject);
+ copier.copyReferences();
+ return (DataObject)result;
+ }
+
+ public DataObject copy(DataObject dataObject)
+ {
+ Copier copier = new CrossScopeCopier();
+ DataObject result = (DataObject)copier.copy((EObject)dataObject);
+ copier.copyReferences();
+ return (DataObject)result;
+ }
+
+ protected class CrossScopeCopier extends EcoreUtil.Copier
+ {
+ protected boolean useOriginalReferences = false;
+
+ protected EClass getTarget(EClass eClass)
+ {
+ EClass target = (EClass)get(eClass);
+ if (target == null)
+ {
+ Type type = (Type)eClass;
+ target = (EClass)scope.getType(type.getURI(), type.getName());
+ }
+ return target;
+ }
+
+ protected EStructuralFeature getTarget(EStructuralFeature eStructuralFeature)
+ {
+ EClass eClass = getTarget(eStructuralFeature.getEContainingClass());
+ EStructuralFeature targetEf = eClass.getEStructuralFeature(eStructuralFeature.getName());
+ return targetEf;
+ }
+
+ /**
+ * This Method WILL BE REMOVED when EMF 3.0 is available
+ */
+ public void copyReferences()
+ {
+ for (Iterator i = entrySet().iterator(); i.hasNext();)
+ {
+ Map.Entry entry = (Map.Entry)i.next();
+ EObject eObject = (EObject)entry.getKey();
+ EObject copyEObject = (EObject)entry.getValue();
+ EClass eClass = eObject.eClass();
+ for (int j = 0, size = eClass.getFeatureCount(); j < size; ++j)
+ {
+ EStructuralFeature eStructuralFeature = eClass.getEStructuralFeature(j);
+ if (eStructuralFeature.isChangeable() && !eStructuralFeature.isDerived())
+ {
+ if (eStructuralFeature instanceof EReference)
+ {
+ EReference eReference = (EReference)eStructuralFeature;
+ if (!eReference.isContainment() && !eReference.isContainer())
+ {
+ copyReference(eReference, eObject, copyEObject);
+ }
+ }
+ else if (FeatureMapUtil.isFeatureMap(eStructuralFeature))
+ {
+ FeatureMap featureMap = (FeatureMap)eObject.eGet(eStructuralFeature);
+ FeatureMap copyFeatureMap = (FeatureMap)copyEObject.eGet(getTarget(eStructuralFeature));
+ int copyFeatureMapSize = copyFeatureMap.size();
+ for (int k = 0, featureMapSize = featureMap.size(); k < featureMapSize; ++k)
+ {
+ EStructuralFeature feature = featureMap.getEStructuralFeature(k);
+ if (feature instanceof EReference)
+ {
+ Object referencedEObject = featureMap.getValue(k);
+ Object copyReferencedEObject = get(referencedEObject);
+ if (copyReferencedEObject == null && referencedEObject != null)
+ {
+ EReference reference = (EReference)feature;
+ if (!useOriginalReferences || reference.isContainment() || reference.getEOpposite() != null)
+ {
+ continue;
+ }
+ copyReferencedEObject = referencedEObject;
+ }
+ // If we can't add it, it must aleady be in the list so find it and move it to the end.
+ //
+ if (!copyFeatureMap.add(feature, copyReferencedEObject))
+ {
+ for (int l = 0; l < copyFeatureMapSize; ++l)
+ {
+ if (copyFeatureMap.getEStructuralFeature(l) == feature && copyFeatureMap.getValue(l) == copyReferencedEObject)
+ {
+ copyFeatureMap.move(copyFeatureMap.size() - 1, l);
+ --copyFeatureMapSize;
+ break;
+ }
+ }
+ }
+ }
+ else
+ {
+ copyFeatureMap.add(featureMap.get(k));
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+
+ /**
+ * This Method WILL BE REMOVED when EMF 3.0 is available
+ */
+ protected void copyReference(EReference eReference, EObject eObject, EObject copyEObject)
+ {
+ if (eObject.eIsSet(eReference))
+ {
+ if (eReference.isMany())
+ {
+ InternalEList source = (InternalEList)eObject.eGet(eReference);
+ InternalEList target = (InternalEList)copyEObject.eGet(getTarget(eReference));
+ if (source.isEmpty())
+ {
+ target.clear();
+ }
+ else
+ {
+ boolean isBidirectional = eReference.getEOpposite() != null;
+ int index = 0;
+ for (Iterator k = resolveProxies ? source.iterator() : source.basicIterator(); k.hasNext();)
+ {
+ Object referencedEObject = k.next();
+ Object copyReferencedEObject = get(referencedEObject);
+ if (copyReferencedEObject == null)
+ {
+ if (useOriginalReferences && !isBidirectional)
+ {
+ target.addUnique(index, referencedEObject);
+ ++index;
+ }
+ }
+ else
+ {
+ if (isBidirectional)
+ {
+ int position = target.indexOf(copyReferencedEObject);
+ if (position == -1)
+ {
+ target.addUnique(index, copyReferencedEObject);
+ }
+ else if (index != position)
+ {
+ target.move(index, copyReferencedEObject);
+ }
+ }
+ else
+ {
+ target.addUnique(index, copyReferencedEObject);
+ }
+ ++index;
+ }
+ }
+ }
+ }
+ else
+ {
+ Object referencedEObject = eObject.eGet(eReference, resolveProxies);
+ if (referencedEObject == null)
+ {
+ copyEObject.eSet(getTarget(eReference), null);
+ }
+ else
+ {
+ Object copyReferencedEObject = get(referencedEObject);
+ if (copyReferencedEObject == null)
+ {
+ if (useOriginalReferences && eReference.getEOpposite() == null)
+ {
+ copyEObject.eSet(getTarget(eReference), referencedEObject);
+ }
+ }
+ else
+ {
+ copyEObject.eSet(getTarget(eReference), copyReferencedEObject);
+ }
+ }
+ }
+ }
+ }
+ }
+}
diff --git a/branches/sdo-java-M2/sdo/impl/src/main/java/org/apache/tuscany/sdo/helper/DataFactoryImpl.java b/branches/sdo-java-M2/sdo/impl/src/main/java/org/apache/tuscany/sdo/helper/DataFactoryImpl.java
new file mode 100644
index 0000000000..128f63f4d7
--- /dev/null
+++ b/branches/sdo-java-M2/sdo/impl/src/main/java/org/apache/tuscany/sdo/helper/DataFactoryImpl.java
@@ -0,0 +1,65 @@
+/**
+ *
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+package org.apache.tuscany.sdo.helper;
+
+import org.eclipse.emf.ecore.EClass;
+import org.eclipse.emf.ecore.util.EcoreUtil;
+
+import commonj.sdo.DataObject;
+import commonj.sdo.Type;
+import commonj.sdo.helper.DataFactory;
+import commonj.sdo.helper.TypeHelper;
+
+/**
+ * A Factory for creating DataObjects.
+ * The created DataObjects are not connected to any other DataObjects.
+ */
+public class DataFactoryImpl implements DataFactory
+{
+ protected TypeHelper typeHelper;
+
+ public DataFactoryImpl(TypeHelper typeHelper)
+ {
+ this.typeHelper = typeHelper;
+ }
+
+ public DataObject create(String uri, String typeName)
+ {
+ Type type = typeHelper.getType(uri, typeName);
+ return create(type);
+ }
+
+ public DataObject create(Class interfaceClass)
+ {
+ //TODO more efficient implementation ... this is a really bad one!
+ Type type = typeHelper.getType(interfaceClass);
+ return create(type);
+ }
+
+ public DataObject create(Type type)
+ {
+ if (type instanceof EClass)
+ {
+ EClass eClass = (EClass)type;
+ return (DataObject)EcoreUtil.create(eClass);
+ }
+ throw new IllegalArgumentException();
+ }
+}
diff --git a/branches/sdo-java-M2/sdo/impl/src/main/java/org/apache/tuscany/sdo/helper/DataHelperImpl.java b/branches/sdo-java-M2/sdo/impl/src/main/java/org/apache/tuscany/sdo/helper/DataHelperImpl.java
new file mode 100644
index 0000000000..2406af1a8a
--- /dev/null
+++ b/branches/sdo-java-M2/sdo/impl/src/main/java/org/apache/tuscany/sdo/helper/DataHelperImpl.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.helper;
+
+import java.util.Calendar;
+import java.util.Date;
+import java.util.GregorianCalendar;
+import java.util.Locale;
+import java.util.TimeZone;
+import java.text.ParseException;
+import java.text.SimpleDateFormat;
+
+
+import commonj.sdo.helper.DataHelper;
+
+/**
+ * Data helper methods.
+ */
+public class DataHelperImpl implements DataHelper
+{
+ /**
+ * @param dateString - Must comply to the pattern of yyyy-MM-dd'T'HH:mm:ss'.'SSS'Z'
+ * @return null if dataString couldn't be parsed
+ */
+ public synchronized Date toDate(String dateString)
+ {
+ Date result = null;
+ dateString = dateString.trim();
+ boolean negative = false;
+
+ if (dateString == null)
+ {
+ return null;
+ }
+
+ // Determine if it is a negative Date, DateTime, or Duration
+ if (dateString.length() > 2 && dateString.charAt(0) == '-' && dateString.charAt(1) != '-')
+ {
+ negative = true;
+ dateString = dateString.substring(1);
+ }
+
+ // SDO Date Format ends with a Z
+
+ if (dateString.endsWith("Z"))
+ {
+ SimpleDateFormat[] SDO_DATE_FORMATS =
+ {
+ new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ss'.'SSS'Z'"),
+ new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ss'Z'")
+ };
+
+ for (int i = 0; i < SDO_DATE_FORMATS.length; i++)
+ {
+ SDO_DATE_FORMATS[i].setTimeZone(TimeZone.getTimeZone("GMT"));
+ }
+
+ result = checkFormats(dateString, SDO_DATE_FORMATS);
+
+ // If no match, continue to try further possibilities
+
+ if (result != null)
+ {
+ if (negative)
+ return handleBCE(result);
+ else
+ return result;
+ }
+
+ }
+
+ // Duration format begins with a P
+
+ if (dateString.startsWith("P"))
+ {
+ // Remove any spaces in the dateString
+
+ String durationString = dateString.replaceAll(" ", "");
+
+ // For Duration format, there are so many possibilities due to so many optional
+ // inclusions, that we will build the format string rather than create
+ // a potential SimpleDateFormat for each possibility.
+
+ SimpleDateFormat[] DURATION_FORMATS = obtainDurationFormats(durationString);
+ result = checkFormats(durationString, DURATION_FORMATS);
+ if (result != null)
+ {
+ if (negative)
+ return handleNegative(result);
+ else
+ return result;
+ }
+ }
+
+ // Check the remaining possibilities. Note that time zone is optional for each.
+
+ SimpleDateFormat [] DATE_PATTERNS =
+ {
+ new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ss'.'SSS z"),
+ new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ss z"),
+ new SimpleDateFormat("yyyy-MM-dd'T'HH:mm z"),
+ new SimpleDateFormat("'--'MM'-'dd z"),
+ new SimpleDateFormat("'--'MM z"),
+ new SimpleDateFormat("'---'dd zzzz"),
+ new SimpleDateFormat("HH:mm:ss'.'SSS z"),
+ new SimpleDateFormat("HH:mm:ss z"),
+ new SimpleDateFormat("yyyy-MM-dd z"),
+ new SimpleDateFormat("yyyy-MM z"),
+ new SimpleDateFormat("yyyy z"),
+ new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ss'.'SSS"),
+ new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ss"),
+ new SimpleDateFormat("yyyy-MM-dd'T'HH:mm"),
+ new SimpleDateFormat("'--'MM'-'dd"),
+ new SimpleDateFormat("'--'MM"),
+ new SimpleDateFormat("'---'dd"),
+ new SimpleDateFormat("HH:mm:ss'.'SSS"),
+ new SimpleDateFormat("HH:mm:ss"),
+ new SimpleDateFormat("yyyy-MM-dd"),
+ new SimpleDateFormat("yyyy-MM"),
+ new SimpleDateFormat("yyyy")
+ };
+
+ result = checkFormats(dateString, DATE_PATTERNS);
+ if (result != null)
+ {
+ if (negative)
+ return handleBCE(result);
+ else
+ return result;
+ }
+
+ return null;
+ }
+
+ private synchronized Date checkFormats (String dateString, SimpleDateFormat[] format_array)
+ {
+ for (int i = 0; i < format_array.length; ++i)
+ {
+ try
+ {
+ format_array[i].setLenient(false);
+ return format_array[i].parse(dateString);
+ }
+ catch (ParseException parseException)
+ {
+ }
+ }
+
+ return null;
+ }
+
+ public synchronized SimpleDateFormat[] obtainDurationFormats(String dateString)
+ {
+ String first_part, second_part;
+ StringBuffer format_buffer = new StringBuffer("'P'");
+
+ // Must divide it into two parts to distinguish between Months and Minutes
+
+ int time_index = dateString.indexOf("T");
+ if (time_index != -1)
+ {
+ first_part = dateString.substring(0, time_index + 1);
+ second_part = dateString.substring(time_index);
+ }
+ else
+ {
+ first_part = dateString;
+ second_part = null;
+ }
+
+ if (first_part.indexOf("Y") != -1)
+ format_buffer.append("yyyy'Y'");
+ if (first_part.indexOf("M") != -1)
+ format_buffer.append("MM'M'");
+ if (first_part.indexOf("D") != -1)
+ format_buffer.append("dd'D'");
+ if (time_index != -1)
+ {
+ format_buffer.append("'T'");
+
+ if (second_part.indexOf("H") != -1)
+ format_buffer.append("HH'H'");
+ if (second_part.indexOf("M") != -1)
+ format_buffer.append("mm'M'");
+ if (second_part.indexOf("S.") != -1)
+ format_buffer.append("ss'S'.S");
+ else if (second_part.indexOf("S") != -1)
+ format_buffer.append("ss'S'");
+ }
+
+ String format_string = format_buffer.toString().replaceAll("''", "");
+
+ SimpleDateFormat [] DURATION_FORMATS =
+ {
+ new SimpleDateFormat(format_string)
+ };
+
+ return DURATION_FORMATS;
+ }
+
+ // Return a negative Duration if a negative sign existed in dateString
+ public synchronized Date handleNegative(Date output)
+ {
+ return new Date(0 - output.getTime());
+ }
+
+ // Return the date in BCE if a negative sign existed in dateString
+
+ public synchronized Date handleBCE(Date output)
+ {
+ GregorianCalendar temp = new GregorianCalendar();
+ temp.setTime(output);
+ temp.set(GregorianCalendar.ERA, GregorianCalendar.BC);
+
+ return temp.getTime();
+ }
+
+ public synchronized Calendar toCalendar(String dateString)
+ {
+ if (dateString == null)
+ {
+ return null;
+ }
+
+ Date date = toDate(dateString);
+ if (date == null)
+ {
+ return null;
+ }
+
+ Calendar calendar = new GregorianCalendar();
+ calendar.setTime(date);
+
+ return calendar;
+ }
+
+ public synchronized Calendar toCalendar(String dateString, Locale locale)
+ {
+ if (dateString == null || locale == null)
+ {
+ return null;
+ }
+
+ Date date = toDate(dateString);
+ if (date == null)
+ {
+ return null;
+ }
+
+ Calendar calendar = new GregorianCalendar(locale);
+ calendar.setTime(date);
+ return calendar;
+ }
+
+ public synchronized String toDateTime(Date date)
+ {
+ if (date == null)
+ {
+ return null;
+ }
+
+ SimpleDateFormat f = new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ss'.'SSS zz");
+
+ return f.format(date);
+ }
+
+ public synchronized String toDuration(Date date)
+ {
+ if (date == null)
+ {
+ return null;
+ }
+
+ SimpleDateFormat f = new SimpleDateFormat("'P'yyyy'Y' MM'M' dd'D' 'T' HH'H' mm'M' ss'S.'SSS");
+
+ return f.format(date);
+ }
+
+ public synchronized String toTime(Date date)
+ {
+ if (date == null)
+ {
+ return null;
+ }
+
+ SimpleDateFormat f = new SimpleDateFormat("HH:mm:ss'.'SSS zz");
+
+ return f.format(date);
+ }
+
+ public synchronized String toDay(Date date)
+ {
+ if (date == null)
+ {
+ return null;
+ }
+
+ SimpleDateFormat f = new SimpleDateFormat("---dd zz");
+
+ return f.format(date);
+ }
+
+ public synchronized String toMonth(Date date)
+ {
+ if (date == null)
+ {
+ return null;
+ }
+
+ SimpleDateFormat f = new SimpleDateFormat("--MM zz");
+
+ return f.format(date);
+ }
+
+ public synchronized String toMonthDay(Date date)
+ {
+ if (date == null)
+ {
+ return null;
+ }
+
+ SimpleDateFormat f = new SimpleDateFormat("--MM-dd zz");
+
+ return f.format(date);
+ }
+
+ public synchronized String toYear(Date date)
+ {
+ if (date == null)
+ {
+ return null;
+ }
+
+ SimpleDateFormat f = new SimpleDateFormat("yyyy zz");
+
+ return f.format(date);
+ }
+
+ public synchronized String toYearMonth(Date date)
+ {
+ if (date == null)
+ {
+ return null;
+ }
+
+ SimpleDateFormat f = new SimpleDateFormat("yyyy-MM zz");
+
+ return f.format(date);
+ }
+
+ public synchronized String toYearMonthDay(Date date)
+ {
+ if (date == null)
+ {
+ return null;
+ }
+
+ SimpleDateFormat f = new SimpleDateFormat("yyyy-MM-dd zz");
+
+ return f.format(date);
+ }
+
+ public synchronized String toDateTime(Calendar calendar)
+ {
+ if (calendar == null)
+ {
+ return null;
+ }
+
+ return toDateTime(calendar.getTime());
+ }
+
+ public synchronized String toDuration(Calendar calendar)
+ {
+ if (calendar == null)
+ {
+ return null;
+ }
+
+ return toDuration(calendar.getTime());
+ }
+
+ public synchronized String toTime(Calendar calendar)
+ {
+ if (calendar == null)
+ {
+ return null;
+ }
+
+ return toTime(calendar.getTime());
+ }
+
+ public synchronized String toDay(Calendar calendar)
+ {
+ if (calendar == null)
+ {
+ return null;
+ }
+
+ return toDay(calendar.getTime());
+ }
+
+ public synchronized String toMonth(Calendar calendar)
+ {
+ if (calendar == null)
+ {
+ return null;
+ }
+
+ return toMonth(calendar.getTime());
+ }
+
+ public synchronized String toMonthDay(Calendar calendar)
+ {
+ if (calendar == null)
+ {
+ return null;
+ }
+
+ return toMonthDay(calendar.getTime());
+ }
+
+ public synchronized String toYear(Calendar calendar)
+ {
+ if (calendar == null)
+ {
+ return null;
+ }
+
+ return toYear(calendar.getTime());
+ }
+
+ public synchronized String toYearMonth(Calendar calendar)
+ {
+ if (calendar == null)
+ {
+ return null;
+ }
+
+ return toYearMonth(calendar.getTime());
+ }
+
+ public synchronized String toYearMonthDay(Calendar calendar)
+ {
+ if (calendar == null)
+ {
+ return null;
+ }
+
+ return toYearMonthDay(calendar.getTime());
+ }
+}
diff --git a/branches/sdo-java-M2/sdo/impl/src/main/java/org/apache/tuscany/sdo/helper/EqualityHelperImpl.java b/branches/sdo-java-M2/sdo/impl/src/main/java/org/apache/tuscany/sdo/helper/EqualityHelperImpl.java
new file mode 100644
index 0000000000..e59a7d9f1c
--- /dev/null
+++ b/branches/sdo-java-M2/sdo/impl/src/main/java/org/apache/tuscany/sdo/helper/EqualityHelperImpl.java
@@ -0,0 +1,70 @@
+/**
+ *
+ * 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.helper;
+
+
+import org.eclipse.emf.ecore.EAttribute;
+import org.eclipse.emf.ecore.EObject;
+import org.eclipse.emf.ecore.EStructuralFeature;
+import org.eclipse.emf.ecore.util.EcoreUtil;
+
+import commonj.sdo.DataObject;
+import commonj.sdo.helper.EqualityHelper;
+
+
+/**
+ * A helper for comparing DataObjects.
+ */
+public class EqualityHelperImpl implements EqualityHelper
+{
+ public boolean equalShallow(DataObject dataObject1, DataObject dataObject2)
+ {
+ EcoreUtil.EqualityHelper equalityHelper = new EcoreUtil.EqualityHelper()
+ {
+ protected boolean haveEqualFeature(EObject eObject1, EObject eObject2, EStructuralFeature feature)
+ {
+ if (feature instanceof EAttribute)
+ {
+ boolean eIsSet = eObject1.eIsSet(feature);
+ if (eIsSet != eObject2.eIsSet(feature) || !haveEqualAttribute(eObject1, eObject2, (EAttribute)feature))
+ {
+ return false;
+ }
+ }
+ return true;
+ }
+
+ protected boolean equalFeatureMapValues(Object value1, Object value2, EStructuralFeature feature)
+ {
+ if (feature instanceof EAttribute)
+ {
+ return value1 == null ? value2 == null : value1.equals(value2);
+ }
+ return true;
+ }
+ };
+ return equalityHelper.equals((EObject)dataObject1, (EObject)dataObject2);
+ }
+
+ public boolean equal(DataObject dataObject1, DataObject dataObject2)
+ {
+ return EcoreUtil.equals((EObject)dataObject1, (EObject)dataObject2);
+ }
+}
diff --git a/branches/sdo-java-M2/sdo/impl/src/main/java/org/apache/tuscany/sdo/helper/HelperProviderImpl.java b/branches/sdo-java-M2/sdo/impl/src/main/java/org/apache/tuscany/sdo/helper/HelperProviderImpl.java
new file mode 100644
index 0000000000..24734cfaaf
--- /dev/null
+++ b/branches/sdo-java-M2/sdo/impl/src/main/java/org/apache/tuscany/sdo/helper/HelperProviderImpl.java
@@ -0,0 +1,215 @@
+/**
+ *
+ * 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.helper;
+
+
+import java.io.ByteArrayInputStream;
+import java.io.ByteArrayOutputStream;
+import java.io.IOException;
+import java.io.NotSerializableException;
+import java.io.ObjectInput;
+import java.io.ObjectOutput;
+import java.io.ObjectStreamException;
+import java.util.zip.GZIPInputStream;
+import java.util.zip.GZIPOutputStream;
+
+import org.apache.tuscany.sdo.util.DataObjectUtil;
+import org.apache.tuscany.sdo.util.SDOUtil;
+
+import commonj.sdo.DataGraph;
+import commonj.sdo.DataObject;
+import commonj.sdo.helper.CopyHelper;
+import commonj.sdo.helper.DataFactory;
+import commonj.sdo.helper.DataHelper;
+import commonj.sdo.helper.EqualityHelper;
+import commonj.sdo.helper.TypeHelper;
+import commonj.sdo.helper.XMLDocument;
+import commonj.sdo.helper.XMLHelper;
+import commonj.sdo.helper.XSDHelper;
+import commonj.sdo.impl.HelperProvider;
+import commonj.sdo.impl.ExternalizableDelegator.Resolvable;
+
+
+/**
+ * Create and manage all the default helper INSTANCEs
+ */
+public class HelperProviderImpl extends HelperProvider
+{
+ protected CopyHelper copyHelper;
+
+ protected DataFactory dataFactory;
+
+ protected DataHelper dataHelper;
+
+ protected EqualityHelper equalityHelper;
+
+ protected TypeHelper typeHelper;
+
+ protected XMLHelper xmlHelper;
+
+ protected XSDHelper xsdHelper;
+
+ public HelperProviderImpl()
+ {
+ typeHelper = SDOUtil.createTypeHelper();
+ dataFactory = SDOUtil.createDataFactory(typeHelper);
+ xmlHelper = SDOUtil.createXMLHelper(typeHelper);
+ xsdHelper = SDOUtil.createXSDHelper(typeHelper);
+ copyHelper = new CopyHelperImpl();
+ equalityHelper = new EqualityHelperImpl();
+ dataHelper = new DataHelperImpl();
+ }
+
+ public CopyHelper copyHelper()
+ {
+ return copyHelper;
+ }
+
+ public DataFactory dataFactory()
+ {
+ return dataFactory;
+ }
+
+ public DataHelper dataHelper()
+ {
+ return dataHelper;
+ }
+
+ public EqualityHelper equalityHelper()
+ {
+ return equalityHelper;
+ }
+
+ public TypeHelper typeHelper()
+ {
+ return typeHelper;
+ }
+
+ public XMLHelper xmlHelper()
+ {
+ return xmlHelper;
+ }
+
+ public XSDHelper xsdHelper()
+ {
+ return xsdHelper;
+ }
+
+ public Resolvable resolvable()
+ {
+ return new ResolvableImpl();
+ }
+
+ public Resolvable resolvable(Object target)
+ {
+ return new ResolvableImpl(target);
+ }
+
+ protected class ResolvableImpl implements Resolvable
+ {
+ protected Object target;
+
+ public ResolvableImpl(Object target) { this.target = target; }
+
+ public ResolvableImpl() { this.target = null; }
+
+ public void writeExternal(ObjectOutput out) throws IOException
+ {
+ if (target instanceof DataObject)
+ {
+ writeDataObject((DataObject)target, out);
+ }
+ else
+ {
+ throw new NotSerializableException(); // should never happen
+ }
+ }
+
+ public void readExternal(ObjectInput in) throws IOException, ClassNotFoundException
+ {
+ target = readDataObject(in);
+ }
+
+ public Object readResolve() throws ObjectStreamException
+ {
+ return target;
+ }
+
+ protected void writeDataObject(DataObject dataObject, ObjectOutput objectOutput) throws IOException
+ {
+ DataGraph dataGraph = dataObject.getDataGraph();
+ if (dataGraph != null)
+ {
+ objectOutput.writeByte(0);
+ objectOutput.writeUTF(DataObjectUtil.getXPath(dataObject));
+ objectOutput.writeObject(dataGraph);
+ }
+ else if (dataObject.getContainer() != null)
+ {
+ objectOutput.writeByte(0);
+ objectOutput.writeUTF(DataObjectUtil.getXPath(dataObject));
+ objectOutput.writeObject(dataObject.getRootObject());
+ }
+ else
+ {
+ // Root object
+ objectOutput.writeByte(1);
+
+ ByteArrayOutputStream compressedByteArrayOutputStream = new ByteArrayOutputStream();
+ GZIPOutputStream gzipOutputStream = new GZIPOutputStream(compressedByteArrayOutputStream);
+
+ xmlHelper.save(dataObject, "commonj.sdo", "dataObject", gzipOutputStream);
+ gzipOutputStream.close(); // Flush the contents
+
+ byte[] byteArray = compressedByteArrayOutputStream.toByteArray();
+ objectOutput.writeInt(byteArray.length);
+ objectOutput.write(byteArray);
+ }
+ }
+
+ protected DataObject readDataObject(ObjectInput objectInput) throws IOException, ClassNotFoundException
+ {
+ boolean isRoot = objectInput.readByte() == 1;
+ if (isRoot)
+ {
+ // Root object: [rootXML] = length + XML contents
+ int length = objectInput.readInt();
+ byte[] compressedBytes = new byte [length];
+ objectInput.read(compressedBytes, 0, length);
+
+ GZIPInputStream gzipInputStream = new GZIPInputStream(new ByteArrayInputStream(compressedBytes));
+
+ XMLDocument doc = xmlHelper.load(gzipInputStream);
+ gzipInputStream.close();
+
+ return doc.getRootObject();
+ }
+ else
+ {
+ // Non root object: [path] [root]
+ String xpath = objectInput.readUTF();
+ Object object = objectInput.readObject();
+
+ DataObject root = object instanceof DataGraph ? ((DataGraph)object).getRootObject() : (DataObject)object;
+ return xpath.equals("") ? root : root.getDataObject(xpath);
+ }
+ }
+ }
+}
diff --git a/branches/sdo-java-M2/sdo/impl/src/main/java/org/apache/tuscany/sdo/helper/SDOAnnotations.java b/branches/sdo-java-M2/sdo/impl/src/main/java/org/apache/tuscany/sdo/helper/SDOAnnotations.java
new file mode 100644
index 0000000000..816fb3bf9f
--- /dev/null
+++ b/branches/sdo-java-M2/sdo/impl/src/main/java/org/apache/tuscany/sdo/helper/SDOAnnotations.java
@@ -0,0 +1,51 @@
+/**
+ *
+ * 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.helper;
+
+public class SDOAnnotations
+{
+ public static final String COLON = ":";
+ public static final String COMMONJ_SDO_NS = "commonj.sdo";
+ public static final String COMMONJ_SDO_NS_PREFIX = "sdo";
+ public static final String SDO_JAVA_NS = "commonj.sdo/java";
+ public static final String SDO_JAVA_NS_PREFIX = "sdoJava";
+
+ public static final String JAVA_PACKAGE = SDO_JAVA_NS_PREFIX + COLON + "package";
+ public static final String ALIAS_NAMES = COMMONJ_SDO_NS_PREFIX + COLON + "aliasName";
+ public static final String READ_ONLY = COMMONJ_SDO_NS_PREFIX + COLON + "readOnly";
+ public static final String INSTANCE_CLASS = SDO_JAVA_NS_PREFIX + COLON + "instanceClass";
+ public static final String ABSTRACT_TYPE = "abstract";
+ public static final String PROPERTY_TYPE = COMMONJ_SDO_NS_PREFIX + COLON + "propertyType";
+ public static final String OPPOSITE_PROPERTY = COMMONJ_SDO_NS_PREFIX + COLON + "oppositeProperty";
+
+
+ //used by the annotations map to uniquely identify schema elements that need to be annotated
+ //and to store the corresponding annotations in a map
+ public static final String SCHEMA = "schema";
+ public static final String ELEMENT = "element";
+ public static final String COMPLEX_TYPE = "complexType";
+ public static final String SIMPLE_TYPE = "simpleType";
+ public static final String ATTRIBUTE = "attribute";
+
+ public static String makeAnnotationMapKey(String namespace, String schemaElementType, String nameAttrValue)
+ {
+ return namespace + schemaElementType + nameAttrValue;
+ }
+}
diff --git a/branches/sdo-java-M2/sdo/impl/src/main/java/org/apache/tuscany/sdo/helper/SDOExtendedMetaDataImpl.java b/branches/sdo-java-M2/sdo/impl/src/main/java/org/apache/tuscany/sdo/helper/SDOExtendedMetaDataImpl.java
new file mode 100644
index 0000000000..b8bbfcb2d5
--- /dev/null
+++ b/branches/sdo-java-M2/sdo/impl/src/main/java/org/apache/tuscany/sdo/helper/SDOExtendedMetaDataImpl.java
@@ -0,0 +1,99 @@
+/**
+ *
+ * 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.helper;
+
+import java.util.ArrayList;
+import java.util.List;
+import java.util.Map;
+import java.util.StringTokenizer;
+
+import org.apache.tuscany.sdo.SDOExtendedMetaData;
+import org.eclipse.emf.ecore.EAnnotation;
+import org.eclipse.emf.ecore.EModelElement;
+import org.eclipse.emf.ecore.EPackage.Registry;
+import org.eclipse.emf.ecore.util.BasicExtendedMetaData;
+
+public class SDOExtendedMetaDataImpl
+ extends BasicExtendedMetaData
+ implements SDOExtendedMetaData {
+
+
+
+ public SDOExtendedMetaDataImpl() {
+ super();
+ }
+
+ public SDOExtendedMetaDataImpl(Registry registry) {
+ super(registry);
+ }
+
+ public SDOExtendedMetaDataImpl(String annotationURI, Registry registry, Map annotationMap) {
+ super(annotationURI, registry, annotationMap);
+ }
+
+ public SDOExtendedMetaDataImpl(String annotationURI, Registry registry) {
+ super(annotationURI, registry);
+ }
+
+ /**
+ * Returns the listing of alias names as specified by the sdo:aliasNames
+ * property.
+ */
+ public List getAliasNames(EModelElement modelElement) {
+ EAnnotation eAnnotation = getAnnotation(modelElement, false);
+ List list = null;
+ if (eAnnotation != null) {
+ String aliasNames = (String)eAnnotation.getDetails().get("aliasNames");
+ if (aliasNames != null) {
+ list = new ArrayList();
+ StringTokenizer st = new StringTokenizer(aliasNames, " ");
+ while (st.hasMoreTokens()) {
+ String t = st.nextToken();
+ list.add(t);
+ }
+ }
+ }
+ return list;
+ }
+
+
+ public void setAliasNames(EModelElement modelElement, List aliasNames) {
+ if (aliasNames == null || aliasNames.isEmpty()) {
+ setAliasNames(modelElement, (String)null);
+ } else {
+ StringBuffer buf = new StringBuffer();
+ for (int n = 0; n < aliasNames.size(); n++) {
+ String name = (String) aliasNames.get(n);
+ buf.append(name);
+ buf.append(" ");
+ }
+ setAliasNames(modelElement, buf.toString());
+ }
+ }
+
+ /**
+ * Adds an alias name per sdo:aliasName
+ */
+ public void setAliasNames(EModelElement modelElement, String aliasNames) {
+ EAnnotation eAnnotation = getAnnotation(modelElement, true);
+ eAnnotation.getDetails().put("aliasNames", aliasNames);
+ }
+
+}
diff --git a/branches/sdo-java-M2/sdo/impl/src/main/java/org/apache/tuscany/sdo/helper/SDOXSDEcoreBuilder.java b/branches/sdo-java-M2/sdo/impl/src/main/java/org/apache/tuscany/sdo/helper/SDOXSDEcoreBuilder.java
new file mode 100644
index 0000000000..9ec309b547
--- /dev/null
+++ b/branches/sdo-java-M2/sdo/impl/src/main/java/org/apache/tuscany/sdo/helper/SDOXSDEcoreBuilder.java
@@ -0,0 +1,458 @@
+/**
+ *
+ * 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.helper;
+
+import java.util.ArrayList;
+import java.util.Collections;
+import java.util.Iterator;
+import java.util.List;
+
+import org.apache.tuscany.sdo.SDOExtendedMetaData;
+import org.apache.tuscany.sdo.model.ModelPackage;
+import org.apache.tuscany.sdo.util.SDOUtil;
+import org.eclipse.emf.common.util.URI;
+import org.eclipse.emf.ecore.EClass;
+import org.eclipse.emf.ecore.EClassifier;
+import org.eclipse.emf.ecore.EDataType;
+import org.eclipse.emf.ecore.EEnum;
+import org.eclipse.emf.ecore.EStructuralFeature;
+import org.eclipse.emf.ecore.util.ExtendedMetaData;
+import org.eclipse.xsd.XSDComplexTypeDefinition;
+import org.eclipse.xsd.XSDComponent;
+import org.eclipse.xsd.XSDConcreteComponent;
+import org.eclipse.xsd.XSDFeature;
+import org.eclipse.xsd.XSDNamedComponent;
+import org.eclipse.xsd.XSDSchema;
+import org.eclipse.xsd.XSDSimpleTypeDefinition;
+import org.eclipse.xsd.XSDTypeDefinition;
+import org.eclipse.xsd.ecore.XSDEcoreBuilder;
+import org.w3c.dom.Element;
+
+/**
+ * TODO:
+ * - Implement support for the SDO XSD Schema annotations
+ * - Override the default ecore type mappings
+ *
+ * DONE:
+ * - Override the default XSDEcoreBuilder name mangling
+ */
+public class SDOXSDEcoreBuilder extends XSDEcoreBuilder
+{
+ public SDOXSDEcoreBuilder(ExtendedMetaData extendedMetaData)
+ {
+ super(extendedMetaData);
+ populateTypeToTypeObjectMap(ModelPackage.eINSTANCE);
+ }
+
+ /**
+ * Overrides method in EMF. This will cause the SDO Properties to be in the
+ * order in which the Attributes appeared in the XSD.
+ */
+ protected boolean useSortedAttributes()
+ {
+ return false;
+ }
+
+ public EClassifier getEClassifier(XSDTypeDefinition xsdTypeDefinition) {
+ EClassifier eClassifier = null;
+ if (rootSchema.getSchemaForSchemaNamespace().equals(xsdTypeDefinition.getTargetNamespace())) {
+ eClassifier =
+ getBuiltInEClassifier(
+ xsdTypeDefinition.getURI(),
+ xsdTypeDefinition.getName());
+ } else {
+ eClassifier = super.getEClassifier(xsdTypeDefinition);
+ }
+ return eClassifier;
+ }
+
+ public EDataType getEDataType(XSDSimpleTypeDefinition xsdSimpleTypeDefinition) {
+ EDataType eClassifier = null;
+ if (rootSchema.getSchemaForSchemaNamespace().equals(xsdSimpleTypeDefinition.getTargetNamespace())) {
+ eClassifier =
+ (EDataType)getBuiltInEClassifier(
+ xsdSimpleTypeDefinition.getURI(),
+ xsdSimpleTypeDefinition.getName());
+ } else {
+ eClassifier = super.getEDataType(xsdSimpleTypeDefinition);
+ }
+ return (EDataType)eClassifier;
+ }
+
+ protected EClassifier getBuiltInEClassifier(String namespace, String name)
+ {
+ EClassifier eClassifier = (EClassifier)SDOUtil.getXSDSDOType(name);
+ if (eClassifier == null) {
+ eClassifier = super.getBuiltInEClassifier(namespace, name);
+ }
+ return eClassifier;
+ }
+
+ public EClass computeEClass(XSDComplexTypeDefinition xsdComplexTypeDefinition) {
+ EClass eclass = super.computeEClass(xsdComplexTypeDefinition);
+ String aliasNames = getEcoreAttribute(xsdComplexTypeDefinition.getElement(), "aliasName");
+ if (aliasNames != null) {
+ SDOExtendedMetaData.INSTANCE.setAliasNames(eclass, aliasNames);
+ }
+ return eclass;
+ }
+
+ protected EClassifier computeEClassifier(XSDTypeDefinition xsdTypeDefinition) {
+ EClassifier eclassifier = super.computeEClassifier(xsdTypeDefinition);
+ EClassifier etype = (EClassifier) typeToTypeObjectMap.get(eclassifier);
+ String aliasNames = getEcoreAttribute(xsdTypeDefinition.getElement(), "aliasName");
+ if (aliasNames != null) {
+ SDOExtendedMetaData.INSTANCE.setAliasNames(eclassifier, aliasNames);
+ if (etype != null) {
+ SDOExtendedMetaData.INSTANCE.setAliasNames(etype, aliasNames);
+ }
+ }
+ return eclassifier;
+ }
+
+ protected EDataType computeEDataType(XSDSimpleTypeDefinition xsdSimpleTypeDefinition) {
+ EDataType edatatype = super.computeEDataType(xsdSimpleTypeDefinition);
+ String aliasNames = getEcoreAttribute(xsdSimpleTypeDefinition.getElement(), "aliasName");
+ if (aliasNames != null) {
+ SDOExtendedMetaData.INSTANCE.setAliasNames(edatatype, aliasNames);
+ }
+ return edatatype;
+ }
+
+ protected EEnum computeEEnum(XSDSimpleTypeDefinition xsdSimpleTypeDefinition) {
+ return null;
+ }
+
+ protected EStructuralFeature createFeature(EClass eClass, String name, EClassifier type, XSDComponent xsdComponent, int minOccurs, int maxOccurs) {
+ EStructuralFeature feature =
+ super.createFeature(eClass, name, type, xsdComponent, minOccurs, maxOccurs);
+ feature.setName(name); // this is needed because super.createFeature() does EMF name mangling (toLower)
+ if (xsdComponent != null) {
+ String aliasNames = getEcoreAttribute(xsdComponent.getElement(), "aliasName");
+ if (aliasNames != null) {
+ SDOExtendedMetaData.INSTANCE.setAliasNames(feature, aliasNames);
+ }
+ }
+ return feature;
+ }
+
+ protected String getInstanceClassName(XSDTypeDefinition typeDefinition, EDataType baseEDataType) {
+ String name = getEcoreAttribute(typeDefinition, "extendedInstanceClass");
+ return (name != null) ? name : super.getInstanceClassName(typeDefinition, baseEDataType);
+ }
+
+ protected String getEcoreAttribute(Element element, String attribute)
+ {
+ String sdoAttribute = null;
+
+ if ("name".equals(attribute))
+ sdoAttribute = "name";
+ else if ("opposite".equals(attribute))
+ sdoAttribute = "oppositeProperty";
+ else if ("mixed".equals(attribute))
+ sdoAttribute = "sequence";
+ else if ("string".equals(attribute))
+ sdoAttribute = "string";
+ else if ("changeable".equals(attribute))
+ sdoAttribute = "readOnly";
+ else if ("aliasName".equals(attribute))
+ sdoAttribute = "aliasName";
+
+ if (sdoAttribute != null)
+ {
+ String value =
+ element != null && element.hasAttributeNS("commonj.sdo/xml", sdoAttribute) ?
+ element.getAttributeNS("commonj.sdo/xml", sdoAttribute) :
+ null;
+ if ("changeable".equals(attribute)) {
+ if ("true".equals(value)) value = "false";
+ else if ("false".equals(value)) value = "true";
+ }
+ return value;
+ }
+
+ if ("package".equals(attribute))
+ sdoAttribute = "package";
+ else if ("instanceClass".equals(attribute))
+ sdoAttribute = "instanceClass";
+ else if ("extendedInstanceClass".equals(attribute))
+ sdoAttribute = "extendedInstanceClass";
+ else if ("nestedInterfaces".equals(attribute))
+ sdoAttribute = "nestedInterfaces";
+
+ if (sdoAttribute != null)
+ {
+ return
+ element != null && element.hasAttributeNS("commonj.sdo/java", sdoAttribute) ?
+ element.getAttributeNS("commonj.sdo/java", sdoAttribute) :
+ null;
+ }
+
+ return super.getEcoreAttribute(element, attribute);
+ }
+
+ /*
+ protected String getEcoreAttribute(XSDConcreteComponent xsdConcreteComponent, String attribute)
+ {
+ String value = super.getEcoreAttribute(xsdConcreteComponent, attribute);
+ if ("package".equals(attribute) && value == null)
+ {
+ XSDSchema xsdSchema = (XSDSchema)xsdConcreteComponent;
+ value = getDefaultPackageName(xsdSchema.getTargetNamespace());
+ }
+ return value;
+ }
+ */
+
+ protected XSDTypeDefinition getEcoreTypeQNameAttribute(XSDConcreteComponent xsdConcreteComponent, String attribute)
+ {
+ if (xsdConcreteComponent == null) return null;
+ String sdoAttribute = null;
+
+ if ("reference".equals(attribute)) sdoAttribute = "propertyType";
+ if ("dataType".equals(attribute)) sdoAttribute = "dataType";
+
+ if (sdoAttribute != null)
+ {
+ Element element = xsdConcreteComponent.getElement();
+ return element == null ? null : getEcoreTypeQNameAttribute(xsdConcreteComponent, element, "commonj.sdo/xml", sdoAttribute);
+ }
+
+ return super.getEcoreTypeQNameAttribute(xsdConcreteComponent, attribute);
+ }
+
+ /**
+ * Override default EMF behavior so that the name is not mangled.
+ */
+ protected String validName(String name, int casing, String prefix) {
+ return name;
+ }
+
+ /**
+ * Override default EMF name mangling for anonymous types (simple and complex)
+ */
+ protected String validAliasName(XSDTypeDefinition xsdTypeDefinition, boolean isUpperCase) {
+ return getAliasName(xsdTypeDefinition);
+ }
+
+ protected String getAliasName(XSDNamedComponent xsdNamedComponent) {
+ String result = xsdNamedComponent.getName();
+ if (result == null)
+ {
+ XSDConcreteComponent container = xsdNamedComponent.getContainer();
+ if (container instanceof XSDNamedComponent)
+ {
+ result = getAliasName((XSDNamedComponent)container);
+ }
+ }
+ return result;
+ }
+
+ protected XSDTypeDefinition getEffectiveTypeDefinition(XSDComponent xsdComponent, XSDFeature xsdFeature) {
+ XSDTypeDefinition typeDef = getEcoreTypeQNameAttribute(xsdComponent, "dataType");
+
+ String isString = getEcoreAttribute(xsdComponent, xsdFeature, "string");
+ if ("true".equalsIgnoreCase(isString)) {
+ typeDef =
+ xsdFeature.resolveSimpleTypeDefinition(rootSchema.getSchemaForSchemaNamespace(), "string");
+ }
+ if (typeDef == null)
+ typeDef = xsdFeature.getType();
+ return typeDef;
+ }
+
+ /**
+ * Override EMF algorithm.
+ */
+ public String qualifiedPackageName(String namespace)
+ {
+ return getDefaultPackageName(namespace);
+ }
+
+ //Code below here to provide common URI to java packagname
+
+ public static String uncapNameStatic(String name)
+ {
+ if (name.length() == 0)
+ {
+ return name;
+ }
+ else
+ {
+ String lowerName = name.toLowerCase();
+ int i;
+ for (i = 0; i < name.length(); i++)
+ {
+ if (name.charAt(i) == lowerName.charAt(i))
+ {
+ break;
+ }
+ }
+ if (i > 1 && i < name.length() && !Character.isDigit(name.charAt(i)))
+ {
+ --i;
+ }
+ return name.substring(0, i).toLowerCase() + name.substring(i);
+ }
+ }
+
+ protected static String validNameStatic(String name, int casing, String prefix)
+ {
+ List parsedName = parseNameStatic(name, '_');
+ StringBuffer result = new StringBuffer();
+ for (Iterator i = parsedName.iterator(); i.hasNext(); )
+ {
+ String nameComponent = (String)i.next();
+ if (nameComponent.length() > 0)
+ {
+ if (result.length() > 0 || casing == UPPER_CASE)
+ {
+ result.append(Character.toUpperCase(nameComponent.charAt(0)));
+ result.append(nameComponent.substring(1));
+ }
+ else
+ {
+ result.append(nameComponent);
+ }
+ }
+ }
+
+ return
+ result.length() == 0 ?
+ prefix :
+ Character.isJavaIdentifierStart(result.charAt(0)) ?
+ casing == LOWER_CASE ?
+ uncapNameStatic(result.toString()) :
+ result.toString() :
+ prefix + result;
+ }
+
+ protected static List parseNameStatic(String sourceName, char separator)
+ {
+ List result = new ArrayList();
+ if (sourceName != null)
+ {
+ StringBuffer currentWord = new StringBuffer();
+ boolean lastIsLower = false;
+ for (int index = 0, length = sourceName.length(); index < length; ++index)
+ {
+ char curChar = sourceName.charAt(index);
+ if (!Character.isJavaIdentifierPart(curChar))
+ {
+ curChar = separator;
+ }
+ if (Character.isUpperCase(curChar) || (!lastIsLower && Character.isDigit(curChar)) || curChar == separator)
+ {
+ if (lastIsLower && currentWord.length() > 1 || curChar == separator && currentWord.length() > 0)
+ {
+ result.add(currentWord.toString());
+ currentWord = new StringBuffer();
+ }
+ lastIsLower = false;
+ }
+ else
+ {
+ if (!lastIsLower)
+ {
+ int currentWordLength = currentWord.length();
+ if (currentWordLength > 1)
+ {
+ char lastChar = currentWord.charAt(--currentWordLength);
+ currentWord.setLength(currentWordLength);
+ result.add(currentWord.toString());
+ currentWord = new StringBuffer();
+ currentWord.append(lastChar);
+ }
+ }
+ lastIsLower = true;
+ }
+
+ if (curChar != separator)
+ {
+ currentWord.append(curChar);
+ }
+ }
+
+ result.add(currentWord.toString());
+ }
+ return result;
+ }
+
+ public static String getDefaultPackageName(String targetNamespace)
+ {
+ if (targetNamespace == null)
+ return null;
+
+ URI uri = URI.createURI(targetNamespace);
+ List parsedName;
+ if (uri.isHierarchical())
+ {
+ String host = uri.host();
+ if (host != null && host.startsWith("www."))
+ {
+ host = host.substring(4);
+ }
+ parsedName = parseNameStatic(host, '.');
+ Collections.reverse(parsedName);
+ if (!parsedName.isEmpty())
+ {
+ parsedName.set(0, ((String)parsedName.get(0)).toLowerCase());
+ }
+
+ parsedName.addAll(parseNameStatic(uri.trimFileExtension().path(), '/'));
+ }
+ else
+ {
+ String opaquePart = uri.opaquePart();
+ int index = opaquePart.indexOf(":");
+ if (index != -1 && "urn".equalsIgnoreCase(uri.scheme()))
+ {
+ parsedName = parseNameStatic(opaquePart.substring(0, index), '-');
+ if (parsedName.size() > 0 && DOMAINS.contains(parsedName.get(parsedName.size() - 1)))
+ {
+ Collections.reverse(parsedName);
+ parsedName.set(0, ((String)parsedName.get(0)).toLowerCase());
+ }
+ parsedName.addAll(parseNameStatic(opaquePart.substring(index + 1), '/'));
+ }
+ else
+ {
+ parsedName = parseNameStatic(opaquePart, '/');
+ }
+ }
+
+ StringBuffer qualifiedPackageName = new StringBuffer();
+ for (Iterator i = parsedName.iterator(); i.hasNext(); )
+ {
+ String packageName = (String)i.next();
+ if (packageName.length() > 0)
+ {
+ if (qualifiedPackageName.length() > 0)
+ {
+ qualifiedPackageName.append('.');
+ }
+ qualifiedPackageName.append(validNameStatic(packageName, LOWER_CASE,"_"));
+ }
+ }
+
+ return qualifiedPackageName.toString().toLowerCase(); //make sure it's lower case .. we can't work with Axis if not.
+ }
+
+}
diff --git a/branches/sdo-java-M2/sdo/impl/src/main/java/org/apache/tuscany/sdo/helper/SchemaBuilder.java b/branches/sdo-java-M2/sdo/impl/src/main/java/org/apache/tuscany/sdo/helper/SchemaBuilder.java
new file mode 100644
index 0000000000..1597d0bd9e
--- /dev/null
+++ b/branches/sdo-java-M2/sdo/impl/src/main/java/org/apache/tuscany/sdo/helper/SchemaBuilder.java
@@ -0,0 +1,786 @@
+/**
+ *
+ * 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.helper;
+
+import java.util.Hashtable;
+import java.util.Iterator;
+import java.util.List;
+import java.util.Locale;
+import java.util.Map;
+import java.util.Vector;
+
+import javax.xml.namespace.QName;
+
+import org.apache.tuscany.sdo.util.SDOUtil;
+import org.eclipse.xsd.XSDAttributeDeclaration;
+import org.eclipse.xsd.XSDAttributeUse;
+import org.eclipse.xsd.XSDComplexTypeDefinition;
+import org.eclipse.xsd.XSDCompositor;
+import org.eclipse.xsd.XSDConstraint;
+import org.eclipse.xsd.XSDDerivationMethod;
+import org.eclipse.xsd.XSDElementDeclaration;
+import org.eclipse.xsd.XSDFactory;
+import org.eclipse.xsd.XSDForm;
+import org.eclipse.xsd.XSDImport;
+import org.eclipse.xsd.XSDInclude;
+import org.eclipse.xsd.XSDModelGroup;
+import org.eclipse.xsd.XSDParticle;
+import org.eclipse.xsd.XSDProcessContents;
+import org.eclipse.xsd.XSDSchema;
+import org.eclipse.xsd.XSDSchemaContent;
+import org.eclipse.xsd.XSDSimpleTypeDefinition;
+import org.eclipse.xsd.XSDTypeDefinition;
+import org.eclipse.xsd.XSDWildcard;
+
+import commonj.sdo.Property;
+import commonj.sdo.Type;
+import commonj.sdo.helper.XSDHelper;
+
+public class SchemaBuilder extends SDOAnnotations
+{
+ public static final String DEFAULT_SCHEMA_LOCATION = "";
+ public static final String NAME_SPACE_PREFIX = "stn_";
+ private static int prefixCount = 1;
+
+ //public static final String MIXED = "mixed";
+ //public static final String GROUP = "group";
+ public static final String EFEATURE_MAP_ENTRY = "EFeatureMapEntry";
+
+ private Map schemaMap = null;
+ protected Map targetNamespacePrefixMap = new Hashtable();
+ protected Map schemaLocationMap = null;
+ protected TypeTable typeTable = null;
+ protected XSDFactory xsdFactory = XSDFactory.eINSTANCE;
+
+
+ protected SchemaBuilder(Map schemaMap,
+ Map nsPrefixMap,
+ TypeTable typeTable,
+ Map schemaLocMap )
+ {
+ this.schemaMap = schemaMap;
+ this.targetNamespacePrefixMap = nsPrefixMap;
+ this.typeTable = typeTable;
+ this.schemaLocationMap = schemaLocMap;
+ }
+
+
+
+
+ private QName addAttribute2ComplexType(String targetNamespace,
+ XSDComplexTypeDefinition complexType,
+ Property aProperty)
+ {
+ QName attributeSchemaType = null;
+ String prefix = null;
+
+ try
+ {
+ attributeSchemaType = buildSchema(aProperty.getType());
+ }
+ catch ( IllegalArgumentException e )
+ {
+ //schema cannot be generated for this type as there exists an xsd already
+ //so include that original XSD
+ attributeSchemaType = new QName(aProperty.getType().getURI(),
+ aProperty.getType().getName(),
+ generatePrefix());
+ if ( aProperty.getType().isDataType() )
+ {
+ typeTable.addSimpleSchemaType(aProperty.getType().getName(), attributeSchemaType);
+
+ XSDSimpleTypeDefinition simpleType = xsdFactory.createXSDSimpleTypeDefinition();
+ simpleType.setName(aProperty.getType().getName());
+ simpleType.setTargetNamespace(aProperty.getType().getURI());
+ typeTable.addXSDTypeDef(attributeSchemaType.getNamespaceURI(),
+ attributeSchemaType.getLocalPart(),
+ simpleType);
+ }
+ else
+ {
+ typeTable.addComplexSchemaType(aProperty.getType().getURI(),
+ aProperty.getType().getName(),
+ attributeSchemaType);
+
+ XSDComplexTypeDefinition extComplexType = xsdFactory.createXSDComplexTypeDefinition();
+ extComplexType.setName(aProperty.getType().getName());
+ extComplexType.setTargetNamespace(aProperty.getType().getURI());
+ typeTable.addXSDTypeDef(attributeSchemaType.getNamespaceURI(),
+ attributeSchemaType.getLocalPart(),
+ extComplexType);
+ }
+ includeExtXSD(aProperty.getType());
+ }
+ //ensure than an import is done rightaway so that the right prefixes will be used by the
+ //attribute whose type is set as 'this type'. Otherwise when setting the type for the attribute
+ //there will be a duplicate prefix (like Q1 or Q2... ) that will be created
+ prefix = addImports((XSDSchema)schemaMap.get(targetNamespace), attributeSchemaType);
+
+ XSDAttributeDeclaration attribute = xsdFactory.createXSDAttributeDeclaration();
+ attribute.setName(aProperty.getName());
+ XSDAttributeUse orderDateAttributeUse = xsdFactory.createXSDAttributeUse();
+ orderDateAttributeUse.setContent(attribute);
+ complexType.getAttributeContents().add(orderDateAttributeUse);
+ attribute.updateElement();
+
+ if ( aProperty.getType().isDataType() )
+ {
+ attribute.setTypeDefinition((XSDSimpleTypeDefinition)typeTable.getXSDTypeDef(attributeSchemaType.getNamespaceURI(),
+ attributeSchemaType.getLocalPart()));
+
+ }
+ else
+ {
+ attribute.setTypeDefinition((XSDSimpleTypeDefinition)typeTable.getXSDTypeDef(
+ typeTable.getSimpleSchemaTypeName("URI").getNamespaceURI(),
+ typeTable.getSimpleSchemaTypeName("URI").getLocalPart()));
+
+ }
+
+ if ( aProperty.getDefault() != null )
+ {
+ attribute.setConstraint(XSDConstraint.DEFAULT_LITERAL);
+ attribute.setLexicalValue(aProperty.getDefault().toString());
+ }
+
+ addAnnotations(attribute, aProperty );
+ if ( !aProperty.getType().isDataType() )
+ {
+ String value = prefix + COLON + attributeSchemaType.getLocalPart();
+ attribute.getElement().setAttribute(PROPERTY_TYPE, value);
+ }
+
+ return attributeSchemaType;
+ }
+
+ private QName addElement2ComplexType(String targetNamespace,
+ XSDComplexTypeDefinition complexType,
+ Property aProperty)
+ {
+ String prefix = null;
+ QName elementSchemaType = null;
+ try
+ {
+ elementSchemaType = buildSchema(aProperty.getType());
+ }
+ catch ( IllegalArgumentException e )
+ {
+ //schema cannot be generated for this type as there exists an xsd already
+ //so include that original XSD
+ elementSchemaType = new QName(aProperty.getType().getURI(),
+ aProperty.getType().getName(),
+ generatePrefix());
+ if ( aProperty.getType().isDataType() )
+ {
+ typeTable.addSimpleSchemaType(aProperty.getType().getName(), elementSchemaType);
+
+ XSDSimpleTypeDefinition simpleType = xsdFactory.createXSDSimpleTypeDefinition();
+ simpleType.setName(aProperty.getType().getName());
+ simpleType.setTargetNamespace(aProperty.getType().getURI());
+ typeTable.addXSDTypeDef(elementSchemaType.getNamespaceURI(),
+ elementSchemaType.getLocalPart(),
+ simpleType);
+ }
+ else
+ {
+ typeTable.addComplexSchemaType(aProperty.getType().getURI(),
+ aProperty.getType().getName(),
+ elementSchemaType);
+ XSDComplexTypeDefinition extComplexType = xsdFactory.createXSDComplexTypeDefinition();
+ extComplexType.setName(aProperty.getType().getName());
+ extComplexType.setTargetNamespace(aProperty.getType().getURI());
+ typeTable.addXSDTypeDef(elementSchemaType.getNamespaceURI(),
+ elementSchemaType.getLocalPart(),
+ extComplexType);
+ }
+ includeExtXSD(aProperty.getType());
+ }
+
+ //ensure than an import is done rightaway so that the right prefixes will be used by the
+ //element whose type is set as 'this type'. Otherwise when setting the type for the element
+ //there will be a duplicate prefix (like Q1 or Q2... ) that will be created
+ prefix = addImports((XSDSchema)schemaMap.get(targetNamespace), elementSchemaType);
+
+ //XmlSchemaElement element = new XmlSchemaElement();
+ XSDElementDeclaration element = xsdFactory.createXSDElementDeclaration();
+ element.setName(aProperty.getName());
+
+ XSDParticle aParticle = xsdFactory.createXSDParticle();
+ aParticle.setContent(element);
+
+ ((XSDModelGroup)((XSDParticle)complexType.getContent()).getContent()).
+ getContents().add(aParticle);
+
+ element.updateElement();
+
+ if ( aProperty.isMany() )
+ {
+ aParticle.setMaxOccurs(-1);
+ aParticle.setMinOccurs(0);
+
+ }
+
+ if ( aProperty.isContainment() )
+ {
+ element.setTypeDefinition(typeTable.getXSDTypeDef(elementSchemaType.getNamespaceURI(),
+ elementSchemaType.getLocalPart()));
+ }
+ else
+ {
+ if ( !aProperty.getType().isDataType() )
+ {
+ QName qName = typeTable.getSimpleSchemaTypeName("URI");
+ element.setTypeDefinition(typeTable.getXSDTypeDef(qName.getNamespaceURI(),
+ qName.getLocalPart()));
+ }
+ }
+
+ addAnnotations(element, aProperty);
+ if ( !aProperty.isContainment() && !aProperty.getType().isDataType() )
+ {
+ String value = prefix + COLON + elementSchemaType.getLocalPart();
+ element.getElement().setAttribute(PROPERTY_TYPE, value);
+ }
+ return elementSchemaType;
+
+ }
+
+ private void addAnnotations(XSDSchemaContent xsdContent, Property aProperty)
+ {
+ if ( !aProperty.getAliasNames().isEmpty() )
+ {
+ addAliasNamesAnnotation(xsdContent, aProperty.getAliasNames());
+ }
+
+ if ( aProperty.isReadOnly() )
+ {
+ xsdContent.getElement().setAttribute(READ_ONLY, Boolean.toString(aProperty.isReadOnly()));
+ }
+
+ if ( aProperty.getOpposite() != null )
+ {
+ xsdContent.getElement().setAttribute(OPPOSITE_PROPERTY, aProperty.getOpposite().getName());
+ }
+ }
+
+
+ private QName buildComplexSchemaTypeContents(String targetNamespace,
+ XSDComplexTypeDefinition complexType,
+ Type dataType)
+ {
+ //clipProperties(dataType);
+ List properties = dataType.getDeclaredProperties();
+ Iterator iterator = properties.iterator();
+ Property aProperty;
+ QName propertySchemaTypeName = null;
+
+ while ( iterator.hasNext() )
+ {
+ aProperty = (Property)iterator.next();
+ if ( aProperty.isContainment() || aProperty.isMany() || !aProperty.getType().isDataType() )
+ {
+ propertySchemaTypeName = addElement2ComplexType(targetNamespace, complexType, aProperty);
+ }
+ else
+ {
+ propertySchemaTypeName = addAttribute2ComplexType(targetNamespace, complexType, aProperty);
+ }
+
+ /*if ( !EFEATURE_MAP_ENTRY.equals(aProperty.getType().getName()) )
+ {
+ addContents2ComplexType(targetNamespace, complexType, aProperty);
+ }*/
+ }
+
+ return propertySchemaTypeName;
+
+ }
+
+ public QName buildComplexSchemaType(Type dataType)
+ {
+ //this is called from buildSchema only if isXSD(dataType) is false
+ QName complexSchemaTypeName = null ;
+ if ( !dataType.isDataType() &&
+ (complexSchemaTypeName = typeTable.getComplexSchemaTypeName(dataType.getURI(), dataType.getName())) == null )
+ {
+ XSDSchema xmlSchema = getXmlSchema(dataType);
+ String targetNamespace = dataType.getURI();
+ String targetNamespacePrefix = (String)targetNamespacePrefixMap.get(targetNamespace);
+
+ complexSchemaTypeName = new QName(targetNamespace,
+ dataType.getName(),
+ targetNamespacePrefix);
+
+ XSDComplexTypeDefinition complexType = xsdFactory.createXSDComplexTypeDefinition();
+ complexType.setName(dataType.getName());
+ complexType.setTargetNamespace(targetNamespace);
+ complexType.setAbstract(dataType.isAbstract());
+
+ xmlSchema.getTypeDefinitions().add(complexType);
+ xmlSchema.getContents().add(complexType);
+
+ complexType.updateElement();
+
+ addAnnotations(complexType, dataType);
+
+ handleBaseExtn(xmlSchema, dataType, complexType);
+ handleSDOSequence(dataType, complexType);
+ handleSDOOpenType(dataType, complexType);
+
+ //add before constructing the contents because a content element could
+ //possibly be of type 'complexType'.
+ typeTable.addComplexSchemaType(dataType.getURI(), dataType.getName(), complexSchemaTypeName);
+ typeTable.addXSDTypeDef(dataType.getURI(), dataType.getName(), complexType);
+
+ //now compose the contents for this complex type
+ buildComplexSchemaTypeContents(targetNamespace, complexType, dataType);
+
+ //finally create a global element for this type
+ createGlobalElement(xmlSchema, complexType, complexSchemaTypeName);
+ }
+
+ return complexSchemaTypeName;
+ }
+
+ private void addAnnotations(XSDTypeDefinition xsdType, Type dataType)
+ {
+ if ( dataType.isAbstract() )
+ {
+ if ( xsdType instanceof XSDComplexTypeDefinition )
+ {
+ ((XSDComplexTypeDefinition)xsdType).setAbstract(dataType.isAbstract());
+ }
+ else
+ {
+ xsdType.getElement().setAttribute(ABSTRACT_TYPE,
+ Boolean.toString(dataType.isAbstract()));
+ }
+ }
+
+ //add alias names if it exists
+ addAliasNamesAnnotation(xsdType,
+ dataType.getAliasNames());
+
+ //add instanceClass annotation
+ if ( dataType.getInstanceClass() != null )
+ {
+ xsdType.getElement().setAttribute(INSTANCE_CLASS, dataType.getInstanceClass().getName());
+ }
+ }
+
+
+ private QName buildSimpleSchemaType(Type dataType)
+ {
+ QName simpleSchemaTypeName = null;
+ if ( dataType.isDataType() &&
+ (simpleSchemaTypeName = typeTable.getSimpleSchemaTypeName(dataType.getName()) ) == null )
+ {
+ XSDSchema xmlSchema = getXmlSchema(dataType);
+ XSDSimpleTypeDefinition simpleType = xsdFactory.createXSDSimpleTypeDefinition();
+ //set the name
+ simpleType.setName(dataType.getName());
+ simpleType.setTargetNamespace(dataType.getURI());
+ //set abstract=true if abstract
+ simpleSchemaTypeName = new QName(dataType.getURI(),
+ dataType.getName(),
+ (String)targetNamespacePrefixMap.get(dataType.getURI()));
+ xmlSchema.getContents().add(simpleType);
+ simpleType.updateElement();
+
+ addAnnotations(simpleType, dataType);
+
+ if ( !dataType.getBaseTypes().isEmpty() )
+ {
+ Type baseType = (Type)dataType.getBaseTypes().get(0);
+
+ QName baseSchemaType = null;
+
+ try
+ {
+ baseSchemaType = buildSchema(baseType);
+ }
+ catch ( IllegalArgumentException e )
+ {
+ //this means that the base type comes from a original xsd and hence not generated
+ baseSchemaType = new QName(baseType.getURI(),
+ baseType.getName(),
+ generatePrefix());
+
+ typeTable.addSimpleSchemaType(baseType.getName(), baseSchemaType);
+
+ XSDSimpleTypeDefinition baseTypeDef = xsdFactory.createXSDSimpleTypeDefinition();
+ baseTypeDef.setName(baseType.getName());
+ baseTypeDef.setTargetNamespace(baseType.getURI());
+ typeTable.addXSDTypeDef(baseType.getURI(), baseType.getName(), baseTypeDef);
+
+ //include external XSD locations
+ includeExtXSD(baseType);
+ }
+
+ simpleType.setBaseTypeDefinition((XSDSimpleTypeDefinition)typeTable.
+ getXSDTypeDef(baseSchemaType.getNamespaceURI(),baseSchemaType.getLocalPart()));
+ addImports(xmlSchema, baseSchemaType);
+ }
+
+
+ typeTable.addSimpleSchemaType(dataType.getName(), simpleSchemaTypeName);
+ typeTable.addXSDTypeDef(dataType.getURI(), dataType.getName(), simpleType);
+ }
+ return simpleSchemaTypeName;
+ }
+
+ private void includeExtXSD(Type dataType)
+ {
+ //now we know there is a type for which the xsd must come from outside
+ //create a schema for the namespace of this type and add an include in it for
+ //the xsd that is defined externally
+ XSDSchema xmlSchema = getXmlSchema(dataType);
+
+ //ideally there could be more than one external schema defintions for a namespace
+ //and hence schemalocations will be a list of locations
+ //List schemaLocations = (List)schemaLocationMap.get(dataType.getURI());
+
+ //since as per the specs the input to XSDHelper is a map of <String, String> allowing
+ //only one schemalocation for a namespace. So for now this single location will be
+ //picked up and put into a list
+ List schemaLocations = new Vector();
+ if ( schemaLocationMap.get(dataType.getURI()) != null )
+ {
+ schemaLocations.add(schemaLocationMap.get(dataType.getURI()));
+ }
+
+ if ( schemaLocations.size() <= 0 )
+ {
+ schemaLocations.add(DEFAULT_SCHEMA_LOCATION);
+ }
+
+ Object schemaContent = null;
+ Iterator includesIterator = xmlSchema.getContents().iterator();
+ Iterator schemaLocIterator = schemaLocations.iterator();
+ String aSchemaLocation = null;
+ boolean includeExists = false;
+ //include all external schema locations
+ while ( schemaLocIterator.hasNext() )
+ {
+ aSchemaLocation = (String)schemaLocIterator.next();
+ while ( includesIterator.hasNext() )
+ {
+ schemaContent = includesIterator.next();
+ if ( schemaContent instanceof XSDInclude )
+ {
+ if ( !includeExists && aSchemaLocation.equals(
+ ((XSDInclude)schemaContent).getSchemaLocation()
+ ))
+ {
+ includeExists = true;
+ }
+ }
+ }
+
+ if ( !includeExists )
+ {
+ XSDInclude includeElement = xsdFactory.createXSDInclude();
+ includeElement.setSchemaLocation(aSchemaLocation);
+ xmlSchema.getContents().add(0, includeElement);
+ }
+ }
+ }
+
+ protected QName buildSchema(Type dataType) throws IllegalArgumentException
+ {
+ QName schemaTypeName = null;
+
+ if ( dataType.isDataType() )
+ {
+ schemaTypeName = typeTable.getSimpleSchemaTypeName(dataType.getName());
+ }
+ else
+ {
+ schemaTypeName = typeTable.getComplexSchemaTypeName(dataType.getURI(), dataType.getName());
+ }
+
+ //attempt to generate only if we have not done it already..i.e the type is
+ //not found in the typetable
+ if ( schemaTypeName == null )
+ {
+ XSDHelper xsdHelper = SDOUtil.createXSDHelper(SDOUtil.createTypeHelper());
+
+ if ( !xsdHelper.isXSD( dataType ) )
+ {
+ if ( dataType.isDataType() )
+ {
+ schemaTypeName = buildSimpleSchemaType(dataType);
+ }
+ else
+ {
+ schemaTypeName = buildComplexSchemaType(dataType);
+ }
+ }
+ else
+ {
+ throw new IllegalArgumentException("Cannot generate XSD since SDO Type '" +
+ dataType.getName() + "' was orginally generated from XSD. Use original XSD");
+ }
+ }
+ return schemaTypeName;
+ }
+
+
+ private XSDSchema getXmlSchema(Type dataType)
+ {
+ XSDSchema xmlSchema = null;
+
+ if ((xmlSchema = (XSDSchema) schemaMap.get(dataType.getURI())) == null)
+ {
+ String targetNamespacePrefix = generatePrefix();
+
+ xmlSchema = xsdFactory.createXSDSchema();
+ xmlSchema.setTargetNamespace(dataType.getURI());
+ xmlSchema.setAttributeFormDefault(XSDForm.QUALIFIED_LITERAL);
+ xmlSchema.setElementFormDefault(XSDForm.QUALIFIED_LITERAL);
+
+ targetNamespacePrefixMap.put(dataType.getURI(), targetNamespacePrefix);
+ schemaMap.put(dataType.getURI(), xmlSchema);
+
+ xmlSchema.getQNamePrefixToNamespaceMap().put(TypeTable.XS_URI_PREFIX, TypeTable.XML_SCHEMA_URI);
+ xmlSchema.setSchemaForSchemaQNamePrefix(TypeTable.XS_URI_PREFIX);
+
+ xmlSchema.getQNamePrefixToNamespaceMap().put(targetNamespacePrefix, dataType.getURI());
+ //xmlSchema.setSchemaForSchemaQNamePrefix(targetNamespacePrefix);
+
+ addSDONamespaces(xmlSchema);
+ addPackageAnnotation(xmlSchema, dataType);
+ }
+ return xmlSchema;
+ }
+
+
+ private void addSDONamespaces(XSDSchema xmlSchema)
+ {
+ xmlSchema.getQNamePrefixToNamespaceMap().put(COMMONJ_SDO_NS_PREFIX, COMMONJ_SDO_NS);
+ //xmlSchema.setSchemaForSchemaQNamePrefix(COMMONJ_SDO_NS_PREFIX);
+
+ xmlSchema.getQNamePrefixToNamespaceMap().put(SDO_JAVA_NS_PREFIX, SDO_JAVA_NS);
+ //xmlSchema.setSchemaForSchemaQNamePrefix(SDO_JAVA_NS_PREFIX);
+ }
+
+
+ /**
+ * JAM convert first name of an attribute into UpperCase as an example if
+ * there is a instance variable called foo in a bean , then Jam give that as
+ * Foo so this method is to correct that error
+ *
+ * @param wrongName
+ * @return the right name, using english as the locale for case conversion
+ */
+ public static String getCorrectName(String wrongName)
+ {
+ if (wrongName.length() > 1) {
+ return wrongName.substring(0, 1).toLowerCase(Locale.ENGLISH)
+ + wrongName.substring(1, wrongName.length());
+ } else {
+ return wrongName.substring(0, 1).toLowerCase(Locale.ENGLISH);
+ }
+ }
+
+ private String addImports(XSDSchema xmlSchema, QName schemaTypeName)
+ {
+ String prefix = null;
+ Iterator iterator = xmlSchema.getQNamePrefixToNamespaceMap().keySet().iterator();
+ while ( iterator.hasNext() )
+ {
+ prefix = (String)iterator.next();
+
+ if ( schemaTypeName.getNamespaceURI().equals(
+ xmlSchema.getQNamePrefixToNamespaceMap().get(prefix)) )
+ {
+ return prefix;
+ }
+ }
+
+ //the following lines are executed only if a prefix was not found which implies that the
+ //schemaTypeName was not imported earlier and also it does not belong to the targetnamespace
+ XSDImport importElement = xsdFactory.createXSDImport();
+ importElement.setNamespace(schemaTypeName.getNamespaceURI());
+ xmlSchema.getContents().add(0, importElement);
+ prefix = schemaTypeName.getPrefix();
+ if ( prefix == null || prefix.length() <= 0 )
+ {
+ prefix = generatePrefix();
+ }
+ xmlSchema.getQNamePrefixToNamespaceMap().put(prefix, schemaTypeName.getNamespaceURI());
+
+ return prefix;
+ }
+
+ private void handleSDOSequence(Type datatype, XSDComplexTypeDefinition complexType)
+ {
+ if ( datatype.isSequenced() )
+ {
+ complexType.setMixed(true);
+ XSDModelGroup choice = xsdFactory.createXSDModelGroup();
+ choice.setCompositor(XSDCompositor.CHOICE_LITERAL);
+ XSDParticle aParticle = xsdFactory.createXSDParticle();
+ aParticle.setContent(choice);
+ aParticle.setMaxOccurs(-1);
+ complexType.setContent(aParticle);
+ }
+ else
+ {
+ //hack to handle group property as choice
+ /*if ( getPropertyStartsWithName(datatype.getDeclaredProperties(), GROUP).size() > 0 )
+ {
+ XmlSchemaChoice choice = new XmlSchemaChoice();
+ choice.setMaxOccurs(Long.MAX_VALUE);
+ complexType.setParticle(choice);
+ }
+ else*/
+ {
+ XSDModelGroup sequence = xsdFactory.createXSDModelGroup();
+ sequence.setCompositor(XSDCompositor.SEQUENCE_LITERAL);
+ XSDParticle aParticle = xsdFactory.createXSDParticle();
+ aParticle.setContent(sequence);
+ complexType.setContent(aParticle);
+ }
+ }
+ }
+
+ private void handleSDOOpenType(Type datatype, XSDComplexTypeDefinition complexType)
+ {
+ if ( datatype.isOpen() /*&&
+ getPropertyStartsWithName(datatype.getDeclaredProperties(), GROUP).size() <= 0 */)
+ {
+ XSDWildcard elementWildcard = xsdFactory.createXSDWildcard();
+ elementWildcard.getLexicalNamespaceConstraint().add("##other");
+ elementWildcard.setProcessContents(XSDProcessContents.LAX_LITERAL);
+ // Create a particle to hold the wildcard.
+ XSDParticle wildcardParticle = xsdFactory.createXSDParticle();
+ wildcardParticle.setContent(elementWildcard);
+ wildcardParticle.setMaxOccurs(-1);
+ ((XSDModelGroup)((XSDParticle)complexType.getContent()).getContent()).
+ getContents().add(wildcardParticle);
+
+ XSDWildcard attributeWildcard = xsdFactory.createXSDWildcard();
+ attributeWildcard.getLexicalNamespaceConstraint().add("##other");
+ attributeWildcard.setProcessContents(XSDProcessContents.LAX_LITERAL);
+ complexType.setAttributeWildcard(attributeWildcard);
+ }
+ }
+
+ private void handleBaseExtn(XSDSchema xmlSchema,
+ Type datatype,
+ XSDComplexTypeDefinition complexType)
+ {
+ if ( datatype.getBaseTypes().size() > 0 )
+ {
+ Type baseType = (Type)datatype.getBaseTypes().get(0);
+ QName baseSchemaType = null;
+
+ try
+ {
+ baseSchemaType = buildSchema(baseType);
+ }
+ catch ( IllegalArgumentException e )
+ {
+ //schema cannot be generated for this type as there exists an xsd already
+ //so include that original XSD
+ baseSchemaType = new QName(baseType.getURI(),
+ baseType.getName(),
+ generatePrefix());
+
+ XSDSimpleTypeDefinition baseTypeDef = xsdFactory.createXSDSimpleTypeDefinition();
+ baseTypeDef.setName(baseType.getName());
+ baseTypeDef.setTargetNamespace(baseType.getURI());
+ typeTable.addXSDTypeDef(baseType.getURI(), baseType.getName(), baseTypeDef);
+
+ includeExtXSD(baseType);
+ }
+
+ complexType.setDerivationMethod(XSDDerivationMethod.EXTENSION_LITERAL);
+
+ if ( baseType.isDataType() )
+ {
+ XSDSimpleTypeDefinition anonymousSimpleTypeDefinition
+ = xsdFactory.createXSDSimpleTypeDefinition();
+ anonymousSimpleTypeDefinition.setBaseTypeDefinition((XSDSimpleTypeDefinition)typeTable.
+ getXSDTypeDef(baseSchemaType.getNamespaceURI(),baseSchemaType.getLocalPart()));
+ complexType.setContent(anonymousSimpleTypeDefinition);
+ }
+ else
+ {
+ complexType.setBaseTypeDefinition((XSDSimpleTypeDefinition)typeTable.
+ getXSDTypeDef(baseSchemaType.getNamespaceURI(),baseSchemaType.getLocalPart()));
+
+ }
+
+ addImports(xmlSchema, baseSchemaType);
+ }
+ }
+
+ private String formGlobalElementName(String typeName)
+ {
+ String firstChar = typeName.substring(0,1);
+ return typeName.replaceFirst(firstChar, firstChar.toLowerCase());
+ }
+
+ private void createGlobalElement(XSDSchema xmlSchema,
+ XSDComplexTypeDefinition complexType,
+ QName schemaElementName )
+ {
+ XSDElementDeclaration globalElement = xsdFactory.createXSDElementDeclaration();
+ globalElement.setTargetNamespace(xmlSchema.getTargetNamespace());
+ globalElement.setName(formGlobalElementName(complexType.getName()));
+ globalElement.setTypeDefinition
+ (typeTable.getXSDTypeDef(schemaElementName.getNamespaceURI(),
+ schemaElementName.getLocalPart()));
+ xmlSchema.getContents().add(globalElement);
+ xmlSchema.getElementDeclarations().add(globalElement);
+ }
+
+ private void addAliasNamesAnnotation(XSDSchemaContent typeDef,
+ List aliasNames)
+ {
+ if ( !aliasNames.isEmpty() )
+ {
+ StringBuffer sb = new StringBuffer();
+ Iterator iterator = aliasNames.iterator();
+ while ( iterator.hasNext() )
+ {
+ sb.append(iterator.next());
+ }
+ typeDef.getElement().setAttribute(ALIAS_NAMES, sb.toString());
+ }
+ }
+
+ private void addPackageAnnotation(XSDSchema xmlSchema, Type dataType)
+ {
+ if ( dataType.getInstanceClass() != null )
+ {
+ xmlSchema.updateElement();
+ xmlSchema.getElement().setAttribute(JAVA_PACKAGE,
+ dataType.getInstanceClass().getPackage().getName());
+ }
+ }
+
+ private String generatePrefix()
+ {
+ return NAME_SPACE_PREFIX + prefixCount++;
+ }
+}
diff --git a/branches/sdo-java-M2/sdo/impl/src/main/java/org/apache/tuscany/sdo/helper/TypeHelperImpl.java b/branches/sdo-java-M2/sdo/impl/src/main/java/org/apache/tuscany/sdo/helper/TypeHelperImpl.java
new file mode 100644
index 0000000000..eee90b866f
--- /dev/null
+++ b/branches/sdo-java-M2/sdo/impl/src/main/java/org/apache/tuscany/sdo/helper/TypeHelperImpl.java
@@ -0,0 +1,286 @@
+/**
+ *
+ * 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.helper;
+
+
+import java.util.ArrayList;
+import java.util.Iterator;
+import java.util.List;
+
+import org.apache.tuscany.sdo.model.impl.ModelPackageImpl;
+import org.apache.tuscany.sdo.model.java.impl.JavaPackageImpl;
+import org.apache.tuscany.sdo.util.SDOUtil;
+import org.apache.tuscany.sdo.util.metadata.impl.MetadataPackageImpl;
+import org.eclipse.emf.ecore.EClassifier;
+import org.eclipse.emf.ecore.EPackage;
+import org.eclipse.emf.ecore.util.ExtendedMetaData;
+
+import commonj.sdo.DataObject;
+import commonj.sdo.Property;
+import commonj.sdo.Type;
+import commonj.sdo.helper.TypeHelper;
+
+
+/**
+ * Look up a Type given the uri and typeName or interfaceClass.
+ * SDO Types are available through the
+ * getType("commonj.sdo", typeName) method.
+ * Defines Types from DataObjects.
+ */
+public class TypeHelperImpl implements TypeHelper
+{
+ protected ExtendedMetaData extendedMetaData;
+
+ public ExtendedMetaData getExtendedMetaData()
+ {
+ return extendedMetaData;
+ }
+
+ public TypeHelperImpl(ExtendedMetaData extendedMetaData)
+ {
+ this.extendedMetaData = extendedMetaData;
+
+ // Register the standard (predefined) SDO types
+ ModelPackageImpl.init();
+ JavaPackageImpl.init();
+ MetadataPackageImpl.init();
+ }
+
+ public Type getType(String uri, String typeName)
+ {
+ EPackage ePackage = extendedMetaData.getPackage(uri);
+ if (ePackage != null)
+ {
+ EClassifier eClassifier = ePackage.getEClassifier(typeName);
+ if (eClassifier == null)
+ {
+ eClassifier = extendedMetaData.getType(ePackage, typeName);
+ }
+ return (Type)eClassifier;
+ }
+ return null;
+ }
+
+ public Type getType(Class interfaceClass)
+ {
+ Type type = SDOUtil.getJavaSDOType(interfaceClass);
+ if (type != null)
+ {
+ return type;
+ }
+
+ //TODO more efficient implementation ... this is a really bad one!
+ for (Iterator iter = EPackage.Registry.INSTANCE.values().iterator(); iter.hasNext(); )
+ {
+ Object value = iter.next();
+ if (value instanceof EPackage)
+ {
+ EPackage ePackage = (EPackage)value;
+ for (Iterator iter2 = ePackage.getEClassifiers().iterator(); iter2.hasNext(); )
+ {
+ EClassifier eClassifier = (EClassifier)iter2.next();
+ if (eClassifier.getInstanceClass() == interfaceClass)
+ {
+ return (Type)eClassifier;
+ }
+ }
+ }
+ }
+
+ return null;
+ }
+
+ public Type define(DataObject type)
+ {
+ if (!(type instanceof org.apache.tuscany.sdo.model.Type))
+ throw new IllegalArgumentException();
+ org.apache.tuscany.sdo.model.Type modeledType = (org.apache.tuscany.sdo.model.Type)type;
+
+ boolean isDataType = modeledType.isDataType();
+ Type definedType = SDOUtil.createType(this, modeledType.getUri(), modeledType.getName(), isDataType);
+ if (definedType == null)
+ {
+ // If type already defined, return the existing Type.
+ return getType(modeledType.getUri(), modeledType.getName());
+ }
+
+ SDOUtil.setJavaClassName(definedType, modeledType.getInstanceClassName());
+
+ if (!isDataType)
+ {
+ SDOUtil.setSequenced(definedType, modeledType.isSequenced());
+ SDOUtil.setOpen(definedType, modeledType.isOpen());
+ SDOUtil.setAbstract(definedType, modeledType.isAbstract());
+
+ for (Iterator iter = modeledType.getBaseType().iterator(); iter.hasNext(); )
+ {
+ Type baseType = getDefinedType((org.apache.tuscany.sdo.model.Type)iter.next());
+ SDOUtil.addBaseType(definedType, baseType);
+ }
+
+ for (Iterator iter = modeledType.getAliasName().iterator(); iter.hasNext(); )
+ {
+ String aliasName = (String)iter.next();
+ SDOUtil.addAliasName(definedType, aliasName);
+ }
+
+ for (Iterator iter = modeledType.getProperty().iterator(); iter.hasNext(); )
+ {
+ org.apache.tuscany.sdo.model.Property modeledProperty = (org.apache.tuscany.sdo.model.Property)iter.next();
+
+ Type propertyType = getDefinedType(modeledProperty.getType_());
+ Property definedProperty = SDOUtil.createProperty(definedType, modeledProperty.getName(), propertyType);
+
+ SDOUtil.setMany(definedProperty, modeledProperty.isMany());
+ SDOUtil.setDefault(definedProperty, modeledProperty.getDefault_());
+ SDOUtil.setReadOnly(definedProperty, modeledProperty.isReadOnly());
+
+ for (Iterator iter2 = modeledProperty.getAliasName().iterator(); iter2.hasNext(); )
+ {
+ String aliasName = (String)iter2.next();
+ SDOUtil.addAliasName(definedProperty, aliasName);
+ }
+
+ if (!propertyType.isDataType())
+ {
+ SDOUtil.setContainment(definedProperty, modeledProperty.isContainment());
+ if (modeledProperty.getOpposite_() != null)
+ {
+ SDOUtil.setOpposite(definedProperty, getDefinedProperty(modeledProperty.getOpposite_()));
+ }
+ }
+ }
+ } // if (!isDataType)
+
+ return definedType;
+ }
+
+ public List /*Type*/define(List /*DataObject*/types)
+ {
+ int count = types.size();
+ List definedTypes = new ArrayList(count);
+ for (int i = 0; i < count; i++)
+ {
+ definedTypes.add(define((DataObject)types.get(i)));
+ }
+ return definedTypes;
+ }
+
+ protected Type getDefinedType(org.apache.tuscany.sdo.model.Type modeledType)
+ {
+ if (modeledType instanceof Type)
+ {
+ return (Type)modeledType;
+ }
+ else
+ {
+ EClassifier eClassifier = extendedMetaData.getType(modeledType.getUri(), modeledType.getName());
+ if (eClassifier != null)
+ {
+ return (Type)eClassifier;
+ }
+ else
+ {
+ return define((DataObject)modeledType);
+ }
+ }
+ }
+
+ protected Property getDefinedProperty(org.apache.tuscany.sdo.model.Property modeledProperty)
+ {
+ if (modeledProperty instanceof Property)
+ {
+ return (Property)modeledProperty;
+ }
+ else
+ {
+ DataObject modeledContainingType = ((DataObject)modeledProperty).getContainer();
+
+ Type definedContainingType = getDefinedType((org.apache.tuscany.sdo.model.Type)modeledContainingType);
+ String propertyName = modeledProperty.getName();
+
+ return definedContainingType.getProperty(propertyName);
+ }
+ }
+
+ public static final String TUSCANY_NO_URI="http://tuscany-no-uri";
+
+ public Property defineOpenContentProperty(String uri, DataObject property)
+ {
+ // validate property and get type
+ if (!(property instanceof org.apache.tuscany.sdo.model.impl.PropertyImpl))
+ throw new IllegalArgumentException();
+ org.apache.tuscany.sdo.model.Property modeledProperty = (org.apache.tuscany.sdo.model.Property)property;
+ Type propertyType = getDefinedType(modeledProperty.getType_());
+
+ if (uri == null) uri = TUSCANY_NO_URI;
+
+ // get/create document root
+ EPackage ePackage = extendedMetaData.getPackage(uri);
+ Type documentRoot =
+ ePackage != null ? (Type)extendedMetaData.getType(extendedMetaData.getPackage(uri), "") : null;
+ if (documentRoot == null)
+ {
+ documentRoot = SDOUtil.createType(this, uri, null, false);
+ }
+
+ // Determine if property already exists
+ Property newProperty = documentRoot.getProperty(modeledProperty.getName());
+ if (newProperty == null)
+ {
+ //FB TBD ... is this code really supposed to be the same as in define()? If so, factor it out and reuse
+
+ // Create the new property 'under' the document root.....
+ newProperty = SDOUtil.createProperty(documentRoot, modeledProperty.getName(), propertyType);
+
+ // Propagate the modeled property's attributes
+ SDOUtil.setMany(newProperty, modeledProperty.isMany());
+ SDOUtil.setDefault(newProperty, modeledProperty.getDefault_());
+ SDOUtil.setReadOnly(newProperty, modeledProperty.isReadOnly());
+ for (Iterator iter = modeledProperty.getAliasName().iterator(); iter.hasNext();)
+ {
+ String aliasName = (String)iter.next();
+ SDOUtil.addAliasName(newProperty, aliasName);
+ }
+ if (!propertyType.isDataType())
+ {
+ SDOUtil.setContainment(newProperty, modeledProperty.isContainment());
+ if (modeledProperty.getOpposite_() != null)
+ {
+ SDOUtil.setOpposite(newProperty, getDefinedProperty(modeledProperty.getOpposite_()));
+ }
+ }
+ }
+ else
+ {
+ // if property already exists, validate the expected type
+ if (!newProperty.getType().equals(propertyType))
+ throw new IllegalArgumentException();
+ }
+
+ return newProperty;
+ }
+
+ public Property getOpenContentProperty(String uri, String propertyName)
+ {
+ //FB TBD ... in the future we will allow elements or attributes - see SDOUtil.createProperty()
+ return (Property)extendedMetaData.getElement(uri, propertyName);
+ }
+}
diff --git a/branches/sdo-java-M2/sdo/impl/src/main/java/org/apache/tuscany/sdo/helper/TypeTable.java b/branches/sdo-java-M2/sdo/impl/src/main/java/org/apache/tuscany/sdo/helper/TypeTable.java
new file mode 100644
index 0000000000..a28492e28e
--- /dev/null
+++ b/branches/sdo-java-M2/sdo/impl/src/main/java/org/apache/tuscany/sdo/helper/TypeTable.java
@@ -0,0 +1,254 @@
+/**
+ *
+ * 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.helper;
+
+import java.util.ArrayList;
+import java.util.Hashtable;
+import java.util.Iterator;
+import java.util.List;
+import java.util.Vector;
+
+import javax.xml.namespace.QName;
+
+//import org.apache.axiom.om.OMElement;
+import org.eclipse.xsd.XSDFactory;
+import org.eclipse.xsd.XSDTypeDefinition;
+import org.w3c.dom.Element;
+
+
+
+public class TypeTable
+{
+ public static final String XML_SCHEMA_URI = "http://www.w3.org/2001/XMLSchema";
+ public static final String XS_URI_PREFIX = "xs";
+ public static final QName XS_QNAME = new QName(XML_SCHEMA_URI, "schema", XS_URI_PREFIX);
+ public static final String DELIMITER = "#";
+
+ private Hashtable simpleXSDTypes;
+ private Hashtable complexXSDTypes;
+ private Hashtable xsdTypeDefs;
+
+ public static String asQualifiedName(String uri, String typeName)
+ {
+ return (uri + DELIMITER + typeName);
+ }
+
+
+ public TypeTable()
+ {
+ simpleXSDTypes = new Hashtable();
+ complexXSDTypes = new Hashtable();
+ xsdTypeDefs = new Hashtable();
+ populateSimpleXSDTypes();
+ populateStdSDOTypes();
+ }
+
+ private void populateStdSDOTypes()
+ {
+ simpleXSDTypes.put("Boolean",
+ new QName(XML_SCHEMA_URI, "boolean", XS_URI_PREFIX));
+ simpleXSDTypes.put("Byte",
+ new QName(XML_SCHEMA_URI, "byte", XS_URI_PREFIX));
+ simpleXSDTypes.put("Bytes",
+ new QName(XML_SCHEMA_URI, "hexBinary", XS_URI_PREFIX));
+ simpleXSDTypes.put("Character",
+ new QName(XML_SCHEMA_URI, "string", XS_URI_PREFIX));
+ simpleXSDTypes.put("DataObject",
+ new QName(XML_SCHEMA_URI, "anyType", XS_URI_PREFIX));
+ simpleXSDTypes.put("Date",
+ new QName(XML_SCHEMA_URI, "dateTime", XS_URI_PREFIX));
+ simpleXSDTypes.put("Day",
+ new QName(XML_SCHEMA_URI, "gDay", XS_URI_PREFIX));
+ simpleXSDTypes.put("Decimal",
+ new QName(XML_SCHEMA_URI, "decimal", XS_URI_PREFIX));
+ simpleXSDTypes.put("Double",
+ new QName(XML_SCHEMA_URI, "double", XS_URI_PREFIX));
+ simpleXSDTypes.put("Duration",
+ new QName(XML_SCHEMA_URI, "duration", XS_URI_PREFIX));
+ simpleXSDTypes.put("Float",
+ new QName(XML_SCHEMA_URI, "float", XS_URI_PREFIX));
+ simpleXSDTypes.put("Int",
+ new QName(XML_SCHEMA_URI, "int", XS_URI_PREFIX));
+ simpleXSDTypes.put("Integer",
+ new QName(XML_SCHEMA_URI, "integer", XS_URI_PREFIX));
+ simpleXSDTypes.put("Long",
+ new QName(XML_SCHEMA_URI, "long", XS_URI_PREFIX));
+ simpleXSDTypes.put("Month",
+ new QName(XML_SCHEMA_URI, "gMonth", XS_URI_PREFIX));
+ simpleXSDTypes.put("monthDay",
+ new QName(XML_SCHEMA_URI, "gMonthDay", XS_URI_PREFIX));
+ simpleXSDTypes.put("Object",
+ new QName(XML_SCHEMA_URI, "anySimpleType", XS_URI_PREFIX));
+ simpleXSDTypes.put("Short",
+ new QName(XML_SCHEMA_URI, "short", XS_URI_PREFIX));
+ simpleXSDTypes.put("String",
+ new QName(XML_SCHEMA_URI, "string", XS_URI_PREFIX));
+ simpleXSDTypes.put("Strings",
+ new QName(XML_SCHEMA_URI, "string", XS_URI_PREFIX));
+ simpleXSDTypes.put("Time",
+ new QName(XML_SCHEMA_URI, "time", XS_URI_PREFIX));
+ simpleXSDTypes.put("Year",
+ new QName(XML_SCHEMA_URI, "gYear", XS_URI_PREFIX));
+ simpleXSDTypes.put("YearMonth",
+ new QName(XML_SCHEMA_URI, "gYearMonth", XS_URI_PREFIX));
+ simpleXSDTypes.put("YearMonthDay",
+ new QName(XML_SCHEMA_URI, "date", XS_URI_PREFIX));
+ simpleXSDTypes.put("URI",
+ new QName(XML_SCHEMA_URI, "anyURI", XS_URI_PREFIX));
+ }
+
+ private void populateSimpleXSDTypes() {
+ //todo pls use the types from org.apache.ws.commons.schema.constants.Constants
+ simpleXSDTypes.put("int",
+ new QName(XML_SCHEMA_URI, "int", XS_URI_PREFIX));
+ simpleXSDTypes.put("java.lang.String",
+ new QName(XML_SCHEMA_URI, "string", XS_URI_PREFIX));
+ simpleXSDTypes.put("boolean",
+ new QName(XML_SCHEMA_URI, "boolean", XS_URI_PREFIX));
+ simpleXSDTypes.put("float",
+ new QName(XML_SCHEMA_URI, "float", XS_URI_PREFIX));
+ simpleXSDTypes.put("double",
+ new QName(XML_SCHEMA_URI, "double", XS_URI_PREFIX));
+ simpleXSDTypes.put("short",
+ new QName(XML_SCHEMA_URI, "short", XS_URI_PREFIX));
+ simpleXSDTypes.put("long",
+ new QName(XML_SCHEMA_URI, "long", XS_URI_PREFIX));
+ simpleXSDTypes.put("byte",
+ new QName(XML_SCHEMA_URI, "byte", XS_URI_PREFIX));
+ simpleXSDTypes.put("char",
+ new QName(XML_SCHEMA_URI, "anyType", XS_URI_PREFIX));
+ simpleXSDTypes.put("java.lang.Integer",
+ new QName(XML_SCHEMA_URI, "int", XS_URI_PREFIX));
+ simpleXSDTypes.put("java.lang.Double",
+ new QName(XML_SCHEMA_URI, "double", XS_URI_PREFIX));
+ simpleXSDTypes.put("java.lang.Float",
+ new QName(XML_SCHEMA_URI, "float", XS_URI_PREFIX));
+ simpleXSDTypes.put("java.lang.Long",
+ new QName(XML_SCHEMA_URI, "long", XS_URI_PREFIX));
+ simpleXSDTypes.put("java.lang.Character",
+ new QName(XML_SCHEMA_URI, "anyType", XS_URI_PREFIX));
+ simpleXSDTypes.put("java.lang.Boolean",
+ new QName(XML_SCHEMA_URI, "boolean", XS_URI_PREFIX));
+ simpleXSDTypes.put("java.lang.Byte",
+ new QName(XML_SCHEMA_URI, "byte", XS_URI_PREFIX));
+ simpleXSDTypes.put("java.lang.Short",
+ new QName(XML_SCHEMA_URI, "short", XS_URI_PREFIX));
+ simpleXSDTypes.put("java.util.Date",
+ new QName(XML_SCHEMA_URI, "dateTime", XS_URI_PREFIX));
+ simpleXSDTypes.put("java.util.Calendar",
+ new QName(XML_SCHEMA_URI, "dateTime", XS_URI_PREFIX));
+ simpleXSDTypes.put("java.lang.Object",
+ new QName(XML_SCHEMA_URI, "anyType", XS_URI_PREFIX));
+ simpleXSDTypes.put("java.math.BigDecimal",
+ new QName(XML_SCHEMA_URI, "decimal", XS_URI_PREFIX));
+
+ // Any types
+ simpleXSDTypes.put(Element.class.getName(),
+ new QName(XML_SCHEMA_URI, "anyType", XS_URI_PREFIX));
+ simpleXSDTypes.put(ArrayList.class.getName(),
+ new QName(XML_SCHEMA_URI, "anyType", XS_URI_PREFIX));
+ simpleXSDTypes.put(Vector.class.getName(),
+ new QName(XML_SCHEMA_URI, "anyType", XS_URI_PREFIX));
+ simpleXSDTypes.put(List.class.getName(),
+ new QName(XML_SCHEMA_URI, "anyType", XS_URI_PREFIX));
+ }
+
+ public QName getStdSdoType(String typename)
+ {
+ return (QName) simpleXSDTypes.get(typename);
+ }
+
+ public QName getComplexSchemaTypeName(String sdoURI, String sdoTypeName)
+ {
+ return (QName) complexXSDTypes.get(asQualifiedName(sdoURI, sdoTypeName));
+ }
+
+ public boolean isSimpleType(String typeName)
+ {
+ Iterator keys = simpleXSDTypes.keySet().iterator();
+ while (keys.hasNext()) {
+ String s = (String) keys.next();
+ if (s.equals(typeName)) {
+ return true;
+ }
+ }
+ return false;
+ }
+
+ public QName getSimpleSchemaTypeName(String typename)
+ {
+ return (QName) simpleXSDTypes.get(typename);
+ }
+
+ public void addSimpleSchemaType(String typeName, QName schemaType)
+ {
+ simpleXSDTypes.put(typeName, schemaType);
+ }
+
+
+ public void addComplexSchemaType(String namespaceURI, String name, QName schemaType)
+ {
+ complexXSDTypes.put(asQualifiedName(namespaceURI, name), schemaType);
+ }
+
+
+ public QName getQNamefortheType(String namespaceURI, String typeName)
+ {
+ if ( XML_SCHEMA_URI.equals(namespaceURI))
+ {
+ return getSimpleSchemaTypeName(typeName);
+ }
+ else
+ {
+ return getComplexSchemaTypeName(namespaceURI, typeName);
+ }
+ }
+
+ public void addXSDTypeDef(String namespaceURI, String typeName, XSDTypeDefinition aTypeDef)
+ {
+ if ( namespaceURI != null && typeName != null && aTypeDef != null )
+ {
+ xsdTypeDefs.put(asQualifiedName(namespaceURI, typeName), aTypeDef);
+ }
+ }
+
+ public XSDTypeDefinition getXSDTypeDef(String namespaceURI, String typeName)
+ {
+ XSDTypeDefinition typeDef = null;
+ if ( namespaceURI != null && typeName != null )
+ {
+ if ( XML_SCHEMA_URI.equals(namespaceURI) )
+ {
+ if ( ( typeDef = (XSDTypeDefinition)xsdTypeDefs.get(asQualifiedName(namespaceURI, typeName)) ) == null )
+ {
+ typeDef = XSDFactory.eINSTANCE.createXSDSimpleTypeDefinition();
+ typeDef.setName(typeName);
+ typeDef.setTargetNamespace(namespaceURI);
+ addXSDTypeDef(namespaceURI, typeName, typeDef);
+ }
+ }
+ else
+ {
+ typeDef = (XSDTypeDefinition)xsdTypeDefs.get(asQualifiedName(namespaceURI, typeName));
+ }
+ }
+ return typeDef;
+ }
+}
diff --git a/branches/sdo-java-M2/sdo/impl/src/main/java/org/apache/tuscany/sdo/helper/XMLDocumentImpl.java b/branches/sdo-java-M2/sdo/impl/src/main/java/org/apache/tuscany/sdo/helper/XMLDocumentImpl.java
new file mode 100644
index 0000000000..ce0031940f
--- /dev/null
+++ b/branches/sdo-java-M2/sdo/impl/src/main/java/org/apache/tuscany/sdo/helper/XMLDocumentImpl.java
@@ -0,0 +1,536 @@
+/**
+ *
+ * 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.helper;
+
+
+import java.io.ByteArrayOutputStream;
+import java.io.IOException;
+import java.io.InputStream;
+import java.io.OutputStream;
+import java.io.Reader;
+import java.io.Writer;
+import java.util.Iterator;
+import java.util.List;
+import java.util.Map;
+
+import javax.xml.stream.XMLStreamReader;
+
+import org.apache.tuscany.sdo.SimpleAnyTypeDataObject;
+import org.apache.tuscany.sdo.util.DataObjectUtil;
+import org.apache.tuscany.sdo.util.SDOUtil;
+import org.apache.tuscany.sdo.util.resource.SDOXMLResourceImpl;
+import org.eclipse.emf.common.util.EMap;
+import org.eclipse.emf.common.util.URI;
+import org.eclipse.emf.ecore.EAttribute;
+import org.eclipse.emf.ecore.EClass;
+import org.eclipse.emf.ecore.EObject;
+import org.eclipse.emf.ecore.EReference;
+import org.eclipse.emf.ecore.EStructuralFeature;
+import org.eclipse.emf.ecore.resource.ResourceSet;
+import org.eclipse.emf.ecore.util.EcoreUtil;
+import org.eclipse.emf.ecore.util.ExtendedMetaData;
+import org.eclipse.emf.ecore.util.FeatureMap;
+import org.eclipse.emf.ecore.xmi.XMLResource;
+import org.eclipse.emf.ecore.xml.type.XMLTypePackage;
+import org.xml.sax.InputSource;
+
+import commonj.sdo.DataObject;
+import commonj.sdo.Type;
+import commonj.sdo.helper.XMLDocument;
+
+
+/**
+ * Represents an XML Document containing a tree of DataObjects.
+ *
+ * An example XMLDocument fragment is:
+ * <?xml version="1.0"?>
+ * <purchaseOrder orderDate="1999-10-20">
+ *
+ * created from this XML Schema fragment:
+ * <xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema">
+ * <xsd:element name="purchaseOrder" type="PurchaseOrderType"/>
+ * <xsd:complexType name="PurchaseOrderType">
+ *
+ * Upon loading this XMLDocument:
+ * DataObject is an instance of Type PurchaseOrderType.
+ * RootElementURI is null because the XSD has no targetNamespace URI.
+ * RootElementName is purchaseOrder.
+ * Encoding is null because the document did not specify an encoding.
+ * XMLDeclaration is true because the document contained an XML declaration.
+ * XMLVersion is 1.0
+ * SchemaLocation and noNamespaceSchemaLocation are null because they are
+ * not specified in the document.
+ *
+ * When saving the root element, if the type of the root dataObject is not the
+ * type of global element specified by rootElementURI and rootElementName,
+ * or if a global element does not exist for rootElementURI and rootElementName,
+ * then an xsi:type declaration is written to record the root DataObject's Type.
+ *
+ * When loading the root element and an xsi:type declaration is found
+ * it is used as the type of the root DataObject. In this case,
+ * if validation is not being performed, it is not an error if the
+ * rootElementName is not a global element.
+ */
+public class XMLDocumentImpl implements XMLDocument
+{
+ protected ExtendedMetaData extendedMetaData;
+
+ protected EObject rootObject;
+
+ protected XMLResource resource;
+
+ protected EStructuralFeature rootElement;
+
+ protected EObject documentRoot;
+
+ protected final static String WHITESPACE_REGEX = "\\s";
+
+ //TODO clean up the options thing
+ protected XMLDocumentImpl(ExtendedMetaData extendedMetaData, Object options)
+ {
+ this.extendedMetaData = extendedMetaData;
+ ResourceSet resourceSet = DataObjectUtil.createResourceSet();
+
+ if (options instanceof Map)
+ {
+ Class resourceFactoryClass = (Class)((Map)options).get("GENERATED_LOADER");
+ if (resourceFactoryClass != null)
+ {
+ try
+ {
+ Object resourceFactory = resourceFactoryClass.newInstance();
+ resourceSet.getResourceFactoryRegistry().getExtensionToFactoryMap().put("*", resourceFactory);
+ }
+ catch (Exception e)
+ {
+ e.printStackTrace();
+ }
+ }
+ }
+
+ resource = (XMLResource)resourceSet.createResource(URI.createURI("http:///temp.xml"));
+ DataObjectUtil.configureXMLResource(resource, extendedMetaData);
+ }
+
+ protected XMLDocumentImpl(ExtendedMetaData extendedMetaData)
+ {
+ this(extendedMetaData, null);
+ }
+
+ protected XMLDocumentImpl(ExtendedMetaData extendedMetaData, DataObject dataObject, String rootElementURI, String rootElementName)
+ {
+ this(extendedMetaData);
+
+ rootObject = (EObject)dataObject;
+
+ rootElement = extendedMetaData.getElement(rootElementURI, rootElementName);
+ if (rootElement == null)
+ {
+ rootElement = ExtendedMetaData.INSTANCE.demandFeature(rootElementURI, rootElementName, true);
+ }
+
+ EClass documentRootClass = rootElement.getEContainingClass();
+ documentRoot = EcoreUtil.create(documentRootClass);
+ resource.getContents().add(documentRoot);
+ }
+
+ protected void save(OutputStream outputStream, Object options) throws IOException
+ {
+ EObject oldContainer = null;
+ EReference oldContainmentReference = null;
+ int oldContainmentIndex = -1;
+
+ if (documentRoot != null)
+ {
+ //TODO also check if rootObject is directly contained in a resource
+ oldContainer = rootObject.eContainer();
+ if (oldContainer != null)
+ {
+ oldContainmentReference = rootObject.eContainmentFeature();
+ }
+ if (oldContainer != documentRoot || oldContainmentReference != rootElement)
+ {
+ if (oldContainmentReference != null && oldContainmentReference.isMany())
+ {
+ oldContainmentIndex = ((List)oldContainer.eGet(oldContainmentReference)).indexOf(rootObject);
+ }
+
+ Object rootValue =
+ rootElement instanceof EAttribute && rootObject instanceof SimpleAnyTypeDataObject ?
+ ((SimpleAnyTypeDataObject)rootObject).getValue() : rootObject;
+
+ documentRoot.eSet(rootElement, rootValue);
+ }
+ }
+
+ resource.save(outputStream, (Map)options);
+
+ if (oldContainer != null)
+ {
+ if (oldContainer != documentRoot || oldContainmentReference != rootElement)
+ {
+ if (oldContainmentReference.isMany())
+ {
+ ((List)oldContainer.eGet(oldContainmentReference)).add(oldContainmentIndex, rootObject);
+ }
+ else
+ {
+ oldContainer.eSet(oldContainmentReference, rootObject);
+ }
+ }
+ }
+ else if (documentRoot != null)
+ {
+ documentRoot.eSet(rootElement, null);
+ }
+ }
+
+ protected void save(Writer outputWriter, Object options) throws IOException
+ {
+ // TODO temporary brute-force implementation ... to be replaced
+ ByteArrayOutputStream outputStream = new ByteArrayOutputStream();
+ save(outputStream, options);
+ outputWriter.write(new String(outputStream.toByteArray()));
+ }
+
+ protected void load(InputStream inputStream, String locationURI, Object options) throws IOException
+ {
+ InputSource inputSource = new InputSource(inputStream);
+ load(inputSource, locationURI, options);
+ }
+
+ protected void load(Reader inputReader, String locationURI, Object options) throws IOException
+ {
+ InputSource inputSource = new InputSource(inputReader);
+ load(inputSource, locationURI, options);
+ }
+
+ protected void load(XMLStreamReader reader) throws IOException
+ {
+ ((SDOXMLResourceImpl)resource).load(reader, null);
+ initLoadedRoot();
+ }
+
+ protected void load(InputSource inputSource, String locationURI, Object options) throws IOException
+ {
+ if (locationURI != null)
+ {
+ inputSource.setSystemId(locationURI);
+ resource.setURI(URI.createURI(locationURI));
+ }
+ resource.load(inputSource, (Map)options);
+ initLoadedRoot();
+ }
+
+ private void initLoadedRoot()
+ {
+ rootObject = null;
+ rootElement = null;
+ documentRoot = null;
+
+ if (!resource.getContents().isEmpty())
+ {
+ documentRoot = (EObject)resource.getContents().get(0);
+ EClass documentRootClass = documentRoot.eClass();
+ if ("".equals(extendedMetaData.getName(documentRootClass))) //TODO efficient way to check this? Maybe DataObject.getContainer should also check this?
+ {
+ FeatureMap featureMap = (FeatureMap)documentRoot.eGet(documentRootClass.getEStructuralFeature(0)); // get mixed feature
+ int size = featureMap.size();
+ for (int index = 0; index < size; index++)
+ {
+ EStructuralFeature feature = featureMap.getEStructuralFeature(index);
+ boolean isText =
+ feature == XMLTypePackage.Literals.XML_TYPE_DOCUMENT_ROOT__TEXT ||
+ feature == XMLTypePackage.Literals.XML_TYPE_DOCUMENT_ROOT__CDATA ||
+ feature == XMLTypePackage.Literals.XML_TYPE_DOCUMENT_ROOT__COMMENT;
+ if (!isText)
+ {
+ if (feature instanceof EReference)
+ {
+ rootObject = (EObject)featureMap.getValue(index);
+ documentRoot.eUnset(feature);
+ }
+ else //EAttribute
+ {
+ rootObject = (EObject)SDOUtil.createDataTypeWrapper((Type)feature.getEType(), featureMap.getValue(index));
+ }
+ rootElement = feature;
+ break;
+ }
+ } //for
+ }
+ else
+ {
+ rootObject = documentRoot;
+ documentRoot = null;
+ }
+ }
+ }
+
+ public DataObject getRootObject()
+ {
+ return (DataObject)rootObject;
+ }
+
+ public String getRootElementURI()
+ {
+ if (rootElement != null)
+ {
+ return extendedMetaData.getNamespace(rootElement);
+ }
+ else if (rootObject != null)
+ {
+ return extendedMetaData.getNamespace(rootObject.eClass());
+ }
+ return null;
+ }
+
+ public String getRootElementName()
+ {
+ if (rootElement != null)
+ {
+ return extendedMetaData.getName(rootElement);
+ }
+ else if (rootObject != null)
+ {
+ return extendedMetaData.getName(rootObject.eClass());
+ }
+ return null;
+ }
+
+ public String getEncoding()
+ {
+ return resource.getEncoding();
+ }
+
+ public void setEncoding(String encoding)
+ {
+ resource.setEncoding(encoding);
+ }
+
+ public boolean isXMLDeclaration()
+ {
+ return Boolean.FALSE.equals(resource.getDefaultSaveOptions().get(XMLResource.OPTION_DECLARE_XML));
+ }
+
+ public void setXMLDeclaration(boolean xmlDeclaration)
+ {
+ resource.getDefaultSaveOptions().put(XMLResource.OPTION_DECLARE_XML, xmlDeclaration ? Boolean.TRUE : Boolean.FALSE);
+ }
+
+ public String getXMLVersion()
+ {
+ return resource.getXMLVersion();
+ }
+
+ public void setXMLVersion(String xmlVersion)
+ {
+ resource.setXMLVersion(xmlVersion);
+ }
+
+ /**
+ * @return an EMap containing the schema locations or null when no map
+ */
+ protected EMap getSchemaLocationMap()
+ {
+ EMap result = null;
+ if ((documentRoot != null) && (extendedMetaData != null))
+ {
+ EReference xsiSchemaLocationMapFeature = extendedMetaData
+ .getXSISchemaLocationMapFeature(documentRoot.eClass());
+ if (xsiSchemaLocationMapFeature != null)
+ {
+ result = (EMap) documentRoot.eGet(xsiSchemaLocationMapFeature);
+ }
+ }
+ return result;
+ }
+
+ /**
+ * @param value
+ * from schema location map.
+ * @return string form of URI from provided value, deresolved if appropriate.
+ */
+ protected String deresolve(String value)
+ {
+ URI location = URI.createURI(value);
+ URI resourceURI = resource.getURI();
+ boolean shouldDeresolve = resourceURI != null && !resourceURI.isRelative()
+ && resourceURI.isHierarchical();
+ if (shouldDeresolve && !location.isRelative())
+ {
+ URI deresolvedURI = location.deresolve(resourceURI, true, true, false);
+ if (deresolvedURI.hasRelativePath())
+ {
+ location = deresolvedURI;
+ }
+ }
+ return location.toString();
+ }
+
+ /**
+ * @param value
+ * for schema location from input parameter.
+ * @return string form of URI from provided value, resolved if appropriate.
+ */
+ protected String resolve(String value)
+ {
+ URI location = URI.createURI(value);
+ URI resourceURI = resource.getURI();
+ boolean shouldResolve = resourceURI != null && resourceURI.isHierarchical()
+ && !resourceURI.isRelative();
+ if (shouldResolve && location.isRelative() && location.hasRelativePath())
+ {
+ location = location.resolve(resourceURI, false);
+ }
+ return location.toString();
+ }
+
+ public String getSchemaLocation()
+ {
+ EMap xsiSchemaLocationMap = getSchemaLocationMap();
+ if (xsiSchemaLocationMap != null)
+ {
+ if (!xsiSchemaLocationMap.isEmpty())
+ {
+ StringBuffer xsiSchemaLocation = new StringBuffer();
+ for (Iterator i = xsiSchemaLocationMap.entrySet().iterator(); i
+ .hasNext();)
+ {
+ Map.Entry entry = (Map.Entry) i.next();
+ String namespace = (String) entry.getKey();
+ if (namespace != null)
+ {
+ if (xsiSchemaLocation.length() > 0)
+ {
+ xsiSchemaLocation.append(' ');
+ }
+ xsiSchemaLocation.append(namespace);
+ xsiSchemaLocation.append(' ');
+ String value = entry.getValue().toString();
+ xsiSchemaLocation.append(deresolve(value));
+ }
+ }
+ return xsiSchemaLocation.toString().equals("") ? null
+ : xsiSchemaLocation.toString();
+ }
+ }
+ return null;
+ }
+
+ public void setSchemaLocation(String schemaLocation)
+ {
+ EMap xsiSchemaLocationMap = getSchemaLocationMap();
+ if (xsiSchemaLocationMap != null)
+ {
+ // only remove the entries from xsiSchemaLocationMap that contain a
+ // non-null key
+ for (Iterator i = xsiSchemaLocationMap.entrySet().iterator(); i.hasNext();)
+ {
+ Map.Entry entry = (Map.Entry) i.next();
+ if (entry.getKey() != null)
+ {
+ i.remove();
+ }
+ }
+ if (xsiSchemaLocationMap.size() == 0)
+ {
+ resource.getDefaultSaveOptions().put(
+ XMLResource.OPTION_SCHEMA_LOCATION, Boolean.FALSE);
+ }
+ if (schemaLocation != null)
+ {
+ String[] values = schemaLocation.split(WHITESPACE_REGEX);
+ for (int i = 0; i < values.length; i++) // note: also incremented in
+ // loop
+ {
+ String key = values[i++];
+ if (i < values.length)
+ {
+ xsiSchemaLocationMap.put(key, resolve(values[i]));
+ }
+ }
+ if (xsiSchemaLocationMap.size() != 0)
+ {
+ resource.getDefaultSaveOptions().put(
+ XMLResource.OPTION_SCHEMA_LOCATION, Boolean.TRUE);
+ }
+ }
+ }
+ }
+
+ public String getNoNamespaceSchemaLocation()
+ {
+ EMap xsiSchemaLocationMap = getSchemaLocationMap();
+ if (xsiSchemaLocationMap != null)
+ {
+ StringBuffer xsiSchemaLocation = new StringBuffer();
+ if (!xsiSchemaLocationMap.isEmpty())
+ {
+ Object valueObject = xsiSchemaLocationMap.get(null);
+ if (valueObject != null)
+ {
+ String valueString = (String) valueObject;
+ String[] values = valueString.split(WHITESPACE_REGEX);
+ for (int i = 0; i < values.length; i++)
+ {
+ if (xsiSchemaLocation.length() > 0)
+ {
+ xsiSchemaLocation.append(' ');
+ }
+ xsiSchemaLocation.append(deresolve(values[i]));
+ }
+ }
+ String result = xsiSchemaLocation.toString();
+ return result.equals("") ? null : result;
+ }
+ }
+ return null;
+ }
+
+ public void setNoNamespaceSchemaLocation(String schemaLocation)
+ {
+ EMap xsiSchemaLocationMap = getSchemaLocationMap();
+ if (xsiSchemaLocationMap != null)
+ {
+ // only remove the entries from xsiSchemaLocationMap that contain a null
+ // key
+ xsiSchemaLocationMap.removeKey(null);
+ if (xsiSchemaLocationMap.size() == 0)
+ {
+ resource.getDefaultSaveOptions().put(
+ XMLResource.OPTION_SCHEMA_LOCATION, Boolean.FALSE);
+ }
+ if (schemaLocation != null)
+ {
+ String[] values = schemaLocation.split(WHITESPACE_REGEX);
+ for (int i = 0; i < values.length; i++)
+ {
+ xsiSchemaLocationMap.put(null, resolve(values[i]));
+ }
+ if (xsiSchemaLocationMap.size() != 0)
+ {
+ resource.getDefaultSaveOptions().put(
+ XMLResource.OPTION_SCHEMA_LOCATION, Boolean.TRUE);
+ }
+ }
+ }
+ }
+}
diff --git a/branches/sdo-java-M2/sdo/impl/src/main/java/org/apache/tuscany/sdo/helper/XMLHelperImpl.java b/branches/sdo-java-M2/sdo/impl/src/main/java/org/apache/tuscany/sdo/helper/XMLHelperImpl.java
new file mode 100644
index 0000000000..8a94167108
--- /dev/null
+++ b/branches/sdo-java-M2/sdo/impl/src/main/java/org/apache/tuscany/sdo/helper/XMLHelperImpl.java
@@ -0,0 +1,119 @@
+/**
+ *
+ * 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.helper;
+
+import java.io.IOException;
+import java.io.InputStream;
+import java.io.OutputStream;
+import java.io.Reader;
+import java.io.StringReader;
+import java.io.StringWriter;
+import java.io.Writer;
+
+import org.eclipse.emf.ecore.util.ExtendedMetaData;
+
+import commonj.sdo.DataObject;
+import commonj.sdo.helper.TypeHelper;
+import commonj.sdo.helper.XMLDocument;
+import commonj.sdo.helper.XMLHelper;
+
+/**
+ * A helper to convert XML documents into DataObects and
+ * DataObjects into XML documnets.
+ */
+public class XMLHelperImpl implements XMLHelper
+{
+ ExtendedMetaData extendedMetaData;
+
+ public XMLHelperImpl(ExtendedMetaData extendedMetaData)
+ {
+ this.extendedMetaData = extendedMetaData;
+ }
+
+ public XMLHelperImpl(TypeHelper typeHelper)
+ {
+ this.extendedMetaData = ((TypeHelperImpl)typeHelper).extendedMetaData;
+ }
+
+ public XMLDocument load(String inputString)
+ {
+ try
+ {
+ return load(new StringReader(inputString), null, null);
+ }
+ catch (IOException e)
+ {
+ throw new RuntimeException(e); // should never happen
+ }
+ }
+
+ public XMLDocument load(InputStream inputStream) throws IOException
+ {
+ return load(inputStream, null, null);
+ }
+
+ public XMLDocument load(InputStream inputStream, String locationURI, Object options) throws IOException
+ {
+ XMLDocumentImpl document = new XMLDocumentImpl(extendedMetaData, options);
+ document.load(inputStream, locationURI, options);
+ return document;
+ }
+
+ public XMLDocument load(Reader inputReader, String locationURI, Object options) throws IOException
+ {
+ XMLDocumentImpl document = new XMLDocumentImpl(extendedMetaData, options);
+ document.load(inputReader, locationURI, options);
+ return document;
+ }
+
+ public String save(DataObject dataObject, String rootElementURI, String rootElementName)
+ {
+ StringWriter stringWriter = new StringWriter();
+ try
+ {
+ save(createDocument(dataObject, rootElementURI, rootElementName), stringWriter, null);
+ return stringWriter.toString();
+ }
+ catch (IOException e)
+ {
+ throw new RuntimeException(e); // should never happen
+ }
+ }
+
+ public void save(DataObject dataObject, String rootElementURI, String rootElementName, OutputStream outputStream) throws IOException
+ {
+ save(createDocument(dataObject, rootElementURI, rootElementName), outputStream, null);
+ }
+
+ public void save(XMLDocument xmlDocument, OutputStream outputStream, Object options) throws IOException
+ {
+ ((XMLDocumentImpl)xmlDocument).save(outputStream, options);
+ }
+
+ public void save(XMLDocument xmlDocument, Writer outputWriter, Object options) throws IOException
+ {
+ ((XMLDocumentImpl)xmlDocument).save(outputWriter, options);
+ }
+
+ public XMLDocument createDocument(DataObject dataObject, String rootElementURI, String rootElementName)
+ {
+ return new XMLDocumentImpl(extendedMetaData, dataObject, rootElementURI, rootElementName);
+ }
+}
diff --git a/branches/sdo-java-M2/sdo/impl/src/main/java/org/apache/tuscany/sdo/helper/XMLStreamHelper.java b/branches/sdo-java-M2/sdo/impl/src/main/java/org/apache/tuscany/sdo/helper/XMLStreamHelper.java
new file mode 100644
index 0000000000..8b01398adf
--- /dev/null
+++ b/branches/sdo-java-M2/sdo/impl/src/main/java/org/apache/tuscany/sdo/helper/XMLStreamHelper.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.helper;
+
+import javax.xml.stream.XMLStreamException;
+import javax.xml.stream.XMLStreamReader;
+import javax.xml.stream.XMLStreamWriter;
+
+import commonj.sdo.DataObject;
+import commonj.sdo.helper.XMLDocument;
+
+/**
+ * Helper interface for reading and writing SDO DataObjects from XML streams (StAX).
+ *
+ * @version $Rev$ $Date$
+ */
+public interface XMLStreamHelper {
+ /**
+ * Creates and returns an XMLDocument from an XML input stream.
+ * The reader must be positioned on a START_DOCUMENT event.
+ *
+ * @param reader the stream to read
+ * @return an XMLDocument created from the stream
+ * @throws XMLStreamException if there was a problem reading the stream
+ * @throws IllegalStateException if the reader is not positioned on a START_DOCUMENT event
+ */
+ XMLDocument load(XMLStreamReader reader) throws XMLStreamException, IllegalStateException;
+
+ /**
+ * Save a XMLDocument to an XML stream.
+ *
+ * @param document the document to be written
+ * @param writer the stream to write to
+ * @throws XMLStreamException if there was a problem writing to the stream
+ */
+ void save(XMLDocument document, XMLStreamWriter writer) throws XMLStreamException;
+
+ /**
+ * Creates and returns a XMLStreamReader that can be used to read an XMLDocument as a XML event stream.
+ * The reader will be positioned on a START_DOCUMENT event.
+ *
+ * @param document the XMLDocument to be read
+ * @return an XMLStreamReader that can be used to read the document
+ */
+ XMLStreamReader createXMLStreamReader(XMLDocument document) throws XMLStreamException;
+
+ /**
+ * Create a DataObject from an element in a XML stream.
+ * The reader must be positioned on a START_ELEMENT event.
+ *
+ * @param reader the stream to read
+ * @return a DataObject created from the element in the stream
+ * @throws XMLStreamException if there was a problem reading the stream
+ * @throws IllegalStateException if the reader is not positioned on a START_ELEMENT event
+ */
+ DataObject loadObject(XMLStreamReader reader) throws XMLStreamException, IllegalStateException;
+
+ /**
+ * Save a DataObject to an XML stream.
+ *
+ * @param sdo the DataObject to be written
+ * @param writer the stream to write to
+ * @throws XMLStreamException if there was a problem writing to the stream
+ */
+ void saveObject(DataObject sdo, XMLStreamWriter writer) throws XMLStreamException;
+
+ /**
+ * Creates and returns a XMLStreamReader that can be used to read a DataObject as a XML event stream.
+ * The reader will be positioned on a START_ELEMENT event.
+ *
+ * @param sdo the DataObject to be read
+ * @return an XMLStreamReader that can be used to read the DataObject
+ */
+ XMLStreamReader createXMLStreamReader(DataObject sdo);
+}
diff --git a/branches/sdo-java-M2/sdo/impl/src/main/java/org/apache/tuscany/sdo/helper/XMLStreamHelperImpl.java b/branches/sdo-java-M2/sdo/impl/src/main/java/org/apache/tuscany/sdo/helper/XMLStreamHelperImpl.java
new file mode 100644
index 0000000000..306c60ca2b
--- /dev/null
+++ b/branches/sdo-java-M2/sdo/impl/src/main/java/org/apache/tuscany/sdo/helper/XMLStreamHelperImpl.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.helper;
+
+import javax.xml.stream.XMLStreamConstants;
+import javax.xml.stream.XMLStreamException;
+import javax.xml.stream.XMLStreamReader;
+import javax.xml.stream.XMLStreamWriter;
+
+import org.apache.tuscany.sdo.util.resource.DataObjectXMLStreamReader;
+import org.apache.tuscany.sdo.util.resource.XMLDocumentStreamReader;
+import org.apache.tuscany.sdo.util.resource.XMLStreamSerializer;
+import org.eclipse.emf.ecore.resource.Resource;
+
+import commonj.sdo.DataObject;
+import commonj.sdo.Property;
+import commonj.sdo.helper.TypeHelper;
+import commonj.sdo.helper.XMLDocument;
+
+/**
+ * @version $Rev$ $Date$
+ */
+public class XMLStreamHelperImpl implements XMLStreamHelper
+{
+ TypeHelperImpl typeHelper;
+
+ public XMLStreamHelperImpl(TypeHelper typeHelper)
+ {
+ this.typeHelper = (TypeHelperImpl)typeHelper;
+ }
+
+ public XMLDocument load(XMLStreamReader reader) throws XMLStreamException, IllegalStateException
+ {
+ if (reader.getEventType() != XMLStreamConstants.START_DOCUMENT)
+ throw new IllegalStateException();
+
+ return loadDocument(reader);
+ }
+
+ public void save(XMLDocument document, XMLStreamWriter writer) throws XMLStreamException
+ {
+ XMLStreamReader reader = createXMLStreamReader(document);
+ new XMLStreamSerializer().serialize(reader, writer);
+ }
+
+ public XMLStreamReader createXMLStreamReader(XMLDocument document) throws XMLStreamException
+ {
+ XMLStreamReader reader = new DataObjectXMLStreamReader(document.getRootObject(), document.getRootElementURI(), document.getRootElementName(), typeHelper);
+ // Wrap the reader so that its position will be START_ELEMENT
+ return new XMLDocumentStreamReader(reader);
+
+ }
+
+ public DataObject loadObject(XMLStreamReader reader) throws XMLStreamException, IllegalStateException
+ {
+ if (reader.getEventType() != XMLStreamConstants.START_ELEMENT)
+ throw new IllegalStateException();
+
+ // StAX2SAXAdapter won't produce START_DOCUMENT if the reader is posisitioned at START_ELEMENT and the EMF loader will fail
+ // Wrap the reader so it represents a document
+ reader = new XMLDocumentStreamReader(reader);
+
+ return loadDocument(reader).getRootObject();
+ }
+
+ public void saveObject(DataObject sdo, XMLStreamWriter writer) throws XMLStreamException
+ {
+ XMLStreamReader reader = createXMLStreamReader(sdo);
+ new XMLStreamSerializer().serialize(new XMLDocumentStreamReader(reader), writer);
+ }
+
+ public XMLStreamReader createXMLStreamReader(DataObject dataObject)
+ {
+ String rootElementURI;
+ String rootElementName;
+
+ Property property = dataObject.getContainmentProperty();
+ if (property != null)
+ {
+ rootElementName = property.getName();
+ rootElementURI = property.getType().getURI();
+ }
+ else
+ {
+ rootElementName = dataObject.getType().getName();
+ rootElementURI = dataObject.getType().getURI();
+ }
+
+ return new DataObjectXMLStreamReader(dataObject, rootElementURI, rootElementName, typeHelper);
+ }
+
+ protected XMLDocument loadDocument(XMLStreamReader reader) throws XMLStreamException
+ {
+ try {
+ XMLDocumentImpl document = new XMLDocumentImpl(typeHelper.extendedMetaData, null);
+ document.load(reader);
+ return document;
+ }
+ catch (Exception e) {
+ if (e instanceof Resource.IOWrappedException)
+ {
+ Resource.IOWrappedException ioe = (Resource.IOWrappedException)e;
+ if (ioe.getWrappedException() instanceof XMLStreamException)
+ {
+ throw (XMLStreamException)ioe.getWrappedException();
+ }
+ }
+ throw new RuntimeException(e); // ????
+ }
+ }
+
+}
diff --git a/branches/sdo-java-M2/sdo/impl/src/main/java/org/apache/tuscany/sdo/helper/XSDHelperImpl.java b/branches/sdo-java-M2/sdo/impl/src/main/java/org/apache/tuscany/sdo/helper/XSDHelperImpl.java
new file mode 100644
index 0000000000..f67d35d74d
--- /dev/null
+++ b/branches/sdo-java-M2/sdo/impl/src/main/java/org/apache/tuscany/sdo/helper/XSDHelperImpl.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.helper;
+
+
+import java.io.ByteArrayInputStream;
+import java.io.InputStream;
+import java.io.Reader;
+import java.io.StringWriter;
+import java.util.ArrayList;
+import java.util.Collection;
+import java.util.HashSet;
+import java.util.Hashtable;
+import java.util.Iterator;
+import java.util.List;
+import java.util.Map;
+
+import javax.xml.transform.OutputKeys;
+import javax.xml.transform.Transformer;
+import javax.xml.transform.TransformerFactory;
+import javax.xml.transform.dom.DOMSource;
+import javax.xml.transform.stream.StreamResult;
+
+import org.apache.tuscany.sdo.impl.DynamicDataObjectImpl;
+import org.apache.tuscany.sdo.util.DataObjectUtil;
+import org.eclipse.emf.common.util.URI;
+import org.eclipse.emf.ecore.EClass;
+import org.eclipse.emf.ecore.EClassifier;
+import org.eclipse.emf.ecore.EModelElement;
+import org.eclipse.emf.ecore.EPackage;
+import org.eclipse.emf.ecore.EStructuralFeature;
+import org.eclipse.emf.ecore.resource.Resource;
+import org.eclipse.emf.ecore.resource.ResourceSet;
+import org.eclipse.emf.ecore.util.EcoreUtil;
+import org.eclipse.emf.ecore.util.ExtendedMetaData;
+import org.eclipse.xsd.XSDSchema;
+import org.eclipse.xsd.ecore.XSDEcoreBuilder;
+import org.eclipse.xsd.util.XSDResourceImpl;
+import org.xml.sax.InputSource;
+
+import commonj.sdo.Property;
+import commonj.sdo.Type;
+import commonj.sdo.helper.TypeHelper;
+import commonj.sdo.helper.XSDHelper;
+
+
+/**
+ * Provides access to additional information when the
+ * Type or Property is defined by an XML Schema (XSD).
+ * Methods return null/false otherwise or if the information is unavailable.
+ * Defines Types from an XSD.
+ */
+public class XSDHelperImpl implements XSDHelper
+{
+ private XSDEcoreBuilder ecoreBuilder;
+
+ private ExtendedMetaData extendedMetaData;
+
+ public XSDHelperImpl(ExtendedMetaData extendedMetaData)
+ {
+ this.extendedMetaData = extendedMetaData;
+ ecoreBuilder = new SDOXSDEcoreBuilder(extendedMetaData);
+ }
+
+ public XSDHelperImpl(TypeHelper typeHelper)
+ {
+ this(((TypeHelperImpl)typeHelper).extendedMetaData);
+ }
+
+ public String getLocalName(Type type)
+ {
+ return extendedMetaData.getName((EClassifier)type);
+ }
+
+ public String getLocalName(Property property)
+ {
+ return extendedMetaData.getName((EStructuralFeature)property);
+ }
+
+ public String getNamespaceURI(Property property)
+ {
+ return extendedMetaData.getNamespace((EStructuralFeature)property);
+ }
+
+ public boolean isAttribute(Property property)
+ {
+ return extendedMetaData.getFeatureKind((EStructuralFeature)property) == ExtendedMetaData.ATTRIBUTE_FEATURE;
+ }
+
+ public boolean isElement(Property property)
+ {
+ return extendedMetaData.getFeatureKind((EStructuralFeature)property) == ExtendedMetaData.ELEMENT_FEATURE;
+ }
+
+ public boolean isMixed(Type type)
+ {
+ if (type instanceof EClass)
+ {
+ return extendedMetaData.getContentKind((EClass)type) == ExtendedMetaData.MIXED_CONTENT;
+ }
+ else
+ {
+ return false;
+ }
+ }
+
+ public boolean isXSD(Type type)
+ {
+ return ((EModelElement)type).getEAnnotation(ExtendedMetaData.ANNOTATION_URI) != null;
+ }
+
+ public Property getGlobalProperty(String uri, String propertyName, boolean isElement)
+ {
+ if (isElement)
+ {
+ return (Property)extendedMetaData.getElement(uri, propertyName);
+ }
+ else
+ {
+ return (Property)extendedMetaData.getAttribute(uri, propertyName);
+ }
+ }
+
+ public String getAppinfo(Type type, String source)
+ {
+ return getAppinfo((EModelElement)type, source);
+ }
+
+ public String getAppinfo(Property property, String source)
+ {
+ return getAppinfo((EModelElement)property, source);
+ }
+
+ protected String getAppinfo(EModelElement eModelElement, String source)
+ {
+ return (String)eModelElement.getEAnnotation(source).getDetails().get("appinfo");
+ }
+
+ public List /*Type*/define(String xsd)
+ {
+ InputStream inputStream = new ByteArrayInputStream(xsd.getBytes());
+ return define(inputStream, "*.xsd");
+ }
+
+ public List /*Type*/define(Reader xsdReader, String schemaLocation)
+ {
+ InputSource inputSource = new InputSource(xsdReader);
+ return define(inputSource, schemaLocation);
+
+ }
+
+ public List /*Type*/define(InputStream xsdInputStream, String schemaLocation)
+ {
+ InputSource inputSource = new InputSource(xsdInputStream);
+ return define(inputSource, schemaLocation);
+ }
+
+ protected List /*Type*/define(InputSource inputSource, String schemaLocation)
+ {
+ try
+ {
+ ResourceSet resourceSet = DataObjectUtil.createResourceSet();
+ Resource model = resourceSet.createResource(URI.createURI(schemaLocation != null ? schemaLocation : "null.xsd"));
+ ((XSDResourceImpl)model).load(inputSource, null);
+
+ List newTypes = new ArrayList();
+ for (Iterator schemaIter = model.getContents().iterator(); schemaIter.hasNext(); )
+ {
+ XSDSchema schema = (XSDSchema)schemaIter.next();
+
+ EPackage ePackage = extendedMetaData.getPackage(schema.getTargetNamespace());
+ if (ePackage == null)
+ {
+ Collection originalEPackages = new HashSet(ecoreBuilder.getTargetNamespaceToEPackageMap().values());
+ ecoreBuilder.generate(schema);
+ Collection newEPackages = ecoreBuilder.getTargetNamespaceToEPackageMap().values();
+
+ for (Iterator iter = newEPackages.iterator(); iter.hasNext();)
+ {
+ EPackage currentPackage = (EPackage)iter.next();
+ if (!originalEPackages.contains(currentPackage))
+ {
+ currentPackage.setEFactoryInstance(new DynamicDataObjectImpl.FactoryImpl());
+ EcoreUtil.freeze(currentPackage);
+ newTypes.addAll(currentPackage.getEClassifiers());
+ }
+ }
+ }
+ }
+
+ return newTypes;
+ }
+ catch (Exception e)
+ {
+ //e.printStackTrace();
+ throw new IllegalArgumentException(e.getMessage());
+ }
+ }
+
+ public String generate(List /*Type*/types) throws IllegalArgumentException
+ {
+ return generate(types, new Hashtable());
+ }
+
+ public String generate(List /*Type*/types, Map /*String, String*/namespaceToSchemaLocation) throws IllegalArgumentException
+ {
+ if ( types != null && !types.isEmpty() )
+ {
+ Hashtable schemaMap = new Hashtable();
+ Hashtable nsPrefixMap = new Hashtable();
+ TypeTable typeTable = new TypeTable();
+
+ SchemaBuilder schemaBuilder = new SchemaBuilder( schemaMap,
+ nsPrefixMap,
+ typeTable,
+ namespaceToSchemaLocation);
+
+ Iterator iterator = types.iterator();
+ Type dataType = null;
+
+ try
+ {
+ while ( iterator.hasNext() )
+ {
+ dataType = (Type)iterator.next();
+ schemaBuilder.buildSchema(dataType);
+ }
+
+ XSDSchema xmlSchema = null;
+ iterator = schemaMap.values().iterator();
+ StringWriter writer = new StringWriter();
+
+ TransformerFactory transformerFactory = TransformerFactory.newInstance();
+ Transformer transformer = transformerFactory.newTransformer();
+ transformer.setOutputProperty(OutputKeys.INDENT, "yes");
+ transformer.setOutputProperty(OutputKeys.METHOD, "xml");
+ transformer.setOutputProperty(OutputKeys.OMIT_XML_DECLARATION, "yes");
+
+ while ( iterator.hasNext() )
+ {
+ xmlSchema = (XSDSchema)iterator.next();
+
+ if(xmlSchema.getElement() == null)
+ {
+ xmlSchema.updateElement();
+ }
+
+ transformer.transform(new DOMSource(xmlSchema.getElement().getOwnerDocument()),
+ new StreamResult(writer));
+ }
+ writer.close();
+ return writer.getBuffer().toString();
+ }
+ catch ( Exception e )
+ {
+ //System.out.println("Unable to generate schema due to ..." + e);
+ //e.printStackTrace();
+ throw new IllegalArgumentException(e.getMessage());
+ }
+ }
+ else
+ {
+ //System.out.println("No SDO Types to generate schema ...");
+ return "";
+ }
+ }
+
+}
diff --git a/branches/sdo-java-M2/sdo/impl/src/main/java/org/apache/tuscany/sdo/impl/AnyTypeDataObjectImpl.java b/branches/sdo-java-M2/sdo/impl/src/main/java/org/apache/tuscany/sdo/impl/AnyTypeDataObjectImpl.java
new file mode 100644
index 0000000000..b7d22c3be0
--- /dev/null
+++ b/branches/sdo-java-M2/sdo/impl/src/main/java/org/apache/tuscany/sdo/impl/AnyTypeDataObjectImpl.java
@@ -0,0 +1,299 @@
+/**
+ *
+ * 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.impl;
+
+import org.apache.tuscany.sdo.AnyTypeDataObject;
+import org.apache.tuscany.sdo.SDOPackage;
+import org.apache.tuscany.sdo.util.BasicSequence;
+import org.eclipse.emf.common.notify.NotificationChain;
+import org.eclipse.emf.ecore.EClass;
+import org.eclipse.emf.ecore.InternalEObject;
+import org.eclipse.emf.ecore.util.BasicFeatureMap;
+import org.eclipse.emf.ecore.util.FeatureMap;
+import org.eclipse.emf.ecore.util.InternalEList;
+import org.eclipse.emf.ecore.xml.type.AnyType;
+import org.eclipse.emf.ecore.xml.type.XMLTypePackage;
+
+/**
+ * <!-- begin-user-doc -->
+ * An implementation of the model object '<em><b>EData Object Any Type</b></em>'.
+ * <!-- end-user-doc -->
+ * <p>
+ * The following features are implemented:
+ * <ul>
+ * <li>{@link org.apache.tuscany.sdo.impl.AnyTypeDataObjectImpl#getMixed <em>Mixed</em>}</li>
+ * <li>{@link org.apache.tuscany.sdo.impl.AnyTypeDataObjectImpl#getAny <em>Any</em>}</li>
+ * <li>{@link org.apache.tuscany.sdo.impl.AnyTypeDataObjectImpl#getAnyAttribute <em>Any Attribute</em>}</li>
+ * </ul>
+ * </p>
+ *
+ * @generated
+ */
+public class AnyTypeDataObjectImpl extends DataObjectImpl implements AnyTypeDataObject
+{
+ /**
+ * The cached value of the '{@link #getMixed() <em>Mixed</em>}' attribute list.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #getMixed()
+ * @generated
+ * @ordered
+ */
+ protected FeatureMap mixed = null;
+
+ /**
+ * The cached value of the '{@link #getAnyAttribute() <em>Any Attribute</em>}' attribute list.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #getAnyAttribute()
+ * @generated
+ * @ordered
+ */
+ protected FeatureMap anyAttribute = null;
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ protected AnyTypeDataObjectImpl()
+ {
+ super();
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ protected EClass eStaticClass()
+ {
+ return SDOPackage.eINSTANCE.getAnyTypeDataObject();
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated NOT
+ */
+ public FeatureMap getMixed()
+ {
+ if (mixed == null)
+ {
+ //mixed = new BasicFeatureMap(this, SDOPackage.ANY_TYPE_DATA_OBJECT__MIXED);
+ mixed = new BasicSequence(new BasicFeatureMap(this, SDOPackage.ANY_TYPE_DATA_OBJECT__MIXED)).featureMap();
+ }
+ return mixed;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated NOT
+ */
+ public FeatureMap getAny()
+ {
+ //return (FeatureMap)((FeatureMap)getMixed()).list(XMLTypePackage.eINSTANCE.getAnyType_Any());
+ return new BasicSequence((FeatureMap.Internal)((FeatureMap)getMixed()).list(XMLTypePackage.eINSTANCE.getAnyType_Any())).featureMap();
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated NOT
+ */
+ public FeatureMap getAnyAttribute()
+ {
+ if (anyAttribute == null)
+ {
+ //anyAttribute = new BasicFeatureMap(this, SDOPackage.ANY_TYPE_DATA_OBJECT__ANY_ATTRIBUTE);
+ anyAttribute = new BasicSequence(new BasicFeatureMap(this, SDOPackage.ANY_TYPE_DATA_OBJECT__ANY_ATTRIBUTE)).featureMap();
+ }
+ return anyAttribute;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public NotificationChain eInverseRemove(InternalEObject otherEnd, int featureID, Class baseClass, NotificationChain msgs)
+ {
+ if (featureID >= 0)
+ {
+ switch (eDerivedStructuralFeatureID(featureID, baseClass))
+ {
+ case SDOPackage.ANY_TYPE_DATA_OBJECT__MIXED:
+ return ((InternalEList)getMixed()).basicRemove(otherEnd, msgs);
+ case SDOPackage.ANY_TYPE_DATA_OBJECT__ANY:
+ return ((InternalEList)getAny()).basicRemove(otherEnd, msgs);
+ case SDOPackage.ANY_TYPE_DATA_OBJECT__ANY_ATTRIBUTE:
+ return ((InternalEList)getAnyAttribute()).basicRemove(otherEnd, msgs);
+ default:
+ return eDynamicInverseRemove(otherEnd, featureID, baseClass, msgs);
+ }
+ }
+ return eBasicSetContainer(null, featureID, msgs);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public Object eGet(int featureID, boolean resolve, boolean coreType)
+ {
+ switch (featureID)
+ {
+ case SDOPackage.ANY_TYPE_DATA_OBJECT__MIXED:
+ if (coreType) return getMixed();
+ return ((FeatureMap.Internal)getMixed()).getWrapper();
+ case SDOPackage.ANY_TYPE_DATA_OBJECT__ANY:
+ if (coreType) return getAny();
+ return ((FeatureMap.Internal)getAny()).getWrapper();
+ case SDOPackage.ANY_TYPE_DATA_OBJECT__ANY_ATTRIBUTE:
+ if (coreType) return getAnyAttribute();
+ return ((FeatureMap.Internal)getAnyAttribute()).getWrapper();
+ }
+ return eDynamicGet(featureID, resolve, coreType);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public void eSet(int featureID, Object newValue)
+ {
+ switch (featureID)
+ {
+ case SDOPackage.ANY_TYPE_DATA_OBJECT__MIXED:
+ ((FeatureMap.Internal)getMixed()).set(newValue);
+ return;
+ case SDOPackage.ANY_TYPE_DATA_OBJECT__ANY:
+ ((FeatureMap.Internal)getAny()).set(newValue);
+ return;
+ case SDOPackage.ANY_TYPE_DATA_OBJECT__ANY_ATTRIBUTE:
+ ((FeatureMap.Internal)getAnyAttribute()).set(newValue);
+ return;
+ }
+ eDynamicSet(featureID, newValue);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public void eUnset(int featureID)
+ {
+ switch (featureID)
+ {
+ case SDOPackage.ANY_TYPE_DATA_OBJECT__MIXED:
+ getMixed().clear();
+ return;
+ case SDOPackage.ANY_TYPE_DATA_OBJECT__ANY:
+ getAny().clear();
+ return;
+ case SDOPackage.ANY_TYPE_DATA_OBJECT__ANY_ATTRIBUTE:
+ getAnyAttribute().clear();
+ return;
+ }
+ eDynamicUnset(featureID);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public boolean eIsSet(int featureID)
+ {
+ switch (featureID)
+ {
+ case SDOPackage.ANY_TYPE_DATA_OBJECT__MIXED:
+ return mixed != null && !mixed.isEmpty();
+ case SDOPackage.ANY_TYPE_DATA_OBJECT__ANY:
+ return !getAny().isEmpty();
+ case SDOPackage.ANY_TYPE_DATA_OBJECT__ANY_ATTRIBUTE:
+ return anyAttribute != null && !anyAttribute.isEmpty();
+ }
+ return eDynamicIsSet(featureID);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public int eBaseStructuralFeatureID(int derivedFeatureID, Class baseClass)
+ {
+ if (baseClass == AnyType.class)
+ {
+ switch (derivedFeatureID)
+ {
+ case SDOPackage.ANY_TYPE_DATA_OBJECT__MIXED: return XMLTypePackage.ANY_TYPE__MIXED;
+ case SDOPackage.ANY_TYPE_DATA_OBJECT__ANY: return XMLTypePackage.ANY_TYPE__ANY;
+ case SDOPackage.ANY_TYPE_DATA_OBJECT__ANY_ATTRIBUTE: return XMLTypePackage.ANY_TYPE__ANY_ATTRIBUTE;
+ default: return -1;
+ }
+ }
+ return super.eBaseStructuralFeatureID(derivedFeatureID, baseClass);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public int eDerivedStructuralFeatureID(int baseFeatureID, Class baseClass)
+ {
+ if (baseClass == AnyType.class)
+ {
+ switch (baseFeatureID)
+ {
+ case XMLTypePackage.ANY_TYPE__MIXED: return SDOPackage.ANY_TYPE_DATA_OBJECT__MIXED;
+ case XMLTypePackage.ANY_TYPE__ANY: return SDOPackage.ANY_TYPE_DATA_OBJECT__ANY;
+ case XMLTypePackage.ANY_TYPE__ANY_ATTRIBUTE: return SDOPackage.ANY_TYPE_DATA_OBJECT__ANY_ATTRIBUTE;
+ default: return -1;
+ }
+ }
+ return super.eDerivedStructuralFeatureID(baseFeatureID, baseClass);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public String toString()
+ {
+ if (eIsProxy()) return super.toString();
+
+ StringBuffer result = new StringBuffer(super.toString());
+ result.append(" (mixed: ");
+ result.append(mixed);
+ result.append(", anyAttribute: ");
+ result.append(anyAttribute);
+ result.append(')');
+ return result.toString();
+ }
+
+} //EDataObjectAnyTypeImpl
diff --git a/branches/sdo-java-M2/sdo/impl/src/main/java/org/apache/tuscany/sdo/impl/AttributeImpl.java b/branches/sdo-java-M2/sdo/impl/src/main/java/org/apache/tuscany/sdo/impl/AttributeImpl.java
new file mode 100644
index 0000000000..d3e2b7c997
--- /dev/null
+++ b/branches/sdo-java-M2/sdo/impl/src/main/java/org/apache/tuscany/sdo/impl/AttributeImpl.java
@@ -0,0 +1,735 @@
+/**
+ *
+ * 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.impl;
+
+import java.util.List;
+
+import org.apache.tuscany.sdo.util.BasicSequence;
+import org.apache.tuscany.sdo.util.DataObjectUtil;
+import org.eclipse.emf.ecore.EClass;
+import org.eclipse.emf.ecore.EStructuralFeature;
+import org.eclipse.emf.ecore.EcorePackage;
+import org.eclipse.emf.ecore.InternalEObject;
+import org.eclipse.emf.ecore.impl.EAttributeImpl;
+import org.eclipse.emf.ecore.util.FeatureMap;
+
+import commonj.sdo.Property;
+import commonj.sdo.Sequence;
+import commonj.sdo.Type;
+
+/**
+ * <!-- begin-user-doc -->
+ * An implementation of the model object '<em><b>Attribute</b></em>'.
+ * <!-- end-user-doc -->
+ * <p>
+ * </p>
+ *
+ * @generated
+ */
+public class AttributeImpl extends EAttributeImpl implements Property, org.apache.tuscany.sdo.model.Property/*, DataObject*/
+{
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ protected AttributeImpl()
+ {
+ super();
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated NOT
+ */
+ protected EClass eStaticClass()
+ {
+ return EcorePackage.eINSTANCE.getEAttribute();
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated NOT
+ */
+ public Object getDefault()
+ {
+ return getDefaultValue();
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated NOT
+ */
+ public boolean isReadOnly()
+ {
+ //return "true".equals(EcoreUtil.getAnnotation(this, "commonj.sdo", "readOnly"));
+ return !isChangeable(); //TODO semantics don't exactly match?
+ }
+
+ protected List aliasNames = null;
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated NOT
+ */
+ public List getAliasNames()
+ {
+ if (aliasNames == null)
+ {
+ aliasNames = DataObjectUtil.getAliasNames(this);
+ }
+ return aliasNames;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated NOT
+ */
+ public Type getType()
+ {
+ return (Type)getEType();
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated NOT
+ */
+ public Type getContainingType()
+ {
+ return (Type)getEContainingClass();
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated NOT
+ */
+ public Property getOpposite()
+ {
+ return null;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated NOT
+ */
+ public boolean isContainment()
+ {
+ return false;
+ }
+
+ protected EStructuralFeature.Internal.SettingDelegate createFeatureMapSettingDelegate()
+ {
+ return new InternalSettingDelegateSequence(this);
+ }
+
+ public static class InternalSettingDelegateSequence extends InternalSettingDelegateMany
+ {
+ InternalSettingDelegateSequence(EStructuralFeature feature)
+ {
+ super(InternalSettingDelegateMany.FEATURE_MAP, feature);
+ }
+
+ protected EStructuralFeature.Setting createDynamicSetting(InternalEObject owner)
+ {
+ FeatureMap.Internal featureMap = (FeatureMap.Internal)super.createDynamicSetting(owner);
+ new BasicSequence(featureMap);
+ return featureMap;
+ }
+ }
+
+ /////////////////////////////////////////////////////////////////////////////////////////////////////////
+ // org.apache.tuscany.sdo.model.Property methods
+ /////////////////////////////////////////////////////////////////////////////////////////////////////////
+
+ public List getAliasName() {
+ return this.getAliasNames();
+ }
+
+ public Sequence getAny() {
+ throw new UnsupportedOperationException();
+ }
+
+ public void unsetContainment() {
+ throw new UnsupportedOperationException("Property is frozen and cannot be modified");
+ }
+
+ public boolean isSetContainment() {
+ return false;
+ }
+
+ public void setMany(boolean value) {
+ throw new UnsupportedOperationException("Property is frozen and cannot be modified");
+ }
+
+ public void unsetMany() {
+ throw new UnsupportedOperationException("Property is frozen and cannot be modified");
+ }
+
+ public boolean isSetMany() {
+ return isMany();
+ }
+
+ public void setReadOnly(boolean value) {
+ throw new UnsupportedOperationException("Property is frozen and cannot be modified");
+ }
+
+ public void unsetReadOnly() {
+ throw new UnsupportedOperationException("Property is frozen and cannot be modified");
+ }
+
+ public boolean isSetReadOnly() {
+ return isReadOnly();
+ }
+
+ public org.apache.tuscany.sdo.model.Type getType_() {
+ return (org.apache.tuscany.sdo.model.Type)getType();
+ }
+
+ public void setType(org.apache.tuscany.sdo.model.Type value) {
+ throw new UnsupportedOperationException("Property is frozen and cannot be modified");
+ }
+
+ public Sequence getAnyAttribute() {
+ throw new UnsupportedOperationException();
+ }
+
+ public String getDefault_() {
+ return (String) this.getDefault();
+ }
+
+ public void setDefault_(String value) {
+ throw new UnsupportedOperationException("Property is frozen and cannot be modified");
+ }
+
+ public org.apache.tuscany.sdo.model.Property getOpposite_() {
+ return (org.apache.tuscany.sdo.model.Property) getOpposite();
+ }
+
+ public void setOpposite_(org.apache.tuscany.sdo.model.Property value) {
+ throw new UnsupportedOperationException("Property is frozen and cannot be modified");
+ }
+
+ public void setContainment(boolean value) {
+ throw new UnsupportedOperationException();
+ }
+
+ /////////////////////////////////////////////////////////////////////////////////////////////////////////
+ // DataObject method implementations
+ /////////////////////////////////////////////////////////////////////////////////////////////////////////
+ /*
+ public Object get(int propertyIndex) {
+ return DataObjectUtil.get(this, propertyIndex);
+ }
+
+ public void set(int propertyIndex, Object value) {
+ throw new UnsupportedOperationException("Property is frozen and cannot be modified");
+ }
+
+ public boolean isSet(int propertyIndex) {
+ return DataObjectUtil.isSet(this, propertyIndex);
+ }
+
+ public void unset(int propertyIndex) {
+ throw new UnsupportedOperationException("Property is frozen and cannot be modified");
+ }
+
+ public Object get(Property property) {
+ return DataObjectUtil.get(this, ((EStructuralFeature)property).getFeatureID());
+ }
+
+ public void set(Property property, Object value) {
+ throw new UnsupportedOperationException("Property is frozen and cannot be modified");
+ }
+
+ public boolean isSet(Property property) {
+ return DataObjectUtil.isSet(this, ((EStructuralFeature)property).getFeatureID());
+ }
+
+ public void unset(Property property) {
+ throw new UnsupportedOperationException("Property is frozen and cannot be modified");
+ }
+
+ public DataObject getContainer() {
+ return (DataObject)eContainer();
+ }
+
+ public Property getContainmentProperty() {
+ return (Property)eContainmentFeature();
+ }
+
+ // Remaining DataObject methods are (will be) implemented as straight delegation to DataObjectUtil
+
+ public Object get(String path) {
+ return DataObjectUtil.get(this, path);
+ }
+
+ public void set(String path, Object value) {
+ throw new UnsupportedOperationException("Property is frozen and cannot be modified");
+ }
+
+ public boolean isSet(String path) {
+ return DataObjectUtil.isSet(this, path);
+ }
+
+ public void unset(String path) {
+ throw new UnsupportedOperationException("Property is frozen and cannot be modified");
+ }
+
+ public boolean getBoolean(String path) {
+ return DataObjectUtil.getBoolean(get(path));
+ }
+
+ public byte getByte(String path) {
+ return DataObjectUtil.getByte(get(path));
+ }
+
+ public char getChar(String path) {
+ return DataObjectUtil.getChar(get(path));
+ }
+
+ public double getDouble(String path) {
+ return DataObjectUtil.getDouble(get(path));
+ }
+
+ public float getFloat(String path) {
+ return DataObjectUtil.getFloat(get(path));
+ }
+
+ public int getInt(String path) {
+ return DataObjectUtil.getInt(get(path));
+ }
+
+ public long getLong(String path) {
+ return DataObjectUtil.getLong(get(path));
+ }
+
+ public short getShort(String path) {
+ return DataObjectUtil.getShort(get(path));
+ }
+
+ public byte[] getBytes(String path) {
+ return DataObjectUtil.getBytes(get(path));
+ }
+
+ public BigDecimal getBigDecimal(String path) {
+ return DataObjectUtil.getBigDecimal(get(path));
+ }
+
+ public BigInteger getBigInteger(String path) {
+ return DataObjectUtil.getBigInteger(get(path));
+ }
+
+ public DataObject getDataObject(String path) {
+ return (DataObject)get(path);
+ }
+
+ public Date getDate(String path) {
+ return DataObjectUtil.getDate(get(path));
+ }
+
+ public String getString(String path) {
+ return DataObjectUtil.getString(get(path));
+ }
+
+ public List getList(String path) {
+ return (List)get(path);
+ }
+
+ public Sequence getSequence(String path) {
+ return (Sequence)get(path);
+ }
+
+ public void setBoolean(String path, boolean value) {
+ set(path, new Boolean(value));
+ }
+
+ public void setByte(String path, byte value) {
+ set(path, new Byte(value));
+ }
+
+ public void setChar(String path, char value) {
+ set(path, new Character(value));
+ }
+
+ public void setDouble(String path, double value) {
+ set(path, new Double(value));
+ }
+
+ public void setFloat(String path, float value) {
+ set(path, new Float(value));
+ }
+
+ public void setInt(String path, int value) {
+ set(path, new Integer(value));
+ }
+
+ public void setLong(String path, long value) {
+ set(path, new Long(value));
+ }
+
+ public void setShort(String path, short value) {
+ set(path, new Short(value));
+ }
+
+ public void setBytes(String path, byte[] value) {
+ set(path, value);
+ }
+
+ public void setBigDecimal(String path, BigDecimal value) {
+ set(path, value);
+ }
+
+ public void setBigInteger(String path, BigInteger value) {
+ set(path, value);
+ }
+
+ public void setDataObject(String path, DataObject value) {
+ set(path, value);
+ }
+
+ public void setDate(String path, Date value) {
+ set(path, value);
+ }
+
+ public void setString(String path, String value) {
+ set(path, value);
+ }
+
+ public void setList(String path, List value) {
+ set(path, value);
+ }
+
+ public boolean getBoolean(int propertyIndex) {
+ return DataObjectUtil.getBoolean(this, propertyIndex);
+ }
+
+ public byte getByte(int propertyIndex) {
+ return DataObjectUtil.getByte(this, propertyIndex);
+ }
+
+ public char getChar(int propertyIndex) {
+ return DataObjectUtil.getChar(this, propertyIndex);
+ }
+
+ public double getDouble(int propertyIndex) {
+ return DataObjectUtil.getDouble(this, propertyIndex);
+ }
+
+ public float getFloat(int propertyIndex) {
+ return DataObjectUtil.getFloat(this, propertyIndex);
+ }
+
+ public int getInt(int propertyIndex) {
+ return DataObjectUtil.getInt(this, propertyIndex);
+ }
+
+ public long getLong(int propertyIndex) {
+ return DataObjectUtil.getLong(this, propertyIndex);
+ }
+
+ public short getShort(int propertyIndex) {
+ return DataObjectUtil.getShort(this, propertyIndex);
+ }
+
+ public byte[] getBytes(int propertyIndex) {
+ return DataObjectUtil.getBytes(this, propertyIndex);
+ }
+
+ public BigDecimal getBigDecimal(int propertyIndex) {
+ return DataObjectUtil.getBigDecimal(this, propertyIndex);
+ }
+
+ public BigInteger getBigInteger(int propertyIndex) {
+ return DataObjectUtil.getBigInteger(this, propertyIndex);
+ }
+
+ public DataObject getDataObject(int propertyIndex) {
+ return DataObjectUtil.getDataObject(this, propertyIndex);
+ }
+
+ public Date getDate(int propertyIndex) {
+ return DataObjectUtil.getDate(this, propertyIndex);
+ }
+
+ public String getString(int propertyIndex) {
+ return DataObjectUtil.getString(this, propertyIndex);
+ }
+
+ public List getList(int propertyIndex) {
+ return DataObjectUtil.getList(this, propertyIndex);
+ }
+
+ public Sequence getSequence(int propertyIndex) {
+ return DataObjectUtil.getSequence(this, propertyIndex);
+ }
+
+ public void setBoolean(int propertyIndex, boolean value) {
+ set(propertyIndex, new Boolean(value));
+ }
+
+ public void setByte(int propertyIndex, byte value) {
+ set(propertyIndex, new Byte(value));
+ }
+
+ public void setChar(int propertyIndex, char value) {
+ set(propertyIndex, new Character(value));
+ }
+
+ public void setDouble(int propertyIndex, double value) {
+ set(propertyIndex, new Double(value));
+ }
+
+ public void setFloat(int propertyIndex, float value) {
+ set(propertyIndex, new Float(value));
+ }
+
+ public void setInt(int propertyIndex, int value) {
+ set(propertyIndex, new Integer(value));
+ }
+
+ public void setLong(int propertyIndex, long value) {
+ set(propertyIndex, new Long(value));
+ }
+
+ public void setShort(int propertyIndex, short value) {
+ set(propertyIndex, new Short(value));
+ }
+
+ public void setBytes(int propertyIndex, byte[] value) {
+ set(propertyIndex, value);
+ }
+
+ public void setBigDecimal(int propertyIndex, BigDecimal value) {
+ set(propertyIndex, value);
+ }
+
+ public void setBigInteger(int propertyIndex, BigInteger value) {
+ set(propertyIndex, value);
+ }
+
+ public void setDataObject(int propertyIndex, DataObject value) {
+ set(propertyIndex, value);
+ }
+
+ public void setDate(int propertyIndex, Date value) {
+ set(propertyIndex, value);
+ }
+
+ public void setString(int propertyIndex, String value) {
+ set(propertyIndex, value);
+ }
+
+ public void setList(int propertyIndex, List value) {
+ set(propertyIndex, value);
+ }
+
+ public boolean getBoolean(Property property) {
+ return DataObjectUtil.getBoolean(this, property);
+ }
+
+ public byte getByte(Property property) {
+ return DataObjectUtil.getByte(this, property);
+ }
+
+ public char getChar(Property property) {
+ return DataObjectUtil.getChar(this, property);
+ }
+
+ public double getDouble(Property property) {
+ return DataObjectUtil.getDouble(this, property);
+ }
+
+ public float getFloat(Property property) {
+ return DataObjectUtil.getFloat(this, property);
+ }
+
+ public int getInt(Property property) {
+ return DataObjectUtil.getInt(this, property);
+ }
+
+ public long getLong(Property property) {
+ return DataObjectUtil.getLong(this, property);
+ }
+
+ public short getShort(Property property) {
+ return DataObjectUtil.getShort(this, property);
+ }
+
+ public byte[] getBytes(Property property) {
+ return DataObjectUtil.getBytes(this, property);
+ }
+
+ public BigDecimal getBigDecimal(Property property) {
+ return DataObjectUtil.getBigDecimal(this, property);
+ }
+
+ public BigInteger getBigInteger(Property property) {
+ return DataObjectUtil.getBigInteger(this, property);
+ }
+
+ public DataObject getDataObject(Property property) {
+ return DataObjectUtil.getDataObject(this, property);
+ }
+
+ public Date getDate(Property property) {
+ return DataObjectUtil.getDate(this, property);
+ }
+
+ public String getString(Property property) {
+ return DataObjectUtil.getString(this, property);
+ }
+
+ public List getList(Property property) {
+ return DataObjectUtil.getList(this, property);
+ }
+
+ public Sequence getSequence(Property property) {
+ return DataObjectUtil.getSequence(this, property);
+ }
+
+ public void setBoolean(Property property, boolean value) {
+ set(property, new Boolean(value));
+ }
+
+ public void setByte(Property property, byte value) {
+ set(property, new Byte(value));
+ }
+
+ public void setChar(Property property, char value) {
+ set(property, new Character(value));
+ }
+
+ public void setDouble(Property property, double value) {
+ set(property, new Double(value));
+ }
+
+ public void setFloat(Property property, float value) {
+ set(property, new Float(value));
+ }
+
+ public void setInt(Property property, int value) {
+ set(property, new Integer(value));
+ }
+
+ public void setLong(Property property, long value) {
+ set(property, new Long(value));
+ }
+
+ public void setShort(Property property, short value) {
+ set(property, new Short(value));
+ }
+
+ public void setBytes(Property property, byte[] value) {
+ set(property, value);
+ }
+
+ public void setBigDecimal(Property property, BigDecimal value) {
+ set(property, value);
+ }
+
+ public void setBigInteger(Property property, BigInteger value) {
+ set(property, value);
+ }
+
+ public void setDataObject(Property property, DataObject value) {
+ set(property, value);
+ }
+
+ public void setDate(Property property, Date value) {
+ set(property, value);
+ }
+
+ public void setString(Property property, String value) {
+ set(property, value);
+ }
+
+ public void setList(Property property, List value) {
+ set(property, value);
+ }
+
+ public DataObject createDataObject(String propertyName) {
+ throw new UnsupportedOperationException("Property is frozen and cannot be modified");
+ }
+
+ public DataObject createDataObject(int propertyIndex) {
+ throw new UnsupportedOperationException("Property is frozen and cannot be modified");
+ }
+
+ public DataObject createDataObject(Property property) {
+ throw new UnsupportedOperationException("Property is frozen and cannot be modified");
+ }
+
+ public DataObject createDataObject(String propertyName, String namespaceURI, String typeName) {
+ throw new UnsupportedOperationException("Property is frozen and cannot be modified");
+ }
+
+ public DataObject createDataObject(int propertyIndex, String namespaceURI, String typeName) {
+ throw new UnsupportedOperationException("Property is frozen and cannot be modified");
+ }
+
+ public DataObject createDataObject(Property property, Type type) {
+ throw new UnsupportedOperationException("Property is frozen and cannot be modified");
+ }
+
+ public void delete() {
+ throw new UnsupportedOperationException("Property is frozen and cannot be modified");
+ }
+
+ public DataGraph getDataGraph() {
+ return DataObjectUtil.getDataGraph(this);
+ }
+
+ public Sequence getSequence() {
+ EAttribute mixedFeature = BasicExtendedMetaData.INSTANCE.getMixedFeature(eClass());
+ return mixedFeature != null ? (Sequence)eGet(mixedFeature, true, false) : null;
+ }
+
+ public List getInstanceProperties() {
+ return DataObjectUtil.getInstanceProperties(this);
+ }
+
+ public DataObject getRootObject() {
+ return DataObjectUtil.getRootObject(this);
+ }
+
+ public ChangeSummary getChangeSummary() {
+ // TODO: implement this method
+ throw new UnsupportedOperationException();
+ }
+
+ public void detach() {
+ throw new UnsupportedOperationException("Property is frozen and cannot be modified");
+ //DataObjectUtil.detach(this);
+ }
+
+ public Property getProperty(String propertyName) {
+ return DataObjectUtil.getProperty(this, propertyName);
+ }
+ */
+
+} //AttributeImpl
diff --git a/branches/sdo-java-M2/sdo/impl/src/main/java/org/apache/tuscany/sdo/impl/ChangeSummaryImpl.java b/branches/sdo-java-M2/sdo/impl/src/main/java/org/apache/tuscany/sdo/impl/ChangeSummaryImpl.java
new file mode 100644
index 0000000000..d3c6a0b96e
--- /dev/null
+++ b/branches/sdo-java-M2/sdo/impl/src/main/java/org/apache/tuscany/sdo/impl/ChangeSummaryImpl.java
@@ -0,0 +1,682 @@
+/**
+ *
+ * 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.impl;
+
+
+import java.util.Collection;
+import java.util.Collections;
+import java.util.HashMap;
+import java.util.HashSet;
+import java.util.Iterator;
+import java.util.List;
+import java.util.Map;
+import java.util.Set;
+
+import org.apache.tuscany.sdo.SDOFactory;
+import org.apache.tuscany.sdo.SDOPackage;
+import org.apache.tuscany.sdo.util.BasicSequence;
+import org.eclipse.emf.common.notify.Notification;
+import org.eclipse.emf.common.notify.NotificationChain;
+import org.eclipse.emf.common.notify.Notifier;
+import org.eclipse.emf.common.util.BasicEList;
+import org.eclipse.emf.common.util.EList;
+import org.eclipse.emf.common.util.UniqueEList;
+import org.eclipse.emf.ecore.EAttribute;
+import org.eclipse.emf.ecore.EClass;
+import org.eclipse.emf.ecore.EObject;
+import org.eclipse.emf.ecore.EStructuralFeature;
+import org.eclipse.emf.ecore.InternalEObject;
+import org.eclipse.emf.ecore.change.ChangeDescription;
+import org.eclipse.emf.ecore.change.FeatureChange;
+import org.eclipse.emf.ecore.change.impl.ChangeDescriptionImpl;
+import org.eclipse.emf.ecore.change.util.ChangeRecorder;
+import org.eclipse.emf.ecore.impl.ENotificationImpl;
+import org.eclipse.emf.ecore.util.BasicExtendedMetaData;
+import org.eclipse.emf.ecore.util.DelegatingFeatureMap;
+import org.eclipse.emf.ecore.util.EcoreUtil;
+import org.eclipse.emf.ecore.util.FeatureMapUtil;
+import org.eclipse.emf.ecore.util.InternalEList;
+
+import commonj.sdo.ChangeSummary;
+//import commonj.sdo.ChangeSummary.Setting;
+
+import commonj.sdo.DataGraph;
+import commonj.sdo.DataObject;
+import commonj.sdo.Property;
+import commonj.sdo.Sequence;
+
+
+/**
+ * <!-- begin-user-doc -->
+ * An implementation of the model object '<em><b>EChange Summary</b></em>'.
+ * <!-- end-user-doc -->
+ * <p>
+ * The following features are implemented:
+ * <ul>
+ * <li>{@link org.apache.tuscany.sdo.impl.ChangeSummaryImpl#getEDataGraph <em>EData Graph</em>}</li>
+ * </ul>
+ * </p>
+ *
+ * @generated
+ */
+public class ChangeSummaryImpl extends ChangeDescriptionImpl implements ChangeSummary
+{
+ /**
+ * The cached value of the '{@link #getEDataGraph() <em>EData Graph</em>}' reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #getEDataGraph()
+ * @generated
+ * @ordered
+ */
+ protected DataGraph eDataGraph = null;
+
+ protected ChangeRecorder changeRecorder = null;
+ protected EList cachedObjectsToDetach = null;
+ protected HashMap cachedSDOObjectChanges = new HashMap();
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ protected ChangeSummaryImpl()
+ {
+ super();
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ protected EClass eStaticClass()
+ {
+ return SDOPackage.eINSTANCE.getChangeSummary();
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated NOT
+ */
+ public boolean isLogging()
+ {
+ return changeRecorder != null;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public DataGraph getEDataGraph()
+ {
+ return eDataGraph;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public NotificationChain basicSetEDataGraph(DataGraph newEDataGraph, NotificationChain msgs)
+ {
+ DataGraph oldEDataGraph = eDataGraph;
+ eDataGraph = newEDataGraph;
+ if (eNotificationRequired())
+ {
+ ENotificationImpl notification = new ENotificationImpl(this, Notification.SET, SDOPackage.CHANGE_SUMMARY__EDATA_GRAPH, oldEDataGraph, newEDataGraph);
+ if (msgs == null) msgs = notification; else msgs.add(notification);
+ }
+ return msgs;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public void setEDataGraph(DataGraph newEDataGraph)
+ {
+ if (newEDataGraph != eDataGraph)
+ {
+ NotificationChain msgs = null;
+ if (eDataGraph != null)
+ msgs = ((InternalEObject)eDataGraph).eInverseRemove(this, SDOPackage.DATA_GRAPH__ECHANGE_SUMMARY, DataGraph.class, msgs);
+ if (newEDataGraph != null)
+ msgs = ((InternalEObject)newEDataGraph).eInverseAdd(this, SDOPackage.DATA_GRAPH__ECHANGE_SUMMARY, DataGraph.class, msgs);
+ msgs = basicSetEDataGraph(newEDataGraph, msgs);
+ if (msgs != null) msgs.dispatch();
+ }
+ else if (eNotificationRequired())
+ eNotify(new ENotificationImpl(this, Notification.SET, SDOPackage.CHANGE_SUMMARY__EDATA_GRAPH, newEDataGraph, newEDataGraph));
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated NOT
+ */
+ public void beginLogging()
+ {
+ if (isLogging())
+ {
+ throw new IllegalStateException("Already logging");
+ }
+
+ getObjectsToAttach().clear();
+ getObjectChanges().clear();
+ getResourceChanges().clear();
+
+ oldContainmentInformation = null;
+ changeRecorder = new SDOChangeRecorder();
+ changeRecorder.beginRecording(Collections.singleton(((DataGraphImpl)getEDataGraph()).getRootResource()));
+// if (eNotificationRequired())
+// eNotify(new ENotificationImpl(this, Notification.SET, SDOPackage.ECHANGE_SUMMARY__LOGGING, false, true));
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated NOT
+ */
+ public void resumeLogging()
+ {
+ if (isLogging())
+ {
+ throw new IllegalStateException("Already logging");
+ }
+
+ oldContainmentInformation = null;
+
+ changeRecorder = new SDOChangeRecorder();
+ changeRecorder.beginRecording(this, Collections.singleton(((DataGraphImpl)getEDataGraph()).getRootResource()));
+
+// if (eNotificationRequired())
+// eNotify(new ENotificationImpl(this, Notification.SET, SDOPackage.ECHANGE_SUMMARY__LOGGING, false, true));
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public NotificationChain eInverseAdd(InternalEObject otherEnd, int featureID, Class baseClass, NotificationChain msgs)
+ {
+ if (featureID >= 0)
+ {
+ switch (eDerivedStructuralFeatureID(featureID, baseClass))
+ {
+ case SDOPackage.CHANGE_SUMMARY__EDATA_GRAPH:
+ if (eDataGraph != null)
+ msgs = ((InternalEObject)eDataGraph).eInverseRemove(this, SDOPackage.DATA_GRAPH__ECHANGE_SUMMARY, DataGraph.class, msgs);
+ return basicSetEDataGraph((DataGraph)otherEnd, msgs);
+ default:
+ return eDynamicInverseAdd(otherEnd, featureID, baseClass, msgs);
+ }
+ }
+ if (eInternalContainer() != null)
+ msgs = eBasicRemoveFromContainer(msgs);
+ return eBasicSetContainer(otherEnd, featureID, msgs);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public NotificationChain eInverseRemove(InternalEObject otherEnd, int featureID, Class baseClass, NotificationChain msgs)
+ {
+ if (featureID >= 0)
+ {
+ switch (eDerivedStructuralFeatureID(featureID, baseClass))
+ {
+ case SDOPackage.CHANGE_SUMMARY__OBJECT_CHANGES:
+ return ((InternalEList)getObjectChanges()).basicRemove(otherEnd, msgs);
+ case SDOPackage.CHANGE_SUMMARY__OBJECTS_TO_ATTACH:
+ return ((InternalEList)getObjectsToAttach()).basicRemove(otherEnd, msgs);
+ case SDOPackage.CHANGE_SUMMARY__RESOURCE_CHANGES:
+ return ((InternalEList)getResourceChanges()).basicRemove(otherEnd, msgs);
+ case SDOPackage.CHANGE_SUMMARY__EDATA_GRAPH:
+ return basicSetEDataGraph(null, msgs);
+ default:
+ return eDynamicInverseRemove(otherEnd, featureID, baseClass, msgs);
+ }
+ }
+ return eBasicSetContainer(null, featureID, msgs);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public Object eGet(int featureID, boolean resolve, boolean coreType)
+ {
+ switch (featureID)
+ {
+ case SDOPackage.CHANGE_SUMMARY__OBJECT_CHANGES:
+ if (coreType) return getObjectChanges();
+ else return getObjectChanges().map();
+ case SDOPackage.CHANGE_SUMMARY__OBJECTS_TO_DETACH:
+ return getObjectsToDetach();
+ case SDOPackage.CHANGE_SUMMARY__OBJECTS_TO_ATTACH:
+ return getObjectsToAttach();
+ case SDOPackage.CHANGE_SUMMARY__RESOURCE_CHANGES:
+ return getResourceChanges();
+ case SDOPackage.CHANGE_SUMMARY__EDATA_GRAPH:
+ return getEDataGraph();
+ }
+ return eDynamicGet(featureID, resolve, coreType);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public void eSet(int featureID, Object newValue)
+ {
+ switch (featureID)
+ {
+ case SDOPackage.CHANGE_SUMMARY__OBJECT_CHANGES:
+ ((EStructuralFeature.Setting)getObjectChanges()).set(newValue);
+ return;
+ case SDOPackage.CHANGE_SUMMARY__OBJECTS_TO_DETACH:
+ getObjectsToDetach().clear();
+ getObjectsToDetach().addAll((Collection)newValue);
+ return;
+ case SDOPackage.CHANGE_SUMMARY__OBJECTS_TO_ATTACH:
+ getObjectsToAttach().clear();
+ getObjectsToAttach().addAll((Collection)newValue);
+ return;
+ case SDOPackage.CHANGE_SUMMARY__RESOURCE_CHANGES:
+ getResourceChanges().clear();
+ getResourceChanges().addAll((Collection)newValue);
+ return;
+ case SDOPackage.CHANGE_SUMMARY__EDATA_GRAPH:
+ setEDataGraph((DataGraph)newValue);
+ return;
+ }
+ eDynamicSet(featureID, newValue);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public void eUnset(int featureID)
+ {
+ switch (featureID)
+ {
+ case SDOPackage.CHANGE_SUMMARY__OBJECT_CHANGES:
+ getObjectChanges().clear();
+ return;
+ case SDOPackage.CHANGE_SUMMARY__OBJECTS_TO_DETACH:
+ getObjectsToDetach().clear();
+ return;
+ case SDOPackage.CHANGE_SUMMARY__OBJECTS_TO_ATTACH:
+ getObjectsToAttach().clear();
+ return;
+ case SDOPackage.CHANGE_SUMMARY__RESOURCE_CHANGES:
+ getResourceChanges().clear();
+ return;
+ case SDOPackage.CHANGE_SUMMARY__EDATA_GRAPH:
+ setEDataGraph((DataGraph)null);
+ return;
+ }
+ eDynamicUnset(featureID);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public boolean eIsSet(int featureID)
+ {
+ switch (featureID)
+ {
+ case SDOPackage.CHANGE_SUMMARY__OBJECT_CHANGES:
+ return objectChanges != null && !objectChanges.isEmpty();
+ case SDOPackage.CHANGE_SUMMARY__OBJECTS_TO_DETACH:
+ return objectsToDetach != null && !objectsToDetach.isEmpty();
+ case SDOPackage.CHANGE_SUMMARY__OBJECTS_TO_ATTACH:
+ return objectsToAttach != null && !objectsToAttach.isEmpty();
+ case SDOPackage.CHANGE_SUMMARY__RESOURCE_CHANGES:
+ return resourceChanges != null && !resourceChanges.isEmpty();
+ case SDOPackage.CHANGE_SUMMARY__EDATA_GRAPH:
+ return eDataGraph != null;
+ }
+ return eDynamicIsSet(featureID);
+ }
+
+ protected class SDOChangeRecorder extends ChangeRecorder
+ {
+ public SDOChangeRecorder()
+ {
+ super();
+ }
+
+ public void beginRecording(ChangeDescription changeDescription, Collection rootObjects)
+ {
+ deletedObjects = null;
+ cachedObjectsToDetach = null;
+ cachedSDOObjectChanges.clear();
+ super.beginRecording(changeDescription, rootObjects);
+ }
+
+ protected ChangeDescription createChangeDescription()
+ {
+ return ChangeSummaryImpl.this;
+ }
+
+ protected FeatureChange createFeatureChange(EObject eObject, EStructuralFeature eStructuralFeature, Object value, boolean isSet)
+ {
+ Property property = (Property)eStructuralFeature;
+ if (property.isReadOnly())
+ {
+ if (((DataObject)eObject).getDataGraph() != null)
+ {
+ throw
+ new IllegalStateException
+ ("The property '" + property.getName() + "' of type '" +
+ property.getContainingType().getName() + "' is read only");
+ }
+ }
+ return (FeatureChange)SDOFactory.eINSTANCE.createChangeSummarySetting(eStructuralFeature, value, isSet);
+ }
+
+ protected void consolidateChanges()
+ {
+ deletedObjects = null;
+ cachedObjectsToDetach = null;
+ cachedSDOObjectChanges.clear();
+ super.consolidateChanges();
+ }
+
+ protected void addAdapter(Notifier notifier)
+ {
+ if (notifier instanceof DataObjectImpl)
+ ((DataObjectImpl)notifier).setChangeRecorder(this);
+ else
+ super.addAdapter(notifier);
+ }
+
+ protected void removeAdapter(Notifier notifier)
+ {
+ if (notifier instanceof DataObjectImpl)
+ ((DataObjectImpl)notifier).setChangeRecorder(null);
+ else
+ super.removeAdapter(notifier);
+ }
+
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated NOT
+ */
+ public void endLogging()
+ {
+ if (!isLogging())
+ {
+ throw new IllegalStateException("Not currently logging");
+ }
+
+ changeRecorder.endRecording();
+ changeRecorder.dispose();
+ changeRecorder = null;
+// if (eNotificationRequired())
+// eNotify(new ENotificationImpl(this, Notification.SET, SDOPackage.ECHANGE_SUMMARY__LOGGING, true, false));
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated NOT
+ */
+ public boolean isCreated(DataObject dataObject)
+ {
+ return getObjectsToDetach().contains(dataObject);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated NOT
+ */
+ public boolean isDeleted(DataObject dataObject)
+ {
+ return getDeletedObjects().contains(dataObject);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated NOT
+ */
+ public List getOldValues(DataObject dataObject)
+ {
+ List sdoSettings = (List)cachedSDOObjectChanges.get(dataObject);
+ if (sdoSettings != null)
+ {
+ return sdoSettings;
+ }
+
+ List settings = (List)getObjectChanges().get(dataObject);
+ if (settings == null)
+ {
+ settings = Collections.EMPTY_LIST;
+ }
+ else
+ {
+ for (int i = 0; i < settings.size(); i++)
+ {
+ FeatureChange change = (FeatureChange)settings.get(i);
+ EStructuralFeature feature = change.getFeature();
+ if (FeatureMapUtil.isFeatureMap(feature))
+ {
+ final List values = (List)change.getValue();
+ if (sdoSettings == null)
+ {
+ sdoSettings = new BasicEList(settings);
+ }
+ DelegatingFeatureMap featureMap = new DelegatingFeatureMap(((InternalEObject)dataObject), feature)
+ {
+ protected final List theList = values;
+
+ protected List delegateList()
+ {
+ return theList;
+ }
+ };
+
+ // create new settings and replace the setting for mixed feature
+ sdoSettings.set(i, SDOFactory.eINSTANCE.createChangeSummarySetting(feature, new BasicSequence(featureMap), change.isSet()));
+ // add all derived features
+ for (int k = 0; k < featureMap.size(); k++)
+ {
+ EStructuralFeature f = featureMap.getEStructuralFeature(k);
+ sdoSettings.add(SDOFactory.eINSTANCE.createChangeSummarySetting(f, featureMap.get(f, false), true));
+ }
+ }
+ }
+ }
+ sdoSettings = (sdoSettings != null) ? sdoSettings : settings;
+ cachedSDOObjectChanges.put(dataObject, sdoSettings);
+ return sdoSettings;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated NOT
+ */
+ public boolean isModified(DataObject dataObject)
+ {
+ return getObjectChanges().containsKey(dataObject) && !isDeleted(dataObject) && !isCreated(dataObject);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated NOT
+ */
+ public void summarize()
+ {
+ if (!isLogging())
+ {
+ throw new IllegalStateException("Not currently logging");
+ }
+
+ changeRecorder.summarize();
+ }
+
+ public Setting getOldValue(DataObject dataObject, Property property)
+ {
+ for (Iterator i = getOldValues(dataObject).iterator(); i.hasNext(); )
+ {
+ Setting setting = (Setting)i.next();
+ if (setting.getProperty() == property)
+ {
+ return setting;
+ }
+ }
+
+ return null;
+ }
+
+ public DataObject getOldContainer(DataObject dataObject)
+ {
+ return (DataObject)getOldContainer((EObject)dataObject);
+ }
+
+ public Property getOldContainmentProperty(DataObject dataObject)
+ {
+ return (Property)getOldContainmentFeature((EObject)dataObject);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated NOT
+ */
+ public Sequence getOldSequence(DataObject dataObject)
+ {
+ EAttribute mixedFeature = BasicExtendedMetaData.INSTANCE.getMixedFeature((EClass)dataObject.getType());
+ if (mixedFeature != null)
+ {
+ return (Sequence)getOldValue(dataObject, (Property)mixedFeature).getValue();
+ }
+ return null;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated NOT
+ */
+ public void undoChanges()
+ {
+ if (isLogging())
+ {
+ changeRecorder.summarize();
+ }
+ apply();
+ }
+
+ public EList getObjectsToDetach()
+ {
+ if (cachedObjectsToDetach == null)
+ {
+ cachedObjectsToDetach = super.getObjectsToDetach();
+ }
+ return cachedObjectsToDetach;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated NOT
+ */
+ public DataGraph getDataGraph()
+ {
+ return getEDataGraph();
+ }
+
+ protected Set deletedObjects;
+
+ protected void preApply(boolean reverse)
+ {
+ super.preApply(reverse);
+ deletedObjects = null;
+ }
+
+ protected Set getDeletedObjects()
+ {
+ if (deletedObjects == null)
+ {
+ deletedObjects = new HashSet();
+ for (Iterator i = EcoreUtil.getAllContents(getObjectsToAttach()); i.hasNext(); )
+ {
+ deletedObjects.add(i.next());
+ }
+ }
+ return deletedObjects;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated NOT
+ */
+ public List getChangedDataObjects()
+ {
+ EList result = new UniqueEList.FastCompare(getDeletedObjects());
+ result.addAll(getObjectsToDetach());
+ for (Iterator i = getObjectChanges().iterator(); i.hasNext(); )
+ {
+ Map.Entry entry = (Map.Entry)i.next();
+ result.add(entry.getKey());
+ }
+ return result;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated NOT
+ */
+ public DataObject getRootObject()
+ {
+ DataGraph dataGraph = getDataGraph();
+ if (dataGraph != null)
+ {
+ return dataGraph.getRootObject();
+ }
+ // TODO: handle ChangeSummary-type property
+ return null;
+ }
+
+} //EChangeSummaryImpl
diff --git a/branches/sdo-java-M2/sdo/impl/src/main/java/org/apache/tuscany/sdo/impl/ChangeSummarySettingImpl.java b/branches/sdo-java-M2/sdo/impl/src/main/java/org/apache/tuscany/sdo/impl/ChangeSummarySettingImpl.java
new file mode 100644
index 0000000000..d1cd1d3e05
--- /dev/null
+++ b/branches/sdo-java-M2/sdo/impl/src/main/java/org/apache/tuscany/sdo/impl/ChangeSummarySettingImpl.java
@@ -0,0 +1,113 @@
+/**
+ *
+ * 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.impl;
+
+
+import java.util.Map;
+
+import org.apache.tuscany.sdo.SDOPackage;
+import org.eclipse.emf.common.util.EList;
+import org.eclipse.emf.ecore.EClass;
+import org.eclipse.emf.ecore.EObject;
+import org.eclipse.emf.ecore.EStructuralFeature;
+import org.eclipse.emf.ecore.change.impl.FeatureChangeImpl;
+
+import commonj.sdo.ChangeSummary;
+import commonj.sdo.Property;
+/**
+ * <!-- begin-user-doc -->
+ * An implementation of the model object '<em><b>EChange Summary Setting</b></em>'.
+ * <!-- end-user-doc -->
+ * <p>
+ * </p>
+ *
+ * @generated
+ */
+public class ChangeSummarySettingImpl extends FeatureChangeImpl implements ChangeSummary.Setting
+{
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ protected ChangeSummarySettingImpl()
+ {
+ super();
+ }
+
+ protected ChangeSummarySettingImpl(EStructuralFeature feature, Object value, boolean isSet)
+ {
+ super(feature, value, isSet);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ protected EClass eStaticClass()
+ {
+ return SDOPackage.eINSTANCE.getChangeSummarySetting();
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated NOT
+ */
+ public Object getValue()
+ {
+ EStructuralFeature feature = getFeature();
+ if (feature.isMany())
+ {
+ if (value == null)
+ {
+ EObject eObject = (EObject)((Map.Entry)eContainer()).getKey();
+ value = getListValue((EList)eObject.eGet(feature));
+ }
+ return value;
+ }
+ else
+ {
+ return super.getValue();
+ }
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated NOT
+ */
+ public Property getProperty()
+ {
+ return (Property)getFeature();
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated NOT
+ */
+ public boolean isSet()
+ {
+ return super.isSet();
+ }
+
+} //EChangeSummarySettingImpl
diff --git a/branches/sdo-java-M2/sdo/impl/src/main/java/org/apache/tuscany/sdo/impl/ClassImpl.java b/branches/sdo-java-M2/sdo/impl/src/main/java/org/apache/tuscany/sdo/impl/ClassImpl.java
new file mode 100644
index 0000000000..581af61285
--- /dev/null
+++ b/branches/sdo-java-M2/sdo/impl/src/main/java/org/apache/tuscany/sdo/impl/ClassImpl.java
@@ -0,0 +1,772 @@
+/**
+ *
+ * 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.impl;
+
+import java.util.HashMap;
+import java.util.Iterator;
+import java.util.List;
+import java.util.Map;
+
+import org.apache.tuscany.sdo.util.DataObjectUtil;
+import org.eclipse.emf.ecore.EClass;
+import org.eclipse.emf.ecore.EStructuralFeature;
+import org.eclipse.emf.ecore.EcorePackage;
+import org.eclipse.emf.ecore.impl.EClassImpl;
+import org.eclipse.emf.ecore.util.ExtendedMetaData;
+
+import commonj.sdo.Property;
+import commonj.sdo.Sequence;
+import commonj.sdo.Type;
+
+/**
+ * <!-- begin-user-doc -->
+ * An implementation of the model object '<em><b>Class</b></em>'.
+ * <!-- end-user-doc -->
+ * <p>
+ * </p>
+ *
+ * @generated
+ */
+public class ClassImpl extends EClassImpl implements Type, org.apache.tuscany.sdo.model.Type/*, DataObject*/
+{
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ protected ClassImpl()
+ {
+ super();
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated NOT
+ */
+ protected EClass eStaticClass()
+ {
+ return EcorePackage.eINSTANCE.getEClass();
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated NOT
+ */
+ public String getURI()
+ {
+ return getEPackage().getNsURI();
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated NOT
+ */
+ public boolean isDataType()
+ {
+ return false;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated NOT
+ */
+ public boolean isOpen()
+ {
+ for (int i = 0, count = getFeatureCount(); i < count; ++i)
+ {
+ EStructuralFeature eStructuralFeature = getEStructuralFeature(i);
+ switch (ExtendedMetaData.INSTANCE.getFeatureKind(eStructuralFeature))
+ {
+ case ExtendedMetaData.ELEMENT_WILDCARD_FEATURE:
+ if (eStructuralFeature == ExtendedMetaData.INSTANCE.getMixedFeature(this)) break;
+ case ExtendedMetaData.ATTRIBUTE_WILDCARD_FEATURE:
+ case ExtendedMetaData.GROUP_FEATURE:
+ return true;
+ }
+ }
+ return false;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated NOT
+ */
+ public boolean isSequenced()
+ {
+ // isSequenced == isMixed
+ return ExtendedMetaData.INSTANCE.getMixedFeature(this) != null;
+ }
+
+ protected List aliasNames = null;
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated NOT
+ */
+ public List getAliasNames()
+ {
+ if (aliasNames == null)
+ {
+ aliasNames = DataObjectUtil.getAliasNames(this);
+ }
+ return aliasNames;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated NOT
+ */
+ public List getDeclaredProperties()
+ {
+ return getEStructuralFeatures();
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated NOT
+ */
+ public List getProperties()
+ {
+ return getEAllStructuralFeatures();
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated NOT
+ */
+ public List getBaseTypes()
+ {
+ return getESuperTypes();
+ }
+
+ private void initAliasNames() {
+ Map result = new HashMap();
+ for (Iterator i = getProperties().iterator(); i.hasNext();)
+ {
+ Property property = (Property)i.next();
+ result.put(property.getName(), property);
+
+ List aliasNames = property.getAliasNames();
+ for (int count = aliasNames.size(); count > 0;)
+ {
+ result.put(aliasNames.get(--count), property);
+ }
+ }
+ propertyNameToPropertyMap = result;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated NOT
+ */
+ public Property getProperty(String propertyName)
+ {
+ if (propertyNameToPropertyMap == null) initAliasNames();
+ Property property = (Property)propertyNameToPropertyMap.get(propertyName);
+ if (property == null && !isOpen()) {
+ initAliasNames();
+ property = (Property)propertyNameToPropertyMap.get(propertyName);
+ }
+ return property;
+ }
+
+ protected Map propertyNameToPropertyMap;
+
+ /////////////////////////////////////////////////////////////////////////////////////////////////////////
+ // org.apache.tuscany.sdo.model.Type method implementations
+ /////////////////////////////////////////////////////////////////////////////////////////////////////////
+
+ public List getBaseType() {
+ return this.getBaseTypes();
+ }
+
+ public List getProperty() {
+ return this.getProperties();
+ }
+
+ public List getAliasName() {
+ return this.getAliasNames();
+ }
+
+ public void unsetAbstract() {
+ eUnset(EcorePackage.eINSTANCE.getEClass_Abstract());
+ }
+
+ public boolean isSetAbstract() {
+ return eIsSet(EcorePackage.eINSTANCE.getEClass_Abstract());
+ }
+
+ public Sequence getAny() {
+ throw new UnsupportedOperationException();
+ }
+
+ public Sequence getAnyAttribute() {
+ throw new UnsupportedOperationException();
+ }
+
+ public void setDataType(boolean value) {
+ throw new UnsupportedOperationException("Type is frozen and cannot be modified");
+ }
+
+ public void unsetDataType() {
+ throw new UnsupportedOperationException("Type is frozen and cannot be modified");
+ }
+
+ public boolean isSetDataType() {
+ return false;
+ }
+
+ public void setOpen(boolean value) {
+ throw new UnsupportedOperationException("Type is frozen and cannot be modified");
+ }
+
+ public void unsetOpen() {
+ throw new UnsupportedOperationException("Type is frozen and cannot be modified");
+ }
+
+ public boolean isSetOpen() {
+ return isOpen();
+ }
+
+ public void setSequenced(boolean value) {
+ throw new UnsupportedOperationException("Type is frozen and cannot be modified");
+ }
+
+ public void unsetSequenced() {
+ throw new UnsupportedOperationException("Type is frozen and cannot be modified");
+ }
+
+ public boolean isSetSequenced() {
+ return isSequenced();
+ }
+
+ public void setUri(String value) {
+ throw new UnsupportedOperationException("Type is frozen and cannot be modified");
+ }
+
+ public String getUri() {
+ return getURI();
+ }
+
+ /////////////////////////////////////////////////////////////////////////////////////////////////////////
+ // DataObject method implementations
+ /////////////////////////////////////////////////////////////////////////////////////////////////////////
+ /*
+ public Object get(int propertyIndex) {
+ return DataObjectUtil.get(this, propertyIndex);
+ }
+
+ public void set(int propertyIndex, Object value) {
+ throw new UnsupportedOperationException("Type is frozen and cannot be modified");
+ }
+
+ public boolean isSet(int propertyIndex) {
+ return DataObjectUtil.isSet(this, propertyIndex);
+ }
+
+ public void unset(int propertyIndex) {
+ throw new UnsupportedOperationException("Type is frozen and cannot be modified");
+ }
+
+ public Object get(Property property) {
+ return DataObjectUtil.get(this, ((EStructuralFeature)property).getFeatureID());
+ }
+
+ public void set(Property property, Object value) {
+ throw new UnsupportedOperationException("Type is frozen and cannot be modified");
+ }
+
+ public boolean isSet(Property property) {
+ return DataObjectUtil.isSet(this, ((EStructuralFeature)property).getFeatureID());
+ }
+
+ public void unset(Property property) {
+ throw new UnsupportedOperationException("Type is frozen and cannot be modified");
+ }
+
+ public DataObject getContainer() {
+ return (DataObject)eContainer();
+ }
+
+ public Property getContainmentProperty() {
+ return (Property)eContainmentFeature();
+ }
+
+ public Type getType() {
+ return (Type)ModelPackageImpl.eINSTANCE.getType();
+ }
+
+ // Remaining DataObject methods are (will be) implemented as straight delegation to DataObjectUtil
+
+ public Object get(String path) {
+ return DataObjectUtil.get(this, path);
+ }
+
+ public void set(String path, Object value) {
+ throw new UnsupportedOperationException("Type is frozen and cannot be modified");
+ }
+
+ public boolean isSet(String path) {
+ return DataObjectUtil.isSet(this, path);
+ }
+
+ public void unset(String path) {
+ throw new UnsupportedOperationException("Type is frozen and cannot be modified");
+ }
+
+ public boolean getBoolean(String path) {
+ return DataObjectUtil.getBoolean(get(path));
+ }
+
+ public byte getByte(String path) {
+ return DataObjectUtil.getByte(get(path));
+ }
+
+ public char getChar(String path) {
+ return DataObjectUtil.getChar(get(path));
+ }
+
+ public double getDouble(String path) {
+ return DataObjectUtil.getDouble(get(path));
+ }
+
+ public float getFloat(String path) {
+ return DataObjectUtil.getFloat(get(path));
+ }
+
+ public int getInt(String path) {
+ return DataObjectUtil.getInt(get(path));
+ }
+
+ public long getLong(String path) {
+ return DataObjectUtil.getLong(get(path));
+ }
+
+ public short getShort(String path) {
+ return DataObjectUtil.getShort(get(path));
+ }
+
+ public byte[] getBytes(String path) {
+ return DataObjectUtil.getBytes(get(path));
+ }
+
+ public BigDecimal getBigDecimal(String path) {
+ return DataObjectUtil.getBigDecimal(get(path));
+ }
+
+ public BigInteger getBigInteger(String path) {
+ return DataObjectUtil.getBigInteger(get(path));
+ }
+
+ public DataObject getDataObject(String path) {
+ return (DataObject)get(path);
+ }
+
+ public Date getDate(String path) {
+ return DataObjectUtil.getDate(get(path));
+ }
+
+ public String getString(String path) {
+ return DataObjectUtil.getString(get(path));
+ }
+
+ public List getList(String path) {
+ return (List)get(path);
+ }
+
+ public Sequence getSequence(String path) {
+ return (Sequence)get(path);
+ }
+
+ public void setBoolean(String path, boolean value) {
+ set(path, new Boolean(value));
+ }
+
+ public void setByte(String path, byte value) {
+ set(path, new Byte(value));
+ }
+
+ public void setChar(String path, char value) {
+ set(path, new Character(value));
+ }
+
+ public void setDouble(String path, double value) {
+ set(path, new Double(value));
+ }
+
+ public void setFloat(String path, float value) {
+ set(path, new Float(value));
+ }
+
+ public void setInt(String path, int value) {
+ set(path, new Integer(value));
+ }
+
+ public void setLong(String path, long value) {
+ set(path, new Long(value));
+ }
+
+ public void setShort(String path, short value) {
+ set(path, new Short(value));
+ }
+
+ public void setBytes(String path, byte[] value) {
+ set(path, value);
+ }
+
+ public void setBigDecimal(String path, BigDecimal value) {
+ set(path, value);
+ }
+
+ public void setBigInteger(String path, BigInteger value) {
+ set(path, value);
+ }
+
+ public void setDataObject(String path, DataObject value) {
+ set(path, value);
+ }
+
+ public void setDate(String path, Date value) {
+ set(path, value);
+ }
+
+ public void setString(String path, String value) {
+ set(path, value);
+ }
+
+ public void setList(String path, List value) {
+ set(path, value);
+ }
+
+ public boolean getBoolean(int propertyIndex) {
+ return DataObjectUtil.getBoolean(this, propertyIndex);
+ }
+
+ public byte getByte(int propertyIndex) {
+ return DataObjectUtil.getByte(this, propertyIndex);
+ }
+
+ public char getChar(int propertyIndex) {
+ return DataObjectUtil.getChar(this, propertyIndex);
+ }
+
+ public double getDouble(int propertyIndex) {
+ return DataObjectUtil.getDouble(this, propertyIndex);
+ }
+
+ public float getFloat(int propertyIndex) {
+ return DataObjectUtil.getFloat(this, propertyIndex);
+ }
+
+ public int getInt(int propertyIndex) {
+ return DataObjectUtil.getInt(this, propertyIndex);
+ }
+
+ public long getLong(int propertyIndex) {
+ return DataObjectUtil.getLong(this, propertyIndex);
+ }
+
+ public short getShort(int propertyIndex) {
+ return DataObjectUtil.getShort(this, propertyIndex);
+ }
+
+ public byte[] getBytes(int propertyIndex) {
+ return DataObjectUtil.getBytes(this, propertyIndex);
+ }
+
+ public BigDecimal getBigDecimal(int propertyIndex) {
+ return DataObjectUtil.getBigDecimal(this, propertyIndex);
+ }
+
+ public BigInteger getBigInteger(int propertyIndex) {
+ return DataObjectUtil.getBigInteger(this, propertyIndex);
+ }
+
+ public DataObject getDataObject(int propertyIndex) {
+ return DataObjectUtil.getDataObject(this, propertyIndex);
+ }
+
+ public Date getDate(int propertyIndex) {
+ return DataObjectUtil.getDate(this, propertyIndex);
+ }
+
+ public String getString(int propertyIndex) {
+ return DataObjectUtil.getString(this, propertyIndex);
+ }
+
+ public List getList(int propertyIndex) {
+ return DataObjectUtil.getList(this, propertyIndex);
+ }
+
+ public Sequence getSequence(int propertyIndex) {
+ return DataObjectUtil.getSequence(this, propertyIndex);
+ }
+
+ public void setBoolean(int propertyIndex, boolean value) {
+ set(propertyIndex, new Boolean(value));
+ }
+
+ public void setByte(int propertyIndex, byte value) {
+ set(propertyIndex, new Byte(value));
+ }
+
+ public void setChar(int propertyIndex, char value) {
+ set(propertyIndex, new Character(value));
+ }
+
+ public void setDouble(int propertyIndex, double value) {
+ set(propertyIndex, new Double(value));
+ }
+
+ public void setFloat(int propertyIndex, float value) {
+ set(propertyIndex, new Float(value));
+ }
+
+ public void setInt(int propertyIndex, int value) {
+ set(propertyIndex, new Integer(value));
+ }
+
+ public void setLong(int propertyIndex, long value) {
+ set(propertyIndex, new Long(value));
+ }
+
+ public void setShort(int propertyIndex, short value) {
+ set(propertyIndex, new Short(value));
+ }
+
+ public void setBytes(int propertyIndex, byte[] value) {
+ set(propertyIndex, value);
+ }
+
+ public void setBigDecimal(int propertyIndex, BigDecimal value) {
+ set(propertyIndex, value);
+ }
+
+ public void setBigInteger(int propertyIndex, BigInteger value) {
+ set(propertyIndex, value);
+ }
+
+ public void setDataObject(int propertyIndex, DataObject value) {
+ set(propertyIndex, value);
+ }
+
+ public void setDate(int propertyIndex, Date value) {
+ set(propertyIndex, value);
+ }
+
+ public void setString(int propertyIndex, String value) {
+ set(propertyIndex, value);
+ }
+
+ public void setList(int propertyIndex, List value) {
+ set(propertyIndex, value);
+ }
+
+ public boolean getBoolean(Property property) {
+ return DataObjectUtil.getBoolean(this, property);
+ }
+
+ public byte getByte(Property property) {
+ return DataObjectUtil.getByte(this, property);
+ }
+
+ public char getChar(Property property) {
+ return DataObjectUtil.getChar(this, property);
+ }
+
+ public double getDouble(Property property) {
+ return DataObjectUtil.getDouble(this, property);
+ }
+
+ public float getFloat(Property property) {
+ return DataObjectUtil.getFloat(this, property);
+ }
+
+ public int getInt(Property property) {
+ return DataObjectUtil.getInt(this, property);
+ }
+
+ public long getLong(Property property) {
+ return DataObjectUtil.getLong(this, property);
+ }
+
+ public short getShort(Property property) {
+ return DataObjectUtil.getShort(this, property);
+ }
+
+ public byte[] getBytes(Property property) {
+ return DataObjectUtil.getBytes(this, property);
+ }
+
+ public BigDecimal getBigDecimal(Property property) {
+ return DataObjectUtil.getBigDecimal(this, property);
+ }
+
+ public BigInteger getBigInteger(Property property) {
+ return DataObjectUtil.getBigInteger(this, property);
+ }
+
+ public DataObject getDataObject(Property property) {
+ return DataObjectUtil.getDataObject(this, property);
+ }
+
+ public Date getDate(Property property) {
+ return DataObjectUtil.getDate(this, property);
+ }
+
+ public String getString(Property property) {
+ return DataObjectUtil.getString(this, property);
+ }
+
+ public List getList(Property property) {
+ return DataObjectUtil.getList(this, property);
+ }
+
+ public Sequence getSequence(Property property) {
+ return DataObjectUtil.getSequence(this, property);
+ }
+
+ public void setBoolean(Property property, boolean value) {
+ set(property, new Boolean(value));
+ }
+
+ public void setByte(Property property, byte value) {
+ set(property, new Byte(value));
+ }
+
+ public void setChar(Property property, char value) {
+ set(property, new Character(value));
+ }
+
+ public void setDouble(Property property, double value) {
+ set(property, new Double(value));
+ }
+
+ public void setFloat(Property property, float value) {
+ set(property, new Float(value));
+ }
+
+ public void setInt(Property property, int value) {
+ set(property, new Integer(value));
+ }
+
+ public void setLong(Property property, long value) {
+ set(property, new Long(value));
+ }
+
+ public void setShort(Property property, short value) {
+ set(property, new Short(value));
+ }
+
+ public void setBytes(Property property, byte[] value) {
+ set(property, value);
+ }
+
+ public void setBigDecimal(Property property, BigDecimal value) {
+ set(property, value);
+ }
+
+ public void setBigInteger(Property property, BigInteger value) {
+ set(property, value);
+ }
+
+ public void setDataObject(Property property, DataObject value) {
+ set(property, value);
+ }
+
+ public void setDate(Property property, Date value) {
+ set(property, value);
+ }
+
+ public void setString(Property property, String value) {
+ set(property, value);
+ }
+
+ public void setList(Property property, List value) {
+ set(property, value);
+ }
+
+ public DataObject createDataObject(String propertyName) {
+ throw new UnsupportedOperationException("Type is frozen and cannot be modified");
+ }
+
+ public DataObject createDataObject(int propertyIndex) {
+ throw new UnsupportedOperationException("Type is frozen and cannot be modified");
+ }
+
+ public DataObject createDataObject(Property property) {
+ throw new UnsupportedOperationException("Type is frozen and cannot be modified");
+ }
+
+ public DataObject createDataObject(String propertyName, String namespaceURI, String typeName) {
+ throw new UnsupportedOperationException("Type is frozen and cannot be modified");
+ }
+
+ public DataObject createDataObject(int propertyIndex, String namespaceURI, String typeName) {
+ throw new UnsupportedOperationException("Type is frozen and cannot be modified");
+ }
+
+ public DataObject createDataObject(Property property, Type type) {
+ throw new UnsupportedOperationException("Type is frozen and cannot be modified");
+ }
+
+ public void delete() {
+ throw new UnsupportedOperationException("Type is frozen and cannot be modified");
+ }
+
+ public DataGraph getDataGraph() {
+ return DataObjectUtil.getDataGraph(this);
+ }
+
+ public Sequence getSequence() {
+ EAttribute mixedFeature = BasicExtendedMetaData.INSTANCE.getMixedFeature(eClass());
+ return mixedFeature != null ? (Sequence)eGet(mixedFeature, true, false) : null;
+ }
+
+ public List getInstanceProperties() {
+ return DataObjectUtil.getInstanceProperties(this);
+ }
+
+ public DataObject getRootObject() {
+ return DataObjectUtil.getRootObject(this);
+ }
+
+ public ChangeSummary getChangeSummary() {
+ // TODO: implement this method
+ throw new UnsupportedOperationException();
+ }
+
+ public void detach() {
+ throw new UnsupportedOperationException("Type is frozen and cannot be modified");
+ //DataObjectUtil.detach(this);
+ }
+ */
+
+} //ClassTypeImpl
diff --git a/branches/sdo-java-M2/sdo/impl/src/main/java/org/apache/tuscany/sdo/impl/DataGraphImpl.java b/branches/sdo-java-M2/sdo/impl/src/main/java/org/apache/tuscany/sdo/impl/DataGraphImpl.java
new file mode 100644
index 0000000000..704ec8c3bc
--- /dev/null
+++ b/branches/sdo-java-M2/sdo/impl/src/main/java/org/apache/tuscany/sdo/impl/DataGraphImpl.java
@@ -0,0 +1,823 @@
+/**
+ *
+ * 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.impl;
+
+
+import java.io.ByteArrayInputStream;
+import java.io.ByteArrayOutputStream;
+import java.io.Externalizable;
+import java.io.IOException;
+import java.io.ObjectInput;
+import java.io.ObjectOutput;
+import java.io.Serializable;
+import java.util.Iterator;
+import java.util.List;
+
+import org.apache.tuscany.sdo.SDOFactory;
+import org.apache.tuscany.sdo.SDOPackage;
+import org.apache.tuscany.sdo.util.DataObjectUtil;
+import org.eclipse.emf.common.notify.Adapter;
+import org.eclipse.emf.common.notify.Notification;
+import org.eclipse.emf.common.notify.NotificationChain;
+import org.eclipse.emf.common.notify.Notifier;
+import org.eclipse.emf.common.util.URI;
+import org.eclipse.emf.ecore.EClass;
+import org.eclipse.emf.ecore.EClassifier;
+import org.eclipse.emf.ecore.EObject;
+import org.eclipse.emf.ecore.EPackage;
+import org.eclipse.emf.ecore.InternalEObject;
+import org.eclipse.emf.ecore.impl.ENotificationImpl;
+import org.eclipse.emf.ecore.impl.EObjectImpl;
+import org.eclipse.emf.ecore.resource.Resource;
+import org.eclipse.emf.ecore.resource.ResourceSet;
+import org.eclipse.emf.ecore.util.BasicExtendedMetaData;
+import org.eclipse.emf.ecore.util.ExtendedMetaData;
+
+import commonj.sdo.ChangeSummary;
+import commonj.sdo.DataGraph;
+import commonj.sdo.DataObject;
+import commonj.sdo.Type;
+import commonj.sdo.helper.TypeHelper;
+
+
+/**
+ * <!-- begin-user-doc -->
+ * An implementation of the model object '<em><b>EData Graph</b></em>'.
+ * @extends DataGraph, Adapter, Serializable
+ * <!-- end-user-doc -->
+ * <p>
+ * The following features are implemented:
+ * <ul>
+ * <li>{@link org.apache.tuscany.sdo.impl.DataGraphImpl#getResourceSet <em>Resource Set</em>}</li>
+ * <li>{@link org.apache.tuscany.sdo.impl.DataGraphImpl#getRootResource <em>Root Resource</em>}</li>
+ * <li>{@link org.apache.tuscany.sdo.impl.DataGraphImpl#getEChangeSummary <em>EChange Summary</em>}</li>
+ * <li>{@link org.apache.tuscany.sdo.impl.DataGraphImpl#getERootObject <em>ERoot Object</em>}</li>
+ * </ul>
+ * </p>
+ *
+ * @generated
+ */
+public class DataGraphImpl extends EObjectImpl implements DataGraph, Adapter, Serializable
+{
+ /**
+ * The default value of the '{@link #getResourceSet() <em>Resource Set</em>}' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #getResourceSet()
+ * @generated
+ * @ordered
+ */
+ protected static final ResourceSet RESOURCE_SET_EDEFAULT = null;
+
+ /**
+ * The cached value of the '{@link #getResourceSet() <em>Resource Set</em>}' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #getResourceSet()
+ * @generated
+ * @ordered
+ */
+ protected ResourceSet resourceSet = RESOURCE_SET_EDEFAULT;
+
+ /**
+ * The default value of the '{@link #getRootResource() <em>Root Resource</em>}' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #getRootResource()
+ * @generated
+ * @ordered
+ */
+ protected static final Resource ROOT_RESOURCE_EDEFAULT = null;
+
+ /**
+ * The cached value of the '{@link #getEChangeSummary() <em>EChange Summary</em>}' reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #getEChangeSummary()
+ * @generated
+ * @ordered
+ */
+ protected ChangeSummary eChangeSummary = null;
+
+ /**
+ * The cached value of the '{@link #getERootObject() <em>ERoot Object</em>}' reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #getERootObject()
+ * @generated
+ * @ordered
+ */
+ protected EObject eRootObject = null;
+
+ /**
+ * The cached extended metadata to wrap the resource set's package registry.
+ */
+ protected ExtendedMetaData extendedMetaData;
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ protected DataGraphImpl()
+ {
+ super();
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ protected EClass eStaticClass()
+ {
+ return SDOPackage.eINSTANCE.getDataGraph();
+ }
+
+ public boolean isAdapterForType(Object type)
+ {
+ return type == DataGraph.class;
+ }
+
+ public void notifyChanged(Notification msg)
+ {
+ }
+
+ public Notifier getTarget()
+ {
+ return getResourceSet();
+ }
+
+ public void setTarget(Notifier newTarget)
+ {
+ }
+
+ protected ExtendedMetaData getExtendedMetaData()
+ {
+ if (extendedMetaData == null)
+ {
+ getResourceSet();
+ }
+ return extendedMetaData;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated NOT
+ */
+ public ResourceSet getResourceSet()
+ {
+ if (resourceSet == null)
+ {
+ if (eResource() != null)
+ {
+ resourceSet = eResource().getResourceSet();
+ }
+ if (resourceSet == null)
+ {
+ resourceSet = createResourceSet();
+ }
+ initializeResourceSet(resourceSet);
+ }
+ return resourceSet;
+ }
+
+ protected ResourceSet createResourceSet()
+ {
+ return DataObjectUtil.createResourceSet();
+ }
+
+ protected Resource createRootResource()
+ {
+ Resource result = resourceSet.createResource(URI.createURI("root.xml"));
+ result.getContents().clear();
+ return result;
+ }
+
+ protected Resource createChangeSummaryResource()
+ {
+ Resource result = resourceSet.createResource(URI.createURI("change-summary.xml"));
+ result.getContents().clear();
+ return result;
+ }
+
+ protected void initializeResourceSet(ResourceSet resourceSet)
+ {
+ if (resourceSet == null)
+ {
+ extendedMetaData = null;
+ }
+ else
+ {
+ extendedMetaData = new BasicExtendedMetaData(resourceSet.getPackageRegistry());
+ resourceSet.eAdapters().add(this);
+ }
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public void setResourceSetGen(ResourceSet newResourceSet)
+ {
+ ResourceSet oldResourceSet = resourceSet;
+ resourceSet = newResourceSet;
+ if (eNotificationRequired())
+ eNotify(new ENotificationImpl(this, Notification.SET, SDOPackage.DATA_GRAPH__RESOURCE_SET, oldResourceSet, resourceSet));
+ }
+
+ public void setResourceSet(ResourceSet newResourceSet)
+ {
+ if (resourceSet != null)
+ {
+ resourceSet.eAdapters().remove(this);
+ }
+ setResourceSetGen(newResourceSet);
+ initializeResourceSet(newResourceSet);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated NOT
+ */
+ public Resource getRootResource()
+ {
+ if (eRootObject == null)
+ {
+ Resource result = getResourceSet().getResource(URI.createURI("root.xml"), false);
+ if (result == null)
+ {
+ result = createRootResource();
+ }
+
+ return result;
+ }
+ else
+ {
+ return eRootObject.eResource();
+ }
+ }
+
+ public Resource getDataGraphResource()
+ {
+ Resource result = eResource();
+ if (result == null)
+ {
+ result = getResourceSet().createResource(URI.createURI("all.datagraph"));
+ result.getContents().add(this);
+ }
+ return result;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public ChangeSummary getEChangeSummary()
+ {
+ return eChangeSummary;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public NotificationChain basicSetEChangeSummary(ChangeSummary newEChangeSummary, NotificationChain msgs)
+ {
+ ChangeSummary oldEChangeSummary = eChangeSummary;
+ eChangeSummary = newEChangeSummary;
+ if (eNotificationRequired())
+ {
+ ENotificationImpl notification = new ENotificationImpl(this, Notification.SET, SDOPackage.DATA_GRAPH__ECHANGE_SUMMARY, oldEChangeSummary, newEChangeSummary);
+ if (msgs == null) msgs = notification; else msgs.add(notification);
+ }
+ return msgs;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public void setEChangeSummary(ChangeSummary newEChangeSummary)
+ {
+ if (newEChangeSummary != eChangeSummary)
+ {
+ NotificationChain msgs = null;
+ if (eChangeSummary != null)
+ msgs = ((InternalEObject)eChangeSummary).eInverseRemove(this, SDOPackage.CHANGE_SUMMARY__EDATA_GRAPH, ChangeSummary.class, msgs);
+ if (newEChangeSummary != null)
+ msgs = ((InternalEObject)newEChangeSummary).eInverseAdd(this, SDOPackage.CHANGE_SUMMARY__EDATA_GRAPH, ChangeSummary.class, msgs);
+ msgs = basicSetEChangeSummary(newEChangeSummary, msgs);
+ if (msgs != null) msgs.dispatch();
+ }
+ else if (eNotificationRequired())
+ eNotify(new ENotificationImpl(this, Notification.SET, SDOPackage.DATA_GRAPH__ECHANGE_SUMMARY, newEChangeSummary, newEChangeSummary));
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EObject getERootObject()
+ {
+ return eRootObject;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public void setERootObjectGen(EObject newERootObject)
+ {
+ EObject oldERootObject = eRootObject;
+ eRootObject = newERootObject;
+ if (eNotificationRequired())
+ eNotify(new ENotificationImpl(this, Notification.SET, SDOPackage.DATA_GRAPH__EROOT_OBJECT, oldERootObject, eRootObject));
+ }
+
+ public void setERootObject(EObject newERootObject)
+ {
+ // If there is a resource set already...
+ //
+ if (resourceSet != null)
+ {
+ // Get the root resource and if there's a root object in it already, clear it.
+ // Then set the root object and add it to the root resource.
+ //
+ List contents = getRootResource().getContents();
+ if (eRootObject != null)
+ {
+ contents.clear();
+ }
+ setERootObjectGen(newERootObject);
+ if (newERootObject != null)
+ {
+ contents.add(newERootObject);
+ }
+ }
+ else
+ {
+ // Set the root object and see if it has a resource we can reuse.
+ //
+ setERootObjectGen(newERootObject);
+ Resource rootResource = newERootObject.eResource();
+ if (rootResource != null)
+ {
+ // If there is no resource set
+ //
+ if (rootResource.getResourceSet() == null)
+ {
+ // Demand create one and add this resource to it.
+ //
+ getResourceSet().getResources().add(rootResource);
+ }
+ else
+ {
+ // Reuse the existing resource set.
+ //
+ setResourceSet(rootResource.getResourceSet());
+ }
+ }
+ else
+ {
+ // Demand create the resource set and the root resource, and add to it's contents.
+ //
+ getResourceSet();
+ createRootResource().getContents().add(newERootObject);
+ }
+ }
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated NOT
+ */
+ public EClassifier getEClassifier(String namespaceURI, String typeName)
+ {
+ ExtendedMetaData extendedMetaData = getExtendedMetaData();
+ EPackage ePackage = extendedMetaData.getPackage(namespaceURI);
+ if (ePackage != null)
+ {
+ EClassifier eClassifier = ePackage.getEClassifier(typeName);
+ if (eClassifier == null)
+ {
+ eClassifier = extendedMetaData.getType(ePackage, typeName);
+ }
+ return eClassifier;
+ }
+ else
+ {
+ return null;
+ }
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated NOT
+ */
+ public Type getType(String namespaceURI, String typeName)
+ {
+ return TypeHelper.INSTANCE.getType(namespaceURI, typeName);
+ //EClassifier eClassifier = getEClassifier(namespaceURI, typeName);
+ //return eClassifier == null ? null : SDOUtil.getType(eClassifier);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public NotificationChain eInverseAdd(InternalEObject otherEnd, int featureID, Class baseClass, NotificationChain msgs)
+ {
+ if (featureID >= 0)
+ {
+ switch (eDerivedStructuralFeatureID(featureID, baseClass))
+ {
+ case SDOPackage.DATA_GRAPH__ECHANGE_SUMMARY:
+ if (eChangeSummary != null)
+ msgs = ((InternalEObject)eChangeSummary).eInverseRemove(this, SDOPackage.CHANGE_SUMMARY__EDATA_GRAPH, ChangeSummary.class, msgs);
+ return basicSetEChangeSummary((ChangeSummary)otherEnd, msgs);
+ default:
+ return eDynamicInverseAdd(otherEnd, featureID, baseClass, msgs);
+ }
+ }
+ if (eInternalContainer() != null)
+ msgs = eBasicRemoveFromContainer(msgs);
+ return eBasicSetContainer(otherEnd, featureID, msgs);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public NotificationChain eInverseRemove(InternalEObject otherEnd, int featureID, Class baseClass, NotificationChain msgs)
+ {
+ if (featureID >= 0)
+ {
+ switch (eDerivedStructuralFeatureID(featureID, baseClass))
+ {
+ case SDOPackage.DATA_GRAPH__ECHANGE_SUMMARY:
+ return basicSetEChangeSummary(null, msgs);
+ default:
+ return eDynamicInverseRemove(otherEnd, featureID, baseClass, msgs);
+ }
+ }
+ return eBasicSetContainer(null, featureID, msgs);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public Object eGet(int featureID, boolean resolve, boolean coreType)
+ {
+ switch (featureID)
+ {
+ case SDOPackage.DATA_GRAPH__RESOURCE_SET:
+ return getResourceSet();
+ case SDOPackage.DATA_GRAPH__ROOT_RESOURCE:
+ return getRootResource();
+ case SDOPackage.DATA_GRAPH__ECHANGE_SUMMARY:
+ return getEChangeSummary();
+ case SDOPackage.DATA_GRAPH__EROOT_OBJECT:
+ return getERootObject();
+ }
+ return eDynamicGet(featureID, resolve, coreType);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public void eSet(int featureID, Object newValue)
+ {
+ switch (featureID)
+ {
+ case SDOPackage.DATA_GRAPH__RESOURCE_SET:
+ setResourceSet((ResourceSet)newValue);
+ return;
+ case SDOPackage.DATA_GRAPH__ECHANGE_SUMMARY:
+ setEChangeSummary((ChangeSummary)newValue);
+ return;
+ case SDOPackage.DATA_GRAPH__EROOT_OBJECT:
+ setERootObject((EObject)newValue);
+ return;
+ }
+ eDynamicSet(featureID, newValue);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public void eUnset(int featureID)
+ {
+ switch (featureID)
+ {
+ case SDOPackage.DATA_GRAPH__RESOURCE_SET:
+ setResourceSet(RESOURCE_SET_EDEFAULT);
+ return;
+ case SDOPackage.DATA_GRAPH__ECHANGE_SUMMARY:
+ setEChangeSummary((ChangeSummary)null);
+ return;
+ case SDOPackage.DATA_GRAPH__EROOT_OBJECT:
+ setERootObject((EObject)null);
+ return;
+ }
+ eDynamicUnset(featureID);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public boolean eIsSet(int featureID)
+ {
+ switch (featureID)
+ {
+ case SDOPackage.DATA_GRAPH__RESOURCE_SET:
+ return RESOURCE_SET_EDEFAULT == null ? resourceSet != null : !RESOURCE_SET_EDEFAULT.equals(resourceSet);
+ case SDOPackage.DATA_GRAPH__ROOT_RESOURCE:
+ return ROOT_RESOURCE_EDEFAULT == null ? getRootResource() != null : !ROOT_RESOURCE_EDEFAULT.equals(getRootResource());
+ case SDOPackage.DATA_GRAPH__ECHANGE_SUMMARY:
+ return eChangeSummary != null;
+ case SDOPackage.DATA_GRAPH__EROOT_OBJECT:
+ return eRootObject != null;
+ }
+ return eDynamicIsSet(featureID);
+ }
+
+ public DataObject createEDataObject(Type type)
+ {
+ return DataObjectUtil.create(type);
+ }
+
+ public DataObject getRootObject()
+ {
+ return (DataObject)getERootObject();
+ }
+
+ public DataObject createRootObject(String namespaceURI, String typeName)
+ {
+ DataObject dataObject = DataObjectUtil.create(getType(namespaceURI, typeName));
+ setERootObject((EObject)dataObject);
+ return dataObject;
+ }
+
+ public DataObject createRootObject(Type type)
+ {
+ DataObject dataObject = DataObjectUtil.create(type);
+ setERootObject((EObject)dataObject);
+ return dataObject;
+ }
+
+ public ChangeSummary getChangeSummary()
+ {
+ //FB is this the right place to create the resources?
+ ChangeSummary changeSummary = getEChangeSummary();
+ if (changeSummary == null)
+ {
+ getRootResource();
+ changeSummary = createEChangeSummary();
+ setEChangeSummary(changeSummary);
+ }
+
+ if (((ChangeSummaryImpl)changeSummary).eResource() == null)
+ {
+ Resource changeSummaryResource = createChangeSummaryResource();
+ changeSummaryResource.getContents().add(changeSummary);
+ }
+
+ return changeSummary;
+ }
+
+ protected ChangeSummaryImpl createEChangeSummary()
+ {
+ return (ChangeSummaryImpl)SDOFactory.eINSTANCE.createChangeSummary();
+ }
+
+ public static class EDataGraphExternalizable implements Externalizable
+ {
+ protected DataGraphImpl eDataGraph;
+ //protected Map writeReplacements = new HashMap();
+
+ public EDataGraphExternalizable()
+ {
+ }
+
+ public EDataGraphExternalizable(DataGraphImpl eDataGraph)
+ {
+ this.eDataGraph = eDataGraph;
+ }
+
+ public void writeExternal(ObjectOutput objectOutput) throws IOException
+ {
+ ByteArrayOutputStream byteArrayOutputStream =
+ new ByteArrayOutputStream()
+ {
+ public byte [] toByteArray()
+ {
+ return super.toByteArray();
+ }
+ };
+
+ eDataGraph.getDataGraphResource().save(byteArrayOutputStream, null);
+ objectOutput.writeInt(byteArrayOutputStream.toByteArray().length);
+ objectOutput.write(byteArrayOutputStream.toByteArray());
+ }
+
+ public void readExternal(ObjectInput objectInput) throws IOException
+ {
+ int length = objectInput.readInt();
+ byte [] bytes = new byte [length];
+ objectInput.readFully(bytes);
+
+ ResourceSet resourceSet = createResourceSet();
+ Resource resource = resourceSet.createResource(URI.createURI("all.datagraph"));
+ resource.load(new ByteArrayInputStream(bytes), null);
+ eDataGraph = (DataGraphImpl)resource.getContents().get(0);
+ }
+
+ protected ResourceSet createResourceSet()
+ {
+ return DataObjectUtil.createResourceSet();
+ }
+
+ /*
+ public Object getWriteReplacement(EObject eObject)
+ {
+ Object result = writeReplacements.get(eObject);
+ if (result == null)
+ {
+ result = new EDataObjectExternalizable(eDataGraph, eObject);
+ writeReplacements.put(eObject, result);
+ }
+ return result;
+ }
+ */
+
+ protected Object readResolve()
+ {
+ return eDataGraph;
+ }
+ }
+
+ /*
+ public static class EDataObjectExternalizable implements Externalizable
+ {
+ protected EObject eObject;
+ protected DataGraphImpl eDataGraph;
+
+ public EDataObjectExternalizable()
+ {
+ }
+
+ public EDataObjectExternalizable(DataGraphImpl eDataGraph, EObject eObject)
+ {
+ this.eDataGraph = eDataGraph;
+ this.eObject = eObject;
+ }
+
+ public void writeExternal(ObjectOutput objectOutput) throws IOException
+ {
+ // Write the data object reference too.
+ String uri = eObject.eResource().getURIFragment(eObject);
+ objectOutput.writeUTF(uri);
+ objectOutput.writeObject(eDataGraph.getWriteReplacement());
+ }
+
+ public void readExternal(ObjectInput objectInput) throws IOException, ClassNotFoundException
+ {
+ String uri = objectInput.readUTF();
+ eDataGraph = (DataGraphImpl)objectInput.readObject();
+ eObject = eDataGraph.getRootResource().getEObject(uri);
+ }
+
+ protected Object readResolve()
+ {
+ return eObject;
+ }
+ }
+ */
+
+ protected EDataGraphExternalizable eDataGraphExternalizable;
+ //protected Adapter modificationTracker;
+
+ public Object getWriteReplacement()
+ {
+ if (eDataGraphExternalizable == null)
+ {
+ eDataGraphExternalizable = createEDataGraphExternalizable();
+ /*
+ getRootResource().setTrackingModification(true);
+ modificationTracker =
+ new AdapterImpl()
+ {
+ public void notifyChanged(Notification notification)
+ {
+ if (notification.getFeatureID(Resource.class) == Resource.RESOURCE__IS_MODIFIED && notification.getNewBooleanValue())
+ {
+ eDataGraphExternalizable = null;
+ modificationTracker = null;
+ ((Resource)target).eAdapters().remove(this);
+ }
+ }
+ };
+ getRootResource().eAdapters().add(modificationTracker);
+ */
+ }
+ return eDataGraphExternalizable;
+ }
+
+ protected EDataGraphExternalizable createEDataGraphExternalizable()
+ {
+ return new EDataGraphExternalizable(this);
+ }
+
+ /*
+ public Object getWriteReplacement(EObject eObject)
+ {
+ return ((EDataGraphExternalizable)getWriteReplacement()).getWriteReplacement(eObject);
+ }
+ */
+
+ public Object writeReplace()
+ {
+ return getWriteReplacement();
+ }
+
+ public EObject eObjectForURIFragmentSegment(String uriFragmentSegment)
+ {
+ if (uriFragmentSegment.startsWith("@models."))
+ {
+ if (resourceSet != null)
+ {
+ int count = Integer.parseInt(uriFragmentSegment.substring(8));
+ for (Iterator i = resourceSet.getResources().iterator(); i.hasNext(); )
+ {
+ Resource ePackageResource = (Resource)i.next();
+ List resourceContents = ePackageResource.getContents();
+ if (resourceContents.size() == 1 && resourceContents.get(0) instanceof EPackage && count-- == 0)
+ {
+ return (EObject)resourceContents.get(0);
+ }
+ }
+ }
+
+ return null;
+ }
+ else
+ {
+ return super.eObjectForURIFragmentSegment(uriFragmentSegment);
+ }
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public String toString()
+ {
+ if (eIsProxy()) return super.toString();
+
+ StringBuffer result = new StringBuffer(super.toString());
+ result.append(" (resourceSet: ");
+ result.append(resourceSet);
+ result.append(')');
+ return result.toString();
+ }
+
+} //EDataGraphImpl
diff --git a/branches/sdo-java-M2/sdo/impl/src/main/java/org/apache/tuscany/sdo/impl/DataObjectBase.java b/branches/sdo-java-M2/sdo/impl/src/main/java/org/apache/tuscany/sdo/impl/DataObjectBase.java
new file mode 100644
index 0000000000..2392d07961
--- /dev/null
+++ b/branches/sdo-java-M2/sdo/impl/src/main/java/org/apache/tuscany/sdo/impl/DataObjectBase.java
@@ -0,0 +1,313 @@
+/**
+ *
+ * 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.impl;
+
+
+import java.util.List;
+
+import org.apache.tuscany.sdo.util.BasicSequence;
+import org.eclipse.emf.common.notify.Notification;
+import org.eclipse.emf.common.notify.NotificationChain;
+import org.eclipse.emf.ecore.EClass;
+import org.eclipse.emf.ecore.EObject;
+import org.eclipse.emf.ecore.InternalEObject;
+import org.eclipse.emf.ecore.impl.ENotificationImpl;
+import org.eclipse.emf.ecore.util.BasicFeatureMap;
+import org.eclipse.emf.ecore.util.EObjectContainmentEList;
+import org.eclipse.emf.ecore.util.EcoreUtil;
+import org.eclipse.emf.ecore.util.FeatureMap;
+import org.eclipse.emf.ecore.util.InternalEList;
+
+
+import commonj.sdo.Sequence;
+import commonj.sdo.Type;
+
+
+/**
+ * Base implementation of the SDO DataObject interface. Used as base class for prototype of EMF-less generated subclasses
+ */
+public abstract class DataObjectBase extends DataObjectImpl
+{
+
+ protected int OPPOSITE_FEATURE_BASE = EOPPOSITE_FEATURE_BASE;
+ ////////////////////////////////////////////////////////////////////////////////////////////////////////////////
+ // Following methods should be proposed SPI for generated subclasses to use
+ ////////////////////////////////////////////////////////////////////////////////////////////////////////////////
+
+ protected boolean isNotifying()
+ {
+ return changeRecorder != null;
+ }
+
+ protected interface ChangeKind
+ {
+ int SET = Notification.SET;
+ int UNSET = Notification.UNSET;
+ int RESOLVE = Notification.RESOLVE;
+ }
+
+ protected void notify(int changeKind, int property, Object oldValue, Object newValue)
+ {
+ eNotify(new ENotificationImpl(this, Notification.SET, property, oldValue, newValue));
+ }
+
+ protected void notify(int changeKind, int property, Object oldValue, Object newValue, boolean isSetChange)
+ {
+ eNotify(new ENotificationImpl(this, Notification.SET, property, oldValue, newValue, isSetChange));
+ }
+
+ protected void notify(int changeKind, int property, double oldDoubleValue, double newDoubleValue, boolean isSetChange)
+ {
+ eNotify(new ENotificationImpl(this, Notification.SET, property, oldDoubleValue, newDoubleValue, isSetChange));
+ }
+
+ protected void notify(int changeKind, int property, boolean oldBooleanValue, boolean newBooleanValue, boolean isSetChange)
+ {
+ eNotify(new ENotificationImpl(this, Notification.SET, property, oldBooleanValue, newBooleanValue, isSetChange));
+ }
+
+ protected interface ListKind
+ {
+ int CONTAINMENT = 0;
+ }
+
+ protected List createPropertyList(int listKind, Class dataClass, int property)
+ {
+ switch (listKind)
+ {
+ case ListKind.CONTAINMENT:
+ return new EObjectContainmentEList(dataClass, this, property);
+ }
+ return null;
+ }
+
+ protected BasicSequence createSequence(int property) {
+ return new BasicSequence(new BasicFeatureMap(this, property));
+ }
+
+ protected Sequence createSequence(Sequence sequence, Type type, int propertyIndex) {
+ return new BasicSequence((FeatureMap.Internal)((FeatureMap.Internal.Wrapper)sequence).featureMap().list(((EClass)type).getEStructuralFeature(propertyIndex)));
+ }
+
+ /*
+ * get the value of the type's property at propertyIndex via the sequence
+ * @param seq
+ * @param type
+ * @param propertyIndex
+ * @return
+ */
+ protected Object get(Sequence seq, Type type, int propertyIndex) {
+ return ((FeatureMap.Internal.Wrapper)seq).featureMap().get(((EClass)type).getEStructuralFeature(propertyIndex), true);
+ }
+
+ protected List getList(Sequence seq, Type type, int propertyIndex) {
+ return ((FeatureMap.Internal.Wrapper)seq).featureMap().list(((EClass)type).getEStructuralFeature(propertyIndex));
+ }
+
+ protected void set(Sequence seq, Type type, int propertyIndex, Object newValue) {
+ ((FeatureMap.Internal)((FeatureMap.Internal.Wrapper)seq).featureMap()).set(((EClass)type).getEStructuralFeature(propertyIndex), newValue);
+ }
+
+ protected void unset(Sequence seq, Type type, int propertyIndex) {
+ ((FeatureMap.Internal)((FeatureMap.Internal.Wrapper)seq).featureMap()).clear(((EClass)type).getEStructuralFeature(propertyIndex));
+
+ }
+ protected boolean isSet(Sequence seq, Type type, int propertyIndex) {
+ return !((FeatureMap.Internal)((FeatureMap.Internal.Wrapper)seq).featureMap()).isEmpty(((EClass)type).getEStructuralFeature(propertyIndex));
+ }
+
+ protected boolean isSequenceEmpty(Sequence sequence) {
+ return ((FeatureMap.Internal.Wrapper)sequence).featureMap().isEmpty();
+ }
+
+ protected void setSequence(Sequence seq, Object newValue) {
+ ((FeatureMap.Internal)((FeatureMap.Internal.Wrapper)seq).featureMap()).set(newValue);
+ }
+
+ protected void unsetSequence(Sequence seq) {
+ ((FeatureMap.Internal.Wrapper)seq).featureMap().clear();
+ }
+
+ protected ChangeContext basicAdd(Sequence seq, Type type, int propertyIndex, Object newValue, ChangeContext changeContext) {
+ ChangeContextImpl changeContextImpl = (ChangeContextImpl)changeContext;
+ changeContextImpl.notificationChain = ((FeatureMap.Internal)((FeatureMap.Internal.Wrapper)seq).featureMap()).basicAdd(((EClass)type).getEStructuralFeature(propertyIndex), newValue, changeContextImpl.notificationChain);
+ return changeContextImpl;
+ }
+
+ protected Object get(int featureID, boolean resolve)
+ {
+ return null;
+ }
+
+ private ChangeContextImpl initializeChangeContext(ChangeContext changeContext)
+ {
+ ChangeContextImpl changeContextImpl;
+ if (changeContext == null)
+ {
+ changeContextImpl = new ChangeContextImpl(null);
+ } else
+ {
+ changeContextImpl = (ChangeContextImpl)changeContext;
+ }
+ return changeContextImpl;
+ }
+
+ protected interface ChangeContext {}
+
+ protected ChangeContext inverseRemove(Object otherEnd, int propertyIndex, ChangeContext changeContext)
+ {
+ ChangeContextImpl changeContextImpl = initializeChangeContext(changeContext);
+ changeContextImpl.notificationChain = super.eInverseRemove((InternalEObject)otherEnd, propertyIndex, changeContextImpl.notificationChain);
+ return changeContextImpl;
+ }
+
+ protected ChangeContext inverseAdd(Object otherEnd, int propertyIndex, ChangeContext changeContext)
+ {
+ ChangeContextImpl changeContextImpl = initializeChangeContext(changeContext);
+ changeContextImpl = (ChangeContextImpl)changeContext;
+ changeContextImpl.notificationChain = super.eInverseAdd((InternalEObject)otherEnd, propertyIndex, changeContextImpl.notificationChain);
+ return changeContextImpl;
+ }
+
+ protected ChangeContext inverseRemove(Object thisEnd, Object otherEnd, int propertyIndex, Class baseClass, ChangeContext changeContext)
+ {
+ ChangeContextImpl changeContextImpl = initializeChangeContext(changeContext);
+ changeContextImpl = (ChangeContextImpl)changeContext;
+ changeContextImpl.notificationChain = ((InternalEObject)thisEnd).eInverseRemove((InternalEObject)otherEnd, propertyIndex, baseClass, changeContextImpl.notificationChain);
+ return changeContextImpl;
+ }
+
+ protected ChangeContext inverseAdd(Object thisEnd, Object otherEnd, int propertyIndex, Class baseClass, ChangeContext changeContext)
+ {
+ ChangeContextImpl changeContextImpl = initializeChangeContext(changeContext);
+ changeContextImpl.notificationChain = ((InternalEObject)thisEnd).eInverseAdd((InternalEObject)otherEnd, propertyIndex, baseClass, changeContextImpl.notificationChain);
+ return changeContextImpl;
+ }
+
+ protected ChangeContext addNotification(Object notifier, int eventType, int featureID, Object oldValue, Object newValue, ChangeContext changeContext)
+ {
+ ENotificationImpl notification = new ENotificationImpl((InternalEObject)notifier, eventType, featureID, oldValue, newValue);
+ ChangeContextImpl changeContextImpl = initializeChangeContext(changeContext);
+ if (changeContextImpl.notificationChain == null) changeContextImpl.notificationChain = notification; else changeContextImpl.notificationChain.add(notification);
+ return changeContextImpl;
+ }
+
+ protected ChangeContext removeFromList(List propertyList, Object objectToRemove, ChangeContext changeContext)
+ {
+ ChangeContextImpl changeContextImpl = initializeChangeContext(changeContext);
+ changeContextImpl.notificationChain = ((InternalEList)propertyList).basicRemove(objectToRemove, changeContextImpl.notificationChain);
+ return changeContextImpl;
+ }
+
+ protected ChangeContext removeFromSequence(Sequence sequence, Object otherEnd, ChangeContext changeContext)
+ {
+ ChangeContextImpl changeContextImpl = initializeChangeContext(changeContext);
+ changeContextImpl.notificationChain = ((InternalEList)((FeatureMap.Internal.Wrapper)sequence).featureMap()).basicRemove(otherEnd, changeContextImpl.notificationChain);
+ return changeContextImpl;
+ }
+
+ protected void dispatch(ChangeContext changeContext)
+ {
+ ChangeContextImpl changeContextImpl = initializeChangeContext(changeContext);
+ if (changeContextImpl.notificationChain != null)
+ {
+ changeContextImpl.notificationChain.dispatch();
+ }
+ }
+
+ protected boolean isProxy()
+ {
+ return eIsProxy();
+ }
+
+ protected Object resolveProxy(Object proxy)
+ {
+ return EcoreUtil.resolve((EObject)proxy, this);
+ }
+
+
+ ////////////////////////////////////////////////////////////////////////////////////////////////////////////////
+ // Following methods override EMF methods to work with pure SDO generated subclasses
+ ////////////////////////////////////////////////////////////////////////////////////////////////////////////////
+
+ public EClass eStaticClass()
+ {
+ return (EClass)getType();
+ }
+
+ public Type getType() // must be overridem in subclasses
+ {
+ throw new UnsupportedOperationException();
+ }
+
+ public Object eGet(int featureID, boolean resolve, boolean coreType)
+ {
+ Object result = get(featureID, resolve);
+ if (coreType)
+ {
+ if (result instanceof FeatureMap.Internal.Wrapper) result = ((FeatureMap.Internal.Wrapper)result).featureMap();
+ }
+ return result;
+ }
+
+ public void eSet(int featureID, Object newValue)
+ {
+ set(featureID, newValue);
+ }
+
+ public void eUnset(int featureID)
+ {
+ unset(featureID);
+ }
+
+ public boolean eIsSet(int featureID)
+ {
+ return isSet(featureID);
+ }
+
+ private class ChangeContextImpl implements ChangeContext
+ {
+ protected NotificationChain notificationChain;
+ public ChangeContextImpl(NotificationChain notificationChain) {
+ this.notificationChain = notificationChain;
+ }
+ }
+
+ public NotificationChain eInverseRemove(InternalEObject otherEnd, int propertyIndex, NotificationChain msgs)
+ {
+ return ((ChangeContextImpl)inverseRemove(otherEnd, propertyIndex, new ChangeContextImpl(msgs))).notificationChain;
+ }
+
+ public String toString()
+ {
+ StringBuffer result = new StringBuffer(getClass().getName());
+ result.append('@');
+ result.append(Integer.toHexString(hashCode()));
+ if (eIsProxy())
+ {
+ result.append(" (proxyURI: ");
+ result.append(eProxyURI());
+ result.append(')');
+ }
+ return result.toString();
+ }
+
+} //DataObjectBase
+
diff --git a/branches/sdo-java-M2/sdo/impl/src/main/java/org/apache/tuscany/sdo/impl/DataObjectImpl.java b/branches/sdo-java-M2/sdo/impl/src/main/java/org/apache/tuscany/sdo/impl/DataObjectImpl.java
new file mode 100644
index 0000000000..7c8dffe02e
--- /dev/null
+++ b/branches/sdo-java-M2/sdo/impl/src/main/java/org/apache/tuscany/sdo/impl/DataObjectImpl.java
@@ -0,0 +1,1511 @@
+/**
+ *
+ * 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.impl;
+
+
+import java.io.ObjectStreamException;
+import java.math.BigDecimal;
+import java.math.BigInteger;
+import java.util.Date;
+import java.util.List;
+
+import org.apache.tuscany.sdo.SDOPackage;
+import org.apache.tuscany.sdo.impl.ChangeSummaryImpl.SDOChangeRecorder;
+import org.apache.tuscany.sdo.util.DataObjectUtil;
+import org.eclipse.emf.common.notify.Notification;
+import org.eclipse.emf.common.util.EList;
+import org.eclipse.emf.common.util.URI;
+import org.eclipse.emf.ecore.EAttribute;
+import org.eclipse.emf.ecore.EClass;
+import org.eclipse.emf.ecore.EStructuralFeature;
+import org.eclipse.emf.ecore.InternalEObject;
+import org.eclipse.emf.ecore.EStructuralFeature.Internal.DynamicValueHolder;
+import org.eclipse.emf.ecore.impl.BasicEObjectImpl;
+import org.eclipse.emf.ecore.resource.Resource;
+import org.eclipse.emf.ecore.util.BasicExtendedMetaData;
+import org.eclipse.emf.ecore.util.EContentsEList;
+import org.eclipse.emf.ecore.util.ECrossReferenceEList;
+
+import commonj.sdo.ChangeSummary;
+import commonj.sdo.DataGraph;
+import commonj.sdo.DataObject;
+import commonj.sdo.Property;
+import commonj.sdo.Sequence;
+import commonj.sdo.Type;
+import commonj.sdo.impl.ExternalizableDelegator;
+
+
+/**
+ * <!-- begin-user-doc -->
+ * Base implementation of the SDO DataObject interface. This implementation allocates the minimum storage
+ * overhead needed for SDO. It provides a complete implementation of the API, but does not, however, allocate
+ * any storage for the actual properties of the data object. It instead requires subclasses for this purpose.
+ * The subclass, DynamicDataObjectImpl serves as a concrete implementation class for dynamic data objects.
+ * Static data object storage is provided by generated classes, which also directly or indirectly derive from
+ * this class.
+ * <!-- end-user-doc -->
+ * <p>
+ * </p>
+ *
+ * @generated
+ */
+public abstract class DataObjectImpl extends BasicEObjectImpl implements DataObject
+{
+ protected InternalEObject eContainer;
+ protected int eContainerFeatureID;
+ protected SDOChangeRecorder changeRecorder;
+ protected Object location; // Resource.Internal (if object is directly contained in a resource) or URI (if it is a proxy)
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ protected DataObjectImpl()
+ {
+ super();
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated NOT
+ */
+ public Object get(int propertyIndex)
+ {
+ return eGet(propertyIndex, true, false);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated NOT
+ */
+ public void set(int propertyIndex, Object value)
+ {
+ eSet(propertyIndex, value);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated NOT
+ */
+ public boolean isSet(int propertyIndex)
+ {
+ return eIsSet(propertyIndex);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated NOT
+ */
+ public void unset(int propertyIndex)
+ {
+ eUnset(propertyIndex);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated NOT
+ */
+ public Object get(Property property)
+ {
+ return eGet((EStructuralFeature)property, true, false);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated NOT
+ */
+ public void set(Property property, Object value)
+ {
+ eSet((EStructuralFeature)property, value);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated NOT
+ */
+ public boolean isSet(Property property)
+ {
+ return eIsSet((EStructuralFeature)property);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated NOT
+ */
+ public void unset(Property property)
+ {
+ eUnset((EStructuralFeature)property);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated NOT
+ */
+ public DataObject getContainer()
+ {
+ return (DataObject)eContainer();
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated NOT
+ */
+ public Property getContainmentProperty()
+ {
+ return (Property)eContainmentFeature();
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated NOT
+ */
+ public Type getType()
+ {
+ return (Type)eClass();
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated NOT
+ */
+ public Object writeReplace() throws ObjectStreamException
+ {
+ return new ExternalizableDelegator(this);
+ }
+
+
+ // Remaining DataObject methods are (will be) implemented as straight delegation to DataObjectUtil
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated NOT
+ */
+ public Object get(String path)
+ {
+ return DataObjectUtil.get(this, path);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated NOT
+ */
+ public void set(String path, Object value)
+ {
+ DataObjectUtil.set(this, path, value);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated NOT
+ */
+ public boolean isSet(String path)
+ {
+ return DataObjectUtil.isSet(this, path);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated NOT
+ */
+ public void unset(String path)
+ {
+ DataObjectUtil.unset(this, path);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated NOT
+ */
+ public DataGraph getDataGraph()
+ {
+ return DataObjectUtil.getDataGraph(this);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated NOT
+ */
+ public BigDecimal getBigDecimal(String path)
+ {
+ return DataObjectUtil.getBigDecimal(get(path));
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated NOT
+ */
+ public BigInteger getBigInteger(String path)
+ {
+ return DataObjectUtil.getBigInteger(get(path));
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated NOT
+ */
+ public boolean getBoolean(String path)
+ {
+ return DataObjectUtil.getBoolean(get(path));
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated NOT
+ */
+ public byte getByte(String path)
+ {
+ return DataObjectUtil.getByte(get(path));
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated NOT
+ */
+ public byte[] getBytes(String path)
+ {
+ return DataObjectUtil.getBytes(get(path));
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated NOT
+ */
+ public char getChar(String path)
+ {
+ return DataObjectUtil.getChar(get(path));
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated NOT
+ */
+ public DataObject getDataObject(String path)
+ {
+ return (DataObject)get(path);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated NOT
+ */
+ public Date getDate(String path)
+ {
+ return DataObjectUtil.getDate(get(path));
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated NOT
+ */
+ public double getDouble(String path)
+ {
+ return DataObjectUtil.getDouble(get(path));
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated NOT
+ */
+ public float getFloat(String path)
+ {
+ return DataObjectUtil.getFloat(get(path));
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated NOT
+ */
+ public int getInt(String path)
+ {
+ return DataObjectUtil.getInt(get(path));
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated NOT
+ */
+ public List getList(String path)
+ {
+ return (List)get(path);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated NOT
+ */
+ public long getLong(String path)
+ {
+ return DataObjectUtil.getLong(get(path));
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated NOT
+ */
+ public Sequence getSequence(String path)
+ {
+ return (Sequence)get(path);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated NOT
+ */
+ public short getShort(String path)
+ {
+ return DataObjectUtil.getShort(get(path));
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated NOT
+ */
+ public String getString(String path)
+ {
+ return DataObjectUtil.getString(get(path));
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated NOT
+ */
+ public void setBigDecimal(String path, BigDecimal value)
+ {
+ DataObjectUtil.setBigDecimal(this, path, value);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated NOT
+ */
+ public void setBigInteger(String path, BigInteger value)
+ {
+ DataObjectUtil.setBigInteger(this, path, value);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated NOT
+ */
+ public void setBoolean(String path, boolean value)
+ {
+ DataObjectUtil.setBoolean(this, path, value);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated NOT
+ */
+ public void setByte(String path, byte value)
+ {
+ DataObjectUtil.setByte(this, path, value);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated NOT
+ */
+ public void setBytes(String path, byte[] value)
+ {
+ DataObjectUtil.setBytes(this, path, value);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated NOT
+ */
+ public void setChar(String path, char value)
+ {
+ DataObjectUtil.setChar(this, path, value);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated NOT
+ */
+ public void setDataObject(String path, DataObject value)
+ {
+ DataObjectUtil.set(this, path, value);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated NOT
+ */
+ public void setDate(String path, Date value)
+ {
+ DataObjectUtil.setDate(this,path,value);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated NOT
+ */
+ public void setDouble(String path, double value)
+ {
+ DataObjectUtil.setDouble(this, path, value);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated NOT
+ */
+ public void setFloat(String path, float value)
+ {
+ DataObjectUtil.setFloat(this, path, value);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated NOT
+ */
+ public void setInt(String path, int value)
+ {
+ DataObjectUtil.setInt(this, path, value);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated NOT
+ */
+ public void setList(String path, List value)
+ {
+ DataObjectUtil.set(this, path, value);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated NOT
+ */
+ public void setLong(String path, long value)
+ {
+ DataObjectUtil.setLong(this, path, value);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated NOT
+ */
+ public void setShort(String path, short value)
+ {
+ DataObjectUtil.setShort(this, path, value);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated NOT
+ */
+ public void setString(String path, String value)
+ {
+ DataObjectUtil.setString(this, path, value);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated NOT
+ */
+ public BigDecimal getBigDecimal(int propertyIndex)
+ {
+ return DataObjectUtil.getBigDecimal(this, propertyIndex);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated NOT
+ */
+ public BigInteger getBigInteger(int propertyIndex)
+ {
+ return DataObjectUtil.getBigInteger(this,propertyIndex);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated NOT
+ */
+ public boolean getBoolean(int propertyIndex)
+ {
+ return DataObjectUtil.getBoolean(this, propertyIndex);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated NOT
+ */
+ public byte getByte(int propertyIndex)
+ {
+ return DataObjectUtil.getByte(this, propertyIndex);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated NOT
+ */
+ public byte[] getBytes(int propertyIndex)
+ {
+ return DataObjectUtil.getBytes(this, propertyIndex);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated NOT
+ */
+ public char getChar(int propertyIndex)
+ {
+ return DataObjectUtil.getChar(this, propertyIndex);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated NOT
+ */
+ public DataObject getDataObject(int propertyIndex)
+ {
+ return DataObjectUtil.getDataObject(this, propertyIndex);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated NOT
+ */
+ public Date getDate(int propertyIndex)
+ {
+ return DataObjectUtil.getDate(this,propertyIndex);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated NOT
+ */
+ public double getDouble(int propertyIndex)
+ {
+ return DataObjectUtil.getDouble(this, propertyIndex);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated NOT
+ */
+ public float getFloat(int propertyIndex)
+ {
+ return DataObjectUtil.getFloat(this,propertyIndex);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated NOT
+ */
+ public int getInt(int propertyIndex)
+ {
+ return DataObjectUtil.getInt(this,propertyIndex);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated NOT
+ */
+ public List getList(int propertyIndex)
+ {
+ return DataObjectUtil.getList(this, propertyIndex);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated NOT
+ */
+ public long getLong(int propertyIndex)
+ {
+ return DataObjectUtil.getLong(this,propertyIndex);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated NOT
+ */
+ public Sequence getSequence(int propertyIndex)
+ {
+ return DataObjectUtil.getSequence(this, propertyIndex);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated NOT
+ */
+ public short getShort(int propertyIndex)
+ {
+ return DataObjectUtil.getShort(this,propertyIndex);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated NOT
+ */
+ public String getString(int propertyIndex)
+ {
+ return DataObjectUtil.getString(this,propertyIndex);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated NOT
+ */
+ public void setBigDecimal(int propertyIndex, BigDecimal value)
+ {
+ DataObjectUtil.setBigDecimal(this, propertyIndex, value);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated NOT
+ */
+ public void setBigInteger(int propertyIndex, BigInteger value)
+ {
+ DataObjectUtil.setBigInteger(this, propertyIndex, value);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated NOT
+ */
+ public void setBoolean(int propertyIndex, boolean value)
+ {
+ DataObjectUtil.setBoolean(this, propertyIndex, value);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated NOT
+ */
+ public void setByte(int propertyIndex, byte value)
+ {
+ DataObjectUtil.setByte(this, propertyIndex, value);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated NOT
+ */
+ public void setBytes(int propertyIndex, byte[] value)
+ {
+ DataObjectUtil.setBytes(this, propertyIndex, value);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated NOT
+ */
+ public void setChar(int propertyIndex, char value)
+ {
+ DataObjectUtil.setChar(this, propertyIndex, value);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated NOT
+ */
+ public void setDataObject(int propertyIndex, DataObject value)
+ {
+ DataObjectUtil.setDataObject(this, propertyIndex, value);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated NOT
+ */
+ public void setDate(int propertyIndex, Date value)
+ {
+ DataObjectUtil.setDate(this, propertyIndex, value);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated NOT
+ */
+ public void setDouble(int propertyIndex, double value)
+ {
+ DataObjectUtil.setDouble(this, propertyIndex, value);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated NOT
+ */
+ public void setFloat(int propertyIndex, float value)
+ {
+ DataObjectUtil.setFloat(this, propertyIndex, value);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated NOT
+ */
+ public void setInt(int propertyIndex, int value)
+ {
+ DataObjectUtil.setInt(this, propertyIndex, value);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated NOT
+ */
+ public void setList(int propertyIndex, List value)
+ {
+ DataObjectUtil.setList(this, propertyIndex, value);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated NOT
+ */
+ public void setLong(int propertyIndex, long value)
+ {
+ DataObjectUtil.setLong(this, propertyIndex, value);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated NOT
+ */
+ public void setShort(int propertyIndex, short value)
+ {
+ DataObjectUtil.setShort(this, propertyIndex, value);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated NOT
+ */
+ public void setString(int propertyIndex, String value)
+ {
+ DataObjectUtil.setString(this, propertyIndex, value);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated NOT
+ */
+ public BigDecimal getBigDecimal(Property property)
+ {
+ return DataObjectUtil.getBigDecimal(this, property);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated NOT
+ */
+ public BigInteger getBigInteger(Property property)
+ {
+ return DataObjectUtil.getBigInteger(this, property);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated NOT
+ */
+ public boolean getBoolean(Property property)
+ {
+ return DataObjectUtil.getBoolean(this, property);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated NOT
+ */
+ public byte getByte(Property property)
+ {
+ return DataObjectUtil.getByte(this, property);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated NOT
+ */
+ public byte[] getBytes(Property property)
+ {
+ return DataObjectUtil.getBytes(this, property);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated NOT
+ */
+ public char getChar(Property property)
+ {
+ return DataObjectUtil.getChar(this, property);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated NOT
+ */
+ public DataObject getDataObject(Property property)
+ {
+ return (DataObject)DataObjectUtil.getDataObject(this,property);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated NOT
+ */
+ public Date getDate(Property property)
+ {
+ return DataObjectUtil.getDate(this, property);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated NOT
+ */
+ public double getDouble(Property property)
+ {
+ return DataObjectUtil.getDouble(this, property);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated NOT
+ */
+ public float getFloat(Property property)
+ {
+ return DataObjectUtil.getFloat(this, property);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated NOT
+ */
+ public int getInt(Property property)
+ {
+ return DataObjectUtil.getInt(this, property);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated NOT
+ */
+ public List getList(Property property)
+ {
+ return (List)DataObjectUtil.getList(this, property);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated NOT
+ */
+ public long getLong(Property property)
+ {
+ return DataObjectUtil.getLong(this, property);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated NOT
+ */
+ public Sequence getSequence(Property property)
+ {
+ return (Sequence)DataObjectUtil.getSequence(this, property);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated NOT
+ */
+ public short getShort(Property property)
+ {
+ return DataObjectUtil.getShort(this, property);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated NOT
+ */
+ public String getString(Property property)
+ {
+ return DataObjectUtil.getString(this, property);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated NOT
+ */
+ public void setBigDecimal(Property property, BigDecimal value)
+ {
+ DataObjectUtil.setBigDecimal(this,property, value);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated NOT
+ */
+ public void setBigInteger(Property property, BigInteger value)
+ {
+ DataObjectUtil.setBigInteger(this,property, value);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated NOT
+ */
+ public void setBoolean(Property property, boolean value)
+ {
+ DataObjectUtil.setBoolean(this,property, value);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated NOT
+ */
+ public void setByte(Property property, byte value)
+ {
+ DataObjectUtil.setByte(this,property, value);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated NOT
+ */
+ public void setBytes(Property property, byte[] value)
+ {
+ DataObjectUtil.setBytes(this,property, value);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated NOT
+ */
+ public void setChar(Property property, char value)
+ {
+ DataObjectUtil.setChar(this,property, value);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated NOT
+ */
+ public void setDataObject(Property property, DataObject value)
+ {
+ DataObjectUtil.setDataObject(this,property, value);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated NOT
+ */
+ public void setDate(Property property, Date value)
+ {
+ DataObjectUtil.setDate(this,property, value);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated NOT
+ */
+ public void setDouble(Property property, double value)
+ {
+ DataObjectUtil.setDouble(this,property, value);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated NOT
+ */
+ public void setFloat(Property property, float value)
+ {
+ DataObjectUtil.setFloat(this,property, value);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated NOT
+ */
+ public void setInt(Property property, int value)
+ {
+ DataObjectUtil.setInt(this,property, value);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated NOT
+ */
+ public void setList(Property property, List value)
+ {
+ DataObjectUtil.setList(this,property, value);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated NOT
+ */
+ public void setLong(Property property, long value)
+ {
+ DataObjectUtil.setLong(this,property, value);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated NOT
+ */
+ public void setShort(Property property, short value)
+ {
+ DataObjectUtil.setShort(this,property, value);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated NOT
+ */
+ public void setString(Property property, String value)
+ {
+ DataObjectUtil.setString(this,property, value);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated NOT
+ */
+ public DataObject createDataObject(String propertyName)
+ {
+ return DataObjectUtil.createDataObject(this, propertyName);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated NOT
+ */
+ public DataObject createDataObject(int propertyIndex)
+ {
+ return DataObjectUtil.createDataObject(this, propertyIndex);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated NOT
+ */
+ public DataObject createDataObject(Property property)
+ {
+ return DataObjectUtil.createDataObject(this,property);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated NOT
+ */
+ public DataObject createDataObject(String propertyName, String namespaceURI, String typeName)
+ {
+ return DataObjectUtil.createDataObject(this, propertyName, namespaceURI, typeName);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated NOT
+ */
+ public DataObject createDataObject(int propertyIndex, String namespaceURI, String typeName)
+ {
+ return DataObjectUtil.createDataObject(this, propertyIndex, namespaceURI, typeName);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated NOT
+ */
+ public DataObject createDataObject(Property property, Type type)
+ {
+ return DataObjectUtil.createDataObject(this, property, type);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated NOT
+ */
+ public void delete()
+ {
+ DataObjectUtil.delete(this);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated NOT
+ */
+ public Sequence getSequence()
+ {
+ EAttribute mixedFeature = BasicExtendedMetaData.INSTANCE.getMixedFeature(eClass());
+ return mixedFeature != null ? (Sequence)eGet(mixedFeature, true, false) : null;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated NOT
+ */
+ public List getInstanceProperties()
+ {
+ return DataObjectUtil.getInstanceProperties(this);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated NOT
+ */
+ public Property getProperty(String propertyName)
+ {
+ return DataObjectUtil.getProperty(this, propertyName);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated NOT
+ */
+ public DataObject getRootObject()
+ {
+ return DataObjectUtil.getRootObject(this);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated NOT
+ */
+ public ChangeSummary getChangeSummary()
+ {
+ return DataObjectUtil.getChangeSummary(this);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated NOT
+ */
+ public void detach()
+ {
+ DataObjectUtil.detach(this);
+ }
+
+ ////////////////////////////////////////////////////////////////////////////////////////////////////////////////
+ // Following methods customize BasicEObjectImpl, optimized for SDO
+ ////////////////////////////////////////////////////////////////////////////////////////////////////////////////
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ protected EClass eStaticClass()
+ {
+ return SDOPackage.eINSTANCE.getDataObject();
+ }
+
+ public boolean eNotificationRequired()
+ {
+ return changeRecorder != null;
+ }
+
+ public void eNotify(Notification notification)
+ {
+ changeRecorder.notifyChanged(notification);
+ }
+
+ public void setChangeRecorder(SDOChangeRecorder changeRecorder)
+ {
+ if (this.changeRecorder != null)
+ {
+ this.changeRecorder.unsetTarget(this);
+ }
+
+ if (changeRecorder != null)
+ {
+ changeRecorder.setTarget(this);
+ }
+
+ this.changeRecorder = changeRecorder;
+ }
+
+ public InternalEObject eInternalContainer()
+ {
+ return eContainer;
+ }
+
+ public int eContainerFeatureID()
+ {
+ return eContainerFeatureID;
+ }
+
+ protected void eBasicSetContainer(InternalEObject newContainer, int newContainerFeatureID)
+ {
+ eContainer = newContainer;
+ eContainerFeatureID = newContainerFeatureID;
+ }
+
+ public EClass eClass()
+ {
+ return eStaticClass();
+ }
+
+ public EList eContents()
+ {
+ return new EContentsEList(this);
+ }
+
+ public EList eCrossReferences()
+ {
+ return new ECrossReferenceEList(this);
+ }
+
+ public Resource.Internal eDirectResource()
+ {
+ return location instanceof Resource.Internal ? (Resource.Internal)location : null;
+ }
+
+ protected EClass eDynamicClass()
+ {
+ return null;
+ }
+
+ protected boolean eHasSettings()
+ {
+ return false;
+ }
+
+ public boolean eIsProxy()
+ {
+ return location instanceof URI;
+ }
+
+ public URI eProxyURI()
+ {
+ return location instanceof URI ? (URI)location : null;
+ }
+
+ public void eSetClass(EClass eClass)
+ {
+ throw new UnsupportedOperationException();
+ }
+
+ protected void eSetDirectResource(Resource.Internal resource)
+ {
+ location = resource;
+ }
+
+ public void eSetProxyURI(URI uri)
+ {
+ location = uri;
+ }
+
+ protected DynamicValueHolder eSettings()
+ {
+ return null;
+ }
+
+ public Object eGet(int featureID, boolean resolve, boolean coreType)
+ {
+ return eDynamicGet(featureID, resolve, coreType);
+ }
+
+ public void eSet(int featureID, Object newValue)
+ {
+ eDynamicSet(featureID, newValue);
+ }
+
+ public void eUnset(int featureID)
+ {
+ eDynamicUnset(featureID);
+ }
+
+ public boolean eIsSet(int featureID)
+ {
+ return eDynamicIsSet(featureID);
+ }
+
+ public Object eDynamicGet(int featureID, boolean resolve, boolean coreType)
+ {
+ return eOpenGet(DataObjectUtil.getOpenFeature(this, featureID), resolve);
+ }
+
+ public void eDynamicSet(int featureID, Object newValue)
+ {
+ eOpenSet(DataObjectUtil.getOpenFeature(this, featureID), newValue);
+ }
+
+ public void eDynamicUnset(int featureID)
+ {
+ eOpenUnset(DataObjectUtil.getOpenFeature(this, featureID));
+ }
+
+ public boolean eDynamicIsSet(int featureID)
+ {
+ return eOpenIsSet(DataObjectUtil.getOpenFeature(this, featureID));
+ }
+
+ /*
+ public int eDerivedStructuralFeatureID(EStructuralFeature eStructuralFeature)
+ {
+ Class containerClass = eStructuralFeature.getContainerClass();
+ return
+ containerClass == null ?
+ eClass().getFeatureID(eStructuralFeature) :
+ containerClass.isInstance(this) ?
+ eDerivedStructuralFeatureID(eStructuralFeature.getFeatureID(), containerClass) :
+ -1;
+ }
+
+ public void eOpenSet(EStructuralFeature eFeature, Object newValue)
+ {
+ EStructuralFeature openFeature = ExtendedMetaData.INSTANCE.getAffiliation(eClass(), eFeature);
+ if (openFeature == null)
+ {
+ openFeature = (EStructuralFeature)eClass().getEStructuralFeature("any");
+ }
+ if (openFeature != null)
+ {
+ if (!FeatureMapUtil.isFeatureMap(openFeature))
+ {
+ openFeature = ExtendedMetaData.INSTANCE.getGroup(openFeature);
+ }
+ FeatureMap featureMap = (FeatureMap)eGet(openFeature);
+ ((FeatureMap.Internal)featureMap).set(eFeature, newValue);
+ }
+ else
+ {
+ throw new IllegalArgumentException("The feature '" + eFeature.getName() + "' is not a valid changeable feature");
+ }
+ }
+ */
+
+} //DataObjectImpl
+
diff --git a/branches/sdo-java-M2/sdo/impl/src/main/java/org/apache/tuscany/sdo/impl/DataTypeImpl.java b/branches/sdo-java-M2/sdo/impl/src/main/java/org/apache/tuscany/sdo/impl/DataTypeImpl.java
new file mode 100644
index 0000000000..4e676741be
--- /dev/null
+++ b/branches/sdo-java-M2/sdo/impl/src/main/java/org/apache/tuscany/sdo/impl/DataTypeImpl.java
@@ -0,0 +1,753 @@
+/**
+ *
+ * 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.impl;
+
+import java.util.Collections;
+import java.util.List;
+
+import org.apache.tuscany.sdo.util.DataObjectUtil;
+import org.eclipse.emf.ecore.EClass;
+import org.eclipse.emf.ecore.EDataType;
+import org.eclipse.emf.ecore.EcorePackage;
+import org.eclipse.emf.ecore.impl.EDataTypeImpl;
+import org.eclipse.emf.ecore.util.ExtendedMetaData;
+
+import commonj.sdo.Property;
+import commonj.sdo.Sequence;
+import commonj.sdo.Type;
+
+/**
+ * <!-- begin-user-doc -->
+ * An implementation of the model object '<em><b>Data Type</b></em>'.
+ * <!-- end-user-doc -->
+ * <p>
+ * </p>
+ *
+ * @generated
+ */
+public class DataTypeImpl extends EDataTypeImpl implements Type, org.apache.tuscany.sdo.model.Type/*, DataObject*/
+{
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ protected DataTypeImpl()
+ {
+ super();
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated NOT
+ */
+ protected EClass eStaticClass()
+ {
+ return EcorePackage.eINSTANCE.getEDataType();
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated NOT
+ */
+ public String getURI()
+ {
+ return getEPackage().getNsURI();
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated NOT
+ */
+ public boolean isDataType()
+ {
+ return true;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated NOT
+ */
+ public boolean isOpen()
+ {
+ return false;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated NOT
+ */
+ public boolean isSequenced()
+ {
+ return false;
+ }
+
+ protected List aliasNames = null;
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated NOT
+ */
+ public List getAliasNames()
+ {
+ if (aliasNames == null)
+ {
+ aliasNames = DataObjectUtil.getAliasNames(this);
+ }
+ return aliasNames;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated NOT
+ */
+ public List getDeclaredProperties()
+ {
+ return Collections.EMPTY_LIST;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated NOT
+ */
+ public List getProperties()
+ {
+ return Collections.EMPTY_LIST;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated NOT
+ */
+ public List getBaseTypes()
+ {
+ EDataType dataType = ExtendedMetaData.INSTANCE.getBaseType(this);
+ if (dataType == null)
+ {
+ return Collections.EMPTY_LIST;
+ }
+ else
+ {
+ return Collections.singletonList(dataType);
+ }
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated NOT
+ */
+ public Property getProperty(String propertyName)
+ {
+ return null;
+ }
+
+ /////////////////////////////////////////////////////////////////////////////////////////////////////////
+ // org.apache.tuscany.sdo.model.Type method implementations
+ /////////////////////////////////////////////////////////////////////////////////////////////////////////
+
+ public List getBaseType() {
+ return this.getBaseTypes();
+ }
+
+ public List getProperty() {
+ return this.getProperties();
+ }
+
+ public List getAliasName() {
+ return this.getAliasNames();
+ }
+
+ public Sequence getAny() {
+ throw new UnsupportedOperationException();
+ }
+
+ public Sequence getAnyAttribute() {
+ throw new UnsupportedOperationException();
+ }
+
+ public boolean isAbstract()
+ {
+ return false;
+ }
+
+ public void setAbstract(boolean value) {
+ throw new UnsupportedOperationException("Type is frozen and cannot be modified");
+ }
+
+ public boolean isSetAbstract() {
+ return false;
+ }
+
+ public void unsetAbstract() {
+ throw new UnsupportedOperationException("Type is frozen and cannot be modified");
+ }
+
+ public void setDataType(boolean value) {
+ throw new UnsupportedOperationException("Type is frozen and cannot be modified");
+ }
+
+ public void unsetDataType() {
+ throw new UnsupportedOperationException("Type is frozen and cannot be modified");
+ }
+
+ public boolean isSetDataType() {
+ return true;
+ }
+
+ public void setOpen(boolean value) {
+ throw new UnsupportedOperationException("Type is frozen and cannot be modified");
+ }
+
+ public void unsetOpen() {
+ throw new UnsupportedOperationException("Type is frozen and cannot be modified");
+ }
+
+ public boolean isSetOpen() {
+ return false;
+ }
+
+ public void setSequenced(boolean value) {
+ throw new UnsupportedOperationException("Type is frozen and cannot be modified");
+ }
+
+ public void unsetSequenced() {
+ throw new UnsupportedOperationException("Type is frozen and cannot be modified");
+ }
+
+ public boolean isSetSequenced() {
+ return false;
+ }
+
+ public void setUri(String value) {
+ throw new UnsupportedOperationException("Type is frozen and cannot be modified");
+ }
+
+ public String getUri() {
+ return getURI();
+ }
+
+ /////////////////////////////////////////////////////////////////////////////////////////////////////////
+ // DataObject method implementations
+ /////////////////////////////////////////////////////////////////////////////////////////////////////////
+ /*
+ public Object get(int propertyIndex) {
+ Object ret = DataObjectUtil.get(this, propertyIndex);
+ return (ret != null) ?
+ ret : eGet(propertyIndex, true, false);
+ }
+
+ public void set(int propertyIndex, Object value) {
+ throw new UnsupportedOperationException("Type is frozen and cannot be modified");
+ }
+
+ public boolean isSet(int propertyIndex) {
+ return eIsSet(propertyIndex);
+ }
+
+ public void unset(int propertyIndex) {
+ throw new UnsupportedOperationException("Type is frozen and cannot be modified");
+ }
+
+ public Object get(Property property) {
+ Object ret = DataObjectUtil.get(this, ((EStructuralFeature)property).getFeatureID());
+ return (ret != null) ?
+ ret : eGet((EStructuralFeature)property, true, false);
+ }
+
+ public void set(Property property, Object value) {
+ throw new UnsupportedOperationException("Type is frozen and cannot be modified");
+ }
+
+ public boolean isSet(Property property) {
+ return eIsSet((EStructuralFeature)property);
+ }
+
+ public void unset(Property property) {
+ throw new UnsupportedOperationException("Type is frozen and cannot be modified");
+ }
+
+ public DataObject getContainer() {
+ return (DataObject)eContainer();
+ }
+
+ public Property getContainmentProperty() {
+ return (Property)eContainmentFeature();
+ }
+
+ public Type getType() {
+ return (Type)ModelPackageImpl.eINSTANCE.getType();
+ }
+
+ // Remaining DataObject methods are (will be) implemented as straight delegation to DataObjectUtil
+
+ public Object get(String path) {
+ return DataObjectUtil.get(this, path);
+ }
+
+ public void set(String path, Object value) {
+ throw new UnsupportedOperationException("Type is frozen and cannot be modified");
+ }
+
+ public boolean isSet(String path) {
+ return DataObjectUtil.isSet(this, path);
+ }
+
+ public void unset(String path) {
+ throw new UnsupportedOperationException("Type is frozen and cannot be modified");
+ }
+
+ public boolean getBoolean(String path) {
+ return DataObjectUtil.getBoolean(get(path));
+ }
+
+ public byte getByte(String path) {
+ return DataObjectUtil.getByte(get(path));
+ }
+
+ public char getChar(String path) {
+ return DataObjectUtil.getChar(get(path));
+ }
+
+ public double getDouble(String path) {
+ return DataObjectUtil.getDouble(get(path));
+ }
+
+ public float getFloat(String path) {
+ return DataObjectUtil.getFloat(get(path));
+ }
+
+ public int getInt(String path) {
+ return DataObjectUtil.getInt(get(path));
+ }
+
+ public long getLong(String path) {
+ return DataObjectUtil.getLong(get(path));
+ }
+
+ public short getShort(String path) {
+ return DataObjectUtil.getShort(get(path));
+ }
+
+ public byte[] getBytes(String path) {
+ return DataObjectUtil.getBytes(get(path));
+ }
+
+ public BigDecimal getBigDecimal(String path) {
+ return DataObjectUtil.getBigDecimal(get(path));
+ }
+
+ public BigInteger getBigInteger(String path) {
+ return DataObjectUtil.getBigInteger(get(path));
+ }
+
+ public DataObject getDataObject(String path) {
+ return (DataObject)get(path);
+ }
+
+ public Date getDate(String path) {
+ return DataObjectUtil.getDate(get(path));
+ }
+
+ public String getString(String path) {
+ return DataObjectUtil.getString(get(path));
+ }
+
+ public List getList(String path) {
+ return (List)get(path);
+ }
+
+ public Sequence getSequence(String path) {
+ return (Sequence)get(path);
+ }
+
+ public void setBoolean(String path, boolean value) {
+ set(path, new Boolean(value));
+ }
+
+ public void setByte(String path, byte value) {
+ set(path, new Byte(value));
+ }
+
+ public void setChar(String path, char value) {
+ set(path, new Character(value));
+ }
+
+ public void setDouble(String path, double value) {
+ set(path, new Double(value));
+ }
+
+ public void setFloat(String path, float value) {
+ set(path, new Float(value));
+ }
+
+ public void setInt(String path, int value) {
+ set(path, new Integer(value));
+ }
+
+ public void setLong(String path, long value) {
+ set(path, new Long(value));
+ }
+
+ public void setShort(String path, short value) {
+ set(path, new Short(value));
+ }
+
+ public void setBytes(String path, byte[] value) {
+ set(path, value);
+ }
+
+ public void setBigDecimal(String path, BigDecimal value) {
+ set(path, value);
+ }
+
+ public void setBigInteger(String path, BigInteger value) {
+ set(path, value);
+ }
+
+ public void setDataObject(String path, DataObject value) {
+ set(path, value);
+ }
+
+ public void setDate(String path, Date value) {
+ set(path, value);
+ }
+
+ public void setString(String path, String value) {
+ set(path, value);
+ }
+
+ public void setList(String path, List value) {
+ set(path, value);
+ }
+
+ public boolean getBoolean(int propertyIndex) {
+ return DataObjectUtil.getBoolean(this, propertyIndex);
+ }
+
+ public byte getByte(int propertyIndex) {
+ return DataObjectUtil.getByte(this, propertyIndex);
+ }
+
+ public char getChar(int propertyIndex) {
+ return DataObjectUtil.getChar(this, propertyIndex);
+ }
+
+ public double getDouble(int propertyIndex) {
+ return DataObjectUtil.getDouble(this, propertyIndex);
+ }
+
+ public float getFloat(int propertyIndex) {
+ return DataObjectUtil.getFloat(this, propertyIndex);
+ }
+
+ public int getInt(int propertyIndex) {
+ return DataObjectUtil.getInt(this, propertyIndex);
+ }
+
+ public long getLong(int propertyIndex) {
+ return DataObjectUtil.getLong(this, propertyIndex);
+ }
+
+ public short getShort(int propertyIndex) {
+ return DataObjectUtil.getShort(this, propertyIndex);
+ }
+
+ public byte[] getBytes(int propertyIndex) {
+ return DataObjectUtil.getBytes(this, propertyIndex);
+ }
+
+ public BigDecimal getBigDecimal(int propertyIndex) {
+ return DataObjectUtil.getBigDecimal(this, propertyIndex);
+ }
+
+ public BigInteger getBigInteger(int propertyIndex) {
+ return DataObjectUtil.getBigInteger(this, propertyIndex);
+ }
+
+ public DataObject getDataObject(int propertyIndex) {
+ return DataObjectUtil.getDataObject(this, propertyIndex);
+ }
+
+ public Date getDate(int propertyIndex) {
+ return DataObjectUtil.getDate(this, propertyIndex);
+ }
+
+ public String getString(int propertyIndex) {
+ return DataObjectUtil.getString(this, propertyIndex);
+ }
+
+ public List getList(int propertyIndex) {
+ return DataObjectUtil.getList(this, propertyIndex);
+ }
+
+ public Sequence getSequence(int propertyIndex) {
+ return DataObjectUtil.getSequence(this, propertyIndex);
+ }
+
+ public void setBoolean(int propertyIndex, boolean value) {
+ set(propertyIndex, new Boolean(value));
+ }
+
+ public void setByte(int propertyIndex, byte value) {
+ set(propertyIndex, new Byte(value));
+ }
+
+ public void setChar(int propertyIndex, char value) {
+ set(propertyIndex, new Character(value));
+ }
+
+ public void setDouble(int propertyIndex, double value) {
+ set(propertyIndex, new Double(value));
+ }
+
+ public void setFloat(int propertyIndex, float value) {
+ set(propertyIndex, new Float(value));
+ }
+
+ public void setInt(int propertyIndex, int value) {
+ set(propertyIndex, new Integer(value));
+ }
+
+ public void setLong(int propertyIndex, long value) {
+ set(propertyIndex, new Long(value));
+ }
+
+ public void setShort(int propertyIndex, short value) {
+ set(propertyIndex, new Short(value));
+ }
+
+ public void setBytes(int propertyIndex, byte[] value) {
+ set(propertyIndex, value);
+ }
+
+ public void setBigDecimal(int propertyIndex, BigDecimal value) {
+ set(propertyIndex, value);
+ }
+
+ public void setBigInteger(int propertyIndex, BigInteger value) {
+ set(propertyIndex, value);
+ }
+
+ public void setDataObject(int propertyIndex, DataObject value) {
+ set(propertyIndex, value);
+ }
+
+ public void setDate(int propertyIndex, Date value) {
+ set(propertyIndex, value);
+ }
+
+ public void setString(int propertyIndex, String value) {
+ set(propertyIndex, value);
+ }
+
+ public void setList(int propertyIndex, List value) {
+ set(propertyIndex, value);
+ }
+
+ public boolean getBoolean(Property property) {
+ return DataObjectUtil.getBoolean(this, property);
+ }
+
+ public byte getByte(Property property) {
+ return DataObjectUtil.getByte(this, property);
+ }
+
+ public char getChar(Property property) {
+ return DataObjectUtil.getChar(this, property);
+ }
+
+ public double getDouble(Property property) {
+ return DataObjectUtil.getDouble(this, property);
+ }
+
+ public float getFloat(Property property) {
+ return DataObjectUtil.getFloat(this, property);
+ }
+
+ public int getInt(Property property) {
+ return DataObjectUtil.getInt(this, property);
+ }
+
+ public long getLong(Property property) {
+ return DataObjectUtil.getLong(this, property);
+ }
+
+ public short getShort(Property property) {
+ return DataObjectUtil.getShort(this, property);
+ }
+
+ public byte[] getBytes(Property property) {
+ return DataObjectUtil.getBytes(this, property);
+ }
+
+ public BigDecimal getBigDecimal(Property property) {
+ return DataObjectUtil.getBigDecimal(this, property);
+ }
+
+ public BigInteger getBigInteger(Property property) {
+ return DataObjectUtil.getBigInteger(this, property);
+ }
+
+ public DataObject getDataObject(Property property) {
+ return DataObjectUtil.getDataObject(this, property);
+ }
+
+ public Date getDate(Property property) {
+ return DataObjectUtil.getDate(this, property);
+ }
+
+ public String getString(Property property) {
+ return DataObjectUtil.getString(this, property);
+ }
+
+ public List getList(Property property) {
+ return DataObjectUtil.getList(this, property);
+ }
+
+ public Sequence getSequence(Property property) {
+ return DataObjectUtil.getSequence(this, property);
+ }
+
+ public void setBoolean(Property property, boolean value) {
+ set(property, new Boolean(value));
+ }
+
+ public void setByte(Property property, byte value) {
+ set(property, new Byte(value));
+ }
+
+ public void setChar(Property property, char value) {
+ set(property, new Character(value));
+ }
+
+ public void setDouble(Property property, double value) {
+ set(property, new Double(value));
+ }
+
+ public void setFloat(Property property, float value) {
+ set(property, new Float(value));
+ }
+
+ public void setInt(Property property, int value) {
+ set(property, new Integer(value));
+ }
+
+ public void setLong(Property property, long value) {
+ set(property, new Long(value));
+ }
+
+ public void setShort(Property property, short value) {
+ set(property, new Short(value));
+ }
+
+ public void setBytes(Property property, byte[] value) {
+ set(property, value);
+ }
+
+ public void setBigDecimal(Property property, BigDecimal value) {
+ set(property, value);
+ }
+
+ public void setBigInteger(Property property, BigInteger value) {
+ set(property, value);
+ }
+
+ public void setDataObject(Property property, DataObject value) {
+ set(property, value);
+ }
+
+ public void setDate(Property property, Date value) {
+ set(property, value);
+ }
+
+ public void setString(Property property, String value) {
+ set(property, value);
+ }
+
+ public void setList(Property property, List value) {
+ set(property, value);
+ }
+
+ public DataObject createDataObject(String propertyName) {
+ throw new UnsupportedOperationException("Type is frozen and cannot be modified");
+ }
+
+ public DataObject createDataObject(int propertyIndex) {
+ throw new UnsupportedOperationException("Type is frozen and cannot be modified");
+ }
+
+ public DataObject createDataObject(Property property) {
+ throw new UnsupportedOperationException("Type is frozen and cannot be modified");
+ }
+
+ public DataObject createDataObject(String propertyName, String namespaceURI, String typeName) {
+ throw new UnsupportedOperationException("Type is frozen and cannot be modified");
+ }
+
+ public DataObject createDataObject(int propertyIndex, String namespaceURI, String typeName) {
+ throw new UnsupportedOperationException("Type is frozen and cannot be modified");
+ }
+
+ public DataObject createDataObject(Property property, Type type) {
+ throw new UnsupportedOperationException("Type is frozen and cannot be modified");
+ }
+
+ public void delete() {
+ throw new UnsupportedOperationException("Type is frozen and cannot be modified");
+ }
+
+ public DataGraph getDataGraph() {
+ return DataObjectUtil.getDataGraph(this);
+ }
+
+ public Sequence getSequence() {
+ EAttribute mixedFeature = BasicExtendedMetaData.INSTANCE.getMixedFeature(eClass());
+ return mixedFeature != null ? (Sequence)eGet(mixedFeature, true, false) : null;
+ }
+
+ public List getInstanceProperties() {
+ return DataObjectUtil.getInstanceProperties(this);
+ }
+
+ public DataObject getRootObject() {
+ return DataObjectUtil.getRootObject(this);
+ }
+
+ public ChangeSummary getChangeSummary() {
+ // TODO: implement this method
+ throw new UnsupportedOperationException();
+ }
+
+ public void detach() {
+ throw new UnsupportedOperationException("Type is frozen and cannot be modified");
+ }
+ */
+
+} //DataTypeImpl
diff --git a/branches/sdo-java-M2/sdo/impl/src/main/java/org/apache/tuscany/sdo/impl/DynamicDataObjectImpl.java b/branches/sdo-java-M2/sdo/impl/src/main/java/org/apache/tuscany/sdo/impl/DynamicDataObjectImpl.java
new file mode 100644
index 0000000000..20cf2a3058
--- /dev/null
+++ b/branches/sdo-java-M2/sdo/impl/src/main/java/org/apache/tuscany/sdo/impl/DynamicDataObjectImpl.java
@@ -0,0 +1,199 @@
+/**
+ *
+ * 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.impl;
+
+import org.apache.tuscany.sdo.SDOPackage;
+import org.eclipse.emf.ecore.EClass;
+import org.eclipse.emf.ecore.EObject;
+import org.eclipse.emf.ecore.EStructuralFeature;
+import org.eclipse.emf.ecore.impl.EFactoryImpl;
+
+import commonj.sdo.DataObject;
+
+/**
+ * <!-- begin-user-doc -->
+ * An implementation of the model object '<em><b>Dynamic Data Object</b></em>'.
+ * @extends EStructuralFeature.Internal.DynamicValueHolder
+ * <!-- end-user-doc -->
+ * <p>
+ * </p>
+ *
+ * @generated
+ */
+public class DynamicDataObjectImpl extends DataObjectImpl implements DataObject, EStructuralFeature.Internal.DynamicValueHolder
+{
+ protected EClass eClass;
+ protected Object [] eSettings;
+
+ protected static final Object [] ENO_SETTINGS = new Object [0];
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ protected DynamicDataObjectImpl()
+ {
+ super();
+ }
+
+ /**
+ * Creates a dynamic DataObject.
+ */
+ public DynamicDataObjectImpl(EClass eClass)
+ {
+ super();
+ eSetClass(eClass);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ protected EClass eStaticClass()
+ {
+ return SDOPackage.eINSTANCE.getDynamicDataObject();
+ }
+
+ protected int eStaticFeatureCount()
+ {
+ return 0;
+ }
+
+ public int eDerivedStructuralFeatureID(EStructuralFeature eStructuralFeature)
+ {
+ return eClass().getFeatureID(eStructuralFeature);
+ }
+
+ protected boolean eHasSettings()
+ {
+ return eSettings != null;
+ }
+
+ protected EStructuralFeature.Internal.DynamicValueHolder eSettings()
+ {
+ if (eSettings == null)
+ {
+ int size = eClass().getFeatureCount() - eStaticFeatureCount();
+ eSettings = size == 0 ? ENO_SETTINGS : new Object [size];
+ }
+
+ return this;
+ }
+
+ protected EClass eDynamicClass()
+ {
+ return eClass;
+ }
+
+ public EClass eClass()
+ {
+ return eClass;
+ }
+
+ public void eSetClass(EClass eClass)
+ {
+ this.eClass = eClass;
+ }
+
+ public Object dynamicGet(int dynamicFeatureID)
+ {
+ return eSettings[dynamicFeatureID];
+ }
+
+ public void dynamicSet(int dynamicFeatureID, Object value)
+ {
+ eSettings[dynamicFeatureID] = value;
+ }
+
+ public void dynamicUnset(int dynamicFeatureID)
+ {
+ eSettings[dynamicFeatureID] = null;
+ }
+
+ public Object eDynamicGet(int featureID, boolean resolve, boolean coreType)
+ {
+ if (featureID < eClass().getFeatureCount())
+ {
+ EStructuralFeature eFeature = eClass().getEStructuralFeature(featureID);
+ return eSettingDelegate(eFeature).dynamicGet(this, eSettings(), featureID, resolve, coreType);
+ }
+ else
+ {
+ return super.eDynamicGet(featureID, resolve, coreType);
+ }
+ }
+
+ public void eDynamicSet(int featureID, Object newValue)
+ {
+ if (featureID < eClass().getFeatureCount())
+ {
+ EStructuralFeature eFeature = eClass().getEStructuralFeature(featureID);
+ eDynamicSet(featureID, eFeature, newValue);
+ }
+ else
+ {
+ super.eDynamicSet(featureID, newValue);
+ }
+ }
+
+ public void eDynamicUnset(int featureID)
+ {
+ if (featureID < eClass().getFeatureCount())
+ {
+ EStructuralFeature eFeature = eClass().getEStructuralFeature(featureID);
+ eDynamicUnset(featureID, eFeature);
+ }
+ else
+ {
+ super.eDynamicUnset(featureID);
+ }
+ }
+
+ public boolean eDynamicIsSet(int featureID)
+ {
+ if (featureID < eClass().getFeatureCount())
+ {
+ EStructuralFeature eFeature = eClass().getEStructuralFeature(featureID);
+ return eSettingDelegate(eFeature).dynamicIsSet(this, eSettings(), featureID);
+ }
+ else
+ {
+ return super.eDynamicIsSet(featureID);
+ }
+ }
+
+ /**
+ * An EFactoryImpl that creates DynamicEDataObjectImpl instances.
+ */
+ public static class FactoryImpl extends EFactoryImpl
+ {
+ public FactoryImpl()
+ {
+ }
+
+ public EObject basicCreate(EClass eClass)
+ {
+ return new DynamicDataObjectImpl(eClass);
+ }
+ }
+
+} //DynamicDataObjectImpl
diff --git a/branches/sdo-java-M2/sdo/impl/src/main/java/org/apache/tuscany/sdo/impl/DynamicStoreDataObjectImpl.java b/branches/sdo-java-M2/sdo/impl/src/main/java/org/apache/tuscany/sdo/impl/DynamicStoreDataObjectImpl.java
new file mode 100644
index 0000000000..d9d39bad49
--- /dev/null
+++ b/branches/sdo-java-M2/sdo/impl/src/main/java/org/apache/tuscany/sdo/impl/DynamicStoreDataObjectImpl.java
@@ -0,0 +1,91 @@
+/**
+ *
+ * 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.impl;
+
+import org.apache.tuscany.sdo.SDOPackage;
+import org.eclipse.emf.ecore.EClass;
+import org.eclipse.emf.ecore.InternalEObject;
+
+import commonj.sdo.DataObject;
+
+/**
+ * <!-- begin-user-doc -->
+ * An implementation of the model object '<em><b>Dynamic Store Data Object</b></em>'.
+ * <!-- end-user-doc -->
+ * <p>
+ * </p>
+ *
+ * @generated
+ */
+public class DynamicStoreDataObjectImpl extends StoreDataObjectImpl implements DataObject
+{
+ protected EClass eClass;
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ protected DynamicStoreDataObjectImpl()
+ {
+ super();
+ }
+
+ public DynamicStoreDataObjectImpl(InternalEObject.EStore eStore)
+ {
+ super(eStore);
+ }
+
+ public DynamicStoreDataObjectImpl(EClass eClass)
+ {
+ super(eClass);
+ }
+
+ public DynamicStoreDataObjectImpl(EClass eClass, InternalEObject.EStore eStore)
+ {
+ super(eClass, eStore);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ protected EClass eStaticClass()
+ {
+ return SDOPackage.eINSTANCE.getDynamicStoreDataObject();
+ }
+
+ protected EClass eDynamicClass()
+ {
+ return eClass;
+ }
+
+ public EClass eClass()
+ {
+ return eClass;
+ }
+
+ public void eSetClass(EClass eClass)
+ {
+ this.eClass = eClass;
+ }
+
+} //DynamicStoreDataObjectImpl
diff --git a/branches/sdo-java-M2/sdo/impl/src/main/java/org/apache/tuscany/sdo/impl/EnumImpl.java b/branches/sdo-java-M2/sdo/impl/src/main/java/org/apache/tuscany/sdo/impl/EnumImpl.java
new file mode 100644
index 0000000000..af17b7b2b0
--- /dev/null
+++ b/branches/sdo-java-M2/sdo/impl/src/main/java/org/apache/tuscany/sdo/impl/EnumImpl.java
@@ -0,0 +1,173 @@
+/**
+ *
+ * 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.impl;
+
+import java.util.Collections;
+import java.util.List;
+
+//import org.apache.tuscany.sdo.SDOPackage;
+
+import org.apache.tuscany.sdo.util.DataObjectUtil;
+import org.eclipse.emf.ecore.EClass;
+import org.eclipse.emf.ecore.EcorePackage;
+import org.eclipse.emf.ecore.impl.EEnumImpl;
+
+import commonj.sdo.Property;
+import commonj.sdo.Type;
+
+/**
+ * <!-- begin-user-doc -->
+ * An implementation of the model object '<em><b>Enum</b></em>'.
+ * <!-- end-user-doc -->
+ * <p>
+ * </p>
+ *
+ * @generated
+ * @deprecated SDO doesn't support Enum types
+ */
+public class EnumImpl extends EEnumImpl implements Type
+{
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ protected EnumImpl()
+ {
+ super();
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated NOT
+ */
+ protected EClass eStaticClass()
+ {
+ return EcorePackage.eINSTANCE.getEEnum();
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated NOT
+ */
+ public String getURI()
+ {
+ return getEPackage().getNsURI();
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated NOT
+ */
+ public boolean isDataType()
+ {
+ return true;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated NOT
+ */
+ public boolean isOpen()
+ {
+ return false;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated NOT
+ */
+ public boolean isSequenced()
+ {
+ return false;
+ }
+
+ protected List aliasNames = null;
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated NOT
+ */
+ public List getAliasNames()
+ {
+ if (aliasNames == null)
+ {
+ aliasNames = DataObjectUtil.getAliasNames(this);
+ }
+ return aliasNames;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated NOT
+ */
+ public List getDeclaredProperties()
+ {
+ return Collections.EMPTY_LIST;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated NOT
+ */
+ public List getProperties()
+ {
+ return Collections.EMPTY_LIST;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated NOT
+ */
+ public List getBaseTypes()
+ {
+ return Collections.EMPTY_LIST;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated NOT
+ */
+ public Property getProperty(String propertyName)
+ {
+ return null;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated NOT
+ */
+ public boolean isAbstract()
+ {
+ return false;
+ }
+
+} //EnumTypeImpl
diff --git a/branches/sdo-java-M2/sdo/impl/src/main/java/org/apache/tuscany/sdo/impl/FactoryBase.java b/branches/sdo-java-M2/sdo/impl/src/main/java/org/apache/tuscany/sdo/impl/FactoryBase.java
new file mode 100644
index 0000000000..2ff31233d0
--- /dev/null
+++ b/branches/sdo-java-M2/sdo/impl/src/main/java/org/apache/tuscany/sdo/impl/FactoryBase.java
@@ -0,0 +1,304 @@
+/**
+ *
+ * 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.impl;
+
+import org.apache.tuscany.sdo.model.impl.ModelFactoryImpl;
+import org.apache.tuscany.sdo.model.impl.ModelPackageImpl;
+import org.apache.tuscany.sdo.util.DataObjectUtil;
+import org.eclipse.emf.ecore.EAnnotation;
+import org.eclipse.emf.ecore.EAttribute;
+import org.eclipse.emf.ecore.EClass;
+import org.eclipse.emf.ecore.EClassifier;
+import org.eclipse.emf.ecore.EDataType;
+import org.eclipse.emf.ecore.ENamedElement;
+import org.eclipse.emf.ecore.EObject;
+import org.eclipse.emf.ecore.EPackage;
+import org.eclipse.emf.ecore.EReference;
+import org.eclipse.emf.ecore.EStructuralFeature;
+import org.eclipse.emf.ecore.impl.EClassImpl;
+import org.eclipse.emf.ecore.impl.EFactoryImpl;
+import org.eclipse.emf.ecore.impl.EPackageImpl;
+
+import commonj.sdo.DataObject;
+import commonj.sdo.Property;
+import commonj.sdo.Type;
+
+/**
+ */
+public class FactoryBase extends EPackageImpl
+{
+
+ public static final boolean IS_ATTRIBUTE = true;
+
+ protected FactoryBase(String namespaceURI, String namespacePrefix)
+ {
+ super(new SDOEFactoryImpl());
+
+ int index = namespacePrefix.lastIndexOf(".");
+ setName(index != -1 ? namespacePrefix.substring(index + 1) : namespacePrefix);
+ setNsPrefix(namespacePrefix);
+
+ createResource(namespaceURI);
+ setNsURI(namespaceURI);
+ //FIXME ... figure out proper (scoped) way to register static packages
+ EPackage.Registry.INSTANCE.put(namespaceURI, this);
+
+ ((SDOEFactoryImpl)getEFactoryInstance()).sdoFactory = this;
+ }
+
+ public DataObject create(int typeNumber)
+ {
+ return null;
+ }
+
+ protected Type createType(boolean isDataType, int typeNumber)
+ {
+ if (isDataType)
+ return (Type)createEDataType(typeNumber);
+ else
+ return (Type)createEClass(typeNumber);
+ }
+
+ protected void createProperty(boolean isDataType, Type containingType, int propertyNumber)
+ {
+ if (isDataType)
+ createEAttribute((EClass)containingType, propertyNumber);
+ else
+ createEReference((EClass)containingType, propertyNumber);
+ }
+
+ protected void initializeType(Type type, Class instanceClass, String name)
+ {
+ initEClass((EClass)type, instanceClass, name, !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
+ }
+
+ protected void initializeType(Type type, Class instanceClass, String name, boolean isSerializable, boolean isGenerated)
+ {
+ initEDataType((EDataType)type, instanceClass, name, isSerializable, isGenerated);
+ }
+
+ protected void initializeProperty(Property property, Type type, String name, String defaultValue, int lower, int upper, Class containerClass, boolean isReadonly, boolean isUnsettable, boolean isDerived)
+ {
+ initEAttribute((EAttribute)property, (EClassifier)type, name, defaultValue, lower, upper, containerClass, isDerived, isDerived, !isReadonly, isUnsettable, !IS_ID, !IS_UNIQUE, isDerived, IS_ORDERED);
+ }
+
+ protected void initializeProperty(Property property, Type type, String name, String defaultValue, int lower, int upper, Class containerClass, boolean isReadonly, boolean isUnsettable, boolean isDerived, boolean isComposite, Property oppositeProperty)
+ {
+ initEReference((EReference)property, (EClassifier)type, (EReference)oppositeProperty, name, defaultValue, lower, upper, containerClass, isDerived, isDerived, !isReadonly, isComposite, !isComposite /*resolve*/, isUnsettable, IS_UNIQUE, isDerived, IS_ORDERED);
+ }
+
+ protected void createXSDMetaData()
+ {
+ createDocumentRoot();
+ }
+
+ protected void addXSDMapping(String[] xsdMappings, String annotationSource)
+ {
+ addAnnotation((ENamedElement)this, annotationSource, xsdMappings);
+ }
+
+ protected void addXSDMapping(Type type, String[] xsdMappings)
+ {
+ addAnnotation((ENamedElement)type, ANNOTATION_SOURCE, xsdMappings);
+ }
+
+ protected void addXSDMapping(Property property, String[] xsdMappings)
+ {
+ addAnnotation((ENamedElement)property, ANNOTATION_SOURCE, xsdMappings);
+ }
+
+ protected void setInstanceProperty(Type type, String namespaceURI, String propertyName, String propertyValue)
+ {
+ setInstanceProperty((ENamedElement)type, namespaceURI, propertyName, propertyValue);
+ }
+
+ protected void setInstanceProperty(Property property, String namespaceURI, String propertyName, String propertyValue)
+ {
+ setInstanceProperty((ENamedElement)property, namespaceURI, propertyName, propertyValue);
+ }
+
+ private void setInstanceProperty(ENamedElement eNamedElement, String namespaceURI, String propertyName, String propertyValue)
+ {
+ EAnnotation annotation = eNamedElement.getEAnnotation(namespaceURI);
+ if (annotation == null)
+ {
+ addAnnotation(eNamedElement, namespaceURI, new String[]{propertyName, propertyValue});
+ } else
+ {
+ annotation.getDetails().put(propertyName, propertyValue);
+ }
+ }
+
+ protected Property createGlobalProperty(String name, Type type, String[] xsdMappings)
+ {
+ return createGlobalProperty(name, type, xsdMappings, false);
+ }
+
+ protected Property createGlobalProperty(String name, Type type, String[] xsdMappings, boolean asAttribute)
+ {
+ return createGlobalProperty(name, type, xsdMappings, asAttribute, ANNOTATION_SOURCE);
+ }
+
+ protected Property createGlobalProperty(String name, Type type, String[] xsdMappings, boolean asAttribute, String annotationSource)
+ {
+ int propertyNumber = documentRootEClass.getEStructuralFeatures().size();
+
+ EStructuralFeature globalProperty;
+ if(asAttribute) {
+ createEAttribute(documentRootEClass, propertyNumber);
+ EAttribute gatt = (EAttribute)documentRootEClass.getEStructuralFeatures().get(propertyNumber);
+ initEAttribute(gatt, (EDataType)type, name, null, 0, -2, IS_TRANSIENT, IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, !IS_UNIQUE, IS_DERIVED, IS_ORDERED);
+ globalProperty = gatt;
+ } else {
+ createEReference(documentRootEClass, propertyNumber);
+ EReference gref = (EReference)documentRootEClass.getEStructuralFeatures().get(propertyNumber);
+ initEReference(gref, (EClass)type, null, name, null, 0, -2, null, IS_TRANSIENT, IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, IS_DERIVED, IS_ORDERED);
+ globalProperty = gref;
+ }
+ addAnnotation((ENamedElement)globalProperty, annotationSource, xsdMappings);
+ return (Property) globalProperty;
+ }
+
+ protected Type getSequence()
+ {
+ return (Type)ecorePackage.getEFeatureMapEntry();
+ }
+
+ protected void addSuperType(Type subType, Type superType)
+ {
+ ((EClass)subType).getESuperTypes().add((EClass)superType);
+ }
+
+ //public static FactoryBase getStaticFactory(String namespaceURI)
+ // temporarily return Object - until everything is gen'd with new codegen pattern
+ public static Object getStaticFactory(String namespaceURI)
+ {
+ EPackage ePackage = EPackage.Registry.INSTANCE.getEPackage(namespaceURI);
+ //return (FactoryBase)ePackage;
+ return ePackage instanceof FactoryBase ? (Object)ePackage : (Object)ePackage.getEFactoryInstance();
+ }
+
+ // default implementation of createFromString
+ public Object createFromString(Type type, String stringValue, int propertyValue)
+ {
+ return (String)ModelFactoryImpl.eINSTANCE.createFromString(ModelPackageImpl.Literals.STRING, stringValue);
+ }
+
+ // default implementation of convertToString
+ public String convertToString(Type type, Object objectValue, int propertyValue)
+ {
+ return ModelFactoryImpl.eINSTANCE.convertToString(ModelPackageImpl.Literals.STRING, objectValue);
+ }
+
+ // private EMF-specific methods
+
+ private static class SDOEFactoryImpl extends EFactoryImpl
+ {
+ protected FactoryBase sdoFactory;
+
+ public SDOEFactoryImpl()
+ {
+ super();
+ }
+
+ public EObject create(EClass eClass)
+ {
+ DataObject result = sdoFactory.create(eClass.getClassifierID());
+ if (result == null) {
+ return super.create(eClass);
+ }
+ return (EObject)result;
+ }
+
+ public Object createFromString(EDataType eDataType, String stringValue)
+ {
+ return sdoFactory.createFromString((Type)eDataType, stringValue, eDataType.getClassifierID());
+ }
+
+ public String convertToString(EDataType eDataType, Object objectValue)
+ {
+ return sdoFactory.convertToString((Type)eDataType, objectValue, eDataType.getClassifierID());
+ }
+ }
+
+ private static final int DOCUMENT_ROOT = 0;
+ private static final int DOCUMENT_ROOT__MIXED = 0;
+ private static final int DOCUMENT_ROOT__XMLNS_PREFIX_MAP = 1;
+ private static final int DOCUMENT_ROOT__XSI_SCHEMA_LOCATION = 2;
+ private static final String ANNOTATION_SOURCE = "http:///org/eclipse/emf/ecore/util/ExtendedMetaData";
+ private EClass documentRootEClass = null;
+
+ private void createDocumentRoot()
+ {
+ documentRootEClass = ecoreFactory.createEClass();
+ ((EClassImpl)documentRootEClass).setClassifierID(DOCUMENT_ROOT);
+ getEClassifiers().add(DOCUMENT_ROOT, documentRootEClass);
+
+ createEAttribute(documentRootEClass, DOCUMENT_ROOT__MIXED);
+ createEReference(documentRootEClass, DOCUMENT_ROOT__XMLNS_PREFIX_MAP);
+ createEReference(documentRootEClass, DOCUMENT_ROOT__XSI_SCHEMA_LOCATION);
+
+ initEClass(documentRootEClass, null, "DocumentRoot", !IS_ABSTRACT, !IS_INTERFACE, !IS_GENERATED_INSTANCE_CLASS);
+ initEAttribute((EAttribute)documentRootEClass.getEStructuralFeatures().get(DOCUMENT_ROOT__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((EReference)documentRootEClass.getEStructuralFeatures().get(DOCUMENT_ROOT__XMLNS_PREFIX_MAP), 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((EReference)documentRootEClass.getEStructuralFeatures().get(DOCUMENT_ROOT__XSI_SCHEMA_LOCATION), 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);
+
+ addAnnotation
+ (documentRootEClass,
+ ANNOTATION_SOURCE,
+ new String[]
+ {
+ "name", "",
+ "kind", "mixed"
+ });
+ addAnnotation
+ ((EAttribute)documentRootEClass.getEStructuralFeatures().get(DOCUMENT_ROOT__MIXED),
+ ANNOTATION_SOURCE,
+ new String[]
+ {
+ "kind", "elementWildcard",
+ "name", ":mixed"
+ });
+ addAnnotation
+ ((EReference)documentRootEClass.getEStructuralFeatures().get(DOCUMENT_ROOT__XMLNS_PREFIX_MAP),
+ ANNOTATION_SOURCE,
+ new String[]
+ {
+ "kind", "attribute",
+ "name", "xmlns:prefix"
+ });
+ addAnnotation
+ ((EReference)documentRootEClass.getEStructuralFeatures().get(DOCUMENT_ROOT__XSI_SCHEMA_LOCATION),
+ ANNOTATION_SOURCE,
+ new String[]
+ {
+ "kind", "attribute",
+ "name", "xsi:schemaLocation"
+ });
+ }
+
+ /**
+ * Initialize SDO runtime.
+ */
+ static
+ {
+ DataObjectUtil.initRuntime();
+ }
+}
diff --git a/branches/sdo-java-M2/sdo/impl/src/main/java/org/apache/tuscany/sdo/impl/ReferenceImpl.java b/branches/sdo-java-M2/sdo/impl/src/main/java/org/apache/tuscany/sdo/impl/ReferenceImpl.java
new file mode 100644
index 0000000000..c90b8f8ee9
--- /dev/null
+++ b/branches/sdo-java-M2/sdo/impl/src/main/java/org/apache/tuscany/sdo/impl/ReferenceImpl.java
@@ -0,0 +1,701 @@
+/**
+ *
+ * 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.impl;
+
+import java.util.List;
+
+import org.apache.tuscany.sdo.util.DataObjectUtil;
+import org.eclipse.emf.ecore.EClass;
+import org.eclipse.emf.ecore.EcorePackage;
+import org.eclipse.emf.ecore.impl.EReferenceImpl;
+
+import commonj.sdo.Property;
+import commonj.sdo.Sequence;
+import commonj.sdo.Type;
+
+/**
+ * <!-- begin-user-doc -->
+ * An implementation of the model object '<em><b>Reference</b></em>'.
+ * <!-- end-user-doc -->
+ * <p>
+ * </p>
+ *
+ * @generated
+ */
+public class ReferenceImpl extends EReferenceImpl implements Property,/* DataObject,*/ org.apache.tuscany.sdo.model.Property
+{
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ protected ReferenceImpl()
+ {
+ super();
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated NOT
+ */
+ protected EClass eStaticClass()
+ {
+ return EcorePackage.eINSTANCE.getEReference();
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated NOT
+ */
+ public Object getDefault()
+ {
+ return getDefaultValue();
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated NOT
+ */
+ public boolean isReadOnly()
+ {
+ //return "true".equals(EcoreUtil.getAnnotation(this, "commonj.sdo", "readOnly"));
+ return !isChangeable(); //TODO semantics don't exactly match?
+ }
+
+ protected List aliasNames = null;
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated NOT
+ */
+ public List getAliasNames()
+ {
+ if (aliasNames == null)
+ {
+ aliasNames = DataObjectUtil.getAliasNames(this);
+ }
+ return aliasNames;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated NOT
+ */
+ public Type getType()
+ {
+ // Note that Property.getType() conflicts with DataObject.getType(), so we can only implement
+ // it one way or the other here. We're implementing it to return the property type so it will
+ // return the wrong type when the caller is using the DataObject interface. Not much we can
+ // do about it tho. -- James Snell
+ return (Type)getEType();
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated NOT
+ */
+ public Type getContainingType()
+ {
+ return (Type)getEContainingClass();
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated NOT
+ */
+ public Property getOpposite()
+ {
+ return (Property)getEOpposite();
+ }
+
+ /////////////////////////////////////////////////////////////////////////////////////////////////////////
+ // org.apache.tuscany.sdo.model.Property methods
+ /////////////////////////////////////////////////////////////////////////////////////////////////////////
+
+ public List getAliasName() {
+ return this.getAliasNames();
+ }
+
+ public Sequence getAny() {
+ throw new UnsupportedOperationException();
+ }
+
+ public void setMany(boolean value) {
+ throw new UnsupportedOperationException("Property is frozen and cannot be modified");
+ }
+
+ public void unsetMany() {
+ throw new UnsupportedOperationException("Property is frozen and cannot be modified");
+ }
+
+ public boolean isSetMany() {
+ return isMany();
+ }
+
+ public void setReadOnly(boolean value) {
+ throw new UnsupportedOperationException("Property is frozen and cannot be modified");
+ }
+
+ public void unsetReadOnly() {
+ throw new UnsupportedOperationException("Property is frozen and cannot be modified");
+ }
+
+ public boolean isSetReadOnly() {
+ return isReadOnly();
+ }
+
+ public org.apache.tuscany.sdo.model.Type getType_() {
+ return (org.apache.tuscany.sdo.model.Type)getType();
+ }
+
+ public void setType(org.apache.tuscany.sdo.model.Type value) {
+ throw new UnsupportedOperationException("Property is frozen and cannot be modified");
+ }
+
+ public Sequence getAnyAttribute() {
+ throw new UnsupportedOperationException();
+ }
+
+ public String getDefault_() {
+ return (String) this.getDefault();
+ }
+
+ public void setDefault_(String value) {
+ throw new UnsupportedOperationException("Property is frozen and cannot be modified");
+ }
+
+ public org.apache.tuscany.sdo.model.Property getOpposite_() {
+ return (org.apache.tuscany.sdo.model.Property) getOpposite();
+ }
+
+ public void setOpposite_(org.apache.tuscany.sdo.model.Property value) {
+ throw new UnsupportedOperationException("Property is frozen and cannot be modified");
+ }
+
+ public void unsetContainment() {
+ throw new UnsupportedOperationException("Property is frozen and cannot be modified");
+ }
+
+ public boolean isSetContainment() {
+ return isContainment();
+ }
+
+ /////////////////////////////////////////////////////////////////////////////////////////////////////////
+ // DataObject method implementations
+ /////////////////////////////////////////////////////////////////////////////////////////////////////////
+ /*
+ public Object get(int propertyIndex) {
+ return DataObjectUtil.get(this, propertyIndex);
+ }
+
+ public void set(int propertyIndex, Object value) {
+ throw new UnsupportedOperationException("Property is frozen and cannot be modified");
+ }
+
+ public boolean isSet(int propertyIndex) {
+ return DataObjectUtil.isSet(this, propertyIndex);
+ }
+
+ public void unset(int propertyIndex) {
+ throw new UnsupportedOperationException("Property is frozen and cannot be modified");
+ }
+
+ public Object get(Property property) {
+ return DataObjectUtil.get(this, ((EStructuralFeature)property).getFeatureID());
+ }
+
+ public void set(Property property, Object value) {
+ throw new UnsupportedOperationException("Property is frozen and cannot be modified");
+ }
+
+ public boolean isSet(Property property) {
+ return DataObjectUtil.isSet(this, ((EStructuralFeature)property).getFeatureID());
+ }
+
+ public void unset(Property property) {
+ throw new UnsupportedOperationException("Property is frozen and cannot be modified");
+ }
+
+ public DataObject getContainer() {
+ return (DataObject)eContainer();
+ }
+
+ public Property getContainmentProperty() {
+ return (Property)eContainmentFeature();
+ }
+
+ // Remaining DataObject methods are (will be) implemented as straight delegation to DataObjectUtil
+
+ public Object get(String path) {
+ return DataObjectUtil.get(this, path);
+ }
+
+ public void set(String path, Object value) {
+ throw new UnsupportedOperationException("Property is frozen and cannot be modified");
+ }
+
+ public boolean isSet(String path) {
+ return DataObjectUtil.isSet(this, path);
+ }
+
+ public void unset(String path) {
+ throw new UnsupportedOperationException("Property is frozen and cannot be modified");
+ }
+
+ public boolean getBoolean(String path) {
+ return DataObjectUtil.getBoolean(get(path));
+ }
+
+ public byte getByte(String path) {
+ return DataObjectUtil.getByte(get(path));
+ }
+
+ public char getChar(String path) {
+ return DataObjectUtil.getChar(get(path));
+ }
+
+ public double getDouble(String path) {
+ return DataObjectUtil.getDouble(get(path));
+ }
+
+ public float getFloat(String path) {
+ return DataObjectUtil.getFloat(get(path));
+ }
+
+ public int getInt(String path) {
+ return DataObjectUtil.getInt(get(path));
+ }
+
+ public long getLong(String path) {
+ return DataObjectUtil.getLong(get(path));
+ }
+
+ public short getShort(String path) {
+ return DataObjectUtil.getShort(get(path));
+ }
+
+ public byte[] getBytes(String path) {
+ return DataObjectUtil.getBytes(get(path));
+ }
+
+ public BigDecimal getBigDecimal(String path) {
+ return DataObjectUtil.getBigDecimal(get(path));
+ }
+
+ public BigInteger getBigInteger(String path) {
+ return DataObjectUtil.getBigInteger(get(path));
+ }
+
+ public DataObject getDataObject(String path) {
+ return (DataObject)get(path);
+ }
+
+ public Date getDate(String path) {
+ return DataObjectUtil.getDate(get(path));
+ }
+
+ public String getString(String path) {
+ return DataObjectUtil.getString(get(path));
+ }
+
+ public List getList(String path) {
+ return (List)get(path);
+ }
+
+ public Sequence getSequence(String path) {
+ return (Sequence)get(path);
+ }
+
+ public void setBoolean(String path, boolean value) {
+ set(path, new Boolean(value));
+ }
+
+ public void setByte(String path, byte value) {
+ set(path, new Byte(value));
+ }
+
+ public void setChar(String path, char value) {
+ set(path, new Character(value));
+ }
+
+ public void setDouble(String path, double value) {
+ set(path, new Double(value));
+ }
+
+ public void setFloat(String path, float value) {
+ set(path, new Float(value));
+ }
+
+ public void setInt(String path, int value) {
+ set(path, new Integer(value));
+ }
+
+ public void setLong(String path, long value) {
+ set(path, new Long(value));
+ }
+
+ public void setShort(String path, short value) {
+ set(path, new Short(value));
+ }
+
+ public void setBytes(String path, byte[] value) {
+ set(path, value);
+ }
+
+ public void setBigDecimal(String path, BigDecimal value) {
+ set(path, value);
+ }
+
+ public void setBigInteger(String path, BigInteger value) {
+ set(path, value);
+ }
+
+ public void setDataObject(String path, DataObject value) {
+ set(path, value);
+ }
+
+ public void setDate(String path, Date value) {
+ set(path, value);
+ }
+
+ public void setString(String path, String value) {
+ set(path, value);
+ }
+
+ public void setList(String path, List value) {
+ set(path, value);
+ }
+
+ public boolean getBoolean(int propertyIndex) {
+ return DataObjectUtil.getBoolean(this, propertyIndex);
+ }
+
+ public byte getByte(int propertyIndex) {
+ return DataObjectUtil.getByte(this, propertyIndex);
+ }
+
+ public char getChar(int propertyIndex) {
+ return DataObjectUtil.getChar(this, propertyIndex);
+ }
+
+ public double getDouble(int propertyIndex) {
+ return DataObjectUtil.getDouble(this, propertyIndex);
+ }
+
+ public float getFloat(int propertyIndex) {
+ return DataObjectUtil.getFloat(this, propertyIndex);
+ }
+
+ public int getInt(int propertyIndex) {
+ return DataObjectUtil.getInt(this, propertyIndex);
+ }
+
+ public long getLong(int propertyIndex) {
+ return DataObjectUtil.getLong(this, propertyIndex);
+ }
+
+ public short getShort(int propertyIndex) {
+ return DataObjectUtil.getShort(this, propertyIndex);
+ }
+
+ public byte[] getBytes(int propertyIndex) {
+ return DataObjectUtil.getBytes(this, propertyIndex);
+ }
+
+ public BigDecimal getBigDecimal(int propertyIndex) {
+ return DataObjectUtil.getBigDecimal(this, propertyIndex);
+ }
+
+ public BigInteger getBigInteger(int propertyIndex) {
+ return DataObjectUtil.getBigInteger(this, propertyIndex);
+ }
+
+ public DataObject getDataObject(int propertyIndex) {
+ return DataObjectUtil.getDataObject(this, propertyIndex);
+ }
+
+ public Date getDate(int propertyIndex) {
+ return DataObjectUtil.getDate(this, propertyIndex);
+ }
+
+ public String getString(int propertyIndex) {
+ return DataObjectUtil.getString(this, propertyIndex);
+ }
+
+ public List getList(int propertyIndex) {
+ return DataObjectUtil.getList(this, propertyIndex);
+ }
+
+ public Sequence getSequence(int propertyIndex) {
+ return DataObjectUtil.getSequence(this, propertyIndex);
+ }
+
+ public void setBoolean(int propertyIndex, boolean value) {
+ set(propertyIndex, new Boolean(value));
+ }
+
+ public void setByte(int propertyIndex, byte value) {
+ set(propertyIndex, new Byte(value));
+ }
+
+ public void setChar(int propertyIndex, char value) {
+ set(propertyIndex, new Character(value));
+ }
+
+ public void setDouble(int propertyIndex, double value) {
+ set(propertyIndex, new Double(value));
+ }
+
+ public void setFloat(int propertyIndex, float value) {
+ set(propertyIndex, new Float(value));
+ }
+
+ public void setInt(int propertyIndex, int value) {
+ set(propertyIndex, new Integer(value));
+ }
+
+ public void setLong(int propertyIndex, long value) {
+ set(propertyIndex, new Long(value));
+ }
+
+ public void setShort(int propertyIndex, short value) {
+ set(propertyIndex, new Short(value));
+ }
+
+ public void setBytes(int propertyIndex, byte[] value) {
+ set(propertyIndex, value);
+ }
+
+ public void setBigDecimal(int propertyIndex, BigDecimal value) {
+ set(propertyIndex, value);
+ }
+
+ public void setBigInteger(int propertyIndex, BigInteger value) {
+ set(propertyIndex, value);
+ }
+
+ public void setDataObject(int propertyIndex, DataObject value) {
+ set(propertyIndex, value);
+ }
+
+ public void setDate(int propertyIndex, Date value) {
+ set(propertyIndex, value);
+ }
+
+ public void setString(int propertyIndex, String value) {
+ set(propertyIndex, value);
+ }
+
+ public void setList(int propertyIndex, List value) {
+ set(propertyIndex, value);
+ }
+
+ public boolean getBoolean(Property property) {
+ return DataObjectUtil.getBoolean(this, property);
+ }
+
+ public byte getByte(Property property) {
+ return DataObjectUtil.getByte(this, property);
+ }
+
+ public char getChar(Property property) {
+ return DataObjectUtil.getChar(this, property);
+ }
+
+ public double getDouble(Property property) {
+ return DataObjectUtil.getDouble(this, property);
+ }
+
+ public float getFloat(Property property) {
+ return DataObjectUtil.getFloat(this, property);
+ }
+
+ public int getInt(Property property) {
+ return DataObjectUtil.getInt(this, property);
+ }
+
+ public long getLong(Property property) {
+ return DataObjectUtil.getLong(this, property);
+ }
+
+ public short getShort(Property property) {
+ return DataObjectUtil.getShort(this, property);
+ }
+
+ public byte[] getBytes(Property property) {
+ return DataObjectUtil.getBytes(this, property);
+ }
+
+ public BigDecimal getBigDecimal(Property property) {
+ return DataObjectUtil.getBigDecimal(this, property);
+ }
+
+ public BigInteger getBigInteger(Property property) {
+ return DataObjectUtil.getBigInteger(this, property);
+ }
+
+ public DataObject getDataObject(Property property) {
+ return DataObjectUtil.getDataObject(this, property);
+ }
+
+ public Date getDate(Property property) {
+ return DataObjectUtil.getDate(this, property);
+ }
+
+ public String getString(Property property) {
+ return DataObjectUtil.getString(this, property);
+ }
+
+ public List getList(Property property) {
+ return DataObjectUtil.getList(this, property);
+ }
+
+ public Sequence getSequence(Property property) {
+ return DataObjectUtil.getSequence(this, property);
+ }
+
+ public void setBoolean(Property property, boolean value) {
+ set(property, new Boolean(value));
+ }
+
+ public void setByte(Property property, byte value) {
+ set(property, new Byte(value));
+ }
+
+ public void setChar(Property property, char value) {
+ set(property, new Character(value));
+ }
+
+ public void setDouble(Property property, double value) {
+ set(property, new Double(value));
+ }
+
+ public void setFloat(Property property, float value) {
+ set(property, new Float(value));
+ }
+
+ public void setInt(Property property, int value) {
+ set(property, new Integer(value));
+ }
+
+ public void setLong(Property property, long value) {
+ set(property, new Long(value));
+ }
+
+ public void setShort(Property property, short value) {
+ set(property, new Short(value));
+ }
+
+ public void setBytes(Property property, byte[] value) {
+ set(property, value);
+ }
+
+ public void setBigDecimal(Property property, BigDecimal value) {
+ set(property, value);
+ }
+
+ public void setBigInteger(Property property, BigInteger value) {
+ set(property, value);
+ }
+
+ public void setDataObject(Property property, DataObject value) {
+ set(property, value);
+ }
+
+ public void setDate(Property property, Date value) {
+ set(property, value);
+ }
+
+ public void setString(Property property, String value) {
+ set(property, value);
+ }
+
+ public void setList(Property property, List value) {
+ set(property, value);
+ }
+
+ public DataObject createDataObject(String propertyName) {
+ throw new UnsupportedOperationException("Property is frozen and cannot be modified");
+ }
+
+ public DataObject createDataObject(int propertyIndex) {
+ throw new UnsupportedOperationException("Property is frozen and cannot be modified");
+ }
+
+ public DataObject createDataObject(Property property) {
+ throw new UnsupportedOperationException("Property is frozen and cannot be modified");
+ }
+
+ public DataObject createDataObject(String propertyName, String namespaceURI, String typeName) {
+ throw new UnsupportedOperationException("Property is frozen and cannot be modified");
+ }
+
+ public DataObject createDataObject(int propertyIndex, String namespaceURI, String typeName) {
+ throw new UnsupportedOperationException("Property is frozen and cannot be modified");
+ }
+
+ public DataObject createDataObject(Property property, Type type) {
+ throw new UnsupportedOperationException("Property is frozen and cannot be modified");
+ }
+
+ public void delete() {
+ throw new UnsupportedOperationException("Property is frozen and cannot be modified");
+ }
+
+ public DataGraph getDataGraph() {
+ return DataObjectUtil.getDataGraph(this);
+ }
+
+ public Sequence getSequence() {
+ EAttribute mixedFeature = BasicExtendedMetaData.INSTANCE.getMixedFeature(eClass());
+ return mixedFeature != null ? (Sequence)eGet(mixedFeature, true, false) : null;
+ }
+
+ public List getInstanceProperties() {
+ return DataObjectUtil.getInstanceProperties(this);
+ }
+
+ public DataObject getRootObject() {
+ return DataObjectUtil.getRootObject(this);
+ }
+
+ public ChangeSummary getChangeSummary() {
+ // TODO: implement this method
+ throw new UnsupportedOperationException();
+ }
+
+ public void detach() {
+ throw new UnsupportedOperationException("Property is frozen and cannot be modified");
+ //DataObjectUtil.detach(this);
+ }
+
+ public Property getProperty(String propertyName) {
+ return DataObjectUtil.getProperty(this, propertyName);
+ }
+ */
+
+} //ReferenceImpl
diff --git a/branches/sdo-java-M2/sdo/impl/src/main/java/org/apache/tuscany/sdo/impl/SDOFactoryImpl.java b/branches/sdo-java-M2/sdo/impl/src/main/java/org/apache/tuscany/sdo/impl/SDOFactoryImpl.java
new file mode 100644
index 0000000000..8bb10297ff
--- /dev/null
+++ b/branches/sdo-java-M2/sdo/impl/src/main/java/org/apache/tuscany/sdo/impl/SDOFactoryImpl.java
@@ -0,0 +1,328 @@
+/**
+ *
+ * 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.impl;
+
+
+import org.apache.tuscany.sdo.AnyTypeDataObject;
+import org.apache.tuscany.sdo.SDOFactory;
+import org.apache.tuscany.sdo.SDOPackage;
+import org.apache.tuscany.sdo.SimpleAnyTypeDataObject;
+import org.eclipse.emf.ecore.EAttribute;
+import org.eclipse.emf.ecore.EClass;
+import org.eclipse.emf.ecore.EDataType;
+import org.eclipse.emf.ecore.EEnum;
+import org.eclipse.emf.ecore.EObject;
+import org.eclipse.emf.ecore.EPackage;
+
+import org.eclipse.emf.ecore.EReference;
+import org.eclipse.emf.ecore.EStructuralFeature;
+import org.eclipse.emf.ecore.impl.EFactoryImpl;
+import org.eclipse.emf.ecore.plugin.EcorePlugin;
+
+import org.eclipse.emf.ecore.impl.EcoreFactoryImpl;
+
+import commonj.sdo.ChangeSummary;
+import commonj.sdo.DataGraph;
+import commonj.sdo.DataObject;
+import commonj.sdo.Property;
+import commonj.sdo.Type;
+/**
+ * <!-- begin-user-doc -->
+ * An implementation of the model <b>Factory</b>.
+ * <!-- end-user-doc -->
+ * @generated
+ */
+public class SDOFactoryImpl extends EFactoryImpl implements SDOFactory
+{
+ /**
+ * Creates the default factory implementation.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public static SDOFactory init()
+ {
+ try
+ {
+ SDOFactory theSDOFactory = (SDOFactory)EPackage.Registry.INSTANCE.getEFactory("http://www.eclipse.org/emf/2003/SDO");
+ if (theSDOFactory != null)
+ {
+ return theSDOFactory;
+ }
+ }
+ catch (Exception exception)
+ {
+ EcorePlugin.INSTANCE.log(exception);
+ }
+ return new SDOFactoryImpl();
+ }
+
+ public static class SDOEcoreFactory extends EcoreFactoryImpl
+ {
+ public EClass createEClass() { return new ClassImpl(); }
+ public EDataType createEDataType() { return new DataTypeImpl(); }
+ public EEnum createEEnum() { return new EnumImpl(); }
+ public EAttribute createEAttribute() { return new AttributeImpl(); }
+ public EReference createEReference() { return new ReferenceImpl(); }
+
+// public EFactory createEFactory()
+// {
+// EFactoryImpl eFactory = new EFactoryImpl() { OVERRIDE basicCreate(); } // TODO think about doing this
+// return eFactory;
+// }
+ }
+
+ /**
+ * Creates an instance of the factory.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public SDOFactoryImpl()
+ {
+ super();
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EObject create(EClass eClass)
+ {
+ switch (eClass.getClassifierID())
+ {
+ case SDOPackage.CHANGE_SUMMARY: return (EObject)createChangeSummary();
+ case SDOPackage.CHANGE_SUMMARY_SETTING: return (EObject)createChangeSummarySetting();
+ case SDOPackage.DATA_GRAPH: return (EObject)createDataGraph();
+ case SDOPackage.ANY_TYPE_DATA_OBJECT: return createAnyTypeDataObject();
+ case SDOPackage.SIMPLE_ANY_TYPE_DATA_OBJECT: return createSimpleAnyTypeDataObject();
+ case SDOPackage.CLASS: return (EObject)createClass();
+ case SDOPackage.DATA_TYPE: return (EObject)createDataType();
+ case SDOPackage.ATTRIBUTE: return (EObject)createAttribute();
+ case SDOPackage.REFERENCE: return (EObject)createReference();
+ case SDOPackage.ENUM: return (EObject)createEnum();
+ case SDOPackage.DYNAMIC_DATA_OBJECT: return (EObject)createDynamicDataObject();
+ case SDOPackage.STORE_DATA_OBJECT: return (EObject)createStoreDataObject();
+ case SDOPackage.DYNAMIC_STORE_DATA_OBJECT: return (EObject)createDynamicStoreDataObject();
+ default:
+ throw new IllegalArgumentException("The class '" + eClass.getName() + "' is not a valid classifier");
+ }
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public Object createFromString(EDataType eDataType, String initialValue)
+ {
+ switch (eDataType.getClassifierID())
+ {
+ default:
+ throw new IllegalArgumentException("The datatype '" + eDataType.getName() + "' is not a valid classifier");
+ }
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public String convertToString(EDataType eDataType, Object instanceValue)
+ {
+ switch (eDataType.getClassifierID())
+ {
+ default:
+ throw new IllegalArgumentException("The datatype '" + eDataType.getName() + "' is not a valid classifier");
+ }
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public ChangeSummary createChangeSummary()
+ {
+ ChangeSummaryImpl changeSummary = new ChangeSummaryImpl();
+ return changeSummary;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public ChangeSummary.Setting createChangeSummarySetting()
+ {
+ ChangeSummarySettingImpl changeSummarySetting = new ChangeSummarySettingImpl();
+ return changeSummarySetting;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public DataGraph createDataGraph()
+ {
+ DataGraphImpl dataGraph = new DataGraphImpl();
+ return dataGraph;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public AnyTypeDataObject createAnyTypeDataObject()
+ {
+ AnyTypeDataObjectImpl anyTypeDataObject = new AnyTypeDataObjectImpl();
+ return anyTypeDataObject;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public SimpleAnyTypeDataObject createSimpleAnyTypeDataObject()
+ {
+ SimpleAnyTypeDataObjectImpl simpleAnyTypeDataObject = new SimpleAnyTypeDataObjectImpl();
+ return simpleAnyTypeDataObject;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public Type createClass()
+ {
+ ClassImpl class_ = new ClassImpl();
+ return class_;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public Type createDataType()
+ {
+ DataTypeImpl dataType = new DataTypeImpl();
+ return dataType;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public Property createAttribute()
+ {
+ AttributeImpl attribute = new AttributeImpl();
+ return attribute;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public Property createReference()
+ {
+ ReferenceImpl reference = new ReferenceImpl();
+ return reference;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public Type createEnum()
+ {
+ EnumImpl enum_ = new EnumImpl();
+ return enum_;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public DataObject createDynamicDataObject()
+ {
+ DynamicDataObjectImpl dynamicDataObject = new DynamicDataObjectImpl();
+ return dynamicDataObject;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public DataObject createStoreDataObject()
+ {
+ StoreDataObjectImpl storeDataObject = new StoreDataObjectImpl();
+ return storeDataObject;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public DataObject createDynamicStoreDataObject()
+ {
+ DynamicStoreDataObjectImpl dynamicStoreDataObject = new DynamicStoreDataObjectImpl();
+ return dynamicStoreDataObject;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public SDOPackage getSDOPackage()
+ {
+ return (SDOPackage)getEPackage();
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @deprecated
+ * @generated
+ */
+ public static SDOPackage getPackage()
+ {
+ return SDOPackage.eINSTANCE;
+ }
+
+ public ChangeSummary.Setting createChangeSummarySetting(EStructuralFeature eStructuralFeature, Object value, boolean isSet)
+ {
+ ChangeSummarySettingImpl eChangeSummarySetting = new ChangeSummarySettingImpl(eStructuralFeature, value, isSet);
+ return eChangeSummarySetting;
+ }
+
+} //SDOFactoryImpl
diff --git a/branches/sdo-java-M2/sdo/impl/src/main/java/org/apache/tuscany/sdo/impl/SDOPackageImpl.java b/branches/sdo-java-M2/sdo/impl/src/main/java/org/apache/tuscany/sdo/impl/SDOPackageImpl.java
new file mode 100644
index 0000000000..5c7192d9f6
--- /dev/null
+++ b/branches/sdo-java-M2/sdo/impl/src/main/java/org/apache/tuscany/sdo/impl/SDOPackageImpl.java
@@ -0,0 +1,2136 @@
+/**
+ *
+ * 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.impl;
+
+import java.io.ObjectStreamException;
+import java.util.List;
+
+import org.apache.tuscany.sdo.AnyTypeDataObject;
+import org.apache.tuscany.sdo.SDOFactory;
+import org.apache.tuscany.sdo.SDOPackage;
+import org.apache.tuscany.sdo.SimpleAnyTypeDataObject;
+import org.eclipse.emf.ecore.EAttribute;
+import org.eclipse.emf.ecore.EClass;
+import org.eclipse.emf.ecore.EDataType;
+import org.eclipse.emf.ecore.EOperation;
+import org.eclipse.emf.ecore.EPackage;
+import org.eclipse.emf.ecore.EReference;
+import org.eclipse.emf.ecore.EcorePackage;
+import org.eclipse.emf.ecore.change.ChangePackage;
+import org.eclipse.emf.ecore.change.impl.ChangePackageImpl;
+import org.eclipse.emf.ecore.impl.EPackageImpl;
+import org.eclipse.emf.ecore.impl.EcorePackageImpl;
+import org.eclipse.emf.ecore.xml.type.XMLTypePackage;
+import org.eclipse.emf.ecore.xml.type.impl.XMLTypePackageImpl;
+
+import commonj.sdo.ChangeSummary;
+import commonj.sdo.DataGraph;
+import commonj.sdo.DataObject;
+import commonj.sdo.Property;
+import commonj.sdo.Sequence;
+import commonj.sdo.Type;
+
+/**
+ * <!-- begin-user-doc -->
+ * An implementation of the model <b>Package</b>.
+ * <!-- end-user-doc -->
+ * @generated
+ */
+public class SDOPackageImpl extends EPackageImpl implements SDOPackage
+{
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ private EClass changeSummaryEClass = null;
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ private EClass changeSummarySettingEClass = null;
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ private EClass dataGraphEClass = null;
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ private EClass dataObjectEClass = null;
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ private EClass propertyEClass = null;
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ private EClass sequenceEClass = null;
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ private EClass typeEClass = null;
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ private EClass anyTypeDataObjectEClass = null;
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ private EClass simpleAnyTypeDataObjectEClass = null;
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ private EClass classEClass = null;
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ private EClass dataTypeEClass = null;
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ private EClass attributeEClass = null;
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ private EClass referenceEClass = null;
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ private EClass enumEClass = null;
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ private EClass dynamicDataObjectEClass = null;
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ private EClass storeDataObjectEClass = null;
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ private EClass dynamicStoreDataObjectEClass = null;
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ private EDataType eJavaListEDataType = null;
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ private EDataType eObjectStreamExceptionEDataType = null;
+
+ /**
+ * Creates an instance of the model <b>Package</b>, registered with
+ * {@link org.eclipse.emf.ecore.EPackage.Registry EPackage.Registry} by the package
+ * package URI value.
+ * <p>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.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see org.eclipse.emf.ecore.EPackage.Registry
+ * @see org.apache.tuscany.sdo.SDOPackage#eNS_URI
+ * @see #init()
+ * @generated
+ */
+ private SDOPackageImpl()
+ {
+ super(eNS_URI, SDOFactory.eINSTANCE);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ private static boolean isInited = false;
+
+ /**
+ * Creates, registers, and initializes the <b>Package</b> 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.
+ * <p>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.
+ * <p>Invocation of this method will not affect any packages that have
+ * already been initialized.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #eNS_URI
+ * @see #createPackageContents()
+ * @see #initializePackageContents()
+ * @generated
+ */
+ public static SDOPackage init()
+ {
+ if (isInited) return (SDOPackage)EPackage.Registry.INSTANCE.getEPackage(SDOPackage.eNS_URI);
+
+ // Obtain or create and register package
+ SDOPackageImpl theSDOPackage = (SDOPackageImpl)(EPackage.Registry.INSTANCE.getEPackage(eNS_URI) instanceof SDOPackageImpl ? EPackage.Registry.INSTANCE.getEPackage(eNS_URI) : new SDOPackageImpl());
+
+ isInited = true;
+
+ // Initialize simple dependencies
+ EcorePackageImpl.init();
+ XMLTypePackageImpl.init();
+ ChangePackageImpl.init();
+
+ // Create package meta-data objects
+ theSDOPackage.createPackageContents();
+
+ // Initialize created meta-data
+ theSDOPackage.initializePackageContents();
+
+ // Mark meta-data to indicate it can't be changed
+ theSDOPackage.freeze();
+
+ return theSDOPackage;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EClass getChangeSummary()
+ {
+ return changeSummaryEClass;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EReference getChangeSummary_EDataGraph()
+ {
+ return (EReference)changeSummaryEClass.getEStructuralFeatures().get(0);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EClass getChangeSummarySetting()
+ {
+ return changeSummarySettingEClass;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EClass getDataGraph()
+ {
+ return dataGraphEClass;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EAttribute getDataGraph_ResourceSet()
+ {
+ return (EAttribute)dataGraphEClass.getEStructuralFeatures().get(0);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EAttribute getDataGraph_RootResource()
+ {
+ return (EAttribute)dataGraphEClass.getEStructuralFeatures().get(1);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EReference getDataGraph_EChangeSummary()
+ {
+ return (EReference)dataGraphEClass.getEStructuralFeatures().get(2);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EReference getDataGraph_ERootObject()
+ {
+ return (EReference)dataGraphEClass.getEStructuralFeatures().get(3);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EClass getDataObject()
+ {
+ return dataObjectEClass;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EClass getProperty()
+ {
+ return propertyEClass;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EClass getSequence()
+ {
+ return sequenceEClass;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EClass getType()
+ {
+ return typeEClass;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EClass getAnyTypeDataObject()
+ {
+ return anyTypeDataObjectEClass;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EClass getSimpleAnyTypeDataObject()
+ {
+ return simpleAnyTypeDataObjectEClass;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EClass getClass_()
+ {
+ return classEClass;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EClass getDataType()
+ {
+ return dataTypeEClass;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EClass getAttribute()
+ {
+ return attributeEClass;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EClass getReference()
+ {
+ return referenceEClass;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EClass getEnum()
+ {
+ return enumEClass;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EClass getDynamicDataObject()
+ {
+ return dynamicDataObjectEClass;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EClass getStoreDataObject()
+ {
+ return storeDataObjectEClass;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EClass getDynamicStoreDataObject()
+ {
+ return dynamicStoreDataObjectEClass;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EDataType getEJavaList()
+ {
+ return eJavaListEDataType;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EDataType getEObjectStreamException()
+ {
+ return eObjectStreamExceptionEDataType;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public SDOFactory getSDOFactory()
+ {
+ return (SDOFactory)getEFactoryInstance();
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @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.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public void createPackageContents()
+ {
+ if (isCreated) return;
+ isCreated = true;
+
+ // Create classes and their features
+ changeSummaryEClass = createEClass(CHANGE_SUMMARY);
+ createEReference(changeSummaryEClass, CHANGE_SUMMARY__EDATA_GRAPH);
+
+ changeSummarySettingEClass = createEClass(CHANGE_SUMMARY_SETTING);
+
+ dataGraphEClass = createEClass(DATA_GRAPH);
+ createEAttribute(dataGraphEClass, DATA_GRAPH__RESOURCE_SET);
+ createEAttribute(dataGraphEClass, DATA_GRAPH__ROOT_RESOURCE);
+ createEReference(dataGraphEClass, DATA_GRAPH__ECHANGE_SUMMARY);
+ createEReference(dataGraphEClass, DATA_GRAPH__EROOT_OBJECT);
+
+ dataObjectEClass = createEClass(DATA_OBJECT);
+
+ propertyEClass = createEClass(PROPERTY);
+
+ sequenceEClass = createEClass(SEQUENCE);
+
+ typeEClass = createEClass(TYPE);
+
+ anyTypeDataObjectEClass = createEClass(ANY_TYPE_DATA_OBJECT);
+
+ simpleAnyTypeDataObjectEClass = createEClass(SIMPLE_ANY_TYPE_DATA_OBJECT);
+
+ classEClass = createEClass(CLASS);
+
+ dataTypeEClass = createEClass(DATA_TYPE);
+
+ attributeEClass = createEClass(ATTRIBUTE);
+
+ referenceEClass = createEClass(REFERENCE);
+
+ enumEClass = createEClass(ENUM);
+
+ dynamicDataObjectEClass = createEClass(DYNAMIC_DATA_OBJECT);
+
+ storeDataObjectEClass = createEClass(STORE_DATA_OBJECT);
+
+ dynamicStoreDataObjectEClass = createEClass(DYNAMIC_STORE_DATA_OBJECT);
+
+ // Create data types
+ eJavaListEDataType = createEDataType(EJAVA_LIST);
+ eObjectStreamExceptionEDataType = createEDataType(EOBJECT_STREAM_EXCEPTION);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @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.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public void initializePackageContents()
+ {
+ if (isInitialized) return;
+ isInitialized = true;
+
+ // Initialize package
+ setName(eNAME);
+ setNsPrefix(eNS_PREFIX);
+ setNsURI(eNS_URI);
+
+ // Obtain other dependent packages
+ ChangePackageImpl theChangePackage = (ChangePackageImpl)EPackage.Registry.INSTANCE.getEPackage(ChangePackage.eNS_URI);
+ EcorePackageImpl theEcorePackage = (EcorePackageImpl)EPackage.Registry.INSTANCE.getEPackage(EcorePackage.eNS_URI);
+ XMLTypePackageImpl theXMLTypePackage = (XMLTypePackageImpl)EPackage.Registry.INSTANCE.getEPackage(XMLTypePackage.eNS_URI);
+
+ // Add supertypes to classes
+ changeSummaryEClass.getESuperTypes().add(theChangePackage.getChangeDescription());
+ changeSummarySettingEClass.getESuperTypes().add(theChangePackage.getFeatureChange());
+ dataGraphEClass.getESuperTypes().add(theEcorePackage.getEObject());
+ anyTypeDataObjectEClass.getESuperTypes().add(this.getDataObject());
+ anyTypeDataObjectEClass.getESuperTypes().add(theXMLTypePackage.getAnyType());
+ simpleAnyTypeDataObjectEClass.getESuperTypes().add(this.getAnyTypeDataObject());
+ simpleAnyTypeDataObjectEClass.getESuperTypes().add(theXMLTypePackage.getSimpleAnyType());
+ classEClass.getESuperTypes().add(theEcorePackage.getEClass());
+ classEClass.getESuperTypes().add(this.getType());
+ dataTypeEClass.getESuperTypes().add(theEcorePackage.getEDataType());
+ dataTypeEClass.getESuperTypes().add(this.getType());
+ attributeEClass.getESuperTypes().add(theEcorePackage.getEAttribute());
+ attributeEClass.getESuperTypes().add(this.getProperty());
+ referenceEClass.getESuperTypes().add(theEcorePackage.getEReference());
+ referenceEClass.getESuperTypes().add(this.getProperty());
+ enumEClass.getESuperTypes().add(theEcorePackage.getEEnum());
+ enumEClass.getESuperTypes().add(this.getType());
+ dynamicDataObjectEClass.getESuperTypes().add(this.getDataObject());
+ storeDataObjectEClass.getESuperTypes().add(this.getDataObject());
+ dynamicStoreDataObjectEClass.getESuperTypes().add(this.getStoreDataObject());
+
+ // Initialize classes and features; add operations and parameters
+ initEClass(changeSummaryEClass, ChangeSummary.class, "ChangeSummary", !IS_ABSTRACT, !IS_INTERFACE, !IS_GENERATED_INSTANCE_CLASS);
+ initEReference(getChangeSummary_EDataGraph(), this.getDataGraph(), this.getDataGraph_EChangeSummary(), "eDataGraph", null, 1, 1, ChangeSummary.class, IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+
+ addEOperation(changeSummaryEClass, null, "beginLogging");
+
+ addEOperation(changeSummaryEClass, null, "endLogging");
+
+ EOperation op = addEOperation(changeSummaryEClass, ecorePackage.getEBoolean(), "isCreated");
+ addEParameter(op, this.getDataObject(), "dataObject");
+
+ op = addEOperation(changeSummaryEClass, ecorePackage.getEBoolean(), "isDeleted");
+ addEParameter(op, this.getDataObject(), "dataObject");
+
+ op = addEOperation(changeSummaryEClass, this.getEJavaList(), "getOldValues");
+ addEParameter(op, this.getDataObject(), "dataObject");
+
+ op = addEOperation(changeSummaryEClass, ecorePackage.getEBoolean(), "isModified");
+ addEParameter(op, this.getDataObject(), "dataObject");
+
+ op = addEOperation(changeSummaryEClass, this.getChangeSummarySetting(), "getOldValue");
+ addEParameter(op, this.getDataObject(), "dataObject");
+ addEParameter(op, this.getProperty(), "property");
+
+ op = addEOperation(changeSummaryEClass, this.getDataObject(), "getOldContainer");
+ addEParameter(op, this.getDataObject(), "dataObject");
+
+ op = addEOperation(changeSummaryEClass, this.getProperty(), "getOldContainmentProperty");
+ addEParameter(op, this.getDataObject(), "dataObject");
+
+ op = addEOperation(changeSummaryEClass, this.getSequence(), "getOldSequence");
+ addEParameter(op, this.getDataObject(), "dataObject");
+
+ addEOperation(changeSummaryEClass, null, "undoChanges");
+
+ addEOperation(changeSummaryEClass, ecorePackage.getEBoolean(), "isLogging");
+
+ addEOperation(changeSummaryEClass, this.getDataGraph(), "getDataGraph");
+
+ addEOperation(changeSummaryEClass, this.getEJavaList(), "getChangedObjects");
+
+ addEOperation(changeSummaryEClass, this.getDataObject(), "getRootObject");
+
+ initEClass(changeSummarySettingEClass, ChangeSummary.Setting.class, "ChangeSummarySetting", !IS_ABSTRACT, !IS_INTERFACE, !IS_GENERATED_INSTANCE_CLASS);
+
+ addEOperation(changeSummarySettingEClass, ecorePackage.getEBoolean(), "isSet");
+
+ addEOperation(changeSummarySettingEClass, theEcorePackage.getEJavaObject(), "getValue");
+
+ addEOperation(changeSummarySettingEClass, this.getProperty(), "getProperty");
+
+ initEClass(dataGraphEClass, DataGraph.class, "DataGraph", !IS_ABSTRACT, !IS_INTERFACE, !IS_GENERATED_INSTANCE_CLASS);
+ initEAttribute(getDataGraph_ResourceSet(), theEcorePackage.getEResourceSet(), "resourceSet", null, 0, 1, DataGraph.class, IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+ initEAttribute(getDataGraph_RootResource(), theEcorePackage.getEResource(), "rootResource", null, 0, 1, DataGraph.class, IS_TRANSIENT, IS_VOLATILE, !IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, IS_DERIVED, IS_ORDERED);
+ initEReference(getDataGraph_EChangeSummary(), this.getChangeSummary(), this.getChangeSummary_EDataGraph(), "eChangeSummary", null, 1, 1, DataGraph.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+ initEReference(getDataGraph_ERootObject(), theEcorePackage.getEObject(), null, "eRootObject", null, 1, 1, DataGraph.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+
+ op = addEOperation(dataGraphEClass, this.getDataObject(), "createRootObject");
+ addEParameter(op, ecorePackage.getEString(), "namespaceURI");
+ addEParameter(op, ecorePackage.getEString(), "typeName");
+
+ op = addEOperation(dataGraphEClass, this.getDataObject(), "createRootObject");
+ addEParameter(op, this.getType(), "type");
+
+ op = addEOperation(dataGraphEClass, this.getType(), "getType");
+ addEParameter(op, ecorePackage.getEString(), "namespaceURI");
+ addEParameter(op, ecorePackage.getEString(), "typeName");
+
+ addEOperation(dataGraphEClass, this.getDataObject(), "getRootObject");
+
+ addEOperation(dataGraphEClass, this.getChangeSummary(), "getChangeSummary");
+
+ initEClass(dataObjectEClass, DataObject.class, "DataObject", IS_ABSTRACT, !IS_INTERFACE, !IS_GENERATED_INSTANCE_CLASS);
+
+ op = addEOperation(dataObjectEClass, theEcorePackage.getEJavaObject(), "get");
+ addEParameter(op, ecorePackage.getEString(), "path");
+
+ op = addEOperation(dataObjectEClass, null, "set");
+ addEParameter(op, ecorePackage.getEString(), "path");
+ addEParameter(op, theEcorePackage.getEJavaObject(), "value");
+
+ op = addEOperation(dataObjectEClass, ecorePackage.getEBoolean(), "isSet");
+ addEParameter(op, ecorePackage.getEString(), "path");
+
+ op = addEOperation(dataObjectEClass, null, "unset");
+ addEParameter(op, ecorePackage.getEString(), "path");
+
+ op = addEOperation(dataObjectEClass, theEcorePackage.getEJavaObject(), "get");
+ addEParameter(op, ecorePackage.getEInt(), "propertyIndex");
+
+ op = addEOperation(dataObjectEClass, null, "set");
+ addEParameter(op, ecorePackage.getEInt(), "propertyIndex");
+ addEParameter(op, theEcorePackage.getEJavaObject(), "value");
+
+ op = addEOperation(dataObjectEClass, ecorePackage.getEBoolean(), "isSet");
+ addEParameter(op, ecorePackage.getEInt(), "propertyIndex");
+
+ op = addEOperation(dataObjectEClass, null, "unset");
+ addEParameter(op, ecorePackage.getEInt(), "propertyIndex");
+
+ op = addEOperation(dataObjectEClass, theEcorePackage.getEJavaObject(), "get");
+ addEParameter(op, this.getProperty(), "property");
+
+ op = addEOperation(dataObjectEClass, null, "set");
+ addEParameter(op, this.getProperty(), "property");
+ addEParameter(op, theEcorePackage.getEJavaObject(), "value");
+
+ op = addEOperation(dataObjectEClass, ecorePackage.getEBoolean(), "isSet");
+ addEParameter(op, this.getProperty(), "property");
+
+ op = addEOperation(dataObjectEClass, null, "unset");
+ addEParameter(op, this.getProperty(), "property");
+
+ addEOperation(dataObjectEClass, this.getDataObject(), "getContainer");
+
+ addEOperation(dataObjectEClass, this.getProperty(), "getContainmentProperty");
+
+ addEOperation(dataObjectEClass, this.getDataGraph(), "getDataGraph");
+
+ addEOperation(dataObjectEClass, this.getType(), "getType");
+
+ op = addEOperation(dataObjectEClass, theEcorePackage.getEBigDecimal(), "getBigDecimal");
+ addEParameter(op, ecorePackage.getEString(), "path");
+
+ op = addEOperation(dataObjectEClass, theEcorePackage.getEBigInteger(), "getBigInteger");
+ addEParameter(op, ecorePackage.getEString(), "path");
+
+ op = addEOperation(dataObjectEClass, ecorePackage.getEBoolean(), "getBoolean");
+ addEParameter(op, ecorePackage.getEString(), "path");
+
+ op = addEOperation(dataObjectEClass, ecorePackage.getEByte(), "getByte");
+ addEParameter(op, ecorePackage.getEString(), "path");
+
+ op = addEOperation(dataObjectEClass, theEcorePackage.getEByteArray(), "getBytes");
+ addEParameter(op, ecorePackage.getEString(), "path");
+
+ op = addEOperation(dataObjectEClass, ecorePackage.getEChar(), "getChar");
+ addEParameter(op, ecorePackage.getEString(), "path");
+
+ op = addEOperation(dataObjectEClass, this.getDataObject(), "getDataObject");
+ addEParameter(op, ecorePackage.getEString(), "path");
+
+ op = addEOperation(dataObjectEClass, theEcorePackage.getEDate(), "getDate");
+ addEParameter(op, ecorePackage.getEString(), "path");
+
+ op = addEOperation(dataObjectEClass, ecorePackage.getEDouble(), "getDouble");
+ addEParameter(op, ecorePackage.getEString(), "path");
+
+ op = addEOperation(dataObjectEClass, ecorePackage.getEFloat(), "getFloat");
+ addEParameter(op, ecorePackage.getEString(), "path");
+
+ op = addEOperation(dataObjectEClass, ecorePackage.getEInt(), "getInt");
+ addEParameter(op, ecorePackage.getEString(), "path");
+
+ op = addEOperation(dataObjectEClass, this.getEJavaList(), "getList");
+ addEParameter(op, ecorePackage.getEString(), "path");
+
+ op = addEOperation(dataObjectEClass, ecorePackage.getELong(), "getLong");
+ addEParameter(op, ecorePackage.getEString(), "path");
+
+ op = addEOperation(dataObjectEClass, this.getSequence(), "getSequence");
+ addEParameter(op, ecorePackage.getEString(), "path");
+
+ op = addEOperation(dataObjectEClass, ecorePackage.getEShort(), "getShort");
+ addEParameter(op, ecorePackage.getEString(), "path");
+
+ op = addEOperation(dataObjectEClass, ecorePackage.getEString(), "getString");
+ addEParameter(op, ecorePackage.getEString(), "path");
+
+ op = addEOperation(dataObjectEClass, null, "setBigDecimal");
+ addEParameter(op, ecorePackage.getEString(), "path");
+ addEParameter(op, theEcorePackage.getEBigDecimal(), "value");
+
+ op = addEOperation(dataObjectEClass, null, "setBigInteger");
+ addEParameter(op, ecorePackage.getEString(), "path");
+ addEParameter(op, theEcorePackage.getEBigInteger(), "value");
+
+ op = addEOperation(dataObjectEClass, null, "setBoolean");
+ addEParameter(op, ecorePackage.getEString(), "path");
+ addEParameter(op, ecorePackage.getEBoolean(), "value");
+
+ op = addEOperation(dataObjectEClass, null, "setByte");
+ addEParameter(op, ecorePackage.getEString(), "path");
+ addEParameter(op, ecorePackage.getEByte(), "value");
+
+ op = addEOperation(dataObjectEClass, null, "setBytes");
+ addEParameter(op, ecorePackage.getEString(), "path");
+ addEParameter(op, theEcorePackage.getEByteArray(), "value");
+
+ op = addEOperation(dataObjectEClass, null, "setChar");
+ addEParameter(op, ecorePackage.getEString(), "path");
+ addEParameter(op, ecorePackage.getEChar(), "value");
+
+ op = addEOperation(dataObjectEClass, null, "setDataObject");
+ addEParameter(op, ecorePackage.getEString(), "path");
+ addEParameter(op, this.getDataObject(), "value");
+
+ op = addEOperation(dataObjectEClass, null, "setDate");
+ addEParameter(op, ecorePackage.getEString(), "path");
+ addEParameter(op, theEcorePackage.getEDate(), "value");
+
+ op = addEOperation(dataObjectEClass, null, "setDouble");
+ addEParameter(op, ecorePackage.getEString(), "path");
+ addEParameter(op, ecorePackage.getEDouble(), "value");
+
+ op = addEOperation(dataObjectEClass, null, "setFloat");
+ addEParameter(op, ecorePackage.getEString(), "path");
+ addEParameter(op, ecorePackage.getEFloat(), "value");
+
+ op = addEOperation(dataObjectEClass, null, "setInt");
+ addEParameter(op, ecorePackage.getEString(), "path");
+ addEParameter(op, ecorePackage.getEInt(), "value");
+
+ op = addEOperation(dataObjectEClass, null, "setList");
+ addEParameter(op, ecorePackage.getEString(), "path");
+ addEParameter(op, this.getEJavaList(), "value");
+
+ op = addEOperation(dataObjectEClass, null, "setLong");
+ addEParameter(op, ecorePackage.getEString(), "path");
+ addEParameter(op, ecorePackage.getELong(), "value");
+
+ op = addEOperation(dataObjectEClass, null, "setShort");
+ addEParameter(op, ecorePackage.getEString(), "path");
+ addEParameter(op, ecorePackage.getEShort(), "value");
+
+ op = addEOperation(dataObjectEClass, null, "setString");
+ addEParameter(op, ecorePackage.getEString(), "path");
+ addEParameter(op, ecorePackage.getEString(), "value");
+
+ op = addEOperation(dataObjectEClass, theEcorePackage.getEBigDecimal(), "getBigDecimal");
+ addEParameter(op, ecorePackage.getEInt(), "propertyIndex");
+
+ op = addEOperation(dataObjectEClass, theEcorePackage.getEBigInteger(), "getBigInteger");
+ addEParameter(op, ecorePackage.getEInt(), "propertyIndex");
+
+ op = addEOperation(dataObjectEClass, ecorePackage.getEBoolean(), "getBoolean");
+ addEParameter(op, ecorePackage.getEInt(), "propertyIndex");
+
+ op = addEOperation(dataObjectEClass, ecorePackage.getEByte(), "getByte");
+ addEParameter(op, ecorePackage.getEInt(), "propertyIndex");
+
+ op = addEOperation(dataObjectEClass, theEcorePackage.getEByteArray(), "getBytes");
+ addEParameter(op, ecorePackage.getEInt(), "propertyIndex");
+
+ op = addEOperation(dataObjectEClass, ecorePackage.getEChar(), "getChar");
+ addEParameter(op, ecorePackage.getEInt(), "propertyIndex");
+
+ op = addEOperation(dataObjectEClass, this.getDataObject(), "getDataObject");
+ addEParameter(op, ecorePackage.getEInt(), "propertyIndex");
+
+ op = addEOperation(dataObjectEClass, theEcorePackage.getEDate(), "getDate");
+ addEParameter(op, ecorePackage.getEInt(), "propertyIndex");
+
+ op = addEOperation(dataObjectEClass, ecorePackage.getEDouble(), "getDouble");
+ addEParameter(op, ecorePackage.getEInt(), "propertyIndex");
+
+ op = addEOperation(dataObjectEClass, ecorePackage.getEFloat(), "getFloat");
+ addEParameter(op, ecorePackage.getEInt(), "propertyIndex");
+
+ op = addEOperation(dataObjectEClass, ecorePackage.getEInt(), "getInt");
+ addEParameter(op, ecorePackage.getEInt(), "propertyIndex");
+
+ op = addEOperation(dataObjectEClass, this.getEJavaList(), "getList");
+ addEParameter(op, ecorePackage.getEInt(), "propertyIndex");
+
+ op = addEOperation(dataObjectEClass, ecorePackage.getELong(), "getLong");
+ addEParameter(op, ecorePackage.getEInt(), "propertyIndex");
+
+ op = addEOperation(dataObjectEClass, this.getSequence(), "getSequence");
+ addEParameter(op, ecorePackage.getEInt(), "propertyIndex");
+
+ op = addEOperation(dataObjectEClass, ecorePackage.getEShort(), "getShort");
+ addEParameter(op, ecorePackage.getEInt(), "propertyIndex");
+
+ op = addEOperation(dataObjectEClass, ecorePackage.getEString(), "getString");
+ addEParameter(op, ecorePackage.getEInt(), "propertyIndex");
+
+ op = addEOperation(dataObjectEClass, null, "setBigDecimal");
+ addEParameter(op, ecorePackage.getEInt(), "propertyIndex");
+ addEParameter(op, theEcorePackage.getEBigDecimal(), "value");
+
+ op = addEOperation(dataObjectEClass, null, "setBigInteger");
+ addEParameter(op, ecorePackage.getEInt(), "propertyIndex");
+ addEParameter(op, theEcorePackage.getEBigInteger(), "value");
+
+ op = addEOperation(dataObjectEClass, null, "setBoolean");
+ addEParameter(op, ecorePackage.getEInt(), "propertyIndex");
+ addEParameter(op, ecorePackage.getEBoolean(), "value");
+
+ op = addEOperation(dataObjectEClass, null, "setByte");
+ addEParameter(op, ecorePackage.getEInt(), "propertyIndex");
+ addEParameter(op, ecorePackage.getEByte(), "value");
+
+ op = addEOperation(dataObjectEClass, null, "setBytes");
+ addEParameter(op, ecorePackage.getEInt(), "propertyIndex");
+ addEParameter(op, theEcorePackage.getEByteArray(), "value");
+
+ op = addEOperation(dataObjectEClass, null, "setChar");
+ addEParameter(op, ecorePackage.getEInt(), "propertyIndex");
+ addEParameter(op, ecorePackage.getEChar(), "value");
+
+ op = addEOperation(dataObjectEClass, null, "setDataObject");
+ addEParameter(op, ecorePackage.getEInt(), "propertyIndex");
+ addEParameter(op, this.getDataObject(), "value");
+
+ op = addEOperation(dataObjectEClass, null, "setDate");
+ addEParameter(op, ecorePackage.getEInt(), "propertyIndex");
+ addEParameter(op, theEcorePackage.getEDate(), "value");
+
+ op = addEOperation(dataObjectEClass, null, "setDouble");
+ addEParameter(op, ecorePackage.getEInt(), "propertyIndex");
+ addEParameter(op, ecorePackage.getEDouble(), "value");
+
+ op = addEOperation(dataObjectEClass, null, "setFloat");
+ addEParameter(op, ecorePackage.getEInt(), "propertyIndex");
+ addEParameter(op, ecorePackage.getEFloat(), "value");
+
+ op = addEOperation(dataObjectEClass, null, "setInt");
+ addEParameter(op, ecorePackage.getEInt(), "propertyIndex");
+ addEParameter(op, ecorePackage.getEInt(), "value");
+
+ op = addEOperation(dataObjectEClass, null, "setList");
+ addEParameter(op, ecorePackage.getEInt(), "propertyIndex");
+ addEParameter(op, this.getEJavaList(), "value");
+
+ op = addEOperation(dataObjectEClass, null, "setLong");
+ addEParameter(op, ecorePackage.getEInt(), "propertyIndex");
+ addEParameter(op, ecorePackage.getELong(), "value");
+
+ op = addEOperation(dataObjectEClass, null, "setShort");
+ addEParameter(op, ecorePackage.getEInt(), "propertyIndex");
+ addEParameter(op, ecorePackage.getEShort(), "value");
+
+ op = addEOperation(dataObjectEClass, null, "setString");
+ addEParameter(op, ecorePackage.getEInt(), "propertyIndex");
+ addEParameter(op, ecorePackage.getEString(), "value");
+
+ op = addEOperation(dataObjectEClass, theEcorePackage.getEBigDecimal(), "getBigDecimal");
+ addEParameter(op, this.getProperty(), "property");
+
+ op = addEOperation(dataObjectEClass, theEcorePackage.getEBigInteger(), "getBigInteger");
+ addEParameter(op, this.getProperty(), "property");
+
+ op = addEOperation(dataObjectEClass, ecorePackage.getEBoolean(), "getBoolean");
+ addEParameter(op, this.getProperty(), "property");
+
+ op = addEOperation(dataObjectEClass, ecorePackage.getEByte(), "getByte");
+ addEParameter(op, this.getProperty(), "property");
+
+ op = addEOperation(dataObjectEClass, theEcorePackage.getEByteArray(), "getBytes");
+ addEParameter(op, this.getProperty(), "property");
+
+ op = addEOperation(dataObjectEClass, ecorePackage.getEChar(), "getChar");
+ addEParameter(op, this.getProperty(), "property");
+
+ op = addEOperation(dataObjectEClass, this.getDataObject(), "getDataObject");
+ addEParameter(op, this.getProperty(), "property");
+
+ op = addEOperation(dataObjectEClass, theEcorePackage.getEDate(), "getDate");
+ addEParameter(op, this.getProperty(), "property");
+
+ op = addEOperation(dataObjectEClass, ecorePackage.getEDouble(), "getDouble");
+ addEParameter(op, this.getProperty(), "property");
+
+ op = addEOperation(dataObjectEClass, ecorePackage.getEFloat(), "getFloat");
+ addEParameter(op, this.getProperty(), "property");
+
+ op = addEOperation(dataObjectEClass, ecorePackage.getEInt(), "getInt");
+ addEParameter(op, this.getProperty(), "property");
+
+ op = addEOperation(dataObjectEClass, this.getEJavaList(), "getList");
+ addEParameter(op, this.getProperty(), "property");
+
+ op = addEOperation(dataObjectEClass, ecorePackage.getELong(), "getLong");
+ addEParameter(op, this.getProperty(), "property");
+
+ op = addEOperation(dataObjectEClass, this.getSequence(), "getSequence");
+ addEParameter(op, this.getProperty(), "property");
+
+ op = addEOperation(dataObjectEClass, ecorePackage.getEShort(), "getShort");
+ addEParameter(op, this.getProperty(), "property");
+
+ op = addEOperation(dataObjectEClass, ecorePackage.getEString(), "getString");
+ addEParameter(op, this.getProperty(), "property");
+
+ op = addEOperation(dataObjectEClass, null, "setBigDecimal");
+ addEParameter(op, this.getProperty(), "property");
+ addEParameter(op, theEcorePackage.getEBigDecimal(), "value");
+
+ op = addEOperation(dataObjectEClass, null, "setBigInteger");
+ addEParameter(op, this.getProperty(), "property");
+ addEParameter(op, theEcorePackage.getEBigInteger(), "value");
+
+ op = addEOperation(dataObjectEClass, null, "setBoolean");
+ addEParameter(op, this.getProperty(), "property");
+ addEParameter(op, ecorePackage.getEBoolean(), "value");
+
+ op = addEOperation(dataObjectEClass, null, "setByte");
+ addEParameter(op, this.getProperty(), "property");
+ addEParameter(op, ecorePackage.getEByte(), "value");
+
+ op = addEOperation(dataObjectEClass, null, "setBytes");
+ addEParameter(op, this.getProperty(), "property");
+ addEParameter(op, theEcorePackage.getEByteArray(), "value");
+
+ op = addEOperation(dataObjectEClass, null, "setChar");
+ addEParameter(op, this.getProperty(), "property");
+ addEParameter(op, ecorePackage.getEChar(), "value");
+
+ op = addEOperation(dataObjectEClass, null, "setDataObject");
+ addEParameter(op, this.getProperty(), "property");
+ addEParameter(op, this.getDataObject(), "value");
+
+ op = addEOperation(dataObjectEClass, null, "setDate");
+ addEParameter(op, this.getProperty(), "property");
+ addEParameter(op, theEcorePackage.getEDate(), "value");
+
+ op = addEOperation(dataObjectEClass, null, "setDouble");
+ addEParameter(op, this.getProperty(), "property");
+ addEParameter(op, ecorePackage.getEDouble(), "value");
+
+ op = addEOperation(dataObjectEClass, null, "setFloat");
+ addEParameter(op, this.getProperty(), "property");
+ addEParameter(op, ecorePackage.getEFloat(), "value");
+
+ op = addEOperation(dataObjectEClass, null, "setInt");
+ addEParameter(op, this.getProperty(), "property");
+ addEParameter(op, ecorePackage.getEInt(), "value");
+
+ op = addEOperation(dataObjectEClass, null, "setList");
+ addEParameter(op, this.getProperty(), "property");
+ addEParameter(op, this.getEJavaList(), "value");
+
+ op = addEOperation(dataObjectEClass, null, "setLong");
+ addEParameter(op, this.getProperty(), "property");
+ addEParameter(op, ecorePackage.getELong(), "value");
+
+ op = addEOperation(dataObjectEClass, null, "setShort");
+ addEParameter(op, this.getProperty(), "property");
+ addEParameter(op, ecorePackage.getEShort(), "value");
+
+ op = addEOperation(dataObjectEClass, null, "setString");
+ addEParameter(op, this.getProperty(), "property");
+ addEParameter(op, ecorePackage.getEString(), "value");
+
+ op = addEOperation(dataObjectEClass, this.getDataObject(), "createDataObject");
+ addEParameter(op, ecorePackage.getEString(), "propertyName");
+
+ op = addEOperation(dataObjectEClass, this.getDataObject(), "createDataObject");
+ addEParameter(op, ecorePackage.getEInt(), "propertyIndex");
+
+ op = addEOperation(dataObjectEClass, this.getDataObject(), "createDataObject");
+ addEParameter(op, this.getProperty(), "property");
+
+ op = addEOperation(dataObjectEClass, this.getDataObject(), "createDataObject");
+ addEParameter(op, ecorePackage.getEString(), "propertyName");
+ addEParameter(op, ecorePackage.getEString(), "namespaceURI");
+ addEParameter(op, ecorePackage.getEString(), "typeName");
+
+ op = addEOperation(dataObjectEClass, this.getDataObject(), "createDataObject");
+ addEParameter(op, ecorePackage.getEInt(), "propertyIndex");
+ addEParameter(op, ecorePackage.getEString(), "namespaceURI");
+ addEParameter(op, ecorePackage.getEString(), "typeName");
+
+ op = addEOperation(dataObjectEClass, this.getDataObject(), "createDataObject");
+ addEParameter(op, this.getProperty(), "property");
+ addEParameter(op, this.getType(), "type");
+
+ addEOperation(dataObjectEClass, null, "delete");
+
+ addEOperation(dataObjectEClass, this.getSequence(), "getSequence");
+
+ addEOperation(dataObjectEClass, this.getEJavaList(), "getInstanceProperties");
+
+ op = addEOperation(dataObjectEClass, this.getProperty(), "getProperty");
+ addEParameter(op, ecorePackage.getEString(), "propertyName");
+
+ addEOperation(dataObjectEClass, this.getDataObject(), "getRootObject");
+
+ addEOperation(dataObjectEClass, this.getChangeSummary(), "getChangeSummary");
+
+ addEOperation(dataObjectEClass, null, "detach");
+
+ initEClass(propertyEClass, Property.class, "Property", IS_ABSTRACT, IS_INTERFACE, !IS_GENERATED_INSTANCE_CLASS);
+
+ addEOperation(propertyEClass, ecorePackage.getEString(), "getName");
+
+ addEOperation(propertyEClass, this.getType(), "getType");
+
+ addEOperation(propertyEClass, ecorePackage.getEBoolean(), "isMany");
+
+ addEOperation(propertyEClass, ecorePackage.getEBoolean(), "isContainment");
+
+ addEOperation(propertyEClass, ecorePackage.getEBoolean(), "isReadOnly");
+
+ addEOperation(propertyEClass, this.getType(), "getContainingType");
+
+ addEOperation(propertyEClass, this.getEJavaList(), "getAliasNames");
+
+ addEOperation(propertyEClass, this.getProperty(), "getOpposite");
+
+ addEOperation(propertyEClass, theEcorePackage.getEJavaObject(), "getDefault");
+
+ initEClass(sequenceEClass, Sequence.class, "Sequence", IS_ABSTRACT, IS_INTERFACE, !IS_GENERATED_INSTANCE_CLASS);
+
+ addEOperation(sequenceEClass, ecorePackage.getEInt(), "size");
+
+ op = addEOperation(sequenceEClass, this.getProperty(), "getProperty");
+ addEParameter(op, ecorePackage.getEInt(), "index");
+
+ op = addEOperation(sequenceEClass, theEcorePackage.getEJavaObject(), "getValue");
+ addEParameter(op, ecorePackage.getEInt(), "index");
+
+ op = addEOperation(sequenceEClass, theEcorePackage.getEJavaObject(), "setValue");
+ addEParameter(op, ecorePackage.getEInt(), "index");
+ addEParameter(op, theEcorePackage.getEJavaObject(), "value");
+
+ op = addEOperation(sequenceEClass, ecorePackage.getEBoolean(), "add");
+ addEParameter(op, ecorePackage.getEString(), "propertyName");
+ addEParameter(op, theEcorePackage.getEJavaObject(), "value");
+
+ op = addEOperation(sequenceEClass, ecorePackage.getEBoolean(), "add");
+ addEParameter(op, ecorePackage.getEInt(), "propertIndex");
+ addEParameter(op, theEcorePackage.getEJavaObject(), "value");
+
+ op = addEOperation(sequenceEClass, ecorePackage.getEBoolean(), "add");
+ addEParameter(op, this.getProperty(), "property");
+ addEParameter(op, theEcorePackage.getEJavaObject(), "value");
+
+ op = addEOperation(sequenceEClass, null, "add");
+ addEParameter(op, ecorePackage.getEInt(), "index");
+ addEParameter(op, ecorePackage.getEString(), "propertyName");
+ addEParameter(op, theEcorePackage.getEJavaObject(), "value");
+
+ op = addEOperation(sequenceEClass, null, "add");
+ addEParameter(op, ecorePackage.getEInt(), "index");
+ addEParameter(op, ecorePackage.getEInt(), "propertyIndex");
+ addEParameter(op, theEcorePackage.getEJavaObject(), "value");
+
+ op = addEOperation(sequenceEClass, null, "add");
+ addEParameter(op, ecorePackage.getEInt(), "index");
+ addEParameter(op, this.getProperty(), "property");
+ addEParameter(op, theEcorePackage.getEJavaObject(), "value");
+
+ op = addEOperation(sequenceEClass, null, "add");
+ addEParameter(op, ecorePackage.getEString(), "text");
+
+ op = addEOperation(sequenceEClass, null, "add");
+ addEParameter(op, ecorePackage.getEInt(), "index");
+ addEParameter(op, ecorePackage.getEString(), "text");
+
+ initEClass(typeEClass, Type.class, "Type", IS_ABSTRACT, IS_INTERFACE, !IS_GENERATED_INSTANCE_CLASS);
+
+ addEOperation(typeEClass, ecorePackage.getEString(), "getName");
+
+ addEOperation(typeEClass, ecorePackage.getEString(), "getURI");
+
+ addEOperation(typeEClass, theEcorePackage.getEJavaClass(), "getInstanceClass");
+
+ op = addEOperation(typeEClass, ecorePackage.getEBoolean(), "isInstance");
+ addEParameter(op, theEcorePackage.getEJavaObject(), "object");
+
+ addEOperation(typeEClass, ecorePackage.getEBoolean(), "isDataType");
+
+ addEOperation(typeEClass, ecorePackage.getEBoolean(), "isSequenced");
+
+ addEOperation(typeEClass, ecorePackage.getEBoolean(), "isOpen");
+
+ addEOperation(typeEClass, ecorePackage.getEBoolean(), "isAbstract");
+
+ addEOperation(typeEClass, this.getEJavaList(), "getBaseTypes");
+
+ addEOperation(typeEClass, this.getEJavaList(), "getAliasNames");
+
+ addEOperation(typeEClass, this.getEJavaList(), "getProperties");
+
+ addEOperation(typeEClass, this.getEJavaList(), "getDeclaredProperties");
+
+ op = addEOperation(typeEClass, this.getProperty(), "getProperty");
+ addEParameter(op, ecorePackage.getEString(), "propertyName");
+
+ initEClass(anyTypeDataObjectEClass, AnyTypeDataObject.class, "AnyTypeDataObject", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
+
+ initEClass(simpleAnyTypeDataObjectEClass, SimpleAnyTypeDataObject.class, "SimpleAnyTypeDataObject", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
+
+ initEClass(classEClass, Type.class, "Class", !IS_ABSTRACT, !IS_INTERFACE, !IS_GENERATED_INSTANCE_CLASS);
+
+ initEClass(dataTypeEClass, Type.class, "DataType", !IS_ABSTRACT, !IS_INTERFACE, !IS_GENERATED_INSTANCE_CLASS);
+
+ initEClass(attributeEClass, Property.class, "Attribute", !IS_ABSTRACT, !IS_INTERFACE, !IS_GENERATED_INSTANCE_CLASS);
+
+ initEClass(referenceEClass, Property.class, "Reference", !IS_ABSTRACT, !IS_INTERFACE, !IS_GENERATED_INSTANCE_CLASS);
+
+ initEClass(enumEClass, Type.class, "Enum", !IS_ABSTRACT, !IS_INTERFACE, !IS_GENERATED_INSTANCE_CLASS);
+
+ initEClass(dynamicDataObjectEClass, DataObject.class, "DynamicDataObject", !IS_ABSTRACT, !IS_INTERFACE, !IS_GENERATED_INSTANCE_CLASS);
+
+ initEClass(storeDataObjectEClass, DataObject.class, "StoreDataObject", !IS_ABSTRACT, !IS_INTERFACE, !IS_GENERATED_INSTANCE_CLASS);
+
+ initEClass(dynamicStoreDataObjectEClass, DataObject.class, "DynamicStoreDataObject", !IS_ABSTRACT, !IS_INTERFACE, !IS_GENERATED_INSTANCE_CLASS);
+
+ // Initialize data types
+ initEDataType(eJavaListEDataType, List.class, "EJavaList", !IS_SERIALIZABLE, !IS_GENERATED_INSTANCE_CLASS);
+ initEDataType(eObjectStreamExceptionEDataType, ObjectStreamException.class, "EObjectStreamException", !IS_SERIALIZABLE, !IS_GENERATED_INSTANCE_CLASS);
+
+ // Create resource
+ createResource(eNS_URI);
+
+ // Create annotations
+ // http://www.eclipse.org/emf/2002/GenModel
+ createGenModelAnnotations();
+ // http:///org/eclipse/emf/ecore/util/ExtendedMetaData
+ createExtendedMetaDataAnnotations();
+ }
+
+ /**
+ * Initializes the annotations for <b>http://www.eclipse.org/emf/2002/GenModel</b>.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ protected void createGenModelAnnotations()
+ {
+ String source = "http://www.eclipse.org/emf/2002/GenModel";
+ addAnnotation
+ ((EOperation)dataObjectEClass.getEOperations().get(0),
+ source,
+ new String[]
+ {
+ "body", "return <%org.apache.sdo.util.SDOUtil%>.get(this, path);"
+ });
+ addAnnotation
+ ((EOperation)dataObjectEClass.getEOperations().get(1),
+ source,
+ new String[]
+ {
+ "body", "<%org.apache.sdo.util.SDOUtil%>.set(this, path, value);"
+ });
+ addAnnotation
+ ((EOperation)dataObjectEClass.getEOperations().get(2),
+ source,
+ new String[]
+ {
+ "body", "return <%org.apache.sdo.util.SDOUtil%>.isSet(this, path);"
+ });
+ addAnnotation
+ ((EOperation)dataObjectEClass.getEOperations().get(3),
+ source,
+ new String[]
+ {
+ "body", "<%org.apache.sdo.util.SDOUtil%>.unset(this, path);"
+ });
+ addAnnotation
+ ((EOperation)dataObjectEClass.getEOperations().get(4),
+ source,
+ new String[]
+ {
+ "body", "return <%org.apache.sdo.util.SDOUtil%>.get(this, propertyIndex);"
+ });
+ addAnnotation
+ ((EOperation)dataObjectEClass.getEOperations().get(5),
+ source,
+ new String[]
+ {
+ "body", "<%org.apache.sdo.util.SDOUtil%>.set(this, propertyIndex, value);"
+ });
+ addAnnotation
+ ((EOperation)dataObjectEClass.getEOperations().get(6),
+ source,
+ new String[]
+ {
+ "body", "return <%org.apache.sdo.util.SDOUtil%>.isSet(this, propertyIndex);"
+ });
+ addAnnotation
+ ((EOperation)dataObjectEClass.getEOperations().get(7),
+ source,
+ new String[]
+ {
+ "body", "<%org.apache.sdo.util.SDOUtil%>.unset(this, propertyIndex);"
+ });
+ addAnnotation
+ ((EOperation)dataObjectEClass.getEOperations().get(8),
+ source,
+ new String[]
+ {
+ "body", "return <%org.apache.sdo.util.SDOUtil%>.get(this, property);"
+ });
+ addAnnotation
+ ((EOperation)dataObjectEClass.getEOperations().get(9),
+ source,
+ new String[]
+ {
+ "body", "<%org.apache.sdo.util.SDOUtil%>.set(this, property, value);"
+ });
+ addAnnotation
+ ((EOperation)dataObjectEClass.getEOperations().get(10),
+ source,
+ new String[]
+ {
+ "body", "return <%org.apache.sdo.util.SDOUtil%>.isSet(this, property);"
+ });
+ addAnnotation
+ ((EOperation)dataObjectEClass.getEOperations().get(11),
+ source,
+ new String[]
+ {
+ "body", "<%org.apache.sdo.util.SDOUtil%>.unset(this, property);"
+ });
+ addAnnotation
+ ((EOperation)dataObjectEClass.getEOperations().get(12),
+ source,
+ new String[]
+ {
+ "body", "return <%org.apache.sdo.util.SDOUtil%>.getContainer(this);"
+ });
+ addAnnotation
+ ((EOperation)dataObjectEClass.getEOperations().get(13),
+ source,
+ new String[]
+ {
+ "body", "return <%org.apache.sdo.util.SDOUtil%>.getContainmentProperty(this);"
+ });
+ addAnnotation
+ ((EOperation)dataObjectEClass.getEOperations().get(14),
+ source,
+ new String[]
+ {
+ "body", "return <%org.apache.sdo.util.SDOUtil%>.getDataGraph(this);"
+ });
+ addAnnotation
+ ((EOperation)dataObjectEClass.getEOperations().get(15),
+ source,
+ new String[]
+ {
+ "body", "return <%org.apache.sdo.util.SDOUtil%>.getType(this);"
+ });
+ addAnnotation
+ ((EOperation)dataObjectEClass.getEOperations().get(16),
+ source,
+ new String[]
+ {
+ "body", "return <%org.apache.sdo.util.SDOUtil%>.getBigDecimal(this, path);"
+ });
+ addAnnotation
+ ((EOperation)dataObjectEClass.getEOperations().get(17),
+ source,
+ new String[]
+ {
+ "body", "return <%org.apache.sdo.util.SDOUtil%>.getBigInteger(this, path);"
+ });
+ addAnnotation
+ ((EOperation)dataObjectEClass.getEOperations().get(18),
+ source,
+ new String[]
+ {
+ "body", "return <%org.apache.sdo.util.SDOUtil%>.getBoolean(this, path);"
+ });
+ addAnnotation
+ ((EOperation)dataObjectEClass.getEOperations().get(19),
+ source,
+ new String[]
+ {
+ "body", "return <%org.apache.sdo.util.SDOUtil%>.getByte(this, path);"
+ });
+ addAnnotation
+ ((EOperation)dataObjectEClass.getEOperations().get(20),
+ source,
+ new String[]
+ {
+ "body", "return <%org.apache.sdo.util.SDOUtil%>.getBytes(this, path);"
+ });
+ addAnnotation
+ ((EOperation)dataObjectEClass.getEOperations().get(21),
+ source,
+ new String[]
+ {
+ "body", "return <%org.apache.sdo.util.SDOUtil%>.getChar(this, path);"
+ });
+ addAnnotation
+ ((EOperation)dataObjectEClass.getEOperations().get(22),
+ source,
+ new String[]
+ {
+ "body", "return <%org.apache.sdo.util.SDOUtil%>.getDataObject(this, path);"
+ });
+ addAnnotation
+ ((EOperation)dataObjectEClass.getEOperations().get(23),
+ source,
+ new String[]
+ {
+ "body", "return <%org.apache.sdo.util.SDOUtil%>.getDate(this, path);"
+ });
+ addAnnotation
+ ((EOperation)dataObjectEClass.getEOperations().get(24),
+ source,
+ new String[]
+ {
+ "body", "return <%org.apache.sdo.util.SDOUtil%>.getDouble(this, path);"
+ });
+ addAnnotation
+ ((EOperation)dataObjectEClass.getEOperations().get(25),
+ source,
+ new String[]
+ {
+ "body", "return <%org.apache.sdo.util.SDOUtil%>.getFloat(this, path);"
+ });
+ addAnnotation
+ ((EOperation)dataObjectEClass.getEOperations().get(26),
+ source,
+ new String[]
+ {
+ "body", "return <%org.apache.sdo.util.SDOUtil%>.getInt(this, path);"
+ });
+ addAnnotation
+ ((EOperation)dataObjectEClass.getEOperations().get(27),
+ source,
+ new String[]
+ {
+ "body", "return <%org.apache.sdo.util.SDOUtil%>.getList(this, path);"
+ });
+ addAnnotation
+ ((EOperation)dataObjectEClass.getEOperations().get(28),
+ source,
+ new String[]
+ {
+ "body", "return <%org.apache.sdo.util.SDOUtil%>.getLong(this, path);"
+ });
+ addAnnotation
+ ((EOperation)dataObjectEClass.getEOperations().get(29),
+ source,
+ new String[]
+ {
+ "body", "return <%org.apache.sdo.util.SDOUtil%>.getSequence(this, path);"
+ });
+ addAnnotation
+ ((EOperation)dataObjectEClass.getEOperations().get(30),
+ source,
+ new String[]
+ {
+ "body", "return <%org.apache.sdo.util.SDOUtil%>.getShort(this, path);"
+ });
+ addAnnotation
+ ((EOperation)dataObjectEClass.getEOperations().get(31),
+ source,
+ new String[]
+ {
+ "body", "return <%org.apache.sdo.util.SDOUtil%>.getString(this, path);"
+ });
+ addAnnotation
+ ((EOperation)dataObjectEClass.getEOperations().get(32),
+ source,
+ new String[]
+ {
+ "body", "<%org.apache.sdo.util.SDOUtil%>.setBigDecimal(this, path, value);"
+ });
+ addAnnotation
+ ((EOperation)dataObjectEClass.getEOperations().get(33),
+ source,
+ new String[]
+ {
+ "body", "<%org.apache.sdo.util.SDOUtil%>.setBigInteger(this, path, value);"
+ });
+ addAnnotation
+ ((EOperation)dataObjectEClass.getEOperations().get(34),
+ source,
+ new String[]
+ {
+ "body", "<%org.apache.sdo.util.SDOUtil%>.setBoolean(this, path, value);"
+ });
+ addAnnotation
+ ((EOperation)dataObjectEClass.getEOperations().get(35),
+ source,
+ new String[]
+ {
+ "body", "<%org.apache.sdo.util.SDOUtil%>.setByte(this, path, value);"
+ });
+ addAnnotation
+ ((EOperation)dataObjectEClass.getEOperations().get(36),
+ source,
+ new String[]
+ {
+ "body", "<%org.apache.sdo.util.SDOUtil%>.setBytes(this, path, value);"
+ });
+ addAnnotation
+ ((EOperation)dataObjectEClass.getEOperations().get(37),
+ source,
+ new String[]
+ {
+ "body", "<%org.apache.sdo.util.SDOUtil%>.setChar(this, path, value);"
+ });
+ addAnnotation
+ ((EOperation)dataObjectEClass.getEOperations().get(38),
+ source,
+ new String[]
+ {
+ "body", "<%org.apache.sdo.util.SDOUtil%>.setDataObject(this, path, value);"
+ });
+ addAnnotation
+ ((EOperation)dataObjectEClass.getEOperations().get(39),
+ source,
+ new String[]
+ {
+ "body", "<%org.apache.sdo.util.SDOUtil%>.setDate(this, path, value);"
+ });
+ addAnnotation
+ ((EOperation)dataObjectEClass.getEOperations().get(40),
+ source,
+ new String[]
+ {
+ "body", "<%org.apache.sdo.util.SDOUtil%>.setDouble(this, path, value);"
+ });
+ addAnnotation
+ ((EOperation)dataObjectEClass.getEOperations().get(41),
+ source,
+ new String[]
+ {
+ "body", "<%org.apache.sdo.util.SDOUtil%>.setFloat(this, path, value);"
+ });
+ addAnnotation
+ ((EOperation)dataObjectEClass.getEOperations().get(42),
+ source,
+ new String[]
+ {
+ "body", "<%org.apache.sdo.util.SDOUtil%>.setInt(this, path, value);"
+ });
+ addAnnotation
+ ((EOperation)dataObjectEClass.getEOperations().get(43),
+ source,
+ new String[]
+ {
+ "body", "<%org.apache.sdo.util.SDOUtil%>.setList(this, path, value);"
+ });
+ addAnnotation
+ ((EOperation)dataObjectEClass.getEOperations().get(44),
+ source,
+ new String[]
+ {
+ "body", "<%org.apache.sdo.util.SDOUtil%>.setLong(this, path, value);"
+ });
+ addAnnotation
+ ((EOperation)dataObjectEClass.getEOperations().get(45),
+ source,
+ new String[]
+ {
+ "body", "<%org.apache.sdo.util.SDOUtil%>.setShort(this, path, value);"
+ });
+ addAnnotation
+ ((EOperation)dataObjectEClass.getEOperations().get(46),
+ source,
+ new String[]
+ {
+ "body", "<%org.apache.sdo.util.SDOUtil%>.setString(this, path, value);"
+ });
+ addAnnotation
+ ((EOperation)dataObjectEClass.getEOperations().get(47),
+ source,
+ new String[]
+ {
+ "body", "return <%org.apache.sdo.util.SDOUtil%>.getBigDecimal(this, propertyIndex);"
+ });
+ addAnnotation
+ ((EOperation)dataObjectEClass.getEOperations().get(48),
+ source,
+ new String[]
+ {
+ "body", "return <%org.apache.sdo.util.SDOUtil%>.getBigInteger(this, propertyIndex);"
+ });
+ addAnnotation
+ ((EOperation)dataObjectEClass.getEOperations().get(49),
+ source,
+ new String[]
+ {
+ "body", "return <%org.apache.sdo.util.SDOUtil%>.getBoolean(this, propertyIndex);"
+ });
+ addAnnotation
+ ((EOperation)dataObjectEClass.getEOperations().get(50),
+ source,
+ new String[]
+ {
+ "body", "return <%org.apache.sdo.util.SDOUtil%>.getByte(this, propertyIndex);"
+ });
+ addAnnotation
+ ((EOperation)dataObjectEClass.getEOperations().get(51),
+ source,
+ new String[]
+ {
+ "body", "return <%org.apache.sdo.util.SDOUtil%>.getBytes(this, propertyIndex);"
+ });
+ addAnnotation
+ ((EOperation)dataObjectEClass.getEOperations().get(52),
+ source,
+ new String[]
+ {
+ "body", "return <%org.apache.sdo.util.SDOUtil%>.getChar(this, propertyIndex);"
+ });
+ addAnnotation
+ ((EOperation)dataObjectEClass.getEOperations().get(53),
+ source,
+ new String[]
+ {
+ "body", "return <%org.apache.sdo.util.SDOUtil%>.getDataObject(this, propertyIndex);"
+ });
+ addAnnotation
+ ((EOperation)dataObjectEClass.getEOperations().get(54),
+ source,
+ new String[]
+ {
+ "body", "return <%org.apache.sdo.util.SDOUtil%>.getDate(this, propertyIndex);"
+ });
+ addAnnotation
+ ((EOperation)dataObjectEClass.getEOperations().get(55),
+ source,
+ new String[]
+ {
+ "body", "return <%org.apache.sdo.util.SDOUtil%>.getDouble(this, propertyIndex);"
+ });
+ addAnnotation
+ ((EOperation)dataObjectEClass.getEOperations().get(56),
+ source,
+ new String[]
+ {
+ "body", "return <%org.apache.sdo.util.SDOUtil%>.getFloat(this, propertyIndex);"
+ });
+ addAnnotation
+ ((EOperation)dataObjectEClass.getEOperations().get(57),
+ source,
+ new String[]
+ {
+ "body", "return <%org.apache.sdo.util.SDOUtil%>.getInt(this, propertyIndex);"
+ });
+ addAnnotation
+ ((EOperation)dataObjectEClass.getEOperations().get(58),
+ source,
+ new String[]
+ {
+ "body", "return <%org.apache.sdo.util.SDOUtil%>.getList(this, propertyIndex);"
+ });
+ addAnnotation
+ ((EOperation)dataObjectEClass.getEOperations().get(59),
+ source,
+ new String[]
+ {
+ "body", "return <%org.apache.sdo.util.SDOUtil%>.getLong(this, propertyIndex);"
+ });
+ addAnnotation
+ ((EOperation)dataObjectEClass.getEOperations().get(60),
+ source,
+ new String[]
+ {
+ "body", "return <%org.apache.sdo.util.SDOUtil%>.getSequence(this, propertyIndex);"
+ });
+ addAnnotation
+ ((EOperation)dataObjectEClass.getEOperations().get(61),
+ source,
+ new String[]
+ {
+ "body", "return <%org.apache.sdo.util.SDOUtil%>.getShort(this, propertyIndex);"
+ });
+ addAnnotation
+ ((EOperation)dataObjectEClass.getEOperations().get(62),
+ source,
+ new String[]
+ {
+ "body", "return <%org.apache.sdo.util.SDOUtil%>.getString(this, propertyIndex);"
+ });
+ addAnnotation
+ ((EOperation)dataObjectEClass.getEOperations().get(63),
+ source,
+ new String[]
+ {
+ "body", "<%org.apache.sdo.util.SDOUtil%>.setBigDecimal(this, propertyIndex, value);"
+ });
+ addAnnotation
+ ((EOperation)dataObjectEClass.getEOperations().get(64),
+ source,
+ new String[]
+ {
+ "body", "<%org.apache.sdo.util.SDOUtil%>.setBigInteger(this, propertyIndex, value);"
+ });
+ addAnnotation
+ ((EOperation)dataObjectEClass.getEOperations().get(65),
+ source,
+ new String[]
+ {
+ "body", "<%org.apache.sdo.util.SDOUtil%>.setBoolean(this, propertyIndex, value);"
+ });
+ addAnnotation
+ ((EOperation)dataObjectEClass.getEOperations().get(66),
+ source,
+ new String[]
+ {
+ "body", "<%org.apache.sdo.util.SDOUtil%>.setByte(this, propertyIndex, value);"
+ });
+ addAnnotation
+ ((EOperation)dataObjectEClass.getEOperations().get(67),
+ source,
+ new String[]
+ {
+ "body", "<%org.apache.sdo.util.SDOUtil%>.setBytes(this, propertyIndex, value);"
+ });
+ addAnnotation
+ ((EOperation)dataObjectEClass.getEOperations().get(68),
+ source,
+ new String[]
+ {
+ "body", "<%org.apache.sdo.util.SDOUtil%>.setChar(this, propertyIndex, value);"
+ });
+ addAnnotation
+ ((EOperation)dataObjectEClass.getEOperations().get(69),
+ source,
+ new String[]
+ {
+ "body", "<%org.apache.sdo.util.SDOUtil%>.setDataObject(this, propertyIndex, value);"
+ });
+ addAnnotation
+ ((EOperation)dataObjectEClass.getEOperations().get(70),
+ source,
+ new String[]
+ {
+ "body", "<%org.apache.sdo.util.SDOUtil%>.setDate(this, propertyIndex, value);"
+ });
+ addAnnotation
+ ((EOperation)dataObjectEClass.getEOperations().get(71),
+ source,
+ new String[]
+ {
+ "body", "<%org.apache.sdo.util.SDOUtil%>.setDouble(this, propertyIndex, value);"
+ });
+ addAnnotation
+ ((EOperation)dataObjectEClass.getEOperations().get(72),
+ source,
+ new String[]
+ {
+ "body", "<%org.apache.sdo.util.SDOUtil%>.setFloat(this, propertyIndex, value);"
+ });
+ addAnnotation
+ ((EOperation)dataObjectEClass.getEOperations().get(73),
+ source,
+ new String[]
+ {
+ "body", "<%org.apache.sdo.util.SDOUtil%>.setInt(this, propertyIndex, value);"
+ });
+ addAnnotation
+ ((EOperation)dataObjectEClass.getEOperations().get(74),
+ source,
+ new String[]
+ {
+ "body", "<%org.apache.sdo.util.SDOUtil%>.setList(this, propertyIndex, value);"
+ });
+ addAnnotation
+ ((EOperation)dataObjectEClass.getEOperations().get(75),
+ source,
+ new String[]
+ {
+ "body", "<%org.apache.sdo.util.SDOUtil%>.setLong(this, propertyIndex, value);"
+ });
+ addAnnotation
+ ((EOperation)dataObjectEClass.getEOperations().get(76),
+ source,
+ new String[]
+ {
+ "body", "<%org.apache.sdo.util.SDOUtil%>.setShort(this, propertyIndex, value);"
+ });
+ addAnnotation
+ ((EOperation)dataObjectEClass.getEOperations().get(77),
+ source,
+ new String[]
+ {
+ "body", "<%org.apache.sdo.util.SDOUtil%>.setString(this, propertyIndex, value);"
+ });
+ addAnnotation
+ ((EOperation)dataObjectEClass.getEOperations().get(78),
+ source,
+ new String[]
+ {
+ "body", "return <%org.apache.sdo.util.SDOUtil%>.getBigDecimal(this, property);"
+ });
+ addAnnotation
+ ((EOperation)dataObjectEClass.getEOperations().get(79),
+ source,
+ new String[]
+ {
+ "body", "return <%org.apache.sdo.util.SDOUtil%>.getBigInteger(this, property);"
+ });
+ addAnnotation
+ ((EOperation)dataObjectEClass.getEOperations().get(80),
+ source,
+ new String[]
+ {
+ "body", "return <%org.apache.sdo.util.SDOUtil%>.getBoolean(this, property);"
+ });
+ addAnnotation
+ ((EOperation)dataObjectEClass.getEOperations().get(81),
+ source,
+ new String[]
+ {
+ "body", "return <%org.apache.sdo.util.SDOUtil%>.getByte(this, property);"
+ });
+ addAnnotation
+ ((EOperation)dataObjectEClass.getEOperations().get(82),
+ source,
+ new String[]
+ {
+ "body", "return <%org.apache.sdo.util.SDOUtil%>.getBytes(this, property);"
+ });
+ addAnnotation
+ ((EOperation)dataObjectEClass.getEOperations().get(83),
+ source,
+ new String[]
+ {
+ "body", "return <%org.apache.sdo.util.SDOUtil%>.getChar(this, property);"
+ });
+ addAnnotation
+ ((EOperation)dataObjectEClass.getEOperations().get(84),
+ source,
+ new String[]
+ {
+ "body", "return <%org.apache.sdo.util.SDOUtil%>.getDataObject(this, property);"
+ });
+ addAnnotation
+ ((EOperation)dataObjectEClass.getEOperations().get(85),
+ source,
+ new String[]
+ {
+ "body", "return <%org.apache.sdo.util.SDOUtil%>.getDate(this, property);"
+ });
+ addAnnotation
+ ((EOperation)dataObjectEClass.getEOperations().get(86),
+ source,
+ new String[]
+ {
+ "body", "return <%org.apache.sdo.util.SDOUtil%>.getDouble(this, property);"
+ });
+ addAnnotation
+ ((EOperation)dataObjectEClass.getEOperations().get(87),
+ source,
+ new String[]
+ {
+ "body", "return <%org.apache.sdo.util.SDOUtil%>.getFloat(this, property);"
+ });
+ addAnnotation
+ ((EOperation)dataObjectEClass.getEOperations().get(88),
+ source,
+ new String[]
+ {
+ "body", "return <%org.apache.sdo.util.SDOUtil%>.getInt(this, property);"
+ });
+ addAnnotation
+ ((EOperation)dataObjectEClass.getEOperations().get(89),
+ source,
+ new String[]
+ {
+ "body", "return <%org.apache.sdo.util.SDOUtil%>.getList(this, property);"
+ });
+ addAnnotation
+ ((EOperation)dataObjectEClass.getEOperations().get(90),
+ source,
+ new String[]
+ {
+ "body", "return <%org.apache.sdo.util.SDOUtil%>.getLong(this, property);"
+ });
+ addAnnotation
+ ((EOperation)dataObjectEClass.getEOperations().get(91),
+ source,
+ new String[]
+ {
+ "body", "return <%org.apache.sdo.util.SDOUtil%>.getSequence(this, property);"
+ });
+ addAnnotation
+ ((EOperation)dataObjectEClass.getEOperations().get(92),
+ source,
+ new String[]
+ {
+ "body", "return <%org.apache.sdo.util.SDOUtil%>.getShort(this, property);"
+ });
+ addAnnotation
+ ((EOperation)dataObjectEClass.getEOperations().get(93),
+ source,
+ new String[]
+ {
+ "body", "return <%org.apache.sdo.util.SDOUtil%>.getString(this, property);"
+ });
+ addAnnotation
+ ((EOperation)dataObjectEClass.getEOperations().get(94),
+ source,
+ new String[]
+ {
+ "body", "<%org.apache.sdo.util.SDOUtil%>.setBigDecimal(this, property, value);"
+ });
+ addAnnotation
+ ((EOperation)dataObjectEClass.getEOperations().get(95),
+ source,
+ new String[]
+ {
+ "body", "<%org.apache.sdo.util.SDOUtil%>.setBigInteger(this, property, value);"
+ });
+ addAnnotation
+ ((EOperation)dataObjectEClass.getEOperations().get(96),
+ source,
+ new String[]
+ {
+ "body", "<%org.apache.sdo.util.SDOUtil%>.setBoolean(this, property, value);"
+ });
+ addAnnotation
+ ((EOperation)dataObjectEClass.getEOperations().get(97),
+ source,
+ new String[]
+ {
+ "body", "<%org.apache.sdo.util.SDOUtil%>.setByte(this, property, value);"
+ });
+ addAnnotation
+ ((EOperation)dataObjectEClass.getEOperations().get(98),
+ source,
+ new String[]
+ {
+ "body", "<%org.apache.sdo.util.SDOUtil%>.setBytes(this, property, value);"
+ });
+ addAnnotation
+ ((EOperation)dataObjectEClass.getEOperations().get(99),
+ source,
+ new String[]
+ {
+ "body", "<%org.apache.sdo.util.SDOUtil%>.setChar(this, property, value);"
+ });
+ addAnnotation
+ ((EOperation)dataObjectEClass.getEOperations().get(100),
+ source,
+ new String[]
+ {
+ "body", "<%org.apache.sdo.util.SDOUtil%>.setDataObject(this, property, value);"
+ });
+ addAnnotation
+ ((EOperation)dataObjectEClass.getEOperations().get(101),
+ source,
+ new String[]
+ {
+ "body", "<%org.apache.sdo.util.SDOUtil%>.setDate(this, property, value);"
+ });
+ addAnnotation
+ ((EOperation)dataObjectEClass.getEOperations().get(102),
+ source,
+ new String[]
+ {
+ "body", "<%org.apache.sdo.util.SDOUtil%>.setDouble(this, property, value);"
+ });
+ addAnnotation
+ ((EOperation)dataObjectEClass.getEOperations().get(103),
+ source,
+ new String[]
+ {
+ "body", "<%org.apache.sdo.util.SDOUtil%>.setFloat(this, property, value);"
+ });
+ addAnnotation
+ ((EOperation)dataObjectEClass.getEOperations().get(104),
+ source,
+ new String[]
+ {
+ "body", "<%org.apache.sdo.util.SDOUtil%>.setInt(this, property, value);"
+ });
+ addAnnotation
+ ((EOperation)dataObjectEClass.getEOperations().get(105),
+ source,
+ new String[]
+ {
+ "body", "<%org.apache.sdo.util.SDOUtil%>.setList(this, property, value);"
+ });
+ addAnnotation
+ ((EOperation)dataObjectEClass.getEOperations().get(106),
+ source,
+ new String[]
+ {
+ "body", "<%org.apache.sdo.util.SDOUtil%>.setLong(this, property, value);"
+ });
+ addAnnotation
+ ((EOperation)dataObjectEClass.getEOperations().get(107),
+ source,
+ new String[]
+ {
+ "body", "<%org.apache.sdo.util.SDOUtil%>.setShort(this, property, value);"
+ });
+ addAnnotation
+ ((EOperation)dataObjectEClass.getEOperations().get(108),
+ source,
+ new String[]
+ {
+ "body", "<%org.apache.sdo.util.SDOUtil%>.setString(this, property, value);"
+ });
+ addAnnotation
+ ((EOperation)dataObjectEClass.getEOperations().get(109),
+ source,
+ new String[]
+ {
+ "body", "return <%org.apache.sdo.util.SDOUtil%>.createDataObject(this, propertyName);"
+ });
+ addAnnotation
+ ((EOperation)dataObjectEClass.getEOperations().get(110),
+ source,
+ new String[]
+ {
+ "body", "return <%org.apache.sdo.util.SDOUtil%>.createDataObject(this, propertyIndex);"
+ });
+ addAnnotation
+ ((EOperation)dataObjectEClass.getEOperations().get(111),
+ source,
+ new String[]
+ {
+ "body", "return <%org.apache.sdo.util.SDOUtil%>.createDataObject(this, property);"
+ });
+ addAnnotation
+ ((EOperation)dataObjectEClass.getEOperations().get(112),
+ source,
+ new String[]
+ {
+ "body", "return <%org.apache.sdo.util.SDOUtil%>.createDataObject(this, propertyName, namespaceURI, typeName);"
+ });
+ addAnnotation
+ ((EOperation)dataObjectEClass.getEOperations().get(113),
+ source,
+ new String[]
+ {
+ "body", "return <%org.apache.sdo.util.SDOUtil%>.createDataObject(this, propertyIndex, namespaceURI, typeName);"
+ });
+ addAnnotation
+ ((EOperation)dataObjectEClass.getEOperations().get(114),
+ source,
+ new String[]
+ {
+ "body", "return <%org.apache.sdo.util.SDOUtil%>.createDataObject(this, property, type);"
+ });
+ addAnnotation
+ ((EOperation)dataObjectEClass.getEOperations().get(115),
+ source,
+ new String[]
+ {
+ "body", "<%org.apache.sdo.util.SDOUtil%>.delete(this);"
+ });
+ addAnnotation
+ ((EOperation)dataObjectEClass.getEOperations().get(116),
+ source,
+ new String[]
+ {
+ "body", "return <%org.apache.sdo.util.SDOUtil%>.getSequence(this);"
+ });
+ addAnnotation
+ ((EOperation)dataObjectEClass.getEOperations().get(117),
+ source,
+ new String[]
+ {
+ "body", "return <%org.apache.sdo.util.SDOUtil%>.getInstanceProperties(this);"
+ });
+ addAnnotation
+ ((EOperation)dataObjectEClass.getEOperations().get(118),
+ source,
+ new String[]
+ {
+ "body", "return <%org.apache.sdo.util.SDOUtil%>.getProperty(this, propertyName);"
+ });
+ addAnnotation
+ ((EOperation)dataObjectEClass.getEOperations().get(119),
+ source,
+ new String[]
+ {
+ "body", "return <%org.apache.sdo.util.SDOUtil%>.getRootObject(this);"
+ });
+ addAnnotation
+ ((EOperation)dataObjectEClass.getEOperations().get(120),
+ source,
+ new String[]
+ {
+ "body", "return <%org.apache.sdo.util.SDOUtil%>.getChangeSummary(this);"
+ });
+ addAnnotation
+ ((EOperation)dataObjectEClass.getEOperations().get(121),
+ source,
+ new String[]
+ {
+ "body", "<%org.apache.sdo.util.SDOUtil%>.detach(this);"
+ });
+ }
+
+ /**
+ * Initializes the annotations for <b>http:///org/eclipse/emf/ecore/util/ExtendedMetaData</b>.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ protected void createExtendedMetaDataAnnotations()
+ {
+ String source = "http:///org/eclipse/emf/ecore/util/ExtendedMetaData";
+ addAnnotation
+ (anyTypeDataObjectEClass,
+ source,
+ new String[]
+ {
+ "kind", "mixed"
+ });
+ addAnnotation
+ (simpleAnyTypeDataObjectEClass,
+ source,
+ new String[]
+ {
+ "kind", "simple"
+ });
+ }
+
+} //SDOPackageImpl
diff --git a/branches/sdo-java-M2/sdo/impl/src/main/java/org/apache/tuscany/sdo/impl/SimpleAnyTypeDataObjectImpl.java b/branches/sdo-java-M2/sdo/impl/src/main/java/org/apache/tuscany/sdo/impl/SimpleAnyTypeDataObjectImpl.java
new file mode 100644
index 0000000000..e257e30d27
--- /dev/null
+++ b/branches/sdo-java-M2/sdo/impl/src/main/java/org/apache/tuscany/sdo/impl/SimpleAnyTypeDataObjectImpl.java
@@ -0,0 +1,333 @@
+/**
+ *
+ * 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.impl;
+
+import java.util.Iterator;
+
+import org.apache.tuscany.sdo.SDOPackage;
+import org.apache.tuscany.sdo.SimpleAnyTypeDataObject;
+import org.eclipse.emf.common.notify.Notification;
+import org.eclipse.emf.ecore.EClass;
+import org.eclipse.emf.ecore.EDataType;
+import org.eclipse.emf.ecore.impl.ENotificationImpl;
+import org.eclipse.emf.ecore.util.EcoreUtil;
+import org.eclipse.emf.ecore.util.FeatureMap;
+import org.eclipse.emf.ecore.xml.type.SimpleAnyType;
+import org.eclipse.emf.ecore.xml.type.XMLTypePackage;
+
+/**
+ * <!-- begin-user-doc -->
+ * An implementation of the model object '<em><b>EData Object Simple Any Type</b></em>'.
+ * <!-- end-user-doc -->
+ * <p>
+ * The following features are implemented:
+ * <ul>
+ * <li>{@link org.apache.tuscany.sdo.impl.SimpleAnyTypeDataObjectImpl#getRawValue <em>Raw Value</em>}</li>
+ * <li>{@link org.apache.tuscany.sdo.impl.SimpleAnyTypeDataObjectImpl#getValue <em>Value</em>}</li>
+ * <li>{@link org.apache.tuscany.sdo.impl.SimpleAnyTypeDataObjectImpl#getInstanceType <em>Instance Type</em>}</li>
+ * </ul>
+ * </p>
+ *
+ * @generated
+ */
+public class SimpleAnyTypeDataObjectImpl extends AnyTypeDataObjectImpl implements SimpleAnyTypeDataObject
+{
+ /**
+ * The default value of the '{@link #getRawValue() <em>Raw Value</em>}' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #getRawValue()
+ * @generated
+ * @ordered
+ */
+ protected static final String RAW_VALUE_EDEFAULT = null;
+
+ /**
+ * The default value of the '{@link #getValue() <em>Value</em>}' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #getValue()
+ * @generated
+ * @ordered
+ */
+ protected static final Object VALUE_EDEFAULT = null;
+
+ /**
+ * The cached value of the '{@link #getInstanceType() <em>Instance Type</em>}' reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #getInstanceType()
+ * @generated
+ * @ordered
+ */
+ protected EDataType instanceType = null;
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ protected SimpleAnyTypeDataObjectImpl()
+ {
+ super();
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ protected EClass eStaticClass()
+ {
+ return SDOPackage.eINSTANCE.getSimpleAnyTypeDataObject();
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated NOT
+ */
+ public String getRawValue()
+ {
+ StringBuffer value = new StringBuffer();
+ for (Iterator i = getMixed().iterator(); i.hasNext(); )
+ {
+ FeatureMap.Entry entry = (FeatureMap.Entry)i.next();
+ if (entry.getEStructuralFeature() == XMLTypePackage.eINSTANCE.getXMLTypeDocumentRoot_Text())
+ {
+ value.append(entry.getValue());
+ }
+ }
+ return value.toString();
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated NOT
+ */
+ public void setRawValue(String newRawValue)
+ {
+ getMixed().clear();
+ if (newRawValue != null)
+ {
+ getMixed().add(XMLTypePackage.eINSTANCE.getXMLTypeDocumentRoot_Text(), newRawValue);
+ }
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated NOT
+ */
+ public Object getValue()
+ {
+ return EcoreUtil.createFromString(instanceType, getRawValue());
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated NOT
+ */
+ public void setValue(Object newValue)
+ {
+ setRawValue(EcoreUtil.convertToString(instanceType, newValue));
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EDataType getInstanceType()
+ {
+ return instanceType;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public void setInstanceType(EDataType newInstanceType)
+ {
+ EDataType oldInstanceType = instanceType;
+ instanceType = newInstanceType;
+ if (eNotificationRequired())
+ eNotify(new ENotificationImpl(this, Notification.SET, SDOPackage.SIMPLE_ANY_TYPE_DATA_OBJECT__INSTANCE_TYPE, oldInstanceType, instanceType));
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public Object eGet(int featureID, boolean resolve, boolean coreType)
+ {
+ switch (featureID)
+ {
+ case SDOPackage.SIMPLE_ANY_TYPE_DATA_OBJECT__MIXED:
+ if (coreType) return getMixed();
+ return ((FeatureMap.Internal)getMixed()).getWrapper();
+ case SDOPackage.SIMPLE_ANY_TYPE_DATA_OBJECT__ANY:
+ if (coreType) return getAny();
+ return ((FeatureMap.Internal)getAny()).getWrapper();
+ case SDOPackage.SIMPLE_ANY_TYPE_DATA_OBJECT__ANY_ATTRIBUTE:
+ if (coreType) return getAnyAttribute();
+ return ((FeatureMap.Internal)getAnyAttribute()).getWrapper();
+ case SDOPackage.SIMPLE_ANY_TYPE_DATA_OBJECT__RAW_VALUE:
+ return getRawValue();
+ case SDOPackage.SIMPLE_ANY_TYPE_DATA_OBJECT__VALUE:
+ return getValue();
+ case SDOPackage.SIMPLE_ANY_TYPE_DATA_OBJECT__INSTANCE_TYPE:
+ return getInstanceType();
+ }
+ return eDynamicGet(featureID, resolve, coreType);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public void eSet(int featureID, Object newValue)
+ {
+ switch (featureID)
+ {
+ case SDOPackage.SIMPLE_ANY_TYPE_DATA_OBJECT__MIXED:
+ ((FeatureMap.Internal)getMixed()).set(newValue);
+ return;
+ case SDOPackage.SIMPLE_ANY_TYPE_DATA_OBJECT__ANY:
+ ((FeatureMap.Internal)getAny()).set(newValue);
+ return;
+ case SDOPackage.SIMPLE_ANY_TYPE_DATA_OBJECT__ANY_ATTRIBUTE:
+ ((FeatureMap.Internal)getAnyAttribute()).set(newValue);
+ return;
+ case SDOPackage.SIMPLE_ANY_TYPE_DATA_OBJECT__RAW_VALUE:
+ setRawValue((String)newValue);
+ return;
+ case SDOPackage.SIMPLE_ANY_TYPE_DATA_OBJECT__VALUE:
+ setValue((Object)newValue);
+ return;
+ case SDOPackage.SIMPLE_ANY_TYPE_DATA_OBJECT__INSTANCE_TYPE:
+ setInstanceType((EDataType)newValue);
+ return;
+ }
+ eDynamicSet(featureID, newValue);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public void eUnset(int featureID)
+ {
+ switch (featureID)
+ {
+ case SDOPackage.SIMPLE_ANY_TYPE_DATA_OBJECT__MIXED:
+ getMixed().clear();
+ return;
+ case SDOPackage.SIMPLE_ANY_TYPE_DATA_OBJECT__ANY:
+ getAny().clear();
+ return;
+ case SDOPackage.SIMPLE_ANY_TYPE_DATA_OBJECT__ANY_ATTRIBUTE:
+ getAnyAttribute().clear();
+ return;
+ case SDOPackage.SIMPLE_ANY_TYPE_DATA_OBJECT__RAW_VALUE:
+ setRawValue(RAW_VALUE_EDEFAULT);
+ return;
+ case SDOPackage.SIMPLE_ANY_TYPE_DATA_OBJECT__VALUE:
+ setValue(VALUE_EDEFAULT);
+ return;
+ case SDOPackage.SIMPLE_ANY_TYPE_DATA_OBJECT__INSTANCE_TYPE:
+ setInstanceType((EDataType)null);
+ return;
+ }
+ eDynamicUnset(featureID);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public boolean eIsSet(int featureID)
+ {
+ switch (featureID)
+ {
+ case SDOPackage.SIMPLE_ANY_TYPE_DATA_OBJECT__MIXED:
+ return mixed != null && !mixed.isEmpty();
+ case SDOPackage.SIMPLE_ANY_TYPE_DATA_OBJECT__ANY:
+ return !getAny().isEmpty();
+ case SDOPackage.SIMPLE_ANY_TYPE_DATA_OBJECT__ANY_ATTRIBUTE:
+ return anyAttribute != null && !anyAttribute.isEmpty();
+ case SDOPackage.SIMPLE_ANY_TYPE_DATA_OBJECT__RAW_VALUE:
+ return RAW_VALUE_EDEFAULT == null ? getRawValue() != null : !RAW_VALUE_EDEFAULT.equals(getRawValue());
+ case SDOPackage.SIMPLE_ANY_TYPE_DATA_OBJECT__VALUE:
+ return VALUE_EDEFAULT == null ? getValue() != null : !VALUE_EDEFAULT.equals(getValue());
+ case SDOPackage.SIMPLE_ANY_TYPE_DATA_OBJECT__INSTANCE_TYPE:
+ return instanceType != null;
+ }
+ return eDynamicIsSet(featureID);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public int eBaseStructuralFeatureID(int derivedFeatureID, Class baseClass)
+ {
+ if (baseClass == SimpleAnyType.class)
+ {
+ switch (derivedFeatureID)
+ {
+ case SDOPackage.SIMPLE_ANY_TYPE_DATA_OBJECT__RAW_VALUE: return XMLTypePackage.SIMPLE_ANY_TYPE__RAW_VALUE;
+ case SDOPackage.SIMPLE_ANY_TYPE_DATA_OBJECT__VALUE: return XMLTypePackage.SIMPLE_ANY_TYPE__VALUE;
+ case SDOPackage.SIMPLE_ANY_TYPE_DATA_OBJECT__INSTANCE_TYPE: return XMLTypePackage.SIMPLE_ANY_TYPE__INSTANCE_TYPE;
+ default: return -1;
+ }
+ }
+ return super.eBaseStructuralFeatureID(derivedFeatureID, baseClass);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public int eDerivedStructuralFeatureID(int baseFeatureID, Class baseClass)
+ {
+ if (baseClass == SimpleAnyType.class)
+ {
+ switch (baseFeatureID)
+ {
+ case XMLTypePackage.SIMPLE_ANY_TYPE__RAW_VALUE: return SDOPackage.SIMPLE_ANY_TYPE_DATA_OBJECT__RAW_VALUE;
+ case XMLTypePackage.SIMPLE_ANY_TYPE__VALUE: return SDOPackage.SIMPLE_ANY_TYPE_DATA_OBJECT__VALUE;
+ case XMLTypePackage.SIMPLE_ANY_TYPE__INSTANCE_TYPE: return SDOPackage.SIMPLE_ANY_TYPE_DATA_OBJECT__INSTANCE_TYPE;
+ default: return -1;
+ }
+ }
+ return super.eDerivedStructuralFeatureID(baseFeatureID, baseClass);
+ }
+
+} //EDataObjectSimpleAnyTypeImpl
diff --git a/branches/sdo-java-M2/sdo/impl/src/main/java/org/apache/tuscany/sdo/impl/StoreDataObjectImpl.java b/branches/sdo-java-M2/sdo/impl/src/main/java/org/apache/tuscany/sdo/impl/StoreDataObjectImpl.java
new file mode 100644
index 0000000000..0cf7f3586c
--- /dev/null
+++ b/branches/sdo-java-M2/sdo/impl/src/main/java/org/apache/tuscany/sdo/impl/StoreDataObjectImpl.java
@@ -0,0 +1,314 @@
+/**
+ *
+ * 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.impl;
+
+import org.apache.tuscany.sdo.SDOPackage;
+import org.eclipse.emf.common.util.EList;
+import org.eclipse.emf.ecore.EClass;
+import org.eclipse.emf.ecore.EObject;
+import org.eclipse.emf.ecore.EReference;
+import org.eclipse.emf.ecore.EStructuralFeature;
+import org.eclipse.emf.ecore.InternalEObject;
+import org.eclipse.emf.ecore.impl.EStoreEObjectImpl.EStoreEList;
+import org.eclipse.emf.ecore.impl.EStoreEObjectImpl.EStoreFeatureMap;
+import org.eclipse.emf.ecore.util.FeatureMap;
+import org.eclipse.emf.ecore.util.FeatureMapUtil;
+
+import commonj.sdo.DataObject;
+
+/**
+ * <!-- begin-user-doc -->
+ * An implementation of the model object '<em><b>Store Data Object</b></em>'.
+ * @extends EStructuralFeature.Internal.DynamicValueHolder
+ * <!-- end-user-doc -->
+ * <p>
+ * </p>
+ *
+ * @generated
+ */
+public class StoreDataObjectImpl extends DataObjectImpl implements DataObject, EStructuralFeature.Internal.DynamicValueHolder
+{
+ //TODO consider factoring the eSettings code into a new base class that this and DynamicDataObjectImpl could extend
+
+ protected static final Object [] ENO_SETTINGS = new Object [0];
+ protected static final InternalEObject EUNINITIALIZED_CONTAINER = new DynamicDataObjectImpl();
+
+ protected Object [] eSettings;
+ protected InternalEObject.EStore eStore;
+
+ /**
+ * Creates a store-based DataObject.
+ */
+ public StoreDataObjectImpl()
+ {
+ super();
+ eContainer = EUNINITIALIZED_CONTAINER;
+ }
+
+ /**
+ * Creates a store-based DataObject.
+ */
+ public StoreDataObjectImpl(InternalEObject.EStore eStore)
+ {
+ super();
+ eSetStore(eStore);
+ eContainer = EUNINITIALIZED_CONTAINER;
+ }
+
+ /**
+ * Creates a store-based DataObject.
+ */
+ public StoreDataObjectImpl(EClass eClass)
+ {
+ super();
+ eSetClass(eClass);
+ eContainer = EUNINITIALIZED_CONTAINER;
+ }
+
+ /**
+ * Creates a store-based DataObject.
+ */
+ public StoreDataObjectImpl(EClass eClass, InternalEObject.EStore eStore)
+ {
+ super();
+ eSetClass(eClass);
+ eSetStore(eStore);
+ eContainer = EUNINITIALIZED_CONTAINER;
+ }
+
+ protected boolean eIsCaching()
+ {
+ return true;
+ }
+
+ public Object dynamicGet(int dynamicFeatureID)
+ {
+ Object result = eSettings[dynamicFeatureID];
+ if (result == null)
+ {
+ EStructuralFeature eStructuralFeature = eDynamicFeature(dynamicFeatureID);
+ if (!eStructuralFeature.isTransient())
+ {
+ if (FeatureMapUtil.isFeatureMap(eStructuralFeature))
+ {
+ eSettings[dynamicFeatureID] = result = createFeatureMap(eStructuralFeature);
+ }
+ else if (eStructuralFeature.isMany())
+ {
+ eSettings[dynamicFeatureID] = result = createList(eStructuralFeature);
+ }
+ else
+ {
+ result = eStore().get(this, eStructuralFeature, InternalEObject.EStore.NO_INDEX);
+ if (eIsCaching())
+ {
+ eSettings[dynamicFeatureID] = result;
+ }
+ }
+ }
+ }
+ return result;
+ }
+
+ public void dynamicSet(int dynamicFeatureID, Object value)
+ {
+ EStructuralFeature eStructuralFeature = eDynamicFeature(dynamicFeatureID);
+ if (eStructuralFeature.isTransient())
+ {
+ eSettings[dynamicFeatureID] = value;
+ }
+ else
+ {
+ eStore().set(this, eStructuralFeature, InternalEObject.EStore.NO_INDEX, value == NIL ? null : value);
+ if (eIsCaching())
+ {
+ eSettings[dynamicFeatureID] = value;
+ }
+ }
+ }
+
+ public void dynamicUnset(int dynamicFeatureID)
+ {
+ eStore().unset(this, eDynamicFeature(dynamicFeatureID));
+ eSettings[dynamicFeatureID] = null;
+ }
+
+ public Object eDynamicGet(int featureID, boolean resolve, boolean coreType)
+ {
+ if (featureID < eClass().getFeatureCount())
+ {
+ EStructuralFeature eFeature = eClass().getEStructuralFeature(featureID);
+ return eSettingDelegate(eFeature).dynamicGet(this, eSettings(), featureID, resolve, coreType);
+ }
+ else
+ {
+ return super.eDynamicGet(featureID, resolve, coreType);
+ }
+ }
+
+ public void eDynamicSet(int featureID, Object newValue)
+ {
+ if (featureID < eClass().getFeatureCount())
+ {
+ EStructuralFeature eFeature = eClass().getEStructuralFeature(featureID);
+ eDynamicSet(featureID, eFeature, newValue);
+ }
+ else
+ {
+ super.eDynamicSet(featureID, newValue);
+ }
+ }
+
+ public void eDynamicUnset(int featureID)
+ {
+ if (featureID < eClass().getFeatureCount())
+ {
+ EStructuralFeature eFeature = eClass().getEStructuralFeature(featureID);
+ eDynamicUnset(featureID, eFeature);
+ }
+ else
+ {
+ super.eDynamicUnset(featureID);
+ }
+ }
+
+ public boolean eDynamicIsSet(int featureID)
+ {
+ if (featureID < eClass().getFeatureCount())
+ {
+ EStructuralFeature eFeature = eClass().getEStructuralFeature(featureID);
+ return eFeature.isTransient() ?
+ eSettingDelegate(eFeature).dynamicIsSet(this, eSettings(), featureID) :
+ eStore().isSet(this, eFeature);
+ }
+ else
+ {
+ return super.eDynamicIsSet(featureID);
+ }
+ }
+
+ /*
+ public boolean eDynamicIsSet(EStructuralFeature eStructuralFeature)
+ {
+ return
+ eStructuralFeature.isTransient() ?
+ super.eDynamicIsSet(eStructuralFeature) :
+ eStore().isSet(this, eStructuralFeature);
+ }
+ */
+
+ protected EList createList(EStructuralFeature eStructuralFeature)
+ {
+ return new EStoreEList(this, eStructuralFeature, eStore());
+ }
+
+ protected FeatureMap createFeatureMap(EStructuralFeature eStructuralFeature)
+ {
+ return new EStoreFeatureMap(this, eStructuralFeature, eStore());
+ }
+
+ public EObject eContainer()
+ {
+ if (eContainer == EUNINITIALIZED_CONTAINER)
+ {
+ eInitializeContainer();
+ }
+
+ return eContainer;
+ }
+
+ public int eContainerFeatureID()
+ {
+ if (eContainer == EUNINITIALIZED_CONTAINER)
+ {
+ eInitializeContainer();
+ }
+
+ return eContainerFeatureID;
+ }
+
+ protected void eInitializeContainer()
+ {
+ eContainer = eStore().getContainer(this);
+ if (eContainer != null)
+ {
+ EStructuralFeature eContainingFeature = eStore().getContainingFeature(this);
+ if (eContainingFeature instanceof EReference)
+ {
+ EReference eContainingReference = (EReference)eContainingFeature;
+ EReference eOpposite = eContainingReference.getEOpposite();
+ if (eOpposite != null)
+ {
+ eContainerFeatureID = eClass().getFeatureID(eOpposite);
+ return;
+ }
+ }
+
+ eContainerFeatureID = EOPPOSITE_FEATURE_BASE - eContainer.eClass().getFeatureID(eContainingFeature);
+ }
+ }
+
+ public InternalEObject.EStore eStore()
+ {
+ return eStore;
+ }
+
+ public void eSetStore(InternalEObject.EStore store)
+ {
+ this.eStore = store;
+ }
+
+ protected int eStaticFeatureCount()
+ {
+ return 0;
+ }
+
+ public int eDerivedStructuralFeatureID(EStructuralFeature eStructuralFeature)
+ {
+ return eClass().getFeatureID(eStructuralFeature);
+ }
+
+ protected boolean eHasSettings()
+ {
+ return eSettings != null;
+ }
+
+ protected EStructuralFeature.Internal.DynamicValueHolder eSettings()
+ {
+ if (eSettings == null)
+ {
+ int size = eClass().getFeatureCount() - eStaticFeatureCount();
+ eSettings = size == 0 ? ENO_SETTINGS : new Object [size];
+ }
+
+ return this;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ protected EClass eStaticClass()
+ {
+ return SDOPackage.eINSTANCE.getStoreDataObject();
+ }
+
+} //StoreDataObjectImpl
diff --git a/branches/sdo-java-M2/sdo/impl/src/main/java/org/apache/tuscany/sdo/model/BaseDataGraphType.java b/branches/sdo-java-M2/sdo/impl/src/main/java/org/apache/tuscany/sdo/model/BaseDataGraphType.java
new file mode 100644
index 0000000000..baa0654a74
--- /dev/null
+++ b/branches/sdo-java-M2/sdo/impl/src/main/java/org/apache/tuscany/sdo/model/BaseDataGraphType.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.model;
+
+import commonj.sdo.Sequence;
+
+/**
+ * <!-- begin-user-doc -->
+ * A representation of the model object '<em><b>Base Data Graph Type</b></em>'.
+ * <!-- end-user-doc -->
+ *
+ * <p>
+ * The following features are supported:
+ * <ul>
+ * <li>{@link org.apache.tuscany.sdo.model.BaseDataGraphType#getModels <em>Models</em>}</li>
+ * <li>{@link org.apache.tuscany.sdo.model.BaseDataGraphType#getXsd <em>Xsd</em>}</li>
+ * <li>{@link org.apache.tuscany.sdo.model.BaseDataGraphType#getChangeSummary <em>Change Summary</em>}</li>
+ * <li>{@link org.apache.tuscany.sdo.model.BaseDataGraphType#getAnyAttribute <em>Any Attribute</em>}</li>
+ * </ul>
+ * </p>
+ *
+ * @generated
+ */
+public interface BaseDataGraphType
+{
+ /**
+ * Returns the value of the '<em><b>Models</b></em>' containment reference.
+ * <!-- begin-user-doc -->
+ * <p>
+ * If the meaning of the '<em>Models</em>' containment reference isn't clear,
+ * there really should be more of a description here...
+ * </p>
+ * <!-- end-user-doc -->
+ * @return the value of the '<em>Models</em>' containment reference.
+ * @see #setModels(ModelsType)
+ * @generated
+ */
+ ModelsType getModels();
+
+ /**
+ * Sets the value of the '{@link org.apache.tuscany.sdo.model.BaseDataGraphType#getModels <em>Models</em>}' containment reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @param value the new value of the '<em>Models</em>' containment reference.
+ * @see #getModels()
+ * @generated
+ */
+ void setModels(ModelsType value);
+
+ /**
+ * Returns the value of the '<em><b>Xsd</b></em>' containment reference.
+ * <!-- begin-user-doc -->
+ * <p>
+ * If the meaning of the '<em>Xsd</em>' containment reference isn't clear,
+ * there really should be more of a description here...
+ * </p>
+ * <!-- end-user-doc -->
+ * @return the value of the '<em>Xsd</em>' containment reference.
+ * @see #setXsd(XSDType)
+ * @generated
+ */
+ XSDType getXsd();
+
+ /**
+ * Sets the value of the '{@link org.apache.tuscany.sdo.model.BaseDataGraphType#getXsd <em>Xsd</em>}' containment reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @param value the new value of the '<em>Xsd</em>' containment reference.
+ * @see #getXsd()
+ * @generated
+ */
+ void setXsd(XSDType value);
+
+ /**
+ * Returns the value of the '<em><b>Change Summary</b></em>' containment reference.
+ * <!-- begin-user-doc -->
+ * <p>
+ * If the meaning of the '<em>Change Summary</em>' containment reference isn't clear,
+ * there really should be more of a description here...
+ * </p>
+ * <!-- end-user-doc -->
+ * @return the value of the '<em>Change Summary</em>' containment reference.
+ * @see #setChangeSummary(ChangeSummaryType)
+ * @generated
+ */
+ ChangeSummaryType getChangeSummary_();
+
+ /**
+ * Sets the value of the '{@link org.apache.tuscany.sdo.model.BaseDataGraphType#getChangeSummary <em>Change Summary</em>}' containment reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @param value the new value of the '<em>Change Summary</em>' containment reference.
+ * @see #getChangeSummary()
+ * @generated
+ */
+ void setChangeSummary(ChangeSummaryType value);
+
+ /**
+ * Returns the value of the '<em><b>Any Attribute</b></em>' attribute list.
+ * <!-- begin-user-doc -->
+ * <p>
+ * If the meaning of the '<em>Any Attribute</em>' attribute list isn't clear,
+ * there really should be more of a description here...
+ * </p>
+ * <!-- end-user-doc -->
+ * @return the value of the '<em>Any Attribute</em>' attribute list.
+ * @generated
+ */
+ Sequence getAnyAttribute();
+
+} // BaseDataGraphType
diff --git a/branches/sdo-java-M2/sdo/impl/src/main/java/org/apache/tuscany/sdo/model/ChangeSummaryType.java b/branches/sdo-java-M2/sdo/impl/src/main/java/org/apache/tuscany/sdo/model/ChangeSummaryType.java
new file mode 100644
index 0000000000..c22cfbc5e8
--- /dev/null
+++ b/branches/sdo-java-M2/sdo/impl/src/main/java/org/apache/tuscany/sdo/model/ChangeSummaryType.java
@@ -0,0 +1,155 @@
+/**
+ *
+ * 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.model;
+
+import commonj.sdo.Sequence;
+
+/**
+ * <!-- begin-user-doc -->
+ * A representation of the model object '<em><b>Change Summary Type</b></em>'.
+ * <!-- end-user-doc -->
+ *
+ * <p>
+ * The following features are supported:
+ * <ul>
+ * <li>{@link org.apache.tuscany.sdo.model.ChangeSummaryType#getAny <em>Any</em>}</li>
+ * <li>{@link org.apache.tuscany.sdo.model.ChangeSummaryType#getCreate <em>Create</em>}</li>
+ * <li>{@link org.apache.tuscany.sdo.model.ChangeSummaryType#getDelete <em>Delete</em>}</li>
+ * <li>{@link org.apache.tuscany.sdo.model.ChangeSummaryType#isLogging <em>Logging</em>}</li>
+ * </ul>
+ * </p>
+ *
+ * @generated
+ */
+public interface ChangeSummaryType
+{
+ /**
+ * Returns the value of the '<em><b>Any</b></em>' attribute list.
+ * <!-- begin-user-doc -->
+ * <p>
+ * If the meaning of the '<em>Any</em>' attribute list isn't clear,
+ * there really should be more of a description here...
+ * </p>
+ * <!-- end-user-doc -->
+ * @return the value of the '<em>Any</em>' attribute list.
+ * @generated
+ */
+ Sequence getAny();
+
+ /**
+ * Returns the value of the '<em><b>Create</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <p>
+ * If the meaning of the '<em>Create</em>' attribute isn't clear,
+ * there really should be more of a description here...
+ * </p>
+ * <!-- end-user-doc -->
+ * @return the value of the '<em>Create</em>' attribute.
+ * @see #setCreate(String)
+ * @generated
+ */
+ String getCreate();
+
+ /**
+ * Sets the value of the '{@link org.apache.tuscany.sdo.model.ChangeSummaryType#getCreate <em>Create</em>}' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @param value the new value of the '<em>Create</em>' attribute.
+ * @see #getCreate()
+ * @generated
+ */
+ void setCreate(String value);
+
+ /**
+ * Returns the value of the '<em><b>Delete</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <p>
+ * If the meaning of the '<em>Delete</em>' attribute isn't clear,
+ * there really should be more of a description here...
+ * </p>
+ * <!-- end-user-doc -->
+ * @return the value of the '<em>Delete</em>' attribute.
+ * @see #setDelete(String)
+ * @generated
+ */
+ String getDelete();
+
+ /**
+ * Sets the value of the '{@link org.apache.tuscany.sdo.model.ChangeSummaryType#getDelete <em>Delete</em>}' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @param value the new value of the '<em>Delete</em>' attribute.
+ * @see #getDelete()
+ * @generated
+ */
+ void setDelete(String value);
+
+ /**
+ * Returns the value of the '<em><b>Logging</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <p>
+ * If the meaning of the '<em>Logging</em>' attribute isn't clear,
+ * there really should be more of a description here...
+ * </p>
+ * <!-- end-user-doc -->
+ * @return the value of the '<em>Logging</em>' attribute.
+ * @see #isSetLogging()
+ * @see #unsetLogging()
+ * @see #setLogging(boolean)
+ * @generated
+ */
+ boolean isLogging();
+
+ /**
+ * Sets the value of the '{@link org.apache.tuscany.sdo.model.ChangeSummaryType#isLogging <em>Logging</em>}' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @param value the new value of the '<em>Logging</em>' attribute.
+ * @see #isSetLogging()
+ * @see #unsetLogging()
+ * @see #isLogging()
+ * @generated
+ */
+ void setLogging(boolean value);
+
+ /**
+ * Unsets the value of the '{@link org.apache.tuscany.sdo.model.ChangeSummaryType#isLogging <em>Logging</em>}' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #isSetLogging()
+ * @see #isLogging()
+ * @see #setLogging(boolean)
+ * @generated
+ */
+ void unsetLogging();
+
+ /**
+ * Returns whether the value of the '{@link org.apache.tuscany.sdo.model.ChangeSummaryType#isLogging <em>Logging</em>}' attribute is set.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return whether the value of the '<em>Logging</em>' attribute is set.
+ * @see #unsetLogging()
+ * @see #isLogging()
+ * @see #setLogging(boolean)
+ * @generated
+ */
+ boolean isSetLogging();
+
+} // ChangeSummaryType
diff --git a/branches/sdo-java-M2/sdo/impl/src/main/java/org/apache/tuscany/sdo/model/DataGraphType.java b/branches/sdo-java-M2/sdo/impl/src/main/java/org/apache/tuscany/sdo/model/DataGraphType.java
new file mode 100644
index 0000000000..2c83244789
--- /dev/null
+++ b/branches/sdo-java-M2/sdo/impl/src/main/java/org/apache/tuscany/sdo/model/DataGraphType.java
@@ -0,0 +1,53 @@
+/**
+ *
+ * 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.model;
+
+import commonj.sdo.Sequence;
+
+/**
+ * <!-- begin-user-doc -->
+ * A representation of the model object '<em><b>Data Graph Type</b></em>'.
+ * <!-- end-user-doc -->
+ *
+ * <p>
+ * The following features are supported:
+ * <ul>
+ * <li>{@link org.apache.tuscany.sdo.model.DataGraphType#getAny <em>Any</em>}</li>
+ * </ul>
+ * </p>
+ *
+ * @generated
+ */
+public interface DataGraphType extends BaseDataGraphType
+{
+ /**
+ * Returns the value of the '<em><b>Any</b></em>' attribute list.
+ * <!-- begin-user-doc -->
+ * <p>
+ * If the meaning of the '<em>Any</em>' attribute list isn't clear,
+ * there really should be more of a description here...
+ * </p>
+ * <!-- end-user-doc -->
+ * @return the value of the '<em>Any</em>' attribute list.
+ * @generated
+ */
+ Sequence getAny();
+
+} // DataGraphType
diff --git a/branches/sdo-java-M2/sdo/impl/src/main/java/org/apache/tuscany/sdo/model/DataObject.java b/branches/sdo-java-M2/sdo/impl/src/main/java/org/apache/tuscany/sdo/model/DataObject.java
new file mode 100644
index 0000000000..1c02e5b988
--- /dev/null
+++ b/branches/sdo-java-M2/sdo/impl/src/main/java/org/apache/tuscany/sdo/model/DataObject.java
@@ -0,0 +1,33 @@
+/**
+ *
+ * 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.model;
+
+
+/**
+ * <!-- begin-user-doc -->
+ * A representation of the model object '<em><b>Data Object</b></em>'.
+ * <!-- end-user-doc -->
+ *
+ *
+ * @generated
+ */
+public interface DataObject
+{
+} // DataObject
diff --git a/branches/sdo-java-M2/sdo/impl/src/main/java/org/apache/tuscany/sdo/model/ModelFactory.java b/branches/sdo-java-M2/sdo/impl/src/main/java/org/apache/tuscany/sdo/model/ModelFactory.java
new file mode 100644
index 0000000000..1432d36c63
--- /dev/null
+++ b/branches/sdo-java-M2/sdo/impl/src/main/java/org/apache/tuscany/sdo/model/ModelFactory.java
@@ -0,0 +1,103 @@
+/**
+ *
+ * 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.model;
+
+
+/**
+ * <!-- begin-user-doc -->
+ * The <b>Factory</b> for the model.
+ * It provides a create method for each non-abstract class of the model.
+ * <!-- end-user-doc -->
+ * @generated
+ */
+public interface ModelFactory
+{
+ /**
+ * The singleton instance of the factory.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ ModelFactory INSTANCE = org.apache.tuscany.sdo.model.impl.ModelFactoryImpl.eINSTANCE;
+
+ /**
+ * Returns a new object of class '<em>Change Summary Type</em>'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return a new object of class '<em>Change Summary Type</em>'.
+ * @generated
+ */
+ ChangeSummaryType createChangeSummaryType();
+
+ /**
+ * Returns a new object of class '<em>Data Graph Type</em>'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return a new object of class '<em>Data Graph Type</em>'.
+ * @generated
+ */
+ DataGraphType createDataGraphType();
+
+ /**
+ * Returns a new object of class '<em>Models Type</em>'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return a new object of class '<em>Models Type</em>'.
+ * @generated
+ */
+ ModelsType createModelsType();
+
+ /**
+ * Returns a new object of class '<em>Property</em>'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return a new object of class '<em>Property</em>'.
+ * @generated
+ */
+ Property createProperty();
+
+ /**
+ * Returns a new object of class '<em>Type</em>'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return a new object of class '<em>Type</em>'.
+ * @generated
+ */
+ Type createType();
+
+ /**
+ * Returns a new object of class '<em>Types</em>'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return a new object of class '<em>Types</em>'.
+ * @generated
+ */
+ Types createTypes();
+
+ /**
+ * Returns a new object of class '<em>XSD Type</em>'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return a new object of class '<em>XSD Type</em>'.
+ * @generated
+ */
+ XSDType createXSDType();
+
+} //ModelFactory
diff --git a/branches/sdo-java-M2/sdo/impl/src/main/java/org/apache/tuscany/sdo/model/ModelPackage.java b/branches/sdo-java-M2/sdo/impl/src/main/java/org/apache/tuscany/sdo/model/ModelPackage.java
new file mode 100644
index 0000000000..602e7a9403
--- /dev/null
+++ b/branches/sdo-java-M2/sdo/impl/src/main/java/org/apache/tuscany/sdo/model/ModelPackage.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.model;
+
+import org.apache.tuscany.sdo.model.impl.ModelPackageImpl;
+import org.eclipse.emf.ecore.EAttribute;
+import org.eclipse.emf.ecore.EClass;
+import org.eclipse.emf.ecore.EDataType;
+import org.eclipse.emf.ecore.EPackage;
+import org.eclipse.emf.ecore.EReference;
+
+public interface ModelPackage extends EPackage {
+
+ /**
+ * The package name.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public static final String eNAME = "model";
+
+ /**
+ * The package namespace URI.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public static final String eNS_URI = "commonj.sdo";
+
+ /**
+ * The package namespace name.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public static final String eNS_PREFIX = "commonj";
+
+ public static final ModelPackage eINSTANCE = ModelPackageImpl.eINSTANCE;
+
+ public EClass getBaseDataGraphType();
+ public EReference getBaseDataGraphType_Models();
+ public EReference getBaseDataGraphType_Xsd();
+ public EReference getBaseDataGraphType_ChangeSummary();
+ public EAttribute getBaseDataGraphType_AnyAttribute();
+ public EClass getChangeSummaryType();
+ public EAttribute getChangeSummaryType_Any();
+ public EAttribute getChangeSummaryType_Create();
+ public EAttribute getChangeSummaryType_Delete();
+ public EAttribute getChangeSummaryType_Logging();
+ public EClass getDataGraphType();
+ public EAttribute getDataGraphType_Any();
+ public EClass getDataObject();
+ public EClass getDocumentRoot();
+ public EAttribute getDocumentRoot_Mixed();
+ public EReference getDocumentRoot_XMLNSPrefixMap();
+ public EReference getDocumentRoot_XSISchemaLocation();
+ public EReference getDocumentRoot_Datagraph();
+ public EReference getDocumentRoot_DataObject();
+ public EReference getDocumentRoot_Type();
+ public EReference getDocumentRoot_Types();
+ public EAttribute getDocumentRoot_Ref();
+ public EClass getModelsType();
+ public EAttribute getModelsType_Any();
+ public EClass getProperty();
+ public EAttribute getProperty_AliasName();
+ public EAttribute getProperty_Any();
+ public EAttribute getProperty_Containment();
+ public EAttribute getProperty_Default();
+ public EAttribute getProperty_Many();
+ public EAttribute getProperty_Name();
+ public EReference getProperty_Opposite();
+ public EAttribute getProperty_ReadOnly();
+ public EReference getProperty_Type();
+ public EAttribute getProperty_AnyAttribute();
+ public EClass getTextType();
+ public EAttribute getTextType_Text();
+ public EClass getType();
+ public EReference getType_BaseType();
+ public EReference getType_Property();
+ public EAttribute getType_AliasName();
+ public EAttribute getType_Any();
+ public EAttribute getType_Abstract();
+ public EAttribute getType_DataType();
+ public EAttribute getType_Name();
+ public EAttribute getType_Open();
+ public EAttribute getType_Sequenced();
+ public EAttribute getType_Uri();
+ public EAttribute getType_AnyAttribute();
+ public EClass getTypes();
+ public EReference getTypes_Type();
+ public EClass getXSDType();
+ public EAttribute getXSDType_Any();
+ public EDataType getBoolean();
+ public EDataType getBooleanObject();
+ public EDataType getByte();
+ public EDataType getByteObject();
+ public EDataType getBytes();
+ public EDataType getCharacter();
+ public EDataType getCharacterObject();
+ public EDataType getDate();
+ public EDataType getDateTime();
+ public EDataType getDay();
+ public EDataType getDecimal();
+ public EDataType getDouble();
+ public EDataType getDoubleObject();
+ public EDataType getDuration();
+ public EDataType getFloat();
+ public EDataType getFloatObject();
+ public EDataType getInt();
+ public EDataType getInteger();
+ public EDataType getIntObject();
+ public EDataType getLong();
+ public EDataType getLongObject();
+ public EDataType getMonth();
+ public EDataType getMonthDay();
+ public EDataType getObject();
+ public EDataType getShort();
+ public EDataType getShortObject();
+ public EDataType getString();
+ public EDataType getStrings();
+ public EDataType getTime();
+ public EDataType getURI();
+ public EDataType getYear();
+ public EDataType getYearMonth();
+ public EDataType getYearMonthDay();
+ public ModelFactory getModelFactory();
+}
diff --git a/branches/sdo-java-M2/sdo/impl/src/main/java/org/apache/tuscany/sdo/model/ModelsType.java b/branches/sdo-java-M2/sdo/impl/src/main/java/org/apache/tuscany/sdo/model/ModelsType.java
new file mode 100644
index 0000000000..a88e7f4f4d
--- /dev/null
+++ b/branches/sdo-java-M2/sdo/impl/src/main/java/org/apache/tuscany/sdo/model/ModelsType.java
@@ -0,0 +1,59 @@
+/**
+ *
+ * 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.model;
+
+import commonj.sdo.Sequence;
+
+/**
+ * <!-- begin-user-doc -->
+ * A representation of the model object '<em><b>Models Type</b></em>'.
+ * <!-- end-user-doc -->
+ *
+ * <!-- begin-model-doc -->
+ *
+ * Expected type is emof:Package.
+ *
+ * <!-- end-model-doc -->
+ *
+ * <p>
+ * The following features are supported:
+ * <ul>
+ * <li>{@link org.apache.tuscany.sdo.model.ModelsType#getAny <em>Any</em>}</li>
+ * </ul>
+ * </p>
+ *
+ * @generated
+ */
+public interface ModelsType
+{
+ /**
+ * Returns the value of the '<em><b>Any</b></em>' attribute list.
+ * <!-- begin-user-doc -->
+ * <p>
+ * If the meaning of the '<em>Any</em>' attribute list isn't clear,
+ * there really should be more of a description here...
+ * </p>
+ * <!-- end-user-doc -->
+ * @return the value of the '<em>Any</em>' attribute list.
+ * @generated
+ */
+ Sequence getAny();
+
+} // ModelsType
diff --git a/branches/sdo-java-M2/sdo/impl/src/main/java/org/apache/tuscany/sdo/model/Property.java b/branches/sdo-java-M2/sdo/impl/src/main/java/org/apache/tuscany/sdo/model/Property.java
new file mode 100644
index 0000000000..12139ad29f
--- /dev/null
+++ b/branches/sdo-java-M2/sdo/impl/src/main/java/org/apache/tuscany/sdo/model/Property.java
@@ -0,0 +1,345 @@
+/**
+ *
+ * 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.model;
+
+import commonj.sdo.Sequence;
+
+import java.util.List;
+
+/**
+ * <!-- begin-user-doc -->
+ * A representation of the model object '<em><b>Property</b></em>'.
+ * <!-- end-user-doc -->
+ *
+ * <p>
+ * The following features are supported:
+ * <ul>
+ * <li>{@link org.apache.tuscany.sdo.model.Property#getAliasName <em>Alias Name</em>}</li>
+ * <li>{@link org.apache.tuscany.sdo.model.Property#getAny <em>Any</em>}</li>
+ * <li>{@link org.apache.tuscany.sdo.model.Property#isContainment <em>Containment</em>}</li>
+ * <li>{@link org.apache.tuscany.sdo.model.Property#getDefault <em>Default</em>}</li>
+ * <li>{@link org.apache.tuscany.sdo.model.Property#isMany <em>Many</em>}</li>
+ * <li>{@link org.apache.tuscany.sdo.model.Property#getName <em>Name</em>}</li>
+ * <li>{@link org.apache.tuscany.sdo.model.Property#getOpposite <em>Opposite</em>}</li>
+ * <li>{@link org.apache.tuscany.sdo.model.Property#isReadOnly <em>Read Only</em>}</li>
+ * <li>{@link org.apache.tuscany.sdo.model.Property#getType <em>Type</em>}</li>
+ * <li>{@link org.apache.tuscany.sdo.model.Property#getAnyAttribute <em>Any Attribute</em>}</li>
+ * </ul>
+ * </p>
+ *
+ * Note: The getDefault and getOpposite methods had to be renamed to avoid
+ * conflict with the commonj.sdo.Property getDefault and getOpposite
+ * methods in classes that implement both. Eventually, the two interfaces
+ * should be brought in-line with one another -- James Snell
+ *
+ * @generated
+ */
+public interface Property
+{
+ /**
+ * Returns the value of the '<em><b>Alias Name</b></em>' attribute list.
+ * The list contents are of type {@link java.lang.String}.
+ * <!-- begin-user-doc -->
+ * <p>
+ * If the meaning of the '<em>Alias Name</em>' attribute list isn't clear,
+ * there really should be more of a description here...
+ * </p>
+ * <!-- end-user-doc -->
+ * @return the value of the '<em>Alias Name</em>' attribute list.
+ * @generated
+ */
+ List getAliasName();
+
+ /**
+ * Returns the value of the '<em><b>Any</b></em>' attribute list.
+ * <!-- begin-user-doc -->
+ * <p>
+ * If the meaning of the '<em>Any</em>' attribute list isn't clear,
+ * there really should be more of a description here...
+ * </p>
+ * <!-- end-user-doc -->
+ * @return the value of the '<em>Any</em>' attribute list.
+ * @generated
+ */
+ Sequence getAny();
+
+ /**
+ * Returns the value of the '<em><b>Containment</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <p>
+ * If the meaning of the '<em>Containment</em>' attribute isn't clear,
+ * there really should be more of a description here...
+ * </p>
+ * <!-- end-user-doc -->
+ * @return the value of the '<em>Containment</em>' attribute.
+ * @see #isSetContainment()
+ * @see #unsetContainment()
+ * @see #setContainment(boolean)
+ * @generated
+ */
+ boolean isContainment();
+
+ /**
+ * Sets the value of the '{@link org.apache.tuscany.sdo.model.Property#isContainment <em>Containment</em>}' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @param value the new value of the '<em>Containment</em>' attribute.
+ * @see #isSetContainment()
+ * @see #unsetContainment()
+ * @see #isContainment()
+ * @generated
+ */
+ void setContainment(boolean value);
+
+ /**
+ * Unsets the value of the '{@link org.apache.tuscany.sdo.model.Property#isContainment <em>Containment</em>}' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #isSetContainment()
+ * @see #isContainment()
+ * @see #setContainment(boolean)
+ * @generated
+ */
+ void unsetContainment();
+
+ /**
+ * Returns whether the value of the '{@link org.apache.tuscany.sdo.model.Property#isContainment <em>Containment</em>}' attribute is set.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return whether the value of the '<em>Containment</em>' attribute is set.
+ * @see #unsetContainment()
+ * @see #isContainment()
+ * @see #setContainment(boolean)
+ * @generated
+ */
+ boolean isSetContainment();
+
+ /**
+ * Returns the value of the '<em><b>Default</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <p>
+ * If the meaning of the '<em>Default</em>' attribute isn't clear,
+ * there really should be more of a description here...
+ * </p>
+ * <!-- end-user-doc -->
+ * @return the value of the '<em>Default</em>' attribute.
+ * @see #setDefault(String)
+ * @generated NOT
+ */
+ String getDefault_();
+
+ /**
+ * Sets the value of the '{@link org.apache.tuscany.sdo.model.Property#getDefault <em>Default</em>}' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @param value the new value of the '<em>Default</em>' attribute.
+ * @see #getDefault()
+ * @generated
+ */
+ void setDefault_(String value);
+
+ /**
+ * Returns the value of the '<em><b>Many</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <p>
+ * If the meaning of the '<em>Many</em>' attribute isn't clear,
+ * there really should be more of a description here...
+ * </p>
+ * <!-- end-user-doc -->
+ * @return the value of the '<em>Many</em>' attribute.
+ * @see #isSetMany()
+ * @see #unsetMany()
+ * @see #setMany(boolean)
+ * @generated
+ */
+ boolean isMany();
+
+ /**
+ * Sets the value of the '{@link org.apache.tuscany.sdo.model.Property#isMany <em>Many</em>}' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @param value the new value of the '<em>Many</em>' attribute.
+ * @see #isSetMany()
+ * @see #unsetMany()
+ * @see #isMany()
+ * @generated
+ */
+ void setMany(boolean value);
+
+ /**
+ * Unsets the value of the '{@link org.apache.tuscany.sdo.model.Property#isMany <em>Many</em>}' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #isSetMany()
+ * @see #isMany()
+ * @see #setMany(boolean)
+ * @generated
+ */
+ void unsetMany();
+
+ /**
+ * Returns whether the value of the '{@link org.apache.tuscany.sdo.model.Property#isMany <em>Many</em>}' attribute is set.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return whether the value of the '<em>Many</em>' attribute is set.
+ * @see #unsetMany()
+ * @see #isMany()
+ * @see #setMany(boolean)
+ * @generated
+ */
+ boolean isSetMany();
+
+ /**
+ * Returns the value of the '<em><b>Name</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <p>
+ * If the meaning of the '<em>Name</em>' attribute isn't clear,
+ * there really should be more of a description here...
+ * </p>
+ * <!-- end-user-doc -->
+ * @return the value of the '<em>Name</em>' attribute.
+ * @see #setName(String)
+ * @generated
+ */
+ String getName();
+
+ /**
+ * Sets the value of the '{@link org.apache.tuscany.sdo.model.Property#getName <em>Name</em>}' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @param value the new value of the '<em>Name</em>' attribute.
+ * @see #getName()
+ * @generated
+ */
+ void setName(String value);
+
+ /**
+ * Returns the value of the '<em><b>Opposite</b></em>' reference.
+ * <!-- begin-user-doc -->
+ * <p>
+ * If the meaning of the '<em>Opposite</em>' reference isn't clear,
+ * there really should be more of a description here...
+ * </p>
+ * <!-- end-user-doc -->
+ * @return the value of the '<em>Opposite</em>' reference.
+ * @see #setOpposite(Property)
+ * @generated
+ */
+ Property getOpposite_();
+
+ /**
+ * Sets the value of the '{@link org.apache.tuscany.sdo.model.Property#getOpposite <em>Opposite</em>}' reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @param value the new value of the '<em>Opposite</em>' reference.
+ * @see #getOpposite()
+ * @generated
+ */
+ void setOpposite_(Property value);
+
+ /**
+ * Returns the value of the '<em><b>Read Only</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <p>
+ * If the meaning of the '<em>Read Only</em>' attribute isn't clear,
+ * there really should be more of a description here...
+ * </p>
+ * <!-- end-user-doc -->
+ * @return the value of the '<em>Read Only</em>' attribute.
+ * @see #isSetReadOnly()
+ * @see #unsetReadOnly()
+ * @see #setReadOnly(boolean)
+ * @generated
+ */
+ boolean isReadOnly();
+
+ /**
+ * Sets the value of the '{@link org.apache.tuscany.sdo.model.Property#isReadOnly <em>Read Only</em>}' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @param value the new value of the '<em>Read Only</em>' attribute.
+ * @see #isSetReadOnly()
+ * @see #unsetReadOnly()
+ * @see #isReadOnly()
+ * @generated
+ */
+ void setReadOnly(boolean value);
+
+ /**
+ * Unsets the value of the '{@link org.apache.tuscany.sdo.model.Property#isReadOnly <em>Read Only</em>}' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #isSetReadOnly()
+ * @see #isReadOnly()
+ * @see #setReadOnly(boolean)
+ * @generated
+ */
+ void unsetReadOnly();
+
+ /**
+ * Returns whether the value of the '{@link org.apache.tuscany.sdo.model.Property#isReadOnly <em>Read Only</em>}' attribute is set.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return whether the value of the '<em>Read Only</em>' attribute is set.
+ * @see #unsetReadOnly()
+ * @see #isReadOnly()
+ * @see #setReadOnly(boolean)
+ * @generated
+ */
+ boolean isSetReadOnly();
+
+ /**
+ * Returns the value of the '<em><b>Type</b></em>' reference.
+ * <!-- begin-user-doc -->
+ * <p>
+ * If the meaning of the '<em>Type</em>' reference isn't clear,
+ * there really should be more of a description here...
+ * </p>
+ * <!-- end-user-doc -->
+ * @return the value of the '<em>Type</em>' reference.
+ * @see #setType(Type)
+ * @generated
+ */
+ Type getType_();
+
+ /**
+ * Sets the value of the '{@link org.apache.tuscany.sdo.model.Property#getType <em>Type</em>}' reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @param value the new value of the '<em>Type</em>' reference.
+ * @see #getType()
+ * @generated
+ */
+ void setType(Type value);
+
+ /**
+ * Returns the value of the '<em><b>Any Attribute</b></em>' attribute list.
+ * <!-- begin-user-doc -->
+ * <p>
+ * If the meaning of the '<em>Any Attribute</em>' attribute list isn't clear,
+ * there really should be more of a description here...
+ * </p>
+ * <!-- end-user-doc -->
+ * @return the value of the '<em>Any Attribute</em>' attribute list.
+ * @generated
+ */
+ Sequence getAnyAttribute();
+
+} // Property
diff --git a/branches/sdo-java-M2/sdo/impl/src/main/java/org/apache/tuscany/sdo/model/TextType.java b/branches/sdo-java-M2/sdo/impl/src/main/java/org/apache/tuscany/sdo/model/TextType.java
new file mode 100644
index 0000000000..74a1176647
--- /dev/null
+++ b/branches/sdo-java-M2/sdo/impl/src/main/java/org/apache/tuscany/sdo/model/TextType.java
@@ -0,0 +1,54 @@
+/**
+ *
+ * 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.model;
+
+import java.util.List;
+
+/**
+ * <!-- begin-user-doc -->
+ * A representation of the model object '<em><b>Text Type</b></em>'.
+ * <!-- end-user-doc -->
+ *
+ * <p>
+ * The following features are supported:
+ * <ul>
+ * <li>{@link org.apache.tuscany.sdo.model.TextType#getText <em>Text</em>}</li>
+ * </ul>
+ * </p>
+ *
+ * @generated
+ */
+public interface TextType
+{
+ /**
+ * Returns the value of the '<em><b>Text</b></em>' attribute list.
+ * The list contents are of type {@link java.lang.String}.
+ * <!-- begin-user-doc -->
+ * <p>
+ * If the meaning of the '<em>Text</em>' attribute list isn't clear,
+ * there really should be more of a description here...
+ * </p>
+ * <!-- end-user-doc -->
+ * @return the value of the '<em>Text</em>' attribute list.
+ * @generated
+ */
+ List getText();
+
+} // TextType
diff --git a/branches/sdo-java-M2/sdo/impl/src/main/java/org/apache/tuscany/sdo/model/Type.java b/branches/sdo-java-M2/sdo/impl/src/main/java/org/apache/tuscany/sdo/model/Type.java
new file mode 100644
index 0000000000..12f7043bb8
--- /dev/null
+++ b/branches/sdo-java-M2/sdo/impl/src/main/java/org/apache/tuscany/sdo/model/Type.java
@@ -0,0 +1,374 @@
+/**
+ *
+ * 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.model;
+
+import commonj.sdo.Sequence;
+
+import java.util.List;
+
+/**
+ * <!-- begin-user-doc -->
+ * A representation of the model object '<em><b>Type</b></em>'.
+ * <!-- end-user-doc -->
+ *
+ * <p>
+ * The following features are supported:
+ * <ul>
+ * <li>{@link org.apache.tuscany.sdo.model.Type#getBaseType <em>Base Type</em>}</li>
+ * <li>{@link org.apache.tuscany.sdo.model.Type#getProperty <em>Property</em>}</li>
+ * <li>{@link org.apache.tuscany.sdo.model.Type#getAliasName <em>Alias Name</em>}</li>
+ * <li>{@link org.apache.tuscany.sdo.model.Type#getAny <em>Any</em>}</li>
+ * <li>{@link org.apache.tuscany.sdo.model.Type#isAbstract <em>Abstract</em>}</li>
+ * <li>{@link org.apache.tuscany.sdo.model.Type#isDataType <em>Data Type</em>}</li>
+ * <li>{@link org.apache.tuscany.sdo.model.Type#getName <em>Name</em>}</li>
+ * <li>{@link org.apache.tuscany.sdo.model.Type#isOpen <em>Open</em>}</li>
+ * <li>{@link org.apache.tuscany.sdo.model.Type#isSequenced <em>Sequenced</em>}</li>
+ * <li>{@link org.apache.tuscany.sdo.model.Type#getUri <em>Uri</em>}</li>
+ * <li>{@link org.apache.tuscany.sdo.model.Type#getAnyAttribute <em>Any Attribute</em>}</li>
+ * </ul>
+ * </p>
+ *
+ * @generated
+ */
+public interface Type
+{
+ /**
+ * Returns the value of the '<em><b>Base Type</b></em>' reference list.
+ * The list contents are of type {@link org.apache.tuscany.sdo.model.Type}.
+ * <!-- begin-user-doc -->
+ * <p>
+ * If the meaning of the '<em>Base Type</em>' reference list isn't clear,
+ * there really should be more of a description here...
+ * </p>
+ * <!-- end-user-doc -->
+ * @return the value of the '<em>Base Type</em>' reference list.
+ * @generated
+ */
+ List getBaseType();
+
+ /**
+ * Returns the value of the '<em><b>Property</b></em>' containment reference list.
+ * The list contents are of type {@link org.apache.tuscany.sdo.model.Property}.
+ * <!-- begin-user-doc -->
+ * <p>
+ * If the meaning of the '<em>Property</em>' containment reference list isn't clear,
+ * there really should be more of a description here...
+ * </p>
+ * <!-- end-user-doc -->
+ * @return the value of the '<em>Property</em>' containment reference list.
+ * @generated
+ */
+ List getProperty();
+
+ /**
+ * Returns the value of the '<em><b>Alias Name</b></em>' attribute list.
+ * The list contents are of type {@link java.lang.String}.
+ * <!-- begin-user-doc -->
+ * <p>
+ * If the meaning of the '<em>Alias Name</em>' attribute list isn't clear,
+ * there really should be more of a description here...
+ * </p>
+ * <!-- end-user-doc -->
+ * @return the value of the '<em>Alias Name</em>' attribute list.
+ * @generated
+ */
+ List getAliasName();
+
+ /**
+ * Returns the value of the '<em><b>Any</b></em>' attribute list.
+ * <!-- begin-user-doc -->
+ * <p>
+ * If the meaning of the '<em>Any</em>' attribute list isn't clear,
+ * there really should be more of a description here...
+ * </p>
+ * <!-- end-user-doc -->
+ * @return the value of the '<em>Any</em>' attribute list.
+ * @generated
+ */
+ Sequence getAny();
+
+ /**
+ * Returns the value of the '<em><b>Abstract</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <p>
+ * If the meaning of the '<em>Abstract</em>' attribute isn't clear,
+ * there really should be more of a description here...
+ * </p>
+ * <!-- end-user-doc -->
+ * @return the value of the '<em>Abstract</em>' attribute.
+ * @see #isSetAbstract()
+ * @see #unsetAbstract()
+ * @see #setAbstract(boolean)
+ * @generated
+ */
+ boolean isAbstract();
+
+ /**
+ * Sets the value of the '{@link org.apache.tuscany.sdo.model.Type#isAbstract <em>Abstract</em>}' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @param value the new value of the '<em>Abstract</em>' attribute.
+ * @see #isSetAbstract()
+ * @see #unsetAbstract()
+ * @see #isAbstract()
+ * @generated
+ */
+ void setAbstract(boolean value);
+
+ /**
+ * Unsets the value of the '{@link org.apache.tuscany.sdo.model.Type#isAbstract <em>Abstract</em>}' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #isSetAbstract()
+ * @see #isAbstract()
+ * @see #setAbstract(boolean)
+ * @generated
+ */
+ void unsetAbstract();
+
+ /**
+ * Returns whether the value of the '{@link org.apache.tuscany.sdo.model.Type#isAbstract <em>Abstract</em>}' attribute is set.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return whether the value of the '<em>Abstract</em>' attribute is set.
+ * @see #unsetAbstract()
+ * @see #isAbstract()
+ * @see #setAbstract(boolean)
+ * @generated
+ */
+ boolean isSetAbstract();
+
+ /**
+ * Returns the value of the '<em><b>Data Type</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <p>
+ * If the meaning of the '<em>Data Type</em>' attribute isn't clear,
+ * there really should be more of a description here...
+ * </p>
+ * <!-- end-user-doc -->
+ * @return the value of the '<em>Data Type</em>' attribute.
+ * @see #isSetDataType()
+ * @see #unsetDataType()
+ * @see #setDataType(boolean)
+ * @generated
+ */
+ boolean isDataType();
+
+ /**
+ * Sets the value of the '{@link org.apache.tuscany.sdo.model.Type#isDataType <em>Data Type</em>}' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @param value the new value of the '<em>Data Type</em>' attribute.
+ * @see #isSetDataType()
+ * @see #unsetDataType()
+ * @see #isDataType()
+ * @generated
+ */
+ void setDataType(boolean value);
+
+ /**
+ * Unsets the value of the '{@link org.apache.tuscany.sdo.model.Type#isDataType <em>Data Type</em>}' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #isSetDataType()
+ * @see #isDataType()
+ * @see #setDataType(boolean)
+ * @generated
+ */
+ void unsetDataType();
+
+ /**
+ * Returns whether the value of the '{@link org.apache.tuscany.sdo.model.Type#isDataType <em>Data Type</em>}' attribute is set.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return whether the value of the '<em>Data Type</em>' attribute is set.
+ * @see #unsetDataType()
+ * @see #isDataType()
+ * @see #setDataType(boolean)
+ * @generated
+ */
+ boolean isSetDataType();
+
+ /**
+ * Returns the value of the '<em><b>Name</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <p>
+ * If the meaning of the '<em>Name</em>' attribute isn't clear,
+ * there really should be more of a description here...
+ * </p>
+ * <!-- end-user-doc -->
+ * @return the value of the '<em>Name</em>' attribute.
+ * @see #setName(String)
+ * @generated
+ */
+ String getName();
+
+ /**
+ * Sets the value of the '{@link org.apache.tuscany.sdo.model.Type#getName <em>Name</em>}' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @param value the new value of the '<em>Name</em>' attribute.
+ * @see #getName()
+ * @generated
+ */
+ void setName(String value);
+
+ /**
+ * Returns the value of the '<em><b>Open</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <p>
+ * If the meaning of the '<em>Open</em>' attribute isn't clear,
+ * there really should be more of a description here...
+ * </p>
+ * <!-- end-user-doc -->
+ * @return the value of the '<em>Open</em>' attribute.
+ * @see #isSetOpen()
+ * @see #unsetOpen()
+ * @see #setOpen(boolean)
+ * @generated
+ */
+ boolean isOpen();
+
+ /**
+ * Sets the value of the '{@link org.apache.tuscany.sdo.model.Type#isOpen <em>Open</em>}' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @param value the new value of the '<em>Open</em>' attribute.
+ * @see #isSetOpen()
+ * @see #unsetOpen()
+ * @see #isOpen()
+ * @generated
+ */
+ void setOpen(boolean value);
+
+ /**
+ * Unsets the value of the '{@link org.apache.tuscany.sdo.model.Type#isOpen <em>Open</em>}' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #isSetOpen()
+ * @see #isOpen()
+ * @see #setOpen(boolean)
+ * @generated
+ */
+ void unsetOpen();
+
+ /**
+ * Returns whether the value of the '{@link org.apache.tuscany.sdo.model.Type#isOpen <em>Open</em>}' attribute is set.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return whether the value of the '<em>Open</em>' attribute is set.
+ * @see #unsetOpen()
+ * @see #isOpen()
+ * @see #setOpen(boolean)
+ * @generated
+ */
+ boolean isSetOpen();
+
+ /**
+ * Returns the value of the '<em><b>Sequenced</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <p>
+ * If the meaning of the '<em>Sequenced</em>' attribute isn't clear,
+ * there really should be more of a description here...
+ * </p>
+ * <!-- end-user-doc -->
+ * @return the value of the '<em>Sequenced</em>' attribute.
+ * @see #isSetSequenced()
+ * @see #unsetSequenced()
+ * @see #setSequenced(boolean)
+ * @generated
+ */
+ boolean isSequenced();
+
+ /**
+ * Sets the value of the '{@link org.apache.tuscany.sdo.model.Type#isSequenced <em>Sequenced</em>}' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @param value the new value of the '<em>Sequenced</em>' attribute.
+ * @see #isSetSequenced()
+ * @see #unsetSequenced()
+ * @see #isSequenced()
+ * @generated
+ */
+ void setSequenced(boolean value);
+
+ /**
+ * Unsets the value of the '{@link org.apache.tuscany.sdo.model.Type#isSequenced <em>Sequenced</em>}' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #isSetSequenced()
+ * @see #isSequenced()
+ * @see #setSequenced(boolean)
+ * @generated
+ */
+ void unsetSequenced();
+
+ /**
+ * Returns whether the value of the '{@link org.apache.tuscany.sdo.model.Type#isSequenced <em>Sequenced</em>}' attribute is set.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return whether the value of the '<em>Sequenced</em>' attribute is set.
+ * @see #unsetSequenced()
+ * @see #isSequenced()
+ * @see #setSequenced(boolean)
+ * @generated
+ */
+ boolean isSetSequenced();
+
+ /**
+ * Returns the value of the '<em><b>Uri</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <p>
+ * If the meaning of the '<em>Uri</em>' attribute isn't clear,
+ * there really should be more of a description here...
+ * </p>
+ * <!-- end-user-doc -->
+ * @return the value of the '<em>Uri</em>' attribute.
+ * @see #setUri(String)
+ * @generated
+ */
+ String getUri();
+
+ /**
+ * Sets the value of the '{@link org.apache.tuscany.sdo.model.Type#getUri <em>Uri</em>}' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @param value the new value of the '<em>Uri</em>' attribute.
+ * @see #getUri()
+ * @generated
+ */
+ void setUri(String value);
+
+ /**
+ * Returns the value of the '<em><b>Any Attribute</b></em>' attribute list.
+ * <!-- begin-user-doc -->
+ * <p>
+ * If the meaning of the '<em>Any Attribute</em>' attribute list isn't clear,
+ * there really should be more of a description here...
+ * </p>
+ * <!-- end-user-doc -->
+ * @return the value of the '<em>Any Attribute</em>' attribute list.
+ * @generated
+ */
+ Sequence getAnyAttribute();
+
+ String getInstanceClassName();
+
+} // Type
diff --git a/branches/sdo-java-M2/sdo/impl/src/main/java/org/apache/tuscany/sdo/model/Types.java b/branches/sdo-java-M2/sdo/impl/src/main/java/org/apache/tuscany/sdo/model/Types.java
new file mode 100644
index 0000000000..4fa53f5bf9
--- /dev/null
+++ b/branches/sdo-java-M2/sdo/impl/src/main/java/org/apache/tuscany/sdo/model/Types.java
@@ -0,0 +1,56 @@
+/**
+ *
+ * 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.model;
+
+import java.util.List;
+
+/**
+ * <!-- begin-user-doc -->
+ * A representation of the model object '<em><b>Types</b></em>'.
+ * <!-- end-user-doc -->
+ *
+ * <p>
+ * The following features are supported:
+ * <ul>
+ * <li>{@link org.apache.tuscany.sdo.model.Types#getType <em>Type</em>}</li>
+ * </ul>
+ * </p>
+ *
+ * @generated
+ */
+public interface Types
+{
+ /**
+ * Returns the value of the '<em><b>Type</b></em>' containment reference list.
+ * The list contents are of type {@link org.apache.tuscany.sdo.model.Type}.
+ * <!-- begin-user-doc -->
+ * <p>
+ * If the meaning of the '<em>Type</em>' containment reference list isn't clear,
+ * there really should be more of a description here...
+ * </p>
+ * <!-- end-user-doc -->
+ * @return the value of the '<em>Type</em>' containment reference list.
+ * @generated
+ */
+ List getType_();
+
+ List getTypeList();
+
+} // Types
diff --git a/branches/sdo-java-M2/sdo/impl/src/main/java/org/apache/tuscany/sdo/model/XSDType.java b/branches/sdo-java-M2/sdo/impl/src/main/java/org/apache/tuscany/sdo/model/XSDType.java
new file mode 100644
index 0000000000..1e818adb30
--- /dev/null
+++ b/branches/sdo-java-M2/sdo/impl/src/main/java/org/apache/tuscany/sdo/model/XSDType.java
@@ -0,0 +1,59 @@
+/**
+ *
+ * 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.model;
+
+import commonj.sdo.Sequence;
+
+/**
+ * <!-- begin-user-doc -->
+ * A representation of the model object '<em><b>XSD Type</b></em>'.
+ * <!-- end-user-doc -->
+ *
+ * <!-- begin-model-doc -->
+ *
+ * Expected type is xsd:schema.
+ *
+ * <!-- end-model-doc -->
+ *
+ * <p>
+ * The following features are supported:
+ * <ul>
+ * <li>{@link org.apache.tuscany.sdo.model.XSDType#getAny <em>Any</em>}</li>
+ * </ul>
+ * </p>
+ *
+ * @generated
+ */
+public interface XSDType
+{
+ /**
+ * Returns the value of the '<em><b>Any</b></em>' attribute list.
+ * <!-- begin-user-doc -->
+ * <p>
+ * If the meaning of the '<em>Any</em>' attribute list isn't clear,
+ * there really should be more of a description here...
+ * </p>
+ * <!-- end-user-doc -->
+ * @return the value of the '<em>Any</em>' attribute list.
+ * @generated
+ */
+ Sequence getAny();
+
+} // XSDType
diff --git a/branches/sdo-java-M2/sdo/impl/src/main/java/org/apache/tuscany/sdo/model/impl/BaseDataGraphTypeImpl.java b/branches/sdo-java-M2/sdo/impl/src/main/java/org/apache/tuscany/sdo/model/impl/BaseDataGraphTypeImpl.java
new file mode 100644
index 0000000000..23d631b925
--- /dev/null
+++ b/branches/sdo-java-M2/sdo/impl/src/main/java/org/apache/tuscany/sdo/model/impl/BaseDataGraphTypeImpl.java
@@ -0,0 +1,411 @@
+/**
+ *
+ * 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.model.impl;
+
+import commonj.sdo.Sequence;
+
+
+import org.apache.tuscany.sdo.impl.DataObjectImpl;
+import org.apache.tuscany.sdo.model.BaseDataGraphType;
+import org.apache.tuscany.sdo.model.ChangeSummaryType;
+import org.apache.tuscany.sdo.model.ModelsType;
+import org.apache.tuscany.sdo.model.XSDType;
+
+import org.apache.tuscany.sdo.util.BasicSequence;
+
+import org.eclipse.emf.common.notify.Notification;
+import org.eclipse.emf.common.notify.NotificationChain;
+
+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.BasicFeatureMap;
+import org.eclipse.emf.ecore.util.FeatureMap;
+import org.eclipse.emf.ecore.util.InternalEList;
+
+/**
+ * <!-- begin-user-doc -->
+ * An implementation of the model object '<em><b>Base Data Graph Type</b></em>'.
+ * <!-- end-user-doc -->
+ * <p>
+ * The following features are implemented:
+ * <ul>
+ * <li>{@link org.apache.tuscany.sdo.model.impl.BaseDataGraphTypeImpl#getModels <em>Models</em>}</li>
+ * <li>{@link org.apache.tuscany.sdo.model.impl.BaseDataGraphTypeImpl#getXsd <em>Xsd</em>}</li>
+ * <li>{@link org.apache.tuscany.sdo.model.impl.BaseDataGraphTypeImpl#getChangeSummary <em>Change Summary</em>}</li>
+ * <li>{@link org.apache.tuscany.sdo.model.impl.BaseDataGraphTypeImpl#getAnyAttribute <em>Any Attribute</em>}</li>
+ * </ul>
+ * </p>
+ *
+ * @generated
+ */
+public abstract class BaseDataGraphTypeImpl extends DataObjectImpl implements BaseDataGraphType
+{
+ /**
+ * The cached value of the '{@link #getModels() <em>Models</em>}' containment reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #getModels()
+ * @generated
+ * @ordered
+ */
+ protected ModelsType models = null;
+
+ /**
+ * The cached value of the '{@link #getXsd() <em>Xsd</em>}' containment reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #getXsd()
+ * @generated
+ * @ordered
+ */
+ protected XSDType xsd = null;
+
+ /**
+ * The cached value of the '{@link #getChangeSummary() <em>Change Summary</em>}' containment reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #getChangeSummary()
+ * @generated
+ * @ordered
+ */
+ protected ChangeSummaryType changeSummary = null;
+
+ /**
+ * The cached value of the '{@link #getAnyAttribute() <em>Any Attribute</em>}' attribute list.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #getAnyAttribute()
+ * @generated
+ * @ordered
+ */
+ protected BasicSequence anyAttribute = null;
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ protected BaseDataGraphTypeImpl()
+ {
+ super();
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ protected EClass eStaticClass()
+ {
+ return ModelPackageImpl.Literals.BASE_DATA_GRAPH_TYPE;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public ModelsType getModels()
+ {
+ return models;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public NotificationChain basicSetModels(ModelsType newModels, NotificationChain msgs)
+ {
+ ModelsType oldModels = models;
+ models = newModels;
+ if (eNotificationRequired())
+ {
+ ENotificationImpl notification = new ENotificationImpl(this, Notification.SET, ModelPackageImpl.BASE_DATA_GRAPH_TYPE__MODELS, oldModels, newModels);
+ if (msgs == null) msgs = notification; else msgs.add(notification);
+ }
+ return msgs;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public void setModels(ModelsType newModels)
+ {
+ if (newModels != models)
+ {
+ NotificationChain msgs = null;
+ if (models != null)
+ msgs = ((InternalEObject)models).eInverseRemove(this, EOPPOSITE_FEATURE_BASE - ModelPackageImpl.BASE_DATA_GRAPH_TYPE__MODELS, null, msgs);
+ if (newModels != null)
+ msgs = ((InternalEObject)newModels).eInverseAdd(this, EOPPOSITE_FEATURE_BASE - ModelPackageImpl.BASE_DATA_GRAPH_TYPE__MODELS, null, msgs);
+ msgs = basicSetModels(newModels, msgs);
+ if (msgs != null) msgs.dispatch();
+ }
+ else if (eNotificationRequired())
+ eNotify(new ENotificationImpl(this, Notification.SET, ModelPackageImpl.BASE_DATA_GRAPH_TYPE__MODELS, newModels, newModels));
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public XSDType getXsd()
+ {
+ return xsd;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public NotificationChain basicSetXsd(XSDType newXsd, NotificationChain msgs)
+ {
+ XSDType oldXsd = xsd;
+ xsd = newXsd;
+ if (eNotificationRequired())
+ {
+ ENotificationImpl notification = new ENotificationImpl(this, Notification.SET, ModelPackageImpl.BASE_DATA_GRAPH_TYPE__XSD, oldXsd, newXsd);
+ if (msgs == null) msgs = notification; else msgs.add(notification);
+ }
+ return msgs;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public void setXsd(XSDType newXsd)
+ {
+ if (newXsd != xsd)
+ {
+ NotificationChain msgs = null;
+ if (xsd != null)
+ msgs = ((InternalEObject)xsd).eInverseRemove(this, EOPPOSITE_FEATURE_BASE - ModelPackageImpl.BASE_DATA_GRAPH_TYPE__XSD, null, msgs);
+ if (newXsd != null)
+ msgs = ((InternalEObject)newXsd).eInverseAdd(this, EOPPOSITE_FEATURE_BASE - ModelPackageImpl.BASE_DATA_GRAPH_TYPE__XSD, null, msgs);
+ msgs = basicSetXsd(newXsd, msgs);
+ if (msgs != null) msgs.dispatch();
+ }
+ else if (eNotificationRequired())
+ eNotify(new ENotificationImpl(this, Notification.SET, ModelPackageImpl.BASE_DATA_GRAPH_TYPE__XSD, newXsd, newXsd));
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public ChangeSummaryType getChangeSummary_()
+ {
+ return changeSummary;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public NotificationChain basicSetChangeSummary(ChangeSummaryType newChangeSummary, NotificationChain msgs)
+ {
+ ChangeSummaryType oldChangeSummary = changeSummary;
+ changeSummary = newChangeSummary;
+ if (eNotificationRequired())
+ {
+ ENotificationImpl notification = new ENotificationImpl(this, Notification.SET, ModelPackageImpl.BASE_DATA_GRAPH_TYPE__CHANGE_SUMMARY, oldChangeSummary, newChangeSummary);
+ if (msgs == null) msgs = notification; else msgs.add(notification);
+ }
+ return msgs;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public void setChangeSummary(ChangeSummaryType newChangeSummary)
+ {
+ if (newChangeSummary != changeSummary)
+ {
+ NotificationChain msgs = null;
+ if (changeSummary != null)
+ msgs = ((InternalEObject)changeSummary).eInverseRemove(this, EOPPOSITE_FEATURE_BASE - ModelPackageImpl.BASE_DATA_GRAPH_TYPE__CHANGE_SUMMARY, null, msgs);
+ if (newChangeSummary != null)
+ msgs = ((InternalEObject)newChangeSummary).eInverseAdd(this, EOPPOSITE_FEATURE_BASE - ModelPackageImpl.BASE_DATA_GRAPH_TYPE__CHANGE_SUMMARY, null, msgs);
+ msgs = basicSetChangeSummary(newChangeSummary, msgs);
+ if (msgs != null) msgs.dispatch();
+ }
+ else if (eNotificationRequired())
+ eNotify(new ENotificationImpl(this, Notification.SET, ModelPackageImpl.BASE_DATA_GRAPH_TYPE__CHANGE_SUMMARY, newChangeSummary, newChangeSummary));
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public Sequence getAnyAttribute()
+ {
+ if (anyAttribute == null)
+ {
+ anyAttribute = new BasicSequence(new BasicFeatureMap(this, ModelPackageImpl.BASE_DATA_GRAPH_TYPE__ANY_ATTRIBUTE));
+ }
+ return anyAttribute;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public NotificationChain eInverseRemove(InternalEObject otherEnd, int featureID, NotificationChain msgs)
+ {
+ switch (featureID)
+ {
+ case ModelPackageImpl.BASE_DATA_GRAPH_TYPE__MODELS:
+ return basicSetModels(null, msgs);
+ case ModelPackageImpl.BASE_DATA_GRAPH_TYPE__XSD:
+ return basicSetXsd(null, msgs);
+ case ModelPackageImpl.BASE_DATA_GRAPH_TYPE__CHANGE_SUMMARY:
+ return basicSetChangeSummary(null, msgs);
+ case ModelPackageImpl.BASE_DATA_GRAPH_TYPE__ANY_ATTRIBUTE:
+ return ((InternalEList)((FeatureMap.Internal.Wrapper)getAnyAttribute()).featureMap()).basicRemove(otherEnd, msgs);
+ }
+ return super.eInverseRemove(otherEnd, featureID, msgs);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public Object eGet(int featureID, boolean resolve, boolean coreType)
+ {
+ switch (featureID)
+ {
+ case ModelPackageImpl.BASE_DATA_GRAPH_TYPE__MODELS:
+ return getModels();
+ case ModelPackageImpl.BASE_DATA_GRAPH_TYPE__XSD:
+ return getXsd();
+ case ModelPackageImpl.BASE_DATA_GRAPH_TYPE__CHANGE_SUMMARY:
+ return getChangeSummary();
+ case ModelPackageImpl.BASE_DATA_GRAPH_TYPE__ANY_ATTRIBUTE:
+ if (coreType) return ((FeatureMap.Internal.Wrapper)getAnyAttribute()).featureMap();
+ return getAnyAttribute();
+ }
+ return super.eGet(featureID, resolve, coreType);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public void eSet(int featureID, Object newValue)
+ {
+ switch (featureID)
+ {
+ case ModelPackageImpl.BASE_DATA_GRAPH_TYPE__MODELS:
+ setModels((ModelsType)newValue);
+ return;
+ case ModelPackageImpl.BASE_DATA_GRAPH_TYPE__XSD:
+ setXsd((XSDType)newValue);
+ return;
+ case ModelPackageImpl.BASE_DATA_GRAPH_TYPE__CHANGE_SUMMARY:
+ setChangeSummary((ChangeSummaryType)newValue);
+ return;
+ case ModelPackageImpl.BASE_DATA_GRAPH_TYPE__ANY_ATTRIBUTE:
+ ((FeatureMap.Internal)((FeatureMap.Internal.Wrapper)getAnyAttribute()).featureMap()).set(newValue);
+ return;
+ }
+ super.eSet(featureID, newValue);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public void eUnset(int featureID)
+ {
+ switch (featureID)
+ {
+ case ModelPackageImpl.BASE_DATA_GRAPH_TYPE__MODELS:
+ setModels((ModelsType)null);
+ return;
+ case ModelPackageImpl.BASE_DATA_GRAPH_TYPE__XSD:
+ setXsd((XSDType)null);
+ return;
+ case ModelPackageImpl.BASE_DATA_GRAPH_TYPE__CHANGE_SUMMARY:
+ setChangeSummary((ChangeSummaryType)null);
+ return;
+ case ModelPackageImpl.BASE_DATA_GRAPH_TYPE__ANY_ATTRIBUTE:
+ ((FeatureMap.Internal.Wrapper)getAnyAttribute()).featureMap().clear();
+ return;
+ }
+ super.eUnset(featureID);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public boolean eIsSet(int featureID)
+ {
+ switch (featureID)
+ {
+ case ModelPackageImpl.BASE_DATA_GRAPH_TYPE__MODELS:
+ return models != null;
+ case ModelPackageImpl.BASE_DATA_GRAPH_TYPE__XSD:
+ return xsd != null;
+ case ModelPackageImpl.BASE_DATA_GRAPH_TYPE__CHANGE_SUMMARY:
+ return changeSummary != null;
+ case ModelPackageImpl.BASE_DATA_GRAPH_TYPE__ANY_ATTRIBUTE:
+ return anyAttribute != null && !anyAttribute.featureMap().isEmpty();
+ }
+ return super.eIsSet(featureID);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public String toString()
+ {
+ if (eIsProxy()) return super.toString();
+
+ StringBuffer result = new StringBuffer(super.toString());
+ result.append(" (anyAttribute: ");
+ result.append(anyAttribute);
+ result.append(')');
+ return result.toString();
+ }
+
+} //BaseDataGraphTypeImpl
diff --git a/branches/sdo-java-M2/sdo/impl/src/main/java/org/apache/tuscany/sdo/model/impl/ChangeSummaryTypeImpl.java b/branches/sdo-java-M2/sdo/impl/src/main/java/org/apache/tuscany/sdo/model/impl/ChangeSummaryTypeImpl.java
new file mode 100644
index 0000000000..047b35adb6
--- /dev/null
+++ b/branches/sdo-java-M2/sdo/impl/src/main/java/org/apache/tuscany/sdo/model/impl/ChangeSummaryTypeImpl.java
@@ -0,0 +1,399 @@
+/**
+ *
+ * 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.model.impl;
+
+import commonj.sdo.Sequence;
+
+
+import org.apache.tuscany.sdo.impl.DataObjectImpl;
+import org.apache.tuscany.sdo.model.ChangeSummaryType;
+
+import org.apache.tuscany.sdo.util.BasicSequence;
+
+import org.eclipse.emf.common.notify.Notification;
+import org.eclipse.emf.common.notify.NotificationChain;
+
+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.BasicFeatureMap;
+import org.eclipse.emf.ecore.util.FeatureMap;
+import org.eclipse.emf.ecore.util.InternalEList;
+
+/**
+ * <!-- begin-user-doc -->
+ * An implementation of the model object '<em><b>Change Summary Type</b></em>'.
+ * <!-- end-user-doc -->
+ * <p>
+ * The following features are implemented:
+ * <ul>
+ * <li>{@link org.apache.tuscany.sdo.model.impl.ChangeSummaryTypeImpl#getAny <em>Any</em>}</li>
+ * <li>{@link org.apache.tuscany.sdo.model.impl.ChangeSummaryTypeImpl#getCreate <em>Create</em>}</li>
+ * <li>{@link org.apache.tuscany.sdo.model.impl.ChangeSummaryTypeImpl#getDelete <em>Delete</em>}</li>
+ * <li>{@link org.apache.tuscany.sdo.model.impl.ChangeSummaryTypeImpl#isLogging <em>Logging</em>}</li>
+ * </ul>
+ * </p>
+ *
+ * @generated
+ */
+public class ChangeSummaryTypeImpl extends DataObjectImpl implements ChangeSummaryType
+{
+ /**
+ * The cached value of the '{@link #getAny() <em>Any</em>}' attribute list.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #getAny()
+ * @generated
+ * @ordered
+ */
+ protected BasicSequence any = null;
+
+ /**
+ * The default value of the '{@link #getCreate() <em>Create</em>}' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #getCreate()
+ * @generated
+ * @ordered
+ */
+ protected static final String CREATE_EDEFAULT = null;
+
+ /**
+ * The cached value of the '{@link #getCreate() <em>Create</em>}' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #getCreate()
+ * @generated
+ * @ordered
+ */
+ protected String create = CREATE_EDEFAULT;
+
+ /**
+ * The default value of the '{@link #getDelete() <em>Delete</em>}' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #getDelete()
+ * @generated
+ * @ordered
+ */
+ protected static final String DELETE_EDEFAULT = null;
+
+ /**
+ * The cached value of the '{@link #getDelete() <em>Delete</em>}' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #getDelete()
+ * @generated
+ * @ordered
+ */
+ protected String delete = DELETE_EDEFAULT;
+
+ /**
+ * The default value of the '{@link #isLogging() <em>Logging</em>}' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #isLogging()
+ * @generated
+ * @ordered
+ */
+ protected static final boolean LOGGING_EDEFAULT = false;
+
+ /**
+ * The cached value of the '{@link #isLogging() <em>Logging</em>}' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #isLogging()
+ * @generated
+ * @ordered
+ */
+ protected boolean logging = LOGGING_EDEFAULT;
+
+ /**
+ * This is true if the Logging attribute has been set.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ protected boolean loggingESet = false;
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ protected ChangeSummaryTypeImpl()
+ {
+ super();
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ protected EClass eStaticClass()
+ {
+ return ModelPackageImpl.Literals.CHANGE_SUMMARY_TYPE;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public Sequence getAny()
+ {
+ if (any == null)
+ {
+ any = new BasicSequence(new BasicFeatureMap(this, ModelPackageImpl.CHANGE_SUMMARY_TYPE__ANY));
+ }
+ return any;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public String getCreate()
+ {
+ return create;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public void setCreate(String newCreate)
+ {
+ String oldCreate = create;
+ create = newCreate;
+ if (eNotificationRequired())
+ eNotify(new ENotificationImpl(this, Notification.SET, ModelPackageImpl.CHANGE_SUMMARY_TYPE__CREATE, oldCreate, create));
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public String getDelete()
+ {
+ return delete;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public void setDelete(String newDelete)
+ {
+ String oldDelete = delete;
+ delete = newDelete;
+ if (eNotificationRequired())
+ eNotify(new ENotificationImpl(this, Notification.SET, ModelPackageImpl.CHANGE_SUMMARY_TYPE__DELETE, oldDelete, delete));
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public boolean isLogging()
+ {
+ return logging;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public void setLogging(boolean newLogging)
+ {
+ boolean oldLogging = logging;
+ logging = newLogging;
+ boolean oldLoggingESet = loggingESet;
+ loggingESet = true;
+ if (eNotificationRequired())
+ eNotify(new ENotificationImpl(this, Notification.SET, ModelPackageImpl.CHANGE_SUMMARY_TYPE__LOGGING, oldLogging, logging, !oldLoggingESet));
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public void unsetLogging()
+ {
+ boolean oldLogging = logging;
+ boolean oldLoggingESet = loggingESet;
+ logging = LOGGING_EDEFAULT;
+ loggingESet = false;
+ if (eNotificationRequired())
+ eNotify(new ENotificationImpl(this, Notification.UNSET, ModelPackageImpl.CHANGE_SUMMARY_TYPE__LOGGING, oldLogging, LOGGING_EDEFAULT, oldLoggingESet));
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public boolean isSetLogging()
+ {
+ return loggingESet;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public NotificationChain eInverseRemove(InternalEObject otherEnd, int featureID, NotificationChain msgs)
+ {
+ switch (featureID)
+ {
+ case ModelPackageImpl.CHANGE_SUMMARY_TYPE__ANY:
+ return ((InternalEList)((FeatureMap.Internal.Wrapper)getAny()).featureMap()).basicRemove(otherEnd, msgs);
+ }
+ return super.eInverseRemove(otherEnd, featureID, msgs);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public Object eGet(int featureID, boolean resolve, boolean coreType)
+ {
+ switch (featureID)
+ {
+ case ModelPackageImpl.CHANGE_SUMMARY_TYPE__ANY:
+ if (coreType) return ((FeatureMap.Internal.Wrapper)getAny()).featureMap();
+ return getAny();
+ case ModelPackageImpl.CHANGE_SUMMARY_TYPE__CREATE:
+ return getCreate();
+ case ModelPackageImpl.CHANGE_SUMMARY_TYPE__DELETE:
+ return getDelete();
+ case ModelPackageImpl.CHANGE_SUMMARY_TYPE__LOGGING:
+ return isLogging() ? Boolean.TRUE : Boolean.FALSE;
+ }
+ return super.eGet(featureID, resolve, coreType);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public void eSet(int featureID, Object newValue)
+ {
+ switch (featureID)
+ {
+ case ModelPackageImpl.CHANGE_SUMMARY_TYPE__ANY:
+ ((FeatureMap.Internal)((FeatureMap.Internal.Wrapper)getAny()).featureMap()).set(newValue);
+ return;
+ case ModelPackageImpl.CHANGE_SUMMARY_TYPE__CREATE:
+ setCreate((String)newValue);
+ return;
+ case ModelPackageImpl.CHANGE_SUMMARY_TYPE__DELETE:
+ setDelete((String)newValue);
+ return;
+ case ModelPackageImpl.CHANGE_SUMMARY_TYPE__LOGGING:
+ setLogging(((Boolean)newValue).booleanValue());
+ return;
+ }
+ super.eSet(featureID, newValue);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public void eUnset(int featureID)
+ {
+ switch (featureID)
+ {
+ case ModelPackageImpl.CHANGE_SUMMARY_TYPE__ANY:
+ ((FeatureMap.Internal.Wrapper)getAny()).featureMap().clear();
+ return;
+ case ModelPackageImpl.CHANGE_SUMMARY_TYPE__CREATE:
+ setCreate(CREATE_EDEFAULT);
+ return;
+ case ModelPackageImpl.CHANGE_SUMMARY_TYPE__DELETE:
+ setDelete(DELETE_EDEFAULT);
+ return;
+ case ModelPackageImpl.CHANGE_SUMMARY_TYPE__LOGGING:
+ unsetLogging();
+ return;
+ }
+ super.eUnset(featureID);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public boolean eIsSet(int featureID)
+ {
+ switch (featureID)
+ {
+ case ModelPackageImpl.CHANGE_SUMMARY_TYPE__ANY:
+ return any != null && !any.featureMap().isEmpty();
+ case ModelPackageImpl.CHANGE_SUMMARY_TYPE__CREATE:
+ return CREATE_EDEFAULT == null ? create != null : !CREATE_EDEFAULT.equals(create);
+ case ModelPackageImpl.CHANGE_SUMMARY_TYPE__DELETE:
+ return DELETE_EDEFAULT == null ? delete != null : !DELETE_EDEFAULT.equals(delete);
+ case ModelPackageImpl.CHANGE_SUMMARY_TYPE__LOGGING:
+ return isSetLogging();
+ }
+ return super.eIsSet(featureID);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public String toString()
+ {
+ if (eIsProxy()) return super.toString();
+
+ StringBuffer result = new StringBuffer(super.toString());
+ result.append(" (any: ");
+ result.append(any);
+ result.append(", create: ");
+ result.append(create);
+ result.append(", delete: ");
+ result.append(delete);
+ result.append(", logging: ");
+ if (loggingESet) result.append(logging); else result.append("<unset>");
+ result.append(')');
+ return result.toString();
+ }
+
+} //ChangeSummaryTypeImpl
diff --git a/branches/sdo-java-M2/sdo/impl/src/main/java/org/apache/tuscany/sdo/model/impl/DataGraphTypeImpl.java b/branches/sdo-java-M2/sdo/impl/src/main/java/org/apache/tuscany/sdo/model/impl/DataGraphTypeImpl.java
new file mode 100644
index 0000000000..0e166165a0
--- /dev/null
+++ b/branches/sdo-java-M2/sdo/impl/src/main/java/org/apache/tuscany/sdo/model/impl/DataGraphTypeImpl.java
@@ -0,0 +1,190 @@
+/**
+ *
+ * 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.model.impl;
+
+import commonj.sdo.Sequence;
+
+
+import org.apache.tuscany.sdo.model.DataGraphType;
+import org.apache.tuscany.sdo.util.BasicSequence;
+
+import org.eclipse.emf.common.notify.NotificationChain;
+
+import org.eclipse.emf.ecore.EClass;
+import org.eclipse.emf.ecore.InternalEObject;
+
+import org.eclipse.emf.ecore.util.BasicFeatureMap;
+import org.eclipse.emf.ecore.util.FeatureMap;
+import org.eclipse.emf.ecore.util.InternalEList;
+
+/**
+ * <!-- begin-user-doc -->
+ * An implementation of the model object '<em><b>Data Graph Type</b></em>'.
+ * <!-- end-user-doc -->
+ * <p>
+ * The following features are implemented:
+ * <ul>
+ * <li>{@link org.apache.tuscany.sdo.model.impl.DataGraphTypeImpl#getAny <em>Any</em>}</li>
+ * </ul>
+ * </p>
+ *
+ * @generated
+ */
+public class DataGraphTypeImpl extends BaseDataGraphTypeImpl implements DataGraphType
+{
+ /**
+ * The cached value of the '{@link #getAny() <em>Any</em>}' attribute list.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #getAny()
+ * @generated
+ * @ordered
+ */
+ protected BasicSequence any = null;
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ protected DataGraphTypeImpl()
+ {
+ super();
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ protected EClass eStaticClass()
+ {
+ return ModelPackageImpl.Literals.DATA_GRAPH_TYPE;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public Sequence getAny()
+ {
+ if (any == null)
+ {
+ any = new BasicSequence(new BasicFeatureMap(this, ModelPackageImpl.DATA_GRAPH_TYPE__ANY));
+ }
+ return any;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public NotificationChain eInverseRemove(InternalEObject otherEnd, int featureID, NotificationChain msgs)
+ {
+ switch (featureID)
+ {
+ case ModelPackageImpl.DATA_GRAPH_TYPE__ANY:
+ return ((InternalEList)((FeatureMap.Internal.Wrapper)getAny()).featureMap()).basicRemove(otherEnd, msgs);
+ }
+ return super.eInverseRemove(otherEnd, featureID, msgs);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public Object eGet(int featureID, boolean resolve, boolean coreType)
+ {
+ switch (featureID)
+ {
+ case ModelPackageImpl.DATA_GRAPH_TYPE__ANY:
+ if (coreType) return ((FeatureMap.Internal.Wrapper)getAny()).featureMap();
+ return getAny();
+ }
+ return super.eGet(featureID, resolve, coreType);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public void eSet(int featureID, Object newValue)
+ {
+ switch (featureID)
+ {
+ case ModelPackageImpl.DATA_GRAPH_TYPE__ANY:
+ ((FeatureMap.Internal)((FeatureMap.Internal.Wrapper)getAny()).featureMap()).set(newValue);
+ return;
+ }
+ super.eSet(featureID, newValue);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public void eUnset(int featureID)
+ {
+ switch (featureID)
+ {
+ case ModelPackageImpl.DATA_GRAPH_TYPE__ANY:
+ ((FeatureMap.Internal.Wrapper)getAny()).featureMap().clear();
+ return;
+ }
+ super.eUnset(featureID);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public boolean eIsSet(int featureID)
+ {
+ switch (featureID)
+ {
+ case ModelPackageImpl.DATA_GRAPH_TYPE__ANY:
+ return any != null && !any.featureMap().isEmpty();
+ }
+ return super.eIsSet(featureID);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public String toString()
+ {
+ if (eIsProxy()) return super.toString();
+
+ StringBuffer result = new StringBuffer(super.toString());
+ result.append(" (any: ");
+ result.append(any);
+ result.append(')');
+ return result.toString();
+ }
+
+} //DataGraphTypeImpl
diff --git a/branches/sdo-java-M2/sdo/impl/src/main/java/org/apache/tuscany/sdo/model/impl/DataObjectImpl.java b/branches/sdo-java-M2/sdo/impl/src/main/java/org/apache/tuscany/sdo/model/impl/DataObjectImpl.java
new file mode 100644
index 0000000000..d40c7cced4
--- /dev/null
+++ b/branches/sdo-java-M2/sdo/impl/src/main/java/org/apache/tuscany/sdo/model/impl/DataObjectImpl.java
@@ -0,0 +1,57 @@
+/**
+ *
+ * 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.model.impl;
+
+import org.apache.tuscany.sdo.model.DataObject;
+
+import org.eclipse.emf.ecore.EClass;
+
+/**
+ * <!-- begin-user-doc -->
+ * An implementation of the model object '<em><b>Data Object</b></em>'.
+ * <!-- end-user-doc -->
+ * <p>
+ * </p>
+ *
+ * @generated
+ */
+public abstract class DataObjectImpl extends org.apache.tuscany.sdo.impl.DataObjectImpl implements DataObject
+{
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ protected DataObjectImpl()
+ {
+ super();
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ protected EClass eStaticClass()
+ {
+ return ModelPackageImpl.Literals.DATA_OBJECT;
+ }
+
+} //DataObjectImpl
diff --git a/branches/sdo-java-M2/sdo/impl/src/main/java/org/apache/tuscany/sdo/model/impl/ModelFactoryImpl.java b/branches/sdo-java-M2/sdo/impl/src/main/java/org/apache/tuscany/sdo/model/impl/ModelFactoryImpl.java
new file mode 100644
index 0000000000..7bf9052a89
--- /dev/null
+++ b/branches/sdo-java-M2/sdo/impl/src/main/java/org/apache/tuscany/sdo/model/impl/ModelFactoryImpl.java
@@ -0,0 +1,1108 @@
+/**
+ *
+ * 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.model.impl;
+
+import java.math.BigDecimal;
+import java.math.BigInteger;
+import java.text.SimpleDateFormat;
+import java.util.Date;
+import java.util.List;
+import java.util.TimeZone;
+
+import org.apache.tuscany.sdo.SDOFactory;
+import org.apache.tuscany.sdo.model.ChangeSummaryType;
+import org.apache.tuscany.sdo.model.DataGraphType;
+import org.apache.tuscany.sdo.model.ModelFactory;
+import org.apache.tuscany.sdo.model.ModelsType;
+import org.apache.tuscany.sdo.model.Property;
+import org.apache.tuscany.sdo.model.Type;
+import org.apache.tuscany.sdo.model.Types;
+import org.apache.tuscany.sdo.model.XSDType;
+import org.eclipse.emf.ecore.EClass;
+import org.eclipse.emf.ecore.EDataType;
+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;
+import org.eclipse.emf.ecore.xml.type.XMLTypeFactory;
+
+import commonj.sdo.helper.DataHelper;
+
+/**
+ * <!-- begin-user-doc -->
+ * An implementation of the model <b>Factory</b>.
+ * <!-- end-user-doc -->
+ * @generated
+ */
+public class ModelFactoryImpl extends EFactoryImpl implements ModelFactory
+{
+ /**
+ * The singleton instance of the factory.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public static final ModelFactoryImpl eINSTANCE = init();
+
+ /**
+ * Creates the default factory implementation.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public static ModelFactoryImpl init()
+ {
+ try
+ {
+ ModelFactoryImpl theModelFactory = (ModelFactoryImpl)EPackage.Registry.INSTANCE.getEFactory("commonj.sdo");
+ if (theModelFactory != null)
+ {
+ return theModelFactory;
+ }
+ }
+ catch (Exception exception)
+ {
+ EcorePlugin.INSTANCE.log(exception);
+ }
+ return new ModelFactoryImpl();
+ }
+
+ /**
+ * Creates an instance of the factory.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public ModelFactoryImpl()
+ {
+ super();
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EObject createGen(EClass eClass)
+ {
+ switch (eClass.getClassifierID())
+ {
+ case ModelPackageImpl.CHANGE_SUMMARY_TYPE: return (EObject)createChangeSummaryType();
+ case ModelPackageImpl.DATA_GRAPH_TYPE: return (EObject)createDataGraphType();
+ case ModelPackageImpl.DOCUMENT_ROOT: return (EObject)createDocumentRoot();
+ case ModelPackageImpl.MODELS_TYPE: return (EObject)createModelsType();
+ case ModelPackageImpl.PROPERTY: return (EObject)createProperty();
+ case ModelPackageImpl.TYPE: return (EObject)createType();
+ case ModelPackageImpl.TYPES: return (EObject)createTypes();
+ case ModelPackageImpl.XSD_TYPE: return (EObject)createXSDType();
+ default:
+ throw new IllegalArgumentException("The class '" + eClass.getName() + "' is not a valid classifier");
+ }
+ }
+
+ public EObject create(EClass eClass)
+ {
+ if (eClass.getClassifierID() == ModelPackageImpl.DATA_OBJECT) return SDOFactory.eINSTANCE.createAnyTypeDataObject();
+ return createGen(eClass);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public Object createFromString(EDataType eDataType, String initialValue)
+ {
+ switch (eDataType.getClassifierID())
+ {
+ case ModelPackageImpl.BOOLEAN:
+ return createBooleanFromString(eDataType, initialValue);
+ case ModelPackageImpl.BOOLEAN_OBJECT:
+ return createBooleanObjectFromString(eDataType, initialValue);
+ case ModelPackageImpl.BYTE:
+ return createByteFromString(eDataType, initialValue);
+ case ModelPackageImpl.BYTE_OBJECT:
+ return createByteObjectFromString(eDataType, initialValue);
+ case ModelPackageImpl.BYTES:
+ return createBytesFromString(eDataType, initialValue);
+ case ModelPackageImpl.CHARACTER:
+ return createCharacterFromString(eDataType, initialValue);
+ case ModelPackageImpl.CHARACTER_OBJECT:
+ return createCharacterObjectFromString(eDataType, initialValue);
+ case ModelPackageImpl.DATE:
+ return createDateFromString(eDataType, initialValue);
+ case ModelPackageImpl.DATE_TIME:
+ return createDateTimeFromString(eDataType, initialValue);
+ case ModelPackageImpl.DAY:
+ return createDayFromString(eDataType, initialValue);
+ case ModelPackageImpl.DECIMAL:
+ return createDecimalFromString(eDataType, initialValue);
+ case ModelPackageImpl.DOUBLE:
+ return createDoubleFromString(eDataType, initialValue);
+ case ModelPackageImpl.DOUBLE_OBJECT:
+ return createDoubleObjectFromString(eDataType, initialValue);
+ case ModelPackageImpl.DURATION:
+ return createDurationFromString(eDataType, initialValue);
+ case ModelPackageImpl.FLOAT:
+ return createFloatFromString(eDataType, initialValue);
+ case ModelPackageImpl.FLOAT_OBJECT:
+ return createFloatObjectFromString(eDataType, initialValue);
+ case ModelPackageImpl.INT:
+ return createIntFromString(eDataType, initialValue);
+ case ModelPackageImpl.INTEGER:
+ return createIntegerFromString(eDataType, initialValue);
+ case ModelPackageImpl.INT_OBJECT:
+ return createIntObjectFromString(eDataType, initialValue);
+ case ModelPackageImpl.LONG:
+ return createLongFromString(eDataType, initialValue);
+ case ModelPackageImpl.LONG_OBJECT:
+ return createLongObjectFromString(eDataType, initialValue);
+ case ModelPackageImpl.MONTH:
+ return createMonthFromString(eDataType, initialValue);
+ case ModelPackageImpl.MONTH_DAY:
+ return createMonthDayFromString(eDataType, initialValue);
+ case ModelPackageImpl.OBJECT:
+ return createObjectFromString(eDataType, initialValue);
+ case ModelPackageImpl.SHORT:
+ return createShortFromString(eDataType, initialValue);
+ case ModelPackageImpl.SHORT_OBJECT:
+ return createShortObjectFromString(eDataType, initialValue);
+ case ModelPackageImpl.STRING:
+ return createStringFromString(eDataType, initialValue);
+ case ModelPackageImpl.STRINGS:
+ return createStringsFromString(eDataType, initialValue);
+ case ModelPackageImpl.TIME:
+ return createTimeFromString(eDataType, initialValue);
+ case ModelPackageImpl.URI:
+ return createURIFromString(eDataType, initialValue);
+ case ModelPackageImpl.YEAR:
+ return createYearFromString(eDataType, initialValue);
+ case ModelPackageImpl.YEAR_MONTH:
+ return createYearMonthFromString(eDataType, initialValue);
+ case ModelPackageImpl.YEAR_MONTH_DAY:
+ return createYearMonthDayFromString(eDataType, initialValue);
+ default:
+ throw new IllegalArgumentException("The datatype '" + eDataType.getName() + "' is not a valid classifier");
+ }
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public String convertToString(EDataType eDataType, Object instanceValue)
+ {
+ switch (eDataType.getClassifierID())
+ {
+ case ModelPackageImpl.BOOLEAN:
+ return convertBooleanToString(eDataType, instanceValue);
+ case ModelPackageImpl.BOOLEAN_OBJECT:
+ return convertBooleanObjectToString(eDataType, instanceValue);
+ case ModelPackageImpl.BYTE:
+ return convertByteToString(eDataType, instanceValue);
+ case ModelPackageImpl.BYTE_OBJECT:
+ return convertByteObjectToString(eDataType, instanceValue);
+ case ModelPackageImpl.BYTES:
+ return convertBytesToString(eDataType, instanceValue);
+ case ModelPackageImpl.CHARACTER:
+ return convertCharacterToString(eDataType, instanceValue);
+ case ModelPackageImpl.CHARACTER_OBJECT:
+ return convertCharacterObjectToString(eDataType, instanceValue);
+ case ModelPackageImpl.DATE:
+ return convertDateToString(eDataType, instanceValue);
+ case ModelPackageImpl.DATE_TIME:
+ return convertDateTimeToString(eDataType, instanceValue);
+ case ModelPackageImpl.DAY:
+ return convertDayToString(eDataType, instanceValue);
+ case ModelPackageImpl.DECIMAL:
+ return convertDecimalToString(eDataType, instanceValue);
+ case ModelPackageImpl.DOUBLE:
+ return convertDoubleToString(eDataType, instanceValue);
+ case ModelPackageImpl.DOUBLE_OBJECT:
+ return convertDoubleObjectToString(eDataType, instanceValue);
+ case ModelPackageImpl.DURATION:
+ return convertDurationToString(eDataType, instanceValue);
+ case ModelPackageImpl.FLOAT:
+ return convertFloatToString(eDataType, instanceValue);
+ case ModelPackageImpl.FLOAT_OBJECT:
+ return convertFloatObjectToString(eDataType, instanceValue);
+ case ModelPackageImpl.INT:
+ return convertIntToString(eDataType, instanceValue);
+ case ModelPackageImpl.INTEGER:
+ return convertIntegerToString(eDataType, instanceValue);
+ case ModelPackageImpl.INT_OBJECT:
+ return convertIntObjectToString(eDataType, instanceValue);
+ case ModelPackageImpl.LONG:
+ return convertLongToString(eDataType, instanceValue);
+ case ModelPackageImpl.LONG_OBJECT:
+ return convertLongObjectToString(eDataType, instanceValue);
+ case ModelPackageImpl.MONTH:
+ return convertMonthToString(eDataType, instanceValue);
+ case ModelPackageImpl.MONTH_DAY:
+ return convertMonthDayToString(eDataType, instanceValue);
+ case ModelPackageImpl.OBJECT:
+ return convertObjectToString(eDataType, instanceValue);
+ case ModelPackageImpl.SHORT:
+ return convertShortToString(eDataType, instanceValue);
+ case ModelPackageImpl.SHORT_OBJECT:
+ return convertShortObjectToString(eDataType, instanceValue);
+ case ModelPackageImpl.STRING:
+ return convertStringToString(eDataType, instanceValue);
+ case ModelPackageImpl.STRINGS:
+ return convertStringsToString(eDataType, instanceValue);
+ case ModelPackageImpl.TIME:
+ return convertTimeToString(eDataType, instanceValue);
+ case ModelPackageImpl.URI:
+ return convertURIToString(eDataType, instanceValue);
+ case ModelPackageImpl.YEAR:
+ return convertYearToString(eDataType, instanceValue);
+ case ModelPackageImpl.YEAR_MONTH:
+ return convertYearMonthToString(eDataType, instanceValue);
+ case ModelPackageImpl.YEAR_MONTH_DAY:
+ return convertYearMonthDayToString(eDataType, instanceValue);
+ default:
+ throw new IllegalArgumentException("The datatype '" + eDataType.getName() + "' is not a valid classifier");
+ }
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public ChangeSummaryType createChangeSummaryType()
+ {
+ ChangeSummaryTypeImpl changeSummaryType = new ChangeSummaryTypeImpl();
+ return changeSummaryType;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public DataGraphType createDataGraphType()
+ {
+ DataGraphTypeImpl dataGraphType = new DataGraphTypeImpl();
+ return dataGraphType;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EObject createDocumentRoot()
+ {
+ EObject documentRoot = super.create(ModelPackageImpl.Literals.DOCUMENT_ROOT);
+ return documentRoot;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public ModelsType createModelsType()
+ {
+ ModelsTypeImpl modelsType = new ModelsTypeImpl();
+ return modelsType;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public Property createProperty()
+ {
+ PropertyImpl property = new PropertyImpl();
+ return property;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public Type createType()
+ {
+ TypeImpl type = new TypeImpl();
+ return type;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public Types createTypes()
+ {
+ TypesImpl types = new TypesImpl();
+ return types;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public XSDType createXSDType()
+ {
+ XSDTypeImpl xsdType = new XSDTypeImpl();
+ return xsdType;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated NOT
+ */
+ public Boolean createBooleanFromString(EDataType eDataType, String initialValue)
+ {
+ return XMLTypeFactory.eINSTANCE.createBooleanObject(initialValue);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated NOT
+ */
+ public String convertBooleanToString(EDataType eDataType, Object instanceValue)
+ {
+ return XMLTypeFactory.eINSTANCE.convertBooleanObject((Boolean)instanceValue);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated NOT
+ */
+ public Boolean createBooleanObjectFromString(EDataType eDataType, String initialValue)
+ {
+ return (Boolean)createBooleanFromString(ModelPackageImpl.Literals.BOOLEAN, initialValue);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated NOT
+ */
+ public String convertBooleanObjectToString(EDataType eDataType, Object instanceValue)
+ {
+ return convertBooleanToString(ModelPackageImpl.Literals.BOOLEAN, instanceValue);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated NOT
+ */
+ public Byte createByteFromString(EDataType eDataType, String initialValue)
+ {
+ return XMLTypeFactory.eINSTANCE.createByteObject(initialValue);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated NOT
+ */
+ public String convertByteToString(EDataType eDataType, Object instanceValue)
+ {
+ return XMLTypeFactory.eINSTANCE.convertByteObject((Byte)instanceValue);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated NOT
+ */
+ public Byte createByteObjectFromString(EDataType eDataType, String initialValue)
+ {
+ return (Byte)createByteFromString(ModelPackageImpl.Literals.BYTE, initialValue);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated NOT
+ */
+ public String convertByteObjectToString(EDataType eDataType, Object instanceValue)
+ {
+ return convertByteToString(ModelPackageImpl.Literals.BYTE, instanceValue);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated NOT
+ */
+ public byte[] createBytesFromString(EDataType eDataType, String initialValue)
+ {
+ return XMLTypeFactory.eINSTANCE.createHexBinary(initialValue);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated NOT
+ */
+ public String convertBytesToString(EDataType eDataType, Object instanceValue)
+ {
+ if (instanceValue instanceof byte[]) {
+ return XMLTypeFactory.eINSTANCE.convertHexBinary((byte[])instanceValue);
+ } else {
+ return XMLTypeFactory.eINSTANCE.convertHexBinary(instanceValue.toString().getBytes());
+ }
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated NOT
+ */
+ public Character createCharacterFromString(EDataType eDataType, String initialValue)
+ {
+ return (initialValue == null && initialValue.length() > 0)
+ ? null : (new Character(collapseWhiteSpace(initialValue).charAt(0)));
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated NOT
+ */
+ public String convertCharacterToString(EDataType eDataType, Object instanceValue)
+ {
+ return String.valueOf(((Character)instanceValue).charValue());
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated NOT
+ */
+ public Character createCharacterObjectFromString(EDataType eDataType, String initialValue)
+ {
+ return (Character)createCharacterFromString(ModelPackageImpl.Literals.CHARACTER, initialValue);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated NOT
+ */
+ public String convertCharacterObjectToString(EDataType eDataType, Object instanceValue)
+ {
+ return convertCharacterToString(ModelPackageImpl.Literals.CHARACTER, instanceValue);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated NOT
+ */
+ public Date createDateFromString(EDataType eDataType, String initialValue)
+ {
+ // XMLCalendar cal = (XMLCalendar) XMLTypeFactory.eINSTANCE.createDate(initialValue);
+ // return (cal != null) ? cal.getDate() : null;
+ return DataHelper.INSTANCE.toDate(initialValue);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated NOT
+ */
+ public String convertDateToString(EDataType eDataType, Object instanceValue)
+ {
+ if (instanceValue == null)
+ {
+ return null;
+ }
+
+ SimpleDateFormat f = new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ss'.'SSS'Z'");
+ f.setTimeZone(TimeZone.getTimeZone("GMT"));
+
+ return f.format((Date)instanceValue);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated NOT
+ */
+ public String createDateTimeFromString(EDataType eDataType, String initialValue)
+ {
+ return initialValue;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated NOT
+ */
+ public String convertDateTimeToString(EDataType eDataType, Object instanceValue)
+ {
+ return (String)instanceValue;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated NOT
+ */
+ public String createDayFromString(EDataType eDataType, String initialValue)
+ {
+ return initialValue;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated NOT
+ */
+ public String convertDayToString(EDataType eDataType, Object instanceValue)
+ {
+ return (String)instanceValue;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated NOT
+ */
+ public BigDecimal createDecimalFromString(EDataType eDataType, String initialValue)
+ {
+ return XMLTypeFactory.eINSTANCE.createDecimal(initialValue);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated NOT
+ */
+ public String convertDecimalToString(EDataType eDataType, Object instanceValue)
+ {
+ return XMLTypeFactory.eINSTANCE.convertDecimal((BigDecimal)instanceValue);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated NOT
+ */
+ public Double createDoubleFromString(EDataType eDataType, String initialValue)
+ {
+ return XMLTypeFactory.eINSTANCE.createDoubleObject(initialValue);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated NOT
+ */
+ public String convertDoubleToString(EDataType eDataType, Object instanceValue)
+ {
+ return XMLTypeFactory.eINSTANCE.convertDoubleObject((Double)instanceValue);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated NOT
+ */
+ public Double createDoubleObjectFromString(EDataType eDataType, String initialValue)
+ {
+ return (Double)createDoubleFromString(ModelPackageImpl.Literals.DOUBLE, initialValue);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated NOT
+ */
+ public String convertDoubleObjectToString(EDataType eDataType, Object instanceValue)
+ {
+ return convertDoubleToString(ModelPackageImpl.Literals.DOUBLE, instanceValue);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated NOT
+ */
+ public String createDurationFromString(EDataType eDataType, String initialValue)
+ {
+ return initialValue;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated NOT
+ */
+ public String convertDurationToString(EDataType eDataType, Object instanceValue)
+ {
+ return (String)instanceValue;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated NOT
+ */
+ public Float createFloatFromString(EDataType eDataType, String initialValue)
+ {
+ return XMLTypeFactory.eINSTANCE.createFloatObject(initialValue);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated NOT
+ */
+ public String convertFloatToString(EDataType eDataType, Object instanceValue)
+ {
+ return XMLTypeFactory.eINSTANCE.convertFloatObject((Float)instanceValue);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated NOT
+ */
+ public Float createFloatObjectFromString(EDataType eDataType, String initialValue)
+ {
+ return (Float)createFloatFromString(ModelPackageImpl.Literals.FLOAT, initialValue);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated NOT
+ */
+ public String convertFloatObjectToString(EDataType eDataType, Object instanceValue)
+ {
+ return convertFloatToString(ModelPackageImpl.Literals.FLOAT, instanceValue);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated NOT
+ */
+ public Integer createIntFromString(EDataType eDataType, String initialValue)
+ {
+ return XMLTypeFactory.eINSTANCE.createIntObject(initialValue);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated NOT
+ */
+ public String convertIntToString(EDataType eDataType, Object instanceValue)
+ {
+ return XMLTypeFactory.eINSTANCE.convertIntObject((Integer)instanceValue);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated NOT
+ */
+ public BigInteger createIntegerFromString(EDataType eDataType, String initialValue)
+ {
+ return XMLTypeFactory.eINSTANCE.createInteger(initialValue);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated NOT
+ */
+ public String convertIntegerToString(EDataType eDataType, Object instanceValue)
+ {
+ return XMLTypeFactory.eINSTANCE.convertInteger((BigInteger)instanceValue);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated NOT
+ */
+ public Integer createIntObjectFromString(EDataType eDataType, String initialValue)
+ {
+ return (Integer)createIntFromString(ModelPackageImpl.Literals.INT, initialValue);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated NOT
+ */
+ public String convertIntObjectToString(EDataType eDataType, Object instanceValue)
+ {
+ return convertIntToString(ModelPackageImpl.Literals.INT, instanceValue);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated NOT
+ */
+ public Long createLongFromString(EDataType eDataType, String initialValue)
+ {
+ return XMLTypeFactory.eINSTANCE.createLongObject(initialValue);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated NOT
+ */
+ public String convertLongToString(EDataType eDataType, Object instanceValue)
+ {
+ return XMLTypeFactory.eINSTANCE.convertLongObject((Long)instanceValue);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated NOT
+ */
+ public Long createLongObjectFromString(EDataType eDataType, String initialValue)
+ {
+ return (Long)createLongFromString(ModelPackageImpl.Literals.LONG, initialValue);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated NOT
+ */
+ public String convertLongObjectToString(EDataType eDataType, Object instanceValue)
+ {
+ return convertLongToString(ModelPackageImpl.Literals.LONG, instanceValue);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated NOT
+ */
+ public String createMonthFromString(EDataType eDataType, String initialValue)
+ {
+ return initialValue;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated NOT
+ */
+ public String convertMonthToString(EDataType eDataType, Object instanceValue)
+ {
+ return (String)instanceValue;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated NOT
+ */
+ public String createMonthDayFromString(EDataType eDataType, String initialValue)
+ {
+ return initialValue;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated NOT
+ */
+ public String convertMonthDayToString(EDataType eDataType, Object instanceValue)
+ {
+ return (String)instanceValue;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated NOT
+ */
+ public Object createObjectFromString(EDataType eDataType, String initialValue)
+ {
+ return initialValue;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated NOT
+ */
+ public String convertObjectToString(EDataType eDataType, Object instanceValue)
+ {
+ return (instanceValue != null) ? instanceValue.toString() : null;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated NOT
+ */
+ public Short createShortFromString(EDataType eDataType, String initialValue)
+ {
+ return XMLTypeFactory.eINSTANCE.createShortObject(initialValue);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated NOT
+ */
+ public String convertShortToString(EDataType eDataType, Object instanceValue)
+ {
+ return XMLTypeFactory.eINSTANCE.convertShortObject((Short)instanceValue);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated NOT
+ */
+ public Short createShortObjectFromString(EDataType eDataType, String initialValue)
+ {
+ return (Short)createShortFromString(ModelPackageImpl.Literals.SHORT, initialValue);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated NOT
+ */
+ public String convertShortObjectToString(EDataType eDataType, Object instanceValue)
+ {
+ return convertShortToString(ModelPackageImpl.Literals.SHORT, instanceValue);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated NOT
+ */
+ public String createStringFromString(EDataType eDataType, String initialValue)
+ {
+ return initialValue;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated NOT
+ */
+ public String convertStringToString(EDataType eDataType, Object instanceValue)
+ {
+ return (instanceValue != null) ? instanceValue.toString() : null;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated NOT
+ */
+ public List createStringsFromString(EDataType eDataType, String initialValue)
+ {
+ return XMLTypeFactory.eINSTANCE.createENTITIES(initialValue);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated NOT
+ */
+ public String convertStringsToString(EDataType eDataType, Object instanceValue)
+ {
+ return XMLTypeFactory.eINSTANCE.convertENTITIES((List)instanceValue);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated NOT
+ */
+ public String createTimeFromString(EDataType eDataType, String initialValue)
+ {
+ return initialValue;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated NOT
+ */
+ public String convertTimeToString(EDataType eDataType, Object instanceValue)
+ {
+ return (String)instanceValue;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated NOT
+ */
+ public String createURIFromString(EDataType eDataType, String initialValue)
+ {
+ return initialValue;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated NOT
+ */
+ public String convertURIToString(EDataType eDataType, Object instanceValue)
+ {
+ return (instanceValue != null) ? instanceValue.toString() : null;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated NOT
+ */
+ public String createYearFromString(EDataType eDataType, String initialValue)
+ {
+ return initialValue;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated NOT
+ */
+ public String convertYearToString(EDataType eDataType, Object instanceValue)
+ {
+ return (String)instanceValue;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated NOT
+ */
+ public String createYearMonthFromString(EDataType eDataType, String initialValue)
+ {
+ return initialValue;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated NOT
+ */
+ public String convertYearMonthToString(EDataType eDataType, Object instanceValue)
+ {
+ return (String)instanceValue;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated NOT
+ */
+ public String createYearMonthDayFromString(EDataType eDataType, String initialValue)
+ {
+ return initialValue;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated NOT
+ */
+ public String convertYearMonthDayToString(EDataType eDataType, Object instanceValue)
+ {
+ return (String)instanceValue;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public ModelPackageImpl getModelPackageImpl()
+ {
+ return (ModelPackageImpl)getEPackage();
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @deprecated
+ * @generated
+ */
+ public static ModelPackageImpl getPackage()
+ {
+ return ModelPackageImpl.eINSTANCE;
+ }
+
+ // Following methods are temporary ... for interop with new factory codegen pattern
+ //
+ public static final String NAMESPACE_URI = ModelPackageImpl.eNS_URI;
+ public commonj.sdo.Type getBoolean() { return (commonj.sdo.Type)getModelPackageImpl().getBoolean(); }
+ public commonj.sdo.Type getBooleanObject() { return (commonj.sdo.Type)getModelPackageImpl().getBooleanObject(); }
+ public commonj.sdo.Type getByte() { return (commonj.sdo.Type)getModelPackageImpl().getByte(); }
+ public commonj.sdo.Type getByteObject() { return (commonj.sdo.Type)getModelPackageImpl().getByteObject(); }
+ public commonj.sdo.Type getBytes() { return (commonj.sdo.Type)getModelPackageImpl().getBytes(); }
+ public commonj.sdo.Type getCharacter() { return (commonj.sdo.Type)getModelPackageImpl().getCharacter(); }
+ public commonj.sdo.Type getCharacterObject() { return (commonj.sdo.Type)getModelPackageImpl().getCharacterObject(); }
+ public commonj.sdo.Type getDate() { return (commonj.sdo.Type)getModelPackageImpl().getDate(); }
+ public commonj.sdo.Type getDateTime() { return (commonj.sdo.Type)getModelPackageImpl().getDateTime(); }
+ public commonj.sdo.Type getDay() { return (commonj.sdo.Type)getModelPackageImpl().getDay(); }
+ public commonj.sdo.Type getDecimal() { return (commonj.sdo.Type)getModelPackageImpl().getDecimal(); }
+ public commonj.sdo.Type getDouble() { return (commonj.sdo.Type)getModelPackageImpl().getDouble(); }
+ public commonj.sdo.Type getDoubleObject() { return (commonj.sdo.Type)getModelPackageImpl().getDoubleObject(); }
+ public commonj.sdo.Type getDuration() { return (commonj.sdo.Type)getModelPackageImpl().getDuration(); }
+ public commonj.sdo.Type getFloat() { return (commonj.sdo.Type)getModelPackageImpl().getFloat(); }
+ public commonj.sdo.Type getFloatObject() { return (commonj.sdo.Type)getModelPackageImpl().getFloatObject(); }
+ public commonj.sdo.Type getInt() { return (commonj.sdo.Type)getModelPackageImpl().getInt(); }
+ public commonj.sdo.Type getInteger() { return (commonj.sdo.Type)getModelPackageImpl().getInteger(); }
+ public commonj.sdo.Type getIntObject() { return (commonj.sdo.Type)getModelPackageImpl().getIntObject(); }
+ public commonj.sdo.Type getLong() { return (commonj.sdo.Type)getModelPackageImpl().getLong(); }
+ public commonj.sdo.Type getLongObject() { return (commonj.sdo.Type)getModelPackageImpl().getLongObject(); }
+ public commonj.sdo.Type getMonth() { return (commonj.sdo.Type)getModelPackageImpl().getMonth(); }
+ public commonj.sdo.Type getMonthDay() { return (commonj.sdo.Type)getModelPackageImpl().getMonthDay(); }
+ public commonj.sdo.Type getObject() { return (commonj.sdo.Type)getModelPackageImpl().getObject(); }
+ public commonj.sdo.Type getShort() { return (commonj.sdo.Type)getModelPackageImpl().getShort(); }
+ public commonj.sdo.Type getShortObject() { return (commonj.sdo.Type)getModelPackageImpl().getShortObject(); }
+ public commonj.sdo.Type getString() { return (commonj.sdo.Type)getModelPackageImpl().getString(); }
+ public commonj.sdo.Type getStrings() { return (commonj.sdo.Type)getModelPackageImpl().getStrings(); }
+ public commonj.sdo.Type getTime() { return (commonj.sdo.Type)getModelPackageImpl().getTime(); }
+ public commonj.sdo.Type getURI() { return (commonj.sdo.Type)getModelPackageImpl().getURI(); }
+ public commonj.sdo.Type getYear() { return (commonj.sdo.Type)getModelPackageImpl().getYear(); }
+ public commonj.sdo.Type getYearMonth() { return (commonj.sdo.Type)getModelPackageImpl().getYearMonth(); }
+ public commonj.sdo.Type getYearMonthDay() { return (commonj.sdo.Type)getModelPackageImpl().getYearMonthDay(); }
+ public commonj.sdo.Type getDataObject() { return (commonj.sdo.Type)getModelPackageImpl().getDataObject(); }
+
+} //ModelFactoryImpl
diff --git a/branches/sdo-java-M2/sdo/impl/src/main/java/org/apache/tuscany/sdo/model/impl/ModelPackageImpl.java b/branches/sdo-java-M2/sdo/impl/src/main/java/org/apache/tuscany/sdo/model/impl/ModelPackageImpl.java
new file mode 100644
index 0000000000..4f3efa332d
--- /dev/null
+++ b/branches/sdo-java-M2/sdo/impl/src/main/java/org/apache/tuscany/sdo/model/impl/ModelPackageImpl.java
@@ -0,0 +1,4334 @@
+/**
+ *
+ * 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.model.impl;
+
+import java.math.BigDecimal;
+import java.math.BigInteger;
+
+import java.util.Date;
+import java.util.List;
+
+import org.apache.tuscany.sdo.SDOPackage;
+import org.apache.tuscany.sdo.model.BaseDataGraphType;
+import org.apache.tuscany.sdo.model.ChangeSummaryType;
+import org.apache.tuscany.sdo.model.DataGraphType;
+import org.apache.tuscany.sdo.model.DataObject;
+import org.apache.tuscany.sdo.model.ModelFactory;
+import org.apache.tuscany.sdo.model.ModelPackage;
+import org.apache.tuscany.sdo.model.ModelsType;
+import org.apache.tuscany.sdo.model.Property;
+import org.apache.tuscany.sdo.model.TextType;
+import org.apache.tuscany.sdo.model.Type;
+import org.apache.tuscany.sdo.model.Types;
+import org.apache.tuscany.sdo.model.XSDType;
+
+import org.eclipse.emf.ecore.EAttribute;
+import org.eclipse.emf.ecore.EClass;
+import org.eclipse.emf.ecore.EDataType;
+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;
+
+/**
+ * <!-- begin-user-doc -->
+ * The <b>Package</b> for the model.
+ * It contains accessors for the meta objects to represent
+ * <ul>
+ * <li>each class,</li>
+ * <li>each feature of each class,</li>
+ * <li>each enum,</li>
+ * <li>and each data type</li>
+ * </ul>
+ * <!-- end-user-doc -->
+ * @see org.apache.tuscany.sdo.model.ModelFactory
+ * @generated
+ */
+public class ModelPackageImpl extends EPackageImpl implements ModelPackage
+{
+ /**
+ * The package name.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public static final String eNAME = "model";
+
+ /**
+ * The package namespace URI.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public static final String eNS_URI = "commonj.sdo";
+
+ /**
+ * The package namespace name.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated NOT
+ */
+ public static final String eNS_PREFIX = "sdo"; //FB why was this generated = "commonj" ?
+
+ /**
+ * The singleton instance of the package.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public static final ModelPackageImpl eINSTANCE = org.apache.tuscany.sdo.model.impl.ModelPackageImpl.init();
+
+ /**
+ * The meta object id for the '{@link org.apache.tuscany.sdo.model.impl.BaseDataGraphTypeImpl <em>Base Data Graph Type</em>}' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see org.apache.tuscany.sdo.model.impl.BaseDataGraphTypeImpl
+ * @see org.apache.tuscany.sdo.model.impl.ModelPackageImpl#getBaseDataGraphType()
+ * @generated
+ */
+ public static final int BASE_DATA_GRAPH_TYPE = 0;
+
+ /**
+ * The feature id for the '<em><b>Models</b></em>' containment reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ public static final int BASE_DATA_GRAPH_TYPE__MODELS = 0;
+
+ /**
+ * The feature id for the '<em><b>Xsd</b></em>' containment reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ public static final int BASE_DATA_GRAPH_TYPE__XSD = 1;
+
+ /**
+ * The feature id for the '<em><b>Change Summary</b></em>' containment reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ public static final int BASE_DATA_GRAPH_TYPE__CHANGE_SUMMARY = 2;
+
+ /**
+ * The feature id for the '<em><b>Any Attribute</b></em>' attribute list.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ public static final int BASE_DATA_GRAPH_TYPE__ANY_ATTRIBUTE = 3;
+
+ /**
+ * The number of structural features of the '<em>Base Data Graph Type</em>' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ public static final int BASE_DATA_GRAPH_TYPE_FEATURE_COUNT = 4;
+
+ /**
+ * The meta object id for the '{@link org.apache.tuscany.sdo.model.impl.ChangeSummaryTypeImpl <em>Change Summary Type</em>}' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see org.apache.tuscany.sdo.model.impl.ChangeSummaryTypeImpl
+ * @see org.apache.tuscany.sdo.model.impl.ModelPackageImpl#getChangeSummaryType()
+ * @generated
+ */
+ public static final int CHANGE_SUMMARY_TYPE = 1;
+
+ /**
+ * The feature id for the '<em><b>Any</b></em>' attribute list.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ public static final int CHANGE_SUMMARY_TYPE__ANY = 0;
+
+ /**
+ * The feature id for the '<em><b>Create</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ public static final int CHANGE_SUMMARY_TYPE__CREATE = 1;
+
+ /**
+ * The feature id for the '<em><b>Delete</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ public static final int CHANGE_SUMMARY_TYPE__DELETE = 2;
+
+ /**
+ * The feature id for the '<em><b>Logging</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ public static final int CHANGE_SUMMARY_TYPE__LOGGING = 3;
+
+ /**
+ * The number of structural features of the '<em>Change Summary Type</em>' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ public static final int CHANGE_SUMMARY_TYPE_FEATURE_COUNT = 4;
+
+ /**
+ * The meta object id for the '{@link org.apache.tuscany.sdo.model.impl.DataGraphTypeImpl <em>Data Graph Type</em>}' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see org.apache.tuscany.sdo.model.impl.DataGraphTypeImpl
+ * @see org.apache.tuscany.sdo.model.impl.ModelPackageImpl#getDataGraphType()
+ * @generated
+ */
+ public static final int DATA_GRAPH_TYPE = 2;
+
+ /**
+ * The feature id for the '<em><b>Models</b></em>' containment reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ public static final int DATA_GRAPH_TYPE__MODELS = BASE_DATA_GRAPH_TYPE__MODELS;
+
+ /**
+ * The feature id for the '<em><b>Xsd</b></em>' containment reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ public static final int DATA_GRAPH_TYPE__XSD = BASE_DATA_GRAPH_TYPE__XSD;
+
+ /**
+ * The feature id for the '<em><b>Change Summary</b></em>' containment reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ public static final int DATA_GRAPH_TYPE__CHANGE_SUMMARY = BASE_DATA_GRAPH_TYPE__CHANGE_SUMMARY;
+
+ /**
+ * The feature id for the '<em><b>Any Attribute</b></em>' attribute list.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ public static final int DATA_GRAPH_TYPE__ANY_ATTRIBUTE = BASE_DATA_GRAPH_TYPE__ANY_ATTRIBUTE;
+
+ /**
+ * The feature id for the '<em><b>Any</b></em>' attribute list.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ public static final int DATA_GRAPH_TYPE__ANY = BASE_DATA_GRAPH_TYPE_FEATURE_COUNT + 0;
+
+ /**
+ * The number of structural features of the '<em>Data Graph Type</em>' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ public static final int DATA_GRAPH_TYPE_FEATURE_COUNT = BASE_DATA_GRAPH_TYPE_FEATURE_COUNT + 1;
+
+ /**
+ * The meta object id for the '{@link org.apache.tuscany.sdo.model.impl.DataObjectImpl <em>Data Object</em>}' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see org.apache.tuscany.sdo.model.impl.DataObjectImpl
+ * @see org.apache.tuscany.sdo.model.impl.ModelPackageImpl#getDataObject()
+ * @generated
+ */
+ public static final int DATA_OBJECT = 3;
+
+ /**
+ * The number of structural features of the '<em>Data Object</em>' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ public static final int DATA_OBJECT_FEATURE_COUNT = 0;
+
+ /**
+ * The meta object id for the '{@link org.apache.tuscany.sdo.model.impl.DocumentRootImpl <em>Document Root</em>}' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see org.apache.tuscany.sdo.model.impl.DocumentRootImpl
+ * @see org.apache.tuscany.sdo.model.impl.ModelPackageImpl#getDocumentRoot()
+ * @generated
+ */
+ public static final int DOCUMENT_ROOT = 4;
+
+ /**
+ * The feature id for the '<em><b>Mixed</b></em>' attribute list.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ public static final int DOCUMENT_ROOT__MIXED = 0;
+
+ /**
+ * The feature id for the '<em><b>XMLNS Prefix Map</b></em>' map.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ public static final int DOCUMENT_ROOT__XMLNS_PREFIX_MAP = 1;
+
+ /**
+ * The feature id for the '<em><b>XSI Schema Location</b></em>' map.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ public static final int DOCUMENT_ROOT__XSI_SCHEMA_LOCATION = 2;
+
+ /**
+ * The feature id for the '<em><b>Datagraph</b></em>' containment reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ public static final int DOCUMENT_ROOT__DATAGRAPH = 3;
+
+ /**
+ * The feature id for the '<em><b>Data Object</b></em>' containment reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ public static final int DOCUMENT_ROOT__DATA_OBJECT = 4;
+
+ /**
+ * The feature id for the '<em><b>Type</b></em>' containment reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ public static final int DOCUMENT_ROOT__TYPE = 5;
+
+ /**
+ * The feature id for the '<em><b>Types</b></em>' containment reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ public static final int DOCUMENT_ROOT__TYPES = 6;
+
+ /**
+ * The feature id for the '<em><b>Ref</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ public static final int DOCUMENT_ROOT__REF = 7;
+
+ /**
+ * The number of structural features of the '<em>Document Root</em>' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ public static final int DOCUMENT_ROOT_FEATURE_COUNT = 8;
+
+ /**
+ * The meta object id for the '{@link org.apache.tuscany.sdo.model.impl.ModelsTypeImpl <em>Models Type</em>}' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see org.apache.tuscany.sdo.model.impl.ModelsTypeImpl
+ * @see org.apache.tuscany.sdo.model.impl.ModelPackageImpl#getModelsType()
+ * @generated
+ */
+ public static final int MODELS_TYPE = 5;
+
+ /**
+ * The feature id for the '<em><b>Any</b></em>' attribute list.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ public static final int MODELS_TYPE__ANY = 0;
+
+ /**
+ * The number of structural features of the '<em>Models Type</em>' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ public static final int MODELS_TYPE_FEATURE_COUNT = 1;
+
+ /**
+ * The meta object id for the '{@link org.apache.tuscany.sdo.model.impl.PropertyImpl <em>Property</em>}' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see org.apache.tuscany.sdo.model.impl.PropertyImpl
+ * @see org.apache.tuscany.sdo.model.impl.ModelPackageImpl#getProperty()
+ * @generated
+ */
+ public static final int PROPERTY = 6;
+
+ /**
+ * The feature id for the '<em><b>Alias Name</b></em>' attribute list.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ public static final int PROPERTY__ALIAS_NAME = 0;
+
+ /**
+ * The feature id for the '<em><b>Any</b></em>' attribute list.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ public static final int PROPERTY__ANY = 1;
+
+ /**
+ * The feature id for the '<em><b>Containment</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ public static final int PROPERTY__CONTAINMENT = 2;
+
+ /**
+ * The feature id for the '<em><b>Default</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ public static final int PROPERTY__DEFAULT = 3;
+
+ /**
+ * The feature id for the '<em><b>Many</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ public static final int PROPERTY__MANY = 4;
+
+ /**
+ * The feature id for the '<em><b>Name</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ public static final int PROPERTY__NAME = 5;
+
+ /**
+ * The feature id for the '<em><b>Opposite</b></em>' reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ public static final int PROPERTY__OPPOSITE = 6;
+
+ /**
+ * The feature id for the '<em><b>Read Only</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ public static final int PROPERTY__READ_ONLY = 7;
+
+ /**
+ * The feature id for the '<em><b>Type</b></em>' reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ public static final int PROPERTY__TYPE = 8;
+
+ /**
+ * The feature id for the '<em><b>Any Attribute</b></em>' attribute list.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ public static final int PROPERTY__ANY_ATTRIBUTE = 9;
+
+ /**
+ * The number of structural features of the '<em>Property</em>' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ public static final int PROPERTY_FEATURE_COUNT = 10;
+
+ /**
+ * The meta object id for the '{@link org.apache.tuscany.sdo.model.impl.TextTypeImpl <em>Text Type</em>}' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see org.apache.tuscany.sdo.model.impl.TextTypeImpl
+ * @see org.apache.tuscany.sdo.model.impl.ModelPackageImpl#getTextType()
+ * @generated
+ */
+ public static final int TEXT_TYPE = 7;
+
+ /**
+ * The feature id for the '<em><b>Text</b></em>' attribute list.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ public static final int TEXT_TYPE__TEXT = 0;
+
+ /**
+ * The number of structural features of the '<em>Text Type</em>' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ public static final int TEXT_TYPE_FEATURE_COUNT = 1;
+
+ /**
+ * The meta object id for the '{@link org.apache.tuscany.sdo.model.impl.TypeImpl <em>Type</em>}' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see org.apache.tuscany.sdo.model.impl.TypeImpl
+ * @see org.apache.tuscany.sdo.model.impl.ModelPackageImpl#getType()
+ * @generated
+ */
+ public static final int TYPE = 8;
+
+ /**
+ * The feature id for the '<em><b>Base Type</b></em>' reference list.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ public static final int TYPE__BASE_TYPE = 0;
+
+ /**
+ * The feature id for the '<em><b>Property</b></em>' containment reference list.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ public static final int TYPE__PROPERTY = 1;
+
+ /**
+ * The feature id for the '<em><b>Alias Name</b></em>' attribute list.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ public static final int TYPE__ALIAS_NAME = 2;
+
+ /**
+ * The feature id for the '<em><b>Any</b></em>' attribute list.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ public static final int TYPE__ANY = 3;
+
+ /**
+ * The feature id for the '<em><b>Abstract</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ public static final int TYPE__ABSTRACT = 4;
+
+ /**
+ * The feature id for the '<em><b>Data Type</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ public static final int TYPE__DATA_TYPE = 5;
+
+ /**
+ * The feature id for the '<em><b>Name</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ public static final int TYPE__NAME = 6;
+
+ /**
+ * The feature id for the '<em><b>Open</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ public static final int TYPE__OPEN = 7;
+
+ /**
+ * The feature id for the '<em><b>Sequenced</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ public static final int TYPE__SEQUENCED = 8;
+
+ /**
+ * The feature id for the '<em><b>Uri</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ public static final int TYPE__URI = 9;
+
+ /**
+ * The feature id for the '<em><b>Any Attribute</b></em>' attribute list.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ public static final int TYPE__ANY_ATTRIBUTE = 10;
+
+ /**
+ * The number of structural features of the '<em>Type</em>' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ public static final int TYPE_FEATURE_COUNT = 11;
+
+ /**
+ * The meta object id for the '{@link org.apache.tuscany.sdo.model.impl.TypesImpl <em>Types</em>}' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see org.apache.tuscany.sdo.model.impl.TypesImpl
+ * @see org.apache.tuscany.sdo.model.impl.ModelPackageImpl#getTypes()
+ * @generated
+ */
+ public static final int TYPES = 9;
+
+ /**
+ * The feature id for the '<em><b>Type</b></em>' containment reference list.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ public static final int TYPES__TYPE = 0;
+
+ /**
+ * The number of structural features of the '<em>Types</em>' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ public static final int TYPES_FEATURE_COUNT = 1;
+
+ /**
+ * The meta object id for the '{@link org.apache.tuscany.sdo.model.impl.XSDTypeImpl <em>XSD Type</em>}' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see org.apache.tuscany.sdo.model.impl.XSDTypeImpl
+ * @see org.apache.tuscany.sdo.model.impl.ModelPackageImpl#getXSDType()
+ * @generated
+ */
+ public static final int XSD_TYPE = 10;
+
+ /**
+ * The feature id for the '<em><b>Any</b></em>' attribute list.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ public static final int XSD_TYPE__ANY = 0;
+
+ /**
+ * The number of structural features of the '<em>XSD Type</em>' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ public static final int XSD_TYPE_FEATURE_COUNT = 1;
+
+ /**
+ * The meta object id for the '<em>Boolean</em>' data type.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see org.apache.tuscany.sdo.model.impl.ModelPackageImpl#getBoolean()
+ * @generated
+ */
+ public static final int BOOLEAN = 11;
+
+ /**
+ * The meta object id for the '<em>Boolean Object</em>' data type.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see java.lang.Boolean
+ * @see org.apache.tuscany.sdo.model.impl.ModelPackageImpl#getBooleanObject()
+ * @generated
+ */
+ public static final int BOOLEAN_OBJECT = 12;
+
+ /**
+ * The meta object id for the '<em>Byte</em>' data type.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see org.apache.tuscany.sdo.model.impl.ModelPackageImpl#getByte()
+ * @generated
+ */
+ public static final int BYTE = 13;
+
+ /**
+ * The meta object id for the '<em>Byte Object</em>' data type.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see java.lang.Byte
+ * @see org.apache.tuscany.sdo.model.impl.ModelPackageImpl#getByteObject()
+ * @generated
+ */
+ public static final int BYTE_OBJECT = 14;
+
+ /**
+ * The meta object id for the '<em>Bytes</em>' data type.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see org.apache.tuscany.sdo.model.impl.ModelPackageImpl#getBytes()
+ * @generated
+ */
+ public static final int BYTES = 15;
+
+ /**
+ * The meta object id for the '<em>Character</em>' data type.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see org.apache.tuscany.sdo.model.impl.ModelPackageImpl#getCharacter()
+ * @generated
+ */
+ public static final int CHARACTER = 16;
+
+ /**
+ * The meta object id for the '<em>Character Object</em>' data type.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see java.lang.Character
+ * @see org.apache.tuscany.sdo.model.impl.ModelPackageImpl#getCharacterObject()
+ * @generated
+ */
+ public static final int CHARACTER_OBJECT = 17;
+
+ /**
+ * The meta object id for the '<em>Date</em>' data type.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see java.util.Date
+ * @see org.apache.tuscany.sdo.model.impl.ModelPackageImpl#getDate()
+ * @generated
+ */
+ public static final int DATE = 18;
+
+ /**
+ * The meta object id for the '<em>Date Time</em>' data type.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see java.lang.String
+ * @see org.apache.tuscany.sdo.model.impl.ModelPackageImpl#getDateTime()
+ * @generated
+ */
+ public static final int DATE_TIME = 19;
+
+ /**
+ * The meta object id for the '<em>Day</em>' data type.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see java.lang.String
+ * @see org.apache.tuscany.sdo.model.impl.ModelPackageImpl#getDay()
+ * @generated
+ */
+ public static final int DAY = 20;
+
+ /**
+ * The meta object id for the '<em>Decimal</em>' data type.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see java.math.BigDecimal
+ * @see org.apache.tuscany.sdo.model.impl.ModelPackageImpl#getDecimal()
+ * @generated
+ */
+ public static final int DECIMAL = 21;
+
+ /**
+ * The meta object id for the '<em>Double</em>' data type.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see org.apache.tuscany.sdo.model.impl.ModelPackageImpl#getDouble()
+ * @generated
+ */
+ public static final int DOUBLE = 22;
+
+ /**
+ * The meta object id for the '<em>Double Object</em>' data type.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see java.lang.Double
+ * @see org.apache.tuscany.sdo.model.impl.ModelPackageImpl#getDoubleObject()
+ * @generated
+ */
+ public static final int DOUBLE_OBJECT = 23;
+
+ /**
+ * The meta object id for the '<em>Duration</em>' data type.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see java.lang.String
+ * @see org.apache.tuscany.sdo.model.impl.ModelPackageImpl#getDuration()
+ * @generated
+ */
+ public static final int DURATION = 24;
+
+ /**
+ * The meta object id for the '<em>Float</em>' data type.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see org.apache.tuscany.sdo.model.impl.ModelPackageImpl#getFloat()
+ * @generated
+ */
+ public static final int FLOAT = 25;
+
+ /**
+ * The meta object id for the '<em>Float Object</em>' data type.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see java.lang.Float
+ * @see org.apache.tuscany.sdo.model.impl.ModelPackageImpl#getFloatObject()
+ * @generated
+ */
+ public static final int FLOAT_OBJECT = 26;
+
+ /**
+ * The meta object id for the '<em>Int</em>' data type.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see org.apache.tuscany.sdo.model.impl.ModelPackageImpl#getInt()
+ * @generated
+ */
+ public static final int INT = 27;
+
+ /**
+ * The meta object id for the '<em>Integer</em>' data type.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see java.math.BigInteger
+ * @see org.apache.tuscany.sdo.model.impl.ModelPackageImpl#getInteger()
+ * @generated
+ */
+ public static final int INTEGER = 28;
+
+ /**
+ * The meta object id for the '<em>Int Object</em>' data type.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see java.lang.Integer
+ * @see org.apache.tuscany.sdo.model.impl.ModelPackageImpl#getIntObject()
+ * @generated
+ */
+ public static final int INT_OBJECT = 29;
+
+ /**
+ * The meta object id for the '<em>Long</em>' data type.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see org.apache.tuscany.sdo.model.impl.ModelPackageImpl#getLong()
+ * @generated
+ */
+ public static final int LONG = 30;
+
+ /**
+ * The meta object id for the '<em>Long Object</em>' data type.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see java.lang.Long
+ * @see org.apache.tuscany.sdo.model.impl.ModelPackageImpl#getLongObject()
+ * @generated
+ */
+ public static final int LONG_OBJECT = 31;
+
+ /**
+ * The meta object id for the '<em>Month</em>' data type.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see java.lang.String
+ * @see org.apache.tuscany.sdo.model.impl.ModelPackageImpl#getMonth()
+ * @generated
+ */
+ public static final int MONTH = 32;
+
+ /**
+ * The meta object id for the '<em>Month Day</em>' data type.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see java.lang.String
+ * @see org.apache.tuscany.sdo.model.impl.ModelPackageImpl#getMonthDay()
+ * @generated
+ */
+ public static final int MONTH_DAY = 33;
+
+ /**
+ * The meta object id for the '<em>Object</em>' data type.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see java.lang.Object
+ * @see org.apache.tuscany.sdo.model.impl.ModelPackageImpl#getObject()
+ * @generated
+ */
+ public static final int OBJECT = 34;
+
+ /**
+ * The meta object id for the '<em>Short</em>' data type.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see org.apache.tuscany.sdo.model.impl.ModelPackageImpl#getShort()
+ * @generated
+ */
+ public static final int SHORT = 35;
+
+ /**
+ * The meta object id for the '<em>Short Object</em>' data type.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see java.lang.Short
+ * @see org.apache.tuscany.sdo.model.impl.ModelPackageImpl#getShortObject()
+ * @generated
+ */
+ public static final int SHORT_OBJECT = 36;
+
+ /**
+ * The meta object id for the '<em>String</em>' data type.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see java.lang.String
+ * @see org.apache.tuscany.sdo.model.impl.ModelPackageImpl#getString()
+ * @generated
+ */
+ public static final int STRING = 37;
+
+ /**
+ * The meta object id for the '<em>Strings</em>' data type.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see java.util.List
+ * @see org.apache.tuscany.sdo.model.impl.ModelPackageImpl#getStrings()
+ * @generated
+ */
+ public static final int STRINGS = 38;
+
+ /**
+ * The meta object id for the '<em>Time</em>' data type.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see java.lang.String
+ * @see org.apache.tuscany.sdo.model.impl.ModelPackageImpl#getTime()
+ * @generated
+ */
+ public static final int TIME = 39;
+
+ /**
+ * The meta object id for the '<em>URI</em>' data type.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see java.lang.String
+ * @see org.apache.tuscany.sdo.model.impl.ModelPackageImpl#getURI()
+ * @generated
+ */
+ public static final int URI = 40;
+
+ /**
+ * The meta object id for the '<em>Year</em>' data type.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see java.lang.String
+ * @see org.apache.tuscany.sdo.model.impl.ModelPackageImpl#getYear()
+ * @generated
+ */
+ public static final int YEAR = 41;
+
+ /**
+ * The meta object id for the '<em>Year Month</em>' data type.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see java.lang.String
+ * @see org.apache.tuscany.sdo.model.impl.ModelPackageImpl#getYearMonth()
+ * @generated
+ */
+ public static final int YEAR_MONTH = 42;
+
+ /**
+ * The meta object id for the '<em>Year Month Day</em>' data type.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see java.lang.String
+ * @see org.apache.tuscany.sdo.model.impl.ModelPackageImpl#getYearMonthDay()
+ * @generated
+ */
+ public static final int YEAR_MONTH_DAY = 43;
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ private EClass baseDataGraphTypeEClass = null;
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ private EClass changeSummaryTypeEClass = null;
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ private EClass dataGraphTypeEClass = null;
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ private EClass dataObjectEClass = null;
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ private EClass documentRootEClass = null;
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ private EClass modelsTypeEClass = null;
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ private EClass propertyEClass = null;
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ private EClass textTypeEClass = null;
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ private EClass typeEClass = null;
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ private EClass typesEClass = null;
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ private EClass xsdTypeEClass = null;
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ private EDataType booleanEDataType = null;
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ private EDataType booleanObjectEDataType = null;
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ private EDataType byteEDataType = null;
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ private EDataType byteObjectEDataType = null;
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ private EDataType bytesEDataType = null;
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ private EDataType characterEDataType = null;
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ private EDataType characterObjectEDataType = null;
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ private EDataType dateEDataType = null;
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ private EDataType dateTimeEDataType = null;
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ private EDataType dayEDataType = null;
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ private EDataType decimalEDataType = null;
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ private EDataType doubleEDataType = null;
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ private EDataType doubleObjectEDataType = null;
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ private EDataType durationEDataType = null;
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ private EDataType floatEDataType = null;
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ private EDataType floatObjectEDataType = null;
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ private EDataType intEDataType = null;
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ private EDataType integerEDataType = null;
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ private EDataType intObjectEDataType = null;
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ private EDataType longEDataType = null;
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ private EDataType longObjectEDataType = null;
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ private EDataType monthEDataType = null;
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ private EDataType monthDayEDataType = null;
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ private EDataType objectEDataType = null;
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ private EDataType shortEDataType = null;
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ private EDataType shortObjectEDataType = null;
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ private EDataType stringEDataType = null;
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ private EDataType stringsEDataType = null;
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ private EDataType timeEDataType = null;
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ private EDataType uriEDataType = null;
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ private EDataType yearEDataType = null;
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ private EDataType yearMonthEDataType = null;
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ private EDataType yearMonthDayEDataType = null;
+
+ /**
+ * Creates an instance of the model <b>Package</b>, registered with
+ * {@link org.eclipse.emf.ecore.EPackage.Registry EPackage.Registry} by the package
+ * package URI value.
+ * <p>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.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see org.eclipse.emf.ecore.EPackage.Registry
+ * @see org.apache.tuscany.sdo.model.impl.ModelPackageImpl#eNS_URI
+ * @see #init()
+ * @generated
+ */
+ private ModelPackageImpl()
+ {
+ super(eNS_URI, ((EFactory)ModelFactory.INSTANCE));
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ private static boolean isInited = false;
+
+ /**
+ * Creates, registers, and initializes the <b>Package</b> 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.
+ * <p>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.
+ * <p>Invocation of this method will not affect any packages that have
+ * already been initialized.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #eNS_URI
+ * @see #createPackageContents()
+ * @see #initializePackageContents()
+ * @generated
+ */
+ public static ModelPackageImpl init()
+ {
+ if (isInited) return (ModelPackageImpl)EPackage.Registry.INSTANCE.getEPackage(ModelPackageImpl.eNS_URI);
+
+ // Obtain or create and register package
+ ModelPackageImpl theModelPackageImpl = (ModelPackageImpl)(EPackage.Registry.INSTANCE.getEPackage(eNS_URI) instanceof ModelPackageImpl ? EPackage.Registry.INSTANCE.getEPackage(eNS_URI) : new ModelPackageImpl());
+
+ isInited = true;
+
+ // Initialize simple dependencies
+ XMLTypePackage.eINSTANCE.eClass();
+
+ // Create package meta-data objects
+ theModelPackageImpl.createPackageContents();
+
+ // Initialize created meta-data
+ theModelPackageImpl.initializePackageContents();
+
+ // Mark meta-data to indicate it can't be changed
+ theModelPackageImpl.freeze();
+
+ return theModelPackageImpl;
+ }
+
+
+ /**
+ * Returns the meta object for class '{@link org.apache.tuscany.sdo.model.BaseDataGraphType <em>Base Data Graph Type</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for class '<em>Base Data Graph Type</em>'.
+ * @see org.apache.tuscany.sdo.model.BaseDataGraphType
+ * @generated
+ */
+ public EClass getBaseDataGraphType()
+ {
+ return baseDataGraphTypeEClass;
+ }
+
+ /**
+ * Returns the meta object for the containment reference '{@link org.apache.tuscany.sdo.model.BaseDataGraphType#getModels <em>Models</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for the containment reference '<em>Models</em>'.
+ * @see org.apache.tuscany.sdo.model.BaseDataGraphType#getModels()
+ * @see #getBaseDataGraphType()
+ * @generated
+ */
+ public EReference getBaseDataGraphType_Models()
+ {
+ return (EReference)baseDataGraphTypeEClass.getEStructuralFeatures().get(0);
+ }
+
+ /**
+ * Returns the meta object for the containment reference '{@link org.apache.tuscany.sdo.model.BaseDataGraphType#getXsd <em>Xsd</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for the containment reference '<em>Xsd</em>'.
+ * @see org.apache.tuscany.sdo.model.BaseDataGraphType#getXsd()
+ * @see #getBaseDataGraphType()
+ * @generated
+ */
+ public EReference getBaseDataGraphType_Xsd()
+ {
+ return (EReference)baseDataGraphTypeEClass.getEStructuralFeatures().get(1);
+ }
+
+ /**
+ * Returns the meta object for the containment reference '{@link org.apache.tuscany.sdo.model.BaseDataGraphType#getChangeSummary <em>Change Summary</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for the containment reference '<em>Change Summary</em>'.
+ * @see org.apache.tuscany.sdo.model.BaseDataGraphType#getChangeSummary()
+ * @see #getBaseDataGraphType()
+ * @generated
+ */
+ public EReference getBaseDataGraphType_ChangeSummary()
+ {
+ return (EReference)baseDataGraphTypeEClass.getEStructuralFeatures().get(2);
+ }
+
+ /**
+ * Returns the meta object for the attribute list '{@link org.apache.tuscany.sdo.model.BaseDataGraphType#getAnyAttribute <em>Any Attribute</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for the attribute list '<em>Any Attribute</em>'.
+ * @see org.apache.tuscany.sdo.model.BaseDataGraphType#getAnyAttribute()
+ * @see #getBaseDataGraphType()
+ * @generated
+ */
+ public EAttribute getBaseDataGraphType_AnyAttribute()
+ {
+ return (EAttribute)baseDataGraphTypeEClass.getEStructuralFeatures().get(3);
+ }
+
+ /**
+ * Returns the meta object for class '{@link org.apache.tuscany.sdo.model.ChangeSummaryType <em>Change Summary Type</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for class '<em>Change Summary Type</em>'.
+ * @see org.apache.tuscany.sdo.model.ChangeSummaryType
+ * @generated
+ */
+ public EClass getChangeSummaryType()
+ {
+ return changeSummaryTypeEClass;
+ }
+
+ /**
+ * Returns the meta object for the attribute list '{@link org.apache.tuscany.sdo.model.ChangeSummaryType#getAny <em>Any</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for the attribute list '<em>Any</em>'.
+ * @see org.apache.tuscany.sdo.model.ChangeSummaryType#getAny()
+ * @see #getChangeSummaryType()
+ * @generated
+ */
+ public EAttribute getChangeSummaryType_Any()
+ {
+ return (EAttribute)changeSummaryTypeEClass.getEStructuralFeatures().get(0);
+ }
+
+ /**
+ * Returns the meta object for the attribute '{@link org.apache.tuscany.sdo.model.ChangeSummaryType#getCreate <em>Create</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for the attribute '<em>Create</em>'.
+ * @see org.apache.tuscany.sdo.model.ChangeSummaryType#getCreate()
+ * @see #getChangeSummaryType()
+ * @generated
+ */
+ public EAttribute getChangeSummaryType_Create()
+ {
+ return (EAttribute)changeSummaryTypeEClass.getEStructuralFeatures().get(1);
+ }
+
+ /**
+ * Returns the meta object for the attribute '{@link org.apache.tuscany.sdo.model.ChangeSummaryType#getDelete <em>Delete</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for the attribute '<em>Delete</em>'.
+ * @see org.apache.tuscany.sdo.model.ChangeSummaryType#getDelete()
+ * @see #getChangeSummaryType()
+ * @generated
+ */
+ public EAttribute getChangeSummaryType_Delete()
+ {
+ return (EAttribute)changeSummaryTypeEClass.getEStructuralFeatures().get(2);
+ }
+
+ /**
+ * Returns the meta object for the attribute '{@link org.apache.tuscany.sdo.model.ChangeSummaryType#isLogging <em>Logging</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for the attribute '<em>Logging</em>'.
+ * @see org.apache.tuscany.sdo.model.ChangeSummaryType#isLogging()
+ * @see #getChangeSummaryType()
+ * @generated
+ */
+ public EAttribute getChangeSummaryType_Logging()
+ {
+ return (EAttribute)changeSummaryTypeEClass.getEStructuralFeatures().get(3);
+ }
+
+ /**
+ * Returns the meta object for class '{@link org.apache.tuscany.sdo.model.DataGraphType <em>Data Graph Type</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for class '<em>Data Graph Type</em>'.
+ * @see org.apache.tuscany.sdo.model.DataGraphType
+ * @generated
+ */
+ public EClass getDataGraphType()
+ {
+ return dataGraphTypeEClass;
+ }
+
+ /**
+ * Returns the meta object for the attribute list '{@link org.apache.tuscany.sdo.model.DataGraphType#getAny <em>Any</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for the attribute list '<em>Any</em>'.
+ * @see org.apache.tuscany.sdo.model.DataGraphType#getAny()
+ * @see #getDataGraphType()
+ * @generated
+ */
+ public EAttribute getDataGraphType_Any()
+ {
+ return (EAttribute)dataGraphTypeEClass.getEStructuralFeatures().get(0);
+ }
+
+ /**
+ * Returns the meta object for class '{@link org.apache.tuscany.sdo.model.DataObject <em>Data Object</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for class '<em>Data Object</em>'.
+ * @see org.apache.tuscany.sdo.model.DataObject
+ * @generated
+ */
+ public EClass getDataObject()
+ {
+ return dataObjectEClass;
+ }
+
+ /**
+ * Returns the meta object for class '{@link org.eclipse.emf.ecore.EObject <em>Document Root</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for class '<em>Document Root</em>'.
+ * @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 <em>Mixed</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for the attribute list '<em>Mixed</em>'.
+ * @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 <em>XMLNS Prefix Map</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for the map '<em>XMLNS Prefix Map</em>'.
+ * @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 <em>XSI Schema Location</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for the map '<em>XSI Schema Location</em>'.
+ * @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#getDatagraph <em>Datagraph</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for the containment reference '<em>Datagraph</em>'.
+ * @see org.eclipse.emf.ecore.EObject#getDatagraph()
+ * @see #getDocumentRoot()
+ * @generated
+ */
+ public EReference getDocumentRoot_Datagraph()
+ {
+ return (EReference)documentRootEClass.getEStructuralFeatures().get(3);
+ }
+
+ /**
+ * Returns the meta object for the containment reference '{@link org.eclipse.emf.ecore.EObject#getDataObject <em>Data Object</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for the containment reference '<em>Data Object</em>'.
+ * @see org.eclipse.emf.ecore.EObject#getDataObject()
+ * @see #getDocumentRoot()
+ * @generated
+ */
+ public EReference getDocumentRoot_DataObject()
+ {
+ return (EReference)documentRootEClass.getEStructuralFeatures().get(4);
+ }
+
+ /**
+ * Returns the meta object for the containment reference '{@link org.eclipse.emf.ecore.EObject#getType <em>Type</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for the containment reference '<em>Type</em>'.
+ * @see org.eclipse.emf.ecore.EObject#getType()
+ * @see #getDocumentRoot()
+ * @generated
+ */
+ public EReference getDocumentRoot_Type()
+ {
+ return (EReference)documentRootEClass.getEStructuralFeatures().get(5);
+ }
+
+ /**
+ * Returns the meta object for the containment reference '{@link org.eclipse.emf.ecore.EObject#getTypes <em>Types</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for the containment reference '<em>Types</em>'.
+ * @see org.eclipse.emf.ecore.EObject#getTypes()
+ * @see #getDocumentRoot()
+ * @generated
+ */
+ public EReference getDocumentRoot_Types()
+ {
+ return (EReference)documentRootEClass.getEStructuralFeatures().get(6);
+ }
+
+ /**
+ * Returns the meta object for the attribute '{@link org.eclipse.emf.ecore.EObject#getRef <em>Ref</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for the attribute '<em>Ref</em>'.
+ * @see org.eclipse.emf.ecore.EObject#getRef()
+ * @see #getDocumentRoot()
+ * @generated
+ */
+ public EAttribute getDocumentRoot_Ref()
+ {
+ return (EAttribute)documentRootEClass.getEStructuralFeatures().get(7);
+ }
+
+ /**
+ * Returns the meta object for class '{@link org.apache.tuscany.sdo.model.ModelsType <em>Models Type</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for class '<em>Models Type</em>'.
+ * @see org.apache.tuscany.sdo.model.ModelsType
+ * @generated
+ */
+ public EClass getModelsType()
+ {
+ return modelsTypeEClass;
+ }
+
+ /**
+ * Returns the meta object for the attribute list '{@link org.apache.tuscany.sdo.model.ModelsType#getAny <em>Any</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for the attribute list '<em>Any</em>'.
+ * @see org.apache.tuscany.sdo.model.ModelsType#getAny()
+ * @see #getModelsType()
+ * @generated
+ */
+ public EAttribute getModelsType_Any()
+ {
+ return (EAttribute)modelsTypeEClass.getEStructuralFeatures().get(0);
+ }
+
+ /**
+ * Returns the meta object for class '{@link org.apache.tuscany.sdo.model.Property <em>Property</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for class '<em>Property</em>'.
+ * @see org.apache.tuscany.sdo.model.Property
+ * @generated
+ */
+ public EClass getProperty()
+ {
+ return propertyEClass;
+ }
+
+ /**
+ * Returns the meta object for the attribute list '{@link org.apache.tuscany.sdo.model.Property#getAliasName <em>Alias Name</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for the attribute list '<em>Alias Name</em>'.
+ * @see org.apache.tuscany.sdo.model.Property#getAliasName()
+ * @see #getProperty()
+ * @generated
+ */
+ public EAttribute getProperty_AliasName()
+ {
+ return (EAttribute)propertyEClass.getEStructuralFeatures().get(0);
+ }
+
+ /**
+ * Returns the meta object for the attribute list '{@link org.apache.tuscany.sdo.model.Property#getAny <em>Any</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for the attribute list '<em>Any</em>'.
+ * @see org.apache.tuscany.sdo.model.Property#getAny()
+ * @see #getProperty()
+ * @generated
+ */
+ public EAttribute getProperty_Any()
+ {
+ return (EAttribute)propertyEClass.getEStructuralFeatures().get(1);
+ }
+
+ /**
+ * Returns the meta object for the attribute '{@link org.apache.tuscany.sdo.model.Property#isContainment <em>Containment</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for the attribute '<em>Containment</em>'.
+ * @see org.apache.tuscany.sdo.model.Property#isContainment()
+ * @see #getProperty()
+ * @generated
+ */
+ public EAttribute getProperty_Containment()
+ {
+ return (EAttribute)propertyEClass.getEStructuralFeatures().get(2);
+ }
+
+ /**
+ * Returns the meta object for the attribute '{@link org.apache.tuscany.sdo.model.Property#getDefault <em>Default</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for the attribute '<em>Default</em>'.
+ * @see org.apache.tuscany.sdo.model.Property#getDefault()
+ * @see #getProperty()
+ * @generated
+ */
+ public EAttribute getProperty_Default()
+ {
+ return (EAttribute)propertyEClass.getEStructuralFeatures().get(3);
+ }
+
+ /**
+ * Returns the meta object for the attribute '{@link org.apache.tuscany.sdo.model.Property#isMany <em>Many</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for the attribute '<em>Many</em>'.
+ * @see org.apache.tuscany.sdo.model.Property#isMany()
+ * @see #getProperty()
+ * @generated
+ */
+ public EAttribute getProperty_Many()
+ {
+ return (EAttribute)propertyEClass.getEStructuralFeatures().get(4);
+ }
+
+ /**
+ * Returns the meta object for the attribute '{@link org.apache.tuscany.sdo.model.Property#getName <em>Name</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for the attribute '<em>Name</em>'.
+ * @see org.apache.tuscany.sdo.model.Property#getName()
+ * @see #getProperty()
+ * @generated
+ */
+ public EAttribute getProperty_Name()
+ {
+ return (EAttribute)propertyEClass.getEStructuralFeatures().get(5);
+ }
+
+ /**
+ * Returns the meta object for the reference '{@link org.apache.tuscany.sdo.model.Property#getOpposite <em>Opposite</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for the reference '<em>Opposite</em>'.
+ * @see org.apache.tuscany.sdo.model.Property#getOpposite()
+ * @see #getProperty()
+ * @generated
+ */
+ public EReference getProperty_Opposite()
+ {
+ return (EReference)propertyEClass.getEStructuralFeatures().get(6);
+ }
+
+ /**
+ * Returns the meta object for the attribute '{@link org.apache.tuscany.sdo.model.Property#isReadOnly <em>Read Only</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for the attribute '<em>Read Only</em>'.
+ * @see org.apache.tuscany.sdo.model.Property#isReadOnly()
+ * @see #getProperty()
+ * @generated
+ */
+ public EAttribute getProperty_ReadOnly()
+ {
+ return (EAttribute)propertyEClass.getEStructuralFeatures().get(7);
+ }
+
+ /**
+ * Returns the meta object for the reference '{@link org.apache.tuscany.sdo.model.Property#getType <em>Type</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for the reference '<em>Type</em>'.
+ * @see org.apache.tuscany.sdo.model.Property#getType()
+ * @see #getProperty()
+ * @generated
+ */
+ public EReference getProperty_Type()
+ {
+ return (EReference)propertyEClass.getEStructuralFeatures().get(8);
+ }
+
+ /**
+ * Returns the meta object for the attribute list '{@link org.apache.tuscany.sdo.model.Property#getAnyAttribute <em>Any Attribute</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for the attribute list '<em>Any Attribute</em>'.
+ * @see org.apache.tuscany.sdo.model.Property#getAnyAttribute()
+ * @see #getProperty()
+ * @generated
+ */
+ public EAttribute getProperty_AnyAttribute()
+ {
+ return (EAttribute)propertyEClass.getEStructuralFeatures().get(9);
+ }
+
+ /**
+ * Returns the meta object for class '{@link org.apache.tuscany.sdo.model.TextType <em>Text Type</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for class '<em>Text Type</em>'.
+ * @see org.apache.tuscany.sdo.model.TextType
+ * @generated
+ */
+ public EClass getTextType()
+ {
+ return textTypeEClass;
+ }
+
+ /**
+ * Returns the meta object for the attribute list '{@link org.apache.tuscany.sdo.model.TextType#getText <em>Text</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for the attribute list '<em>Text</em>'.
+ * @see org.apache.tuscany.sdo.model.TextType#getText()
+ * @see #getTextType()
+ * @generated
+ */
+ public EAttribute getTextType_Text()
+ {
+ return (EAttribute)textTypeEClass.getEStructuralFeatures().get(0);
+ }
+
+ /**
+ * Returns the meta object for class '{@link org.apache.tuscany.sdo.model.Type <em>Type</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for class '<em>Type</em>'.
+ * @see org.apache.tuscany.sdo.model.Type
+ * @generated
+ */
+ public EClass getType()
+ {
+ return typeEClass;
+ }
+
+ /**
+ * Returns the meta object for the reference list '{@link org.apache.tuscany.sdo.model.Type#getBaseType <em>Base Type</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for the reference list '<em>Base Type</em>'.
+ * @see org.apache.tuscany.sdo.model.Type#getBaseType()
+ * @see #getType()
+ * @generated
+ */
+ public EReference getType_BaseType()
+ {
+ return (EReference)typeEClass.getEStructuralFeatures().get(0);
+ }
+
+ /**
+ * Returns the meta object for the containment reference list '{@link org.apache.tuscany.sdo.model.Type#getProperty <em>Property</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for the containment reference list '<em>Property</em>'.
+ * @see org.apache.tuscany.sdo.model.Type#getProperty()
+ * @see #getType()
+ * @generated
+ */
+ public EReference getType_Property()
+ {
+ return (EReference)typeEClass.getEStructuralFeatures().get(1);
+ }
+
+ /**
+ * Returns the meta object for the attribute list '{@link org.apache.tuscany.sdo.model.Type#getAliasName <em>Alias Name</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for the attribute list '<em>Alias Name</em>'.
+ * @see org.apache.tuscany.sdo.model.Type#getAliasName()
+ * @see #getType()
+ * @generated
+ */
+ public EAttribute getType_AliasName()
+ {
+ return (EAttribute)typeEClass.getEStructuralFeatures().get(2);
+ }
+
+ /**
+ * Returns the meta object for the attribute list '{@link org.apache.tuscany.sdo.model.Type#getAny <em>Any</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for the attribute list '<em>Any</em>'.
+ * @see org.apache.tuscany.sdo.model.Type#getAny()
+ * @see #getType()
+ * @generated
+ */
+ public EAttribute getType_Any()
+ {
+ return (EAttribute)typeEClass.getEStructuralFeatures().get(3);
+ }
+
+ /**
+ * Returns the meta object for the attribute '{@link org.apache.tuscany.sdo.model.Type#isAbstract <em>Abstract</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for the attribute '<em>Abstract</em>'.
+ * @see org.apache.tuscany.sdo.model.Type#isAbstract()
+ * @see #getType()
+ * @generated
+ */
+ public EAttribute getType_Abstract()
+ {
+ return (EAttribute)typeEClass.getEStructuralFeatures().get(4);
+ }
+
+ /**
+ * Returns the meta object for the attribute '{@link org.apache.tuscany.sdo.model.Type#isDataType <em>Data Type</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for the attribute '<em>Data Type</em>'.
+ * @see org.apache.tuscany.sdo.model.Type#isDataType()
+ * @see #getType()
+ * @generated
+ */
+ public EAttribute getType_DataType()
+ {
+ return (EAttribute)typeEClass.getEStructuralFeatures().get(5);
+ }
+
+ /**
+ * Returns the meta object for the attribute '{@link org.apache.tuscany.sdo.model.Type#getName <em>Name</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for the attribute '<em>Name</em>'.
+ * @see org.apache.tuscany.sdo.model.Type#getName()
+ * @see #getType()
+ * @generated
+ */
+ public EAttribute getType_Name()
+ {
+ return (EAttribute)typeEClass.getEStructuralFeatures().get(6);
+ }
+
+ /**
+ * Returns the meta object for the attribute '{@link org.apache.tuscany.sdo.model.Type#isOpen <em>Open</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for the attribute '<em>Open</em>'.
+ * @see org.apache.tuscany.sdo.model.Type#isOpen()
+ * @see #getType()
+ * @generated
+ */
+ public EAttribute getType_Open()
+ {
+ return (EAttribute)typeEClass.getEStructuralFeatures().get(7);
+ }
+
+ /**
+ * Returns the meta object for the attribute '{@link org.apache.tuscany.sdo.model.Type#isSequenced <em>Sequenced</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for the attribute '<em>Sequenced</em>'.
+ * @see org.apache.tuscany.sdo.model.Type#isSequenced()
+ * @see #getType()
+ * @generated
+ */
+ public EAttribute getType_Sequenced()
+ {
+ return (EAttribute)typeEClass.getEStructuralFeatures().get(8);
+ }
+
+ /**
+ * Returns the meta object for the attribute '{@link org.apache.tuscany.sdo.model.Type#getUri <em>Uri</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for the attribute '<em>Uri</em>'.
+ * @see org.apache.tuscany.sdo.model.Type#getUri()
+ * @see #getType()
+ * @generated
+ */
+ public EAttribute getType_Uri()
+ {
+ return (EAttribute)typeEClass.getEStructuralFeatures().get(9);
+ }
+
+ /**
+ * Returns the meta object for the attribute list '{@link org.apache.tuscany.sdo.model.Type#getAnyAttribute <em>Any Attribute</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for the attribute list '<em>Any Attribute</em>'.
+ * @see org.apache.tuscany.sdo.model.Type#getAnyAttribute()
+ * @see #getType()
+ * @generated
+ */
+ public EAttribute getType_AnyAttribute()
+ {
+ return (EAttribute)typeEClass.getEStructuralFeatures().get(10);
+ }
+
+ /**
+ * Returns the meta object for class '{@link org.apache.tuscany.sdo.model.Types <em>Types</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for class '<em>Types</em>'.
+ * @see org.apache.tuscany.sdo.model.Types
+ * @generated
+ */
+ public EClass getTypes()
+ {
+ return typesEClass;
+ }
+
+ /**
+ * Returns the meta object for the containment reference list '{@link org.apache.tuscany.sdo.model.Types#getType <em>Type</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for the containment reference list '<em>Type</em>'.
+ * @see org.apache.tuscany.sdo.model.Types#getType()
+ * @see #getTypes()
+ * @generated
+ */
+ public EReference getTypes_Type()
+ {
+ return (EReference)typesEClass.getEStructuralFeatures().get(0);
+ }
+
+ /**
+ * Returns the meta object for class '{@link org.apache.tuscany.sdo.model.XSDType <em>XSD Type</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for class '<em>XSD Type</em>'.
+ * @see org.apache.tuscany.sdo.model.XSDType
+ * @generated
+ */
+ public EClass getXSDType()
+ {
+ return xsdTypeEClass;
+ }
+
+ /**
+ * Returns the meta object for the attribute list '{@link org.apache.tuscany.sdo.model.XSDType#getAny <em>Any</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for the attribute list '<em>Any</em>'.
+ * @see org.apache.tuscany.sdo.model.XSDType#getAny()
+ * @see #getXSDType()
+ * @generated
+ */
+ public EAttribute getXSDType_Any()
+ {
+ return (EAttribute)xsdTypeEClass.getEStructuralFeatures().get(0);
+ }
+
+ /**
+ * Returns the meta object for data type '<em>Boolean</em>'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for data type '<em>Boolean</em>'.
+ * @generated
+ */
+ public EDataType getBoolean()
+ {
+ return booleanEDataType;
+ }
+
+ /**
+ * Returns the meta object for data type '{@link java.lang.Boolean <em>Boolean Object</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for data type '<em>Boolean Object</em>'.
+ * @see java.lang.Boolean
+ * @generated
+ */
+ public EDataType getBooleanObject()
+ {
+ return booleanObjectEDataType;
+ }
+
+ /**
+ * Returns the meta object for data type '<em>Byte</em>'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for data type '<em>Byte</em>'.
+ * @generated
+ */
+ public EDataType getByte()
+ {
+ return byteEDataType;
+ }
+
+ /**
+ * Returns the meta object for data type '{@link java.lang.Byte <em>Byte Object</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for data type '<em>Byte Object</em>'.
+ * @see java.lang.Byte
+ * @generated
+ */
+ public EDataType getByteObject()
+ {
+ return byteObjectEDataType;
+ }
+
+ /**
+ * Returns the meta object for data type '<em>Bytes</em>'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for data type '<em>Bytes</em>'.
+ * @generated
+ */
+ public EDataType getBytes()
+ {
+ return bytesEDataType;
+ }
+
+ /**
+ * Returns the meta object for data type '<em>Character</em>'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for data type '<em>Character</em>'.
+ * @generated
+ */
+ public EDataType getCharacter()
+ {
+ return characterEDataType;
+ }
+
+ /**
+ * Returns the meta object for data type '{@link java.lang.Character <em>Character Object</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for data type '<em>Character Object</em>'.
+ * @see java.lang.Character
+ * @generated
+ */
+ public EDataType getCharacterObject()
+ {
+ return characterObjectEDataType;
+ }
+
+ /**
+ * Returns the meta object for data type '{@link java.util.Date <em>Date</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for data type '<em>Date</em>'.
+ * @see java.util.Date
+ * @generated
+ */
+ public EDataType getDate()
+ {
+ return dateEDataType;
+ }
+
+ /**
+ * Returns the meta object for data type '{@link java.lang.String <em>Date Time</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for data type '<em>Date Time</em>'.
+ * @see java.lang.String
+ * @generated
+ */
+ public EDataType getDateTime()
+ {
+ return dateTimeEDataType;
+ }
+
+ /**
+ * Returns the meta object for data type '{@link java.lang.String <em>Day</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for data type '<em>Day</em>'.
+ * @see java.lang.String
+ * @generated
+ */
+ public EDataType getDay()
+ {
+ return dayEDataType;
+ }
+
+ /**
+ * Returns the meta object for data type '{@link java.math.BigDecimal <em>Decimal</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for data type '<em>Decimal</em>'.
+ * @see java.math.BigDecimal
+ * @generated
+ */
+ public EDataType getDecimal()
+ {
+ return decimalEDataType;
+ }
+
+ /**
+ * Returns the meta object for data type '<em>Double</em>'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for data type '<em>Double</em>'.
+ * @generated
+ */
+ public EDataType getDouble()
+ {
+ return doubleEDataType;
+ }
+
+ /**
+ * Returns the meta object for data type '{@link java.lang.Double <em>Double Object</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for data type '<em>Double Object</em>'.
+ * @see java.lang.Double
+ * @generated
+ */
+ public EDataType getDoubleObject()
+ {
+ return doubleObjectEDataType;
+ }
+
+ /**
+ * Returns the meta object for data type '{@link java.lang.String <em>Duration</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for data type '<em>Duration</em>'.
+ * @see java.lang.String
+ * @generated
+ */
+ public EDataType getDuration()
+ {
+ return durationEDataType;
+ }
+
+ /**
+ * Returns the meta object for data type '<em>Float</em>'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for data type '<em>Float</em>'.
+ * @generated
+ */
+ public EDataType getFloat()
+ {
+ return floatEDataType;
+ }
+
+ /**
+ * Returns the meta object for data type '{@link java.lang.Float <em>Float Object</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for data type '<em>Float Object</em>'.
+ * @see java.lang.Float
+ * @generated
+ */
+ public EDataType getFloatObject()
+ {
+ return floatObjectEDataType;
+ }
+
+ /**
+ * Returns the meta object for data type '<em>Int</em>'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for data type '<em>Int</em>'.
+ * @generated
+ */
+ public EDataType getInt()
+ {
+ return intEDataType;
+ }
+
+ /**
+ * Returns the meta object for data type '{@link java.math.BigInteger <em>Integer</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for data type '<em>Integer</em>'.
+ * @see java.math.BigInteger
+ * @generated
+ */
+ public EDataType getInteger()
+ {
+ return integerEDataType;
+ }
+
+ /**
+ * Returns the meta object for data type '{@link java.lang.Integer <em>Int Object</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for data type '<em>Int Object</em>'.
+ * @see java.lang.Integer
+ * @generated
+ */
+ public EDataType getIntObject()
+ {
+ return intObjectEDataType;
+ }
+
+ /**
+ * Returns the meta object for data type '<em>Long</em>'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for data type '<em>Long</em>'.
+ * @generated
+ */
+ public EDataType getLong()
+ {
+ return longEDataType;
+ }
+
+ /**
+ * Returns the meta object for data type '{@link java.lang.Long <em>Long Object</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for data type '<em>Long Object</em>'.
+ * @see java.lang.Long
+ * @generated
+ */
+ public EDataType getLongObject()
+ {
+ return longObjectEDataType;
+ }
+
+ /**
+ * Returns the meta object for data type '{@link java.lang.String <em>Month</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for data type '<em>Month</em>'.
+ * @see java.lang.String
+ * @generated
+ */
+ public EDataType getMonth()
+ {
+ return monthEDataType;
+ }
+
+ /**
+ * Returns the meta object for data type '{@link java.lang.String <em>Month Day</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for data type '<em>Month Day</em>'.
+ * @see java.lang.String
+ * @generated
+ */
+ public EDataType getMonthDay()
+ {
+ return monthDayEDataType;
+ }
+
+ /**
+ * Returns the meta object for data type '{@link java.lang.Object <em>Object</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for data type '<em>Object</em>'.
+ * @see java.lang.Object
+ * @generated
+ */
+ public EDataType getObject()
+ {
+ return objectEDataType;
+ }
+
+ /**
+ * Returns the meta object for data type '<em>Short</em>'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for data type '<em>Short</em>'.
+ * @generated
+ */
+ public EDataType getShort()
+ {
+ return shortEDataType;
+ }
+
+ /**
+ * Returns the meta object for data type '{@link java.lang.Short <em>Short Object</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for data type '<em>Short Object</em>'.
+ * @see java.lang.Short
+ * @generated
+ */
+ public EDataType getShortObject()
+ {
+ return shortObjectEDataType;
+ }
+
+ /**
+ * Returns the meta object for data type '{@link java.lang.String <em>String</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for data type '<em>String</em>'.
+ * @see java.lang.String
+ * @generated
+ */
+ public EDataType getString()
+ {
+ return stringEDataType;
+ }
+
+ /**
+ * Returns the meta object for data type '{@link java.util.List <em>Strings</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for data type '<em>Strings</em>'.
+ * @see java.util.List
+ * @generated
+ */
+ public EDataType getStrings()
+ {
+ return stringsEDataType;
+ }
+
+ /**
+ * Returns the meta object for data type '{@link java.lang.String <em>Time</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for data type '<em>Time</em>'.
+ * @see java.lang.String
+ * @generated
+ */
+ public EDataType getTime()
+ {
+ return timeEDataType;
+ }
+
+ /**
+ * Returns the meta object for data type '{@link java.lang.String <em>URI</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for data type '<em>URI</em>'.
+ * @see java.lang.String
+ * @generated
+ */
+ public EDataType getURI()
+ {
+ return uriEDataType;
+ }
+
+ /**
+ * Returns the meta object for data type '{@link java.lang.String <em>Year</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for data type '<em>Year</em>'.
+ * @see java.lang.String
+ * @generated
+ */
+ public EDataType getYear()
+ {
+ return yearEDataType;
+ }
+
+ /**
+ * Returns the meta object for data type '{@link java.lang.String <em>Year Month</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for data type '<em>Year Month</em>'.
+ * @see java.lang.String
+ * @generated
+ */
+ public EDataType getYearMonth()
+ {
+ return yearMonthEDataType;
+ }
+
+ /**
+ * Returns the meta object for data type '{@link java.lang.String <em>Year Month Day</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for data type '<em>Year Month Day</em>'.
+ * @see java.lang.String
+ * @generated
+ */
+ public EDataType getYearMonthDay()
+ {
+ return yearMonthDayEDataType;
+ }
+
+ /**
+ * Returns the factory that creates the instances of the model.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the factory that creates the instances of the model.
+ * @generated
+ */
+ public ModelFactory getModelFactory()
+ {
+ return (ModelFactory)getEFactoryInstance();
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @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.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public void createPackageContents()
+ {
+ if (isCreated) return;
+ isCreated = true;
+
+ // Create classes and their features
+ baseDataGraphTypeEClass = createEClass(BASE_DATA_GRAPH_TYPE);
+ createEReference(baseDataGraphTypeEClass, BASE_DATA_GRAPH_TYPE__MODELS);
+ createEReference(baseDataGraphTypeEClass, BASE_DATA_GRAPH_TYPE__XSD);
+ createEReference(baseDataGraphTypeEClass, BASE_DATA_GRAPH_TYPE__CHANGE_SUMMARY);
+ createEAttribute(baseDataGraphTypeEClass, BASE_DATA_GRAPH_TYPE__ANY_ATTRIBUTE);
+
+ changeSummaryTypeEClass = createEClass(CHANGE_SUMMARY_TYPE);
+ createEAttribute(changeSummaryTypeEClass, CHANGE_SUMMARY_TYPE__ANY);
+ createEAttribute(changeSummaryTypeEClass, CHANGE_SUMMARY_TYPE__CREATE);
+ createEAttribute(changeSummaryTypeEClass, CHANGE_SUMMARY_TYPE__DELETE);
+ createEAttribute(changeSummaryTypeEClass, CHANGE_SUMMARY_TYPE__LOGGING);
+
+ dataGraphTypeEClass = createEClass(DATA_GRAPH_TYPE);
+ createEAttribute(dataGraphTypeEClass, DATA_GRAPH_TYPE__ANY);
+
+ dataObjectEClass = createEClass(DATA_OBJECT);
+
+ 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__DATAGRAPH);
+ createEReference(documentRootEClass, DOCUMENT_ROOT__DATA_OBJECT);
+ createEReference(documentRootEClass, DOCUMENT_ROOT__TYPE);
+ createEReference(documentRootEClass, DOCUMENT_ROOT__TYPES);
+ createEAttribute(documentRootEClass, DOCUMENT_ROOT__REF);
+
+ modelsTypeEClass = createEClass(MODELS_TYPE);
+ createEAttribute(modelsTypeEClass, MODELS_TYPE__ANY);
+
+ propertyEClass = createEClass(PROPERTY);
+ createEAttribute(propertyEClass, PROPERTY__ALIAS_NAME);
+ createEAttribute(propertyEClass, PROPERTY__ANY);
+ createEAttribute(propertyEClass, PROPERTY__CONTAINMENT);
+ createEAttribute(propertyEClass, PROPERTY__DEFAULT);
+ createEAttribute(propertyEClass, PROPERTY__MANY);
+ createEAttribute(propertyEClass, PROPERTY__NAME);
+ createEReference(propertyEClass, PROPERTY__OPPOSITE);
+ createEAttribute(propertyEClass, PROPERTY__READ_ONLY);
+ createEReference(propertyEClass, PROPERTY__TYPE);
+ createEAttribute(propertyEClass, PROPERTY__ANY_ATTRIBUTE);
+
+ textTypeEClass = createEClass(TEXT_TYPE);
+ createEAttribute(textTypeEClass, TEXT_TYPE__TEXT);
+
+ typeEClass = createEClass(TYPE);
+ createEReference(typeEClass, TYPE__BASE_TYPE);
+ createEReference(typeEClass, TYPE__PROPERTY);
+ createEAttribute(typeEClass, TYPE__ALIAS_NAME);
+ createEAttribute(typeEClass, TYPE__ANY);
+ createEAttribute(typeEClass, TYPE__ABSTRACT);
+ createEAttribute(typeEClass, TYPE__DATA_TYPE);
+ createEAttribute(typeEClass, TYPE__NAME);
+ createEAttribute(typeEClass, TYPE__OPEN);
+ createEAttribute(typeEClass, TYPE__SEQUENCED);
+ createEAttribute(typeEClass, TYPE__URI);
+ createEAttribute(typeEClass, TYPE__ANY_ATTRIBUTE);
+
+ typesEClass = createEClass(TYPES);
+ createEReference(typesEClass, TYPES__TYPE);
+
+ xsdTypeEClass = createEClass(XSD_TYPE);
+ createEAttribute(xsdTypeEClass, XSD_TYPE__ANY);
+
+ // Create data types
+ booleanEDataType = createEDataType(BOOLEAN);
+ booleanObjectEDataType = createEDataType(BOOLEAN_OBJECT);
+ byteEDataType = createEDataType(BYTE);
+ byteObjectEDataType = createEDataType(BYTE_OBJECT);
+ bytesEDataType = createEDataType(BYTES);
+ characterEDataType = createEDataType(CHARACTER);
+ characterObjectEDataType = createEDataType(CHARACTER_OBJECT);
+ dateEDataType = createEDataType(DATE);
+ dateTimeEDataType = createEDataType(DATE_TIME);
+ dayEDataType = createEDataType(DAY);
+ decimalEDataType = createEDataType(DECIMAL);
+ doubleEDataType = createEDataType(DOUBLE);
+ doubleObjectEDataType = createEDataType(DOUBLE_OBJECT);
+ durationEDataType = createEDataType(DURATION);
+ floatEDataType = createEDataType(FLOAT);
+ floatObjectEDataType = createEDataType(FLOAT_OBJECT);
+ intEDataType = createEDataType(INT);
+ integerEDataType = createEDataType(INTEGER);
+ intObjectEDataType = createEDataType(INT_OBJECT);
+ longEDataType = createEDataType(LONG);
+ longObjectEDataType = createEDataType(LONG_OBJECT);
+ monthEDataType = createEDataType(MONTH);
+ monthDayEDataType = createEDataType(MONTH_DAY);
+ objectEDataType = createEDataType(OBJECT);
+ shortEDataType = createEDataType(SHORT);
+ shortObjectEDataType = createEDataType(SHORT_OBJECT);
+ stringEDataType = createEDataType(STRING);
+ stringsEDataType = createEDataType(STRINGS);
+ timeEDataType = createEDataType(TIME);
+ uriEDataType = createEDataType(URI);
+ yearEDataType = createEDataType(YEAR);
+ yearMonthEDataType = createEDataType(YEAR_MONTH);
+ yearMonthDayEDataType = createEDataType(YEAR_MONTH_DAY);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @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.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @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
+ dataGraphTypeEClass.getESuperTypes().add(this.getBaseDataGraphType());
+
+ // Initialize classes and features; add operations and parameters
+ initEClass(baseDataGraphTypeEClass, BaseDataGraphType.class, "BaseDataGraphType", IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
+ initEReference(getBaseDataGraphType_Models(), this.getModelsType(), null, "models", null, 0, 1, BaseDataGraphType.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+ initEReference(getBaseDataGraphType_Xsd(), this.getXSDType(), null, "xsd", null, 0, 1, BaseDataGraphType.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+ initEReference(getBaseDataGraphType_ChangeSummary(), this.getChangeSummaryType(), null, "changeSummary", null, 0, 1, BaseDataGraphType.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+ initEAttribute(getBaseDataGraphType_AnyAttribute(), ecorePackage.getEFeatureMapEntry(), "anyAttribute", null, 0, -1, BaseDataGraphType.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, !IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+
+ initEClass(changeSummaryTypeEClass, ChangeSummaryType.class, "ChangeSummaryType", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
+ initEAttribute(getChangeSummaryType_Any(), ecorePackage.getEFeatureMapEntry(), "any", null, 0, -1, ChangeSummaryType.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, !IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+ initEAttribute(getChangeSummaryType_Create(), theXMLTypePackage.getString(), "create", null, 0, 1, ChangeSummaryType.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, !IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+ initEAttribute(getChangeSummaryType_Delete(), theXMLTypePackage.getString(), "delete", null, 0, 1, ChangeSummaryType.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, !IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+ initEAttribute(getChangeSummaryType_Logging(), theXMLTypePackage.getBoolean(), "logging", null, 0, 1, ChangeSummaryType.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_UNSETTABLE, !IS_ID, !IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+
+ initEClass(dataGraphTypeEClass, DataGraphType.class, "DataGraphType", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
+ initEAttribute(getDataGraphType_Any(), ecorePackage.getEFeatureMapEntry(), "any", null, 0, 1, DataGraphType.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, !IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+
+ initEClass(dataObjectEClass, DataObject.class, "DataObject", IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
+
+ 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_Datagraph(), this.getDataGraphType(), null, "datagraph", null, 0, -2, null, IS_TRANSIENT, IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, IS_DERIVED, IS_ORDERED);
+ initEReference(getDocumentRoot_DataObject(), ecorePackage.getEObject(), null, "dataObject", null, 0, -2, null, IS_TRANSIENT, IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, IS_DERIVED, IS_ORDERED);
+ initEReference(getDocumentRoot_Type(), this.getType(), null, "type", null, 0, -2, null, IS_TRANSIENT, IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, IS_DERIVED, IS_ORDERED);
+ initEReference(getDocumentRoot_Types(), this.getTypes(), null, "types", null, 0, -2, null, IS_TRANSIENT, IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, IS_DERIVED, IS_ORDERED);
+ initEAttribute(getDocumentRoot_Ref(), theXMLTypePackage.getString(), "ref", null, 0, 1, null, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, !IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+
+ initEClass(modelsTypeEClass, ModelsType.class, "ModelsType", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
+ initEAttribute(getModelsType_Any(), ecorePackage.getEFeatureMapEntry(), "any", null, 0, -1, ModelsType.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, !IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+
+ initEClass(propertyEClass, Property.class, "Property", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
+ initEAttribute(getProperty_AliasName(), this.getString(), "aliasName", null, 0, -1, Property.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, !IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+ initEAttribute(getProperty_Any(), ecorePackage.getEFeatureMapEntry(), "any", null, 0, -1, Property.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, !IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+ initEAttribute(getProperty_Containment(), this.getBoolean(), "containment", null, 0, 1, Property.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_UNSETTABLE, !IS_ID, !IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+ initEAttribute(getProperty_Default(), this.getString(), "default", null, 0, 1, Property.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, !IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+ initEAttribute(getProperty_Many(), this.getBoolean(), "many", null, 0, 1, Property.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_UNSETTABLE, !IS_ID, !IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+ initEAttribute(getProperty_Name(), this.getString(), "name", null, 0, 1, Property.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, !IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+ initEReference(getProperty_Opposite(), this.getProperty(), null, "opposite", null, 0, 1, Property.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_COMPOSITE, IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+ initEAttribute(getProperty_ReadOnly(), this.getBoolean(), "readOnly", null, 0, 1, Property.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_UNSETTABLE, !IS_ID, !IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+ initEReference(getProperty_Type(), this.getType(), null, "type", null, 0, 1, Property.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_COMPOSITE, IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+ initEAttribute(getProperty_AnyAttribute(), ecorePackage.getEFeatureMapEntry(), "anyAttribute", null, 0, -1, Property.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, !IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+
+ initEClass(textTypeEClass, TextType.class, "TextType", IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
+ initEAttribute(getTextType_Text(), theXMLTypePackage.getString(), "text", null, 0, -1, TextType.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, !IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+
+ initEClass(typeEClass, Type.class, "Type", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
+ initEReference(getType_BaseType(), this.getType(), null, "baseType", null, 0, -1, Type.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_COMPOSITE, IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+ initEReference(getType_Property(), this.getProperty(), null, "property", null, 0, -1, Type.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+ initEAttribute(getType_AliasName(), this.getString(), "aliasName", null, 0, -1, Type.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, !IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+ initEAttribute(getType_Any(), ecorePackage.getEFeatureMapEntry(), "any", null, 0, -1, Type.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, !IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+ initEAttribute(getType_Abstract(), this.getBoolean(), "abstract", null, 0, 1, Type.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_UNSETTABLE, !IS_ID, !IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+ initEAttribute(getType_DataType(), this.getBoolean(), "dataType", null, 0, 1, Type.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_UNSETTABLE, !IS_ID, !IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+ initEAttribute(getType_Name(), theXMLTypePackage.getID(), "name", null, 0, 1, Type.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, IS_ID, !IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+ initEAttribute(getType_Open(), this.getBoolean(), "open", null, 0, 1, Type.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_UNSETTABLE, !IS_ID, !IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+ initEAttribute(getType_Sequenced(), this.getBoolean(), "sequenced", null, 0, 1, Type.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_UNSETTABLE, !IS_ID, !IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+ initEAttribute(getType_Uri(), this.getURI(), "uri", null, 0, 1, Type.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, !IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+ initEAttribute(getType_AnyAttribute(), ecorePackage.getEFeatureMapEntry(), "anyAttribute", null, 0, -1, Type.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, !IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+
+ initEClass(typesEClass, Types.class, "Types", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
+ initEReference(getTypes_Type(), this.getType(), null, "type", null, 0, -1, Types.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+
+ initEClass(xsdTypeEClass, XSDType.class, "XSDType", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
+ initEAttribute(getXSDType_Any(), ecorePackage.getEFeatureMapEntry(), "any", null, 0, -1, XSDType.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, !IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+
+ // Initialize data types
+ initEDataType(booleanEDataType, boolean.class, "Boolean", IS_SERIALIZABLE, !IS_GENERATED_INSTANCE_CLASS);
+ initEDataType(booleanObjectEDataType, Boolean.class, "BooleanObject", IS_SERIALIZABLE, !IS_GENERATED_INSTANCE_CLASS);
+ initEDataType(byteEDataType, byte.class, "Byte", IS_SERIALIZABLE, !IS_GENERATED_INSTANCE_CLASS);
+ initEDataType(byteObjectEDataType, Byte.class, "ByteObject", IS_SERIALIZABLE, !IS_GENERATED_INSTANCE_CLASS);
+ initEDataType(bytesEDataType, byte[].class, "Bytes", IS_SERIALIZABLE, !IS_GENERATED_INSTANCE_CLASS);
+ initEDataType(characterEDataType, char.class, "Character", IS_SERIALIZABLE, !IS_GENERATED_INSTANCE_CLASS);
+ initEDataType(characterObjectEDataType, Character.class, "CharacterObject", IS_SERIALIZABLE, !IS_GENERATED_INSTANCE_CLASS);
+ initEDataType(dateEDataType, Date.class, "Date", IS_SERIALIZABLE, !IS_GENERATED_INSTANCE_CLASS);
+ initEDataType(dateTimeEDataType, String.class, "DateTime", IS_SERIALIZABLE, !IS_GENERATED_INSTANCE_CLASS);
+ initEDataType(dayEDataType, String.class, "Day", IS_SERIALIZABLE, !IS_GENERATED_INSTANCE_CLASS);
+ initEDataType(decimalEDataType, BigDecimal.class, "Decimal", IS_SERIALIZABLE, !IS_GENERATED_INSTANCE_CLASS);
+ initEDataType(doubleEDataType, double.class, "Double", IS_SERIALIZABLE, !IS_GENERATED_INSTANCE_CLASS);
+ initEDataType(doubleObjectEDataType, Double.class, "DoubleObject", IS_SERIALIZABLE, !IS_GENERATED_INSTANCE_CLASS);
+ initEDataType(durationEDataType, String.class, "Duration", IS_SERIALIZABLE, !IS_GENERATED_INSTANCE_CLASS);
+ initEDataType(floatEDataType, float.class, "Float", IS_SERIALIZABLE, !IS_GENERATED_INSTANCE_CLASS);
+ initEDataType(floatObjectEDataType, Float.class, "FloatObject", IS_SERIALIZABLE, !IS_GENERATED_INSTANCE_CLASS);
+ initEDataType(intEDataType, int.class, "Int", IS_SERIALIZABLE, !IS_GENERATED_INSTANCE_CLASS);
+ initEDataType(integerEDataType, BigInteger.class, "Integer", IS_SERIALIZABLE, !IS_GENERATED_INSTANCE_CLASS);
+ initEDataType(intObjectEDataType, Integer.class, "IntObject", IS_SERIALIZABLE, !IS_GENERATED_INSTANCE_CLASS);
+ initEDataType(longEDataType, long.class, "Long", IS_SERIALIZABLE, !IS_GENERATED_INSTANCE_CLASS);
+ initEDataType(longObjectEDataType, Long.class, "LongObject", IS_SERIALIZABLE, !IS_GENERATED_INSTANCE_CLASS);
+ initEDataType(monthEDataType, String.class, "Month", IS_SERIALIZABLE, !IS_GENERATED_INSTANCE_CLASS);
+ initEDataType(monthDayEDataType, String.class, "MonthDay", IS_SERIALIZABLE, !IS_GENERATED_INSTANCE_CLASS);
+ initEDataType(objectEDataType, Object.class, "Object", IS_SERIALIZABLE, !IS_GENERATED_INSTANCE_CLASS);
+ initEDataType(shortEDataType, short.class, "Short", IS_SERIALIZABLE, !IS_GENERATED_INSTANCE_CLASS);
+ initEDataType(shortObjectEDataType, Short.class, "ShortObject", IS_SERIALIZABLE, !IS_GENERATED_INSTANCE_CLASS);
+ initEDataType(stringEDataType, String.class, "String", IS_SERIALIZABLE, !IS_GENERATED_INSTANCE_CLASS);
+ initEDataType(stringsEDataType, List.class, "Strings", IS_SERIALIZABLE, !IS_GENERATED_INSTANCE_CLASS);
+ initEDataType(timeEDataType, String.class, "Time", IS_SERIALIZABLE, !IS_GENERATED_INSTANCE_CLASS);
+ initEDataType(uriEDataType, String.class, "URI", IS_SERIALIZABLE, !IS_GENERATED_INSTANCE_CLASS);
+ initEDataType(yearEDataType, String.class, "Year", IS_SERIALIZABLE, !IS_GENERATED_INSTANCE_CLASS);
+ initEDataType(yearMonthEDataType, String.class, "YearMonth", IS_SERIALIZABLE, !IS_GENERATED_INSTANCE_CLASS);
+ initEDataType(yearMonthDayEDataType, String.class, "YearMonthDay", IS_SERIALIZABLE, !IS_GENERATED_INSTANCE_CLASS);
+
+ // Create resource
+ createResource(eNS_URI);
+
+ // Create annotations
+ // http:///org/eclipse/emf/ecore/util/ExtendedMetaData
+ createExtendedMetaDataAnnotations();
+ }
+
+ /**
+ * Initializes the annotations for <b>http:///org/eclipse/emf/ecore/util/ExtendedMetaData</b>.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ protected void createExtendedMetaDataAnnotations()
+ {
+ String source = "http:///org/eclipse/emf/ecore/util/ExtendedMetaData";
+ addAnnotation
+ (baseDataGraphTypeEClass,
+ source,
+ new String[]
+ {
+ "name", "BaseDataGraphType",
+ "kind", "elementOnly"
+ });
+ addAnnotation
+ (getBaseDataGraphType_Models(),
+ source,
+ new String[]
+ {
+ "kind", "element",
+ "name", "models"
+ });
+ addAnnotation
+ (getBaseDataGraphType_Xsd(),
+ source,
+ new String[]
+ {
+ "kind", "element",
+ "name", "xsd"
+ });
+ addAnnotation
+ (getBaseDataGraphType_ChangeSummary(),
+ source,
+ new String[]
+ {
+ "kind", "element",
+ "name", "changeSummary"
+ });
+ addAnnotation
+ (getBaseDataGraphType_AnyAttribute(),
+ source,
+ new String[]
+ {
+ "kind", "attributeWildcard",
+ "wildcards", "##other",
+ "name", ":3",
+ "processing", "lax"
+ });
+ addAnnotation
+ (booleanEDataType,
+ source,
+ new String[]
+ {
+ "name", "Boolean"
+ });
+ addAnnotation
+ (booleanObjectEDataType,
+ source,
+ new String[]
+ {
+ "name", "Boolean:Object",
+ "baseType", "Boolean"
+ });
+ addAnnotation
+ (byteEDataType,
+ source,
+ new String[]
+ {
+ "name", "Byte"
+ });
+ addAnnotation
+ (byteObjectEDataType,
+ source,
+ new String[]
+ {
+ "name", "Byte:Object",
+ "baseType", "Byte"
+ });
+ addAnnotation
+ (bytesEDataType,
+ source,
+ new String[]
+ {
+ "name", "Bytes"
+ });
+ addAnnotation
+ (changeSummaryTypeEClass,
+ source,
+ new String[]
+ {
+ "name", "ChangeSummaryType",
+ "kind", "elementOnly"
+ });
+ addAnnotation
+ (getChangeSummaryType_Any(),
+ source,
+ new String[]
+ {
+ "kind", "elementWildcard",
+ "wildcards", "##any",
+ "name", ":0",
+ "processing", "lax"
+ });
+ addAnnotation
+ (getChangeSummaryType_Create(),
+ source,
+ new String[]
+ {
+ "kind", "attribute",
+ "name", "create"
+ });
+ addAnnotation
+ (getChangeSummaryType_Delete(),
+ source,
+ new String[]
+ {
+ "kind", "attribute",
+ "name", "delete"
+ });
+ addAnnotation
+ (getChangeSummaryType_Logging(),
+ source,
+ new String[]
+ {
+ "kind", "attribute",
+ "name", "logging"
+ });
+ addAnnotation
+ (characterEDataType,
+ source,
+ new String[]
+ {
+ "name", "Character"
+ });
+ addAnnotation
+ (characterObjectEDataType,
+ source,
+ new String[]
+ {
+ "name", "Character:Object",
+ "baseType", "Character"
+ });
+ addAnnotation
+ (dataGraphTypeEClass,
+ source,
+ new String[]
+ {
+ "name", "DataGraphType",
+ "kind", "elementOnly"
+ });
+ addAnnotation
+ (getDataGraphType_Any(),
+ source,
+ new String[]
+ {
+ "kind", "elementWildcard",
+ "wildcards", "##other",
+ "name", ":4",
+ "processing", "lax"
+ });
+ addAnnotation
+ (dataObjectEClass,
+ source,
+ new String[]
+ {
+ "name", "DataObject",
+ "kind", "empty"
+ });
+ addAnnotation
+ (dateEDataType,
+ source,
+ new String[]
+ {
+ "name", "Date"
+ });
+ addAnnotation
+ (dateTimeEDataType,
+ source,
+ new String[]
+ {
+ "name", "DateTime"
+ });
+ addAnnotation
+ (dayEDataType,
+ source,
+ new String[]
+ {
+ "name", "Day"
+ });
+ addAnnotation
+ (decimalEDataType,
+ source,
+ new String[]
+ {
+ "name", "Decimal"
+ });
+ 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_Datagraph(),
+ source,
+ new String[]
+ {
+ "kind", "element",
+ "name", "datagraph",
+ "namespace", "##targetNamespace"
+ });
+ addAnnotation
+ (getDocumentRoot_DataObject(),
+ source,
+ new String[]
+ {
+ "kind", "element",
+ "name", "dataObject",
+ "namespace", "##targetNamespace"
+ });
+ addAnnotation
+ (getDocumentRoot_Type(),
+ source,
+ new String[]
+ {
+ "kind", "element",
+ "name", "type",
+ "namespace", "##targetNamespace"
+ });
+ addAnnotation
+ (getDocumentRoot_Types(),
+ source,
+ new String[]
+ {
+ "kind", "element",
+ "name", "types",
+ "namespace", "##targetNamespace"
+ });
+ addAnnotation
+ (getDocumentRoot_Ref(),
+ source,
+ new String[]
+ {
+ "kind", "attribute",
+ "name", "ref",
+ "namespace", "##targetNamespace"
+ });
+ addAnnotation
+ (doubleEDataType,
+ source,
+ new String[]
+ {
+ "name", "Double"
+ });
+ addAnnotation
+ (doubleObjectEDataType,
+ source,
+ new String[]
+ {
+ "name", "Double:Object",
+ "baseType", "Double"
+ });
+ addAnnotation
+ (durationEDataType,
+ source,
+ new String[]
+ {
+ "name", "Duration"
+ });
+ addAnnotation
+ (floatEDataType,
+ source,
+ new String[]
+ {
+ "name", "Float"
+ });
+ addAnnotation
+ (floatObjectEDataType,
+ source,
+ new String[]
+ {
+ "name", "Float:Object",
+ "baseType", "Float"
+ });
+ addAnnotation
+ (intEDataType,
+ source,
+ new String[]
+ {
+ "name", "Int"
+ });
+ addAnnotation
+ (integerEDataType,
+ source,
+ new String[]
+ {
+ "name", "Integer"
+ });
+ addAnnotation
+ (intObjectEDataType,
+ source,
+ new String[]
+ {
+ "name", "Int:Object",
+ "baseType", "Int"
+ });
+ addAnnotation
+ (longEDataType,
+ source,
+ new String[]
+ {
+ "name", "Long"
+ });
+ addAnnotation
+ (longObjectEDataType,
+ source,
+ new String[]
+ {
+ "name", "Long:Object",
+ "baseType", "Long"
+ });
+ addAnnotation
+ (modelsTypeEClass,
+ source,
+ new String[]
+ {
+ "name", "ModelsType",
+ "kind", "elementOnly"
+ });
+ addAnnotation
+ (getModelsType_Any(),
+ source,
+ new String[]
+ {
+ "kind", "elementWildcard",
+ "wildcards", "##other",
+ "name", ":0",
+ "processing", "lax"
+ });
+ addAnnotation
+ (monthEDataType,
+ source,
+ new String[]
+ {
+ "name", "Month"
+ });
+ addAnnotation
+ (monthDayEDataType,
+ source,
+ new String[]
+ {
+ "name", "MonthDay"
+ });
+ addAnnotation
+ (objectEDataType,
+ source,
+ new String[]
+ {
+ "name", "Object"
+ });
+ addAnnotation
+ (propertyEClass,
+ source,
+ new String[]
+ {
+ "name", "Property",
+ "kind", "elementOnly"
+ });
+ addAnnotation
+ (getProperty_AliasName(),
+ source,
+ new String[]
+ {
+ "kind", "element",
+ "name", "aliasName",
+ "namespace", "##targetNamespace"
+ });
+ addAnnotation
+ (getProperty_Any(),
+ source,
+ new String[]
+ {
+ "kind", "elementWildcard",
+ "wildcards", "##other",
+ "name", ":1",
+ "processing", "lax"
+ });
+ addAnnotation
+ (getProperty_Containment(),
+ source,
+ new String[]
+ {
+ "kind", "attribute",
+ "name", "containment"
+ });
+ addAnnotation
+ (getProperty_Default(),
+ source,
+ new String[]
+ {
+ "kind", "attribute",
+ "name", "default"
+ });
+ addAnnotation
+ (getProperty_Many(),
+ source,
+ new String[]
+ {
+ "kind", "attribute",
+ "name", "many"
+ });
+ addAnnotation
+ (getProperty_Name(),
+ source,
+ new String[]
+ {
+ "kind", "attribute",
+ "name", "name"
+ });
+ addAnnotation
+ (getProperty_Opposite(),
+ source,
+ new String[]
+ {
+ "kind", "attribute",
+ "name", "opposite"
+ });
+ addAnnotation
+ (getProperty_ReadOnly(),
+ source,
+ new String[]
+ {
+ "kind", "attribute",
+ "name", "readOnly"
+ });
+ addAnnotation
+ (getProperty_Type(),
+ source,
+ new String[]
+ {
+ "kind", "attribute",
+ "name", "type"
+ });
+ addAnnotation
+ (getProperty_AnyAttribute(),
+ source,
+ new String[]
+ {
+ "kind", "attributeWildcard",
+ "wildcards", "##any",
+ "name", ":9",
+ "processing", "lax"
+ });
+ addAnnotation
+ (shortEDataType,
+ source,
+ new String[]
+ {
+ "name", "Short"
+ });
+ addAnnotation
+ (shortObjectEDataType,
+ source,
+ new String[]
+ {
+ "name", "Short:Object",
+ "baseType", "Short"
+ });
+ addAnnotation
+ (stringEDataType,
+ source,
+ new String[]
+ {
+ "name", "String"
+ });
+ addAnnotation
+ (stringsEDataType,
+ source,
+ new String[]
+ {
+ "name", "Strings"
+ });
+ addAnnotation
+ (textTypeEClass,
+ source,
+ new String[]
+ {
+ "name", "TextType",
+ "kind", "elementOnly"
+ });
+ addAnnotation
+ (getTextType_Text(),
+ source,
+ new String[]
+ {
+ "kind", "element",
+ "name", "text",
+ "namespace", "##targetNamespace"
+ });
+ addAnnotation
+ (timeEDataType,
+ source,
+ new String[]
+ {
+ "name", "Time"
+ });
+ addAnnotation
+ (typeEClass,
+ source,
+ new String[]
+ {
+ "name", "Type",
+ "kind", "elementOnly"
+ });
+ addAnnotation
+ (getType_BaseType(),
+ source,
+ new String[]
+ {
+ "kind", "element",
+ "name", "baseType",
+ "namespace", "##targetNamespace"
+ });
+ addAnnotation
+ (getType_Property(),
+ source,
+ new String[]
+ {
+ "kind", "element",
+ "name", "property",
+ "namespace", "##targetNamespace"
+ });
+ addAnnotation
+ (getType_AliasName(),
+ source,
+ new String[]
+ {
+ "kind", "element",
+ "name", "aliasName",
+ "namespace", "##targetNamespace"
+ });
+ addAnnotation
+ (getType_Any(),
+ source,
+ new String[]
+ {
+ "kind", "elementWildcard",
+ "wildcards", "##other",
+ "name", ":3",
+ "processing", "lax"
+ });
+ addAnnotation
+ (getType_Abstract(),
+ source,
+ new String[]
+ {
+ "kind", "attribute",
+ "name", "abstract"
+ });
+ addAnnotation
+ (getType_DataType(),
+ source,
+ new String[]
+ {
+ "kind", "attribute",
+ "name", "dataType"
+ });
+ addAnnotation
+ (getType_Name(),
+ source,
+ new String[]
+ {
+ "kind", "attribute",
+ "name", "name"
+ });
+ addAnnotation
+ (getType_Open(),
+ source,
+ new String[]
+ {
+ "kind", "attribute",
+ "name", "open"
+ });
+ addAnnotation
+ (getType_Sequenced(),
+ source,
+ new String[]
+ {
+ "kind", "attribute",
+ "name", "sequenced"
+ });
+ addAnnotation
+ (getType_Uri(),
+ source,
+ new String[]
+ {
+ "kind", "attribute",
+ "name", "uri"
+ });
+ addAnnotation
+ (getType_AnyAttribute(),
+ source,
+ new String[]
+ {
+ "kind", "attributeWildcard",
+ "wildcards", "##any",
+ "name", ":10",
+ "processing", "lax"
+ });
+ addAnnotation
+ (typesEClass,
+ source,
+ new String[]
+ {
+ "name", "Types",
+ "kind", "elementOnly"
+ });
+ addAnnotation
+ (getTypes_Type(),
+ source,
+ new String[]
+ {
+ "kind", "element",
+ "name", "type",
+ "namespace", "##targetNamespace"
+ });
+ addAnnotation
+ (uriEDataType,
+ source,
+ new String[]
+ {
+ "name", "URI"
+ });
+ addAnnotation
+ (xsdTypeEClass,
+ source,
+ new String[]
+ {
+ "name", "XSDType",
+ "kind", "elementOnly"
+ });
+ addAnnotation
+ (getXSDType_Any(),
+ source,
+ new String[]
+ {
+ "kind", "elementWildcard",
+ "wildcards", "http://www.w3.org/2001/XMLSchema",
+ "name", ":0",
+ "processing", "lax"
+ });
+ addAnnotation
+ (yearEDataType,
+ source,
+ new String[]
+ {
+ "name", "Year"
+ });
+ addAnnotation
+ (yearMonthEDataType,
+ source,
+ new String[]
+ {
+ "name", "YearMonth"
+ });
+ addAnnotation
+ (yearMonthDayEDataType,
+ source,
+ new String[]
+ {
+ "name", "YearMonthDay"
+ });
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * Defines literals for the meta objects that represent
+ * <ul>
+ * <li>each class,</li>
+ * <li>each feature of each class,</li>
+ * <li>each enum,</li>
+ * <li>and each data type</li>
+ * </ul>
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public interface Literals
+ {
+ /**
+ * The meta object literal for the '{@link org.apache.tuscany.sdo.model.impl.BaseDataGraphTypeImpl <em>Base Data Graph Type</em>}' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see org.apache.tuscany.sdo.model.impl.BaseDataGraphTypeImpl
+ * @see org.apache.tuscany.sdo.model.impl.ModelPackageImpl#getBaseDataGraphType()
+ * @generated
+ */
+ public static final EClass BASE_DATA_GRAPH_TYPE = eINSTANCE.getBaseDataGraphType();
+
+ /**
+ * The meta object literal for the '<em><b>Models</b></em>' containment reference feature.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public static final EReference BASE_DATA_GRAPH_TYPE__MODELS = eINSTANCE.getBaseDataGraphType_Models();
+
+ /**
+ * The meta object literal for the '<em><b>Xsd</b></em>' containment reference feature.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public static final EReference BASE_DATA_GRAPH_TYPE__XSD = eINSTANCE.getBaseDataGraphType_Xsd();
+
+ /**
+ * The meta object literal for the '<em><b>Change Summary</b></em>' containment reference feature.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public static final EReference BASE_DATA_GRAPH_TYPE__CHANGE_SUMMARY = eINSTANCE.getBaseDataGraphType_ChangeSummary();
+
+ /**
+ * The meta object literal for the '<em><b>Any Attribute</b></em>' attribute list feature.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public static final EAttribute BASE_DATA_GRAPH_TYPE__ANY_ATTRIBUTE = eINSTANCE.getBaseDataGraphType_AnyAttribute();
+
+ /**
+ * The meta object literal for the '{@link org.apache.tuscany.sdo.model.impl.ChangeSummaryTypeImpl <em>Change Summary Type</em>}' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see org.apache.tuscany.sdo.model.impl.ChangeSummaryTypeImpl
+ * @see org.apache.tuscany.sdo.model.impl.ModelPackageImpl#getChangeSummaryType()
+ * @generated
+ */
+ public static final EClass CHANGE_SUMMARY_TYPE = eINSTANCE.getChangeSummaryType();
+
+ /**
+ * The meta object literal for the '<em><b>Any</b></em>' attribute list feature.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public static final EAttribute CHANGE_SUMMARY_TYPE__ANY = eINSTANCE.getChangeSummaryType_Any();
+
+ /**
+ * The meta object literal for the '<em><b>Create</b></em>' attribute feature.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public static final EAttribute CHANGE_SUMMARY_TYPE__CREATE = eINSTANCE.getChangeSummaryType_Create();
+
+ /**
+ * The meta object literal for the '<em><b>Delete</b></em>' attribute feature.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public static final EAttribute CHANGE_SUMMARY_TYPE__DELETE = eINSTANCE.getChangeSummaryType_Delete();
+
+ /**
+ * The meta object literal for the '<em><b>Logging</b></em>' attribute feature.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public static final EAttribute CHANGE_SUMMARY_TYPE__LOGGING = eINSTANCE.getChangeSummaryType_Logging();
+
+ /**
+ * The meta object literal for the '{@link org.apache.tuscany.sdo.model.impl.DataGraphTypeImpl <em>Data Graph Type</em>}' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see org.apache.tuscany.sdo.model.impl.DataGraphTypeImpl
+ * @see org.apache.tuscany.sdo.model.impl.ModelPackageImpl#getDataGraphType()
+ * @generated
+ */
+ public static final EClass DATA_GRAPH_TYPE = eINSTANCE.getDataGraphType();
+
+ /**
+ * The meta object literal for the '<em><b>Any</b></em>' attribute list feature.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public static final EAttribute DATA_GRAPH_TYPE__ANY = eINSTANCE.getDataGraphType_Any();
+
+ /**
+ * The meta object literal for the '{@link org.apache.tuscany.sdo.model.impl.DataObjectImpl <em>Data Object</em>}' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see org.apache.tuscany.sdo.model.impl.DataObjectImpl
+ * @see org.apache.tuscany.sdo.model.impl.ModelPackageImpl#getDataObject()
+ * @generated
+ */
+ public static final EClass DATA_OBJECT = eINSTANCE.getDataObject();
+
+ /**
+ * The meta object literal for the '{@link org.apache.tuscany.sdo.model.impl.DocumentRootImpl <em>Document Root</em>}' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see org.apache.tuscany.sdo.model.impl.DocumentRootImpl
+ * @see org.apache.tuscany.sdo.model.impl.ModelPackageImpl#getDocumentRoot()
+ * @generated
+ */
+ public static final EClass DOCUMENT_ROOT = eINSTANCE.getDocumentRoot();
+
+ /**
+ * The meta object literal for the '<em><b>Mixed</b></em>' attribute list feature.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public static final EAttribute DOCUMENT_ROOT__MIXED = eINSTANCE.getDocumentRoot_Mixed();
+
+ /**
+ * The meta object literal for the '<em><b>XMLNS Prefix Map</b></em>' map feature.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public static final EReference DOCUMENT_ROOT__XMLNS_PREFIX_MAP = eINSTANCE.getDocumentRoot_XMLNSPrefixMap();
+
+ /**
+ * The meta object literal for the '<em><b>XSI Schema Location</b></em>' map feature.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public static final EReference DOCUMENT_ROOT__XSI_SCHEMA_LOCATION = eINSTANCE.getDocumentRoot_XSISchemaLocation();
+
+ /**
+ * The meta object literal for the '<em><b>Datagraph</b></em>' containment reference feature.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public static final EReference DOCUMENT_ROOT__DATAGRAPH = eINSTANCE.getDocumentRoot_Datagraph();
+
+ /**
+ * The meta object literal for the '<em><b>Data Object</b></em>' containment reference feature.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public static final EReference DOCUMENT_ROOT__DATA_OBJECT = eINSTANCE.getDocumentRoot_DataObject();
+
+ /**
+ * The meta object literal for the '<em><b>Type</b></em>' containment reference feature.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public static final EReference DOCUMENT_ROOT__TYPE = eINSTANCE.getDocumentRoot_Type();
+
+ /**
+ * The meta object literal for the '<em><b>Types</b></em>' containment reference feature.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public static final EReference DOCUMENT_ROOT__TYPES = eINSTANCE.getDocumentRoot_Types();
+
+ /**
+ * The meta object literal for the '<em><b>Ref</b></em>' attribute feature.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public static final EAttribute DOCUMENT_ROOT__REF = eINSTANCE.getDocumentRoot_Ref();
+
+ /**
+ * The meta object literal for the '{@link org.apache.tuscany.sdo.model.impl.ModelsTypeImpl <em>Models Type</em>}' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see org.apache.tuscany.sdo.model.impl.ModelsTypeImpl
+ * @see org.apache.tuscany.sdo.model.impl.ModelPackageImpl#getModelsType()
+ * @generated
+ */
+ public static final EClass MODELS_TYPE = eINSTANCE.getModelsType();
+
+ /**
+ * The meta object literal for the '<em><b>Any</b></em>' attribute list feature.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public static final EAttribute MODELS_TYPE__ANY = eINSTANCE.getModelsType_Any();
+
+ /**
+ * The meta object literal for the '{@link org.apache.tuscany.sdo.model.impl.PropertyImpl <em>Property</em>}' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see org.apache.tuscany.sdo.model.impl.PropertyImpl
+ * @see org.apache.tuscany.sdo.model.impl.ModelPackageImpl#getProperty()
+ * @generated
+ */
+ public static final EClass PROPERTY = eINSTANCE.getProperty();
+
+ /**
+ * The meta object literal for the '<em><b>Alias Name</b></em>' attribute list feature.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public static final EAttribute PROPERTY__ALIAS_NAME = eINSTANCE.getProperty_AliasName();
+
+ /**
+ * The meta object literal for the '<em><b>Any</b></em>' attribute list feature.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public static final EAttribute PROPERTY__ANY = eINSTANCE.getProperty_Any();
+
+ /**
+ * The meta object literal for the '<em><b>Containment</b></em>' attribute feature.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public static final EAttribute PROPERTY__CONTAINMENT = eINSTANCE.getProperty_Containment();
+
+ /**
+ * The meta object literal for the '<em><b>Default</b></em>' attribute feature.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public static final EAttribute PROPERTY__DEFAULT = eINSTANCE.getProperty_Default();
+
+ /**
+ * The meta object literal for the '<em><b>Many</b></em>' attribute feature.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public static final EAttribute PROPERTY__MANY = eINSTANCE.getProperty_Many();
+
+ /**
+ * The meta object literal for the '<em><b>Name</b></em>' attribute feature.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public static final EAttribute PROPERTY__NAME = eINSTANCE.getProperty_Name();
+
+ /**
+ * The meta object literal for the '<em><b>Opposite</b></em>' reference feature.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public static final EReference PROPERTY__OPPOSITE = eINSTANCE.getProperty_Opposite();
+
+ /**
+ * The meta object literal for the '<em><b>Read Only</b></em>' attribute feature.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public static final EAttribute PROPERTY__READ_ONLY = eINSTANCE.getProperty_ReadOnly();
+
+ /**
+ * The meta object literal for the '<em><b>Type</b></em>' reference feature.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public static final EReference PROPERTY__TYPE = eINSTANCE.getProperty_Type();
+
+ /**
+ * The meta object literal for the '<em><b>Any Attribute</b></em>' attribute list feature.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public static final EAttribute PROPERTY__ANY_ATTRIBUTE = eINSTANCE.getProperty_AnyAttribute();
+
+ /**
+ * The meta object literal for the '{@link org.apache.tuscany.sdo.model.impl.TextTypeImpl <em>Text Type</em>}' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see org.apache.tuscany.sdo.model.impl.TextTypeImpl
+ * @see org.apache.tuscany.sdo.model.impl.ModelPackageImpl#getTextType()
+ * @generated
+ */
+ public static final EClass TEXT_TYPE = eINSTANCE.getTextType();
+
+ /**
+ * The meta object literal for the '<em><b>Text</b></em>' attribute list feature.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public static final EAttribute TEXT_TYPE__TEXT = eINSTANCE.getTextType_Text();
+
+ /**
+ * The meta object literal for the '{@link org.apache.tuscany.sdo.model.impl.TypeImpl <em>Type</em>}' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see org.apache.tuscany.sdo.model.impl.TypeImpl
+ * @see org.apache.tuscany.sdo.model.impl.ModelPackageImpl#getType()
+ * @generated
+ */
+ public static final EClass TYPE = eINSTANCE.getType();
+
+ /**
+ * The meta object literal for the '<em><b>Base Type</b></em>' reference list feature.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public static final EReference TYPE__BASE_TYPE = eINSTANCE.getType_BaseType();
+
+ /**
+ * The meta object literal for the '<em><b>Property</b></em>' containment reference list feature.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public static final EReference TYPE__PROPERTY = eINSTANCE.getType_Property();
+
+ /**
+ * The meta object literal for the '<em><b>Alias Name</b></em>' attribute list feature.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public static final EAttribute TYPE__ALIAS_NAME = eINSTANCE.getType_AliasName();
+
+ /**
+ * The meta object literal for the '<em><b>Any</b></em>' attribute list feature.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public static final EAttribute TYPE__ANY = eINSTANCE.getType_Any();
+
+ /**
+ * The meta object literal for the '<em><b>Abstract</b></em>' attribute feature.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public static final EAttribute TYPE__ABSTRACT = eINSTANCE.getType_Abstract();
+
+ /**
+ * The meta object literal for the '<em><b>Data Type</b></em>' attribute feature.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public static final EAttribute TYPE__DATA_TYPE = eINSTANCE.getType_DataType();
+
+ /**
+ * The meta object literal for the '<em><b>Name</b></em>' attribute feature.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public static final EAttribute TYPE__NAME = eINSTANCE.getType_Name();
+
+ /**
+ * The meta object literal for the '<em><b>Open</b></em>' attribute feature.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public static final EAttribute TYPE__OPEN = eINSTANCE.getType_Open();
+
+ /**
+ * The meta object literal for the '<em><b>Sequenced</b></em>' attribute feature.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public static final EAttribute TYPE__SEQUENCED = eINSTANCE.getType_Sequenced();
+
+ /**
+ * The meta object literal for the '<em><b>Uri</b></em>' attribute feature.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public static final EAttribute TYPE__URI = eINSTANCE.getType_Uri();
+
+ /**
+ * The meta object literal for the '<em><b>Any Attribute</b></em>' attribute list feature.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public static final EAttribute TYPE__ANY_ATTRIBUTE = eINSTANCE.getType_AnyAttribute();
+
+ /**
+ * The meta object literal for the '{@link org.apache.tuscany.sdo.model.impl.TypesImpl <em>Types</em>}' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see org.apache.tuscany.sdo.model.impl.TypesImpl
+ * @see org.apache.tuscany.sdo.model.impl.ModelPackageImpl#getTypes()
+ * @generated
+ */
+ public static final EClass TYPES = eINSTANCE.getTypes();
+
+ /**
+ * The meta object literal for the '<em><b>Type</b></em>' containment reference list feature.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public static final EReference TYPES__TYPE = eINSTANCE.getTypes_Type();
+
+ /**
+ * The meta object literal for the '{@link org.apache.tuscany.sdo.model.impl.XSDTypeImpl <em>XSD Type</em>}' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see org.apache.tuscany.sdo.model.impl.XSDTypeImpl
+ * @see org.apache.tuscany.sdo.model.impl.ModelPackageImpl#getXSDType()
+ * @generated
+ */
+ public static final EClass XSD_TYPE = eINSTANCE.getXSDType();
+
+ /**
+ * The meta object literal for the '<em><b>Any</b></em>' attribute list feature.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public static final EAttribute XSD_TYPE__ANY = eINSTANCE.getXSDType_Any();
+
+ /**
+ * The meta object literal for the '<em>Boolean</em>' data type.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see org.apache.tuscany.sdo.model.impl.ModelPackageImpl#getBoolean()
+ * @generated
+ */
+ public static final EDataType BOOLEAN = eINSTANCE.getBoolean();
+
+ /**
+ * The meta object literal for the '<em>Boolean Object</em>' data type.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see java.lang.Boolean
+ * @see org.apache.tuscany.sdo.model.impl.ModelPackageImpl#getBooleanObject()
+ * @generated
+ */
+ public static final EDataType BOOLEAN_OBJECT = eINSTANCE.getBooleanObject();
+
+ /**
+ * The meta object literal for the '<em>Byte</em>' data type.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see org.apache.tuscany.sdo.model.impl.ModelPackageImpl#getByte()
+ * @generated
+ */
+ public static final EDataType BYTE = eINSTANCE.getByte();
+
+ /**
+ * The meta object literal for the '<em>Byte Object</em>' data type.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see java.lang.Byte
+ * @see org.apache.tuscany.sdo.model.impl.ModelPackageImpl#getByteObject()
+ * @generated
+ */
+ public static final EDataType BYTE_OBJECT = eINSTANCE.getByteObject();
+
+ /**
+ * The meta object literal for the '<em>Bytes</em>' data type.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see org.apache.tuscany.sdo.model.impl.ModelPackageImpl#getBytes()
+ * @generated
+ */
+ public static final EDataType BYTES = eINSTANCE.getBytes();
+
+ /**
+ * The meta object literal for the '<em>Character</em>' data type.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see org.apache.tuscany.sdo.model.impl.ModelPackageImpl#getCharacter()
+ * @generated
+ */
+ public static final EDataType CHARACTER = eINSTANCE.getCharacter();
+
+ /**
+ * The meta object literal for the '<em>Character Object</em>' data type.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see java.lang.Character
+ * @see org.apache.tuscany.sdo.model.impl.ModelPackageImpl#getCharacterObject()
+ * @generated
+ */
+ public static final EDataType CHARACTER_OBJECT = eINSTANCE.getCharacterObject();
+
+ /**
+ * The meta object literal for the '<em>Date</em>' data type.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see java.util.Date
+ * @see org.apache.tuscany.sdo.model.impl.ModelPackageImpl#getDate()
+ * @generated
+ */
+ public static final EDataType DATE = eINSTANCE.getDate();
+
+ /**
+ * The meta object literal for the '<em>Date Time</em>' data type.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see java.lang.String
+ * @see org.apache.tuscany.sdo.model.impl.ModelPackageImpl#getDateTime()
+ * @generated
+ */
+ public static final EDataType DATE_TIME = eINSTANCE.getDateTime();
+
+ /**
+ * The meta object literal for the '<em>Day</em>' data type.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see java.lang.String
+ * @see org.apache.tuscany.sdo.model.impl.ModelPackageImpl#getDay()
+ * @generated
+ */
+ public static final EDataType DAY = eINSTANCE.getDay();
+
+ /**
+ * The meta object literal for the '<em>Decimal</em>' data type.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see java.math.BigDecimal
+ * @see org.apache.tuscany.sdo.model.impl.ModelPackageImpl#getDecimal()
+ * @generated
+ */
+ public static final EDataType DECIMAL = eINSTANCE.getDecimal();
+
+ /**
+ * The meta object literal for the '<em>Double</em>' data type.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see org.apache.tuscany.sdo.model.impl.ModelPackageImpl#getDouble()
+ * @generated
+ */
+ public static final EDataType DOUBLE = eINSTANCE.getDouble();
+
+ /**
+ * The meta object literal for the '<em>Double Object</em>' data type.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see java.lang.Double
+ * @see org.apache.tuscany.sdo.model.impl.ModelPackageImpl#getDoubleObject()
+ * @generated
+ */
+ public static final EDataType DOUBLE_OBJECT = eINSTANCE.getDoubleObject();
+
+ /**
+ * The meta object literal for the '<em>Duration</em>' data type.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see java.lang.String
+ * @see org.apache.tuscany.sdo.model.impl.ModelPackageImpl#getDuration()
+ * @generated
+ */
+ public static final EDataType DURATION = eINSTANCE.getDuration();
+
+ /**
+ * The meta object literal for the '<em>Float</em>' data type.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see org.apache.tuscany.sdo.model.impl.ModelPackageImpl#getFloat()
+ * @generated
+ */
+ public static final EDataType FLOAT = eINSTANCE.getFloat();
+
+ /**
+ * The meta object literal for the '<em>Float Object</em>' data type.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see java.lang.Float
+ * @see org.apache.tuscany.sdo.model.impl.ModelPackageImpl#getFloatObject()
+ * @generated
+ */
+ public static final EDataType FLOAT_OBJECT = eINSTANCE.getFloatObject();
+
+ /**
+ * The meta object literal for the '<em>Int</em>' data type.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see org.apache.tuscany.sdo.model.impl.ModelPackageImpl#getInt()
+ * @generated
+ */
+ public static final EDataType INT = eINSTANCE.getInt();
+
+ /**
+ * The meta object literal for the '<em>Integer</em>' data type.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see java.math.BigInteger
+ * @see org.apache.tuscany.sdo.model.impl.ModelPackageImpl#getInteger()
+ * @generated
+ */
+ public static final EDataType INTEGER = eINSTANCE.getInteger();
+
+ /**
+ * The meta object literal for the '<em>Int Object</em>' data type.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see java.lang.Integer
+ * @see org.apache.tuscany.sdo.model.impl.ModelPackageImpl#getIntObject()
+ * @generated
+ */
+ public static final EDataType INT_OBJECT = eINSTANCE.getIntObject();
+
+ /**
+ * The meta object literal for the '<em>Long</em>' data type.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see org.apache.tuscany.sdo.model.impl.ModelPackageImpl#getLong()
+ * @generated
+ */
+ public static final EDataType LONG = eINSTANCE.getLong();
+
+ /**
+ * The meta object literal for the '<em>Long Object</em>' data type.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see java.lang.Long
+ * @see org.apache.tuscany.sdo.model.impl.ModelPackageImpl#getLongObject()
+ * @generated
+ */
+ public static final EDataType LONG_OBJECT = eINSTANCE.getLongObject();
+
+ /**
+ * The meta object literal for the '<em>Month</em>' data type.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see java.lang.String
+ * @see org.apache.tuscany.sdo.model.impl.ModelPackageImpl#getMonth()
+ * @generated
+ */
+ public static final EDataType MONTH = eINSTANCE.getMonth();
+
+ /**
+ * The meta object literal for the '<em>Month Day</em>' data type.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see java.lang.String
+ * @see org.apache.tuscany.sdo.model.impl.ModelPackageImpl#getMonthDay()
+ * @generated
+ */
+ public static final EDataType MONTH_DAY = eINSTANCE.getMonthDay();
+
+ /**
+ * The meta object literal for the '<em>Object</em>' data type.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see java.lang.Object
+ * @see org.apache.tuscany.sdo.model.impl.ModelPackageImpl#getObject()
+ * @generated
+ */
+ public static final EDataType OBJECT = eINSTANCE.getObject();
+
+ /**
+ * The meta object literal for the '<em>Short</em>' data type.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see org.apache.tuscany.sdo.model.impl.ModelPackageImpl#getShort()
+ * @generated
+ */
+ public static final EDataType SHORT = eINSTANCE.getShort();
+
+ /**
+ * The meta object literal for the '<em>Short Object</em>' data type.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see java.lang.Short
+ * @see org.apache.tuscany.sdo.model.impl.ModelPackageImpl#getShortObject()
+ * @generated
+ */
+ public static final EDataType SHORT_OBJECT = eINSTANCE.getShortObject();
+
+ /**
+ * The meta object literal for the '<em>String</em>' data type.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see java.lang.String
+ * @see org.apache.tuscany.sdo.model.impl.ModelPackageImpl#getString()
+ * @generated
+ */
+ public static final EDataType STRING = eINSTANCE.getString();
+
+ /**
+ * The meta object literal for the '<em>Strings</em>' data type.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see java.util.List
+ * @see org.apache.tuscany.sdo.model.impl.ModelPackageImpl#getStrings()
+ * @generated
+ */
+ public static final EDataType STRINGS = eINSTANCE.getStrings();
+
+ /**
+ * The meta object literal for the '<em>Time</em>' data type.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see java.lang.String
+ * @see org.apache.tuscany.sdo.model.impl.ModelPackageImpl#getTime()
+ * @generated
+ */
+ public static final EDataType TIME = eINSTANCE.getTime();
+
+ /**
+ * The meta object literal for the '<em>URI</em>' data type.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see java.lang.String
+ * @see org.apache.tuscany.sdo.model.impl.ModelPackageImpl#getURI()
+ * @generated
+ */
+ public static final EDataType URI = eINSTANCE.getURI();
+
+ /**
+ * The meta object literal for the '<em>Year</em>' data type.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see java.lang.String
+ * @see org.apache.tuscany.sdo.model.impl.ModelPackageImpl#getYear()
+ * @generated
+ */
+ public static final EDataType YEAR = eINSTANCE.getYear();
+
+ /**
+ * The meta object literal for the '<em>Year Month</em>' data type.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see java.lang.String
+ * @see org.apache.tuscany.sdo.model.impl.ModelPackageImpl#getYearMonth()
+ * @generated
+ */
+ public static final EDataType YEAR_MONTH = eINSTANCE.getYearMonth();
+
+ /**
+ * The meta object literal for the '<em>Year Month Day</em>' data type.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see java.lang.String
+ * @see org.apache.tuscany.sdo.model.impl.ModelPackageImpl#getYearMonthDay()
+ * @generated
+ */
+ public static final EDataType YEAR_MONTH_DAY = eINSTANCE.getYearMonthDay();
+
+ }
+
+} //ModelPackageImpl
diff --git a/branches/sdo-java-M2/sdo/impl/src/main/java/org/apache/tuscany/sdo/model/impl/ModelsTypeImpl.java b/branches/sdo-java-M2/sdo/impl/src/main/java/org/apache/tuscany/sdo/model/impl/ModelsTypeImpl.java
new file mode 100644
index 0000000000..4c0f107f1f
--- /dev/null
+++ b/branches/sdo-java-M2/sdo/impl/src/main/java/org/apache/tuscany/sdo/model/impl/ModelsTypeImpl.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.model.impl;
+
+import commonj.sdo.Sequence;
+
+
+import org.apache.tuscany.sdo.impl.DataObjectImpl;
+import org.apache.tuscany.sdo.model.ModelsType;
+
+import org.apache.tuscany.sdo.util.BasicSequence;
+
+import org.eclipse.emf.common.notify.NotificationChain;
+
+import org.eclipse.emf.ecore.EClass;
+import org.eclipse.emf.ecore.InternalEObject;
+
+import org.eclipse.emf.ecore.util.BasicFeatureMap;
+import org.eclipse.emf.ecore.util.FeatureMap;
+import org.eclipse.emf.ecore.util.InternalEList;
+
+/**
+ * <!-- begin-user-doc -->
+ * An implementation of the model object '<em><b>Models Type</b></em>'.
+ * <!-- end-user-doc -->
+ * <p>
+ * The following features are implemented:
+ * <ul>
+ * <li>{@link org.apache.tuscany.sdo.model.impl.ModelsTypeImpl#getAny <em>Any</em>}</li>
+ * </ul>
+ * </p>
+ *
+ * @generated
+ */
+public class ModelsTypeImpl extends DataObjectImpl implements ModelsType
+{
+ /**
+ * The cached value of the '{@link #getAny() <em>Any</em>}' attribute list.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #getAny()
+ * @generated
+ * @ordered
+ */
+ protected BasicSequence any = null;
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ protected ModelsTypeImpl()
+ {
+ super();
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ protected EClass eStaticClass()
+ {
+ return ModelPackageImpl.Literals.MODELS_TYPE;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public Sequence getAny()
+ {
+ if (any == null)
+ {
+ any = new BasicSequence(new BasicFeatureMap(this, ModelPackageImpl.MODELS_TYPE__ANY));
+ }
+ return any;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public NotificationChain eInverseRemove(InternalEObject otherEnd, int featureID, NotificationChain msgs)
+ {
+ switch (featureID)
+ {
+ case ModelPackageImpl.MODELS_TYPE__ANY:
+ return ((InternalEList)((FeatureMap.Internal.Wrapper)getAny()).featureMap()).basicRemove(otherEnd, msgs);
+ }
+ return super.eInverseRemove(otherEnd, featureID, msgs);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public Object eGet(int featureID, boolean resolve, boolean coreType)
+ {
+ switch (featureID)
+ {
+ case ModelPackageImpl.MODELS_TYPE__ANY:
+ if (coreType) return ((FeatureMap.Internal.Wrapper)getAny()).featureMap();
+ return getAny();
+ }
+ return super.eGet(featureID, resolve, coreType);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public void eSet(int featureID, Object newValue)
+ {
+ switch (featureID)
+ {
+ case ModelPackageImpl.MODELS_TYPE__ANY:
+ ((FeatureMap.Internal)((FeatureMap.Internal.Wrapper)getAny()).featureMap()).set(newValue);
+ return;
+ }
+ super.eSet(featureID, newValue);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public void eUnset(int featureID)
+ {
+ switch (featureID)
+ {
+ case ModelPackageImpl.MODELS_TYPE__ANY:
+ ((FeatureMap.Internal.Wrapper)getAny()).featureMap().clear();
+ return;
+ }
+ super.eUnset(featureID);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public boolean eIsSet(int featureID)
+ {
+ switch (featureID)
+ {
+ case ModelPackageImpl.MODELS_TYPE__ANY:
+ return any != null && !any.featureMap().isEmpty();
+ }
+ return super.eIsSet(featureID);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public String toString()
+ {
+ if (eIsProxy()) return super.toString();
+
+ StringBuffer result = new StringBuffer(super.toString());
+ result.append(" (any: ");
+ result.append(any);
+ result.append(')');
+ return result.toString();
+ }
+
+} //ModelsTypeImpl
diff --git a/branches/sdo-java-M2/sdo/impl/src/main/java/org/apache/tuscany/sdo/model/impl/PropertyImpl.java b/branches/sdo-java-M2/sdo/impl/src/main/java/org/apache/tuscany/sdo/model/impl/PropertyImpl.java
new file mode 100644
index 0000000000..c7936d28f0
--- /dev/null
+++ b/branches/sdo-java-M2/sdo/impl/src/main/java/org/apache/tuscany/sdo/model/impl/PropertyImpl.java
@@ -0,0 +1,804 @@
+/**
+ *
+ * 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.model.impl;
+
+import commonj.sdo.Sequence;
+
+import java.util.Collection;
+import java.util.List;
+
+
+import org.apache.tuscany.sdo.impl.DataObjectImpl;
+import org.apache.tuscany.sdo.model.Property;
+import org.apache.tuscany.sdo.model.Type;
+
+import org.apache.tuscany.sdo.util.BasicSequence;
+
+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.EObject;
+import org.eclipse.emf.ecore.InternalEObject;
+
+import org.eclipse.emf.ecore.impl.ENotificationImpl;
+
+import org.eclipse.emf.ecore.util.BasicFeatureMap;
+import org.eclipse.emf.ecore.util.EDataTypeEList;
+import org.eclipse.emf.ecore.util.FeatureMap;
+import org.eclipse.emf.ecore.util.InternalEList;
+
+/**
+ * <!-- begin-user-doc -->
+ * An implementation of the model object '<em><b>Property</b></em>'.
+ * <!-- end-user-doc -->
+ * <p>
+ * The following features are implemented:
+ * <ul>
+ * <li>{@link org.apache.tuscany.sdo.model.impl.PropertyImpl#getAliasName <em>Alias Name</em>}</li>
+ * <li>{@link org.apache.tuscany.sdo.model.impl.PropertyImpl#getAny <em>Any</em>}</li>
+ * <li>{@link org.apache.tuscany.sdo.model.impl.PropertyImpl#isContainment <em>Containment</em>}</li>
+ * <li>{@link org.apache.tuscany.sdo.model.impl.PropertyImpl#getDefault <em>Default</em>}</li>
+ * <li>{@link org.apache.tuscany.sdo.model.impl.PropertyImpl#isMany <em>Many</em>}</li>
+ * <li>{@link org.apache.tuscany.sdo.model.impl.PropertyImpl#getName <em>Name</em>}</li>
+ * <li>{@link org.apache.tuscany.sdo.model.impl.PropertyImpl#getOpposite <em>Opposite</em>}</li>
+ * <li>{@link org.apache.tuscany.sdo.model.impl.PropertyImpl#isReadOnly <em>Read Only</em>}</li>
+ * <li>{@link org.apache.tuscany.sdo.model.impl.PropertyImpl#getType <em>Type</em>}</li>
+ * <li>{@link org.apache.tuscany.sdo.model.impl.PropertyImpl#getAnyAttribute <em>Any Attribute</em>}</li>
+ * </ul>
+ * </p>
+ *
+ * Note: The getDefault and getOpposite methods had to be renamed to avoid
+ * conflict with the commonj.sdo.Property getDefault and getOpposite
+ * methods in classes that implement both. Eventually, the two interfaces
+ * should be brought in-line with one another -- James Snell
+ *
+ * @generated
+ */
+public class PropertyImpl extends DataObjectImpl implements Property
+{
+ /**
+ * The cached value of the '{@link #getAliasName() <em>Alias Name</em>}' attribute list.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #getAliasName()
+ * @generated
+ * @ordered
+ */
+ protected EList aliasName = null;
+
+ /**
+ * The cached value of the '{@link #getAny() <em>Any</em>}' attribute list.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #getAny()
+ * @generated
+ * @ordered
+ */
+ protected BasicSequence any = null;
+
+ /**
+ * The default value of the '{@link #isContainment() <em>Containment</em>}' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #isContainment()
+ * @generated
+ * @ordered
+ */
+ protected static final boolean CONTAINMENT_EDEFAULT = false;
+
+ /**
+ * The cached value of the '{@link #isContainment() <em>Containment</em>}' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #isContainment()
+ * @generated
+ * @ordered
+ */
+ protected boolean containment = CONTAINMENT_EDEFAULT;
+
+ /**
+ * This is true if the Containment attribute has been set.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ protected boolean containmentESet = false;
+
+ /**
+ * The default value of the '{@link #getDefault() <em>Default</em>}' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #getDefault()
+ * @generated
+ * @ordered
+ */
+ protected static final String DEFAULT_EDEFAULT = null;
+
+ /**
+ * The cached value of the '{@link #getDefault() <em>Default</em>}' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #getDefault()
+ * @generated
+ * @ordered
+ */
+ protected String default_ = DEFAULT_EDEFAULT;
+
+ /**
+ * The default value of the '{@link #isMany() <em>Many</em>}' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #isMany()
+ * @generated
+ * @ordered
+ */
+ protected static final boolean MANY_EDEFAULT = false;
+
+ /**
+ * The cached value of the '{@link #isMany() <em>Many</em>}' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #isMany()
+ * @generated
+ * @ordered
+ */
+ protected boolean many = MANY_EDEFAULT;
+
+ /**
+ * This is true if the Many attribute has been set.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ protected boolean manyESet = false;
+
+ /**
+ * The default value of the '{@link #getName() <em>Name</em>}' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #getName()
+ * @generated
+ * @ordered
+ */
+ protected static final String NAME_EDEFAULT = null;
+
+ /**
+ * The cached value of the '{@link #getName() <em>Name</em>}' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #getName()
+ * @generated
+ * @ordered
+ */
+ protected String name = NAME_EDEFAULT;
+
+ /**
+ * The cached value of the '{@link #getOpposite() <em>Opposite</em>}' reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #getOpposite()
+ * @generated
+ * @ordered
+ */
+ protected Property opposite = null;
+
+ /**
+ * The default value of the '{@link #isReadOnly() <em>Read Only</em>}' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #isReadOnly()
+ * @generated
+ * @ordered
+ */
+ protected static final boolean READ_ONLY_EDEFAULT = false;
+
+ /**
+ * The cached value of the '{@link #isReadOnly() <em>Read Only</em>}' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #isReadOnly()
+ * @generated
+ * @ordered
+ */
+ protected boolean readOnly = READ_ONLY_EDEFAULT;
+
+ /**
+ * This is true if the Read Only attribute has been set.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ protected boolean readOnlyESet = false;
+
+ /**
+ * The cached value of the '{@link #getType() <em>Type</em>}' reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #getType()
+ * @generated
+ * @ordered
+ */
+ protected Type type = null;
+
+ /**
+ * The cached value of the '{@link #getAnyAttribute() <em>Any Attribute</em>}' attribute list.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #getAnyAttribute()
+ * @generated
+ * @ordered
+ */
+ protected BasicSequence anyAttribute = null;
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ protected PropertyImpl()
+ {
+ super();
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ protected EClass eStaticClass()
+ {
+ return ModelPackageImpl.Literals.PROPERTY;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public List getAliasName()
+ {
+ if (aliasName == null)
+ {
+ aliasName = new EDataTypeEList(String.class, this, ModelPackageImpl.PROPERTY__ALIAS_NAME);
+ }
+ return aliasName;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public Sequence getAny()
+ {
+ if (any == null)
+ {
+ any = new BasicSequence(new BasicFeatureMap(this, ModelPackageImpl.PROPERTY__ANY));
+ }
+ return any;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public boolean isContainment()
+ {
+ return containment;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public void setContainment(boolean newContainment)
+ {
+ boolean oldContainment = containment;
+ containment = newContainment;
+ boolean oldContainmentESet = containmentESet;
+ containmentESet = true;
+ if (eNotificationRequired())
+ eNotify(new ENotificationImpl(this, Notification.SET, ModelPackageImpl.PROPERTY__CONTAINMENT, oldContainment, containment, !oldContainmentESet));
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public void unsetContainment()
+ {
+ boolean oldContainment = containment;
+ boolean oldContainmentESet = containmentESet;
+ containment = CONTAINMENT_EDEFAULT;
+ containmentESet = false;
+ if (eNotificationRequired())
+ eNotify(new ENotificationImpl(this, Notification.UNSET, ModelPackageImpl.PROPERTY__CONTAINMENT, oldContainment, CONTAINMENT_EDEFAULT, oldContainmentESet));
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public boolean isSetContainment()
+ {
+ return containmentESet;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated NOT
+ */
+ public String getDefault_()
+ {
+ return default_;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public void setDefault_(String newDefault)
+ {
+ String oldDefault = default_;
+ default_ = newDefault;
+ if (eNotificationRequired())
+ eNotify(new ENotificationImpl(this, Notification.SET, ModelPackageImpl.PROPERTY__DEFAULT, oldDefault, default_));
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public boolean isMany()
+ {
+ return many;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public void setMany(boolean newMany)
+ {
+ boolean oldMany = many;
+ many = newMany;
+ boolean oldManyESet = manyESet;
+ manyESet = true;
+ if (eNotificationRequired())
+ eNotify(new ENotificationImpl(this, Notification.SET, ModelPackageImpl.PROPERTY__MANY, oldMany, many, !oldManyESet));
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public void unsetMany()
+ {
+ boolean oldMany = many;
+ boolean oldManyESet = manyESet;
+ many = MANY_EDEFAULT;
+ manyESet = false;
+ if (eNotificationRequired())
+ eNotify(new ENotificationImpl(this, Notification.UNSET, ModelPackageImpl.PROPERTY__MANY, oldMany, MANY_EDEFAULT, oldManyESet));
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public boolean isSetMany()
+ {
+ return manyESet;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public String getName()
+ {
+ return name;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public void setName(String newName)
+ {
+ String oldName = name;
+ name = newName;
+ if (eNotificationRequired())
+ eNotify(new ENotificationImpl(this, Notification.SET, ModelPackageImpl.PROPERTY__NAME, oldName, name));
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated NOT
+ */
+ public Property getOpposite_()
+ {
+ if (opposite != null && ((EObject)opposite).eIsProxy())
+ {
+ InternalEObject oldOpposite = (InternalEObject)opposite;
+ opposite = (Property)eResolveProxy(oldOpposite);
+ if (opposite != oldOpposite)
+ {
+ if (eNotificationRequired())
+ eNotify(new ENotificationImpl(this, Notification.RESOLVE, ModelPackageImpl.PROPERTY__OPPOSITE, oldOpposite, opposite));
+ }
+ }
+ return opposite;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public Property basicGetOpposite()
+ {
+ return opposite;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated NOT
+ */
+ public void setOpposite_(Property newOpposite)
+ {
+ Property oldOpposite = opposite;
+ opposite = newOpposite;
+ if (eNotificationRequired())
+ eNotify(new ENotificationImpl(this, Notification.SET, ModelPackageImpl.PROPERTY__OPPOSITE, oldOpposite, opposite));
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public boolean isReadOnly()
+ {
+ return readOnly;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public void setReadOnly(boolean newReadOnly)
+ {
+ boolean oldReadOnly = readOnly;
+ readOnly = newReadOnly;
+ boolean oldReadOnlyESet = readOnlyESet;
+ readOnlyESet = true;
+ if (eNotificationRequired())
+ eNotify(new ENotificationImpl(this, Notification.SET, ModelPackageImpl.PROPERTY__READ_ONLY, oldReadOnly, readOnly, !oldReadOnlyESet));
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public void unsetReadOnly()
+ {
+ boolean oldReadOnly = readOnly;
+ boolean oldReadOnlyESet = readOnlyESet;
+ readOnly = READ_ONLY_EDEFAULT;
+ readOnlyESet = false;
+ if (eNotificationRequired())
+ eNotify(new ENotificationImpl(this, Notification.UNSET, ModelPackageImpl.PROPERTY__READ_ONLY, oldReadOnly, READ_ONLY_EDEFAULT, oldReadOnlyESet));
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public boolean isSetReadOnly()
+ {
+ return readOnlyESet;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public Type getType_()
+ {
+ if (type != null && ((EObject)type).eIsProxy())
+ {
+ InternalEObject oldType = (InternalEObject)type;
+ type = (Type)eResolveProxy(oldType);
+ if (type != oldType)
+ {
+ if (eNotificationRequired())
+ eNotify(new ENotificationImpl(this, Notification.RESOLVE, ModelPackageImpl.PROPERTY__TYPE, oldType, type));
+ }
+ }
+ return type;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public Type basicGetType()
+ {
+ return type;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public void setType(Type newType)
+ {
+ Type oldType = type;
+ type = newType;
+ if (eNotificationRequired())
+ eNotify(new ENotificationImpl(this, Notification.SET, ModelPackageImpl.PROPERTY__TYPE, oldType, type));
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public Sequence getAnyAttribute()
+ {
+ if (anyAttribute == null)
+ {
+ anyAttribute = new BasicSequence(new BasicFeatureMap(this, ModelPackageImpl.PROPERTY__ANY_ATTRIBUTE));
+ }
+ return anyAttribute;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public NotificationChain eInverseRemove(InternalEObject otherEnd, int featureID, NotificationChain msgs)
+ {
+ switch (featureID)
+ {
+ case ModelPackageImpl.PROPERTY__ANY:
+ return ((InternalEList)((FeatureMap.Internal.Wrapper)getAny()).featureMap()).basicRemove(otherEnd, msgs);
+ case ModelPackageImpl.PROPERTY__ANY_ATTRIBUTE:
+ return ((InternalEList)((FeatureMap.Internal.Wrapper)getAnyAttribute()).featureMap()).basicRemove(otherEnd, msgs);
+ }
+ return super.eInverseRemove(otherEnd, featureID, msgs);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public Object eGet(int featureID, boolean resolve, boolean coreType)
+ {
+ switch (featureID)
+ {
+ case ModelPackageImpl.PROPERTY__ALIAS_NAME:
+ return getAliasName();
+ case ModelPackageImpl.PROPERTY__ANY:
+ if (coreType) return ((FeatureMap.Internal.Wrapper)getAny()).featureMap();
+ return getAny();
+ case ModelPackageImpl.PROPERTY__CONTAINMENT:
+ return isContainment() ? Boolean.TRUE : Boolean.FALSE;
+ case ModelPackageImpl.PROPERTY__DEFAULT:
+ return getDefault_();
+ case ModelPackageImpl.PROPERTY__MANY:
+ return isMany() ? Boolean.TRUE : Boolean.FALSE;
+ case ModelPackageImpl.PROPERTY__NAME:
+ return getName();
+ case ModelPackageImpl.PROPERTY__OPPOSITE:
+ if (resolve) return getOpposite_();
+ return basicGetOpposite();
+ case ModelPackageImpl.PROPERTY__READ_ONLY:
+ return isReadOnly() ? Boolean.TRUE : Boolean.FALSE;
+ case ModelPackageImpl.PROPERTY__TYPE:
+ if (resolve) return getType_();
+ return basicGetType();
+ case ModelPackageImpl.PROPERTY__ANY_ATTRIBUTE:
+ if (coreType) return ((FeatureMap.Internal.Wrapper)getAnyAttribute()).featureMap();
+ return getAnyAttribute();
+ }
+ return super.eGet(featureID, resolve, coreType);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public void eSet(int featureID, Object newValue)
+ {
+ switch (featureID)
+ {
+ case ModelPackageImpl.PROPERTY__ALIAS_NAME:
+ getAliasName().clear();
+ getAliasName().addAll((Collection)newValue);
+ return;
+ case ModelPackageImpl.PROPERTY__ANY:
+ ((FeatureMap.Internal)((FeatureMap.Internal.Wrapper)getAny()).featureMap()).set(newValue);
+ return;
+ case ModelPackageImpl.PROPERTY__CONTAINMENT:
+ setContainment(((Boolean)newValue).booleanValue());
+ return;
+ case ModelPackageImpl.PROPERTY__DEFAULT:
+ setDefault_((String)newValue);
+ return;
+ case ModelPackageImpl.PROPERTY__MANY:
+ setMany(((Boolean)newValue).booleanValue());
+ return;
+ case ModelPackageImpl.PROPERTY__NAME:
+ setName((String)newValue);
+ return;
+ case ModelPackageImpl.PROPERTY__OPPOSITE:
+ setOpposite_((Property)newValue);
+ return;
+ case ModelPackageImpl.PROPERTY__READ_ONLY:
+ setReadOnly(((Boolean)newValue).booleanValue());
+ return;
+ case ModelPackageImpl.PROPERTY__TYPE:
+ setType((Type)newValue);
+ return;
+ case ModelPackageImpl.PROPERTY__ANY_ATTRIBUTE:
+ ((FeatureMap.Internal)((FeatureMap.Internal.Wrapper)getAnyAttribute()).featureMap()).set(newValue);
+ return;
+ }
+ super.eSet(featureID, newValue);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public void eUnset(int featureID)
+ {
+ switch (featureID)
+ {
+ case ModelPackageImpl.PROPERTY__ALIAS_NAME:
+ getAliasName().clear();
+ return;
+ case ModelPackageImpl.PROPERTY__ANY:
+ ((FeatureMap.Internal.Wrapper)getAny()).featureMap().clear();
+ return;
+ case ModelPackageImpl.PROPERTY__CONTAINMENT:
+ unsetContainment();
+ return;
+ case ModelPackageImpl.PROPERTY__DEFAULT:
+ setDefault_(DEFAULT_EDEFAULT);
+ return;
+ case ModelPackageImpl.PROPERTY__MANY:
+ unsetMany();
+ return;
+ case ModelPackageImpl.PROPERTY__NAME:
+ setName(NAME_EDEFAULT);
+ return;
+ case ModelPackageImpl.PROPERTY__OPPOSITE:
+ setOpposite_((Property)null);
+ return;
+ case ModelPackageImpl.PROPERTY__READ_ONLY:
+ unsetReadOnly();
+ return;
+ case ModelPackageImpl.PROPERTY__TYPE:
+ setType((Type)null);
+ return;
+ case ModelPackageImpl.PROPERTY__ANY_ATTRIBUTE:
+ ((FeatureMap.Internal.Wrapper)getAnyAttribute()).featureMap().clear();
+ return;
+ }
+ super.eUnset(featureID);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public boolean eIsSet(int featureID)
+ {
+ switch (featureID)
+ {
+ case ModelPackageImpl.PROPERTY__ALIAS_NAME:
+ return aliasName != null && !aliasName.isEmpty();
+ case ModelPackageImpl.PROPERTY__ANY:
+ return any != null && !any.featureMap().isEmpty();
+ case ModelPackageImpl.PROPERTY__CONTAINMENT:
+ return isSetContainment();
+ case ModelPackageImpl.PROPERTY__DEFAULT:
+ return DEFAULT_EDEFAULT == null ? default_ != null : !DEFAULT_EDEFAULT.equals(default_);
+ case ModelPackageImpl.PROPERTY__MANY:
+ return isSetMany();
+ case ModelPackageImpl.PROPERTY__NAME:
+ return NAME_EDEFAULT == null ? name != null : !NAME_EDEFAULT.equals(name);
+ case ModelPackageImpl.PROPERTY__OPPOSITE:
+ return opposite != null;
+ case ModelPackageImpl.PROPERTY__READ_ONLY:
+ return isSetReadOnly();
+ case ModelPackageImpl.PROPERTY__TYPE:
+ return type != null;
+ case ModelPackageImpl.PROPERTY__ANY_ATTRIBUTE:
+ return anyAttribute != null && !anyAttribute.featureMap().isEmpty();
+ }
+ return super.eIsSet(featureID);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public String toString()
+ {
+ if (eIsProxy()) return super.toString();
+
+ StringBuffer result = new StringBuffer(super.toString());
+ result.append(" (aliasName: ");
+ result.append(aliasName);
+ result.append(", any: ");
+ result.append(any);
+ result.append(", containment: ");
+ if (containmentESet) result.append(containment); else result.append("<unset>");
+ result.append(", default: ");
+ result.append(default_);
+ result.append(", many: ");
+ if (manyESet) result.append(many); else result.append("<unset>");
+ result.append(", name: ");
+ result.append(name);
+ result.append(", readOnly: ");
+ if (readOnlyESet) result.append(readOnly); else result.append("<unset>");
+ result.append(", anyAttribute: ");
+ result.append(anyAttribute);
+ result.append(')');
+ return result.toString();
+ }
+
+} //PropertyImpl
diff --git a/branches/sdo-java-M2/sdo/impl/src/main/java/org/apache/tuscany/sdo/model/impl/TextTypeImpl.java b/branches/sdo-java-M2/sdo/impl/src/main/java/org/apache/tuscany/sdo/model/impl/TextTypeImpl.java
new file mode 100644
index 0000000000..1c93857644
--- /dev/null
+++ b/branches/sdo-java-M2/sdo/impl/src/main/java/org/apache/tuscany/sdo/model/impl/TextTypeImpl.java
@@ -0,0 +1,173 @@
+/**
+ *
+ * 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.model.impl;
+
+import java.util.Collection;
+import java.util.List;
+
+
+import org.apache.tuscany.sdo.impl.DataObjectImpl;
+import org.apache.tuscany.sdo.model.TextType;
+
+import org.eclipse.emf.common.util.EList;
+
+import org.eclipse.emf.ecore.EClass;
+
+import org.eclipse.emf.ecore.util.EDataTypeEList;
+
+/**
+ * <!-- begin-user-doc -->
+ * An implementation of the model object '<em><b>Text Type</b></em>'.
+ * <!-- end-user-doc -->
+ * <p>
+ * The following features are implemented:
+ * <ul>
+ * <li>{@link org.apache.tuscany.sdo.model.impl.TextTypeImpl#getText <em>Text</em>}</li>
+ * </ul>
+ * </p>
+ *
+ * @generated
+ */
+public abstract class TextTypeImpl extends DataObjectImpl implements TextType
+{
+ /**
+ * The cached value of the '{@link #getText() <em>Text</em>}' attribute list.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #getText()
+ * @generated
+ * @ordered
+ */
+ protected EList text = null;
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ protected TextTypeImpl()
+ {
+ super();
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ protected EClass eStaticClass()
+ {
+ return ModelPackageImpl.Literals.TEXT_TYPE;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public List getText()
+ {
+ if (text == null)
+ {
+ text = new EDataTypeEList(String.class, this, ModelPackageImpl.TEXT_TYPE__TEXT);
+ }
+ return text;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public Object eGet(int featureID, boolean resolve, boolean coreType)
+ {
+ switch (featureID)
+ {
+ case ModelPackageImpl.TEXT_TYPE__TEXT:
+ return getText();
+ }
+ return super.eGet(featureID, resolve, coreType);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public void eSet(int featureID, Object newValue)
+ {
+ switch (featureID)
+ {
+ case ModelPackageImpl.TEXT_TYPE__TEXT:
+ getText().clear();
+ getText().addAll((Collection)newValue);
+ return;
+ }
+ super.eSet(featureID, newValue);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public void eUnset(int featureID)
+ {
+ switch (featureID)
+ {
+ case ModelPackageImpl.TEXT_TYPE__TEXT:
+ getText().clear();
+ return;
+ }
+ super.eUnset(featureID);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public boolean eIsSet(int featureID)
+ {
+ switch (featureID)
+ {
+ case ModelPackageImpl.TEXT_TYPE__TEXT:
+ return text != null && !text.isEmpty();
+ }
+ return super.eIsSet(featureID);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public String toString()
+ {
+ if (eIsProxy()) return super.toString();
+
+ StringBuffer result = new StringBuffer(super.toString());
+ result.append(" (text: ");
+ result.append(text);
+ result.append(')');
+ return result.toString();
+ }
+
+} //TextTypeImpl
diff --git a/branches/sdo-java-M2/sdo/impl/src/main/java/org/apache/tuscany/sdo/model/impl/TypeImpl.java b/branches/sdo-java-M2/sdo/impl/src/main/java/org/apache/tuscany/sdo/model/impl/TypeImpl.java
new file mode 100644
index 0000000000..723858bec4
--- /dev/null
+++ b/branches/sdo-java-M2/sdo/impl/src/main/java/org/apache/tuscany/sdo/model/impl/TypeImpl.java
@@ -0,0 +1,854 @@
+/**
+ *
+ * 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.model.impl;
+
+import commonj.sdo.Sequence;
+
+import java.util.Collection;
+import java.util.List;
+
+
+import org.apache.tuscany.sdo.impl.DataObjectImpl;
+import org.apache.tuscany.sdo.model.Property;
+import org.apache.tuscany.sdo.model.Type;
+import org.apache.tuscany.sdo.model.java.impl.JavaPackageImpl;
+
+import org.apache.tuscany.sdo.util.BasicSequence;
+
+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.EStructuralFeature;
+import org.eclipse.emf.ecore.InternalEObject;
+
+import org.eclipse.emf.ecore.impl.ENotificationImpl;
+
+import org.eclipse.emf.ecore.util.BasicFeatureMap;
+import org.eclipse.emf.ecore.util.EDataTypeEList;
+import org.eclipse.emf.ecore.util.EObjectContainmentEList;
+import org.eclipse.emf.ecore.util.EObjectResolvingEList;
+import org.eclipse.emf.ecore.util.FeatureMap;
+import org.eclipse.emf.ecore.util.InternalEList;
+
+/**
+ * <!-- begin-user-doc -->
+ * An implementation of the model object '<em><b>Type</b></em>'.
+ * <!-- end-user-doc -->
+ * <p>
+ * The following features are implemented:
+ * <ul>
+ * <li>{@link org.apache.tuscany.sdo.model.impl.TypeImpl#getBaseType <em>Base Type</em>}</li>
+ * <li>{@link org.apache.tuscany.sdo.model.impl.TypeImpl#getProperty <em>Property</em>}</li>
+ * <li>{@link org.apache.tuscany.sdo.model.impl.TypeImpl#getAliasName <em>Alias Name</em>}</li>
+ * <li>{@link org.apache.tuscany.sdo.model.impl.TypeImpl#getAny <em>Any</em>}</li>
+ * <li>{@link org.apache.tuscany.sdo.model.impl.TypeImpl#isAbstract <em>Abstract</em>}</li>
+ * <li>{@link org.apache.tuscany.sdo.model.impl.TypeImpl#isDataType <em>Data Type</em>}</li>
+ * <li>{@link org.apache.tuscany.sdo.model.impl.TypeImpl#getName <em>Name</em>}</li>
+ * <li>{@link org.apache.tuscany.sdo.model.impl.TypeImpl#isOpen <em>Open</em>}</li>
+ * <li>{@link org.apache.tuscany.sdo.model.impl.TypeImpl#isSequenced <em>Sequenced</em>}</li>
+ * <li>{@link org.apache.tuscany.sdo.model.impl.TypeImpl#getUri <em>Uri</em>}</li>
+ * <li>{@link org.apache.tuscany.sdo.model.impl.TypeImpl#getAnyAttribute <em>Any Attribute</em>}</li>
+ * </ul>
+ * </p>
+ *
+ * @generated
+ */
+public class TypeImpl extends DataObjectImpl implements Type
+{
+ /**
+ * The cached value of the '{@link #getBaseType() <em>Base Type</em>}' reference list.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #getBaseType()
+ * @generated
+ * @ordered
+ */
+ protected EList baseType = null;
+
+ /**
+ * The cached value of the '{@link #getProperty() <em>Property</em>}' containment reference list.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #getProperty()
+ * @generated
+ * @ordered
+ */
+ protected EList property = null;
+
+ /**
+ * The cached value of the '{@link #getAliasName() <em>Alias Name</em>}' attribute list.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #getAliasName()
+ * @generated
+ * @ordered
+ */
+ protected EList aliasName = null;
+
+ /**
+ * The cached value of the '{@link #getAny() <em>Any</em>}' attribute list.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #getAny()
+ * @generated
+ * @ordered
+ */
+ protected BasicSequence any = null;
+
+ /**
+ * The default value of the '{@link #isAbstract() <em>Abstract</em>}' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #isAbstract()
+ * @generated
+ * @ordered
+ */
+ protected static final boolean ABSTRACT_EDEFAULT = false;
+
+ /**
+ * The cached value of the '{@link #isAbstract() <em>Abstract</em>}' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #isAbstract()
+ * @generated
+ * @ordered
+ */
+ protected boolean abstract_ = ABSTRACT_EDEFAULT;
+
+ /**
+ * This is true if the Abstract attribute has been set.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ protected boolean abstractESet = false;
+
+ /**
+ * The default value of the '{@link #isDataType() <em>Data Type</em>}' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #isDataType()
+ * @generated
+ * @ordered
+ */
+ protected static final boolean DATA_TYPE_EDEFAULT = false;
+
+ /**
+ * The cached value of the '{@link #isDataType() <em>Data Type</em>}' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #isDataType()
+ * @generated
+ * @ordered
+ */
+ protected boolean dataType = DATA_TYPE_EDEFAULT;
+
+ /**
+ * This is true if the Data Type attribute has been set.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ protected boolean dataTypeESet = false;
+
+ /**
+ * The default value of the '{@link #getName() <em>Name</em>}' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #getName()
+ * @generated
+ * @ordered
+ */
+ protected static final String NAME_EDEFAULT = null;
+
+ /**
+ * The cached value of the '{@link #getName() <em>Name</em>}' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #getName()
+ * @generated
+ * @ordered
+ */
+ protected String name = NAME_EDEFAULT;
+
+ /**
+ * The default value of the '{@link #isOpen() <em>Open</em>}' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #isOpen()
+ * @generated
+ * @ordered
+ */
+ protected static final boolean OPEN_EDEFAULT = false;
+
+ /**
+ * The cached value of the '{@link #isOpen() <em>Open</em>}' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #isOpen()
+ * @generated
+ * @ordered
+ */
+ protected boolean open = OPEN_EDEFAULT;
+
+ /**
+ * This is true if the Open attribute has been set.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ protected boolean openESet = false;
+
+ /**
+ * The default value of the '{@link #isSequenced() <em>Sequenced</em>}' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #isSequenced()
+ * @generated
+ * @ordered
+ */
+ protected static final boolean SEQUENCED_EDEFAULT = false;
+
+ /**
+ * The cached value of the '{@link #isSequenced() <em>Sequenced</em>}' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #isSequenced()
+ * @generated
+ * @ordered
+ */
+ protected boolean sequenced = SEQUENCED_EDEFAULT;
+
+ /**
+ * This is true if the Sequenced attribute has been set.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ protected boolean sequencedESet = false;
+
+ /**
+ * The default value of the '{@link #getUri() <em>Uri</em>}' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #getUri()
+ * @generated
+ * @ordered
+ */
+ protected static final String URI_EDEFAULT = null;
+
+ /**
+ * The cached value of the '{@link #getUri() <em>Uri</em>}' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #getUri()
+ * @generated
+ * @ordered
+ */
+ protected String uri = URI_EDEFAULT;
+
+ /**
+ * The cached value of the '{@link #getAnyAttribute() <em>Any Attribute</em>}' attribute list.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #getAnyAttribute()
+ * @generated
+ * @ordered
+ */
+ protected BasicSequence anyAttribute = null;
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ protected TypeImpl()
+ {
+ super();
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ protected EClass eStaticClass()
+ {
+ return ModelPackageImpl.Literals.TYPE;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public List getBaseType()
+ {
+ if (baseType == null)
+ {
+ baseType = new EObjectResolvingEList(Type.class, this, ModelPackageImpl.TYPE__BASE_TYPE);
+ }
+ return baseType;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public List getProperty()
+ {
+ if (property == null)
+ {
+ property = new EObjectContainmentEList(Property.class, this, ModelPackageImpl.TYPE__PROPERTY);
+ }
+ return property;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public List getAliasName()
+ {
+ if (aliasName == null)
+ {
+ aliasName = new EDataTypeEList(String.class, this, ModelPackageImpl.TYPE__ALIAS_NAME);
+ }
+ return aliasName;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public Sequence getAny()
+ {
+ if (any == null)
+ {
+ any = new BasicSequence(new BasicFeatureMap(this, ModelPackageImpl.TYPE__ANY));
+ }
+ return any;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public boolean isAbstract()
+ {
+ return abstract_;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public void setAbstract(boolean newAbstract)
+ {
+ boolean oldAbstract = abstract_;
+ abstract_ = newAbstract;
+ boolean oldAbstractESet = abstractESet;
+ abstractESet = true;
+ if (eNotificationRequired())
+ eNotify(new ENotificationImpl(this, Notification.SET, ModelPackageImpl.TYPE__ABSTRACT, oldAbstract, abstract_, !oldAbstractESet));
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public void unsetAbstract()
+ {
+ boolean oldAbstract = abstract_;
+ boolean oldAbstractESet = abstractESet;
+ abstract_ = ABSTRACT_EDEFAULT;
+ abstractESet = false;
+ if (eNotificationRequired())
+ eNotify(new ENotificationImpl(this, Notification.UNSET, ModelPackageImpl.TYPE__ABSTRACT, oldAbstract, ABSTRACT_EDEFAULT, oldAbstractESet));
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public boolean isSetAbstract()
+ {
+ return abstractESet;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public boolean isDataType()
+ {
+ return dataType;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public void setDataType(boolean newDataType)
+ {
+ boolean oldDataType = dataType;
+ dataType = newDataType;
+ boolean oldDataTypeESet = dataTypeESet;
+ dataTypeESet = true;
+ if (eNotificationRequired())
+ eNotify(new ENotificationImpl(this, Notification.SET, ModelPackageImpl.TYPE__DATA_TYPE, oldDataType, dataType, !oldDataTypeESet));
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public void unsetDataType()
+ {
+ boolean oldDataType = dataType;
+ boolean oldDataTypeESet = dataTypeESet;
+ dataType = DATA_TYPE_EDEFAULT;
+ dataTypeESet = false;
+ if (eNotificationRequired())
+ eNotify(new ENotificationImpl(this, Notification.UNSET, ModelPackageImpl.TYPE__DATA_TYPE, oldDataType, DATA_TYPE_EDEFAULT, oldDataTypeESet));
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public boolean isSetDataType()
+ {
+ return dataTypeESet;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public String getName()
+ {
+ return name;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public void setName(String newName)
+ {
+ String oldName = name;
+ name = newName;
+ if (eNotificationRequired())
+ eNotify(new ENotificationImpl(this, Notification.SET, ModelPackageImpl.TYPE__NAME, oldName, name));
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public boolean isOpen()
+ {
+ return open;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public void setOpen(boolean newOpen)
+ {
+ boolean oldOpen = open;
+ open = newOpen;
+ boolean oldOpenESet = openESet;
+ openESet = true;
+ if (eNotificationRequired())
+ eNotify(new ENotificationImpl(this, Notification.SET, ModelPackageImpl.TYPE__OPEN, oldOpen, open, !oldOpenESet));
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public void unsetOpen()
+ {
+ boolean oldOpen = open;
+ boolean oldOpenESet = openESet;
+ open = OPEN_EDEFAULT;
+ openESet = false;
+ if (eNotificationRequired())
+ eNotify(new ENotificationImpl(this, Notification.UNSET, ModelPackageImpl.TYPE__OPEN, oldOpen, OPEN_EDEFAULT, oldOpenESet));
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public boolean isSetOpen()
+ {
+ return openESet;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public boolean isSequenced()
+ {
+ return sequenced;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public void setSequenced(boolean newSequenced)
+ {
+ boolean oldSequenced = sequenced;
+ sequenced = newSequenced;
+ boolean oldSequencedESet = sequencedESet;
+ sequencedESet = true;
+ if (eNotificationRequired())
+ eNotify(new ENotificationImpl(this, Notification.SET, ModelPackageImpl.TYPE__SEQUENCED, oldSequenced, sequenced, !oldSequencedESet));
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public void unsetSequenced()
+ {
+ boolean oldSequenced = sequenced;
+ boolean oldSequencedESet = sequencedESet;
+ sequenced = SEQUENCED_EDEFAULT;
+ sequencedESet = false;
+ if (eNotificationRequired())
+ eNotify(new ENotificationImpl(this, Notification.UNSET, ModelPackageImpl.TYPE__SEQUENCED, oldSequenced, SEQUENCED_EDEFAULT, oldSequencedESet));
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public boolean isSetSequenced()
+ {
+ return sequencedESet;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public String getUri()
+ {
+ return uri;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public void setUri(String newUri)
+ {
+ String oldUri = uri;
+ uri = newUri;
+ if (eNotificationRequired())
+ eNotify(new ENotificationImpl(this, Notification.SET, ModelPackageImpl.TYPE__URI, oldUri, uri));
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public Sequence getAnyAttribute()
+ {
+ if (anyAttribute == null)
+ {
+ anyAttribute = new BasicSequence(new BasicFeatureMap(this, ModelPackageImpl.TYPE__ANY_ATTRIBUTE));
+ }
+ return anyAttribute;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public NotificationChain eInverseRemove(InternalEObject otherEnd, int featureID, NotificationChain msgs)
+ {
+ switch (featureID)
+ {
+ case ModelPackageImpl.TYPE__PROPERTY:
+ return ((InternalEList)getProperty()).basicRemove(otherEnd, msgs);
+ case ModelPackageImpl.TYPE__ANY:
+ return ((InternalEList)((FeatureMap.Internal.Wrapper)getAny()).featureMap()).basicRemove(otherEnd, msgs);
+ case ModelPackageImpl.TYPE__ANY_ATTRIBUTE:
+ return ((InternalEList)((FeatureMap.Internal.Wrapper)getAnyAttribute()).featureMap()).basicRemove(otherEnd, msgs);
+ }
+ return super.eInverseRemove(otherEnd, featureID, msgs);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public Object eGet(int featureID, boolean resolve, boolean coreType)
+ {
+ switch (featureID)
+ {
+ case ModelPackageImpl.TYPE__BASE_TYPE:
+ return getBaseType();
+ case ModelPackageImpl.TYPE__PROPERTY:
+ return getProperty();
+ case ModelPackageImpl.TYPE__ALIAS_NAME:
+ return getAliasName();
+ case ModelPackageImpl.TYPE__ANY:
+ if (coreType) return ((FeatureMap.Internal.Wrapper)getAny()).featureMap();
+ return getAny();
+ case ModelPackageImpl.TYPE__ABSTRACT:
+ return isAbstract() ? Boolean.TRUE : Boolean.FALSE;
+ case ModelPackageImpl.TYPE__DATA_TYPE:
+ return isDataType() ? Boolean.TRUE : Boolean.FALSE;
+ case ModelPackageImpl.TYPE__NAME:
+ return getName();
+ case ModelPackageImpl.TYPE__OPEN:
+ return isOpen() ? Boolean.TRUE : Boolean.FALSE;
+ case ModelPackageImpl.TYPE__SEQUENCED:
+ return isSequenced() ? Boolean.TRUE : Boolean.FALSE;
+ case ModelPackageImpl.TYPE__URI:
+ return getUri();
+ case ModelPackageImpl.TYPE__ANY_ATTRIBUTE:
+ if (coreType) return ((FeatureMap.Internal.Wrapper)getAnyAttribute()).featureMap();
+ return getAnyAttribute();
+ }
+ return super.eGet(featureID, resolve, coreType);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public void eSet(int featureID, Object newValue)
+ {
+ switch (featureID)
+ {
+ case ModelPackageImpl.TYPE__BASE_TYPE:
+ getBaseType().clear();
+ getBaseType().addAll((Collection)newValue);
+ return;
+ case ModelPackageImpl.TYPE__PROPERTY:
+ getProperty().clear();
+ getProperty().addAll((Collection)newValue);
+ return;
+ case ModelPackageImpl.TYPE__ALIAS_NAME:
+ getAliasName().clear();
+ getAliasName().addAll((Collection)newValue);
+ return;
+ case ModelPackageImpl.TYPE__ANY:
+ ((FeatureMap.Internal)((FeatureMap.Internal.Wrapper)getAny()).featureMap()).set(newValue);
+ return;
+ case ModelPackageImpl.TYPE__ABSTRACT:
+ setAbstract(((Boolean)newValue).booleanValue());
+ return;
+ case ModelPackageImpl.TYPE__DATA_TYPE:
+ setDataType(((Boolean)newValue).booleanValue());
+ return;
+ case ModelPackageImpl.TYPE__NAME:
+ setName((String)newValue);
+ return;
+ case ModelPackageImpl.TYPE__OPEN:
+ setOpen(((Boolean)newValue).booleanValue());
+ return;
+ case ModelPackageImpl.TYPE__SEQUENCED:
+ setSequenced(((Boolean)newValue).booleanValue());
+ return;
+ case ModelPackageImpl.TYPE__URI:
+ setUri((String)newValue);
+ return;
+ case ModelPackageImpl.TYPE__ANY_ATTRIBUTE:
+ ((FeatureMap.Internal)((FeatureMap.Internal.Wrapper)getAnyAttribute()).featureMap()).set(newValue);
+ return;
+ }
+ super.eSet(featureID, newValue);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public void eUnset(int featureID)
+ {
+ switch (featureID)
+ {
+ case ModelPackageImpl.TYPE__BASE_TYPE:
+ getBaseType().clear();
+ return;
+ case ModelPackageImpl.TYPE__PROPERTY:
+ getProperty().clear();
+ return;
+ case ModelPackageImpl.TYPE__ALIAS_NAME:
+ getAliasName().clear();
+ return;
+ case ModelPackageImpl.TYPE__ANY:
+ ((FeatureMap.Internal.Wrapper)getAny()).featureMap().clear();
+ return;
+ case ModelPackageImpl.TYPE__ABSTRACT:
+ unsetAbstract();
+ return;
+ case ModelPackageImpl.TYPE__DATA_TYPE:
+ unsetDataType();
+ return;
+ case ModelPackageImpl.TYPE__NAME:
+ setName(NAME_EDEFAULT);
+ return;
+ case ModelPackageImpl.TYPE__OPEN:
+ unsetOpen();
+ return;
+ case ModelPackageImpl.TYPE__SEQUENCED:
+ unsetSequenced();
+ return;
+ case ModelPackageImpl.TYPE__URI:
+ setUri(URI_EDEFAULT);
+ return;
+ case ModelPackageImpl.TYPE__ANY_ATTRIBUTE:
+ ((FeatureMap.Internal.Wrapper)getAnyAttribute()).featureMap().clear();
+ return;
+ }
+ super.eUnset(featureID);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public boolean eIsSet(int featureID)
+ {
+ switch (featureID)
+ {
+ case ModelPackageImpl.TYPE__BASE_TYPE:
+ return baseType != null && !baseType.isEmpty();
+ case ModelPackageImpl.TYPE__PROPERTY:
+ return property != null && !property.isEmpty();
+ case ModelPackageImpl.TYPE__ALIAS_NAME:
+ return aliasName != null && !aliasName.isEmpty();
+ case ModelPackageImpl.TYPE__ANY:
+ return any != null && !any.featureMap().isEmpty();
+ case ModelPackageImpl.TYPE__ABSTRACT:
+ return isSetAbstract();
+ case ModelPackageImpl.TYPE__DATA_TYPE:
+ return isSetDataType();
+ case ModelPackageImpl.TYPE__NAME:
+ return NAME_EDEFAULT == null ? name != null : !NAME_EDEFAULT.equals(name);
+ case ModelPackageImpl.TYPE__OPEN:
+ return isSetOpen();
+ case ModelPackageImpl.TYPE__SEQUENCED:
+ return isSetSequenced();
+ case ModelPackageImpl.TYPE__URI:
+ return URI_EDEFAULT == null ? uri != null : !URI_EDEFAULT.equals(uri);
+ case ModelPackageImpl.TYPE__ANY_ATTRIBUTE:
+ return anyAttribute != null && !anyAttribute.featureMap().isEmpty();
+ }
+ return super.eIsSet(featureID);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public String toString()
+ {
+ if (eIsProxy()) return super.toString();
+
+ StringBuffer result = new StringBuffer(super.toString());
+ result.append(" (aliasName: ");
+ result.append(aliasName);
+ result.append(", any: ");
+ result.append(any);
+ result.append(", abstract: ");
+ if (abstractESet) result.append(abstract_); else result.append("<unset>");
+ result.append(", dataType: ");
+ if (dataTypeESet) result.append(dataType); else result.append("<unset>");
+ result.append(", name: ");
+ result.append(name);
+ result.append(", open: ");
+ if (openESet) result.append(open); else result.append("<unset>");
+ result.append(", sequenced: ");
+ if (sequencedESet) result.append(sequenced); else result.append("<unset>");
+ result.append(", uri: ");
+ result.append(uri);
+ result.append(", anyAttribute: ");
+ result.append(anyAttribute);
+ result.append(')');
+ return result.toString();
+ }
+
+ public String getInstanceClassName()
+ {
+ EStructuralFeature javaClassFeature = JavaPackageImpl.eINSTANCE.getDocumentRoot_JavaClass();
+ Sequence anyAttribute = getAnyAttribute();
+ int count = anyAttribute.size();
+ for (int i = 0; i < count; i++)
+ {
+ EStructuralFeature eFeature = (EStructuralFeature)anyAttribute.getProperty(i);
+ if (eFeature == javaClassFeature)
+ {
+ return (String)anyAttribute.getValue(i);
+ }
+ }
+ return null;
+ }
+
+} //TypeImpl
diff --git a/branches/sdo-java-M2/sdo/impl/src/main/java/org/apache/tuscany/sdo/model/impl/TypesImpl.java b/branches/sdo-java-M2/sdo/impl/src/main/java/org/apache/tuscany/sdo/model/impl/TypesImpl.java
new file mode 100644
index 0000000000..59d3dda2c1
--- /dev/null
+++ b/branches/sdo-java-M2/sdo/impl/src/main/java/org/apache/tuscany/sdo/model/impl/TypesImpl.java
@@ -0,0 +1,182 @@
+/**
+ *
+ * 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.model.impl;
+
+import java.util.Collection;
+import java.util.List;
+
+
+import org.apache.tuscany.sdo.impl.DataObjectImpl;
+import org.apache.tuscany.sdo.model.Type;
+import org.apache.tuscany.sdo.model.Types;
+
+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.util.EObjectContainmentEList;
+import org.eclipse.emf.ecore.util.InternalEList;
+
+/**
+ * <!-- begin-user-doc -->
+ * An implementation of the model object '<em><b>Types</b></em>'.
+ * <!-- end-user-doc -->
+ * <p>
+ * The following features are implemented:
+ * <ul>
+ * <li>{@link org.apache.tuscany.sdo.model.impl.TypesImpl#getType <em>Type</em>}</li>
+ * </ul>
+ * </p>
+ *
+ * @generated
+ */
+public class TypesImpl extends DataObjectImpl implements Types
+{
+ /**
+ * The cached value of the '{@link #getType() <em>Type</em>}' containment reference list.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #getType()
+ * @generated
+ * @ordered
+ */
+ protected EList type = null;
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ protected TypesImpl()
+ {
+ super();
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ protected EClass eStaticClass()
+ {
+ return ModelPackageImpl.Literals.TYPES;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public List getType_()
+ {
+ if (type == null)
+ {
+ type = new EObjectContainmentEList(Type.class, this, ModelPackageImpl.TYPES__TYPE);
+ }
+ return type;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public NotificationChain eInverseRemove(InternalEObject otherEnd, int featureID, NotificationChain msgs)
+ {
+ switch (featureID)
+ {
+ case ModelPackageImpl.TYPES__TYPE:
+ return ((InternalEList)getType()).basicRemove(otherEnd, msgs);
+ }
+ return super.eInverseRemove(otherEnd, featureID, msgs);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public Object eGet(int featureID, boolean resolve, boolean coreType)
+ {
+ switch (featureID)
+ {
+ case ModelPackageImpl.TYPES__TYPE:
+ return getType();
+ }
+ return super.eGet(featureID, resolve, coreType);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public void eSet(int featureID, Object newValue)
+ {
+ switch (featureID)
+ {
+ case ModelPackageImpl.TYPES__TYPE:
+ getType_().clear();
+ getType_().addAll((Collection)newValue);
+ return;
+ }
+ super.eSet(featureID, newValue);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public void eUnset(int featureID)
+ {
+ switch (featureID)
+ {
+ case ModelPackageImpl.TYPES__TYPE:
+ getType_().clear();
+ return;
+ }
+ super.eUnset(featureID);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public boolean eIsSet(int featureID)
+ {
+ switch (featureID)
+ {
+ case ModelPackageImpl.TYPES__TYPE:
+ return type != null && !type.isEmpty();
+ }
+ return super.eIsSet(featureID);
+ }
+
+ public List getTypeList()
+ {
+ return getType_();
+ }
+
+} //TypesImpl
diff --git a/branches/sdo-java-M2/sdo/impl/src/main/java/org/apache/tuscany/sdo/model/impl/XSDTypeImpl.java b/branches/sdo-java-M2/sdo/impl/src/main/java/org/apache/tuscany/sdo/model/impl/XSDTypeImpl.java
new file mode 100644
index 0000000000..6cd90b2400
--- /dev/null
+++ b/branches/sdo-java-M2/sdo/impl/src/main/java/org/apache/tuscany/sdo/model/impl/XSDTypeImpl.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.model.impl;
+
+import commonj.sdo.Sequence;
+
+
+import org.apache.tuscany.sdo.impl.DataObjectImpl;
+import org.apache.tuscany.sdo.model.XSDType;
+
+import org.apache.tuscany.sdo.util.BasicSequence;
+
+import org.eclipse.emf.common.notify.NotificationChain;
+
+import org.eclipse.emf.ecore.EClass;
+import org.eclipse.emf.ecore.InternalEObject;
+
+import org.eclipse.emf.ecore.util.BasicFeatureMap;
+import org.eclipse.emf.ecore.util.FeatureMap;
+import org.eclipse.emf.ecore.util.InternalEList;
+
+/**
+ * <!-- begin-user-doc -->
+ * An implementation of the model object '<em><b>XSD Type</b></em>'.
+ * <!-- end-user-doc -->
+ * <p>
+ * The following features are implemented:
+ * <ul>
+ * <li>{@link org.apache.tuscany.sdo.model.impl.XSDTypeImpl#getAny <em>Any</em>}</li>
+ * </ul>
+ * </p>
+ *
+ * @generated
+ */
+public class XSDTypeImpl extends DataObjectImpl implements XSDType
+{
+ /**
+ * The cached value of the '{@link #getAny() <em>Any</em>}' attribute list.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #getAny()
+ * @generated
+ * @ordered
+ */
+ protected BasicSequence any = null;
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ protected XSDTypeImpl()
+ {
+ super();
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ protected EClass eStaticClass()
+ {
+ return ModelPackageImpl.Literals.XSD_TYPE;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public Sequence getAny()
+ {
+ if (any == null)
+ {
+ any = new BasicSequence(new BasicFeatureMap(this, ModelPackageImpl.XSD_TYPE__ANY));
+ }
+ return any;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public NotificationChain eInverseRemove(InternalEObject otherEnd, int featureID, NotificationChain msgs)
+ {
+ switch (featureID)
+ {
+ case ModelPackageImpl.XSD_TYPE__ANY:
+ return ((InternalEList)((FeatureMap.Internal.Wrapper)getAny()).featureMap()).basicRemove(otherEnd, msgs);
+ }
+ return super.eInverseRemove(otherEnd, featureID, msgs);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public Object eGet(int featureID, boolean resolve, boolean coreType)
+ {
+ switch (featureID)
+ {
+ case ModelPackageImpl.XSD_TYPE__ANY:
+ if (coreType) return ((FeatureMap.Internal.Wrapper)getAny()).featureMap();
+ return getAny();
+ }
+ return super.eGet(featureID, resolve, coreType);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public void eSet(int featureID, Object newValue)
+ {
+ switch (featureID)
+ {
+ case ModelPackageImpl.XSD_TYPE__ANY:
+ ((FeatureMap.Internal)((FeatureMap.Internal.Wrapper)getAny()).featureMap()).set(newValue);
+ return;
+ }
+ super.eSet(featureID, newValue);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public void eUnset(int featureID)
+ {
+ switch (featureID)
+ {
+ case ModelPackageImpl.XSD_TYPE__ANY:
+ ((FeatureMap.Internal.Wrapper)getAny()).featureMap().clear();
+ return;
+ }
+ super.eUnset(featureID);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public boolean eIsSet(int featureID)
+ {
+ switch (featureID)
+ {
+ case ModelPackageImpl.XSD_TYPE__ANY:
+ return any != null && !any.featureMap().isEmpty();
+ }
+ return super.eIsSet(featureID);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public String toString()
+ {
+ if (eIsProxy()) return super.toString();
+
+ StringBuffer result = new StringBuffer(super.toString());
+ result.append(" (any: ");
+ result.append(any);
+ result.append(')');
+ return result.toString();
+ }
+
+} //XSDTypeImpl
diff --git a/branches/sdo-java-M2/sdo/impl/src/main/java/org/apache/tuscany/sdo/model/java/JavaFactory.java b/branches/sdo-java-M2/sdo/impl/src/main/java/org/apache/tuscany/sdo/model/java/JavaFactory.java
new file mode 100644
index 0000000000..2afdfdb65d
--- /dev/null
+++ b/branches/sdo-java-M2/sdo/impl/src/main/java/org/apache/tuscany/sdo/model/java/JavaFactory.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 org.apache.tuscany.sdo.model.java;
+
+
+/**
+ * <!-- begin-user-doc -->
+ * The <b>Factory</b> for the model.
+ * It provides a create method for each non-abstract class of the model.
+ * <!-- end-user-doc -->
+ * @generated
+ */
+public interface JavaFactory
+{
+ /**
+ * The singleton instance of the factory.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ JavaFactory INSTANCE = org.apache.tuscany.sdo.model.java.impl.JavaFactoryImpl.eINSTANCE;
+
+ /**
+ * Returns a new object of class '<em>Info</em>'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return a new object of class '<em>Info</em>'.
+ * @generated
+ */
+ JavaInfo createJavaInfo();
+
+} //JavaFactory
diff --git a/branches/sdo-java-M2/sdo/impl/src/main/java/org/apache/tuscany/sdo/model/java/JavaInfo.java b/branches/sdo-java-M2/sdo/impl/src/main/java/org/apache/tuscany/sdo/model/java/JavaInfo.java
new file mode 100644
index 0000000000..8ea0baf093
--- /dev/null
+++ b/branches/sdo-java-M2/sdo/impl/src/main/java/org/apache/tuscany/sdo/model/java/JavaInfo.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.model.java;
+
+
+/**
+ * <!-- begin-user-doc -->
+ * A representation of the model object '<em><b>Info</b></em>'.
+ * <!-- end-user-doc -->
+ *
+ * <p>
+ * The following features are supported:
+ * <ul>
+ * <li>{@link org.apache.tuscany.sdo.model.java.JavaInfo#getJavaClass <em>Java Class</em>}</li>
+ * </ul>
+ * </p>
+ *
+ * @generated
+ */
+public interface JavaInfo
+{
+ /**
+ * Returns the value of the '<em><b>Java Class</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <p>
+ * If the meaning of the '<em>Java Class</em>' attribute isn't clear,
+ * there really should be more of a description here...
+ * </p>
+ * <!-- end-user-doc -->
+ * @return the value of the '<em>Java Class</em>' attribute.
+ * @see #setJavaClass(String)
+ * @generated
+ */
+ String getJavaClass();
+
+ /**
+ * Sets the value of the '{@link org.apache.tuscany.sdo.model.java.JavaInfo#getJavaClass <em>Java Class</em>}' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @param value the new value of the '<em>Java Class</em>' attribute.
+ * @see #getJavaClass()
+ * @generated
+ */
+ void setJavaClass(String value);
+
+} // JavaInfo
diff --git a/branches/sdo-java-M2/sdo/impl/src/main/java/org/apache/tuscany/sdo/model/java/impl/JavaFactoryImpl.java b/branches/sdo-java-M2/sdo/impl/src/main/java/org/apache/tuscany/sdo/model/java/impl/JavaFactoryImpl.java
new file mode 100644
index 0000000000..d6284419b1
--- /dev/null
+++ b/branches/sdo-java-M2/sdo/impl/src/main/java/org/apache/tuscany/sdo/model/java/impl/JavaFactoryImpl.java
@@ -0,0 +1,364 @@
+/**
+ *
+ * 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.model.java.impl;
+
+import org.apache.tuscany.sdo.model.java.*;
+
+import org.eclipse.emf.ecore.EClass;
+import org.eclipse.emf.ecore.EDataType;
+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;
+import org.eclipse.emf.ecore.xml.type.XMLTypeFactory;
+
+/**
+ * <!-- begin-user-doc -->
+ * An implementation of the model <b>Factory</b>.
+ * <!-- end-user-doc -->
+ * @generated
+ */
+public class JavaFactoryImpl extends EFactoryImpl implements JavaFactory
+{
+ /**
+ * The singleton instance of the factory.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public static final JavaFactoryImpl eINSTANCE = init();
+
+ /**
+ * Creates the default factory implementation.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public static JavaFactoryImpl init()
+ {
+ try
+ {
+ JavaFactoryImpl theJavaFactory = (JavaFactoryImpl)EPackage.Registry.INSTANCE.getEFactory("commonj.sdo/java");
+ if (theJavaFactory != null)
+ {
+ return theJavaFactory;
+ }
+ }
+ catch (Exception exception)
+ {
+ EcorePlugin.INSTANCE.log(exception);
+ }
+ return new JavaFactoryImpl();
+ }
+
+ /**
+ * Creates an instance of the factory.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public JavaFactoryImpl()
+ {
+ super();
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EObject create(EClass eClass)
+ {
+ switch (eClass.getClassifierID())
+ {
+ case JavaPackageImpl.DOCUMENT_ROOT: return (EObject)createDocumentRoot();
+ case JavaPackageImpl.JAVA_INFO: return (EObject)createJavaInfo();
+ default:
+ throw new IllegalArgumentException("The class '" + eClass.getName() + "' is not a valid classifier");
+ }
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public Object createFromString(EDataType eDataType, String initialValue)
+ {
+ switch (eDataType.getClassifierID())
+ {
+ case JavaPackageImpl.BOOLEAN_OBJECT:
+ return createBooleanObjectFromString(eDataType, initialValue);
+ case JavaPackageImpl.BYTE_OBJECT:
+ return createByteObjectFromString(eDataType, initialValue);
+ case JavaPackageImpl.CHARACTER_OBJECT:
+ return createCharacterObjectFromString(eDataType, initialValue);
+ case JavaPackageImpl.DOUBLE_OBJECT:
+ return createDoubleObjectFromString(eDataType, initialValue);
+ case JavaPackageImpl.FLOAT_OBJECT:
+ return createFloatObjectFromString(eDataType, initialValue);
+ case JavaPackageImpl.INT_OBJECT:
+ return createIntObjectFromString(eDataType, initialValue);
+ case JavaPackageImpl.LONG_OBJECT:
+ return createLongObjectFromString(eDataType, initialValue);
+ case JavaPackageImpl.SHORT_OBJECT:
+ return createShortObjectFromString(eDataType, initialValue);
+ default:
+ throw new IllegalArgumentException("The datatype '" + eDataType.getName() + "' is not a valid classifier");
+ }
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public String convertToString(EDataType eDataType, Object instanceValue)
+ {
+ switch (eDataType.getClassifierID())
+ {
+ case JavaPackageImpl.BOOLEAN_OBJECT:
+ return convertBooleanObjectToString(eDataType, instanceValue);
+ case JavaPackageImpl.BYTE_OBJECT:
+ return convertByteObjectToString(eDataType, instanceValue);
+ case JavaPackageImpl.CHARACTER_OBJECT:
+ return convertCharacterObjectToString(eDataType, instanceValue);
+ case JavaPackageImpl.DOUBLE_OBJECT:
+ return convertDoubleObjectToString(eDataType, instanceValue);
+ case JavaPackageImpl.FLOAT_OBJECT:
+ return convertFloatObjectToString(eDataType, instanceValue);
+ case JavaPackageImpl.INT_OBJECT:
+ return convertIntObjectToString(eDataType, instanceValue);
+ case JavaPackageImpl.LONG_OBJECT:
+ return convertLongObjectToString(eDataType, instanceValue);
+ case JavaPackageImpl.SHORT_OBJECT:
+ return convertShortObjectToString(eDataType, instanceValue);
+ default:
+ throw new IllegalArgumentException("The datatype '" + eDataType.getName() + "' is not a valid classifier");
+ }
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EObject createDocumentRoot()
+ {
+ EObject documentRoot = super.create(JavaPackageImpl.Literals.DOCUMENT_ROOT);
+ return documentRoot;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public JavaInfo createJavaInfo()
+ {
+ JavaInfoImpl javaInfo = new JavaInfoImpl();
+ return javaInfo;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated NOT
+ */
+ public Boolean createBooleanObjectFromString(EDataType eDataType, String initialValue)
+ {
+ return XMLTypeFactory.eINSTANCE.createBooleanObject(initialValue);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated NOT
+ */
+ public String convertBooleanObjectToString(EDataType eDataType, Object instanceValue)
+ {
+ return XMLTypeFactory.eINSTANCE.convertBooleanObject((Boolean)instanceValue);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated NOT
+ */
+ public Byte createByteObjectFromString(EDataType eDataType, String initialValue)
+ {
+ return XMLTypeFactory.eINSTANCE.createByteObject(initialValue);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated NOT
+ */
+ public String convertByteObjectToString(EDataType eDataType, Object instanceValue)
+ {
+ return XMLTypeFactory.eINSTANCE.convertByteObject((Byte)instanceValue);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated NOT
+ */
+ public Character createCharacterObjectFromString(EDataType eDataType, String initialValue)
+ {
+ return (initialValue == null && initialValue.length() > 0)
+ ? null : (new Character(collapseWhiteSpace(initialValue).charAt(0)));
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated NOT
+ */
+ public String convertCharacterObjectToString(EDataType eDataType, Object instanceValue)
+ {
+ return instanceValue == null ? null : instanceValue.toString();
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated NOT
+ */
+ public Double createDoubleObjectFromString(EDataType eDataType, String initialValue)
+ {
+ return XMLTypeFactory.eINSTANCE.createDoubleObject(initialValue);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated NOT
+ */
+ public String convertDoubleObjectToString(EDataType eDataType, Object instanceValue)
+ {
+ return XMLTypeFactory.eINSTANCE.convertDoubleObject((Double)instanceValue);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated NOT
+ */
+ public Float createFloatObjectFromString(EDataType eDataType, String initialValue)
+ {
+ return XMLTypeFactory.eINSTANCE.createFloatObject(initialValue);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated NOT
+ */
+ public String convertFloatObjectToString(EDataType eDataType, Object instanceValue)
+ {
+ return XMLTypeFactory.eINSTANCE.convertFloatObject((Float)instanceValue);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated NOT
+ */
+ public Integer createIntObjectFromString(EDataType eDataType, String initialValue)
+ {
+ return XMLTypeFactory.eINSTANCE.createIntObject(initialValue);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated NOT
+ */
+ public String convertIntObjectToString(EDataType eDataType, Object instanceValue)
+ {
+ return XMLTypeFactory.eINSTANCE.convertIntObject((Integer)instanceValue);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated NOT
+ */
+ public Long createLongObjectFromString(EDataType eDataType, String initialValue)
+ {
+ return XMLTypeFactory.eINSTANCE.createLongObject(initialValue);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated NOT
+ */
+ public String convertLongObjectToString(EDataType eDataType, Object instanceValue)
+ {
+ return XMLTypeFactory.eINSTANCE.convertLongObject((Long)instanceValue);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated NOT
+ */
+ public Short createShortObjectFromString(EDataType eDataType, String initialValue)
+ {
+ return XMLTypeFactory.eINSTANCE.createShortObject(initialValue);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated NOT
+ */
+ public String convertShortObjectToString(EDataType eDataType, Object instanceValue)
+ {
+ return XMLTypeFactory.eINSTANCE.convertShortObject((Short)instanceValue);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public JavaPackageImpl getJavaPackageImpl()
+ {
+ return (JavaPackageImpl)getEPackage();
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @deprecated
+ * @generated
+ */
+ public static JavaPackageImpl getPackage()
+ {
+ return JavaPackageImpl.eINSTANCE;
+ }
+
+} //JavaFactoryImpl
diff --git a/branches/sdo-java-M2/sdo/impl/src/main/java/org/apache/tuscany/sdo/model/java/impl/JavaInfoImpl.java b/branches/sdo-java-M2/sdo/impl/src/main/java/org/apache/tuscany/sdo/model/java/impl/JavaInfoImpl.java
new file mode 100644
index 0000000000..ba1e7e5ab6
--- /dev/null
+++ b/branches/sdo-java-M2/sdo/impl/src/main/java/org/apache/tuscany/sdo/model/java/impl/JavaInfoImpl.java
@@ -0,0 +1,188 @@
+/**
+ *
+ * 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.model.java.impl;
+
+import org.apache.tuscany.sdo.impl.DataObjectImpl;
+
+import org.apache.tuscany.sdo.model.java.JavaInfo;
+
+import org.eclipse.emf.common.notify.Notification;
+
+import org.eclipse.emf.ecore.EClass;
+
+import org.eclipse.emf.ecore.impl.ENotificationImpl;
+
+/**
+ * <!-- begin-user-doc -->
+ * An implementation of the model object '<em><b>Info</b></em>'.
+ * <!-- end-user-doc -->
+ * <p>
+ * The following features are implemented:
+ * <ul>
+ * <li>{@link org.apache.tuscany.sdo.model.java.impl.JavaInfoImpl#getJavaClass <em>Java Class</em>}</li>
+ * </ul>
+ * </p>
+ *
+ * @generated
+ */
+public class JavaInfoImpl extends DataObjectImpl implements JavaInfo
+{
+ /**
+ * The default value of the '{@link #getJavaClass() <em>Java Class</em>}' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #getJavaClass()
+ * @generated
+ * @ordered
+ */
+ protected static final String JAVA_CLASS_EDEFAULT = null;
+
+ /**
+ * The cached value of the '{@link #getJavaClass() <em>Java Class</em>}' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #getJavaClass()
+ * @generated
+ * @ordered
+ */
+ protected String javaClass = JAVA_CLASS_EDEFAULT;
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ protected JavaInfoImpl()
+ {
+ super();
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ protected EClass eStaticClass()
+ {
+ return JavaPackageImpl.Literals.JAVA_INFO;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public String getJavaClass()
+ {
+ return javaClass;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public void setJavaClass(String newJavaClass)
+ {
+ String oldJavaClass = javaClass;
+ javaClass = newJavaClass;
+ if (eNotificationRequired())
+ eNotify(new ENotificationImpl(this, Notification.SET, JavaPackageImpl.JAVA_INFO__JAVA_CLASS, oldJavaClass, javaClass));
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public Object eGet(int featureID, boolean resolve, boolean coreType)
+ {
+ switch (featureID)
+ {
+ case JavaPackageImpl.JAVA_INFO__JAVA_CLASS:
+ return getJavaClass();
+ }
+ return super.eGet(featureID, resolve, coreType);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public void eSet(int featureID, Object newValue)
+ {
+ switch (featureID)
+ {
+ case JavaPackageImpl.JAVA_INFO__JAVA_CLASS:
+ setJavaClass((String)newValue);
+ return;
+ }
+ super.eSet(featureID, newValue);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public void eUnset(int featureID)
+ {
+ switch (featureID)
+ {
+ case JavaPackageImpl.JAVA_INFO__JAVA_CLASS:
+ setJavaClass(JAVA_CLASS_EDEFAULT);
+ return;
+ }
+ super.eUnset(featureID);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public boolean eIsSet(int featureID)
+ {
+ switch (featureID)
+ {
+ case JavaPackageImpl.JAVA_INFO__JAVA_CLASS:
+ return JAVA_CLASS_EDEFAULT == null ? javaClass != null : !JAVA_CLASS_EDEFAULT.equals(javaClass);
+ }
+ return super.eIsSet(featureID);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public String toString()
+ {
+ if (eIsProxy()) return super.toString();
+
+ StringBuffer result = new StringBuffer(super.toString());
+ result.append(" (javaClass: ");
+ result.append(javaClass);
+ result.append(')');
+ return result.toString();
+ }
+
+} //JavaInfoImpl
diff --git a/branches/sdo-java-M2/sdo/impl/src/main/java/org/apache/tuscany/sdo/model/java/impl/JavaPackageImpl.java b/branches/sdo-java-M2/sdo/impl/src/main/java/org/apache/tuscany/sdo/model/java/impl/JavaPackageImpl.java
new file mode 100644
index 0000000000..dace50c6c5
--- /dev/null
+++ b/branches/sdo-java-M2/sdo/impl/src/main/java/org/apache/tuscany/sdo/model/java/impl/JavaPackageImpl.java
@@ -0,0 +1,1152 @@
+/**
+ *
+ * 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.model.java.impl;
+
+import org.apache.tuscany.sdo.impl.SDOPackageImpl;
+
+import org.apache.tuscany.sdo.model.impl.ModelPackageImpl;
+
+import org.apache.tuscany.sdo.model.java.JavaFactory;
+import org.apache.tuscany.sdo.model.java.JavaInfo;
+
+import org.eclipse.emf.ecore.EAttribute;
+import org.eclipse.emf.ecore.EClass;
+import org.eclipse.emf.ecore.EDataType;
+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;
+
+/**
+ * <!-- begin-user-doc -->
+ * The <b>Package</b> for the model.
+ * It contains accessors for the meta objects to represent
+ * <ul>
+ * <li>each class,</li>
+ * <li>each feature of each class,</li>
+ * <li>each enum,</li>
+ * <li>and each data type</li>
+ * </ul>
+ * <!-- end-user-doc -->
+ * @see org.apache.tuscany.sdo.model.java.JavaFactory
+ * @generated
+ */
+public class JavaPackageImpl extends EPackageImpl
+{
+ /**
+ * The package name.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public static final String eNAME = "java";
+
+ /**
+ * The package namespace URI.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public static final String eNS_URI = "commonj.sdo/java";
+
+ /**
+ * The package namespace name.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public static final String eNS_PREFIX = "java";
+
+ /**
+ * The singleton instance of the package.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public static final JavaPackageImpl eINSTANCE = org.apache.tuscany.sdo.model.java.impl.JavaPackageImpl.init();
+
+ /**
+ * The meta object id for the '{@link org.apache.tuscany.sdo.model.java.impl.DocumentRootImpl <em>Document Root</em>}' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see org.apache.tuscany.sdo.model.java.impl.DocumentRootImpl
+ * @see org.apache.tuscany.sdo.model.java.impl.JavaPackageImpl#getDocumentRoot()
+ * @generated
+ */
+ public static final int DOCUMENT_ROOT = 0;
+
+ /**
+ * The feature id for the '<em><b>Mixed</b></em>' attribute list.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ public static final int DOCUMENT_ROOT__MIXED = 0;
+
+ /**
+ * The feature id for the '<em><b>XMLNS Prefix Map</b></em>' map.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ public static final int DOCUMENT_ROOT__XMLNS_PREFIX_MAP = 1;
+
+ /**
+ * The feature id for the '<em><b>XSI Schema Location</b></em>' map.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ public static final int DOCUMENT_ROOT__XSI_SCHEMA_LOCATION = 2;
+
+ /**
+ * The feature id for the '<em><b>Extended Instance Class</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ public static final int DOCUMENT_ROOT__EXTENDED_INSTANCE_CLASS = 3;
+
+ /**
+ * The feature id for the '<em><b>Instance Class</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ public static final int DOCUMENT_ROOT__INSTANCE_CLASS = 4;
+
+ /**
+ * The feature id for the '<em><b>Java Class</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ public static final int DOCUMENT_ROOT__JAVA_CLASS = 5;
+
+ /**
+ * The feature id for the '<em><b>Nested Interfaces</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ public static final int DOCUMENT_ROOT__NESTED_INTERFACES = 6;
+
+ /**
+ * The feature id for the '<em><b>Package</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ public static final int DOCUMENT_ROOT__PACKAGE = 7;
+
+ /**
+ * The number of structural features of the '<em>Document Root</em>' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ public static final int DOCUMENT_ROOT_FEATURE_COUNT = 8;
+
+ /**
+ * The meta object id for the '{@link org.apache.tuscany.sdo.model.java.impl.JavaInfoImpl <em>Info</em>}' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see org.apache.tuscany.sdo.model.java.impl.JavaInfoImpl
+ * @see org.apache.tuscany.sdo.model.java.impl.JavaPackageImpl#getJavaInfo()
+ * @generated
+ */
+ public static final int JAVA_INFO = 1;
+
+ /**
+ * The feature id for the '<em><b>Java Class</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ public static final int JAVA_INFO__JAVA_CLASS = 0;
+
+ /**
+ * The number of structural features of the '<em>Info</em>' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ public static final int JAVA_INFO_FEATURE_COUNT = 1;
+
+ /**
+ * The meta object id for the '<em>Boolean Object</em>' data type.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see java.lang.Boolean
+ * @see org.apache.tuscany.sdo.model.java.impl.JavaPackageImpl#getBooleanObject()
+ * @generated
+ */
+ public static final int BOOLEAN_OBJECT = 2;
+
+ /**
+ * The meta object id for the '<em>Byte Object</em>' data type.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see java.lang.Byte
+ * @see org.apache.tuscany.sdo.model.java.impl.JavaPackageImpl#getByteObject()
+ * @generated
+ */
+ public static final int BYTE_OBJECT = 3;
+
+ /**
+ * The meta object id for the '<em>Character Object</em>' data type.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see java.lang.Character
+ * @see org.apache.tuscany.sdo.model.java.impl.JavaPackageImpl#getCharacterObject()
+ * @generated
+ */
+ public static final int CHARACTER_OBJECT = 4;
+
+ /**
+ * The meta object id for the '<em>Double Object</em>' data type.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see java.lang.Double
+ * @see org.apache.tuscany.sdo.model.java.impl.JavaPackageImpl#getDoubleObject()
+ * @generated
+ */
+ public static final int DOUBLE_OBJECT = 5;
+
+ /**
+ * The meta object id for the '<em>Float Object</em>' data type.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see java.lang.Float
+ * @see org.apache.tuscany.sdo.model.java.impl.JavaPackageImpl#getFloatObject()
+ * @generated
+ */
+ public static final int FLOAT_OBJECT = 6;
+
+ /**
+ * The meta object id for the '<em>Int Object</em>' data type.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see java.lang.Integer
+ * @see org.apache.tuscany.sdo.model.java.impl.JavaPackageImpl#getIntObject()
+ * @generated
+ */
+ public static final int INT_OBJECT = 7;
+
+ /**
+ * The meta object id for the '<em>Long Object</em>' data type.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see java.lang.Long
+ * @see org.apache.tuscany.sdo.model.java.impl.JavaPackageImpl#getLongObject()
+ * @generated
+ */
+ public static final int LONG_OBJECT = 8;
+
+ /**
+ * The meta object id for the '<em>Short Object</em>' data type.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see java.lang.Short
+ * @see org.apache.tuscany.sdo.model.java.impl.JavaPackageImpl#getShortObject()
+ * @generated
+ */
+ public static final int SHORT_OBJECT = 9;
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ private EClass documentRootEClass = null;
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ private EClass javaInfoEClass = null;
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ private EDataType booleanObjectEDataType = null;
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ private EDataType byteObjectEDataType = null;
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ private EDataType characterObjectEDataType = null;
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ private EDataType doubleObjectEDataType = null;
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ private EDataType floatObjectEDataType = null;
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ private EDataType intObjectEDataType = null;
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ private EDataType longObjectEDataType = null;
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ private EDataType shortObjectEDataType = null;
+
+ /**
+ * Creates an instance of the model <b>Package</b>, registered with
+ * {@link org.eclipse.emf.ecore.EPackage.Registry EPackage.Registry} by the package
+ * package URI value.
+ * <p>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.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see org.eclipse.emf.ecore.EPackage.Registry
+ * @see org.apache.tuscany.sdo.model.java.impl.JavaPackageImpl#eNS_URI
+ * @see #init()
+ * @generated
+ */
+ private JavaPackageImpl()
+ {
+ super(eNS_URI, ((EFactory)JavaFactory.INSTANCE));
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ private static boolean isInited = false;
+
+ /**
+ * Creates, registers, and initializes the <b>Package</b> 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.
+ * <p>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.
+ * <p>Invocation of this method will not affect any packages that have
+ * already been initialized.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #eNS_URI
+ * @see #createPackageContents()
+ * @see #initializePackageContents()
+ * @generated
+ */
+ public static JavaPackageImpl init()
+ {
+ if (isInited) return (JavaPackageImpl)EPackage.Registry.INSTANCE.getEPackage(JavaPackageImpl.eNS_URI);
+
+ // Obtain or create and register package
+ JavaPackageImpl theJavaPackageImpl = (JavaPackageImpl)(EPackage.Registry.INSTANCE.getEPackage(eNS_URI) instanceof JavaPackageImpl ? EPackage.Registry.INSTANCE.getEPackage(eNS_URI) : new JavaPackageImpl());
+
+ isInited = true;
+
+ // Initialize simple dependencies
+ SDOPackageImpl.eINSTANCE.eClass();
+ ModelPackageImpl.eINSTANCE.eClass();
+
+ // Create package meta-data objects
+ theJavaPackageImpl.createPackageContents();
+
+ // Initialize created meta-data
+ theJavaPackageImpl.initializePackageContents();
+
+ // Mark meta-data to indicate it can't be changed
+ theJavaPackageImpl.freeze();
+
+ return theJavaPackageImpl;
+ }
+
+
+ /**
+ * Returns the meta object for class '{@link org.eclipse.emf.ecore.EObject <em>Document Root</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for class '<em>Document Root</em>'.
+ * @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 <em>Mixed</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for the attribute list '<em>Mixed</em>'.
+ * @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 <em>XMLNS Prefix Map</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for the map '<em>XMLNS Prefix Map</em>'.
+ * @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 <em>XSI Schema Location</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for the map '<em>XSI Schema Location</em>'.
+ * @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 attribute '{@link org.eclipse.emf.ecore.EObject#getExtendedInstanceClass <em>Extended Instance Class</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for the attribute '<em>Extended Instance Class</em>'.
+ * @see org.eclipse.emf.ecore.EObject#getExtendedInstanceClass()
+ * @see #getDocumentRoot()
+ * @generated
+ */
+ public EAttribute getDocumentRoot_ExtendedInstanceClass()
+ {
+ return (EAttribute)documentRootEClass.getEStructuralFeatures().get(3);
+ }
+
+ /**
+ * Returns the meta object for the attribute '{@link org.eclipse.emf.ecore.EObject#getInstanceClass <em>Instance Class</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for the attribute '<em>Instance Class</em>'.
+ * @see org.eclipse.emf.ecore.EObject#getInstanceClass()
+ * @see #getDocumentRoot()
+ * @generated
+ */
+ public EAttribute getDocumentRoot_InstanceClass()
+ {
+ return (EAttribute)documentRootEClass.getEStructuralFeatures().get(4);
+ }
+
+ /**
+ * Returns the meta object for the attribute '{@link org.eclipse.emf.ecore.EObject#getJavaClass <em>Java Class</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for the attribute '<em>Java Class</em>'.
+ * @see org.eclipse.emf.ecore.EObject#getJavaClass()
+ * @see #getDocumentRoot()
+ * @generated
+ */
+ public EAttribute getDocumentRoot_JavaClass()
+ {
+ return (EAttribute)documentRootEClass.getEStructuralFeatures().get(5);
+ }
+
+ /**
+ * Returns the meta object for the attribute '{@link org.eclipse.emf.ecore.EObject#isNestedInterfaces <em>Nested Interfaces</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for the attribute '<em>Nested Interfaces</em>'.
+ * @see org.eclipse.emf.ecore.EObject#isNestedInterfaces()
+ * @see #getDocumentRoot()
+ * @generated
+ */
+ public EAttribute getDocumentRoot_NestedInterfaces()
+ {
+ return (EAttribute)documentRootEClass.getEStructuralFeatures().get(6);
+ }
+
+ /**
+ * Returns the meta object for the attribute '{@link org.eclipse.emf.ecore.EObject#getPackage <em>Package</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for the attribute '<em>Package</em>'.
+ * @see org.eclipse.emf.ecore.EObject#getPackage()
+ * @see #getDocumentRoot()
+ * @generated
+ */
+ public EAttribute getDocumentRoot_Package()
+ {
+ return (EAttribute)documentRootEClass.getEStructuralFeatures().get(7);
+ }
+
+ /**
+ * Returns the meta object for class '{@link org.apache.tuscany.sdo.model.java.JavaInfo <em>Info</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for class '<em>Info</em>'.
+ * @see org.apache.tuscany.sdo.model.java.JavaInfo
+ * @generated
+ */
+ public EClass getJavaInfo()
+ {
+ return javaInfoEClass;
+ }
+
+ /**
+ * Returns the meta object for the attribute '{@link org.apache.tuscany.sdo.model.java.JavaInfo#getJavaClass <em>Java Class</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for the attribute '<em>Java Class</em>'.
+ * @see org.apache.tuscany.sdo.model.java.JavaInfo#getJavaClass()
+ * @see #getJavaInfo()
+ * @generated
+ */
+ public EAttribute getJavaInfo_JavaClass()
+ {
+ return (EAttribute)javaInfoEClass.getEStructuralFeatures().get(0);
+ }
+
+ /**
+ * Returns the meta object for data type '{@link java.lang.Boolean <em>Boolean Object</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for data type '<em>Boolean Object</em>'.
+ * @see java.lang.Boolean
+ * @generated
+ */
+ public EDataType getBooleanObject()
+ {
+ return booleanObjectEDataType;
+ }
+
+ /**
+ * Returns the meta object for data type '{@link java.lang.Byte <em>Byte Object</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for data type '<em>Byte Object</em>'.
+ * @see java.lang.Byte
+ * @generated
+ */
+ public EDataType getByteObject()
+ {
+ return byteObjectEDataType;
+ }
+
+ /**
+ * Returns the meta object for data type '{@link java.lang.Character <em>Character Object</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for data type '<em>Character Object</em>'.
+ * @see java.lang.Character
+ * @generated
+ */
+ public EDataType getCharacterObject()
+ {
+ return characterObjectEDataType;
+ }
+
+ /**
+ * Returns the meta object for data type '{@link java.lang.Double <em>Double Object</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for data type '<em>Double Object</em>'.
+ * @see java.lang.Double
+ * @generated
+ */
+ public EDataType getDoubleObject()
+ {
+ return doubleObjectEDataType;
+ }
+
+ /**
+ * Returns the meta object for data type '{@link java.lang.Float <em>Float Object</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for data type '<em>Float Object</em>'.
+ * @see java.lang.Float
+ * @generated
+ */
+ public EDataType getFloatObject()
+ {
+ return floatObjectEDataType;
+ }
+
+ /**
+ * Returns the meta object for data type '{@link java.lang.Integer <em>Int Object</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for data type '<em>Int Object</em>'.
+ * @see java.lang.Integer
+ * @generated
+ */
+ public EDataType getIntObject()
+ {
+ return intObjectEDataType;
+ }
+
+ /**
+ * Returns the meta object for data type '{@link java.lang.Long <em>Long Object</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for data type '<em>Long Object</em>'.
+ * @see java.lang.Long
+ * @generated
+ */
+ public EDataType getLongObject()
+ {
+ return longObjectEDataType;
+ }
+
+ /**
+ * Returns the meta object for data type '{@link java.lang.Short <em>Short Object</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for data type '<em>Short Object</em>'.
+ * @see java.lang.Short
+ * @generated
+ */
+ public EDataType getShortObject()
+ {
+ return shortObjectEDataType;
+ }
+
+ /**
+ * Returns the factory that creates the instances of the model.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the factory that creates the instances of the model.
+ * @generated
+ */
+ public JavaFactory getJavaFactory()
+ {
+ return (JavaFactory)getEFactoryInstance();
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @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.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @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);
+ createEAttribute(documentRootEClass, DOCUMENT_ROOT__EXTENDED_INSTANCE_CLASS);
+ createEAttribute(documentRootEClass, DOCUMENT_ROOT__INSTANCE_CLASS);
+ createEAttribute(documentRootEClass, DOCUMENT_ROOT__JAVA_CLASS);
+ createEAttribute(documentRootEClass, DOCUMENT_ROOT__NESTED_INTERFACES);
+ createEAttribute(documentRootEClass, DOCUMENT_ROOT__PACKAGE);
+
+ javaInfoEClass = createEClass(JAVA_INFO);
+ createEAttribute(javaInfoEClass, JAVA_INFO__JAVA_CLASS);
+
+ // Create data types
+ booleanObjectEDataType = createEDataType(BOOLEAN_OBJECT);
+ byteObjectEDataType = createEDataType(BYTE_OBJECT);
+ characterObjectEDataType = createEDataType(CHARACTER_OBJECT);
+ doubleObjectEDataType = createEDataType(DOUBLE_OBJECT);
+ floatObjectEDataType = createEDataType(FLOAT_OBJECT);
+ intObjectEDataType = createEDataType(INT_OBJECT);
+ longObjectEDataType = createEDataType(LONG_OBJECT);
+ shortObjectEDataType = createEDataType(SHORT_OBJECT);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @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.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public void initializePackageContents()
+ {
+ if (isInitialized) return;
+ isInitialized = true;
+
+ // Initialize package
+ setName(eNAME);
+ setNsPrefix(eNS_PREFIX);
+ setNsURI(eNS_URI);
+
+ // Obtain other dependent packages
+ ModelPackageImpl theModelPackageImpl = (ModelPackageImpl)EPackage.Registry.INSTANCE.getEPackage(ModelPackageImpl.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);
+ initEAttribute(getDocumentRoot_ExtendedInstanceClass(), theModelPackageImpl.getString(), "extendedInstanceClass", null, 0, 1, null, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, !IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+ initEAttribute(getDocumentRoot_InstanceClass(), theModelPackageImpl.getString(), "instanceClass", null, 0, 1, null, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, !IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+ initEAttribute(getDocumentRoot_JavaClass(), theModelPackageImpl.getString(), "javaClass", null, 0, 1, null, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, !IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+ initEAttribute(getDocumentRoot_NestedInterfaces(), theModelPackageImpl.getBoolean(), "nestedInterfaces", null, 0, 1, null, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_UNSETTABLE, !IS_ID, !IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+ initEAttribute(getDocumentRoot_Package(), theModelPackageImpl.getString(), "package", null, 0, 1, null, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, !IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+
+ initEClass(javaInfoEClass, JavaInfo.class, "JavaInfo", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
+ initEAttribute(getJavaInfo_JavaClass(), theModelPackageImpl.getString(), "javaClass", null, 0, 1, JavaInfo.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, !IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+
+ // Initialize data types
+ initEDataType(booleanObjectEDataType, Boolean.class, "BooleanObject", IS_SERIALIZABLE, !IS_GENERATED_INSTANCE_CLASS);
+ initEDataType(byteObjectEDataType, Byte.class, "ByteObject", IS_SERIALIZABLE, !IS_GENERATED_INSTANCE_CLASS);
+ initEDataType(characterObjectEDataType, Character.class, "CharacterObject", IS_SERIALIZABLE, !IS_GENERATED_INSTANCE_CLASS);
+ initEDataType(doubleObjectEDataType, Double.class, "DoubleObject", IS_SERIALIZABLE, !IS_GENERATED_INSTANCE_CLASS);
+ initEDataType(floatObjectEDataType, Float.class, "FloatObject", IS_SERIALIZABLE, !IS_GENERATED_INSTANCE_CLASS);
+ initEDataType(intObjectEDataType, Integer.class, "IntObject", IS_SERIALIZABLE, !IS_GENERATED_INSTANCE_CLASS);
+ initEDataType(longObjectEDataType, Long.class, "LongObject", IS_SERIALIZABLE, !IS_GENERATED_INSTANCE_CLASS);
+ initEDataType(shortObjectEDataType, Short.class, "ShortObject", IS_SERIALIZABLE, !IS_GENERATED_INSTANCE_CLASS);
+
+ // Create resource
+ createResource(eNS_URI);
+
+ // Create annotations
+ // http:///org/eclipse/emf/ecore/util/ExtendedMetaData
+ createExtendedMetaDataAnnotations();
+ }
+
+ /**
+ * Initializes the annotations for <b>http:///org/eclipse/emf/ecore/util/ExtendedMetaData</b>.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ protected void createExtendedMetaDataAnnotations()
+ {
+ String source = "http:///org/eclipse/emf/ecore/util/ExtendedMetaData";
+ addAnnotation
+ (booleanObjectEDataType,
+ source,
+ new String[]
+ {
+ "name", "BooleanObject"
+ });
+ addAnnotation
+ (byteObjectEDataType,
+ source,
+ new String[]
+ {
+ "name", "ByteObject"
+ });
+ addAnnotation
+ (characterObjectEDataType,
+ source,
+ new String[]
+ {
+ "name", "CharacterObject"
+ });
+ 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_ExtendedInstanceClass(),
+ source,
+ new String[]
+ {
+ "kind", "attribute",
+ "name", "extendedInstanceClass",
+ "namespace", "##targetNamespace"
+ });
+ addAnnotation
+ (getDocumentRoot_InstanceClass(),
+ source,
+ new String[]
+ {
+ "kind", "attribute",
+ "name", "instanceClass",
+ "namespace", "##targetNamespace"
+ });
+ addAnnotation
+ (getDocumentRoot_JavaClass(),
+ source,
+ new String[]
+ {
+ "kind", "attribute",
+ "name", "javaClass",
+ "namespace", "##targetNamespace"
+ });
+ addAnnotation
+ (getDocumentRoot_NestedInterfaces(),
+ source,
+ new String[]
+ {
+ "kind", "attribute",
+ "name", "nestedInterfaces",
+ "namespace", "##targetNamespace"
+ });
+ addAnnotation
+ (getDocumentRoot_Package(),
+ source,
+ new String[]
+ {
+ "kind", "attribute",
+ "name", "package",
+ "namespace", "##targetNamespace"
+ });
+ addAnnotation
+ (doubleObjectEDataType,
+ source,
+ new String[]
+ {
+ "name", "DoubleObject"
+ });
+ addAnnotation
+ (floatObjectEDataType,
+ source,
+ new String[]
+ {
+ "name", "FloatObject"
+ });
+ addAnnotation
+ (intObjectEDataType,
+ source,
+ new String[]
+ {
+ "name", "IntObject"
+ });
+ addAnnotation
+ (javaInfoEClass,
+ source,
+ new String[]
+ {
+ "name", "JavaInfo",
+ "kind", "empty"
+ });
+ addAnnotation
+ (getJavaInfo_JavaClass(),
+ source,
+ new String[]
+ {
+ "kind", "attribute",
+ "name", "javaClass",
+ "namespace", "##targetNamespace"
+ });
+ addAnnotation
+ (longObjectEDataType,
+ source,
+ new String[]
+ {
+ "name", "LongObject"
+ });
+ addAnnotation
+ (shortObjectEDataType,
+ source,
+ new String[]
+ {
+ "name", "ShortObject"
+ });
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * Defines literals for the meta objects that represent
+ * <ul>
+ * <li>each class,</li>
+ * <li>each feature of each class,</li>
+ * <li>each enum,</li>
+ * <li>and each data type</li>
+ * </ul>
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public interface Literals
+ {
+ /**
+ * The meta object literal for the '{@link org.apache.tuscany.sdo.model.java.impl.DocumentRootImpl <em>Document Root</em>}' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see org.apache.tuscany.sdo.model.java.impl.DocumentRootImpl
+ * @see org.apache.tuscany.sdo.model.java.impl.JavaPackageImpl#getDocumentRoot()
+ * @generated
+ */
+ public static final EClass DOCUMENT_ROOT = eINSTANCE.getDocumentRoot();
+
+ /**
+ * The meta object literal for the '<em><b>Mixed</b></em>' attribute list feature.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public static final EAttribute DOCUMENT_ROOT__MIXED = eINSTANCE.getDocumentRoot_Mixed();
+
+ /**
+ * The meta object literal for the '<em><b>XMLNS Prefix Map</b></em>' map feature.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public static final EReference DOCUMENT_ROOT__XMLNS_PREFIX_MAP = eINSTANCE.getDocumentRoot_XMLNSPrefixMap();
+
+ /**
+ * The meta object literal for the '<em><b>XSI Schema Location</b></em>' map feature.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public static final EReference DOCUMENT_ROOT__XSI_SCHEMA_LOCATION = eINSTANCE.getDocumentRoot_XSISchemaLocation();
+
+ /**
+ * The meta object literal for the '<em><b>Extended Instance Class</b></em>' attribute feature.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public static final EAttribute DOCUMENT_ROOT__EXTENDED_INSTANCE_CLASS = eINSTANCE.getDocumentRoot_ExtendedInstanceClass();
+
+ /**
+ * The meta object literal for the '<em><b>Instance Class</b></em>' attribute feature.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public static final EAttribute DOCUMENT_ROOT__INSTANCE_CLASS = eINSTANCE.getDocumentRoot_InstanceClass();
+
+ /**
+ * The meta object literal for the '<em><b>Java Class</b></em>' attribute feature.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public static final EAttribute DOCUMENT_ROOT__JAVA_CLASS = eINSTANCE.getDocumentRoot_JavaClass();
+
+ /**
+ * The meta object literal for the '<em><b>Nested Interfaces</b></em>' attribute feature.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public static final EAttribute DOCUMENT_ROOT__NESTED_INTERFACES = eINSTANCE.getDocumentRoot_NestedInterfaces();
+
+ /**
+ * The meta object literal for the '<em><b>Package</b></em>' attribute feature.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public static final EAttribute DOCUMENT_ROOT__PACKAGE = eINSTANCE.getDocumentRoot_Package();
+
+ /**
+ * The meta object literal for the '{@link org.apache.tuscany.sdo.model.java.impl.JavaInfoImpl <em>Info</em>}' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see org.apache.tuscany.sdo.model.java.impl.JavaInfoImpl
+ * @see org.apache.tuscany.sdo.model.java.impl.JavaPackageImpl#getJavaInfo()
+ * @generated
+ */
+ public static final EClass JAVA_INFO = eINSTANCE.getJavaInfo();
+
+ /**
+ * The meta object literal for the '<em><b>Java Class</b></em>' attribute feature.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public static final EAttribute JAVA_INFO__JAVA_CLASS = eINSTANCE.getJavaInfo_JavaClass();
+
+ /**
+ * The meta object literal for the '<em>Boolean Object</em>' data type.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see java.lang.Boolean
+ * @see org.apache.tuscany.sdo.model.java.impl.JavaPackageImpl#getBooleanObject()
+ * @generated
+ */
+ public static final EDataType BOOLEAN_OBJECT = eINSTANCE.getBooleanObject();
+
+ /**
+ * The meta object literal for the '<em>Byte Object</em>' data type.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see java.lang.Byte
+ * @see org.apache.tuscany.sdo.model.java.impl.JavaPackageImpl#getByteObject()
+ * @generated
+ */
+ public static final EDataType BYTE_OBJECT = eINSTANCE.getByteObject();
+
+ /**
+ * The meta object literal for the '<em>Character Object</em>' data type.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see java.lang.Character
+ * @see org.apache.tuscany.sdo.model.java.impl.JavaPackageImpl#getCharacterObject()
+ * @generated
+ */
+ public static final EDataType CHARACTER_OBJECT = eINSTANCE.getCharacterObject();
+
+ /**
+ * The meta object literal for the '<em>Double Object</em>' data type.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see java.lang.Double
+ * @see org.apache.tuscany.sdo.model.java.impl.JavaPackageImpl#getDoubleObject()
+ * @generated
+ */
+ public static final EDataType DOUBLE_OBJECT = eINSTANCE.getDoubleObject();
+
+ /**
+ * The meta object literal for the '<em>Float Object</em>' data type.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see java.lang.Float
+ * @see org.apache.tuscany.sdo.model.java.impl.JavaPackageImpl#getFloatObject()
+ * @generated
+ */
+ public static final EDataType FLOAT_OBJECT = eINSTANCE.getFloatObject();
+
+ /**
+ * The meta object literal for the '<em>Int Object</em>' data type.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see java.lang.Integer
+ * @see org.apache.tuscany.sdo.model.java.impl.JavaPackageImpl#getIntObject()
+ * @generated
+ */
+ public static final EDataType INT_OBJECT = eINSTANCE.getIntObject();
+
+ /**
+ * The meta object literal for the '<em>Long Object</em>' data type.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see java.lang.Long
+ * @see org.apache.tuscany.sdo.model.java.impl.JavaPackageImpl#getLongObject()
+ * @generated
+ */
+ public static final EDataType LONG_OBJECT = eINSTANCE.getLongObject();
+
+ /**
+ * The meta object literal for the '<em>Short Object</em>' data type.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see java.lang.Short
+ * @see org.apache.tuscany.sdo.model.java.impl.JavaPackageImpl#getShortObject()
+ * @generated
+ */
+ public static final EDataType SHORT_OBJECT = eINSTANCE.getShortObject();
+
+ }
+
+} //JavaPackageImpl
diff --git a/branches/sdo-java-M2/sdo/impl/src/main/java/org/apache/tuscany/sdo/util/BasicSequence.java b/branches/sdo-java-M2/sdo/impl/src/main/java/org/apache/tuscany/sdo/util/BasicSequence.java
new file mode 100644
index 0000000000..4de8b6e1a7
--- /dev/null
+++ b/branches/sdo-java-M2/sdo/impl/src/main/java/org/apache/tuscany/sdo/util/BasicSequence.java
@@ -0,0 +1,137 @@
+/**
+ *
+ * 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.util;
+
+import org.eclipse.emf.ecore.EStructuralFeature;
+import org.eclipse.emf.ecore.util.FeatureMap;
+import org.eclipse.emf.ecore.util.FeatureMapUtil;
+import org.eclipse.emf.ecore.xml.type.XMLTypePackage;
+
+import commonj.sdo.Property;
+import commonj.sdo.Sequence;
+
+/**
+ * SDO Sequance implementation which delegates to a feature map.
+ */
+public class BasicSequence implements Sequence, FeatureMap.Internal.Wrapper
+{
+ protected FeatureMap.Internal featureMap;
+
+ public BasicSequence(FeatureMap.Internal featureMap)
+ {
+ this.featureMap = featureMap;
+ featureMap.setWrapper(this);
+ }
+
+ public FeatureMap featureMap()
+ {
+ return featureMap;
+ }
+
+ public int size()
+ {
+ return featureMap.size();
+ }
+
+ public Property getProperty(int index)
+ {
+ EStructuralFeature feature = featureMap.getEStructuralFeature(index);
+ boolean isText =
+ feature == XMLTypePackage.Literals.XML_TYPE_DOCUMENT_ROOT__TEXT ||
+ feature == XMLTypePackage.Literals.XML_TYPE_DOCUMENT_ROOT__CDATA ||
+ feature == XMLTypePackage.Literals.XML_TYPE_DOCUMENT_ROOT__COMMENT;
+ return isText ? null : (Property)feature;
+ }
+
+ public Object getValue(int index)
+ {
+ return featureMap.getValue(index);
+ }
+
+ public Object setValue(int index, Object value)
+ {
+ return featureMap.setValue(index, value);
+ }
+
+ protected EStructuralFeature getEStructuralFeature(String propertyName)
+ {
+ return featureMap.getEObject().eClass().getEStructuralFeature(propertyName);
+ }
+
+ protected EStructuralFeature getEStructuralFeature(int propertyIndex)
+ {
+ return featureMap.getEObject().eClass().getEStructuralFeature(propertyIndex);
+ }
+
+ public boolean add(String propertyName, Object value)
+ {
+ return featureMap.add(getEStructuralFeature(propertyName), value);
+ }
+
+ public boolean add(int propertyIndex, Object value)
+ {
+ return featureMap.add(getEStructuralFeature(propertyIndex), value);
+ }
+
+ public boolean add(Property property, Object value)
+ {
+ return featureMap.add((EStructuralFeature)property, value);
+ }
+
+ public void add(int index, String propertyName, Object value)
+ {
+ featureMap.add(index, getEStructuralFeature(propertyName), value);
+ }
+
+ public void add(int index, int propertyIndex, Object value)
+ {
+ featureMap.add(index, getEStructuralFeature(propertyIndex), value);
+ }
+
+ public void add(int index, Property property, Object value)
+ {
+ featureMap.add(index, (EStructuralFeature)property, value);
+ }
+
+ public void add(String text)
+ {
+ FeatureMapUtil.addText(featureMap, text);
+ }
+
+ public void add(int index, String text)
+ {
+ FeatureMapUtil.addText(featureMap, index, text);
+ }
+
+ public void remove(int index)
+ {
+ featureMap.remove(index);
+ }
+
+ public void move(int toIndex, int fromIndex)
+ {
+ featureMap.move(toIndex, fromIndex);
+ }
+
+ public String toString()
+ {
+ return featureMap.toString();
+ }
+}
diff --git a/branches/sdo-java-M2/sdo/impl/src/main/java/org/apache/tuscany/sdo/util/DataGraphResourceFactoryImpl.java b/branches/sdo-java-M2/sdo/impl/src/main/java/org/apache/tuscany/sdo/util/DataGraphResourceFactoryImpl.java
new file mode 100644
index 0000000000..d1b86d59fa
--- /dev/null
+++ b/branches/sdo-java-M2/sdo/impl/src/main/java/org/apache/tuscany/sdo/util/DataGraphResourceFactoryImpl.java
@@ -0,0 +1,699 @@
+/**
+ *
+ * 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.util;
+
+
+import java.io.IOException;
+import java.io.InputStream;
+import java.util.ArrayList;
+import java.util.Collection;
+import java.util.Iterator;
+import java.util.List;
+import java.util.Map;
+
+import org.apache.tuscany.sdo.SDOFactory;
+import org.apache.tuscany.sdo.SDOPackage;
+import org.apache.tuscany.sdo.helper.TypeHelperImpl;
+import org.apache.tuscany.sdo.impl.ChangeSummaryImpl;
+import org.apache.tuscany.sdo.impl.DataGraphImpl;
+import org.apache.tuscany.sdo.impl.DynamicDataObjectImpl;
+import org.eclipse.emf.common.util.EMap;
+import org.eclipse.emf.common.util.URI;
+import org.eclipse.emf.ecore.EClass;
+import org.eclipse.emf.ecore.EFactory;
+import org.eclipse.emf.ecore.EObject;
+import org.eclipse.emf.ecore.EPackage;
+import org.eclipse.emf.ecore.EReference;
+import org.eclipse.emf.ecore.EStructuralFeature;
+import org.eclipse.emf.ecore.EcorePackage;
+import org.eclipse.emf.ecore.resource.Resource;
+import org.eclipse.emf.ecore.resource.impl.ResourceFactoryImpl;
+import org.eclipse.emf.ecore.util.EcoreUtil;
+import org.eclipse.emf.ecore.util.ExtendedMetaData;
+import org.eclipse.emf.ecore.xmi.EcoreBuilder;
+import org.eclipse.emf.ecore.xmi.NameInfo;
+import org.eclipse.emf.ecore.xmi.XMLHelper;
+import org.eclipse.emf.ecore.xmi.XMLLoad;
+import org.eclipse.emf.ecore.xmi.XMLResource;
+import org.eclipse.emf.ecore.xmi.XMLSave;
+import org.eclipse.emf.ecore.xmi.impl.SAXXMLHandler;
+import org.eclipse.emf.ecore.xmi.impl.XMLHelperImpl;
+import org.eclipse.emf.ecore.xmi.impl.XMLLoadImpl;
+import org.eclipse.emf.ecore.xmi.impl.XMLResourceImpl;
+import org.eclipse.emf.ecore.xmi.impl.XMLSaveImpl;
+import org.eclipse.emf.ecore.xmi.util.DefaultEcoreBuilder;
+import org.w3c.dom.Element;
+import org.w3c.dom.Node;
+import org.xml.sax.InputSource;
+import org.xml.sax.helpers.DefaultHandler;
+
+import commonj.sdo.ChangeSummary;
+import commonj.sdo.helper.TypeHelper;
+
+
+public class DataGraphResourceFactoryImpl extends ResourceFactoryImpl
+{
+ /**
+ * Constructor for DataGraphResourceFactoryImpl.
+ */
+ public DataGraphResourceFactoryImpl()
+ {
+ super();
+ }
+
+ public Resource createResource(URI uri)
+ {
+ XMLResourceImpl result = new DataGraphResourceImpl(uri);
+
+ ExtendedMetaData extendedMetaData = ((TypeHelperImpl)TypeHelper.INSTANCE).getExtendedMetaData();
+ DataObjectUtil.configureXMLResource(result, extendedMetaData);
+
+ result.getDefaultSaveOptions().put(XMLResource.OPTION_USE_ENCODED_ATTRIBUTE_STYLE, Boolean.TRUE);
+ result.getDefaultLoadOptions().put(XMLResource.OPTION_USE_DEPRECATED_METHODS, Boolean.TRUE);
+ //result.setEncoding("UTF-8");
+ //result.getDefaultLoadOptions().put(XMLResource.OPTION_USE_LEXICAL_HANDLER, Boolean.TRUE);
+ //result.getDefaultSaveOptions().put(XMLResource.OPTION_LINE_WIDTH, new Integer(80));
+
+ return result;
+ }
+
+ public static class DataGraphResourceImpl extends XMLResourceImpl
+ {
+ public DataGraphResourceImpl(URI uri)
+ {
+ super(uri);
+ }
+
+ public static class HelperImpl extends XMLHelperImpl
+ {
+ protected DataGraphImpl eDataGraph;
+
+ protected List resources;
+ protected List uris;
+
+ public HelperImpl(XMLResource xmlResource)
+ {
+ super(xmlResource);
+ }
+
+ public void setResource(XMLResource resource)
+ {
+ super.setResource(resource);
+ if (!resource.getContents().isEmpty())
+ {
+ eDataGraph = (DataGraphImpl)resource.getContents().get(0);
+
+ resources = new ArrayList();
+ uris = new ArrayList();
+
+ resources.add(eDataGraph.getRootResource());
+ uris.add("#" + resource.getURIFragment(eDataGraph) + "/@eRootObject");
+
+ if (eDataGraph.getEChangeSummary() != null)
+ {
+ // Ensure that resource exists.
+ //
+ resources.add(((EObject)eDataGraph.getChangeSummary()).eResource());
+ uris.add("#" + resource.getURIFragment(eDataGraph) + "/@eChangeSummary");
+ }
+
+ if (eDataGraph.eResource() != null && eDataGraph.eResource().getResourceSet() != null)
+ {
+ int count = 0;
+ for (Iterator i = eDataGraph.eResource().getResourceSet().getResources().iterator(); i.hasNext();)
+ {
+ Resource ePackageResource = (Resource)i.next();
+ List resourceContents = ePackageResource.getContents();
+ if (resourceContents.size() == 1 && resourceContents.get(0) instanceof EPackage)
+ {
+ resources.add(ePackageResource);
+ uris.add("#" + resource.getURIFragment(eDataGraph) + "/@models." + count++);
+ }
+ }
+ }
+ }
+ }
+
+ public String getID(EObject eObject)
+ {
+ return super.getID(eObject);
+ }
+
+ public String getIDREF(EObject eObject)
+ {
+ String fragment = super.getIDREF(eObject);
+ if (fragment.startsWith("/"))
+ {
+ int index = resources.indexOf(eObject.eResource());
+ if (index != -1)
+ {
+ fragment = ((String)uris.get(index)).substring(1) + fragment.substring(1);
+ }
+ }
+ return fragment;
+ }
+
+ public String getHREF(EObject eObject)
+ {
+ return super.getHREF(eObject);
+ }
+
+ protected URI getHREF(Resource otherResource, EObject obj)
+ {
+ int index = resources.indexOf(otherResource);
+ if (index == -1)
+ {
+ return super.getHREF(otherResource, obj);
+ }
+ else
+ {
+ return createHREF((String)uris.get(index), otherResource.getURIFragment(obj));
+ }
+ }
+
+ protected URI createHREF(String baseURI, String fragment)
+ {
+ if (fragment.startsWith("/"))
+ {
+ return URI.createURI(baseURI + fragment.substring(1));
+ }
+ else
+ {
+ return URI.createURI("#" + fragment);
+ }
+ }
+
+ public void populateNameInfo(NameInfo nameInfo, EClass c)
+ {
+ if (c == SDOPackage.eINSTANCE.getDataGraph())
+ {
+ if (extendedMetaData != null)
+ {
+ extendedMetaData.demandPackage("commonj.sdo").setNsPrefix("sdo");
+ }
+ nameInfo.setQualifiedName(getQName("commonj.sdo", "datagraph"));
+ nameInfo.setNamespaceURI("commonj.sdo");
+ nameInfo.setLocalPart("datagraph");
+ }
+ else if (c == SDOPackage.eINSTANCE.getChangeSummary())
+ {
+ if (extendedMetaData != null)
+ {
+ extendedMetaData.demandPackage("commonj.sdo").setNsPrefix("sdo");
+ }
+ nameInfo.setQualifiedName("changeSummary");
+ nameInfo.setNamespaceURI(null);
+ nameInfo.setLocalPart("changeSummary");
+ }
+ else
+ {
+ super.populateNameInfo(nameInfo, c);
+ }
+ }
+
+ public String getQName(EClass c)
+ {
+ if (c == SDOPackage.eINSTANCE.getDataGraph())
+ {
+ if (extendedMetaData != null)
+ {
+ extendedMetaData.demandPackage("commonj.sdo").setNsPrefix("sdo");
+ }
+ return getQName("commonj.sdo", "datagraph");
+ }
+ else if (c == SDOPackage.eINSTANCE.getChangeSummary())
+ {
+ if (extendedMetaData != null)
+ {
+ extendedMetaData.demandPackage("commonj.sdo").setNsPrefix("sdo");
+ }
+ return getQName((String)null, "changeSummary");
+ }
+ else
+ {
+ return super.getQName(c);
+ }
+ }
+ }
+
+ protected XMLHelper createXMLHelper()
+ {
+ return new HelperImpl(this);
+ }
+
+ protected EObject getEObjectByID(String id)
+ {
+ List contents = getContents();
+ if (contents.size() >= 1)
+ {
+ Object rootObject = contents.get(0);
+ if (rootObject instanceof DataGraphImpl)
+ {
+ DataGraphImpl eDataGraph = (DataGraphImpl)rootObject;
+ EObject result = eDataGraph.getRootResource().getEObject(id);
+ if (result != null)
+ {
+ return result;
+ }
+ else
+ {
+ ChangeSummary eChangeSummary = eDataGraph.getEChangeSummary();
+ if (eChangeSummary != null)
+ {
+ result = ((EObject)eDataGraph.getChangeSummary()).eResource().getEObject(id);
+ if (result != null)
+ {
+ return result;
+ }
+ }
+ }
+ }
+ }
+ return super.getEObjectByID(id);
+ }
+
+ public static class SaveImpl extends XMLSaveImpl
+ {
+ protected DataGraphImpl eDataGraph;
+
+ public SaveImpl(XMLHelper xmlHelper)
+ {
+ super(xmlHelper);
+ }
+
+ public void traverse(List contents)
+ {
+ if (contents.size() >= 1 && contents.get(0) instanceof DataGraphImpl)
+ {
+ eDataGraph = (DataGraphImpl)contents.get(0);
+
+ Object datagraphMark = null;
+ if (!toDOM)
+ {
+ if (declareXML)
+ {
+ doc.add("<?xml version=\"" + xmlVersion + "\" encoding=\"" + encoding + "\"?>");
+ doc.addLine();
+ }
+ String elementName = helper.getQName(eDataGraph.eClass());
+ doc.startElement(elementName);
+ datagraphMark = doc.mark();
+ }
+ else
+ {
+ helper.populateNameInfo(nameInfo, eDataGraph.eClass());
+ currentNode = document.createElementNS(nameInfo.getNamespaceURI(), nameInfo.getQualifiedName());
+ document.appendChild(currentNode);
+ // not calling handler since there is no corresponding EObject
+ }
+
+ if (eDataGraph.eResource() != null && eDataGraph.eResource().getResourceSet() != null)
+ {
+ List ePackages = new ArrayList();
+ for (Iterator i = eDataGraph.eResource().getResourceSet().getResources().iterator(); i.hasNext();)
+ {
+ List resourceContents = ((Resource)i.next()).getContents();
+ if (resourceContents.size() == 1 && resourceContents.get(0) instanceof EPackage)
+ {
+ ePackages.add(resourceContents.get(0));
+ }
+ }
+ if (!ePackages.isEmpty())
+ {
+ if (!toDOM)
+ {
+ doc.startElement("models");
+ doc.addAttribute("xmlns", "");
+ }
+ else
+ {
+ currentNode = currentNode.appendChild(document.createElementNS(null, "models"));
+ ((Element)currentNode).setAttributeNS(ExtendedMetaData.XMLNS_URI, ExtendedMetaData.XMLNS_PREFIX, "");
+ // not calling handler since there is no corresponding EObject
+ }
+ for (Iterator i = ePackages.iterator(); i.hasNext();)
+ {
+ writeTopObject((EPackage)i.next());
+ }
+ if (!toDOM)
+ {
+ doc.endElement();
+ }
+ else
+ {
+ currentNode = currentNode.getParentNode();
+ }
+ }
+ }
+
+ // use namespace declarations defined in the document (if any)
+ EObject eRootObject = eDataGraph.getERootObject();
+ EReference xmlnsPrefixMapFeature = extendedMetaData.getXMLNSPrefixMapFeature(eRootObject.eClass());
+ if (xmlnsPrefixMapFeature != null)
+ {
+ EMap xmlnsPrefixMap = (EMap)eRootObject.eGet(xmlnsPrefixMapFeature);
+ helper.setPrefixToNamespaceMap(xmlnsPrefixMap);
+ }
+ ChangeSummary changeSummary = eDataGraph.getEChangeSummary();
+
+ if (changeSummary != null)
+ {
+ helper.setMustHavePrefix(true);
+ if (changeSummary.isLogging())
+ {
+ ((ChangeSummaryImpl)changeSummary).summarize();
+ writeTopObject((EObject)changeSummary);
+ }
+ else
+ {
+ writeTopObject((EObject)changeSummary);
+ }
+ helper.setMustHavePrefix(false);
+ }
+
+ if (eRootObject != null && writeTopObject(eRootObject) == null && !toDOM)
+ {
+ doc.addLine();
+ doc.setMixed(false);
+ }
+ if (!toDOM)
+ {
+ doc.endElement();
+ // reset to add namespace declarations
+ //
+ doc.resetToMark(datagraphMark);
+ }
+ else
+ {
+ currentNode = document.getFirstChild();
+ }
+ addNamespaceDeclarations();
+ }
+ else
+ {
+ super.traverse(contents);
+ }
+ }
+
+ protected void writeTopAttributes(EObject top)
+ {
+ if (top == eDataGraph.getEChangeSummary())
+ {
+ if (!toDOM)
+ {
+ doc.addAttribute("xmlns", "");
+ doc.addAttribute("logging", String.valueOf(eDataGraph.getEChangeSummary().isLogging()));
+ }
+ else
+ {
+ ((Element)currentNode).setAttributeNS(ExtendedMetaData.XMLNS_URI, ExtendedMetaData.XMLNS_PREFIX, "");
+ ((Element)currentNode).setAttributeNS("", "logging", String.valueOf(eDataGraph.getEChangeSummary().isLogging()));
+ }
+ }
+ }
+
+ protected EObject getSchemaLocationRoot(EObject eObject)
+ {
+ return eDataGraph.getERootObject();
+ }
+ }
+
+ protected XMLSave createXMLSave()
+ {
+ return new SaveImpl(createXMLHelper());
+ }
+
+ public static class LoadImpl extends XMLLoadImpl
+ {
+ protected boolean resumeLogging = false;
+
+ public void load(XMLResource resource, InputSource inputSource, Map options) throws IOException
+ {
+ super.load(resource, inputSource, options);
+ if (resumeLogging) ((ChangeSummaryImpl)((DataGraphImpl)resource.getContents().get(0)).getChangeSummary()).resumeLogging();
+ }
+
+ public void load(XMLResource resource, InputStream inputStream, Map options) throws IOException
+ {
+ super.load(resource, inputStream, options);
+ if (resumeLogging) ((ChangeSummaryImpl)((DataGraphImpl)resource.getContents().get(0)).getChangeSummary()).resumeLogging();
+ }
+
+ public void load(XMLResource resource, Node node, Map options) throws IOException
+ {
+ super.load(resource, node, options);
+ if (resumeLogging) ((ChangeSummaryImpl)((DataGraphImpl)resource.getContents().get(0)).getChangeSummary()).resumeLogging();
+ }
+
+ public LoadImpl(XMLHelper xmlHelper)
+ {
+ super(xmlHelper);
+ }
+
+ protected DefaultHandler makeDefaultHandler()
+ {
+ return new SAXXMLHandler(resource, helper, options)
+ {
+ protected DataGraphImpl eDataGraph;
+
+ protected boolean isInModels;
+
+ protected List ePackages = new ArrayList();
+
+ protected EObject createDocumentRoot(String prefix, String uri, String name, EFactory eFactory, boolean top)
+ {
+ return null;
+ }
+
+ protected void setAttribValue(EObject object, String name, String value)
+ {
+ if ("logging".equals(name) && object instanceof ChangeSummaryImpl)
+ {
+ resumeLogging = Boolean.valueOf(value).booleanValue();
+ }
+ else
+ {
+ super.setAttribValue(object, name, value);
+ }
+ }
+
+ protected EMap recordNamespacesSchemaLocations(EObject root)
+ {
+ EObject dgroot = eDataGraph.getERootObject();
+ if (dgroot == null)
+ {
+ return null;
+ }
+ EMap prefixToNamespaceMap = super.recordNamespacesSchemaLocations(dgroot);
+ if (prefixToNamespaceMap != null)
+ {
+ for (Iterator i = prefixToNamespaceMap.iterator(); i.hasNext();)
+ {
+ Map.Entry entry = (Map.Entry)i.next();
+ String prefix = (String)entry.getKey();
+ String namespace = (String)entry.getValue();
+ if (namespace.equals("commonj.sdo"))
+ {
+ prefixToNamespaceMap.removeKey(prefix);
+ break;
+ }
+ }
+ }
+ return prefixToNamespaceMap;
+ }
+
+ protected void handleFeature(String prefix, String name)
+ {
+ if (isInModels && objects.size() == 2)
+ {
+ EObject modelObject = createObjectByType(prefix, name, false);
+ processObject(modelObject);
+ ePackages.add(modelObject);
+ }
+ else if (objects.size() == 1)
+ {
+ eDataGraph = (DataGraphImpl)objects.peek();
+ eDataGraph.getResourceSet();
+ if ("".equals(prefix) && "changeSummary".equals(name))
+ {
+ ChangeSummary eChangeSummary = (ChangeSummary)createObjectFromFactory(SDOFactory.eINSTANCE, "ChangeSummary");
+ eDataGraph.setEChangeSummary(eChangeSummary);
+ processObject((EObject)eChangeSummary);
+ }
+ else if ("".equals(prefix) && "models".equals(name))
+ {
+ isInModels = true;
+ types.push(OBJECT_TYPE);
+ objects.push(eDataGraph);
+ mixedTargets.push(null);
+ }
+ else if (eDataGraph.getERootObject() == null)
+ {
+ if (useNewMethods)
+ {
+ handleSchemaLocation();
+ }
+ processSchemaLocations(prefix, name);
+ if (processAnyXML)
+ {
+ // Ensure that anything can be handled, even if it's not recognized.
+ //
+ String namespaceURI = helper.getURI(prefix);
+ if (extendedMetaData.getPackage(namespaceURI) == null)
+ {
+ EStructuralFeature rootFeature = extendedMetaData.demandFeature(namespaceURI, name, true);
+ rootFeature.getEContainingClass().getEPackage().setEFactoryInstance(new DynamicDataObjectImpl.FactoryImpl());
+ }
+ }
+
+ EObject rootObject = createObjectByType(prefix, name, false);
+ eDataGraph.setERootObject(rootObject);
+ processObject(rootObject);
+ if (rootObject != null
+ && rootObject.eClass() == ExtendedMetaData.INSTANCE.getDocumentRoot(rootObject.eClass().getEPackage()))
+ {
+ super.handleFeature(prefix, name);
+
+ // Remove the document root from the stack.
+ //
+ Object mixedTarget = mixedTargets.pop();
+ Object object = objects.pop();
+ mixedTargets.pop();
+ objects.pop();
+ mixedTargets.push(mixedTarget);
+ objects.push(object);
+ }
+ }
+ }
+ else
+ {
+ super.handleFeature(prefix, name);
+ }
+ }
+
+ public void endElement(String uri, String localName, String name)
+ {
+ if (isInModels && objects.size() == 2)
+ {
+ if (!ePackages.isEmpty())
+ {
+ for (Iterator i = ePackages.iterator(); i.hasNext();)
+ {
+ EPackage ePackage = (EPackage)i.next();
+ ePackage.setEFactoryInstance(new DynamicDataObjectImpl.FactoryImpl());
+ Resource resource = resourceSet.createResource(URI.createURI("*.ecore"));
+ resource.getContents().add(ePackage);
+ if (ePackage.getNsURI() != null)
+ {
+ resource.setURI(URI.createURI(ePackage.getNsURI()));
+ }
+
+ if (extendedMetaData != null)
+ {
+ extendedMetaData.putPackage(extendedMetaData.getNamespace(ePackage), ePackage);
+ }
+ else
+ {
+ packageRegistry.put(ePackage.getNsURI(), ePackage);
+ }
+ }
+ handleForwardReferences();
+ }
+ isInModels = false;
+ }
+ super.endElement(uri, localName, name);
+ }
+
+ protected EPackage getPackageForURI(String uriString)
+ {
+ if ("commonj.sdo".equals(uriString))
+ {
+ return SDOPackage.eINSTANCE;
+ }
+ else
+ {
+ return super.getPackageForURI(uriString);
+ }
+ }
+
+ protected EObject createObjectFromFactory(EFactory factory, String typeName)
+ {
+ if (factory == SDOFactory.eINSTANCE)
+ {
+ if ("datagraph".equals(typeName))
+ {
+ return super.createObjectFromFactory(factory, "DataGraph");
+ }
+ }
+ return super.createObjectFromFactory(factory, typeName);
+ }
+
+ protected EcoreBuilder createEcoreBuilder(Map options, ExtendedMetaData extendedMetaData)
+ {
+ return new DefaultEcoreBuilder(extendedMetaData)
+ {
+ public Collection generate(Map urisToLocations) throws Exception
+ {
+ Collection result = super.generate(urisToLocations);
+ return updateDynamicFactory(result);
+ }
+
+ public Collection generate(Collection urisToLocations) throws Exception
+ {
+ Collection result = super.generate(urisToLocations);
+ return updateDynamicFactory(result);
+ }
+
+ protected Collection updateDynamicFactory(Collection result)
+ {
+ for (Iterator i = result.iterator(); i.hasNext();)
+ {
+ Resource resource = (Resource)i.next();
+ for (Iterator j = EcoreUtil.getObjectsByType(resource.getContents(), EcorePackage.eINSTANCE.getEPackage()).iterator(); j.hasNext();)
+ {
+ EPackage ePackage = (EPackage)j.next();
+ ePackage.setEFactoryInstance(new DynamicDataObjectImpl.FactoryImpl());
+ }
+ }
+ return result;
+ }
+
+ };
+ }
+
+ protected EPackage handleMissingPackage(String uriString)
+ {
+ EPackage result = super.handleMissingPackage(uriString);
+ if (processAnyXML && objects.size() == 1)
+ {
+ result = extendedMetaData.demandPackage(uriString);
+ }
+ return result;
+ }
+ };
+ }
+ }
+
+ protected XMLLoad createXMLLoad()
+ {
+ return new LoadImpl(createXMLHelper());
+ }
+ }
+}
diff --git a/branches/sdo-java-M2/sdo/impl/src/main/java/org/apache/tuscany/sdo/util/DataObjectUtil.java b/branches/sdo-java-M2/sdo/impl/src/main/java/org/apache/tuscany/sdo/util/DataObjectUtil.java
new file mode 100644
index 0000000000..328858bcaf
--- /dev/null
+++ b/branches/sdo-java-M2/sdo/impl/src/main/java/org/apache/tuscany/sdo/util/DataObjectUtil.java
@@ -0,0 +1,2681 @@
+/**
+ *
+ * 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.util;
+
+
+import java.math.BigDecimal;
+import java.math.BigInteger;
+import java.text.SimpleDateFormat;
+import java.util.ArrayList;
+import java.util.Date;
+import java.util.HashMap;
+import java.util.HashSet;
+import java.util.List;
+import java.util.Map;
+import java.util.Set;
+import java.util.TimeZone;
+
+import org.apache.tuscany.sdo.SDOExtendedMetaData;
+import org.apache.tuscany.sdo.SDOPackage;
+import org.apache.tuscany.sdo.impl.DataGraphImpl;
+import org.apache.tuscany.sdo.impl.SDOFactoryImpl;
+import org.apache.tuscany.sdo.util.resource.SDOXMLResourceFactoryImpl;
+import org.eclipse.emf.common.util.BasicEList;
+import org.eclipse.emf.common.util.URI;
+import org.eclipse.emf.common.util.UniqueEList;
+import org.eclipse.emf.ecore.EAttribute;
+import org.eclipse.emf.ecore.EClass;
+import org.eclipse.emf.ecore.EClassifier;
+import org.eclipse.emf.ecore.EDataType;
+import org.eclipse.emf.ecore.EFactory;
+import org.eclipse.emf.ecore.EObject;
+import org.eclipse.emf.ecore.EPackage;
+import org.eclipse.emf.ecore.EReference;
+import org.eclipse.emf.ecore.EStructuralFeature;
+import org.eclipse.emf.ecore.EcoreFactory;
+import org.eclipse.emf.ecore.EcorePackage;
+import org.eclipse.emf.ecore.resource.Resource;
+import org.eclipse.emf.ecore.resource.ResourceSet;
+import org.eclipse.emf.ecore.resource.impl.ResourceSetImpl;
+import org.eclipse.emf.ecore.util.EcoreUtil;
+import org.eclipse.emf.ecore.util.ExtendedMetaData;
+import org.eclipse.emf.ecore.util.FeatureMap;
+import org.eclipse.emf.ecore.util.FeatureMapUtil;
+import org.eclipse.emf.ecore.xmi.XMLOptions;
+import org.eclipse.emf.ecore.xmi.XMLParserPool;
+import org.eclipse.emf.ecore.xmi.XMLResource;
+import org.eclipse.emf.ecore.xmi.impl.EMOFResourceFactoryImpl;
+import org.eclipse.emf.ecore.xmi.impl.EcoreResourceFactoryImpl;
+import org.eclipse.emf.ecore.xmi.impl.XMLOptionsImpl;
+import org.eclipse.emf.ecore.xmi.impl.XMLParserPoolImpl;
+import org.eclipse.emf.ecore.xml.type.XMLTypeFactory;
+import org.eclipse.xsd.util.XSDResourceFactoryImpl;
+
+import commonj.sdo.ChangeSummary;
+import commonj.sdo.DataGraph;
+import commonj.sdo.DataObject;
+import commonj.sdo.Property;
+import commonj.sdo.Sequence;
+import commonj.sdo.Type;
+import commonj.sdo.helper.DataHelper;
+import commonj.sdo.helper.TypeHelper;
+
+
+public final class DataObjectUtil
+{
+ public static void setString(DataObject dataObject, Property property, String value) {
+ dataObject.set(property, getSetValue(property, value));
+ }
+
+ public static void setShort(DataObject dataObject, Property property, short value) {
+ dataObject.set(property, getSetValue(property, value));
+ }
+
+ public static void setLong(DataObject dataObject, Property property, long value) {
+ dataObject.set(property, getSetValue(property, value));
+ }
+
+ public static void setList(DataObject dataObject, Property property, List value) {
+ dataObject.set(property, value);
+ }
+
+ public static void setInt(DataObject dataObject, Property property, int value) {
+ dataObject.set(property, getSetValue(property, value));
+ }
+
+ public static void setFloat(DataObject dataObject, Property property, float value) {
+ dataObject.set(property, getSetValue(property, value));
+ }
+
+ public static void setDouble(DataObject dataObject, Property property, double value) {
+ dataObject.set(property, getSetValue(property, value));
+ }
+
+ public static void setDate(DataObject dataObject, Property property, Date value) {
+ dataObject.set(property, getSetValue(property, value));
+ }
+
+ public static void setDataObject(DataObject dataObject, Property property, DataObject value) {
+ dataObject.set(property, value);
+ }
+
+ public static void setChar(DataObject dataObject, Property property, char value) {
+ dataObject.set(property, getSetValue(property, value));
+ }
+
+ public static void setBytes(DataObject dataObject, Property property, byte[] value) {
+ dataObject.set(property, getSetValue(property, value));
+ }
+
+ public static void setByte(DataObject dataObject, Property property, byte value) {
+ dataObject.set(property, getSetValue(property, value));
+ }
+
+ public static void setBoolean(DataObject dataObject, Property property, boolean value) {
+ dataObject.set(property, getSetValue(property, value));
+ }
+
+ public static void setBigInteger(DataObject dataObject, Property property, BigInteger value)
+ {
+ dataObject.set(property, getSetValue(property, value));
+ }
+
+ public static void setBigDecimal(DataObject dataObject, Property property, BigDecimal value)
+ {
+ dataObject.set(property, getSetValue(property, value));
+ }
+
+ public static String getString(DataObject dataObject, Property property)
+ {
+ return getString(dataObject.get(property));
+ }
+
+ public static short getShort(DataObject dataObject, Property property)
+ {
+ return getShort(dataObject.get(property));
+ }
+
+ public static Sequence getSequence(DataObject dataObject, Property property)
+ {
+ return (Sequence)dataObject.get(property);
+ }
+
+ public static long getLong(DataObject dataObject, Property property)
+ {
+ return getLong(dataObject.get(property));
+ }
+
+ public static List getList(DataObject dataObject, Property property)
+ {
+ return (List)dataObject.get(property);
+ }
+
+ public static int getInt(DataObject dataObject, Property property)
+ {
+ return getInt(dataObject.get(property));
+ }
+
+ public static float getFloat(DataObject dataObject, Property property)
+ {
+ return getFloat(dataObject.get(property));
+ }
+
+ public static double getDouble(DataObject dataObject, Property property)
+ {
+ return getDouble(dataObject.get(property));
+ }
+
+ public static Date getDate(DataObject dataObject, Property property)
+ {
+ return getDate(dataObject.get(property));
+ }
+
+ public static DataObject getDataObject(DataObject dataObject, Property property)
+ {
+ return (DataObject)dataObject.get(property);
+ }
+
+ public static char getChar(DataObject dataObject, Property property)
+ {
+ return getChar(dataObject.get(property));
+ }
+
+ public static byte[] getBytes(DataObject dataObject, Property property)
+ {
+ return getBytes(dataObject.get(property));
+ }
+
+ public static byte getByte(DataObject dataObject, Property property)
+ {
+ return getByte(dataObject.get(property));
+ }
+
+ public static boolean getBoolean(DataObject dataObject, Property property)
+ {
+ return getBoolean(dataObject.get(property));
+ }
+
+ public static BigInteger getBigInteger(DataObject dataObject, Property property)
+ {
+ return getBigInteger(dataObject.get(property));
+ }
+
+ public static BigDecimal getBigDecimal(DataObject dataObject, Property property)
+ {
+ return getBigDecimal(dataObject.get(property));
+ }
+
+
+
+ private static Property getPropertyByIndex(DataObject dataObject, int propertyIndex) {
+ EObject eObject = (EObject) dataObject;
+ Property property = (Property)eObject.eClass().getEStructuralFeature(propertyIndex);
+ return property;
+ }
+
+ public static void setString(DataObject dataObject, int propertyIndex, String value) {
+ dataObject.set(propertyIndex, getSetValue(getPropertyByIndex(dataObject, propertyIndex), value));
+ }
+
+ public static void setShort(DataObject dataObject, int propertyIndex, short value) {
+ dataObject.set(propertyIndex, getSetValue(getPropertyByIndex(dataObject, propertyIndex), value));
+ }
+
+ public static void setLong(DataObject dataObject, int propertyIndex, long value) {
+ dataObject.set(propertyIndex, getSetValue(getPropertyByIndex(dataObject, propertyIndex), value));
+ }
+
+ public static void setList(DataObject dataObject, int propertyIndex, List value) {
+ dataObject.set(propertyIndex, value);
+ }
+
+ public static void setInt(DataObject dataObject, int propertyIndex, int value) {
+ dataObject.set(propertyIndex, getSetValue(getPropertyByIndex(dataObject, propertyIndex), value));
+ }
+
+ public static void setFloat(DataObject dataObject, int propertyIndex, float value) {
+ dataObject.set(propertyIndex, getSetValue(getPropertyByIndex(dataObject, propertyIndex), value));
+ }
+
+ public static void setDouble(DataObject dataObject, int propertyIndex, double value) {
+ dataObject.set(propertyIndex, getSetValue(getPropertyByIndex(dataObject, propertyIndex), value));
+ }
+
+ public static void setDate(DataObject dataObject, int propertyIndex, Date value) {
+ dataObject.set(propertyIndex, getSetValue(getPropertyByIndex(dataObject, propertyIndex), value));
+ }
+
+ public static void setDataObject(DataObject dataObject, int propertyIndex, DataObject value) {
+ dataObject.set(propertyIndex, value);
+ }
+
+ public static void setChar(DataObject dataObject, int propertyIndex, char value) {
+ dataObject.set(propertyIndex, getSetValue(getPropertyByIndex(dataObject, propertyIndex), value));
+ }
+
+ public static void setBytes(DataObject dataObject, int propertyIndex, byte[] value) {
+ dataObject.set(propertyIndex, getSetValue(getPropertyByIndex(dataObject, propertyIndex), value));
+ }
+
+ public static void setByte(DataObject dataObject, int propertyIndex, byte value) {
+ dataObject.set(propertyIndex, getSetValue(getPropertyByIndex(dataObject, propertyIndex), value));
+ }
+
+ public static void setBoolean(DataObject dataObject, int propertyIndex, boolean value) {
+ dataObject.set(propertyIndex, getSetValue(getPropertyByIndex(dataObject, propertyIndex), value));
+ }
+
+ public static void setBigInteger(DataObject dataObject, int propertyIndex, BigInteger value)
+ {
+ dataObject.set(propertyIndex, getSetValue(getPropertyByIndex(dataObject, propertyIndex), value));
+ }
+
+ public static void setBigDecimal(DataObject dataObject, int propertyIndex, BigDecimal value)
+ {
+ dataObject.set(propertyIndex, getSetValue(getPropertyByIndex(dataObject, propertyIndex), value));
+ }
+
+ public static String getString(DataObject dataObject, int propertyIndex)
+ {
+ return getString(dataObject.get(propertyIndex));
+ }
+
+ public static short getShort(DataObject dataObject, int propertyIndex)
+ {
+ return getShort(dataObject.get(propertyIndex));
+ }
+
+ public static Sequence getSequence(DataObject dataObject, int propertyIndex)
+ {
+ return (Sequence)dataObject.get(propertyIndex);
+ }
+
+ public static long getLong(DataObject dataObject, int propertyIndex)
+ {
+ return getLong(dataObject.get(propertyIndex));
+ }
+
+ public static List getList(DataObject dataObject, int propertyIndex)
+ {
+ return (List)dataObject.get(propertyIndex);
+ }
+
+ public static int getInt(DataObject dataObject, int propertyIndex)
+ {
+ return getInt(dataObject.get(propertyIndex));
+ }
+
+ public static float getFloat(DataObject dataObject, int propertyIndex)
+ {
+ return getFloat(dataObject.get(propertyIndex));
+ }
+
+ public static double getDouble(DataObject dataObject, int propertyIndex)
+ {
+ return getDouble(dataObject.get(propertyIndex));
+ }
+
+ public static Date getDate(DataObject dataObject, int propertyIndex)
+ {
+ return getDate(dataObject.get(propertyIndex));
+ }
+
+ public static DataObject getDataObject(DataObject dataObject, int propertyIndex)
+ {
+ return (DataObject)dataObject.get(propertyIndex);
+ }
+
+ public static char getChar(DataObject dataObject, int propertyIndex)
+ {
+ return getChar(dataObject.get(propertyIndex));
+ }
+
+ public static byte[] getBytes(DataObject dataObject, int propertyIndex)
+ {
+ return getBytes(dataObject.get(propertyIndex));
+ }
+
+ public static byte getByte(DataObject dataObject, int propertyIndex)
+ {
+ return getByte(dataObject.get(propertyIndex));
+ }
+
+ public static boolean getBoolean(DataObject dataObject, int propertyIndex)
+ {
+ return getBoolean(dataObject.get(propertyIndex));
+ }
+
+ public static BigInteger getBigInteger(DataObject dataObject, int propertyIndex)
+ {
+ return getBigInteger(dataObject.get(propertyIndex));
+ }
+
+ public static BigDecimal getBigDecimal(DataObject dataObject, int propertyIndex)
+ {
+ return getBigDecimal(dataObject.get(propertyIndex));
+ }
+
+ public static void detach(DataObject dataObject) {
+ EcoreUtil.remove((EObject)dataObject);
+ }
+
+ public static DataObject getRootObject(DataObject dataObject)
+ {
+ return (DataObject)EcoreUtil.getRootContainer((EObject)dataObject);
+ }
+
+ public static List getInstanceProperties(DataObject dataObject)
+ {
+ //TODO maybe optimize this to just return type.getProperties if type.isOpen (isOpen would need to be cached)
+ EObject eDataObject = (EObject) dataObject;
+ List result = new UniqueEList(eDataObject.eClass().getEAllStructuralFeatures());
+ for (int i = 0, count = result.size(); i < count; ++i)
+ {
+ EStructuralFeature eStructuralFeature = (EStructuralFeature)result.get(i);
+ if (!eStructuralFeature.isDerived() && FeatureMapUtil.isFeatureMap(eStructuralFeature))
+ {
+ List features = (List)eDataObject.eGet(eStructuralFeature);
+ for (int j = 0, size = features.size(); j < size; ++j)
+ {
+ FeatureMap.Entry entry = (FeatureMap.Entry)features.get(j);
+ EStructuralFeature entryFeature = entry.getEStructuralFeature();
+ result.add(entryFeature);
+ }
+ }
+ }
+ return result;
+ }
+
+ public static void delete(DataObject dataObject)
+ {
+ EObject eDataObject = (EObject)dataObject;
+ EcoreUtil.remove(eDataObject);
+ List contents = new ArrayList((eDataObject).eContents());
+ for (int i = 0, size = contents.size(); i < size; ++i)
+ {
+ ((DataObject)contents.get(i)).delete();
+ }
+ EClass eClass = eDataObject.eClass();
+ for (int i = 0, size = eClass.getFeatureCount(); i < size; ++i)
+ {
+ EStructuralFeature eStructuralFeature = eClass.getEStructuralFeature(i);
+ if (eStructuralFeature.isChangeable() && !eStructuralFeature.isDerived() && !((Property)eStructuralFeature).isReadOnly())
+ {
+ eDataObject.eUnset(eStructuralFeature);
+ }
+ }
+ }
+
+ public static DataObject createDataObject(DataObject dataObject, Property property, Type type)
+ {
+ if (!property.isContainment())
+ {
+ throw new IllegalArgumentException("The property '" + property.getName() + "' of '" + property.getContainingType().getName()
+ + "' isn't a containment");
+ }
+ DataObject result = DataObjectUtil.create(type);
+ if (FeatureMapUtil.isMany((EObject)dataObject, (EStructuralFeature)property))
+ {
+ ((List)dataObject.get(property)).add(result);
+ }
+ else
+ {
+ dataObject.set(property, result);
+ }
+ return result;
+ }
+
+ public static DataObject createDataObject(DataObject dataObject, int propertyIndex, String namespaceURI, String typeName)
+ {
+ Property property = DataObjectUtil.getProperty(dataObject, propertyIndex);
+ Type type = DataObjectUtil.getType(dataObject, namespaceURI, typeName);
+ return createDataObject(dataObject, property, type);
+ }
+
+ public static DataObject createDataObject(DataObject dataObject, String propertyName, String namespaceURI, String typeName)
+ {
+ Property property = getProperty(dataObject, propertyName);
+ Type type = DataObjectUtil.getType(dataObject, namespaceURI, typeName);
+ return createDataObject(dataObject, property, type);
+ }
+
+ public static DataObject createDataObject(DataObject dataObject, Property property)
+ {
+ Type type = property.getType();
+ return createDataObject(dataObject, property, type);
+ }
+
+ public static DataObject createDataObject(DataObject dataObject, int propertyIndex)
+ {
+ Property property = getProperty(dataObject, propertyIndex);
+ Type type = property.getType();
+ return createDataObject(dataObject,property, type);
+ }
+
+ public static DataObject createDataObject(DataObject dataObject, String propertyName)
+ {
+ Property property = (Property)getProperty(dataObject, propertyName);
+ Type type = property.getType();
+ return createDataObject(dataObject,property, type);
+ }
+
+ public static void setString(DataObject dataObject, String path, String value)
+ {
+ Property property = dataObject.getType().getProperty(path);
+ if (property != null)
+ {
+ dataObject.set(property, DataObjectUtil.getSetValue(property, value));
+ }
+ else
+ {
+ DataObjectUtil.Accessor accessor = DataObjectUtil.Accessor.create((EObject)dataObject, path);
+ accessor.setAndRecyle(DataObjectUtil.getSetValue(accessor.getProperty(), value));
+ }
+ }
+
+
+ public static void setShort(DataObject dataObject, String path, short value)
+ {
+ Property property = dataObject.getType().getProperty(path);
+ if (property != null)
+ {
+ dataObject.set(property, DataObjectUtil.getSetValue(property, value));
+ }
+ else
+ {
+ DataObjectUtil.Accessor accessor = DataObjectUtil.Accessor.create((EObject)dataObject, path);
+ accessor.setAndRecyle(DataObjectUtil.getSetValue(accessor.getProperty(), value));
+ }
+ }
+
+ public static void setLong(DataObject dataObject, String path, long value)
+ {
+ Property property = dataObject.getType().getProperty(path);
+ if (property != null)
+ {
+ dataObject.set(property, DataObjectUtil.getSetValue(property, value));
+ }
+ else
+ {
+ DataObjectUtil.Accessor accessor = DataObjectUtil.Accessor.create((EObject)dataObject, path);
+ accessor.setAndRecyle(DataObjectUtil.getSetValue(accessor.getProperty(), value));
+ }
+ }
+
+ public static void setList(DataObject dataObject, String path, List value)
+ {
+ dataObject.set(path, value);
+ }
+
+ public static void setInt(DataObject dataObject, String path, int value)
+ {
+ Property property = dataObject.getType().getProperty(path);
+ if (property != null)
+ {
+ dataObject.set(property, DataObjectUtil.getSetValue(property, value));
+ }
+ else
+ {
+ DataObjectUtil.Accessor accessor = DataObjectUtil.Accessor.create((EObject)dataObject, path);
+ accessor.setAndRecyle(DataObjectUtil.getSetValue(accessor.getProperty(), value));
+ }
+ }
+
+ public static void setFloat(DataObject dataObject, String path, float value)
+ {
+ Property property = dataObject.getType().getProperty(path);
+ if (property != null)
+ {
+ dataObject.set(property, DataObjectUtil.getSetValue(property, value));
+ }
+ else
+ {
+ DataObjectUtil.Accessor accessor = DataObjectUtil.Accessor.create((EObject)dataObject, path);
+ accessor.setAndRecyle(DataObjectUtil.getSetValue(accessor.getProperty(), value));
+ }
+ }
+
+ public static void setDouble(DataObject dataObject, String path, double value)
+ {
+ Property property = dataObject.getType().getProperty(path);
+ if (property != null)
+ {
+ dataObject.set(property, DataObjectUtil.getSetValue(property, value));
+ }
+ else
+ {
+ DataObjectUtil.Accessor accessor = DataObjectUtil.Accessor.create((EObject)dataObject, path);
+ accessor.setAndRecyle(DataObjectUtil.getSetValue(accessor.getProperty(), value));
+ }
+ }
+
+ public static void setDate(DataObject dataObject, String path, Date value)
+ {
+ Property property = dataObject.getType().getProperty(path);
+ if (property != null)
+ {
+ dataObject.set(property, DataObjectUtil.getSetValue(property, value));
+ }
+ else
+ {
+ DataObjectUtil.Accessor accessor = DataObjectUtil.Accessor.create((EObject)dataObject, path);
+ accessor.setAndRecyle(DataObjectUtil.getSetValue(accessor.getProperty(), value));
+ }
+ }
+
+ public static void setDataObject(DataObject dataObject, String path, DataObject value)
+ {
+ dataObject.set(path, value);
+ }
+
+ public static void setChar(DataObject dataObject, String path, char value)
+ {
+ Property property = dataObject.getType().getProperty(path);
+ if (property != null)
+ {
+ dataObject.set(property, DataObjectUtil.getSetValue(property, value));
+ }
+ else
+ {
+ DataObjectUtil.Accessor accessor = DataObjectUtil.Accessor.create((EObject)dataObject, path);
+ accessor.setAndRecyle(DataObjectUtil.getSetValue(accessor.getProperty(), value));
+ }
+ }
+
+ public static void setBytes(DataObject dataObject, String path, byte[] value)
+ {
+ Property property = dataObject.getType().getProperty(path);
+ if (property != null)
+ {
+ dataObject.set(property, DataObjectUtil.getSetValue(property, value));
+ }
+ else
+ {
+ DataObjectUtil.Accessor accessor = DataObjectUtil.Accessor.create((EObject)dataObject, path);
+ accessor.setAndRecyle(DataObjectUtil.getSetValue(accessor.getProperty(), value));
+ }
+ }
+
+ public static void setByte(DataObject dataObject, String path, byte value)
+ {
+ Property property = dataObject.getType().getProperty(path);
+ if (property != null)
+ {
+ dataObject.set(property, DataObjectUtil.getSetValue(property, value));
+ }
+ else
+ {
+ DataObjectUtil.Accessor accessor = DataObjectUtil.Accessor.create((EObject)dataObject, path);
+ accessor.setAndRecyle(DataObjectUtil.getSetValue(accessor.getProperty(), value));
+ }
+ }
+
+ public static void setBoolean(DataObject dataObject, String path, boolean value)
+ {
+ Property property = dataObject.getType().getProperty(path);
+ if (property != null)
+ {
+ dataObject.set(property, DataObjectUtil.getSetValue(property, value));
+ }
+ else
+ {
+ DataObjectUtil.Accessor accessor = DataObjectUtil.Accessor.create((EObject)dataObject, path);
+ accessor.setAndRecyle(DataObjectUtil.getSetValue(accessor.getProperty(), value));
+ }
+ }
+
+ public static void setBigInteger(DataObject dataObject, String path, BigInteger value)
+ {
+ Property property = dataObject.getType().getProperty(path);
+ if (property != null)
+ {
+ dataObject.set(property, DataObjectUtil.getSetValue(property, value));
+ }
+ else
+ {
+ DataObjectUtil.Accessor accessor = DataObjectUtil.Accessor.create((EObject)dataObject, path);
+ accessor.setAndRecyle(DataObjectUtil.getSetValue(accessor.getProperty(), value));
+ }
+ }
+
+ public static void setBigDecimal(DataObject dataObject, String path, BigDecimal value)
+ {
+ Property property = dataObject.getType().getProperty(path);
+ if (property != null)
+ {
+ dataObject.set(property, DataObjectUtil.getSetValue(property, value));
+ }
+ else
+ {
+ DataObjectUtil.Accessor accessor = DataObjectUtil.Accessor.create((EObject)dataObject, path);
+ accessor.setAndRecyle(DataObjectUtil.getSetValue(accessor.getProperty(), value));
+ }
+ }
+
+ public static DataGraph getDataGraph(DataObject dataObject)
+ {
+ Resource resource = ((EObject)dataObject).eResource();
+ if (resource != null)
+ {
+ ResourceSet resourceSet = resource.getResourceSet();
+ if (resourceSet != null)
+ {
+ return (DataGraphImpl)EcoreUtil.getAdapter(resourceSet.eAdapters(), DataGraph.class);
+ }
+ }
+ return null;
+ }
+
+ public static ChangeSummary getChangeSummary(DataObject dataObject)
+ {
+ DataGraph dataGraph = getDataGraph(dataObject);
+ if (dataGraph != null)
+ {
+ return dataGraph.getChangeSummary();
+ }
+ // TODO: handle ChangeSummary-type property
+ return null;
+ }
+
+ public static void unset(DataObject dataObject, String path)
+ {
+ Property property = dataObject.getType().getProperty(path);
+ if (property != null)
+ {
+ dataObject.unset(property);
+ }
+ else
+ {
+ DataObjectUtil.Accessor.create((EObject)dataObject, path).unsetAndRecyle();
+ }
+ }
+
+ public static boolean isSet(DataObject dataObject, String path)
+ {
+ Property property = dataObject.getType().getProperty(path);
+ if (property != null)
+ {
+ return dataObject.isSet(property);
+ }
+ else
+ {
+ return DataObjectUtil.Accessor.create(
+ (EObject)dataObject, path).isSetAndRecyle();
+ }
+ }
+
+ public static void set(DataObject dataObject, String path, Object value)
+ {
+ Property property = dataObject.getType().getProperty(path);
+ if (property != null)
+ {
+ dataObject.set(property, value);
+ }
+ else
+ {
+ DataObjectUtil.Accessor.create(
+ (EObject)dataObject, path).setAndRecyle(value);
+ }
+ }
+
+ public static Object get(DataObject dataObject, String path)
+ {
+ Property property = dataObject.getType().getProperty(path);
+ if (property != null) {
+ return dataObject.get(property);
+ } else {
+ return Accessor.create((EObject)dataObject, path).getAndRecyle();
+ }
+ }
+
+ public static BigDecimal getBigDecimal(Object value)
+ {
+ if (value instanceof BigDecimal)
+ {
+ return (BigDecimal)value;
+ }
+
+ if (value instanceof BigInteger)
+ {
+ return new BigDecimal((BigInteger)value);
+ }
+
+ if (value instanceof Number)
+ {
+ return new BigDecimal(((Number)value).doubleValue());
+ }
+
+ if (value instanceof String)
+ {
+ return new BigDecimal((String)value);
+ }
+
+ if (value == null)
+ {
+ return null;
+ }
+
+ throw new IllegalArgumentException("The value of type '" + value.getClass().getName() + "' cannot be converted to BigDecimal");
+ }
+
+ public static Object getSetValue(Property property, BigDecimal value)
+ {
+ EStructuralFeature eStructuralFeature = (EStructuralFeature)property;
+ EClassifier eType = eStructuralFeature.getEType();
+ if (value == null)
+ {
+ return eType.getDefaultValue();
+ }
+
+ String name = eType.getInstanceClassName();
+ if (name == "java.math.BigDecimal")
+ {
+ return value;
+ }
+
+ if (name == "java.math.BigInteger")
+ {
+ return value.toBigInteger();
+ }
+
+ if (name == "java.lang.Byte" || name == "byte")
+ {
+ return new Byte(value.byteValue());
+ }
+
+ if (name == "java.lang.Double" || name == "double")
+ {
+ return new Double(value.doubleValue());
+ }
+
+ if (name == "java.lang.Float" || name == "float")
+ {
+ return new Float(value.floatValue());
+ }
+
+ if (name == "java.lang.Integer" || name == "int")
+ {
+ return new Integer(value.intValue());
+ }
+
+ if (name == "java.lang.Long" || name == "long")
+ {
+ return new Long(value.longValue());
+ }
+
+ if (name == "java.lang.Short" || name == "short")
+ {
+ return new Short(value.shortValue());
+ }
+
+ if (name == "java.lang.String")
+ {
+ return String.valueOf(value);
+ }
+
+ //Instead of throwing an IllegalArgumentException we will pass the value to the property
+ return value;
+ }
+
+ public static BigInteger getBigInteger(Object value)
+ {
+ if (value instanceof BigInteger)
+ {
+ return (BigInteger)value;
+ }
+
+ if (value instanceof BigDecimal)
+ {
+ return ((BigDecimal)value).toBigInteger();
+ }
+
+ if (value instanceof Number)
+ {
+ return BigInteger.valueOf(((Number)value).longValue());
+ }
+
+ if (value instanceof String)
+ {
+ return new BigInteger((String)value);
+ }
+
+ if (value instanceof byte[])
+ {
+ return new BigInteger((byte[])value);
+ }
+
+ if (value == null)
+ {
+ return null;
+ }
+
+ throw new IllegalArgumentException("The value of type '" + value.getClass().getName() + "' cannot be converted to BigInteger");
+ }
+
+ public static Object getSetValue(Property property, BigInteger value)
+ {
+ EStructuralFeature eStructuralFeature = (EStructuralFeature)property;
+ EClassifier eType = eStructuralFeature.getEType();
+ if (value == null)
+ {
+ return eType.getDefaultValue();
+ }
+
+ String name = eType.getInstanceClassName();
+ if (name == "java.math.BigInteger")
+ {
+ return value;
+ }
+
+ if (name == "java.math.BigDecimal")
+ {
+ return new BigDecimal(value);
+ }
+
+ if (name == "java.lang.Byte" || name == "byte")
+ {
+ return new Byte(value.byteValue());
+ }
+
+ if (name == "java.lang.Double" || name == "double")
+ {
+ return new Double(value.doubleValue());
+ }
+
+ if (name == "java.lang.Float" || name == "float")
+ {
+ return new Float(value.floatValue());
+ }
+
+ if (name == "java.lang.Integer" || name == "int")
+ {
+ return new Integer(value.intValue());
+ }
+
+ if (name == "java.lang.Long" || name == "long")
+ {
+ return new Long(value.longValue());
+ }
+
+ if (name == "java.lang.Short" || name == "short")
+ {
+ return new Short(value.shortValue());
+ }
+
+ if (name == "java.lang.String")
+ {
+ return String.valueOf(value);
+ }
+
+ if (name == "byte[]")
+ {
+ return value.toByteArray();
+ }
+
+ //Instead of throwing an IllegalArgumentException we will pass the value to the property
+ return value;
+ }
+
+ public static boolean getBoolean(Object value)
+ {
+ if (value instanceof Boolean)
+ {
+ return ((Boolean)value).booleanValue();
+ }
+
+ if (value instanceof String)
+ {
+ return Boolean.valueOf((String)value).booleanValue();
+ }
+
+ if (value == null)
+ {
+ return false;
+ }
+
+ throw new IllegalArgumentException("The value of type '" + value.getClass().getName() + "' cannot be converted to boolean");
+ }
+
+ public static Object getSetValue(Property property, boolean value)
+ {
+ EStructuralFeature eStructuralFeature = (EStructuralFeature)property;
+ String name = eStructuralFeature.getEType().getInstanceClassName();
+ if (name == "java.lang.Boolean" || name == "boolean")
+ {
+ return value ? Boolean.TRUE : Boolean.FALSE;
+ }
+
+ if (name == "java.lang.String")
+ {
+ return String.valueOf(value);
+ }
+
+ //Instead of throwing an IllegalArgumentException we will pass the value to the property
+ return value ? Boolean.TRUE : Boolean.FALSE;
+ }
+
+ public static byte getByte(Object value)
+ {
+ if (value instanceof Number)
+ {
+ return ((Number)value).byteValue();
+ }
+
+ if (value instanceof String)
+ {
+ return Byte.parseByte((String)value);
+ }
+
+ if (value == null)
+ {
+ return 0;
+ }
+
+ throw new IllegalArgumentException("The value of type '" + value.getClass().getName() + "' cannot be converted to byte");
+ }
+
+ public static Object getSetValue(Property property, byte value)
+ {
+ EStructuralFeature eStructuralFeature = (EStructuralFeature)property;
+ String name = eStructuralFeature.getEType().getInstanceClassName();
+ if (name == "java.lang.Byte" || name == "byte")
+ {
+ return new Byte(value);
+ }
+
+ if (name == "java.lang.Double" || name == "double")
+ {
+ return new Double(value);
+ }
+
+ if (name == "java.lang.Float" || name == "float")
+ {
+ return new Float(value);
+ }
+
+ if (name == "java.lang.Integer" || name == "int")
+ {
+ return new Integer(value);
+ }
+
+ if (name == "java.lang.Long" || name == "long")
+ {
+ return new Long(value);
+ }
+
+ if (name == "java.lang.Short" || name == "short")
+ {
+ return new Short(value);
+ }
+
+ if (name == "java.math.BigDecimal")
+ {
+ return getBigDecimal(new Byte(value));
+ }
+
+ if (name == "java.math.BigInteger")
+ {
+ return getBigInteger(new Byte(value));
+ }
+
+ if (name == "java.lang.String")
+ {
+ return String.valueOf(value);
+ }
+
+ //Instead of throwing an IllegalArgumentException we will pass the value to the property
+ return new Byte(value);
+ }
+
+ public static byte[] getBytes(Object value)
+ {
+ if (value instanceof byte[])
+ {
+ return (byte[])value;
+ }
+
+ if (value instanceof BigInteger)
+ {
+ return ((BigInteger)value).toByteArray();
+ }
+
+ if (value == null)
+ {
+ return null;
+ }
+
+ throw new IllegalArgumentException("The value of type '" + value.getClass().getName() + "' cannot be converted to byte array");
+ }
+
+ public static Object getSetValue(Property property, byte[] value)
+ {
+ EStructuralFeature eStructuralFeature = (EStructuralFeature)property;
+ EClassifier eType = eStructuralFeature.getEType();
+ if (value == null)
+ {
+ return eType.getDefaultValue();
+ }
+
+ String name = eType.getInstanceClassName();
+ if (name == "byte[]")
+ {
+ return value;
+ }
+
+ if (name == "java.math.BigInteger")
+ {
+ return new BigInteger(value);
+ }
+
+ //Instead of throwing an IllegalArgumentException we will pass the value to the property
+ return value;
+ }
+
+ public static char getChar(Object value)
+ {
+ if (value instanceof Character)
+ {
+ return ((Character)value).charValue();
+ }
+
+ if (value instanceof String)
+ {
+ return ((String)value).charAt(0);
+ }
+
+ if (value == null)
+ {
+ return 0;
+ }
+
+ throw new IllegalArgumentException("The value of type '" + value.getClass().getName() + "' cannot be converted to char");
+ }
+
+ public static Object getSetValue(Property property, char value)
+ {
+ EStructuralFeature eStructuralFeature = (EStructuralFeature)property;
+ String name = eStructuralFeature.getEType().getInstanceClassName();
+ if (name == "java.lang.Character" || name == "char")
+ {
+ return new Character(value);
+ }
+
+ if (name == "java.lang.String")
+ {
+ return String.valueOf(value);
+ }
+
+ //Instead of throwing an IllegalArgumentException we will pass the value to the property
+ return new Character(value);
+ }
+
+ public static Date getDate(Object value)
+ {
+ if (value instanceof String) {
+ return DataHelper.INSTANCE.toDate((String)value);
+ }
+
+ //if (value instanceof XMLCalendar)
+ //{
+ //return ((XMLCalendar)value).getDate();
+ //}
+
+ if (value instanceof Date)
+ {
+ return (Date)value;
+ }
+
+ if (value instanceof Long)
+ {
+ return new Date(((Long)value).longValue());
+ }
+
+ if (value == null)
+ {
+ return null;
+ }
+
+ throw new IllegalArgumentException("The value of type '" + value.getClass().getName() + "' cannot be converted to Date");
+ }
+
+ public static Object getSetValue(Property property, Date value)
+ {
+ EStructuralFeature eStructuralFeature = (EStructuralFeature)property;
+ EClassifier eType = eStructuralFeature.getEType();
+ if (value == null)
+ {
+ return eType.getDefaultValue();
+ }
+
+ String name = eType.getInstanceClassName();
+
+ if (name == "java.lang.String")
+ {
+ String typeName = getDateTypeName((EDataType)eType);
+ if ("DateTime".equals(typeName)) {
+ return DataHelper.INSTANCE.toDateTime(value);
+ }
+ else if ("Day".equals(typeName)) {
+ return DataHelper.INSTANCE.toDay(value);
+ }
+ else if ("Duration".equals(typeName)) {
+ return DataHelper.INSTANCE.toDuration(value);
+ }
+ else if ("Month".equals(typeName)) {
+ return DataHelper.INSTANCE.toMonth(value);
+ }
+ else if ("MonthDay".equals(typeName)) {
+ return DataHelper.INSTANCE.toMonthDay(value);
+ }
+ else if ("Time".equals(typeName)) {
+ return DataHelper.INSTANCE.toTime(value);
+ }
+ else if ("Year".equals(typeName)) {
+ return DataHelper.INSTANCE.toYear(value);
+ }
+ else if ("YearMonth".equals(typeName)) {
+ return DataHelper.INSTANCE.toYearMonth(value);
+ }
+ else if ("YearMonthDay".equals(typeName)) {
+ return DataHelper.INSTANCE.toYearMonthDay(value);
+ }
+ else if ("String".equals(typeName))
+ {
+ return DataHelper.INSTANCE.toDateTime(value);
+ }
+
+ // Instead of throwing an IllegalArgumentException we will pass the value to the property
+ return value;
+ }
+
+ //if (name == "java.util.Date")
+ //{
+ //return new XMLCalendar(value, XMLCalendar.DATE);
+ //}
+
+ if (name == "java.lang.Long" || name == "long")
+ {
+ return new Long(value.getTime());
+ }
+
+ // Instead of throwing an IllegalArgumentException we will pass the value to the property
+ return value;
+ }
+
+ protected static String getDateTypeName(EDataType eDataType)
+ {
+ String name = eDataType.getName();
+ if (("DateTime".equals(name)) ||
+ ("Day".equals(name)) ||
+ ("Duration".equals(name)) ||
+ ("Month".equals(name)) ||
+ ("MonthDay".equals(name)) ||
+ ("Time".equals(name)) ||
+ ("Year".equals(name)) ||
+ ("YearMonth".equals(name)) ||
+ ("YearMonthDay".equals(name)) ||
+ ("String".equals(name)))
+ {
+ return name;
+ }
+
+ EDataType baseType = ExtendedMetaData.INSTANCE.getBaseType(eDataType);
+ if (baseType != null)
+ {
+ return getDateTypeName(baseType);
+ }
+
+ List memberTypes = ExtendedMetaData.INSTANCE.getMemberTypes(eDataType);
+ if (!memberTypes.isEmpty())
+ {
+ for (int i = 0, size = memberTypes.size(); i < size; ++i)
+ {
+ EDataType memberType = (EDataType)memberTypes.get(i);
+ String memberTypeName = getDateTypeName(memberType);
+ if (("DateTime".equals(memberTypeName)) ||
+ ("Day".equals(memberTypeName)) ||
+ ("Duration".equals(memberTypeName)) ||
+ ("Month".equals(memberTypeName)) ||
+ ("MonthDay".equals(memberTypeName)) ||
+ ("Time".equals(memberTypeName)) ||
+ ("Year".equals(memberTypeName)) ||
+ ("YearMonth".equals(memberTypeName)) ||
+ ("YearMonthDay".equals(memberTypeName)) ||
+ ("String".equals(memberTypeName)))
+ {
+ return memberTypeName;
+ }
+ }
+ }
+
+ return "";
+ }
+
+ public static double getDouble(Object value)
+ {
+ if (value instanceof Number)
+ {
+ return ((Number)value).doubleValue();
+ }
+
+ if (value instanceof String)
+ {
+ return Double.parseDouble((String)value);
+ }
+
+ if (value == null)
+ {
+ return 0;
+ }
+
+ throw new IllegalArgumentException("The value of type '" + value.getClass().getName() + "' cannot be converted to double");
+ }
+
+ public static Object getSetValue(Property property, double value)
+ {
+ EStructuralFeature eStructuralFeature = (EStructuralFeature)property;
+ String name = eStructuralFeature.getEType().getInstanceClassName();
+ if (name == "java.lang.Byte" || name == "byte")
+ {
+ return new Byte((byte)value);
+ }
+
+ if (name == "java.lang.Double" || name == "double")
+ {
+ return new Double(value);
+ }
+
+ if (name == "java.lang.Float" || name == "float")
+ {
+ return new Float(value);
+ }
+
+ if (name == "java.lang.Integer" || name == "int")
+ {
+ return new Integer((int)value);
+ }
+
+ if (name == "java.lang.Long" || name == "long")
+ {
+ return new Long((long)value);
+ }
+
+ if (name == "java.lang.Short" || name == "short")
+ {
+ return new Short((short)value);
+ }
+
+ if (name == "java.math.BigDecimal")
+ {
+ return getBigDecimal(new Double(value));
+ }
+
+ if (name == "java.math.BigInteger")
+ {
+ return getBigInteger(new Double(value));
+ }
+
+ if (name == "java.lang.String")
+ {
+ return String.valueOf(value);
+ }
+
+ //Instead of throwing an IllegalArgumentException we will pass the value to the property
+ return new Double(value);
+ }
+
+ public static float getFloat(Object value)
+ {
+ if (value instanceof Number)
+ {
+ return ((Number)value).floatValue();
+ }
+
+ if (value instanceof String)
+ {
+ return Float.parseFloat((String)value);
+ }
+
+ if (value == null)
+ {
+ return 0;
+ }
+
+ throw new IllegalArgumentException("The value of type '" + value.getClass().getName() + "' cannot be converted to float");
+ }
+
+ public static Object getSetValue(Property property, float value)
+ {
+ EStructuralFeature eStructuralFeature = (EStructuralFeature)property;
+ String name = eStructuralFeature.getEType().getInstanceClassName();
+ if (name == "java.lang.Byte" || name == "byte")
+ {
+ return new Byte((byte)value);
+ }
+
+ if (name == "java.lang.Double" || name == "double")
+ {
+ return new Double(value);
+ }
+
+ if (name == "java.lang.Float" || name == "float")
+ {
+ return new Float(value);
+ }
+
+ if (name == "java.lang.Integer" || name == "int")
+ {
+ return new Integer((int)value);
+ }
+
+ if (name == "java.lang.Long" || name == "long")
+ {
+ return new Long((long)value);
+ }
+
+ if (name == "java.lang.Short" || name == "short")
+ {
+ return new Short((short)value);
+ }
+
+ if (name == "java.math.BigDecimal")
+ {
+ return getBigDecimal(new Float(value));
+ }
+
+ if (name == "java.math.BigInteger")
+ {
+ return getBigInteger(new Float(value));
+ }
+
+ if (name == "java.lang.String")
+ {
+ return String.valueOf(value);
+ }
+
+ // Instead of throwing an IllegalArgumentException we will pass the value to the property
+ return new Float(value);
+ }
+
+ public static int getInt(Object value)
+ {
+ if (value instanceof Number)
+ {
+ return ((Number)value).intValue();
+ }
+
+ if (value instanceof String)
+ {
+ return Integer.parseInt((String)value);
+ }
+
+ if (value == null)
+ {
+ return 0;
+ }
+
+ throw new IllegalArgumentException("The value of type '" + value.getClass().getName() + "' cannot be converted to int");
+ }
+
+ public static Object getSetValue(Property property, int value)
+ {
+ EStructuralFeature eStructuralFeature = (EStructuralFeature)property;
+ String name = eStructuralFeature.getEType().getInstanceClassName();
+ if (name == "java.lang.Byte" || name == "byte")
+ {
+ return new Byte((byte)value);
+ }
+
+ if (name == "java.lang.Double" || name == "double")
+ {
+ return new Double(value);
+ }
+
+ if (name == "java.lang.Float" || name == "float")
+ {
+ return new Float(value);
+ }
+
+ if (name == "java.lang.Integer" || name == "int")
+ {
+ return new Integer(value);
+ }
+
+ if (name == "java.lang.Long" || name == "long")
+ {
+ return new Long(value);
+ }
+
+ if (name == "java.lang.Short" || name == "short")
+ {
+ return new Short((short)value);
+ }
+
+ if (name == "java.math.BigDecimal")
+ {
+ return getBigDecimal(new Integer(value));
+ }
+
+ if (name == "java.math.BigInteger")
+ {
+ return getBigInteger(new Integer(value));
+ }
+
+ if (name == "java.lang.String")
+ {
+ return String.valueOf(value);
+ }
+
+ // Instead of throwing an IllegalArgumentException we will pass the value to the property
+ return new Integer(value);
+ }
+
+ public static long getLong(Object value)
+ {
+ if (value instanceof Number)
+ {
+ return ((Number)value).longValue();
+ }
+
+ if (value instanceof String)
+ {
+ return Long.parseLong((String)value);
+ }
+
+ if (value instanceof Date)
+ {
+ return ((Date)value).getTime();
+ }
+
+ if (value == null)
+ {
+ return 0;
+ }
+
+ throw new IllegalArgumentException("The value of type '" + value.getClass().getName() + "' cannot be converted to long");
+ }
+
+ public static Object getSetValue(Property property, long value)
+ {
+ EStructuralFeature eStructuralFeature = (EStructuralFeature)property;
+ String name = eStructuralFeature.getEType().getInstanceClassName();
+ if (name == "java.lang.Byte" || name == "byte")
+ {
+ return new Byte((byte)value);
+ }
+
+ if (name == "java.lang.Double" || name == "double")
+ {
+ return new Double(value);
+ }
+
+ if (name == "java.lang.Float" || name == "float")
+ {
+ return new Float(value);
+ }
+
+ if (name == "java.lang.Integer" || name == "int")
+ {
+ return new Integer((int)value);
+ }
+
+ if (name == "java.lang.Long" || name == "long")
+ {
+ return new Long(value);
+ }
+
+ if (name == "java.lang.Short" || name == "short")
+ {
+ return new Short((short)value);
+ }
+
+ if (name == "java.math.BigDecimal")
+ {
+ return getBigDecimal(new Long(value));
+ }
+
+ if (name == "java.math.BigInteger")
+ {
+ return getBigInteger(new Long(value));
+ }
+
+ if (name == "java.lang.String")
+ {
+ return String.valueOf(value);
+ }
+
+ if (name == "java.util.Date")
+ {
+ return new Date(value);
+ }
+
+ // Instead of throwing an IllegalArgumentException we will pass the value to the property
+ return new Long(value);
+ }
+
+ public static short getShort(Object value)
+ {
+ if (value instanceof Number)
+ {
+ return ((Number)value).shortValue();
+ }
+
+ if (value instanceof String)
+ {
+ return Short.parseShort((String)value);
+ }
+
+ if (value == null)
+ {
+ return 0;
+ }
+
+ throw new IllegalArgumentException("The value of type '" + value.getClass().getName() + "' cannot be converted to short");
+ }
+
+ public static Object getSetValue(Property property, short value)
+ {
+ EStructuralFeature eStructuralFeature = (EStructuralFeature)property;
+ String name = eStructuralFeature.getEType().getInstanceClassName();
+ if (name == "java.lang.Byte" || name == "byte")
+ {
+ return new Byte((byte)value);
+ }
+
+ if (name == "java.lang.Double" || name == "double")
+ {
+ return new Double(value);
+ }
+
+ if (name == "java.lang.Float" || name == "float")
+ {
+ return new Float(value);
+ }
+
+ if (name == "java.lang.Integer" || name == "int")
+ {
+ return new Integer(value);
+ }
+
+ if (name == "java.lang.Long" || name == "long")
+ {
+ return new Long(value);
+ }
+
+ if (name == "java.lang.Short" || name == "short")
+ {
+ return new Short(value);
+ }
+
+ if (name == "java.math.BigDecimal")
+ {
+ return getBigDecimal(new Short(value));
+ }
+
+ if (name == "java.math.BigInteger")
+ {
+ return getBigInteger(new Short(value));
+ }
+
+ if (name == "java.lang.String")
+ {
+ return String.valueOf(value);
+ }
+
+ // Instead of throwing an IllegalArgumentException we will pass the value to the property
+ return new Short(value);
+ }
+
+ public static String getString(Object value)
+ {
+ if (value instanceof String)
+ {
+ return (String)value;
+ }
+
+ if (value instanceof Number || value instanceof Boolean || value instanceof Character)
+ {
+ return String.valueOf(value);
+ }
+
+ if (value instanceof Date)
+ {
+ SimpleDateFormat sdf = new SimpleDateFormat("yyyy'-'MM'-'dd'T'H':'mm':'ss.S'Z'");
+ sdf.setTimeZone(TimeZone.getTimeZone("GMT"));
+ return sdf.format((Date) value);
+ }
+
+ if (value instanceof byte[]) {
+ return XMLTypeFactory.eINSTANCE.convertHexBinary((byte[])value);
+ }
+
+ if (value == null)
+ {
+ return null;
+ }
+
+ throw new IllegalArgumentException("The value of type '" + value.getClass().getName() + "' cannot be converted to String");
+ }
+
+ public static Object getSetValue(Property property, String value)
+ {
+ EStructuralFeature eStructuralFeature = (EStructuralFeature)property;
+ EClassifier eType = eStructuralFeature.getEType();
+ if (value == null)
+ {
+ return eType.getDefaultValue();
+ }
+
+ String name = eType.getInstanceClassName();
+ if (name == "java.lang.String")
+ {
+ return value;
+ }
+
+ if (name == "java.lang.Byte" || name == "byte")
+ {
+ return Byte.valueOf(value);
+ }
+
+ if (name == "java.util.Date")
+ {
+ return DataHelper.INSTANCE.toDate(value);
+ }
+
+ if (name == "java.lang.Double" || name == "double" || name == "java.lang.Number")
+ {
+ return Double.valueOf(value);
+ }
+
+ if (name == "java.lang.Float" || name == "float")
+ {
+ return new Float(value);
+ }
+
+ if (name == "java.lang.Integer" || name == "int")
+ {
+ return Integer.valueOf(value);
+ }
+
+ if (name == "java.lang.Long" || name == "long")
+ {
+ return Long.valueOf(value);
+ }
+
+ if (name == "java.lang.Short" || name == "short")
+ {
+ return Short.valueOf(value);
+ }
+
+ if (name == "java.lang.Character" || name == "char")
+ {
+ return new Character(value.charAt(0));
+ }
+
+ if (name == "java.math.BigDecimal")
+ {
+ return getBigDecimal(value);
+ }
+
+ if (name == "java.math.BigInteger")
+ {
+ return getBigInteger(value);
+ }
+
+ if (name == "java.lang.Boolean" || name == "boolean")
+ {
+ return Boolean.valueOf(value);
+ }
+
+ // Instead of throwing an IllegalArgumentException we will pass the value to the property
+ return value;
+ }
+
+ public static EStructuralFeature getOpenFeature(EObject eObject, int featureID)
+ {
+ EClass eClass = eObject.eClass();
+ int openFeatureCount = featureID - eClass.getFeatureCount();
+ Set openFeatureSet = new HashSet();
+ for (int i = 0, count = eClass.getEAllStructuralFeatures().size(); i < count; ++i)
+ {
+ EStructuralFeature eStructuralFeature = eClass.getEStructuralFeature(i);
+ if (!eStructuralFeature.isDerived() && FeatureMapUtil.isFeatureMap(eStructuralFeature))
+ {
+ List features = (List)eObject.eGet(eStructuralFeature);
+ for (int j = 0, size = features.size(); j < size; ++j)
+ {
+ FeatureMap.Entry entry = (FeatureMap.Entry)features.get(j);
+ EStructuralFeature entryFeature = entry.getEStructuralFeature();
+ if (openFeatureSet.add(entryFeature))
+ {
+ if (--openFeatureCount < 0) return entryFeature;
+ }
+ }
+ }
+ }
+ throw new IndexOutOfBoundsException();
+ }
+
+ public static EStructuralFeature getOpenFeature(EObject eObject, String featureName)
+ {
+ EClass eClass = eObject.eClass();
+ Set openFeatureSet = new HashSet();
+ for (int i = 0, count = eClass.getEAllStructuralFeatures().size(); i < count; ++i)
+ {
+ EStructuralFeature eStructuralFeature = eClass.getEStructuralFeature(i);
+ if (/*!eStructuralFeature.isDerived() && */FeatureMapUtil.isFeatureMap(eStructuralFeature))
+ {
+ List features = (List)eObject.eGet(eStructuralFeature);
+ for (int j = 0, size = features.size(); j < size; ++j)
+ {
+ FeatureMap.Entry entry = (FeatureMap.Entry)features.get(j);
+ EStructuralFeature entryFeature = entry.getEStructuralFeature();
+ if (openFeatureSet.add(entryFeature))
+ {
+ Property property = (Property)entryFeature;
+ if (property.getName().equals(featureName)) return entryFeature;
+
+ List aliasNames = property.getAliasNames();
+ for (int aliasCount = aliasNames.size(); aliasCount > 0; )
+ {
+ if (aliasNames.get(--aliasCount).equals(featureName)) return entryFeature;
+ }
+ }
+ }
+ }
+ }
+ throw new IllegalArgumentException("Class '" + eObject.eClass().getName() + "' does not have a feature named '" + featureName + "'");
+ }
+
+ public static List getAliasNames(EStructuralFeature eStructuralFeature)
+ {
+ List list = SDOExtendedMetaData.INSTANCE.getAliasNames(eStructuralFeature);
+ if (list == null) {
+ list = new ArrayList();
+ }
+ return list;
+ }
+
+ public static List getAliasNames(EClassifier eClassifier)
+ {
+ List list = SDOExtendedMetaData.INSTANCE.getAliasNames(eClassifier);
+ if (list == null) {
+ list = new ArrayList();
+ }
+ return list;
+ }
+
+ /**
+ * Process the default EMF path and minimal XPath syntax.
+ * This design is still under review and construction.
+ *
+ * Syntax:
+ *
+ *<pre>
+ * path = /? (step '/')* step
+ * step = feature
+ * | feature '.' index_from_0
+ * | feature '[' index_from_1 ']'
+ * | reference '[' attribute '=' value ']'
+ * | ..
+ * | '@' step
+ *</pre>
+ *
+ * feature = the name of an attribute or reference
+ * attribute = the name of an attribute
+ * reference = the name of a reference
+ * index = positive integer
+ * value = the string value of an attribute
+ * leading / begins at the root
+ * .. is containing object
+ *
+ * features must be multi-valued to use '.' and '[' operations.
+ * Only the last step may have an attribute as the feature.
+ */
+ public static final class Accessor //TODO rewrite this using SDO APIs
+ {
+ /**
+ * Creates an accessor for the path of the object.
+ */
+ public static Accessor create(EObject eObject, String path)
+ {
+ Accessor result = pool.get();
+ result.init(eObject, path);
+ return result;
+ }
+
+ /**
+ * Only the get and recycle methods should be call; they are the only synchronized methods.
+ */
+ protected static class Pool extends BasicEList
+ {
+ protected Accessor[] accessors;
+
+ public Pool()
+ {
+ super(10);
+ }
+
+ protected Object[] newData(int capacity)
+ {
+ return accessors = new Accessor [capacity];
+ }
+
+ /**
+ * Returns a recyled instance or a new instance.
+ */
+ public synchronized Accessor get()
+ {
+ if (size > 0)
+ {
+ return accessors[--size];
+ }
+ else
+ {
+ return new Accessor();
+ }
+ }
+
+ /** Safely gives the accessor back for recycled use.
+ */
+ public synchronized void recycle(Accessor accessor)
+ {
+ int minimumCapacity = size + 1;
+ if (minimumCapacity > data.length)
+ {
+ grow(minimumCapacity);
+ }
+ accessors[size++] = accessor;
+ }
+ }
+
+ /**
+ * A static thread safe pool of Accessors.
+ */
+ static final Pool pool = new Pool();
+
+ protected static final int NO_INDEX = -1;
+
+ protected EObject eObject;
+
+ protected EStructuralFeature feature;
+
+ protected int index;
+
+ protected Accessor()
+ {
+ }
+
+ protected Accessor(EObject eObject, String path)
+ {
+ init(eObject, path);
+ }
+
+ protected void init(EObject eObject, String path)
+ {
+ this.eObject = eObject;
+
+ // This should only be called with a path right now.
+ //
+ //feature = getType(eObject).getProperty(path).getEStructuralFeature();
+ //if (feature == null)
+ {
+ process(path);
+ }
+ //else
+ {
+ //index = NO_INDEX;
+ }
+ }
+
+ public Object get()
+ {
+ if (feature == null)
+ {
+ return eObject;
+ }
+ else
+ {
+ Object value = eObject.eGet(feature, true);
+ if (index >= 0)
+ {
+ value = ((List)value).get(index);
+ if (value instanceof FeatureMap.Entry)
+ {
+ value = ((FeatureMap.Entry)value).getValue();
+ }
+ }
+ else if (FeatureMapUtil.isFeatureMap(feature))
+ {
+ value = new BasicSequence((FeatureMap.Internal)value);
+ }
+ return value;
+ }
+ }
+
+ public Object getAndRecyle()
+ {
+ Object result = get();
+ pool.recycle(this);
+ return result;
+ }
+
+ public void set(Object newValue)
+ {
+ if (index >= 0)
+ {
+ List list = (List)eObject.eGet(feature, true);
+ list.set(index, newValue);
+ }
+ else
+ {
+ // EATM newValue = string2Enum(feature, newValue);
+ eObject.eSet(feature, newValue);
+ }
+ }
+
+ public void setAndRecyle(Object newValue)
+ {
+ set(newValue);
+ pool.recycle(this);
+ }
+
+ public boolean isSet()
+ {
+ return eObject.eIsSet(feature);
+ }
+
+ public boolean isSetAndRecyle()
+ {
+ boolean result = isSet();
+ pool.recycle(this);
+ return result;
+ }
+
+ public void unset()
+ {
+ eObject.eUnset(feature);
+ }
+
+ public void unsetAndRecyle()
+ {
+ unset();
+ pool.recycle(this);
+ }
+
+ public void recycle()
+ {
+ pool.recycle(this);
+ }
+
+ public EObject getEObject()
+ {
+ return eObject;
+ }
+
+ protected void setEObject(EObject eObject)
+ {
+ this.eObject = eObject;
+ feature = null;
+ index = NO_INDEX;
+ }
+
+ public EStructuralFeature getEStructuralFeature()
+ {
+ return feature;
+ }
+
+ public Property getProperty()
+ {
+ return (Property)feature;
+ }
+
+ protected void setFeatureName(String name)
+ {
+ if (name != null)
+ {
+ feature = (EStructuralFeature)((DataObject)eObject).getProperty(name);
+ }
+ else
+ {
+ feature = null;
+ }
+ index = NO_INDEX;
+ }
+
+ protected int getIndex()
+ {
+ return index;
+ }
+
+ /*
+ * calling constraint, this method is not to be used for semantic of setting index to NO_INDEX
+ */
+ protected void setIndex(int index)
+ {
+ if(index < 0) {
+ // The index value should be greater than 0. An index value which is too high will result in
+ // an index out of bounds generated later on accessing the data.
+ throw new IndexOutOfBoundsException("Index value is too low");
+ }
+ this.index = index;
+ if (!FeatureMapUtil.isMany(eObject, feature))
+ {
+ throw new IndexOutOfBoundsException("Index applies only to multi-valued features.");
+ }
+ }
+
+ protected void process(String pathString)
+ {
+ TokenList tokens = new TokenList(pathString.toCharArray());
+ String token;
+ int size = tokens.size();
+ int x = 0;
+
+ if ("/".equals(tokens.peek(0)))
+ {
+ setEObject(EcoreUtil.getRootContainer(eObject));
+ x++;
+ }
+
+ for (; x < size; x++)
+ {
+ token = tokens.peek(x);
+ char c = token.charAt(0);
+ if ('/' == c)
+ {
+ setEObject((EObject)get());
+ }
+ else if ("..".equals(token))
+ {
+ EObject container = eObject.eContainer();
+ if (container == null)
+ {
+ throw new IllegalArgumentException("No containing object for " + eObject);
+ }
+ setEObject(container);
+ }
+ else if ('.' == c)
+ {
+ x++; // skip .
+ token = tokens.peek(x);
+ int index = Integer.parseInt(token);
+ setIndex(index);
+ }
+ else if ('[' == c)
+ {
+ x++; // skip [
+ token = tokens.peek(x); // name or index
+ char following = tokens.peek(x + 1).charAt(0);
+ if ('=' != following)
+ {
+ int index = Integer.parseInt(token) - 1;
+ setIndex(index);
+ x++; // skip ]
+ }
+ else
+ {
+ x++; // done name
+ x++; // skip =
+ String attributeValue = tokens.peek(x); // value
+ if ("\"".equals(attributeValue))
+ {
+ x++; // skip "
+ attributeValue = tokens.peek(++x);
+ }
+ x++; // skip ]
+ int index = matchingIndex((List)get(), token, attributeValue);
+ if (index < 0)
+ {
+ setEObject(null);
+ }
+ else
+ {
+ setIndex(index);
+ }
+ }
+ }
+ else if ('@' == c)
+ {
+ // skip @
+ }
+ else
+ {
+ setFeatureName(token);
+ }
+ }
+ }
+
+ protected static int matchingIndex(List eObjects, String attributeName, String attributeValue)
+ {
+ for (int i = 0, size = eObjects.size(); i < size; i++)
+ {
+ EObject eObject = (EObject)eObjects.get(i);
+ EStructuralFeature feature = (EStructuralFeature)((Type)eObject.eClass()).getProperty(attributeName);
+ // If feature is null, that means it could be an open feature.
+ if (feature == null)
+ {
+ feature = (EStructuralFeature)DataObjectUtil.getOpenFeature(eObject, attributeName);
+ }
+ if (feature != null)
+ {
+ Object test = eObject.eGet(feature, true);
+ if (test != null)
+ {
+ String testString = EcoreUtil.convertToString((EDataType)feature.getEType(), test);
+ if (attributeValue.equals(testString))
+ {
+ return i;
+ }
+ }
+ }
+ }
+ return -1;
+ }
+
+ protected static class TokenList extends BasicEList
+ {
+ public TokenList(char[] path)
+ {
+ super(4);
+
+ int pathLength = path.length;
+ StringBuffer token = new StringBuffer();
+ char cPrev;
+ char c = 0;
+ char cNext;
+ char stringConstant = 0;
+ for (int pos = 0; pos < pathLength; pos++)
+ {
+ cPrev = c;
+ c = path[pos];
+ cNext = pos < pathLength - 1 ? path[pos + 1] : 0;
+
+ if (stringConstant != 0)
+ {
+ if (c == stringConstant)
+ {
+ endToken(token, true);
+ stringConstant = 0;
+ }
+ else
+ {
+ token.append(c);
+ }
+ }
+ else
+ {
+ switch (c)
+ {
+ case ' ':
+ case 0xA:
+ case 0xD:
+ case 0x9:
+ if (cPrev != ' ')
+ {
+ endToken(token, false);
+ }
+ c = ' ';
+ break;
+
+ case '"':
+ case '\'':
+ endToken(token, false);
+ stringConstant = c;
+ break;
+
+ // double or single tokens
+ case '/':
+ case ':':
+ case '.':
+ if (cPrev != c)
+ {
+ endToken(token, false);
+ }
+ token.append(c);
+ if (cNext != c)
+ {
+ endToken(token, false);
+ }
+ break;
+
+ // single tokens
+ case '*':
+ case '@':
+ case '[':
+ case ']':
+ case '(':
+ case ')':
+ case '|':
+ endToken(token, false);
+ add(String.valueOf(c));
+ break;
+
+ // TODO: < > <= >= + - !=
+ case '!':
+ endToken(token, false);
+ token.append(c);
+ break;
+
+ case '=':
+ endToken(token, false);
+ add(String.valueOf(c));
+ break;
+
+ default:
+ token.append(c);
+ }
+ }
+ }
+ endToken(token, false);
+ }
+
+ public String peek()
+ {
+ return size > 0 ? (String)data[0] : " ";
+ }
+
+ public String peek(int index)
+ {
+ return index < size ? (String)data[index] : " ";
+ }
+
+ public TokenList pop()
+ {
+ remove(0);
+ return this;
+ }
+
+ public TokenList pop(int count)
+ {
+ while (count-- > 0)
+ {
+ remove(count);
+ }
+ return this;
+ }
+
+ protected void endToken(StringBuffer token, boolean includeEmpty)
+ {
+ if (includeEmpty || token.length() > 0)
+ {
+ add(token.toString());
+ }
+ token.setLength(0);
+ }
+
+ protected boolean canContainNull()
+ {
+ return false;
+ }
+
+ protected Object[] newData(int capacity)
+ {
+ return new String [capacity];
+ }
+ }
+
+ public String toString()
+ {
+ StringBuffer result = new StringBuffer("Accessor (object:");
+ result.append(eObject == null ? "null" : eObject.toString());
+ result.append(", feature:");
+ result.append(feature == null ? "null" : feature.getName());
+ result.append(", index:");
+ result.append(index);
+ result.append(")");
+ return result.toString();
+ }
+ }
+
+ public static Type getType(DataObject dataObject, String namespaceURI, String typeName)
+ {
+ DataGraph dataGraph = dataObject.getDataGraph();
+ if (dataGraph != null)
+ {
+ return dataGraph.getType(namespaceURI, typeName);
+ }
+ else
+ {
+ //TODO think about where else to find the type
+ return TypeHelper.INSTANCE.getType(namespaceURI, typeName);
+ }
+ }
+
+ public static Property getProperty(DataObject dataObject, String propertyName)
+ {
+ Property property = dataObject.getType().getProperty(propertyName);
+ if (property == null)
+ {
+ property = (Property)DataObjectUtil.getOpenFeature((EObject)dataObject, propertyName);
+ //throw new IllegalArgumentException("Type '" + dataObject.getType().getName() + "' does not have a property named '" + propertyName + "'");
+ }
+
+ return property;
+ }
+
+ public static Property getProperty(DataObject dataObject, int propertyIndex)
+ {
+ List typeProperties = dataObject.getType().getProperties();
+
+ Property property = propertyIndex < typeProperties.size() ?
+ (Property)typeProperties.get(propertyIndex) :
+ (Property)dataObject.getInstanceProperties().get(propertyIndex);
+
+ //FB maybe should catch bad index exception and throw IllegalArgumentException?
+ return property;
+ }
+
+ public static Property getContainmentProperty(Property property)
+ {
+ if (property.isContainment())
+ {
+ return property;
+ }
+ throw new IllegalArgumentException("The property '" + property.getName() + "' of '" + property.getContainingType().getName()
+ + "' isn't a containment");
+ }
+
+ public static DataObject create(Type type)
+ {
+ return (DataObject)EcoreUtil.create((EClass)type);
+ }
+
+ public static ResourceSet createResourceSet()
+ {
+ ResourceSet result = new ResourceSetImpl();
+ configureResourceSet(result);
+ return result;
+ }
+
+ protected static Map registrations;
+
+ protected static Map getRegistrations()
+ {
+ if (registrations == null)
+ {
+ Map result = new HashMap();
+
+ Resource.Factory factory = Resource.Factory.Registry.INSTANCE.getFactory(URI.createURI("*.datagraph"));
+ result.put("datagraph", factory instanceof DataGraphResourceFactoryImpl ? factory : new DataGraphResourceFactoryImpl());
+
+ factory = Resource.Factory.Registry.INSTANCE.getFactory(URI.createURI("*.ecore"));
+ result.put("ecore", factory instanceof EcoreResourceFactoryImpl ? factory : new EcoreResourceFactoryImpl());
+
+ factory = Resource.Factory.Registry.INSTANCE.getFactory(URI.createURI("*.emof"));
+ result.put("emof", factory instanceof EMOFResourceFactoryImpl ? factory : new EMOFResourceFactoryImpl());
+
+ factory = Resource.Factory.Registry.INSTANCE.getFactory(URI.createURI("*.xsd"));
+ result.put("xsd", factory instanceof XSDResourceFactoryImpl ? factory : new XSDResourceFactoryImpl());
+
+ factory = Resource.Factory.Registry.INSTANCE.getFactory(URI.createURI("*.wsdl"));
+ result.put("wsdl", factory instanceof XSDResourceFactoryImpl ? factory : new XSDResourceFactoryImpl());
+
+ factory = Resource.Factory.Registry.INSTANCE.getFactory(URI.createURI("*.*"));
+ result.put("*", factory instanceof SDOXMLResourceFactoryImpl ? factory : new SDOXMLResourceFactoryImpl());
+
+ registrations = result;
+ }
+
+ return registrations;
+ }
+
+ protected static void configureResourceSet(ResourceSet resourceSet)
+ {
+ resourceSet.getResourceFactoryRegistry().getExtensionToFactoryMap().putAll(getRegistrations());
+ }
+
+ public static EClass createDocumentRoot()
+ {
+ EClass documentRootEClass = EcoreFactory.eINSTANCE.createEClass();
+ ExtendedMetaData.INSTANCE.setName(documentRootEClass, "");
+ ExtendedMetaData.INSTANCE.setContentKind(documentRootEClass, ExtendedMetaData.MIXED_CONTENT);
+
+ EAttribute mixed = EcoreFactory.eINSTANCE.createEAttribute();
+ mixed.setName("mixed");
+ mixed.setEType(EcorePackage.eINSTANCE.getEFeatureMapEntry());
+ mixed.setUpperBound(EStructuralFeature.UNBOUNDED_MULTIPLICITY);
+ ExtendedMetaData.INSTANCE.setName(mixed, ":mixed");
+ ExtendedMetaData.INSTANCE.setFeatureKind(mixed, ExtendedMetaData.ELEMENT_WILDCARD_FEATURE);
+ documentRootEClass.getEStructuralFeatures().add(mixed);
+
+ EReference xmlnsPrefixMap = EcoreFactory.eINSTANCE.createEReference();
+ xmlnsPrefixMap.setName("xMLNSPrefixMap");
+ xmlnsPrefixMap.setEType(EcorePackage.eINSTANCE.getEStringToStringMapEntry());
+ xmlnsPrefixMap.setUpperBound(EStructuralFeature.UNBOUNDED_MULTIPLICITY);
+ xmlnsPrefixMap.setContainment(true);
+ xmlnsPrefixMap.setTransient(true);
+ ExtendedMetaData.INSTANCE.setName(xmlnsPrefixMap, "xmlns:prefix");
+ ExtendedMetaData.INSTANCE.setFeatureKind(xmlnsPrefixMap, ExtendedMetaData.ATTRIBUTE_FEATURE);
+ documentRootEClass.getEStructuralFeatures().add(xmlnsPrefixMap);
+
+ EReference xsiSchemaLocation = EcoreFactory.eINSTANCE.createEReference();
+ xsiSchemaLocation.setName("xSISchemaLocation");
+ xsiSchemaLocation.setEType(EcorePackage.eINSTANCE.getEStringToStringMapEntry());
+ xsiSchemaLocation.setUpperBound(EStructuralFeature.UNBOUNDED_MULTIPLICITY);
+ xsiSchemaLocation.setContainment(true);
+ xsiSchemaLocation.setTransient(true);
+ ExtendedMetaData.INSTANCE.setName(xsiSchemaLocation, "xsi:schemaLocation");
+ ExtendedMetaData.INSTANCE.setFeatureKind(xsiSchemaLocation, ExtendedMetaData.ATTRIBUTE_FEATURE);
+ documentRootEClass.getEStructuralFeatures().add(xsiSchemaLocation);
+
+ return documentRootEClass;
+ }
+
+ /**
+ * Configure EMF to support the SDO runtime by registering a specialized Ecore factory, SDOEcoreFactory.
+ * This static initializion must run before any SDO metadata is created or loaded.
+ * As long as SDO helper classes (e.g., TypeHelper, XMLHelper, etc.) are accessed though their
+ * corresponding INSTANCE fields (e.g., TypeHelper.INSTANCE), or using the SDOUtil methods (e.g.,
+ * SDOUtil.createTypeHelper(), this will always be the case.
+ */
+ static
+ {
+ EPackage.Registry.INSTANCE.put(EcorePackage.eNS_URI, new EPackage.Descriptor()
+ {
+ public EPackage getEPackage()
+ {
+ return EcorePackage.eINSTANCE;
+ }
+
+ public EFactory getEFactory()
+ {
+ return new SDOFactoryImpl.SDOEcoreFactory();
+ }
+ });
+ }
+
+ protected static StringBuffer getXPath(DataObject dataObject, StringBuffer path)
+ {
+ DataObject container = dataObject.getContainer();
+ if (container == null) return path;
+
+ boolean first = path.length() == 0;
+ Property property = dataObject.getContainmentProperty();
+ if (property.isMany())
+ {
+ List list = container.getList(property);
+ int pos = list.indexOf(dataObject);
+ path.insert(0, property.getName() + "." + pos + (first ? "" : "/"));
+ }
+ else
+ {
+ path.insert(0, property.getName() + (first ? "" : "/"));
+ }
+
+ return getXPath(container, path);
+ }
+
+ public static String getXPath(DataObject dataObject)
+ {
+ StringBuffer path = getXPath(dataObject, new StringBuffer());
+ return path.toString();
+ }
+
+ protected static XMLParserPool globalXMLParserPool = new XMLParserPoolImpl();
+
+ public static void configureXMLResource(XMLResource resource, ExtendedMetaData extendedMetaData)
+ {
+ XMLOptions xmlOptions = new XMLOptionsImpl();
+ xmlOptions.setProcessAnyXML(true);
+ resource.getDefaultLoadOptions().put(XMLResource.OPTION_XML_OPTIONS, xmlOptions);
+
+ resource.getDefaultSaveOptions().put(XMLResource.OPTION_EXTENDED_META_DATA, extendedMetaData);
+ resource.getDefaultLoadOptions().put(XMLResource.OPTION_EXTENDED_META_DATA, extendedMetaData);
+
+ resource.getDefaultLoadOptions().put(XMLResource.OPTION_USE_PARSER_POOL, globalXMLParserPool);
+
+ resource.getDefaultLoadOptions().put(XMLResource.OPTION_USE_DEPRECATED_METHODS, Boolean.FALSE);
+
+ resource.getDefaultSaveOptions().put(XMLResource.OPTION_CONFIGURATION_CACHE, Boolean.TRUE);
+ resource.getDefaultLoadOptions().put(XMLResource.OPTION_CONFIGURATION_CACHE, Boolean.TRUE);
+
+ resource.getDefaultLoadOptions().put(XMLResource.OPTION_ANY_TYPE, SDOPackage.eINSTANCE.getAnyTypeDataObject());
+ resource.getDefaultSaveOptions().put(XMLResource.OPTION_ANY_TYPE, SDOPackage.eINSTANCE.getAnyTypeDataObject());
+
+ resource.getDefaultLoadOptions().put(XMLResource.OPTION_ANY_SIMPLE_TYPE, SDOPackage.eINSTANCE.getSimpleAnyTypeDataObject());
+ resource.getDefaultSaveOptions().put(XMLResource.OPTION_ANY_SIMPLE_TYPE, SDOPackage.eINSTANCE.getSimpleAnyTypeDataObject());
+
+ //resource.getDefaultLoadOptions().put(XMLResource.OPTION_USE_XML_NAME_TO_FEATURE_MAP, globalHashMap);
+
+ //resource.getDefaultSaveOptions().put(XMLResource.OPTION_FORMATTED, Boolean.FALSE);
+ }
+
+ public static void initRuntime()
+ {
+ // NOOP since init is done during static initialization of this class. See above.
+ }
+
+ /*
+ public static Object get(org.apache.tuscany.sdo.model.Property property, int propertyIndex) {
+ switch(propertyIndex)
+ {
+ case ModelPackageImpl.PROPERTY__ALIAS_NAME:
+ return property.getAliasName();
+ case ModelPackageImpl.PROPERTY__ANY:
+ return property.getAny();
+ case ModelPackageImpl.PROPERTY__ANY_ATTRIBUTE:
+ return property.getAnyAttribute();
+ case ModelPackageImpl.PROPERTY__CONTAINMENT:
+ return Boolean.valueOf(property.isContainment());
+ case ModelPackageImpl.PROPERTY__DEFAULT:
+ return property.getDefault_();
+ case ModelPackageImpl.PROPERTY__MANY:
+ return Boolean.valueOf(property.isMany());
+ case ModelPackageImpl.PROPERTY__NAME:
+ return property.getName();
+ case ModelPackageImpl.PROPERTY__OPPOSITE:
+ return property.getOpposite_();
+ case ModelPackageImpl.PROPERTY__READ_ONLY:
+ return Boolean.valueOf(property.isReadOnly());
+ case ModelPackageImpl.PROPERTY__TYPE:
+ return property.getType_();
+ }
+ return null;
+ }
+
+ public static boolean isSet(org.apache.tuscany.sdo.model.Property property, int propertyIndex) {
+ switch(propertyIndex)
+ {
+ case ModelPackageImpl.PROPERTY__ALIAS_NAME:
+ return !property.getAliasName().isEmpty();
+ case ModelPackageImpl.PROPERTY__ANY:
+ return false;
+ case ModelPackageImpl.PROPERTY__ANY_ATTRIBUTE:
+ return false;
+ case ModelPackageImpl.PROPERTY__CONTAINMENT:
+ return property.isSetContainment();
+ case ModelPackageImpl.PROPERTY__DEFAULT:
+ return property.getDefault_() != null;
+ case ModelPackageImpl.PROPERTY__MANY:
+ return property.isSetMany();
+ case ModelPackageImpl.PROPERTY__NAME:
+ return property.getName() != null;
+ case ModelPackageImpl.PROPERTY__OPPOSITE:
+ return property.getOpposite_() != null;
+ case ModelPackageImpl.PROPERTY__READ_ONLY:
+ return property.isSetReadOnly();
+ case ModelPackageImpl.PROPERTY__TYPE:
+ return property.getType_() != null;
+ }
+ return false;
+ }
+
+ public static Object get(org.apache.tuscany.sdo.model.Type type, int propertyIndex) {
+ switch (propertyIndex)
+ {
+ case ModelPackageImpl.TYPE__BASE_TYPE:
+ return type.getBaseType();
+ case ModelPackageImpl.TYPE__PROPERTY:
+ return type.getProperty();
+ case ModelPackageImpl.TYPE__ALIAS_NAME:
+ return type.getAliasName();
+ case ModelPackageImpl.TYPE__ANY:
+ return type.getAny();
+ case ModelPackageImpl.TYPE__ABSTRACT:
+ return Boolean.valueOf(type.isAbstract());
+ case ModelPackageImpl.TYPE__DATA_TYPE:
+ return Boolean.valueOf(type.isDataType());
+ case ModelPackageImpl.TYPE__NAME:
+ return type.getName();
+ case ModelPackageImpl.TYPE__OPEN:
+ return Boolean.valueOf(type.isOpen());
+ case ModelPackageImpl.TYPE__SEQUENCED:
+ return Boolean.valueOf(type.isSequenced());
+ case ModelPackageImpl.TYPE__URI:
+ return type.getUri();
+ case ModelPackageImpl.TYPE__ANY_ATTRIBUTE:
+ return type.getAnyAttribute();
+ }
+ return null;
+ }
+
+ public static boolean isSet(org.apache.tuscany.sdo.model.Type type, int propertyIndex) {
+ //FB Note that this implementation has the undesirable effect of invoking lazy creation of feature lists
+ switch (propertyIndex)
+ {
+ case ModelPackageImpl.TYPE__BASE_TYPE:
+ return !type.getBaseType().isEmpty();
+ case ModelPackageImpl.TYPE__PROPERTY:
+ return !type.getProperty().isEmpty();
+ case ModelPackageImpl.TYPE__ALIAS_NAME:
+ return !type.getAliasName().isEmpty();
+ case ModelPackageImpl.TYPE__ANY:
+ return false;
+ case ModelPackageImpl.TYPE__ABSTRACT:
+ return type.isSetAbstract();
+ case ModelPackageImpl.TYPE__DATA_TYPE:
+ return type.isSetDataType();
+ case ModelPackageImpl.TYPE__NAME:
+ return type.getName() != null;
+ case ModelPackageImpl.TYPE__OPEN:
+ return type.isSetOpen();
+ case ModelPackageImpl.TYPE__SEQUENCED:
+ return type.isSetSequenced();
+ case ModelPackageImpl.TYPE__URI:
+ return type.getUri() != null;
+ case ModelPackageImpl.TYPE__ANY_ATTRIBUTE:
+ return false;
+ }
+ return false;
+ }
+ */
+
+}
diff --git a/branches/sdo-java-M2/sdo/impl/src/main/java/org/apache/tuscany/sdo/util/SDOUtil.java b/branches/sdo-java-M2/sdo/impl/src/main/java/org/apache/tuscany/sdo/util/SDOUtil.java
new file mode 100644
index 0000000000..d9d4533d4c
--- /dev/null
+++ b/branches/sdo-java-M2/sdo/impl/src/main/java/org/apache/tuscany/sdo/util/SDOUtil.java
@@ -0,0 +1,702 @@
+/**
+ *
+ * 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.util;
+
+import java.io.IOException;
+import java.io.InputStream;
+import java.io.OutputStream;
+import java.lang.reflect.Field;
+import java.math.BigDecimal;
+import java.math.BigInteger;
+import java.security.AccessController;
+import java.security.PrivilegedExceptionAction;
+import java.util.ArrayList;
+import java.util.Collections;
+import java.util.Date;
+import java.util.HashMap;
+import java.util.HashSet;
+import java.util.Iterator;
+import java.util.List;
+import java.util.Map;
+import java.util.Set;
+
+import org.apache.tuscany.sdo.SDOExtendedMetaData;
+import org.apache.tuscany.sdo.SDOFactory;
+import org.apache.tuscany.sdo.SimpleAnyTypeDataObject;
+import org.apache.tuscany.sdo.helper.CrossScopeCopyHelperImpl;
+import org.apache.tuscany.sdo.helper.DataFactoryImpl;
+import org.apache.tuscany.sdo.helper.SDOExtendedMetaDataImpl;
+import org.apache.tuscany.sdo.helper.TypeHelperImpl;
+import org.apache.tuscany.sdo.helper.XMLHelperImpl;
+import org.apache.tuscany.sdo.helper.XMLStreamHelper;
+import org.apache.tuscany.sdo.helper.XMLStreamHelperImpl;
+import org.apache.tuscany.sdo.helper.XSDHelperImpl;
+import org.apache.tuscany.sdo.impl.DataGraphImpl;
+import org.apache.tuscany.sdo.impl.DynamicDataObjectImpl;
+import org.apache.tuscany.sdo.model.impl.ModelPackageImpl;
+import org.eclipse.emf.common.util.URI;
+import org.eclipse.emf.ecore.EAttribute;
+import org.eclipse.emf.ecore.EClass;
+import org.eclipse.emf.ecore.EClassifier;
+import org.eclipse.emf.ecore.EDataType;
+import org.eclipse.emf.ecore.EObject;
+import org.eclipse.emf.ecore.EPackage;
+import org.eclipse.emf.ecore.EReference;
+import org.eclipse.emf.ecore.EStructuralFeature;
+import org.eclipse.emf.ecore.ETypedElement;
+import org.eclipse.emf.ecore.EcoreFactory;
+import org.eclipse.emf.ecore.EcorePackage;
+import org.eclipse.emf.ecore.impl.EPackageRegistryImpl;
+import org.eclipse.emf.ecore.resource.Resource;
+import org.eclipse.emf.ecore.resource.ResourceSet;
+import org.eclipse.emf.ecore.util.EcoreUtil;
+import org.eclipse.emf.ecore.util.ExtendedMetaData;
+import org.eclipse.emf.ecore.util.FeatureMap;
+import org.eclipse.emf.ecore.util.FeatureMapUtil;
+import org.eclipse.emf.ecore.xml.type.XMLTypePackage;
+
+import commonj.sdo.DataGraph;
+import commonj.sdo.DataObject;
+import commonj.sdo.Property;
+import commonj.sdo.Sequence;
+import commonj.sdo.Type;
+import commonj.sdo.helper.CopyHelper;
+import commonj.sdo.helper.DataFactory;
+import commonj.sdo.helper.TypeHelper;
+import commonj.sdo.helper.XMLHelper;
+import commonj.sdo.helper.XSDHelper;
+
+/**
+ * This class provides some useful static utility functions which are not specified in the SDO
+ * specification itself. Use of the functions in this class is recommended, instead of resorting
+ * to low-level implementation-specific APIs.
+ */
+public final class SDOUtil
+{
+ /**
+ * Create a DataObject wrapper for an instance of the specified dataType.
+ * This method is typically used to create a root object that can be passed to the XMLHelper.save()
+ * method when the root element to be serialized is an XMLSchema simpleType.
+ * @param dataType a Type for which isDataType() returns true.
+ * @param value the instance value.
+ * @return a DataObject wrapper for the specified value.
+ */
+ public static DataObject createDataTypeWrapper(Type dataType, Object value)
+ {
+ SimpleAnyTypeDataObject simpleAnyType = SDOFactory.eINSTANCE.createSimpleAnyTypeDataObject();
+ simpleAnyType.setInstanceType((EDataType)dataType);
+ simpleAnyType.setValue(value);
+ return simpleAnyType;
+ }
+
+ /**
+ * Creates an instance of a data type from the specified string.
+ * @param dataType a Type, for which isDataType() returns true, to instantiate.
+ * @param literal the string value of the dataType.
+ * @return an instance of the dataType.
+ * @see #convertToString(Type, Object)
+ */
+ public static Object createFromString(Type dataType, String literal)
+ {
+ return EcoreUtil.createFromString((EDataType)dataType, literal);
+ }
+
+ /**
+ * Converts an instance of a data type to a string literal representation.
+ * @param dataType the Type, for which isDataType() returns true, of the value to convert.
+ * @param value a value of the dataType.
+ * @return the string literal representation of the value.
+ * @see #createFromString(Type, String)
+ */
+ public static String convertToString(Type dataType, Object value)
+ {
+ return EcoreUtil.convertToString((EDataType)dataType, value);
+ }
+
+ /**
+ * Get the SDO built-in type corresponding to the specified XSD type in the XML Schema
+ * namespace ("http://www.w3.org/2001/XMLSchema").
+ * @param xsdType a type name in the XML Schema namespace.
+ * @return the SDO built-in Type corresponding to the specified XSD type.
+ */
+ public static Type getXSDSDOType(String xsdType)
+ {
+ Type type = null;
+ //if ("anyType".equals(xsdType)) {
+ // type = (Type)SDOPackage.eINSTANCE.getDataObject();
+ //} else {
+ String name = (String)xsdToSdoMappings.get(xsdType);
+ if (name != null) {
+ type = (Type)ModelPackageImpl.eINSTANCE.getEClassifier(name);
+ } else {
+ type = (Type)SDOExtendedMetaData.INSTANCE.getType(XMLTypePackage.eINSTANCE, xsdType);
+ }
+ //}
+ return type;
+ }
+
+ /**
+ * Gets the Sequence corresponding to the specified substitutable Property of the specified DataObject.
+ * @param dataObject the data object.
+ * @param head a substitution group head property.
+ * @return the Sequence corresponding to the specified substitutable Property of the specified DataObject or
+ * null if the specified Property isn't a substitution head.
+ */
+ public static Sequence getSubstitutionValues(DataObject dataObject, Property head)
+ {
+ final EStructuralFeature group = ExtendedMetaData.INSTANCE.getGroup((EStructuralFeature)head);
+ return null == group
+ ? null
+ : (Sequence)((FeatureMap.Internal)((EObject)dataObject).eGet(group)).getWrapper();
+ }
+
+ /**
+ * Get the SDO built-in type corresponding to the specified Java instanceClass.
+ * @param javaClass the Java instanceClass of the type.
+ * @return the SDO built-in Type corresponding to the specified instanceClass.
+ */
+ public static Type getJavaSDOType(Class javaClass)
+ {
+ String name = (String)javaToSdoMappings.get(javaClass);
+ if (name != null)
+ {
+ return (Type)ModelPackageImpl.eINSTANCE.getEClassifier(name);
+ }
+ return null;
+ }
+
+ /**
+ * Return whether at least one value is required for a valid instance of the specified property.
+ * @param the property in question.
+ * @return true if the property is required.
+ */
+ public static boolean isRequired(Property property)
+ {
+ return ((EStructuralFeature)property).isRequired();
+ }
+
+ /**
+ * Returns whether the Property is many-valued given the specified context.
+ * @param property The Property in question
+ * @param context The context to check whether the specified Property is many-valued
+ * @return true if the Property is many-valued given the specified context.
+ */
+ public static boolean isMany(Property property, DataObject context)
+ {
+ return FeatureMapUtil.isMany((EObject) context, (EStructuralFeature) property);
+ }
+
+ /**
+ * Create an empty data graph.
+ * @return the new data graph instance.
+ */
+ public static DataGraph createDataGraph()
+ {
+ return SDOFactory.eINSTANCE.createDataGraph();
+ }
+
+ /**
+ * Set the root object of a data graph.
+ * @param dataGraph the data graph in which to set the root object.
+ * @param rootObject the root object.
+ */
+ public static void setRootObject(DataGraph dataGraph, DataObject rootObject)
+ {
+ ((DataGraphImpl)dataGraph).setERootObject((EObject)rootObject);
+ }
+
+ /**
+ * Load a serialized data graph from the specified insputStream.
+ * @param inputStream the inputStream of the data graph.
+ * @param options loader control options, or null.
+ * @return the de-serialized data graph.
+ * @throws IOException
+ */
+ public static DataGraph loadDataGraph(InputStream inputStream, Map options) throws IOException
+ {
+ ResourceSet resourceSet = DataObjectUtil.createResourceSet();
+ Resource resource = resourceSet.createResource(URI.createURI("all.datagraph"));
+ resource.load(inputStream, options);
+ return (DataGraph)resource.getContents().get(0);
+ }
+
+ /**
+ * Serialize the specified data graph to the specified outputStream.
+ * @param dataGraph the data graph to save.
+ * @param outputStream the outputStream for the data graph.
+ * @param options serializer control options, or null.
+ * @throws IOException
+ */
+ public static void saveDataGraph(DataGraph dataGraph, OutputStream outputStream, Map options) throws IOException
+ {
+ ((DataGraphImpl)dataGraph).getDataGraphResource().save(outputStream, options);
+ }
+
+ /**
+ * Registers the specified {@link Type type}(s) to be serialized along with
+ * the {@link DataObject data object}(s) in the graph. For example, the list of types returned from
+ * {@link TypeHelper#define} can be registered with this method, allowing deserialization of
+ * instances of a dynamically defined model.
+ * @param dataGraph the DataGraph in which to register the specified type(s).
+ * @param types a list containing the type(s) to be registered (TBD or null to automatically register all
+ * types used by the objects in the DataGraph).
+ */
+ public static void registerDataGraphTypes(DataGraph dataGraph, List/*Type*/ types)
+ {
+ //if (types == null)
+ // types = SDOUtil.getDataGraphTypes(dataGraph);
+
+ Set/*EPackage*/ packages = new HashSet();
+ for (final Iterator iterator = types.iterator(); iterator.hasNext(); ) {
+ EClassifier type = (EClassifier)iterator.next();
+ packages.add(type.getEPackage());
+ }
+
+ ResourceSet resourceSet = ((DataGraphImpl)dataGraph).getResourceSet();
+
+ for (Iterator iterator = packages.iterator(); iterator.hasNext(); ) {
+ EPackage typePackage = (EPackage)iterator.next();
+ Resource resource = typePackage.eResource();
+ if (resource == null) {
+ resource = resourceSet.createResource(URI.createURI(".ecore"));
+ resource.setURI(URI.createURI(typePackage.getNsURI()));
+ resource.getContents().add(typePackage);
+ }
+ else if (resource.getResourceSet() != resourceSet)
+ resourceSet.getResources().add(resource);
+ }
+ }
+
+ /**
+ * Create a new TypeHelper instance. The returned type helper will have visibility of types registered
+ * directly by calling a define method on it or by calling define on an associated XSDHelper. It will
+ * also have visibility of static types registered by calling SDOUtil.registerStaticTypes in the
+ * same classLoader scope.
+ * @return the new TypeHelper.
+ */
+ public static TypeHelper createTypeHelper()
+ {
+ EPackage.Registry registry = new EPackageRegistryImpl(EPackage.Registry.INSTANCE);
+ ExtendedMetaData extendedMetaData = new SDOExtendedMetaDataImpl(registry); //TODO create subclass that makes demand() methods synchronous
+ return new TypeHelperImpl(extendedMetaData);
+ }
+
+ /**
+ * Create a new DataFactory, with visibility to types in the specified TypeHelper scope.
+ * @param scope the TypeHelper to use for locating types.
+ * @return the new DataFactory.
+ */
+ public static DataFactory createDataFactory(TypeHelper scope)
+ {
+ return new DataFactoryImpl(scope);
+ }
+
+ /**
+ * Create a new XMLHelper, with visibility to types in the specified TypeHelper scope.
+ * @param scope the TypeHelper to use for locating types.
+ * @return the new XMLHelper.
+ */
+ public static XMLHelper createXMLHelper(TypeHelper scope)
+ {
+ return new XMLHelperImpl(scope);
+ }
+
+ /**
+ * Create a new XSDHelper, with visibility to types in the specified TypeHelper scope.
+ * @param scope the TypeHelper to use for locating and populating types.
+ * @return the new XSDHelper.
+ */
+ public static XSDHelper createXSDHelper(TypeHelper scope)
+ {
+ return new XSDHelperImpl(scope);
+ }
+
+ /**
+ * Create a new XMLStreamHelper, with visibility to types in the specified TypeHelper scope.
+ * @param scope the TypeHelper to use for locating types.
+ * @return the new XMLStreamHelper.
+ */
+ public static XMLStreamHelper createXMLStreamHelper(TypeHelper scope)
+ {
+ return new XMLStreamHelperImpl(scope);
+ }
+
+ /**
+ * Create a new cross scope CopyHelper.
+ * @param targetScope the TypeHelper containing the Types to use to create the copy objects.
+ * @return the new CopyHelper.
+ */
+ public static CopyHelper createCrossScopeCopyHelper(TypeHelper targetScope)
+ {
+ return new CrossScopeCopyHelperImpl(targetScope);
+ }
+
+ /**
+ * Gets all of the types associated with a uri.
+ *
+ * @param scope
+ * the TypeHelper to use for locating types.
+ * @param uri.
+ * Uri of the Types
+ * @return List. List containing instances of Type, null if uri is not found.
+ */
+ public static List getTypes(TypeHelper scope, String uri) {
+
+ EPackage ePackage = ((TypeHelperImpl) scope).getExtendedMetaData().getPackage(uri);
+ if (ePackage != null) {
+ /**
+ * ePackage.getEclassifiers will return an EList ( simple extension of List ).
+ *
+ * When a Type is generated from XML EMF will create a DocumentRoot type As this is EMF specific it should be removed
+ */
+ List result = new ArrayList(ePackage.getEClassifiers());
+ result.remove(((TypeHelperImpl) scope).getExtendedMetaData().getDocumentRoot(ePackage));
+ return result;
+ }
+ return null;
+ }
+
+ public static Type createType(TypeHelper scope, String uri, String name, boolean isDataType)
+ {
+ ExtendedMetaData extendedMetaData = ((TypeHelperImpl)scope).getExtendedMetaData();
+
+ EPackage ePackage = extendedMetaData.getPackage(uri);
+ if (ePackage == null)
+ {
+ ePackage = EcoreFactory.eINSTANCE.createEPackage();
+ ePackage.setEFactoryInstance(new DynamicDataObjectImpl.FactoryImpl());
+ ePackage.setNsURI(uri);
+ String packagePrefix = URI.createURI(uri).trimFileExtension().lastSegment();
+ ePackage.setName(packagePrefix);
+ ePackage.setNsPrefix(packagePrefix);
+ extendedMetaData.putPackage(uri, ePackage);
+ }
+
+ EClassifier eClassifier = ePackage.getEClassifier(name);
+ if (eClassifier != null) // already defined?
+ {
+ //throw new IllegalArgumentException();
+ return null;
+ }
+
+ if (name != null)
+ {
+ eClassifier = isDataType ? (EClassifier)SDOFactory.eINSTANCE.createDataType() : (EClassifier)SDOFactory.eINSTANCE.createClass();
+ eClassifier.setName(name);
+ }
+ else
+ {
+ eClassifier = DataObjectUtil.createDocumentRoot();
+ }
+
+ ePackage.getEClassifiers().add(eClassifier);
+
+ return (Type)eClassifier;
+ }
+
+ public static void addBaseType(Type type, Type baseType)
+ {
+ ((EClass)type).getESuperTypes().add(baseType);
+ }
+
+ public static void addAliasName(Type type, String aliasName)
+ {
+ throw new UnsupportedOperationException(); // TODO: implement this method properly
+ //type.getAliasNames().add(aliasName);
+ }
+
+ public static void setOpen(Type type, boolean isOpen)
+ {
+ if (isOpen == type.isOpen()) return;
+
+ if (isOpen)
+ {
+ EAttribute eAttribute = EcoreFactory.eINSTANCE.createEAttribute();
+ ((EClass)type).getEStructuralFeatures().add(eAttribute);
+
+ eAttribute.setName("any");
+ eAttribute.setUnique(false);
+ eAttribute.setUpperBound(ETypedElement.UNBOUNDED_MULTIPLICITY);
+ eAttribute.setEType(EcorePackage.eINSTANCE.getEFeatureMapEntry());
+ ExtendedMetaData.INSTANCE.setFeatureKind(eAttribute, ExtendedMetaData.ELEMENT_WILDCARD_FEATURE);
+ ExtendedMetaData.INSTANCE.setProcessingKind(eAttribute, ExtendedMetaData.LAX_PROCESSING);
+ ExtendedMetaData.INSTANCE.setWildcards(eAttribute, Collections.singletonList("##any"));
+
+ //FB TBD Add an "anyAttribute" EAttribute as well.
+
+ if (type.isSequenced()) {
+ eAttribute.setDerived(true);
+ eAttribute.setTransient(true);
+ eAttribute.setVolatile(true);
+ }
+ }
+ else
+ {
+ EClass eClass = (EClass)type;
+ EAttribute any = (EAttribute)eClass.getEStructuralFeature("any");
+ eClass.getEStructuralFeatures().remove(any);
+ }
+ }
+
+ public static void setSequenced(Type type, boolean isSequenced)
+ {
+ if (isSequenced == type.isSequenced()) return;
+
+ // currently, we require setSequenced to be called first, before anything else is added to the type.
+ if (type.isDataType() || !type.getProperties().isEmpty())
+ {
+ if (type.getName() != null) // document root is a special case
+ throw new IllegalArgumentException();
+ }
+
+ if (isSequenced) {
+ EClass eClass = (EClass)type;
+ ExtendedMetaData.INSTANCE.setContentKind(eClass, ExtendedMetaData.MIXED_CONTENT);
+ EAttribute mixedFeature = EcoreFactory.eINSTANCE.createEAttribute();
+ mixedFeature.setName("mixed");
+ mixedFeature.setUnique(false);
+ mixedFeature.setEType(EcorePackage.eINSTANCE.getEFeatureMapEntry());
+ mixedFeature.setLowerBound(0);
+ mixedFeature.setUpperBound(-1);
+ eClass.getEStructuralFeatures().add(mixedFeature);
+ ExtendedMetaData.INSTANCE.setFeatureKind(mixedFeature, ExtendedMetaData.ELEMENT_WILDCARD_FEATURE);
+ ExtendedMetaData.INSTANCE.setName(mixedFeature, ":mixed");
+ }
+ else
+ {
+ // nothing to do, because of current restriction that setSequence must be called first.
+ }
+ }
+
+ public static void setAbstract(Type type, boolean isAbstract)
+ {
+ ((EClass)type).setAbstract(isAbstract);
+ }
+
+ public static void setJavaClassName(Type type, String javaClassName)
+ {
+ ((EClassifier)type).setInstanceClassName(javaClassName);
+ }
+
+ public static Property createProperty(Type containingType, String name, Type propertyType)
+ {
+ EStructuralFeature eStructuralFeature =
+ propertyType.isDataType() ?
+ (EStructuralFeature)SDOFactory.eINSTANCE.createAttribute() :
+ (EStructuralFeature)SDOFactory.eINSTANCE.createReference();
+
+ eStructuralFeature.setName(name);
+ eStructuralFeature.setEType((EClassifier)propertyType);
+ ((EClass)containingType).getEStructuralFeatures().add(eStructuralFeature);
+
+ //if (containingType.getName() == null)
+ if ("".equals(ExtendedMetaData.INSTANCE.getName((EClass)containingType))) // DocumentRoot containingType?
+ {
+ //FB TBD ... figure out how to decide whether to use ELEMENT_FEATURE or ATTRIBUTE_FEATURE
+ ExtendedMetaData.INSTANCE.setFeatureKind(eStructuralFeature, ExtendedMetaData.ELEMENT_FEATURE);
+
+ ExtendedMetaData.INSTANCE.setNamespace(eStructuralFeature, containingType.getURI());
+ //FB???eStructuralFeature.setUnique(false);
+ //FB???eStructuralFeature.setUpperBound(ETypedElement.UNSPECIFIED_MULTIPLICITY);
+ }
+
+ if (containingType.isSequenced()) {
+ eStructuralFeature.setDerived(true);
+ eStructuralFeature.setTransient(true);
+ eStructuralFeature.setVolatile(true);
+ }
+
+ return (Property)eStructuralFeature;
+ }
+
+ public static void addAliasName(Property property, String aliasName)
+ {
+ throw new UnsupportedOperationException(); // TODO: implement this method properly
+ //property.getAliasNames().add(aliasName);
+ }
+
+ public static void setMany(Property property, boolean isMany)
+ {
+ ((EStructuralFeature)property).setUpperBound(isMany ? EStructuralFeature.UNBOUNDED_MULTIPLICITY : 1);
+ }
+
+ public static void setContainment(Property property, boolean isContainment)
+ {
+ ((EReference)property).setContainment(isContainment);
+ }
+
+ public static void setDefault(Property property, String defaultValue)
+ {
+ ((EStructuralFeature)property).setDefaultValueLiteral(defaultValue);
+ }
+
+ public static void setReadOnly(Property property, boolean isReadOnly)
+ {
+ ((EStructuralFeature)property).setChangeable(!isReadOnly);
+ }
+
+ public static void setOpposite(Property property, Property opposite)
+ {
+ ((EReference)property).setEOpposite((EReference)opposite);
+ }
+
+ /**
+ * Register and initialize the SDO types supported by the specified generated factory class.
+ * This function must be called before instances of the generated types can be created/used.
+ * The registered types will be visible in all TypeHelper's created in the same classLoader
+ * scope as the call to this function.
+ * @param factoryClass the generated factory class.
+ */
+ public static void registerStaticTypes(Class factoryClass)
+ {
+ //TODO this implementation is temporary, until the SDO generated factory pattern is decided
+ //
+ String temp = factoryClass.getName().replaceFirst("Factory$", "PackageImpl");
+ int lastDot = temp.lastIndexOf('.');
+ String packageName = temp.substring(0, lastDot) + ".impl" + temp.substring(lastDot);
+ try // this case handles the current default generator pattern
+ {
+ Class javaClass = getPackageClass(factoryClass, packageName);
+ Field field = javaClass.getField("eINSTANCE");
+ field.get(null);
+ }
+ catch (Exception e1)
+ {
+ packageName = factoryClass.getName().replaceFirst("Factory$", "Package");
+ try // this case handles the -noInterfaces generator pattern
+ {
+ Class javaClass = getPackageClass(factoryClass, packageName);
+ Field field = javaClass.getField("eINSTANCE");
+ field.get(null);
+ }
+ catch (Exception e2)
+ {
+ try // this case handles the -noEMF generator pattern
+ {
+ Field field = factoryClass.getField("INSTANCE");
+ field.get(null);
+ }
+ catch (Exception e3)
+ {
+ e3.printStackTrace();
+ }
+ }
+ }
+ }
+
+ private static Class getPackageClass(Class factoryClass, String packageName) throws Exception
+ {
+ final Class factoryClassTemp = factoryClass;
+ final String packageNameTemp = packageName;
+ return (Class)AccessController.doPrivileged(new PrivilegedExceptionAction() {
+ public Object run() throws Exception {
+ return factoryClassTemp.getClassLoader().loadClass(packageNameTemp);
+ }
+ });
+ }
+
+ //Java instance class to SDO mappings (p.69 - p.71 of the SDO spec)
+ private static Map javaToSdoMappings = new HashMap();
+ static {
+ javaToSdoMappings.put(boolean.class, "Boolean");
+ javaToSdoMappings.put(byte.class, "Byte");
+ javaToSdoMappings.put(char.class, "Character");
+ javaToSdoMappings.put(Date.class, "Date");
+ javaToSdoMappings.put(BigDecimal.class, "Decimal");
+ javaToSdoMappings.put(double.class, "Double");
+ javaToSdoMappings.put(float.class, "Float");
+ javaToSdoMappings.put(int.class, "Int");
+ javaToSdoMappings.put(BigInteger.class, "Integer");
+ javaToSdoMappings.put(long.class, "Long");
+ javaToSdoMappings.put(Object.class, "Object");
+ javaToSdoMappings.put(short.class, "Short");
+ javaToSdoMappings.put(String.class, "String");
+ javaToSdoMappings.put(Boolean.class, "BooleanObject");
+ javaToSdoMappings.put(Byte.class, "ByteObject");
+ javaToSdoMappings.put(Character.class, "CharacterObject");
+ javaToSdoMappings.put(Double.class, "DoubleObject");
+ javaToSdoMappings.put(Float.class, "FloatObject");
+ javaToSdoMappings.put(Integer.class, "IntObject");
+ javaToSdoMappings.put(Long.class, "LongObject");
+ javaToSdoMappings.put(Short.class, "ShortObject");
+ }
+
+ //XSD to SDO mappings (p.95 of the SDO spec)
+ private static Map xsdToSdoMappings = new HashMap();
+ static {
+ xsdToSdoMappings.put("anySimpleType", "Object");
+ xsdToSdoMappings.put("anyType", "DataObject");
+ xsdToSdoMappings.put("anyURI", "URI");
+ // SDO Spec issue: both base64Binary and hexBinary are mapped to Bytes. Workaround is to let base64Binary
+ // fall through to use EMF's default: XMLTypePackage.base64Binary
+ // xsdToSdoMappings.put("base64Binary", "Bytes");
+ xsdToSdoMappings.put("boolean", "Boolean");
+ xsdToSdoMappings.put("byte", "Byte");
+ xsdToSdoMappings.put("date", "YearMonthDay");
+ xsdToSdoMappings.put("dateTime", "DateTime");
+ xsdToSdoMappings.put("decimal", "Decimal");
+ xsdToSdoMappings.put("double", "Double");
+ xsdToSdoMappings.put("duration", "Duration");
+ xsdToSdoMappings.put("ENTITIES", "Strings");
+ xsdToSdoMappings.put("ENTITY", "String");
+ xsdToSdoMappings.put("float", "Float");
+ xsdToSdoMappings.put("gDay", "Day");
+ xsdToSdoMappings.put("gMonth", "Month");
+ xsdToSdoMappings.put("gMonthDay", "MonthDay");
+ xsdToSdoMappings.put("gYear", "Year");
+ xsdToSdoMappings.put("gYearMonth", "YearMonth");
+ xsdToSdoMappings.put("hexBinary", "Bytes");
+ xsdToSdoMappings.put("ID","String");
+ xsdToSdoMappings.put("IDREF","String");
+ xsdToSdoMappings.put("IDREFS","Strings");
+ xsdToSdoMappings.put("int","Int");
+ xsdToSdoMappings.put("integer","Integer");
+ xsdToSdoMappings.put("language","String");
+ xsdToSdoMappings.put("long","Long");
+ xsdToSdoMappings.put("Name","String");
+ xsdToSdoMappings.put("NCName","String");
+ xsdToSdoMappings.put("negativeInteger","Integer");
+ xsdToSdoMappings.put("NMTOKEN","String");
+ xsdToSdoMappings.put("NMTOKENS","Strings");
+ xsdToSdoMappings.put("nonNegativeInteger","Integer");
+ xsdToSdoMappings.put("nonPositiveInteger","Integer");
+ xsdToSdoMappings.put("normalizedString","String");
+ xsdToSdoMappings.put("NOTATION","String");
+ xsdToSdoMappings.put("positiveInteger","Integer");
+ xsdToSdoMappings.put("QName","URI");
+ xsdToSdoMappings.put("short","Short");
+ xsdToSdoMappings.put("string","String");
+ xsdToSdoMappings.put("time","Time");
+ xsdToSdoMappings.put("token","String");
+ xsdToSdoMappings.put("unsignedByte","Short");
+ xsdToSdoMappings.put("unsignedInt","Long");
+ xsdToSdoMappings.put("unsignedLong","Integer");
+ xsdToSdoMappings.put("unsignedShort","Int");
+ }
+
+ /**
+ * Initialize SDO runtime.
+ */
+ static
+ {
+ DataObjectUtil.initRuntime();
+ }
+
+}
diff --git a/branches/sdo-java-M2/sdo/impl/src/main/java/org/apache/tuscany/sdo/util/StAX2SAXAdapter.java b/branches/sdo-java-M2/sdo/impl/src/main/java/org/apache/tuscany/sdo/util/StAX2SAXAdapter.java
new file mode 100644
index 0000000000..932fcff8cb
--- /dev/null
+++ b/branches/sdo-java-M2/sdo/impl/src/main/java/org/apache/tuscany/sdo/util/StAX2SAXAdapter.java
@@ -0,0 +1,250 @@
+/**
+ *
+ * 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.util;
+
+import javax.xml.namespace.QName;
+import javax.xml.stream.Location;
+import javax.xml.stream.XMLStreamConstants;
+import javax.xml.stream.XMLStreamException;
+import javax.xml.stream.XMLStreamReader;
+
+import org.xml.sax.Attributes;
+import org.xml.sax.ContentHandler;
+import org.xml.sax.Locator;
+import org.xml.sax.SAXException;
+import org.xml.sax.helpers.AttributesImpl;
+
+/**
+ * Adapter that converts from StAX to SAX event streams. Currently the following SAX events are not generated:
+ * <ul>
+ * <li>ignorableWhitespace</li>
+ * <li>skippedEntity</li>
+ * <ul>
+ * Also the following StAX events are not mapped:
+ * <ul>
+ * <li>CDATA</li>
+ * <li>COMMENT</li>
+ * <li>DTD</li>
+ * <li>ENTITY_DECLARATION</li>
+ * <li>ENTITY_REFERENCE</li>
+ * <li>NOTATION_DECLARATION</li>
+ * <li>SPACE</li>
+ * </ul>
+ * StAX ATTRIBUTE events are ignored but the equivalent attributes (derived from the START_ELEMENT event) are supplied in the SAX startElement event's
+ * Attributes parameter. If the adaptor is configured to pass namespace prefixes then namespace information will also be included in the Attributes;
+ * StAX NAMESPACE events are ignored.
+ * <p/>
+ * Another issue is namespace processing. If the reader is positioned at a sub-node, we cannot capture all the in-scope namespace bindings. Therefore
+ * we cannot re-create a proper SAX event stream from a StAX parser.
+ * <p/>
+ * For example
+ * <p/>
+ * &lt;a:root xmlns:a="foo" xmlns:b="bar"&gt;&lt;b:sub&gt;a:foo&lt;/b:sub&gt;&lt;/a:root&gt;
+ * <p/>
+ * And if you are handed a parser at &lt;b:sub&gt;, then your SAX events should look like:
+ * <p/>
+ * &lt;b:sub xmlns:a="foo" xmlns:b="bar"&gt;a:foo&lt;/b:sub&gt;
+ * <p/>
+ * not:
+ * <p/>
+ * &lt;b:sub&gt;a:foo&lt;/b:sub&gt;
+ * <p/>
+ * <p/>
+ * Proposal: we change the receiver of SAX events (SDOXMLResourceImpl) so that it uses NamespaceContext to resolve prefix (as opposed to record
+ * start/endPrefixMappings and use it for resolution.)
+ *
+ * @version $Rev$ $Date$
+ */
+public class StAX2SAXAdapter {
+ private final boolean namespacePrefixes;
+
+ /**
+ * Construct a new StAX to SAX adapter that will convert a StAX event stream into a SAX event stream.
+ *
+ * @param namespacePrefixes whether xmlns attributes should be included in startElement events;
+ */
+ public StAX2SAXAdapter(boolean namespacePrefixes) {
+ this.namespacePrefixes = namespacePrefixes;
+ }
+
+ /**
+ * Pull events from the StAX stream and dispatch to the SAX ContentHandler. The StAX stream would typically be located on a START_DOCUMENT or
+ * START_ELEMENT event and when this method returns it will be located on the associated END_DOCUMENT or END_ELEMENT event. Behaviour with other
+ * start events is undefined.
+ *
+ * @param reader StAX event source to read
+ * @param handler SAX ContentHandler for processing events
+ * @throws XMLStreamException if there was a problem reading the stream
+ * @throws SAXException passed through from the ContentHandler
+ */
+ public void parse(XMLStreamReader reader, ContentHandler handler) throws XMLStreamException, SAXException {
+ handler.setDocumentLocator(new LocatorAdaptor(reader.getLocation()));
+
+ // remembers the nest level of elements to know when we are done
+ int level = 0;
+ int event = reader.getEventType();
+ while (true) {
+ switch (event) {
+ case XMLStreamConstants.START_DOCUMENT:
+ level++;
+ handler.startDocument();
+ break;
+ case XMLStreamConstants.START_ELEMENT:
+ level++;
+ handleStartElement(reader, handler);
+ break;
+ case XMLStreamConstants.PROCESSING_INSTRUCTION:
+ handler.processingInstruction(reader.getPITarget(), reader.getPIData());
+ break;
+ case XMLStreamConstants.CHARACTERS:
+ handler.characters(reader.getTextCharacters(), reader.getTextStart(), reader.getTextLength());
+ break;
+ case XMLStreamConstants.END_ELEMENT:
+ handleEndElement(reader, handler);
+ level--;
+ if (level == 0) {
+ return;
+ }
+ break;
+ case XMLStreamConstants.END_DOCUMENT:
+ handler.endDocument();
+ return;
+ /*
+ * uncomment to handle all events rather than just mapped ones // StAX events that are not mapped to SAX case XMLStreamConstants.COMMENT:
+ * case XMLStreamConstants.SPACE: case XMLStreamConstants.ENTITY_REFERENCE: case XMLStreamConstants.DTD: case XMLStreamConstants.CDATA:
+ * case XMLStreamConstants.NOTATION_DECLARATION: case XMLStreamConstants.ENTITY_DECLARATION: break; // StAX events handled in
+ * START_ELEMENT case XMLStreamConstants.ATTRIBUTE: case XMLStreamConstants.NAMESPACE: break; default: throw new AssertionError("Unknown
+ * StAX event: " + event);
+ */
+ }
+ event = reader.next();
+ }
+ }
+
+ private void handleStartElement(XMLStreamReader reader, ContentHandler handler) throws SAXException {
+ // send startPrefixMapping events immediately before startElement event
+ int nsCount = reader.getNamespaceCount();
+ for (int i = 0; i < nsCount; i++) {
+ String prefix = reader.getNamespacePrefix(i);
+ if (prefix == null) { // true for default namespace
+ prefix = "";
+ }
+ handler.startPrefixMapping(prefix, reader.getNamespaceURI(i));
+ }
+
+ // fire startElement
+ QName qname = reader.getName();
+ String prefix = qname.getPrefix();
+ String rawname;
+ if (prefix == null || prefix.length() == 0) {
+ rawname = qname.getLocalPart();
+ } else {
+ rawname = prefix + ':' + qname.getLocalPart();
+ }
+ Attributes attrs = getAttributes(reader);
+ handler.startElement(qname.getNamespaceURI(), qname.getLocalPart(), rawname, attrs);
+ }
+
+ private static void handleEndElement(XMLStreamReader reader, ContentHandler handler) throws SAXException {
+ // fire endElement
+ QName qname = reader.getName();
+ handler.endElement(qname.getNamespaceURI(), qname.getLocalPart(), qname.toString());
+
+ // send endPrefixMapping events immediately after endElement event
+ // we send them in the opposite order to that returned but this is not actually required by SAX
+ int nsCount = reader.getNamespaceCount();
+ for (int i = nsCount - 1; i >= 0; i--) {
+ String prefix = reader.getNamespacePrefix(i);
+ if (prefix == null) { // true for default namespace
+ prefix = "";
+ }
+ handler.endPrefixMapping(prefix);
+ }
+ }
+
+ /**
+ * Get the attributes associated with the current START_ELEMENT event.
+ *
+ * @return the StAX attributes converted to org.xml.sax.Attributes
+ */
+ private Attributes getAttributes(XMLStreamReader reader) {
+ assert reader.getEventType() == XMLStreamConstants.START_ELEMENT;
+
+ AttributesImpl attrs = new AttributesImpl();
+
+ // add namespace declarations if required
+ if (namespacePrefixes) {
+ for (int i = 0; i < reader.getNamespaceCount(); i++) {
+ String prefix = reader.getNamespacePrefix(i);
+ String uri = reader.getNamespaceURI(i);
+ attrs.addAttribute(null, prefix, "xmlns:" + prefix, "CDATA", uri);
+ }
+ }
+
+ // Regular attributes
+ for (int i = 0; i < reader.getAttributeCount(); i++) {
+ String uri = reader.getAttributeNamespace(i);
+ if (uri == null) {
+ uri = "";
+ }
+ String localName = reader.getAttributeLocalName(i);
+ String prefix = reader.getAttributePrefix(i);
+ String qname;
+ if (prefix == null || prefix.length() == 0) {
+ qname = localName;
+ } else {
+ qname = prefix + ':' + localName;
+ }
+ String type = reader.getAttributeType(i);
+ String value = reader.getAttributeValue(i);
+
+ attrs.addAttribute(uri, localName, qname, type, value);
+ }
+
+ return attrs;
+ }
+
+ /**
+ * Adaptor for mapping Locator information.
+ */
+ private static class LocatorAdaptor implements Locator {
+ private final Location location;
+
+ private LocatorAdaptor(Location location) {
+ this.location = location;
+ }
+
+ public int getColumnNumber() {
+ return location == null ? 0 : location.getColumnNumber();
+ }
+
+ public int getLineNumber() {
+ return location == null ? 0 : location.getLineNumber();
+ }
+
+ public String getPublicId() {
+ return location == null ? "" : location.getPublicId();
+ }
+
+ public String getSystemId() {
+ return location == null ? "" : location.getSystemId();
+ }
+ }
+}
diff --git a/branches/sdo-java-M2/sdo/impl/src/main/java/org/apache/tuscany/sdo/util/metadata/JavaMetaData.java b/branches/sdo-java-M2/sdo/impl/src/main/java/org/apache/tuscany/sdo/util/metadata/JavaMetaData.java
new file mode 100644
index 0000000000..d52e9a4e51
--- /dev/null
+++ b/branches/sdo-java-M2/sdo/impl/src/main/java/org/apache/tuscany/sdo/util/metadata/JavaMetaData.java
@@ -0,0 +1,88 @@
+/**
+ *
+ * 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.util.metadata;
+
+
+/**
+ * <!-- begin-user-doc -->
+ * A representation of the model object '<em><b>Java Meta Data</b></em>'.
+ * <!-- end-user-doc -->
+ *
+ * <p>
+ * The following features are supported:
+ * <ul>
+ * <li>{@link org.apache.tuscany.sdo.util.metadata.JavaMetaData#getFactoryInterface <em>Factory Interface</em>}</li>
+ * <li>{@link org.apache.tuscany.sdo.util.metadata.JavaMetaData#getTypeInterface <em>Type Interface</em>}</li>
+ * </ul>
+ * </p>
+ *
+ * @generated
+ */
+public interface JavaMetaData
+{
+ /**
+ * Returns the value of the '<em><b>Factory Interface</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <p>
+ * If the meaning of the '<em>Factory Interface</em>' attribute isn't clear,
+ * there really should be more of a description here...
+ * </p>
+ * <!-- end-user-doc -->
+ * @return the value of the '<em>Factory Interface</em>' attribute.
+ * @see #setFactoryInterface(String)
+ * @generated
+ */
+ String getFactoryInterface();
+
+ /**
+ * Sets the value of the '{@link org.apache.tuscany.sdo.util.metadata.JavaMetaData#getFactoryInterface <em>Factory Interface</em>}' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @param value the new value of the '<em>Factory Interface</em>' attribute.
+ * @see #getFactoryInterface()
+ * @generated
+ */
+ void setFactoryInterface(String value);
+
+ /**
+ * Returns the value of the '<em><b>Type Interface</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <p>
+ * If the meaning of the '<em>Type Interface</em>' attribute isn't clear,
+ * there really should be more of a description here...
+ * </p>
+ * <!-- end-user-doc -->
+ * @return the value of the '<em>Type Interface</em>' attribute.
+ * @see #setTypeInterface(String)
+ * @generated
+ */
+ String getTypeInterface();
+
+ /**
+ * Sets the value of the '{@link org.apache.tuscany.sdo.util.metadata.JavaMetaData#getTypeInterface <em>Type Interface</em>}' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @param value the new value of the '<em>Type Interface</em>' attribute.
+ * @see #getTypeInterface()
+ * @generated
+ */
+ void setTypeInterface(String value);
+
+} // JavaMetaData
diff --git a/branches/sdo-java-M2/sdo/impl/src/main/java/org/apache/tuscany/sdo/util/metadata/MetadataFactory.java b/branches/sdo-java-M2/sdo/impl/src/main/java/org/apache/tuscany/sdo/util/metadata/MetadataFactory.java
new file mode 100644
index 0000000000..7d16e6be83
--- /dev/null
+++ b/branches/sdo-java-M2/sdo/impl/src/main/java/org/apache/tuscany/sdo/util/metadata/MetadataFactory.java
@@ -0,0 +1,76 @@
+/**
+ *
+ * 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.util.metadata;
+
+
+/**
+ * <!-- begin-user-doc -->
+ * The <b>Factory</b> for the model.
+ * It provides a create method for each non-abstract class of the model.
+ * <!-- end-user-doc -->
+ * @generated
+ */
+public interface MetadataFactory
+{
+ /**
+ * The singleton instance of the factory.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ MetadataFactory INSTANCE = org.apache.tuscany.sdo.util.metadata.impl.MetadataFactoryImpl.eINSTANCE;
+
+ /**
+ * Returns a new object of class '<em>Java Meta Data</em>'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return a new object of class '<em>Java Meta Data</em>'.
+ * @generated
+ */
+ JavaMetaData createJavaMetaData();
+
+ /**
+ * Returns a new object of class '<em>SDO Meta Data Group</em>'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return a new object of class '<em>SDO Meta Data Group</em>'.
+ * @generated
+ */
+ SDOMetaDataGroup createSDOMetaDataGroup();
+
+ /**
+ * Returns a new object of class '<em>Type Meta Data</em>'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return a new object of class '<em>Type Meta Data</em>'.
+ * @generated
+ */
+ TypeMetaData createTypeMetaData();
+
+ /**
+ * Returns a new object of class '<em>XSD Meta Data</em>'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return a new object of class '<em>XSD Meta Data</em>'.
+ * @generated
+ */
+ XSDMetaData createXSDMetaData();
+
+} //MetadataFactory
diff --git a/branches/sdo-java-M2/sdo/impl/src/main/java/org/apache/tuscany/sdo/util/metadata/SDOMetaDataGroup.java b/branches/sdo-java-M2/sdo/impl/src/main/java/org/apache/tuscany/sdo/util/metadata/SDOMetaDataGroup.java
new file mode 100644
index 0000000000..dcdb3d77ca
--- /dev/null
+++ b/branches/sdo-java-M2/sdo/impl/src/main/java/org/apache/tuscany/sdo/util/metadata/SDOMetaDataGroup.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.util.metadata;
+
+import java.util.List;
+
+import commonj.sdo.helper.TypeHelper;
+
+/**
+ * <!-- begin-user-doc -->
+ * A representation of the model object '<em><b>SDO Meta Data Group</b></em>'.
+ * <!-- end-user-doc -->
+ *
+ * <p>
+ * The following features are supported:
+ * <ul>
+ * <li>{@link org.apache.tuscany.sdo.util.metadata.SDOMetaDataGroup#getJavaMetaData <em>Java Meta Data</em>}</li>
+ * <li>{@link org.apache.tuscany.sdo.util.metadata.SDOMetaDataGroup#getXsdMetaData <em>Xsd Meta Data</em>}</li>
+ * <li>{@link org.apache.tuscany.sdo.util.metadata.SDOMetaDataGroup#getTypeMetaData <em>Type Meta Data</em>}</li>
+ * </ul>
+ * </p>
+ *
+ * @generated
+ */
+public interface SDOMetaDataGroup
+{
+ /**
+ * Returns the value of the '<em><b>Java Meta Data</b></em>' containment reference list.
+ * The list contents are of type {@link org.apache.tuscany.sdo.util.metadata.JavaMetaData}.
+ * <!-- begin-user-doc -->
+ * <p>
+ * If the meaning of the '<em>Java Meta Data</em>' containment reference list isn't clear,
+ * there really should be more of a description here...
+ * </p>
+ * <!-- end-user-doc -->
+ * @return the value of the '<em>Java Meta Data</em>' containment reference list.
+ * @generated
+ */
+ List getJavaMetaData();
+
+ /**
+ * Returns the value of the '<em><b>Xsd Meta Data</b></em>' containment reference list.
+ * The list contents are of type {@link org.apache.tuscany.sdo.util.metadata.XSDMetaData}.
+ * <!-- begin-user-doc -->
+ * <p>
+ * If the meaning of the '<em>Xsd Meta Data</em>' containment reference list isn't clear,
+ * there really should be more of a description here...
+ * </p>
+ * <!-- end-user-doc -->
+ * @return the value of the '<em>Xsd Meta Data</em>' containment reference list.
+ * @generated
+ */
+ List getXsdMetaData();
+
+ /**
+ * Returns the value of the '<em><b>Type Meta Data</b></em>' containment reference list.
+ * The list contents are of type {@link org.apache.tuscany.sdo.util.metadata.TypeMetaData}.
+ * <!-- begin-user-doc -->
+ * <p>
+ * If the meaning of the '<em>Type Meta Data</em>' containment reference list isn't clear,
+ * there really should be more of a description here...
+ * </p>
+ * <!-- end-user-doc -->
+ * @return the value of the '<em>Type Meta Data</em>' containment reference list.
+ * @generated
+ */
+ List getTypeMetaData();
+
+ void register(TypeHelper scope);
+ void register(TypeHelper scope, ClassLoader classLoader);
+
+} // SDOMetaDataGroup
diff --git a/branches/sdo-java-M2/sdo/impl/src/main/java/org/apache/tuscany/sdo/util/metadata/TypeMetaData.java b/branches/sdo-java-M2/sdo/impl/src/main/java/org/apache/tuscany/sdo/util/metadata/TypeMetaData.java
new file mode 100644
index 0000000000..fcf4170b80
--- /dev/null
+++ b/branches/sdo-java-M2/sdo/impl/src/main/java/org/apache/tuscany/sdo/util/metadata/TypeMetaData.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.util.metadata;
+
+
+/**
+ * <!-- begin-user-doc -->
+ * A representation of the model object '<em><b>Type Meta Data</b></em>'.
+ * <!-- end-user-doc -->
+ *
+ * <p>
+ * The following features are supported:
+ * <ul>
+ * <li>{@link org.apache.tuscany.sdo.util.metadata.TypeMetaData#getLocation <em>Location</em>}</li>
+ * </ul>
+ * </p>
+ *
+ * @generated
+ */
+public interface TypeMetaData
+{
+ /**
+ * Returns the value of the '<em><b>Location</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <p>
+ * If the meaning of the '<em>Location</em>' attribute isn't clear,
+ * there really should be more of a description here...
+ * </p>
+ * <!-- end-user-doc -->
+ * @return the value of the '<em>Location</em>' attribute.
+ * @see #setLocation(String)
+ * @generated
+ */
+ String getLocation();
+
+ /**
+ * Sets the value of the '{@link org.apache.tuscany.sdo.util.metadata.TypeMetaData#getLocation <em>Location</em>}' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @param value the new value of the '<em>Location</em>' attribute.
+ * @see #getLocation()
+ * @generated
+ */
+ void setLocation(String value);
+
+} // TypeMetaData
diff --git a/branches/sdo-java-M2/sdo/impl/src/main/java/org/apache/tuscany/sdo/util/metadata/XSDMetaData.java b/branches/sdo-java-M2/sdo/impl/src/main/java/org/apache/tuscany/sdo/util/metadata/XSDMetaData.java
new file mode 100644
index 0000000000..44c9d7e124
--- /dev/null
+++ b/branches/sdo-java-M2/sdo/impl/src/main/java/org/apache/tuscany/sdo/util/metadata/XSDMetaData.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.util.metadata;
+
+
+/**
+ * <!-- begin-user-doc -->
+ * A representation of the model object '<em><b>XSD Meta Data</b></em>'.
+ * <!-- end-user-doc -->
+ *
+ * <p>
+ * The following features are supported:
+ * <ul>
+ * <li>{@link org.apache.tuscany.sdo.util.metadata.XSDMetaData#getLocation <em>Location</em>}</li>
+ * </ul>
+ * </p>
+ *
+ * @generated
+ */
+public interface XSDMetaData
+{
+ /**
+ * Returns the value of the '<em><b>Location</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <p>
+ * If the meaning of the '<em>Location</em>' attribute isn't clear,
+ * there really should be more of a description here...
+ * </p>
+ * <!-- end-user-doc -->
+ * @return the value of the '<em>Location</em>' attribute.
+ * @see #setLocation(String)
+ * @generated
+ */
+ String getLocation();
+
+ /**
+ * Sets the value of the '{@link org.apache.tuscany.sdo.util.metadata.XSDMetaData#getLocation <em>Location</em>}' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @param value the new value of the '<em>Location</em>' attribute.
+ * @see #getLocation()
+ * @generated
+ */
+ void setLocation(String value);
+
+} // XSDMetaData
diff --git a/branches/sdo-java-M2/sdo/impl/src/main/java/org/apache/tuscany/sdo/util/metadata/impl/JavaMetaDataImpl.java b/branches/sdo-java-M2/sdo/impl/src/main/java/org/apache/tuscany/sdo/util/metadata/impl/JavaMetaDataImpl.java
new file mode 100644
index 0000000000..b8f842ffe4
--- /dev/null
+++ b/branches/sdo-java-M2/sdo/impl/src/main/java/org/apache/tuscany/sdo/util/metadata/impl/JavaMetaDataImpl.java
@@ -0,0 +1,244 @@
+/**
+ *
+ * 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.util.metadata.impl;
+
+import org.apache.tuscany.sdo.impl.DataObjectImpl;
+
+import org.apache.tuscany.sdo.util.metadata.JavaMetaData;
+
+import org.eclipse.emf.common.notify.Notification;
+
+import org.eclipse.emf.ecore.EClass;
+
+import org.eclipse.emf.ecore.impl.ENotificationImpl;
+
+/**
+ * <!-- begin-user-doc -->
+ * An implementation of the model object '<em><b>Java Meta Data</b></em>'.
+ * <!-- end-user-doc -->
+ * <p>
+ * The following features are implemented:
+ * <ul>
+ * <li>{@link org.apache.tuscany.sdo.util.metadata.impl.JavaMetaDataImpl#getFactoryInterface <em>Factory Interface</em>}</li>
+ * <li>{@link org.apache.tuscany.sdo.util.metadata.impl.JavaMetaDataImpl#getTypeInterface <em>Type Interface</em>}</li>
+ * </ul>
+ * </p>
+ *
+ * @generated
+ */
+public class JavaMetaDataImpl extends DataObjectImpl implements JavaMetaData
+{
+ /**
+ * The default value of the '{@link #getFactoryInterface() <em>Factory Interface</em>}' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #getFactoryInterface()
+ * @generated
+ * @ordered
+ */
+ protected static final String FACTORY_INTERFACE_EDEFAULT = null;
+
+ /**
+ * The cached value of the '{@link #getFactoryInterface() <em>Factory Interface</em>}' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #getFactoryInterface()
+ * @generated
+ * @ordered
+ */
+ protected String factoryInterface = FACTORY_INTERFACE_EDEFAULT;
+
+ /**
+ * The default value of the '{@link #getTypeInterface() <em>Type Interface</em>}' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #getTypeInterface()
+ * @generated
+ * @ordered
+ */
+ protected static final String TYPE_INTERFACE_EDEFAULT = null;
+
+ /**
+ * The cached value of the '{@link #getTypeInterface() <em>Type Interface</em>}' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #getTypeInterface()
+ * @generated
+ * @ordered
+ */
+ protected String typeInterface = TYPE_INTERFACE_EDEFAULT;
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ protected JavaMetaDataImpl()
+ {
+ super();
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ protected EClass eStaticClass()
+ {
+ return MetadataPackageImpl.Literals.JAVA_META_DATA;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public String getFactoryInterface()
+ {
+ return factoryInterface;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public void setFactoryInterface(String newFactoryInterface)
+ {
+ String oldFactoryInterface = factoryInterface;
+ factoryInterface = newFactoryInterface;
+ if (eNotificationRequired())
+ eNotify(new ENotificationImpl(this, Notification.SET, MetadataPackageImpl.JAVA_META_DATA__FACTORY_INTERFACE, oldFactoryInterface, factoryInterface));
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public String getTypeInterface()
+ {
+ return typeInterface;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public void setTypeInterface(String newTypeInterface)
+ {
+ String oldTypeInterface = typeInterface;
+ typeInterface = newTypeInterface;
+ if (eNotificationRequired())
+ eNotify(new ENotificationImpl(this, Notification.SET, MetadataPackageImpl.JAVA_META_DATA__TYPE_INTERFACE, oldTypeInterface, typeInterface));
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public Object eGet(int featureID, boolean resolve, boolean coreType)
+ {
+ switch (featureID)
+ {
+ case MetadataPackageImpl.JAVA_META_DATA__FACTORY_INTERFACE:
+ return getFactoryInterface();
+ case MetadataPackageImpl.JAVA_META_DATA__TYPE_INTERFACE:
+ return getTypeInterface();
+ }
+ return super.eGet(featureID, resolve, coreType);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public void eSet(int featureID, Object newValue)
+ {
+ switch (featureID)
+ {
+ case MetadataPackageImpl.JAVA_META_DATA__FACTORY_INTERFACE:
+ setFactoryInterface((String)newValue);
+ return;
+ case MetadataPackageImpl.JAVA_META_DATA__TYPE_INTERFACE:
+ setTypeInterface((String)newValue);
+ return;
+ }
+ super.eSet(featureID, newValue);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public void eUnset(int featureID)
+ {
+ switch (featureID)
+ {
+ case MetadataPackageImpl.JAVA_META_DATA__FACTORY_INTERFACE:
+ setFactoryInterface(FACTORY_INTERFACE_EDEFAULT);
+ return;
+ case MetadataPackageImpl.JAVA_META_DATA__TYPE_INTERFACE:
+ setTypeInterface(TYPE_INTERFACE_EDEFAULT);
+ return;
+ }
+ super.eUnset(featureID);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public boolean eIsSet(int featureID)
+ {
+ switch (featureID)
+ {
+ case MetadataPackageImpl.JAVA_META_DATA__FACTORY_INTERFACE:
+ return FACTORY_INTERFACE_EDEFAULT == null ? factoryInterface != null : !FACTORY_INTERFACE_EDEFAULT.equals(factoryInterface);
+ case MetadataPackageImpl.JAVA_META_DATA__TYPE_INTERFACE:
+ return TYPE_INTERFACE_EDEFAULT == null ? typeInterface != null : !TYPE_INTERFACE_EDEFAULT.equals(typeInterface);
+ }
+ return super.eIsSet(featureID);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public String toString()
+ {
+ if (eIsProxy()) return super.toString();
+
+ StringBuffer result = new StringBuffer(super.toString());
+ result.append(" (factoryInterface: ");
+ result.append(factoryInterface);
+ result.append(", typeInterface: ");
+ result.append(typeInterface);
+ result.append(')');
+ return result.toString();
+ }
+
+} //JavaMetaDataImpl
diff --git a/branches/sdo-java-M2/sdo/impl/src/main/java/org/apache/tuscany/sdo/util/metadata/impl/MetadataFactoryImpl.java b/branches/sdo-java-M2/sdo/impl/src/main/java/org/apache/tuscany/sdo/util/metadata/impl/MetadataFactoryImpl.java
new file mode 100644
index 0000000000..013a552215
--- /dev/null
+++ b/branches/sdo-java-M2/sdo/impl/src/main/java/org/apache/tuscany/sdo/util/metadata/impl/MetadataFactoryImpl.java
@@ -0,0 +1,177 @@
+/**
+ *
+ * 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.util.metadata.impl;
+
+import org.apache.tuscany.sdo.util.metadata.*;
+
+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;
+
+/**
+ * <!-- begin-user-doc -->
+ * An implementation of the model <b>Factory</b>.
+ * <!-- end-user-doc -->
+ * @generated
+ */
+public class MetadataFactoryImpl extends EFactoryImpl implements MetadataFactory
+{
+ /**
+ * The singleton instance of the factory.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public static final MetadataFactoryImpl eINSTANCE = init();
+
+ /**
+ * Creates the default factory implementation.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public static MetadataFactoryImpl init()
+ {
+ try
+ {
+ MetadataFactoryImpl theMetadataFactory = (MetadataFactoryImpl)EPackage.Registry.INSTANCE.getEFactory("org.apache.tuscany.sdo/metadata");
+ if (theMetadataFactory != null)
+ {
+ return theMetadataFactory;
+ }
+ }
+ catch (Exception exception)
+ {
+ EcorePlugin.INSTANCE.log(exception);
+ }
+ return new MetadataFactoryImpl();
+ }
+
+ /**
+ * Creates an instance of the factory.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public MetadataFactoryImpl()
+ {
+ super();
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EObject create(EClass eClass)
+ {
+ switch (eClass.getClassifierID())
+ {
+ case MetadataPackageImpl.DOCUMENT_ROOT: return (EObject)createDocumentRoot();
+ case MetadataPackageImpl.JAVA_META_DATA: return (EObject)createJavaMetaData();
+ case MetadataPackageImpl.SDO_META_DATA_GROUP: return (EObject)createSDOMetaDataGroup();
+ case MetadataPackageImpl.TYPE_META_DATA: return (EObject)createTypeMetaData();
+ case MetadataPackageImpl.XSD_META_DATA: return (EObject)createXSDMetaData();
+ default:
+ throw new IllegalArgumentException("The class '" + eClass.getName() + "' is not a valid classifier");
+ }
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EObject createDocumentRoot()
+ {
+ EObject documentRoot = super.create(MetadataPackageImpl.Literals.DOCUMENT_ROOT);
+ return documentRoot;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public JavaMetaData createJavaMetaData()
+ {
+ JavaMetaDataImpl javaMetaData = new JavaMetaDataImpl();
+ return javaMetaData;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public SDOMetaDataGroup createSDOMetaDataGroup()
+ {
+ SDOMetaDataGroupImpl sdoMetaDataGroup = new SDOMetaDataGroupImpl();
+ return sdoMetaDataGroup;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public TypeMetaData createTypeMetaData()
+ {
+ TypeMetaDataImpl typeMetaData = new TypeMetaDataImpl();
+ return typeMetaData;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public XSDMetaData createXSDMetaData()
+ {
+ XSDMetaDataImpl xsdMetaData = new XSDMetaDataImpl();
+ return xsdMetaData;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public MetadataPackageImpl getMetadataPackageImpl()
+ {
+ return (MetadataPackageImpl)getEPackage();
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @deprecated
+ * @generated
+ */
+ public static MetadataPackageImpl getPackage()
+ {
+ return MetadataPackageImpl.eINSTANCE;
+ }
+
+} //MetadataFactoryImpl
diff --git a/branches/sdo-java-M2/sdo/impl/src/main/java/org/apache/tuscany/sdo/util/metadata/impl/MetadataPackageImpl.java b/branches/sdo-java-M2/sdo/impl/src/main/java/org/apache/tuscany/sdo/util/metadata/impl/MetadataPackageImpl.java
new file mode 100644
index 0000000000..ac9cda6f41
--- /dev/null
+++ b/branches/sdo-java-M2/sdo/impl/src/main/java/org/apache/tuscany/sdo/util/metadata/impl/MetadataPackageImpl.java
@@ -0,0 +1,1018 @@
+/**
+ *
+ * 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.util.metadata.impl;
+
+import org.apache.tuscany.sdo.impl.SDOPackageImpl;
+
+import org.apache.tuscany.sdo.model.impl.ModelPackageImpl;
+
+import org.apache.tuscany.sdo.util.metadata.JavaMetaData;
+import org.apache.tuscany.sdo.util.metadata.MetadataFactory;
+import org.apache.tuscany.sdo.util.metadata.SDOMetaDataGroup;
+import org.apache.tuscany.sdo.util.metadata.TypeMetaData;
+import org.apache.tuscany.sdo.util.metadata.XSDMetaData;
+
+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;
+
+/**
+ * <!-- begin-user-doc -->
+ * The <b>Package</b> for the model.
+ * It contains accessors for the meta objects to represent
+ * <ul>
+ * <li>each class,</li>
+ * <li>each feature of each class,</li>
+ * <li>each enum,</li>
+ * <li>and each data type</li>
+ * </ul>
+ * <!-- end-user-doc -->
+ * @see org.apache.tuscany.sdo.util.metadata.MetadataFactory
+ * @generated
+ */
+public class MetadataPackageImpl extends EPackageImpl
+{
+ /**
+ * The package name.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public static final String eNAME = "metadata";
+
+ /**
+ * The package namespace URI.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public static final String eNS_URI = "org.apache.tuscany.sdo/metadata";
+
+ /**
+ * The package namespace name.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public static final String eNS_PREFIX = "metadata";
+
+ /**
+ * The singleton instance of the package.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public static final MetadataPackageImpl eINSTANCE = org.apache.tuscany.sdo.util.metadata.impl.MetadataPackageImpl.init();
+
+ /**
+ * The meta object id for the '{@link org.apache.tuscany.sdo.util.metadata.impl.DocumentRootImpl <em>Document Root</em>}' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see org.apache.tuscany.sdo.util.metadata.impl.DocumentRootImpl
+ * @see org.apache.tuscany.sdo.util.metadata.impl.MetadataPackageImpl#getDocumentRoot()
+ * @generated
+ */
+ public static final int DOCUMENT_ROOT = 0;
+
+ /**
+ * The feature id for the '<em><b>Mixed</b></em>' attribute list.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ public static final int DOCUMENT_ROOT__MIXED = 0;
+
+ /**
+ * The feature id for the '<em><b>XMLNS Prefix Map</b></em>' map.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ public static final int DOCUMENT_ROOT__XMLNS_PREFIX_MAP = 1;
+
+ /**
+ * The feature id for the '<em><b>XSI Schema Location</b></em>' map.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ public static final int DOCUMENT_ROOT__XSI_SCHEMA_LOCATION = 2;
+
+ /**
+ * The feature id for the '<em><b>Sdo Meta Data Group</b></em>' containment reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ public static final int DOCUMENT_ROOT__SDO_META_DATA_GROUP = 3;
+
+ /**
+ * The number of structural features of the '<em>Document Root</em>' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ public static final int DOCUMENT_ROOT_FEATURE_COUNT = 4;
+
+ /**
+ * The meta object id for the '{@link org.apache.tuscany.sdo.util.metadata.impl.JavaMetaDataImpl <em>Java Meta Data</em>}' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see org.apache.tuscany.sdo.util.metadata.impl.JavaMetaDataImpl
+ * @see org.apache.tuscany.sdo.util.metadata.impl.MetadataPackageImpl#getJavaMetaData()
+ * @generated
+ */
+ public static final int JAVA_META_DATA = 1;
+
+ /**
+ * The feature id for the '<em><b>Factory Interface</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ public static final int JAVA_META_DATA__FACTORY_INTERFACE = 0;
+
+ /**
+ * The feature id for the '<em><b>Type Interface</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ public static final int JAVA_META_DATA__TYPE_INTERFACE = 1;
+
+ /**
+ * The number of structural features of the '<em>Java Meta Data</em>' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ public static final int JAVA_META_DATA_FEATURE_COUNT = 2;
+
+ /**
+ * The meta object id for the '{@link org.apache.tuscany.sdo.util.metadata.impl.SDOMetaDataGroupImpl <em>SDO Meta Data Group</em>}' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see org.apache.tuscany.sdo.util.metadata.impl.SDOMetaDataGroupImpl
+ * @see org.apache.tuscany.sdo.util.metadata.impl.MetadataPackageImpl#getSDOMetaDataGroup()
+ * @generated
+ */
+ public static final int SDO_META_DATA_GROUP = 2;
+
+ /**
+ * The feature id for the '<em><b>Java Meta Data</b></em>' containment reference list.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ public static final int SDO_META_DATA_GROUP__JAVA_META_DATA = 0;
+
+ /**
+ * The feature id for the '<em><b>Xsd Meta Data</b></em>' containment reference list.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ public static final int SDO_META_DATA_GROUP__XSD_META_DATA = 1;
+
+ /**
+ * The feature id for the '<em><b>Type Meta Data</b></em>' containment reference list.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ public static final int SDO_META_DATA_GROUP__TYPE_META_DATA = 2;
+
+ /**
+ * The number of structural features of the '<em>SDO Meta Data Group</em>' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ public static final int SDO_META_DATA_GROUP_FEATURE_COUNT = 3;
+
+ /**
+ * The meta object id for the '{@link org.apache.tuscany.sdo.util.metadata.impl.TypeMetaDataImpl <em>Type Meta Data</em>}' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see org.apache.tuscany.sdo.util.metadata.impl.TypeMetaDataImpl
+ * @see org.apache.tuscany.sdo.util.metadata.impl.MetadataPackageImpl#getTypeMetaData()
+ * @generated
+ */
+ public static final int TYPE_META_DATA = 3;
+
+ /**
+ * The feature id for the '<em><b>Location</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ public static final int TYPE_META_DATA__LOCATION = 0;
+
+ /**
+ * The number of structural features of the '<em>Type Meta Data</em>' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ public static final int TYPE_META_DATA_FEATURE_COUNT = 1;
+
+ /**
+ * The meta object id for the '{@link org.apache.tuscany.sdo.util.metadata.impl.XSDMetaDataImpl <em>XSD Meta Data</em>}' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see org.apache.tuscany.sdo.util.metadata.impl.XSDMetaDataImpl
+ * @see org.apache.tuscany.sdo.util.metadata.impl.MetadataPackageImpl#getXSDMetaData()
+ * @generated
+ */
+ public static final int XSD_META_DATA = 4;
+
+ /**
+ * The feature id for the '<em><b>Location</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ public static final int XSD_META_DATA__LOCATION = 0;
+
+ /**
+ * The number of structural features of the '<em>XSD Meta Data</em>' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ public static final int XSD_META_DATA_FEATURE_COUNT = 1;
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ private EClass documentRootEClass = null;
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ private EClass javaMetaDataEClass = null;
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ private EClass sdoMetaDataGroupEClass = null;
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ private EClass typeMetaDataEClass = null;
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ private EClass xsdMetaDataEClass = null;
+
+ /**
+ * Creates an instance of the model <b>Package</b>, registered with
+ * {@link org.eclipse.emf.ecore.EPackage.Registry EPackage.Registry} by the package
+ * package URI value.
+ * <p>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.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see org.eclipse.emf.ecore.EPackage.Registry
+ * @see org.apache.tuscany.sdo.util.metadata.impl.MetadataPackageImpl#eNS_URI
+ * @see #init()
+ * @generated
+ */
+ private MetadataPackageImpl()
+ {
+ super(eNS_URI, ((EFactory)MetadataFactory.INSTANCE));
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ private static boolean isInited = false;
+
+ /**
+ * Creates, registers, and initializes the <b>Package</b> 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.
+ * <p>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.
+ * <p>Invocation of this method will not affect any packages that have
+ * already been initialized.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #eNS_URI
+ * @see #createPackageContents()
+ * @see #initializePackageContents()
+ * @generated
+ */
+ public static MetadataPackageImpl init()
+ {
+ if (isInited) return (MetadataPackageImpl)EPackage.Registry.INSTANCE.getEPackage(MetadataPackageImpl.eNS_URI);
+
+ // Obtain or create and register package
+ MetadataPackageImpl theMetadataPackageImpl = (MetadataPackageImpl)(EPackage.Registry.INSTANCE.getEPackage(eNS_URI) instanceof MetadataPackageImpl ? EPackage.Registry.INSTANCE.getEPackage(eNS_URI) : new MetadataPackageImpl());
+
+ isInited = true;
+
+ // Initialize simple dependencies
+ SDOPackageImpl.eINSTANCE.eClass();
+ ModelPackageImpl.eINSTANCE.eClass();
+
+ // Create package meta-data objects
+ theMetadataPackageImpl.createPackageContents();
+
+ // Initialize created meta-data
+ theMetadataPackageImpl.initializePackageContents();
+
+ // Mark meta-data to indicate it can't be changed
+ theMetadataPackageImpl.freeze();
+
+ return theMetadataPackageImpl;
+ }
+
+
+ /**
+ * Returns the meta object for class '{@link org.eclipse.emf.ecore.EObject <em>Document Root</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for class '<em>Document Root</em>'.
+ * @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 <em>Mixed</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for the attribute list '<em>Mixed</em>'.
+ * @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 <em>XMLNS Prefix Map</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for the map '<em>XMLNS Prefix Map</em>'.
+ * @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 <em>XSI Schema Location</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for the map '<em>XSI Schema Location</em>'.
+ * @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#getSdoMetaDataGroup <em>Sdo Meta Data Group</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for the containment reference '<em>Sdo Meta Data Group</em>'.
+ * @see org.eclipse.emf.ecore.EObject#getSdoMetaDataGroup()
+ * @see #getDocumentRoot()
+ * @generated
+ */
+ public EReference getDocumentRoot_SdoMetaDataGroup()
+ {
+ return (EReference)documentRootEClass.getEStructuralFeatures().get(3);
+ }
+
+ /**
+ * Returns the meta object for class '{@link org.apache.tuscany.sdo.util.metadata.JavaMetaData <em>Java Meta Data</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for class '<em>Java Meta Data</em>'.
+ * @see org.apache.tuscany.sdo.util.metadata.JavaMetaData
+ * @generated
+ */
+ public EClass getJavaMetaData()
+ {
+ return javaMetaDataEClass;
+ }
+
+ /**
+ * Returns the meta object for the attribute '{@link org.apache.tuscany.sdo.util.metadata.JavaMetaData#getFactoryInterface <em>Factory Interface</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for the attribute '<em>Factory Interface</em>'.
+ * @see org.apache.tuscany.sdo.util.metadata.JavaMetaData#getFactoryInterface()
+ * @see #getJavaMetaData()
+ * @generated
+ */
+ public EAttribute getJavaMetaData_FactoryInterface()
+ {
+ return (EAttribute)javaMetaDataEClass.getEStructuralFeatures().get(0);
+ }
+
+ /**
+ * Returns the meta object for the attribute '{@link org.apache.tuscany.sdo.util.metadata.JavaMetaData#getTypeInterface <em>Type Interface</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for the attribute '<em>Type Interface</em>'.
+ * @see org.apache.tuscany.sdo.util.metadata.JavaMetaData#getTypeInterface()
+ * @see #getJavaMetaData()
+ * @generated
+ */
+ public EAttribute getJavaMetaData_TypeInterface()
+ {
+ return (EAttribute)javaMetaDataEClass.getEStructuralFeatures().get(1);
+ }
+
+ /**
+ * Returns the meta object for class '{@link org.apache.tuscany.sdo.util.metadata.SDOMetaDataGroup <em>SDO Meta Data Group</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for class '<em>SDO Meta Data Group</em>'.
+ * @see org.apache.tuscany.sdo.util.metadata.SDOMetaDataGroup
+ * @generated
+ */
+ public EClass getSDOMetaDataGroup()
+ {
+ return sdoMetaDataGroupEClass;
+ }
+
+ /**
+ * Returns the meta object for the containment reference list '{@link org.apache.tuscany.sdo.util.metadata.SDOMetaDataGroup#getJavaMetaData <em>Java Meta Data</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for the containment reference list '<em>Java Meta Data</em>'.
+ * @see org.apache.tuscany.sdo.util.metadata.SDOMetaDataGroup#getJavaMetaData()
+ * @see #getSDOMetaDataGroup()
+ * @generated
+ */
+ public EReference getSDOMetaDataGroup_JavaMetaData()
+ {
+ return (EReference)sdoMetaDataGroupEClass.getEStructuralFeatures().get(0);
+ }
+
+ /**
+ * Returns the meta object for the containment reference list '{@link org.apache.tuscany.sdo.util.metadata.SDOMetaDataGroup#getXsdMetaData <em>Xsd Meta Data</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for the containment reference list '<em>Xsd Meta Data</em>'.
+ * @see org.apache.tuscany.sdo.util.metadata.SDOMetaDataGroup#getXsdMetaData()
+ * @see #getSDOMetaDataGroup()
+ * @generated
+ */
+ public EReference getSDOMetaDataGroup_XsdMetaData()
+ {
+ return (EReference)sdoMetaDataGroupEClass.getEStructuralFeatures().get(1);
+ }
+
+ /**
+ * Returns the meta object for the containment reference list '{@link org.apache.tuscany.sdo.util.metadata.SDOMetaDataGroup#getTypeMetaData <em>Type Meta Data</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for the containment reference list '<em>Type Meta Data</em>'.
+ * @see org.apache.tuscany.sdo.util.metadata.SDOMetaDataGroup#getTypeMetaData()
+ * @see #getSDOMetaDataGroup()
+ * @generated
+ */
+ public EReference getSDOMetaDataGroup_TypeMetaData()
+ {
+ return (EReference)sdoMetaDataGroupEClass.getEStructuralFeatures().get(2);
+ }
+
+ /**
+ * Returns the meta object for class '{@link org.apache.tuscany.sdo.util.metadata.TypeMetaData <em>Type Meta Data</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for class '<em>Type Meta Data</em>'.
+ * @see org.apache.tuscany.sdo.util.metadata.TypeMetaData
+ * @generated
+ */
+ public EClass getTypeMetaData()
+ {
+ return typeMetaDataEClass;
+ }
+
+ /**
+ * Returns the meta object for the attribute '{@link org.apache.tuscany.sdo.util.metadata.TypeMetaData#getLocation <em>Location</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for the attribute '<em>Location</em>'.
+ * @see org.apache.tuscany.sdo.util.metadata.TypeMetaData#getLocation()
+ * @see #getTypeMetaData()
+ * @generated
+ */
+ public EAttribute getTypeMetaData_Location()
+ {
+ return (EAttribute)typeMetaDataEClass.getEStructuralFeatures().get(0);
+ }
+
+ /**
+ * Returns the meta object for class '{@link org.apache.tuscany.sdo.util.metadata.XSDMetaData <em>XSD Meta Data</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for class '<em>XSD Meta Data</em>'.
+ * @see org.apache.tuscany.sdo.util.metadata.XSDMetaData
+ * @generated
+ */
+ public EClass getXSDMetaData()
+ {
+ return xsdMetaDataEClass;
+ }
+
+ /**
+ * Returns the meta object for the attribute '{@link org.apache.tuscany.sdo.util.metadata.XSDMetaData#getLocation <em>Location</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for the attribute '<em>Location</em>'.
+ * @see org.apache.tuscany.sdo.util.metadata.XSDMetaData#getLocation()
+ * @see #getXSDMetaData()
+ * @generated
+ */
+ public EAttribute getXSDMetaData_Location()
+ {
+ return (EAttribute)xsdMetaDataEClass.getEStructuralFeatures().get(0);
+ }
+
+ /**
+ * Returns the factory that creates the instances of the model.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the factory that creates the instances of the model.
+ * @generated
+ */
+ public MetadataFactory getMetadataFactory()
+ {
+ return (MetadataFactory)getEFactoryInstance();
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @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.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @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__SDO_META_DATA_GROUP);
+
+ javaMetaDataEClass = createEClass(JAVA_META_DATA);
+ createEAttribute(javaMetaDataEClass, JAVA_META_DATA__FACTORY_INTERFACE);
+ createEAttribute(javaMetaDataEClass, JAVA_META_DATA__TYPE_INTERFACE);
+
+ sdoMetaDataGroupEClass = createEClass(SDO_META_DATA_GROUP);
+ createEReference(sdoMetaDataGroupEClass, SDO_META_DATA_GROUP__JAVA_META_DATA);
+ createEReference(sdoMetaDataGroupEClass, SDO_META_DATA_GROUP__XSD_META_DATA);
+ createEReference(sdoMetaDataGroupEClass, SDO_META_DATA_GROUP__TYPE_META_DATA);
+
+ typeMetaDataEClass = createEClass(TYPE_META_DATA);
+ createEAttribute(typeMetaDataEClass, TYPE_META_DATA__LOCATION);
+
+ xsdMetaDataEClass = createEClass(XSD_META_DATA);
+ createEAttribute(xsdMetaDataEClass, XSD_META_DATA__LOCATION);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @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.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public void initializePackageContents()
+ {
+ if (isInitialized) return;
+ isInitialized = true;
+
+ // Initialize package
+ setName(eNAME);
+ setNsPrefix(eNS_PREFIX);
+ setNsURI(eNS_URI);
+
+ // Obtain other dependent packages
+ ModelPackageImpl theModelPackageImpl = (ModelPackageImpl)EPackage.Registry.INSTANCE.getEPackage(ModelPackageImpl.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_SdoMetaDataGroup(), this.getSDOMetaDataGroup(), null, "sdoMetaDataGroup", null, 0, -2, null, IS_TRANSIENT, IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, IS_DERIVED, IS_ORDERED);
+
+ initEClass(javaMetaDataEClass, JavaMetaData.class, "JavaMetaData", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
+ initEAttribute(getJavaMetaData_FactoryInterface(), theModelPackageImpl.getString(), "factoryInterface", null, 0, 1, JavaMetaData.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, !IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+ initEAttribute(getJavaMetaData_TypeInterface(), theModelPackageImpl.getString(), "typeInterface", null, 0, 1, JavaMetaData.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, !IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+
+ initEClass(sdoMetaDataGroupEClass, SDOMetaDataGroup.class, "SDOMetaDataGroup", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
+ initEReference(getSDOMetaDataGroup_JavaMetaData(), this.getJavaMetaData(), null, "javaMetaData", null, 0, -1, SDOMetaDataGroup.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+ initEReference(getSDOMetaDataGroup_XsdMetaData(), this.getXSDMetaData(), null, "xsdMetaData", null, 0, -1, SDOMetaDataGroup.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+ initEReference(getSDOMetaDataGroup_TypeMetaData(), this.getTypeMetaData(), null, "typeMetaData", null, 0, -1, SDOMetaDataGroup.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+
+ initEClass(typeMetaDataEClass, TypeMetaData.class, "TypeMetaData", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
+ initEAttribute(getTypeMetaData_Location(), theModelPackageImpl.getString(), "location", null, 1, 1, TypeMetaData.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, !IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+
+ initEClass(xsdMetaDataEClass, XSDMetaData.class, "XSDMetaData", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
+ initEAttribute(getXSDMetaData_Location(), theModelPackageImpl.getString(), "location", null, 1, 1, XSDMetaData.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, !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 <b>http:///org/eclipse/emf/ecore/util/ExtendedMetaData</b>.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @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_SdoMetaDataGroup(),
+ source,
+ new String[]
+ {
+ "kind", "element",
+ "name", "sdoMetaDataGroup",
+ "namespace", "##targetNamespace"
+ });
+ addAnnotation
+ (javaMetaDataEClass,
+ source,
+ new String[]
+ {
+ "name", "JavaMetaData",
+ "kind", "empty"
+ });
+ addAnnotation
+ (getJavaMetaData_FactoryInterface(),
+ source,
+ new String[]
+ {
+ "kind", "attribute",
+ "name", "factoryInterface"
+ });
+ addAnnotation
+ (getJavaMetaData_TypeInterface(),
+ source,
+ new String[]
+ {
+ "kind", "attribute",
+ "name", "typeInterface"
+ });
+ addAnnotation
+ (sdoMetaDataGroupEClass,
+ source,
+ new String[]
+ {
+ "name", "SDOMetaDataGroup",
+ "kind", "elementOnly"
+ });
+ addAnnotation
+ (getSDOMetaDataGroup_JavaMetaData(),
+ source,
+ new String[]
+ {
+ "kind", "element",
+ "name", "javaMetaData"
+ });
+ addAnnotation
+ (getSDOMetaDataGroup_XsdMetaData(),
+ source,
+ new String[]
+ {
+ "kind", "element",
+ "name", "xsdMetaData"
+ });
+ addAnnotation
+ (getSDOMetaDataGroup_TypeMetaData(),
+ source,
+ new String[]
+ {
+ "kind", "element",
+ "name", "typeMetaData"
+ });
+ addAnnotation
+ (typeMetaDataEClass,
+ source,
+ new String[]
+ {
+ "name", "TypeMetaData",
+ "kind", "empty"
+ });
+ addAnnotation
+ (getTypeMetaData_Location(),
+ source,
+ new String[]
+ {
+ "kind", "attribute",
+ "name", "location"
+ });
+ addAnnotation
+ (xsdMetaDataEClass,
+ source,
+ new String[]
+ {
+ "name", "XSDMetaData",
+ "kind", "empty"
+ });
+ addAnnotation
+ (getXSDMetaData_Location(),
+ source,
+ new String[]
+ {
+ "kind", "attribute",
+ "name", "location"
+ });
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * Defines literals for the meta objects that represent
+ * <ul>
+ * <li>each class,</li>
+ * <li>each feature of each class,</li>
+ * <li>each enum,</li>
+ * <li>and each data type</li>
+ * </ul>
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public interface Literals
+ {
+ /**
+ * The meta object literal for the '{@link org.apache.tuscany.sdo.util.metadata.impl.DocumentRootImpl <em>Document Root</em>}' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see org.apache.tuscany.sdo.util.metadata.impl.DocumentRootImpl
+ * @see org.apache.tuscany.sdo.util.metadata.impl.MetadataPackageImpl#getDocumentRoot()
+ * @generated
+ */
+ public static final EClass DOCUMENT_ROOT = eINSTANCE.getDocumentRoot();
+
+ /**
+ * The meta object literal for the '<em><b>Mixed</b></em>' attribute list feature.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public static final EAttribute DOCUMENT_ROOT__MIXED = eINSTANCE.getDocumentRoot_Mixed();
+
+ /**
+ * The meta object literal for the '<em><b>XMLNS Prefix Map</b></em>' map feature.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public static final EReference DOCUMENT_ROOT__XMLNS_PREFIX_MAP = eINSTANCE.getDocumentRoot_XMLNSPrefixMap();
+
+ /**
+ * The meta object literal for the '<em><b>XSI Schema Location</b></em>' map feature.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public static final EReference DOCUMENT_ROOT__XSI_SCHEMA_LOCATION = eINSTANCE.getDocumentRoot_XSISchemaLocation();
+
+ /**
+ * The meta object literal for the '<em><b>Sdo Meta Data Group</b></em>' containment reference feature.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public static final EReference DOCUMENT_ROOT__SDO_META_DATA_GROUP = eINSTANCE.getDocumentRoot_SdoMetaDataGroup();
+
+ /**
+ * The meta object literal for the '{@link org.apache.tuscany.sdo.util.metadata.impl.JavaMetaDataImpl <em>Java Meta Data</em>}' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see org.apache.tuscany.sdo.util.metadata.impl.JavaMetaDataImpl
+ * @see org.apache.tuscany.sdo.util.metadata.impl.MetadataPackageImpl#getJavaMetaData()
+ * @generated
+ */
+ public static final EClass JAVA_META_DATA = eINSTANCE.getJavaMetaData();
+
+ /**
+ * The meta object literal for the '<em><b>Factory Interface</b></em>' attribute feature.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public static final EAttribute JAVA_META_DATA__FACTORY_INTERFACE = eINSTANCE.getJavaMetaData_FactoryInterface();
+
+ /**
+ * The meta object literal for the '<em><b>Type Interface</b></em>' attribute feature.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public static final EAttribute JAVA_META_DATA__TYPE_INTERFACE = eINSTANCE.getJavaMetaData_TypeInterface();
+
+ /**
+ * The meta object literal for the '{@link org.apache.tuscany.sdo.util.metadata.impl.SDOMetaDataGroupImpl <em>SDO Meta Data Group</em>}' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see org.apache.tuscany.sdo.util.metadata.impl.SDOMetaDataGroupImpl
+ * @see org.apache.tuscany.sdo.util.metadata.impl.MetadataPackageImpl#getSDOMetaDataGroup()
+ * @generated
+ */
+ public static final EClass SDO_META_DATA_GROUP = eINSTANCE.getSDOMetaDataGroup();
+
+ /**
+ * The meta object literal for the '<em><b>Java Meta Data</b></em>' containment reference list feature.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public static final EReference SDO_META_DATA_GROUP__JAVA_META_DATA = eINSTANCE.getSDOMetaDataGroup_JavaMetaData();
+
+ /**
+ * The meta object literal for the '<em><b>Xsd Meta Data</b></em>' containment reference list feature.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public static final EReference SDO_META_DATA_GROUP__XSD_META_DATA = eINSTANCE.getSDOMetaDataGroup_XsdMetaData();
+
+ /**
+ * The meta object literal for the '<em><b>Type Meta Data</b></em>' containment reference list feature.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public static final EReference SDO_META_DATA_GROUP__TYPE_META_DATA = eINSTANCE.getSDOMetaDataGroup_TypeMetaData();
+
+ /**
+ * The meta object literal for the '{@link org.apache.tuscany.sdo.util.metadata.impl.TypeMetaDataImpl <em>Type Meta Data</em>}' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see org.apache.tuscany.sdo.util.metadata.impl.TypeMetaDataImpl
+ * @see org.apache.tuscany.sdo.util.metadata.impl.MetadataPackageImpl#getTypeMetaData()
+ * @generated
+ */
+ public static final EClass TYPE_META_DATA = eINSTANCE.getTypeMetaData();
+
+ /**
+ * The meta object literal for the '<em><b>Location</b></em>' attribute feature.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public static final EAttribute TYPE_META_DATA__LOCATION = eINSTANCE.getTypeMetaData_Location();
+
+ /**
+ * The meta object literal for the '{@link org.apache.tuscany.sdo.util.metadata.impl.XSDMetaDataImpl <em>XSD Meta Data</em>}' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see org.apache.tuscany.sdo.util.metadata.impl.XSDMetaDataImpl
+ * @see org.apache.tuscany.sdo.util.metadata.impl.MetadataPackageImpl#getXSDMetaData()
+ * @generated
+ */
+ public static final EClass XSD_META_DATA = eINSTANCE.getXSDMetaData();
+
+ /**
+ * The meta object literal for the '<em><b>Location</b></em>' attribute feature.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public static final EAttribute XSD_META_DATA__LOCATION = eINSTANCE.getXSDMetaData_Location();
+
+ }
+
+} //MetadataPackageImpl
diff --git a/branches/sdo-java-M2/sdo/impl/src/main/java/org/apache/tuscany/sdo/util/metadata/impl/SDOMetaDataGroupImpl.java b/branches/sdo-java-M2/sdo/impl/src/main/java/org/apache/tuscany/sdo/util/metadata/impl/SDOMetaDataGroupImpl.java
new file mode 100644
index 0000000000..6add915cfc
--- /dev/null
+++ b/branches/sdo-java-M2/sdo/impl/src/main/java/org/apache/tuscany/sdo/util/metadata/impl/SDOMetaDataGroupImpl.java
@@ -0,0 +1,326 @@
+/**
+ *
+ * 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.util.metadata.impl;
+
+import java.io.InputStream;
+import java.net.URL;
+import java.security.AccessController;
+import java.security.PrivilegedAction;
+import java.util.Collection;
+import java.util.Iterator;
+import java.util.List;
+
+import org.apache.tuscany.sdo.impl.DataObjectImpl;
+import org.apache.tuscany.sdo.model.Types;
+import org.apache.tuscany.sdo.util.SDOUtil;
+import org.apache.tuscany.sdo.util.metadata.JavaMetaData;
+import org.apache.tuscany.sdo.util.metadata.SDOMetaDataGroup;
+import org.apache.tuscany.sdo.util.metadata.TypeMetaData;
+import org.apache.tuscany.sdo.util.metadata.XSDMetaData;
+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.util.EObjectContainmentEList;
+import org.eclipse.emf.ecore.util.InternalEList;
+
+import commonj.sdo.helper.TypeHelper;
+import commonj.sdo.helper.XMLDocument;
+import commonj.sdo.helper.XMLHelper;
+import commonj.sdo.helper.XSDHelper;
+
+/**
+ * <!-- begin-user-doc -->
+ * An implementation of the model object '<em><b>SDO Meta Data Group</b></em>'.
+ * <!-- end-user-doc -->
+ * <p>
+ * The following features are implemented:
+ * <ul>
+ * <li>{@link org.apache.tuscany.sdo.util.metadata.impl.SDOMetaDataGroupImpl#getJavaMetaData <em>Java Meta Data</em>}</li>
+ * <li>{@link org.apache.tuscany.sdo.util.metadata.impl.SDOMetaDataGroupImpl#getXsdMetaData <em>Xsd Meta Data</em>}</li>
+ * <li>{@link org.apache.tuscany.sdo.util.metadata.impl.SDOMetaDataGroupImpl#getTypeMetaData <em>Type Meta Data</em>}</li>
+ * </ul>
+ * </p>
+ *
+ * @generated
+ */
+public class SDOMetaDataGroupImpl extends DataObjectImpl implements SDOMetaDataGroup
+{
+ public void register(TypeHelper typeHelper)
+ {
+ try
+ {
+ ClassLoader classLoader = (ClassLoader)AccessController.doPrivileged(new PrivilegedAction()
+ {
+ public Object run()
+ {
+ return Thread.currentThread().getContextClassLoader();
+ }
+ });
+ register(typeHelper, classLoader);
+ }
+ catch (SecurityException e)
+ {
+ }
+ }
+
+ public void register(TypeHelper typeHelper, ClassLoader classLoader)
+ {
+ try
+ {
+ for (Iterator iter = getJavaMetaData().iterator(); iter.hasNext();)
+ {
+ JavaMetaData metadata = (JavaMetaData)iter.next();
+ String factoryInterface = metadata.getFactoryInterface();
+ if (factoryInterface != null)
+ {
+ Class factoryInterfaceClass = classLoader.loadClass(factoryInterface);
+ SDOUtil.registerStaticTypes(factoryInterfaceClass);
+ }
+ else
+ {
+ String typeInterface = metadata.getTypeInterface();
+ Class typeInterfaceClass = classLoader.loadClass(typeInterface);
+ // TODO: introspect and register the type
+ }
+ }
+
+ XSDHelper xsdHelper = SDOUtil.createXSDHelper(typeHelper);
+ for (Iterator iter = getXsdMetaData().iterator(); iter.hasNext();)
+ {
+ XSDMetaData metadata = (XSDMetaData)iter.next();
+ URL url = getClass().getResource(metadata.getLocation());
+ InputStream inputStream = url.openStream();
+ xsdHelper.define(inputStream, url.toString());
+ }
+
+ XMLHelper xmlHelper = SDOUtil.createXMLHelper(typeHelper);
+ for (Iterator iter = getTypeMetaData().iterator(); iter.hasNext();)
+ {
+ TypeMetaData metadata = (TypeMetaData)iter.next();
+ URL url = getClass().getResource(metadata.getLocation());
+ InputStream inputStream = url.openStream();
+ XMLDocument xmlDocument = xmlHelper.load(inputStream);
+ Types types = (Types)xmlDocument.getRootObject();
+ typeHelper.define(types.getTypeList());
+ }
+ }
+ catch (Exception e)
+ {
+ }
+ }
+
+ /**
+ * The cached value of the '{@link #getJavaMetaData() <em>Java Meta Data</em>}' containment reference list.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #getJavaMetaData()
+ * @generated
+ * @ordered
+ */
+ protected EList javaMetaData = null;
+
+ /**
+ * The cached value of the '{@link #getXsdMetaData() <em>Xsd Meta Data</em>}' containment reference list.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #getXsdMetaData()
+ * @generated
+ * @ordered
+ */
+ protected EList xsdMetaData = null;
+
+ /**
+ * The cached value of the '{@link #getTypeMetaData() <em>Type Meta Data</em>}' containment reference list.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #getTypeMetaData()
+ * @generated
+ * @ordered
+ */
+ protected EList typeMetaData = null;
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ protected SDOMetaDataGroupImpl()
+ {
+ super();
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ protected EClass eStaticClass()
+ {
+ return MetadataPackageImpl.Literals.SDO_META_DATA_GROUP;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public List getJavaMetaData()
+ {
+ if (javaMetaData == null)
+ {
+ javaMetaData = new EObjectContainmentEList(JavaMetaData.class, this, MetadataPackageImpl.SDO_META_DATA_GROUP__JAVA_META_DATA);
+ }
+ return javaMetaData;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public List getXsdMetaData()
+ {
+ if (xsdMetaData == null)
+ {
+ xsdMetaData = new EObjectContainmentEList(XSDMetaData.class, this, MetadataPackageImpl.SDO_META_DATA_GROUP__XSD_META_DATA);
+ }
+ return xsdMetaData;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public List getTypeMetaData()
+ {
+ if (typeMetaData == null)
+ {
+ typeMetaData = new EObjectContainmentEList(TypeMetaData.class, this, MetadataPackageImpl.SDO_META_DATA_GROUP__TYPE_META_DATA);
+ }
+ return typeMetaData;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public NotificationChain eInverseRemove(InternalEObject otherEnd, int featureID, NotificationChain msgs)
+ {
+ switch (featureID)
+ {
+ case MetadataPackageImpl.SDO_META_DATA_GROUP__JAVA_META_DATA:
+ return ((InternalEList)getJavaMetaData()).basicRemove(otherEnd, msgs);
+ case MetadataPackageImpl.SDO_META_DATA_GROUP__XSD_META_DATA:
+ return ((InternalEList)getXsdMetaData()).basicRemove(otherEnd, msgs);
+ case MetadataPackageImpl.SDO_META_DATA_GROUP__TYPE_META_DATA:
+ return ((InternalEList)getTypeMetaData()).basicRemove(otherEnd, msgs);
+ }
+ return super.eInverseRemove(otherEnd, featureID, msgs);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public Object eGet(int featureID, boolean resolve, boolean coreType)
+ {
+ switch (featureID)
+ {
+ case MetadataPackageImpl.SDO_META_DATA_GROUP__JAVA_META_DATA:
+ return getJavaMetaData();
+ case MetadataPackageImpl.SDO_META_DATA_GROUP__XSD_META_DATA:
+ return getXsdMetaData();
+ case MetadataPackageImpl.SDO_META_DATA_GROUP__TYPE_META_DATA:
+ return getTypeMetaData();
+ }
+ return super.eGet(featureID, resolve, coreType);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public void eSet(int featureID, Object newValue)
+ {
+ switch (featureID)
+ {
+ case MetadataPackageImpl.SDO_META_DATA_GROUP__JAVA_META_DATA:
+ getJavaMetaData().clear();
+ getJavaMetaData().addAll((Collection)newValue);
+ return;
+ case MetadataPackageImpl.SDO_META_DATA_GROUP__XSD_META_DATA:
+ getXsdMetaData().clear();
+ getXsdMetaData().addAll((Collection)newValue);
+ return;
+ case MetadataPackageImpl.SDO_META_DATA_GROUP__TYPE_META_DATA:
+ getTypeMetaData().clear();
+ getTypeMetaData().addAll((Collection)newValue);
+ return;
+ }
+ super.eSet(featureID, newValue);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public void eUnset(int featureID)
+ {
+ switch (featureID)
+ {
+ case MetadataPackageImpl.SDO_META_DATA_GROUP__JAVA_META_DATA:
+ getJavaMetaData().clear();
+ return;
+ case MetadataPackageImpl.SDO_META_DATA_GROUP__XSD_META_DATA:
+ getXsdMetaData().clear();
+ return;
+ case MetadataPackageImpl.SDO_META_DATA_GROUP__TYPE_META_DATA:
+ getTypeMetaData().clear();
+ return;
+ }
+ super.eUnset(featureID);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public boolean eIsSet(int featureID)
+ {
+ switch (featureID)
+ {
+ case MetadataPackageImpl.SDO_META_DATA_GROUP__JAVA_META_DATA:
+ return javaMetaData != null && !javaMetaData.isEmpty();
+ case MetadataPackageImpl.SDO_META_DATA_GROUP__XSD_META_DATA:
+ return xsdMetaData != null && !xsdMetaData.isEmpty();
+ case MetadataPackageImpl.SDO_META_DATA_GROUP__TYPE_META_DATA:
+ return typeMetaData != null && !typeMetaData.isEmpty();
+ }
+ return super.eIsSet(featureID);
+ }
+
+} //SDOMetaDataGroupImpl
diff --git a/branches/sdo-java-M2/sdo/impl/src/main/java/org/apache/tuscany/sdo/util/metadata/impl/TypeMetaDataImpl.java b/branches/sdo-java-M2/sdo/impl/src/main/java/org/apache/tuscany/sdo/util/metadata/impl/TypeMetaDataImpl.java
new file mode 100644
index 0000000000..cabbe5585f
--- /dev/null
+++ b/branches/sdo-java-M2/sdo/impl/src/main/java/org/apache/tuscany/sdo/util/metadata/impl/TypeMetaDataImpl.java
@@ -0,0 +1,188 @@
+/**
+ *
+ * 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.util.metadata.impl;
+
+import org.apache.tuscany.sdo.impl.DataObjectImpl;
+
+import org.apache.tuscany.sdo.util.metadata.TypeMetaData;
+
+import org.eclipse.emf.common.notify.Notification;
+
+import org.eclipse.emf.ecore.EClass;
+
+import org.eclipse.emf.ecore.impl.ENotificationImpl;
+
+/**
+ * <!-- begin-user-doc -->
+ * An implementation of the model object '<em><b>Type Meta Data</b></em>'.
+ * <!-- end-user-doc -->
+ * <p>
+ * The following features are implemented:
+ * <ul>
+ * <li>{@link org.apache.tuscany.sdo.util.metadata.impl.TypeMetaDataImpl#getLocation <em>Location</em>}</li>
+ * </ul>
+ * </p>
+ *
+ * @generated
+ */
+public class TypeMetaDataImpl extends DataObjectImpl implements TypeMetaData
+{
+ /**
+ * The default value of the '{@link #getLocation() <em>Location</em>}' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #getLocation()
+ * @generated
+ * @ordered
+ */
+ protected static final String LOCATION_EDEFAULT = null;
+
+ /**
+ * The cached value of the '{@link #getLocation() <em>Location</em>}' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #getLocation()
+ * @generated
+ * @ordered
+ */
+ protected String location = LOCATION_EDEFAULT;
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ protected TypeMetaDataImpl()
+ {
+ super();
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ protected EClass eStaticClass()
+ {
+ return MetadataPackageImpl.Literals.TYPE_META_DATA;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public String getLocation()
+ {
+ return location;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public void setLocation(String newLocation)
+ {
+ String oldLocation = location;
+ location = newLocation;
+ if (eNotificationRequired())
+ eNotify(new ENotificationImpl(this, Notification.SET, MetadataPackageImpl.TYPE_META_DATA__LOCATION, oldLocation, location));
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public Object eGet(int featureID, boolean resolve, boolean coreType)
+ {
+ switch (featureID)
+ {
+ case MetadataPackageImpl.TYPE_META_DATA__LOCATION:
+ return getLocation();
+ }
+ return super.eGet(featureID, resolve, coreType);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public void eSet(int featureID, Object newValue)
+ {
+ switch (featureID)
+ {
+ case MetadataPackageImpl.TYPE_META_DATA__LOCATION:
+ setLocation((String)newValue);
+ return;
+ }
+ super.eSet(featureID, newValue);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public void eUnset(int featureID)
+ {
+ switch (featureID)
+ {
+ case MetadataPackageImpl.TYPE_META_DATA__LOCATION:
+ setLocation(LOCATION_EDEFAULT);
+ return;
+ }
+ super.eUnset(featureID);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public boolean eIsSet(int featureID)
+ {
+ switch (featureID)
+ {
+ case MetadataPackageImpl.TYPE_META_DATA__LOCATION:
+ return LOCATION_EDEFAULT == null ? location != null : !LOCATION_EDEFAULT.equals(location);
+ }
+ return super.eIsSet(featureID);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public String toString()
+ {
+ if (eIsProxy()) return super.toString();
+
+ StringBuffer result = new StringBuffer(super.toString());
+ result.append(" (location: ");
+ result.append(location);
+ result.append(')');
+ return result.toString();
+ }
+
+} //TypeMetaDataImpl
diff --git a/branches/sdo-java-M2/sdo/impl/src/main/java/org/apache/tuscany/sdo/util/metadata/impl/XSDMetaDataImpl.java b/branches/sdo-java-M2/sdo/impl/src/main/java/org/apache/tuscany/sdo/util/metadata/impl/XSDMetaDataImpl.java
new file mode 100644
index 0000000000..96abb49d37
--- /dev/null
+++ b/branches/sdo-java-M2/sdo/impl/src/main/java/org/apache/tuscany/sdo/util/metadata/impl/XSDMetaDataImpl.java
@@ -0,0 +1,188 @@
+/**
+ *
+ * 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.util.metadata.impl;
+
+import org.apache.tuscany.sdo.impl.DataObjectImpl;
+
+import org.apache.tuscany.sdo.util.metadata.XSDMetaData;
+
+import org.eclipse.emf.common.notify.Notification;
+
+import org.eclipse.emf.ecore.EClass;
+
+import org.eclipse.emf.ecore.impl.ENotificationImpl;
+
+/**
+ * <!-- begin-user-doc -->
+ * An implementation of the model object '<em><b>XSD Meta Data</b></em>'.
+ * <!-- end-user-doc -->
+ * <p>
+ * The following features are implemented:
+ * <ul>
+ * <li>{@link org.apache.tuscany.sdo.util.metadata.impl.XSDMetaDataImpl#getLocation <em>Location</em>}</li>
+ * </ul>
+ * </p>
+ *
+ * @generated
+ */
+public class XSDMetaDataImpl extends DataObjectImpl implements XSDMetaData
+{
+ /**
+ * The default value of the '{@link #getLocation() <em>Location</em>}' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #getLocation()
+ * @generated
+ * @ordered
+ */
+ protected static final String LOCATION_EDEFAULT = null;
+
+ /**
+ * The cached value of the '{@link #getLocation() <em>Location</em>}' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #getLocation()
+ * @generated
+ * @ordered
+ */
+ protected String location = LOCATION_EDEFAULT;
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ protected XSDMetaDataImpl()
+ {
+ super();
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ protected EClass eStaticClass()
+ {
+ return MetadataPackageImpl.Literals.XSD_META_DATA;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public String getLocation()
+ {
+ return location;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public void setLocation(String newLocation)
+ {
+ String oldLocation = location;
+ location = newLocation;
+ if (eNotificationRequired())
+ eNotify(new ENotificationImpl(this, Notification.SET, MetadataPackageImpl.XSD_META_DATA__LOCATION, oldLocation, location));
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public Object eGet(int featureID, boolean resolve, boolean coreType)
+ {
+ switch (featureID)
+ {
+ case MetadataPackageImpl.XSD_META_DATA__LOCATION:
+ return getLocation();
+ }
+ return super.eGet(featureID, resolve, coreType);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public void eSet(int featureID, Object newValue)
+ {
+ switch (featureID)
+ {
+ case MetadataPackageImpl.XSD_META_DATA__LOCATION:
+ setLocation((String)newValue);
+ return;
+ }
+ super.eSet(featureID, newValue);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public void eUnset(int featureID)
+ {
+ switch (featureID)
+ {
+ case MetadataPackageImpl.XSD_META_DATA__LOCATION:
+ setLocation(LOCATION_EDEFAULT);
+ return;
+ }
+ super.eUnset(featureID);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public boolean eIsSet(int featureID)
+ {
+ switch (featureID)
+ {
+ case MetadataPackageImpl.XSD_META_DATA__LOCATION:
+ return LOCATION_EDEFAULT == null ? location != null : !LOCATION_EDEFAULT.equals(location);
+ }
+ return super.eIsSet(featureID);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public String toString()
+ {
+ if (eIsProxy()) return super.toString();
+
+ StringBuffer result = new StringBuffer(super.toString());
+ result.append(" (location: ");
+ result.append(location);
+ result.append(')');
+ return result.toString();
+ }
+
+} //XSDMetaDataImpl
diff --git a/branches/sdo-java-M2/sdo/impl/src/main/java/org/apache/tuscany/sdo/util/resource/DataObjectXMLStreamReader.java b/branches/sdo-java-M2/sdo/impl/src/main/java/org/apache/tuscany/sdo/util/resource/DataObjectXMLStreamReader.java
new file mode 100644
index 0000000000..87b1dd9ffc
--- /dev/null
+++ b/branches/sdo-java-M2/sdo/impl/src/main/java/org/apache/tuscany/sdo/util/resource/DataObjectXMLStreamReader.java
@@ -0,0 +1,1525 @@
+/**
+ *
+ * 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.util.resource;
+
+import java.util.ArrayList;
+import java.util.Arrays;
+import java.util.HashMap;
+import java.util.Iterator;
+import java.util.List;
+import java.util.Map;
+
+import javax.xml.namespace.NamespaceContext;
+import javax.xml.namespace.QName;
+import javax.xml.stream.Location;
+import javax.xml.stream.XMLStreamException;
+
+import org.apache.tuscany.sdo.impl.AttributeImpl;
+import org.apache.tuscany.sdo.impl.ReferenceImpl;
+import org.apache.tuscany.sdo.util.SDOUtil;
+import org.eclipse.emf.ecore.EDataType;
+import org.eclipse.emf.ecore.EReference;
+
+import commonj.sdo.DataObject;
+import commonj.sdo.Property;
+import commonj.sdo.Sequence;
+import commonj.sdo.Type;
+import commonj.sdo.helper.TypeHelper;
+import commonj.sdo.helper.XMLDocument;
+import commonj.sdo.helper.XSDHelper;
+
+public class DataObjectXMLStreamReader implements XMLFragmentStreamReader {
+ private static final QName XSI_TYPE_QNAME = new QName("http://www.w3.org/2001/XMLSchema-instance", "type", "xsi");
+ private Property rootElement = null;
+ private DataObject dataObject;
+
+ private String rootElementURI;
+
+ private String rootElementName;
+
+ private TypeHelper typeHelper;
+
+ private XSDHelper xsdHelper;
+
+ private Map.Entry[] properties;
+
+ private Map.Entry[] attributes;
+
+ private QName elementQName;
+
+ // we always create a new namespace context
+ private DelegatingNamespaceContext namespaceContext = new DelegatingNamespaceContext(null);
+
+ private Map declaredNamespaceMap = new HashMap();
+
+ // states for this pullparser - it can only have three states
+ private static final int START_ELEMENT_STATE = 0;
+
+ private static final int END_ELEMENT_STATE = 1;
+
+ private static final int DELEGATED_STATE = 2;
+
+ private static final int TEXT_STATE = 3;
+
+ // integer field that keeps the state of this
+ // parser.
+ private int state = START_ELEMENT_STATE;
+
+ // reference to the child reader
+ private XMLFragmentStreamReader childReader;
+
+ // current property index
+ // initialized at zero
+ private int currentPropertyIndex = 0;
+
+ public DataObjectXMLStreamReader(DataObject dataObject, String rootElmentURI, String rootElementName) {
+ this(dataObject, rootElmentURI, rootElementName, null, null);
+ }
+
+ public DataObjectXMLStreamReader(DataObject dataObject, String rootElmentURI, String rootElementName, TypeHelper typeHelper) {
+ this(dataObject, rootElmentURI, rootElementName, typeHelper, null);
+ }
+
+ public DataObjectXMLStreamReader(DataObject dataObject, String rootElmentURI, String rootElementName, TypeHelper typeHelper, XSDHelper xsdHelper) {
+ this.dataObject = dataObject;
+ this.rootElementURI = rootElmentURI;
+ this.rootElementName = rootElementName;
+ this.typeHelper = typeHelper == null ? TypeHelper.INSTANCE : typeHelper;
+ this.xsdHelper = (xsdHelper != null) ? xsdHelper : ((typeHelper == null) ? XSDHelper.INSTANCE : SDOUtil.createXSDHelper(typeHelper));
+ rootElement = this.xsdHelper.getGlobalProperty(rootElmentURI, rootElementName, true);
+ populateProperties();
+ }
+
+ protected DataObjectXMLStreamReader(Property rootElement, DataObject dataObject, TypeHelper typeHelper, XSDHelper xsdHelper) {
+ this.typeHelper = typeHelper == null ? TypeHelper.INSTANCE : typeHelper;
+ this.xsdHelper = (xsdHelper != null) ? xsdHelper : ((typeHelper == null) ? XSDHelper.INSTANCE : SDOUtil.createXSDHelper(typeHelper));
+ this.rootElement = rootElement;
+ this.dataObject = dataObject;
+ this.rootElementURI = xsdHelper.getNamespaceURI(rootElement);
+ this.rootElementName = xsdHelper.getLocalName(rootElement);
+ populateProperties();
+ }
+
+ public DataObjectXMLStreamReader(XMLDocument document, TypeHelper typeHelper) {
+ this.dataObject = document.getRootObject();
+ this.rootElementName = document.getRootElementName();
+ this.rootElementURI = document.getRootElementURI();
+ this.typeHelper = typeHelper;
+ this.xsdHelper = typeHelper == null ? XSDHelper.INSTANCE : SDOUtil.createXSDHelper(typeHelper);
+ populateProperties();
+ }
+
+ /*
+ * we need to pass in a namespace context since when delegated, we've no idea of the current namespace context. So it needs to be passed on here!
+ */
+ protected DataObjectXMLStreamReader(QName elementQName, Map.Entry[] properties, Map.Entry[] attributes) {
+ // validate the lengths, since both the arrays are supposed
+ // to have
+ this.properties = properties;
+ this.elementQName = elementQName;
+ this.attributes = attributes;
+
+ }
+
+ private void addProperty(List propertyList, Property property, Object value) {
+ if (isTransient(property))
+ return;
+ if (property.isMany() && property.getContainingType().isOpen() && value instanceof Sequence) {
+ addSequenceValue(propertyList, (Sequence) value);
+ } else if (SDOUtil.isMany(property, dataObject) && value instanceof List) {
+ addListValue(propertyList, property, (List) value);
+ } else {
+ // Complex Type
+ addSingleValue(propertyList, property, value);
+ }
+ }
+
+ private void addSequenceValue(List elements, Sequence seq) {
+ if (seq != null && seq.size() > 0) {
+ for (int j = 0; j < seq.size(); j++) {
+ Object o = seq.getValue(j);
+ Property p = seq.getProperty(j);
+ addSingleValue(elements, p, o);
+ }
+ }
+ }
+
+ private boolean isTransient(Property property) {
+ // HACK: We need some SDOUtil extension to understand a property is derived
+ if (property instanceof ReferenceImpl) {
+ ReferenceImpl r = (ReferenceImpl) property;
+ if (r.isTransient())
+ return true;
+ EReference opposite = r.getEOpposite();
+ if (opposite != null && opposite.isContainment()) {
+ return true;
+ }
+ } else if (property instanceof AttributeImpl) {
+ AttributeImpl a = (AttributeImpl) property;
+ if (a.isTransient())
+ return true;
+ EDataType d = (EDataType) a.getEType();
+ if (!d.isSerializable()) {
+ return true;
+ }
+ }
+ return false;
+ }
+
+ private void addListValue(List propertyList, Property property, List objList) {
+ if (objList != null) {
+ for (int j = 0; j < objList.size(); j++) {
+ Object object = objList.get(j);
+ addSingleValue(propertyList, property, object);
+ }
+ }
+ }
+
+ private void addSingleValue(List propertyList, Property property, Object value) {
+ String uri = xsdHelper.getNamespaceURI(property);
+ String name = xsdHelper.getLocalName(property);
+ QName qname = namespaceContext.createQName(uri, name);
+ Type propertyType = property.getType();
+
+ if (property.getName().equals("value") && uri == null && name.equals(":0")) {
+ // "value" is special property containing the value of simpleContent
+ Map.Entry entry = new NameValuePair(ELEMENT_TEXT, value);
+ propertyList.add(entry);
+ } else
+
+ // FIXME: We need to deal with non-containment properties
+ if (value == null) {
+ // Creating xsi:nil="true" for elements
+ Map.Entry entry = new NameValuePair(qname, null);
+ propertyList.add(entry);
+ } else if (propertyType.isDataType()) {
+ Map.Entry entry = new NameValuePair(qname, SDOUtil.convertToString(propertyType, value));
+ propertyList.add(entry);
+ } else {
+ DataObjectXMLStreamReader childReader = new DataObjectXMLStreamReader(property, (DataObject) value, typeHelper, xsdHelper);
+ childReader.rootElement = property;
+ Map.Entry entry = new NameValuePair(qname, childReader);
+ propertyList.add(entry);
+ }
+ }
+
+ public void populateProperties() {
+ if (properties != null)
+ return;
+ if (elementQName == null)
+ elementQName = namespaceContext.createQName(this.rootElementURI, this.rootElementName);
+ else
+ elementQName = namespaceContext.createQName(elementQName.getNamespaceURI(), elementQName.getLocalPart());
+
+ List elementList = new ArrayList();
+ List attributeList = new ArrayList();
+ Type type = dataObject.getType();
+ if (rootElement != null) {
+ Type modelType = rootElement.getType();
+ if (type != modelType) {
+ // FIXME: XSDHelper.getLocalName() for annoymous type returns null?
+ String typeName = xsdHelper.getLocalName(type);
+ if (typeName != null) {
+ QName realTypeName = namespaceContext.createQName(type.getURI(), typeName);
+ String typeQName = realTypeName.getPrefix() + ":" + realTypeName.getLocalPart();
+ QName xmlns =
+ new QName("http://www.w3.org/2000/xmlns/", realTypeName.getPrefix(), "xmlns");
+ attributeList.add(new NameValuePair(xmlns, realTypeName.getNamespaceURI()));
+ attributeList.add(new NameValuePair(XSI_TYPE_QNAME, typeQName));
+ }
+ }
+ }
+
+ if (type.isSequenced()) {
+ Sequence sequence = dataObject.getSequence();
+ for (int i = 0; i < sequence.size(); i++) {
+ Property property = sequence.getProperty(i);
+ Object value = sequence.getValue(i);
+ if (property == null) {
+ // property == null for text in mixed content
+ elementList.add(new NameValuePair(ELEMENT_TEXT, value));
+ } else {
+ addProperty(elementList, property, value);
+ }
+ }
+ // Attributes are not in the sequence
+ List properties = dataObject.getInstanceProperties();
+ for (Iterator i = properties.iterator(); i.hasNext();) {
+ Property property = (Property) i.next();
+ if (xsdHelper.isAttribute(property)) {
+ // FIXME: How to handle nilable=true?
+ if (!dataObject.isSet(property))
+ continue;
+ Object value = dataObject.get(property);
+ addProperty(attributeList, property, value);
+ }
+ }
+ } else {
+ List properties = dataObject.getInstanceProperties();
+ for (Iterator i = properties.iterator(); i.hasNext();) {
+ Property property = (Property) i.next();
+ // FIXME: How to handle nilable=true?
+ if (!dataObject.isSet(property))
+ continue;
+ Object value = dataObject.get(property);
+ if (xsdHelper.isAttribute(property))
+ addProperty(attributeList, property, value);
+ else
+ addProperty(elementList, property, value);
+ }
+ }
+ properties = (Map.Entry[]) elementList.toArray(new Map.Entry[0]);
+ attributes = (Map.Entry[]) attributeList.toArray(new Map.Entry[0]);
+ }
+
+ public DataObject getDataObject() {
+ return dataObject;
+ }
+
+ /**
+ * add the namespace context
+ */
+
+ public void setParentNamespaceContext(NamespaceContext nsContext) {
+ // register the namespace context passed in to this
+ this.namespaceContext.setParent(nsContext);
+
+ }
+
+ /**
+ * we need to split out the calling to the populate namespaces seperately since this needs to be done *after* setting the parent namespace
+ * context. We cannot assume it will happen at construction!
+ */
+ public void init() {
+ // here we have an extra issue to attend to. we need to look at the
+ // prefixes and uris (the combination) and populate a hashmap of
+ // namespaces. The hashmap of namespaces will be used to serve the
+ // namespace context
+
+ populateNamespaceContext();
+ }
+
+ /**
+ *
+ * @param key
+ * @return
+ * @throws IllegalArgumentException
+ */
+ public Object getProperty(String key) throws IllegalArgumentException {
+ if (state == START_ELEMENT_STATE || state == END_ELEMENT_STATE) {
+ return null;
+ } else if (state == TEXT_STATE) {
+ return null;
+ } else if (state == DELEGATED_STATE) {
+ return childReader.getProperty(key);
+ } else {
+ return null;
+ }
+
+ }
+
+ public int next() throws XMLStreamException {
+ return updateStatus();
+ }
+
+ public void require(int i, String string, String string1) throws XMLStreamException {
+ throw new UnsupportedOperationException();
+ }
+
+ /**
+ * todo implement the right contract for this
+ *
+ * @return
+ * @throws XMLStreamException
+ */
+ public String getElementText() throws XMLStreamException {
+ if (state == DELEGATED_STATE) {
+ return childReader.getElementText();
+ } else {
+ return null;
+ }
+
+ }
+
+ /**
+ * todo implement this
+ *
+ * @return
+ * @throws XMLStreamException
+ */
+ public int nextTag() throws XMLStreamException {
+ return 0;
+ }
+
+ /**
+ * @return
+ * @throws XMLStreamException
+ */
+ public boolean hasNext() throws XMLStreamException {
+ if (state == DELEGATED_STATE) {
+ if (childReader.isEndOfFragment()) {
+ // the child reader is done. We shouldn't be getting the
+ // hasnext result from the child pullparser then
+ return true;
+ } else {
+ return childReader.hasNext();
+ }
+ } else {
+ return (state == START_ELEMENT_STATE || state == TEXT_STATE);
+
+ }
+ }
+
+ public void close() throws XMLStreamException {
+ // do nothing here - we have no resources to free
+ }
+
+ public String getNamespaceURI(String prefix) {
+ return namespaceContext.getNamespaceURI(prefix);
+ }
+
+ public boolean isStartElement() {
+ if (state == START_ELEMENT_STATE) {
+ return true;
+ } else if (state == END_ELEMENT_STATE) {
+ return false;
+ }
+ return childReader.isStartElement();
+ }
+
+ public boolean isEndElement() {
+ if (state == START_ELEMENT_STATE) {
+ return false;
+ } else if (state == END_ELEMENT_STATE) {
+ return true;
+ }
+ return childReader.isEndElement();
+ }
+
+ public boolean isCharacters() {
+ if (state == START_ELEMENT_STATE || state == END_ELEMENT_STATE) {
+ return false;
+ }
+ return childReader.isCharacters();
+ }
+
+ public boolean isWhiteSpace() {
+ if (state == START_ELEMENT_STATE || state == END_ELEMENT_STATE) {
+ return false;
+ }
+ return childReader.isWhiteSpace();
+ }
+
+ // /////////////////////////////////////////////////////////////////////////
+ // / attribute handling
+ // /////////////////////////////////////////////////////////////////////////
+
+ public String getAttributeValue(String nsUri, String localName) {
+
+ int attribCount = getAttributeCount();
+ String returnValue = null;
+ QName attribQualifiedName;
+ for (int i = 0; i < attribCount; i++) {
+ attribQualifiedName = getAttributeName(i);
+ if (nsUri == null) {
+ if (localName.equals(attribQualifiedName.getLocalPart())) {
+ returnValue = getAttributeValue(i);
+ break;
+ }
+ } else {
+ if (localName.equals(attribQualifiedName.getLocalPart()) && nsUri.equals(attribQualifiedName.getNamespaceURI())) {
+ returnValue = getAttributeValue(i);
+ break;
+ }
+ }
+
+ }
+
+ return returnValue;
+ }
+
+ public int getAttributeCount() {
+ return (state == DELEGATED_STATE) ? childReader.getAttributeCount()
+ : ((attributes != null) && (state == START_ELEMENT_STATE) ? attributes.length : 0);
+ }
+
+ /**
+ * @param i
+ * @return
+ */
+ public QName getAttributeName(int i) {
+ if (state == DELEGATED_STATE) {
+ return childReader.getAttributeName(i);
+ } else if (state == START_ELEMENT_STATE) {
+ if (attributes == null) {
+ return null;
+ } else {
+ if ((i >= (attributes.length)) || i < 0) { // out of range
+ return null;
+ } else {
+ // get the attribute pointer
+ Object attribPointer = attributes[i].getKey();
+ // case one - attrib name is null
+ // this should be the pointer to the OMAttribute then
+ if (attribPointer instanceof String) {
+ return new QName((String) attribPointer);
+ } else if (attribPointer instanceof QName) {
+ return (QName) attribPointer;
+ } else {
+ return null;
+ }
+ }
+ }
+ } else {
+ throw new IllegalStateException();// as per the api contract
+ }
+
+ }
+
+ public String getAttributeNamespace(int i) {
+ if (state == DELEGATED_STATE) {
+ return childReader.getAttributeNamespace(i);
+ } else if (state == START_ELEMENT_STATE) {
+ QName name = getAttributeName(i);
+ if (name == null) {
+ return null;
+ } else {
+ return name.getNamespaceURI();
+ }
+ } else {
+ throw new IllegalStateException();
+ }
+ }
+
+ public String getAttributeLocalName(int i) {
+ if (state == DELEGATED_STATE) {
+ return childReader.getAttributeLocalName(i);
+ } else if (state == START_ELEMENT_STATE) {
+ QName name = getAttributeName(i);
+ if (name == null) {
+ return null;
+ } else {
+ return name.getLocalPart();
+ }
+ } else {
+ throw new IllegalStateException();
+ }
+ }
+
+ public String getAttributePrefix(int i) {
+ if (state == DELEGATED_STATE) {
+ return childReader.getAttributePrefix(i);
+ } else if (state == START_ELEMENT_STATE) {
+ QName name = getAttributeName(i);
+ if (name == null) {
+ return null;
+ } else {
+ return name.getPrefix();
+ }
+ } else {
+ throw new IllegalStateException();
+ }
+ }
+
+ public String getAttributeType(int i) {
+ return null; // not supported
+ }
+
+ public String getAttributeValue(int i) {
+ if (state == DELEGATED_STATE) {
+ return childReader.getAttributeValue(i);
+ } else if (state == START_ELEMENT_STATE) {
+ if (attributes == null) {
+ return null;
+ } else {
+ if ((i >= (attributes.length)) || i < 0) { // out of range
+ return null;
+ } else {
+ // get the attribute pointer
+ Object attribPointer = attributes[i].getKey();
+ Object omAttribObj = attributes[i].getValue();
+ // case one - attrib name is null
+ // this should be the pointer to the OMAttribute then
+ if (attribPointer instanceof String) {
+ return (String) omAttribObj;
+ } else if (attribPointer instanceof QName) {
+ return (String) omAttribObj;
+ } else {
+ return null;
+ }
+ }
+ }
+ } else {
+ throw new IllegalStateException();
+ }
+
+ }
+
+ public boolean isAttributeSpecified(int i) {
+ return false; // not supported
+ }
+
+ // /////////////////////////////////////////////////////////////////////////
+ // //////////// end of attribute handling
+ // /////////////////////////////////////////////////////////////////////////
+
+ // //////////////////////////////////////////////////////////////////////////
+ // //////////// namespace handling
+ // //////////////////////////////////////////////////////////////////////////
+
+ public int getNamespaceCount() {
+ if (state == DELEGATED_STATE) {
+ return childReader.getNamespaceCount();
+ } else {
+ return declaredNamespaceMap.size();
+ }
+ }
+
+ /**
+ * @param i
+ * @return
+ */
+ public String getNamespacePrefix(int i) {
+ if (state == DELEGATED_STATE) {
+ return childReader.getNamespacePrefix(i);
+ } else if (state != TEXT_STATE) {
+ // order the prefixes
+ String[] prefixes = makePrefixArray();
+ if ((i >= prefixes.length) || (i < 0)) {
+ return null;
+ } else {
+ return prefixes[i];
+ }
+
+ } else {
+ throw new IllegalStateException();
+ }
+
+ }
+
+ /**
+ * Get the prefix list from the hastable and take that into an array
+ *
+ * @return
+ */
+ private String[] makePrefixArray() {
+ String[] prefixes = (String[]) declaredNamespaceMap.keySet().toArray(new String[declaredNamespaceMap.size()]);
+ Arrays.sort(prefixes);
+ return prefixes;
+ }
+
+ public String getNamespaceURI(int i) {
+ if (state == DELEGATED_STATE) {
+ return childReader.getNamespaceURI(i);
+ } else if (state != TEXT_STATE) {
+ String namespacePrefix = getNamespacePrefix(i);
+ return namespacePrefix == null ? null : (String) declaredNamespaceMap.get(namespacePrefix);
+ } else {
+ throw new IllegalStateException();
+ }
+
+ }
+
+ public NamespaceContext getNamespaceContext() {
+ if (state == DELEGATED_STATE) {
+ return childReader.getNamespaceContext();
+ } else {
+ return namespaceContext;
+ }
+
+ }
+
+ // /////////////////////////////////////////////////////////////////////////
+ // /////// end of namespace handling
+ // /////////////////////////////////////////////////////////////////////////
+
+ public int getEventType() {
+ if (state == START_ELEMENT_STATE) {
+ return START_ELEMENT;
+ } else if (state == END_ELEMENT_STATE) {
+ return END_ELEMENT;
+ } else { // this is the delegated state
+ return childReader.getEventType();
+ }
+
+ }
+
+ public String getText() {
+ if (state == DELEGATED_STATE) {
+ return childReader.getText();
+ } else if (state == TEXT_STATE) {
+ return (String) properties[currentPropertyIndex - 1].getValue();
+ } else {
+ throw new IllegalStateException();
+ }
+ }
+
+ public char[] getTextCharacters() {
+ if (state == DELEGATED_STATE) {
+ return childReader.getTextCharacters();
+ } else if (state == TEXT_STATE) {
+ return properties[currentPropertyIndex - 1].getValue() == null ? new char[0] : ((String) properties[currentPropertyIndex - 1].getValue())
+ .toCharArray();
+ } else {
+ throw new IllegalStateException();
+ }
+ }
+
+ public int getTextCharacters(int i, char[] chars, int i1, int i2) throws XMLStreamException {
+ if (state == DELEGATED_STATE) {
+ return childReader.getTextCharacters(i, chars, i1, i2);
+ } else if (state == TEXT_STATE) {
+ // todo - implement this
+ return 0;
+ } else {
+ throw new IllegalStateException();
+ }
+ }
+
+ public int getTextStart() {
+ if (state == DELEGATED_STATE) {
+ return childReader.getTextStart();
+ } else if (state == TEXT_STATE) {
+ return 0;// assume text always starts at 0
+ } else {
+ throw new IllegalStateException();
+ }
+ }
+
+ public int getTextLength() {
+ if (state == DELEGATED_STATE) {
+ return childReader.getTextLength();
+ } else if (state == TEXT_STATE) {
+ return 0;// assume text always starts at 0
+ } else {
+ throw new IllegalStateException();
+ }
+ }
+
+ public String getEncoding() {
+ if (state == DELEGATED_STATE) {
+ return childReader.getEncoding();
+ } else {
+ // we've no idea what the encoding is going to be in this case
+ // perhaps we ought to return some constant here, which the user might
+ // have access to change!
+ return null;
+ }
+ }
+
+ /**
+ * check the validity of this implementation
+ *
+ * @return
+ */
+ public boolean hasText() {
+ if (state == DELEGATED_STATE) {
+ return childReader.hasText();
+ } else if (state == TEXT_STATE) {
+ return true;
+ } else {
+ return false;
+ }
+
+ }
+
+ /**
+ * @return
+ */
+ public Location getLocation() {
+ // return a default location
+ return new Location() {
+ public int getLineNumber() {
+ return 0;
+ }
+
+ public int getColumnNumber() {
+ return 0;
+ }
+
+ public int getCharacterOffset() {
+ return 0;
+ }
+
+ public String getPublicId() {
+ return null;
+ }
+
+ public String getSystemId() {
+ return null;
+ }
+ };
+ }
+
+ public QName getName() {
+ if (state == DELEGATED_STATE) {
+ return childReader.getName();
+ } else if (state != TEXT_STATE) {
+ return elementQName;
+ } else {
+ throw new IllegalStateException();
+ }
+
+ }
+
+ public String getLocalName() {
+ if (state == DELEGATED_STATE) {
+ return childReader.getLocalName();
+ } else if (state != TEXT_STATE) {
+ return elementQName.getLocalPart();
+ } else {
+ throw new IllegalStateException();
+ }
+ }
+
+ public boolean hasName() {
+ // since this parser always has a name, the hasname
+ // has to return true if we are still navigating this element
+ // if not we should ask the child reader for it.
+ if (state == DELEGATED_STATE) {
+ return childReader.hasName();
+ } else if (state != TEXT_STATE) {
+ return true;
+ } else {
+ return false;
+ }
+ }
+
+ public String getNamespaceURI() {
+ if (state == DELEGATED_STATE) {
+ return childReader.getNamespaceURI();
+ } else if (state == TEXT_STATE) {
+ return null;
+ } else {
+ return elementQName.getNamespaceURI();
+ }
+ }
+
+ public String getPrefix() {
+ if (state == DELEGATED_STATE) {
+ return childReader.getPrefix();
+ } else if (state == TEXT_STATE) {
+ return null;
+ } else {
+ return elementQName.getPrefix();
+ }
+ }
+
+ public String getVersion() {
+ return null;
+ }
+
+ public boolean isStandalone() {
+ return true;
+ }
+
+ public boolean standaloneSet() {
+ return true;
+ }
+
+ public String getCharacterEncodingScheme() {
+ return null; // todo - should we return something for this ?
+ }
+
+ public String getPITarget() {
+ throw new UnsupportedOperationException("Yet to be implemented !!");
+ }
+
+ public String getPIData() {
+ throw new UnsupportedOperationException("Yet to be implemented !!");
+ }
+
+ // /////////////////////////////////////////////////////////////////////////
+ // / Other utility methods
+ // ////////////////////////////////////////////////////////////////////////
+
+ /**
+ * Populates a namespace context
+ */
+ private void populateNamespaceContext() {
+
+ // first add the current element namespace to the namespace context
+ // declare it if not found
+ registerNamespace(elementQName.getPrefix(), elementQName.getNamespaceURI());
+
+ // traverse through the attributes and populate the namespace context
+ // the attrib list can be of many combinations
+ // the valid combinations are
+ // String - String
+ // QName - QName
+ // null - OMAttribute
+
+ if (attributes != null) {
+ for (int i = 0; i < attributes.length; i++) { // jump in two
+ Object attribName = attributes[i].getKey();
+ if (attribName instanceof String) {
+ // ignore this case - Nothing to do
+ } else if (attribName instanceof QName) {
+ QName attribQName = ((QName) attribName);
+ registerNamespace(attribQName.getPrefix(), attribQName.getNamespaceURI());
+
+ }
+ }
+ }
+
+ }
+
+ /**
+ * @param prefix
+ * @param uri
+ */
+ private void registerNamespace(String prefix, String uri) {
+ if (!uri.equals(namespaceContext.getNamespaceURI(prefix))) {
+ namespaceContext.registerMapping(prefix, uri);
+ declaredNamespaceMap.put(prefix, uri);
+ }
+ }
+
+ /**
+ * By far this should be the most important method in this class this method changes the state of the parser according to the change in the
+ */
+ private int updateStatus() throws XMLStreamException {
+ int returnEvent = -1; // invalid state is the default state
+ switch (state) {
+ case START_ELEMENT_STATE:
+ // current element is start element. We should be looking at the
+ // property list and making a pullparser for the property value
+ if (properties == null || properties.length == 0) {
+ // no properties - move to the end element state straightaway
+ state = END_ELEMENT_STATE;
+ returnEvent = END_ELEMENT;
+ } else {
+ // there are properties. now we should delegate this task to a
+ // child reader depending on the property type
+ returnEvent = processProperties();
+
+ }
+ break;
+ case END_ELEMENT_STATE:
+ // we've reached the end element already. If the user tries to push
+ // further ahead then it is an exception
+ throw new XMLStreamException("Trying to go beyond the end of the pullparser");
+
+ case DELEGATED_STATE:
+ if (childReader.isEndOfFragment()) {
+ // we've reached the end!
+ if (currentPropertyIndex > (properties.length - 1)) {
+ state = END_ELEMENT_STATE;
+ returnEvent = END_ELEMENT;
+ } else {
+ returnEvent = processProperties();
+ }
+ } else {
+ returnEvent = childReader.next();
+ }
+ break;
+
+ case TEXT_STATE:
+ // if there are any more event we should be delegating to
+ // processProperties. if not we just return an end element
+ if (currentPropertyIndex > (properties.length - 1)) {
+ state = END_ELEMENT_STATE;
+ returnEvent = END_ELEMENT;
+ } else {
+ returnEvent = processProperties();
+ }
+ break;
+ }
+ return returnEvent;
+ }
+
+ /**
+ * A convenient method to reuse the properties
+ *
+ * @return event to be thrown
+ * @throws XMLStreamException
+ */
+ private int processProperties() throws XMLStreamException {
+ // move to the next property depending on the current property
+ // index
+ Object propPointer = properties[currentPropertyIndex].getKey();
+ QName propertyQName = null;
+ boolean textFound = false;
+ if (propPointer == null) {
+ throw new XMLStreamException("property key cannot be null!");
+ } else if (propPointer instanceof String) {
+ // propPointer being a String has a special case
+ // that is it can be a the special constant ELEMENT_TEXT that
+ // says this text event
+ if (ELEMENT_TEXT.equals(propPointer)) {
+ textFound = true;
+ } else {
+ propertyQName = new QName((String) propPointer);
+ }
+ } else if (propPointer instanceof QName) {
+ propertyQName = (QName) propPointer;
+ } else {
+ // oops - we've no idea what kind of key this is
+ throw new XMLStreamException("unidentified property key!!!" + propPointer);
+ }
+
+ // ok! we got the key. Now look at the value
+ Object propertyValue = properties[currentPropertyIndex].getValue();
+ // cater for the special case now
+ if (textFound) {
+ // no delegation here - make the parser null and immediately
+ // return with the event characters
+ childReader = null;
+ state = TEXT_STATE;
+ currentPropertyIndex++;
+ return CHARACTERS;
+ } else if (propertyValue == null || propertyValue instanceof String) {
+ // strings are handled by the NameValuePairStreamReader
+ childReader = new SimpleElementStreamReader(propertyQName, (String) propertyValue);
+ childReader.setParentNamespaceContext(this.namespaceContext);
+ childReader.init();
+ } else if (propertyValue instanceof DataObjectXMLStreamReader) {
+ // ADBbean has it's own method to get a reader
+ XMLFragmentStreamReader reader = (DataObjectXMLStreamReader) propertyValue;
+ // we know for sure that this is an ADB XMLStreamreader.
+ // However we need to make sure that it is compatible
+ childReader = reader;
+ childReader.setParentNamespaceContext(this.namespaceContext);
+ childReader.init();
+ } else {
+ // all special possiblilities has been tried! Let's treat
+ // the thing as a bean and try generating events from it
+ throw new UnsupportedOperationException("Not supported");
+ // childReader = new WrappingXMLStreamReader(BeanUtil.getPullParser(propertyValue, propertyQName));
+ // we cannot register the namespace context here
+ }
+
+ // set the state here
+ state = DELEGATED_STATE;
+ // we are done with the delegation
+ // increment the property index
+ currentPropertyIndex++;
+ return childReader.getEventType();
+ }
+
+ /**
+ * are we done ?
+ *
+ * @return
+ */
+ public boolean isEndOfFragment() {
+ return (state == END_ELEMENT_STATE);
+ }
+
+ protected static class NameValuePair implements Map.Entry {
+ private Object key;
+
+ private Object value;
+
+ public NameValuePair(Object key, Object value) {
+ this.key = key;
+ this.value = value;
+ }
+
+ public Object getKey() {
+ return key;
+ }
+
+ public Object getValue() {
+ return value;
+ }
+
+ public Object setValue(Object value) {
+ Object v = this.value;
+ this.value = value;
+ return v;
+ }
+
+ }
+
+ protected static class SimpleElementStreamReader implements XMLFragmentStreamReader {
+
+ private static final int START_ELEMENT_STATE = 0;
+
+ private static final int TEXT_STATE = 1;
+
+ private static final int END_ELEMENT_STATE = 2;
+
+ private static final int START_ELEMENT_STATE_WITH_NULL = 3;
+
+ private static final QName XSI_NIL_QNAME = new QName("http://www.w3.org/2001/XMLSchema-instance", "nil", "xsi");
+
+ private DelegatingNamespaceContext namespaceContext = new DelegatingNamespaceContext(null);
+
+ private QName name;
+
+ private String value;
+
+ private int state = START_ELEMENT_STATE;
+
+ public SimpleElementStreamReader(QName name, String value) {
+ this.name = name;
+ this.value = value;
+ if (value == null)
+ state = START_ELEMENT_STATE_WITH_NULL;
+ }
+
+ public Object getProperty(String key) throws IllegalArgumentException {
+ return null;
+ }
+
+ public int next() throws XMLStreamException {
+ switch (state) {
+ case START_ELEMENT_STATE:
+ state = TEXT_STATE;
+ return CHARACTERS;
+ case START_ELEMENT_STATE_WITH_NULL:
+ state = END_ELEMENT_STATE;
+ return END_ELEMENT;
+ case END_ELEMENT_STATE:
+ // oops, not supposed to happen!
+ throw new XMLStreamException("end already reached!");
+ case TEXT_STATE:
+ state = END_ELEMENT_STATE;
+ return END_ELEMENT;
+ default:
+ throw new XMLStreamException("unknown event type!");
+ }
+ }
+
+ public void require(int i, String string, String string1) throws XMLStreamException {
+ // not implemented
+ }
+
+ public String getElementText() throws XMLStreamException {
+ if (state == START_ELEMENT) {
+ // move to the end state and return the value
+ state = END_ELEMENT_STATE;
+ return value;
+ } else {
+ throw new XMLStreamException();
+ }
+
+ }
+
+ public int nextTag() throws XMLStreamException {
+ return 0;// todo
+ }
+
+ public boolean hasNext() throws XMLStreamException {
+ return (state != END_ELEMENT_STATE);
+ }
+
+ public void close() throws XMLStreamException {
+ // Do nothing - we've nothing to free here
+ }
+
+ public String getNamespaceURI(String prefix) {
+ return namespaceContext.getNamespaceURI(prefix);
+ }
+
+ public boolean isStartElement() {
+ return (state == START_ELEMENT_STATE || state == START_ELEMENT_STATE_WITH_NULL);
+ }
+
+ public boolean isEndElement() {
+ return (state == END_ELEMENT_STATE);
+ }
+
+ public boolean isCharacters() {
+ return (state == TEXT_STATE);
+ }
+
+ public boolean isWhiteSpace() {
+ return false; // no whitespaces here
+ }
+
+ public boolean isAttributeSpecified(int i) {
+ return false; // no attribs here
+ }
+
+ public NamespaceContext getNamespaceContext() {
+ return this.namespaceContext;
+ }
+
+ public int getEventType() {
+ switch (state) {
+ case START_ELEMENT_STATE:
+ case START_ELEMENT_STATE_WITH_NULL:
+ return START_ELEMENT;
+ case END_ELEMENT_STATE:
+ return END_ELEMENT;
+ case TEXT_STATE:
+ return CHARACTERS;
+ default:
+ throw new UnsupportedOperationException();
+ // we've no idea what this is!!!!!
+ }
+
+ }
+
+ public String getText() {
+ if (state == TEXT_STATE) {
+ return value;
+ } else {
+ throw new IllegalStateException();
+ }
+ }
+
+ public char[] getTextCharacters() {
+ if (state == TEXT_STATE) {
+ return value.toCharArray();
+ } else {
+ throw new IllegalStateException();
+ }
+ }
+
+ public int getTextCharacters(int i, char[] chars, int i1, int i2) throws XMLStreamException {
+ // not implemented
+ throw new UnsupportedOperationException();
+ }
+
+ public int getTextStart() {
+ if (state == TEXT_STATE) {
+ return 0;
+ } else {
+ throw new IllegalStateException();
+ }
+ }
+
+ public int getTextLength() {
+ if (state == TEXT_STATE) {
+ return value.length();
+ } else {
+ throw new IllegalStateException();
+ }
+
+ }
+
+ public String getEncoding() {
+ return "UTF-8";
+ }
+
+ public boolean hasText() {
+ return (state == TEXT_STATE);
+ }
+
+ public Location getLocation() {
+ return new Location() {
+ public int getLineNumber() {
+ return 0;
+ }
+
+ public int getColumnNumber() {
+ return 0;
+ }
+
+ public int getCharacterOffset() {
+ return 0;
+ }
+
+ public String getPublicId() {
+ return null;
+ }
+
+ public String getSystemId() {
+ return null;
+ }
+ };
+ }
+
+ public QName getName() {
+ if (state != TEXT_STATE) {
+ return name;
+ } else {
+ return null;
+ }
+ }
+
+ public String getLocalName() {
+ if (state != TEXT_STATE) {
+ return name.getLocalPart();
+ } else {
+ return null;
+ }
+ }
+
+ public boolean hasName() {
+ return (state != TEXT_STATE);
+
+ }
+
+ public String getNamespaceURI() {
+ if (state != TEXT_STATE) {
+ return name.getNamespaceURI();
+ } else {
+ return null;
+ }
+
+ }
+
+ public String getPrefix() {
+ if (state != TEXT_STATE) {
+ return name.getPrefix();
+ } else {
+ return null;
+ }
+ }
+
+ public String getVersion() {
+ return null; // todo 1.0 ?
+ }
+
+ public boolean isStandalone() {
+ return false;
+ }
+
+ public boolean standaloneSet() {
+ return false;
+ }
+
+ public String getCharacterEncodingScheme() {
+ return null;
+ }
+
+ public String getPITarget() {
+ return null;
+ }
+
+ public String getPIData() {
+ return null;
+ }
+
+ public boolean isEndOfFragment() {
+ return (state == END_ELEMENT_STATE);
+ }
+
+ public void setParentNamespaceContext(NamespaceContext nsContext) {
+ this.namespaceContext.setParent(nsContext);
+ }
+
+ public void init() {
+ // just add the current elements namespace and prefix to the this
+ // elements nscontext
+ registerNamespace(name.getPrefix(), name.getNamespaceURI());
+
+ }
+
+ /**
+ * @param prefix
+ * @param uri
+ */
+ private void registerNamespace(String prefix, String uri) {
+ // todo - need to fix this up to cater for cases where
+ // namespaces are having no prefixes
+ if (!uri.equals(namespaceContext.getNamespaceURI(prefix))) {
+ // this namespace is not there. Need to declare it
+ namespaceContext.registerMapping(prefix, uri);
+ }
+ }
+
+ public int getAttributeCount() {
+ if (state == START_ELEMENT_STATE_WITH_NULL)
+ return 1;
+ if (state == START_ELEMENT_STATE) {
+ return 0;
+ } else {
+ throw new IllegalStateException();
+ }
+
+ }
+
+ public String getAttributeLocalName(int i) {
+ if (state == START_ELEMENT_STATE_WITH_NULL && i == 0)
+ return XSI_NIL_QNAME.getLocalPart();
+ if (state == START_ELEMENT_STATE) {
+ return null;
+ } else {
+ throw new IllegalStateException();
+ }
+ }
+
+ public QName getAttributeName(int i) {
+ if (state == START_ELEMENT_STATE_WITH_NULL && i == 0)
+ return XSI_NIL_QNAME;
+ if (state == START_ELEMENT_STATE) {
+ return null;
+ } else {
+ throw new IllegalStateException();
+ }
+ }
+
+ public String getAttributeNamespace(int i) {
+ if (state == START_ELEMENT_STATE_WITH_NULL && i == 0)
+ return XSI_NIL_QNAME.getNamespaceURI();
+ if (state == START_ELEMENT_STATE) {
+ return null;
+ } else {
+ throw new IllegalStateException();
+ }
+ }
+
+ public String getAttributePrefix(int i) {
+ if (state == START_ELEMENT_STATE_WITH_NULL && i == 0)
+ return XSI_NIL_QNAME.getPrefix();
+ if (state == START_ELEMENT_STATE) {
+ return null;
+ } else {
+ throw new IllegalStateException();
+ }
+ }
+
+ public String getAttributeType(int i) {
+ return null; // not implemented
+ }
+
+ public String getAttributeValue(int i) {
+ if (state == START_ELEMENT_STATE_WITH_NULL && i == 0)
+ return "true";
+ if (state == START_ELEMENT_STATE) {
+ return null;
+ } else {
+ throw new IllegalStateException();
+ }
+ }
+
+ public String getAttributeValue(String string, String string1) {
+ if (state == TEXT_STATE) {
+ // todo something
+ return null;
+ } else {
+ return null;
+ }
+
+ }
+
+ public int getNamespaceCount() {
+ if (state == START_ELEMENT_STATE_WITH_NULL && isXsiNamespacePresent())
+ return 1;
+ else
+ return 0;
+
+ }
+
+ public String getNamespacePrefix(int i) {
+ if (state == START_ELEMENT_STATE_WITH_NULL && isXsiNamespacePresent() && i == 0)
+ return XSI_NIL_QNAME.getPrefix();
+ else
+ return null;
+ }
+
+ public String getNamespaceURI(int i) {
+ if (state == START_ELEMENT_STATE_WITH_NULL && isXsiNamespacePresent() && i == 0)
+ return XSI_NIL_QNAME.getNamespaceURI();
+ else
+ return null;
+ }
+
+ /**
+ * Test whether the xsi namespace is present
+ *
+ * @return
+ */
+ private boolean isXsiNamespacePresent() {
+ return (namespaceContext.getNamespaceURI(XSI_NIL_QNAME.getPrefix()) != null);
+ }
+
+ }
+
+ protected static class DelegatingNamespaceContext implements NamespaceContext {
+ private NamespaceContext parent;
+
+ private Map prefixToNamespaceMapping = new HashMap();
+
+ public DelegatingNamespaceContext(NamespaceContext parent) {
+ super();
+ this.parent = parent;
+
+ prefixToNamespaceMapping.put("xml", "http://www.w3.org/XML/1998/namespace");
+ prefixToNamespaceMapping.put("xmlns", "http://www.w3.org/2000/xmlns/");
+ prefixToNamespaceMapping.put("xsi", "http://www.w3.org/2001/XMLSchema-instance");
+ }
+
+ public String getNamespaceURI(String prefix) {
+ if (prefix == null)
+ throw new IllegalArgumentException("Prefix is null");
+
+ String ns = (String) prefixToNamespaceMapping.get(prefix);
+ if (ns != null)
+ return ns;
+ else if (parent != null)
+ return parent.getNamespaceURI(prefix);
+ else
+ return null;
+ }
+
+ public String getPrefix(String nsURI) {
+ if (nsURI == null)
+ throw new IllegalArgumentException("Namespace is null");
+ for (Iterator i = prefixToNamespaceMapping.entrySet().iterator(); i.hasNext();) {
+ Map.Entry entry = (Map.Entry) i.next();
+ if (entry.getValue().equals(nsURI)) {
+ return (String) entry.getKey();
+ }
+ }
+ if (parent != null)
+ return parent.getPrefix(nsURI);
+ else
+ return null;
+ }
+
+ public Iterator getPrefixes(String nsURI) {
+ List prefixList = new ArrayList();
+ for (Iterator i = prefixToNamespaceMapping.entrySet().iterator(); i.hasNext();) {
+ Map.Entry entry = (Map.Entry) i.next();
+ if (entry.getValue().equals(nsURI)) {
+ prefixList.add(entry.getKey());
+ }
+ }
+ if (parent != null) {
+ for (Iterator i = parent.getPrefixes(nsURI); i.hasNext();) {
+ prefixList.add(i.next());
+ }
+ }
+ return prefixList.iterator();
+ }
+
+ public void registerMapping(String prefix, String nsURI) {
+ prefixToNamespaceMapping.put(prefix, nsURI);
+ }
+
+ private int counter = 0;
+
+ public synchronized QName createQName(String nsURI, String name) {
+ String prefix = nsURI != null ? (String) getPrefix(nsURI) : null;
+ if (prefix == null && nsURI != null && !nsURI.equals(""))
+ prefix = "p" + (counter++);
+ if (prefix == null)
+ prefix = "";
+ if (nsURI != null)
+ prefixToNamespaceMapping.put(prefix, nsURI);
+ return new QName(nsURI, name, prefix);
+ }
+
+ public void removeMapping(String prefix) {
+ prefixToNamespaceMapping.remove(prefix);
+ }
+
+ public void setParent(NamespaceContext parent) {
+ this.parent = parent;
+ }
+ }
+
+}
diff --git a/branches/sdo-java-M2/sdo/impl/src/main/java/org/apache/tuscany/sdo/util/resource/SDOXMLResourceFactoryImpl.java b/branches/sdo-java-M2/sdo/impl/src/main/java/org/apache/tuscany/sdo/util/resource/SDOXMLResourceFactoryImpl.java
new file mode 100644
index 0000000000..c8189f9766
--- /dev/null
+++ b/branches/sdo-java-M2/sdo/impl/src/main/java/org/apache/tuscany/sdo/util/resource/SDOXMLResourceFactoryImpl.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.util.resource;
+
+
+import org.eclipse.emf.common.util.URI;
+import org.eclipse.emf.ecore.resource.Resource;
+import org.eclipse.emf.ecore.resource.impl.ResourceFactoryImpl;
+
+/**
+ * This class creates SDOXMLResourceImpl objects.
+ */
+public class SDOXMLResourceFactoryImpl extends ResourceFactoryImpl
+{
+ /**
+ * Constructor for SDOXMLResourceFactoryImpl.
+ */
+ public SDOXMLResourceFactoryImpl()
+ {
+ super();
+ }
+
+ /**
+ * Creates an XMLResourceImpl and returns it.
+ */
+ public Resource createResource(URI uri)
+ {
+ return new SDOXMLResourceImpl(uri);
+ }
+}
diff --git a/branches/sdo-java-M2/sdo/impl/src/main/java/org/apache/tuscany/sdo/util/resource/SDOXMLResourceImpl.java b/branches/sdo-java-M2/sdo/impl/src/main/java/org/apache/tuscany/sdo/util/resource/SDOXMLResourceImpl.java
new file mode 100644
index 0000000000..d08264a702
--- /dev/null
+++ b/branches/sdo-java-M2/sdo/impl/src/main/java/org/apache/tuscany/sdo/util/resource/SDOXMLResourceImpl.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.util.resource;
+
+import java.io.IOException;
+import java.security.AccessController;
+import java.security.PrivilegedActionException;
+import java.security.PrivilegedExceptionAction;
+import java.util.HashMap;
+import java.util.Map;
+
+import javax.xml.stream.XMLStreamException;
+import javax.xml.stream.XMLStreamReader;
+
+import org.apache.tuscany.sdo.util.StAX2SAXAdapter;
+import org.eclipse.emf.common.util.URI;
+import org.eclipse.emf.ecore.resource.Resource;
+import org.eclipse.emf.ecore.xmi.XMIException;
+import org.eclipse.emf.ecore.xmi.XMLHelper;
+import org.eclipse.emf.ecore.xmi.XMLLoad;
+import org.eclipse.emf.ecore.xmi.XMLResource;
+import org.eclipse.emf.ecore.xmi.impl.XMLHelperImpl;
+import org.eclipse.emf.ecore.xmi.impl.XMLLoadImpl;
+import org.eclipse.emf.ecore.xmi.impl.XMLResourceImpl;
+import org.xml.sax.ContentHandler;
+import org.xml.sax.SAXException;
+
+public class SDOXMLResourceImpl extends XMLResourceImpl {
+ private XMLStreamReader reader;
+
+ /**
+ * [rfeng] Override the XMLHelperImpl to replace the NamespaceSupport so that it's aware of the NamespaceContext from the XMLStreamReader
+ */
+ public static class SDOXMLHelperImpl extends XMLHelperImpl {
+
+ private static class StreamNamespaceSupport extends XMLHelperImpl.NamespaceSupport {
+ private XMLStreamReader reader;
+
+ public String getPrefix(String uri) {
+ if (reader == null)
+ return super.getPrefix(uri);
+ String prefix = null;
+ try {
+ prefix = uri != null ? reader.getNamespaceContext().getPrefix(uri) : null;
+ } catch (Exception e) {
+ // HACK:
+ // java.lang.UnsupportedOperationException
+ // at org.apache.axiom.om.impl.llom.OMStAXWrapper.getNamespaceContext(OMStAXWrapper.java:984)
+
+ prefix = null;
+ }
+ return prefix != null ? prefix : super.getPrefix(uri);
+ }
+
+ public String getURI(String prefix) {
+ if (reader == null)
+ return super.getURI(prefix);
+ String uri;
+ try {
+ uri = prefix != null ? reader.getNamespaceContext().getNamespaceURI(prefix) : null;
+ } catch (Exception e) {
+ // HACK:
+ // java.lang.UnsupportedOperationException
+ // at org.apache.axiom.om.impl.llom.OMStAXWrapper.getNamespaceContext(OMStAXWrapper.java:984)
+
+ uri = null;
+ }
+ return uri != null && uri.length()!=0 ? uri : super.getURI(prefix);
+ }
+
+ public StreamNamespaceSupport(XMLStreamReader reader) {
+ super();
+ this.reader = reader;
+ }
+
+ }
+
+ public SDOXMLHelperImpl(XMLResource resource, XMLStreamReader reader) {
+ this(reader);
+ setResource(resource);
+ }
+
+ public SDOXMLHelperImpl(XMLStreamReader reader) {
+ super();
+ this.namespaceSupport = new StreamNamespaceSupport(reader);
+ }
+ }
+
+ /**
+ * An EMF XMLLoad that loads a model from a StAX stream
+ */
+ public class SDOXMLLoadImpl extends XMLLoadImpl {
+ public SDOXMLLoadImpl(XMLHelper helper) {
+ super(helper);
+ }
+
+ /**
+ * Start parsing an XMLReader with the default handler.
+ */
+ public void load(XMLResource resource, final XMLStreamReader reader, Map options) throws IOException {
+ this.resource = resource;
+ Map mergedOptions = new HashMap(defaultLoadOptions);
+ if (options != null)
+ mergedOptions.putAll(options);
+
+ this.options = mergedOptions;
+
+ final ContentHandler handler = makeDefaultHandler();
+
+ if (errors != null) {
+ errors.clear();
+ }
+
+ final StAX2SAXAdapter adapter = new StAX2SAXAdapter(true);
+ // Parse the XMLReader and generate SAX events
+ try {
+ AccessController.doPrivileged(new PrivilegedExceptionAction() {
+ public Object run() throws XMLStreamException, SAXException {
+ adapter.parse(reader, handler);
+ return null;
+ }
+ });
+ } catch (PrivilegedActionException e) {
+ throw new Resource.IOWrappedException(e.getException());
+ }
+
+ helper = null;
+ if (!resource.getErrors().isEmpty()) {
+ Exception error = (Exception) resource.getErrors().get(0);
+ if (error instanceof XMIException) {
+ XMIException exception = (XMIException) error;
+ if (exception.getWrappedException() != null) {
+ throw new Resource.IOWrappedException(exception.getWrappedException());
+ }
+ }
+ throw new Resource.IOWrappedException(error);
+ }
+ }
+ }
+
+ public SDOXMLResourceImpl(URI uri) {
+ super(uri);
+ }
+
+ protected XMLHelper createXMLHelper() {
+ return new SDOXMLHelperImpl(this, reader);
+ }
+
+ /**
+ * @see org.eclipse.emf.ecore.xmi.impl.XMLResourceImpl#createXMLLoad()
+ */
+ protected XMLLoad createXMLLoad() {
+ return new SDOXMLLoadImpl(createXMLHelper());
+ }
+
+ /**
+ * Loads the resource from a StAX XMLStreamReader.
+ */
+ public void load(XMLStreamReader reader, Map options) throws IOException {
+ this.reader = reader;
+ SDOXMLLoadImpl xmlLoad = (SDOXMLLoadImpl) createXMLLoad();
+ Map mergedOptions = new HashMap(defaultLoadOptions);
+ if (options != null)
+ mergedOptions.putAll(options);
+ xmlLoad.load(this, reader, mergedOptions);
+ }
+}
diff --git a/branches/sdo-java-M2/sdo/impl/src/main/java/org/apache/tuscany/sdo/util/resource/XMLDocumentStreamReader.java b/branches/sdo-java-M2/sdo/impl/src/main/java/org/apache/tuscany/sdo/util/resource/XMLDocumentStreamReader.java
new file mode 100644
index 0000000000..21a1f849d9
--- /dev/null
+++ b/branches/sdo-java-M2/sdo/impl/src/main/java/org/apache/tuscany/sdo/util/resource/XMLDocumentStreamReader.java
@@ -0,0 +1,442 @@
+/**
+ *
+ * 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.util.resource;
+
+import java.util.NoSuchElementException;
+
+import javax.xml.namespace.NamespaceContext;
+import javax.xml.namespace.QName;
+import javax.xml.stream.Location;
+import javax.xml.stream.XMLStreamException;
+import javax.xml.stream.XMLStreamReader;
+
+/**
+ * This class is derived from Apache Axis2 class <a
+ * href="http://svn.apache.org/repos/asf/webservices/axis2/trunk/java/modules/core/src/org/apache/axis2/util/StreamWrapper.java">
+ * org.apache.axis2.util.StreamWrapper</a>. It's used wrap a XMLStreamReader to create a XMLStreamReader representing a document and it will produce
+ * START_DOCUMENT, END_DOCUMENT events.
+ *
+ */
+public class XMLDocumentStreamReader implements XMLStreamReader {
+ private static final int STATE_INIT = 0; // The wrapper will produce START_DOCUMENT
+
+ private static final int STATE_SWITCHED = 1; // The real reader will produce events
+
+ private static final int STATE_COMPLETE_AT_NEXT = 2; // The wrapper will produce END_DOCUMENT
+
+ private static final int STATE_COMPLETED = 3; // Done
+
+ private XMLStreamReader realReader = null;
+
+ private int state = STATE_INIT;
+
+ public XMLDocumentStreamReader(XMLStreamReader realReader) {
+ if (realReader == null) {
+ throw new UnsupportedOperationException("Reader cannot be null");
+ }
+
+ this.realReader = realReader;
+
+ // If the real reader is positioned at START_DOCUMENT, always use the real reader
+ if (realReader.getEventType() == START_DOCUMENT)
+ state = STATE_SWITCHED;
+ }
+
+ public void close() throws XMLStreamException {
+ realReader.close();
+ }
+
+ public int next() throws XMLStreamException {
+ int returnEvent = -1;
+
+ switch (state) {
+ case STATE_SWITCHED:
+ returnEvent = realReader.next();
+ if (returnEvent == END_DOCUMENT) {
+ state = STATE_COMPLETED;
+ } else if (!realReader.hasNext()) {
+ state = STATE_COMPLETE_AT_NEXT;
+ }
+ break;
+ case STATE_INIT:
+ state = STATE_SWITCHED;
+ returnEvent = realReader.getEventType();
+ break;
+ case STATE_COMPLETE_AT_NEXT:
+ state = STATE_COMPLETED;
+ returnEvent = END_DOCUMENT;
+ break;
+ case STATE_COMPLETED:
+ // oops - no way we can go beyond this
+ throw new NoSuchElementException("End of stream has reached.");
+ default:
+ throw new UnsupportedOperationException();
+ }
+
+ return returnEvent;
+ }
+
+ private boolean isDelegating() {
+ return state == STATE_SWITCHED || state == STATE_COMPLETE_AT_NEXT;
+ }
+
+ public int nextTag() throws XMLStreamException {
+ if (isDelegating()) {
+ return realReader.nextTag();
+ } else {
+ throw new XMLStreamException();
+ }
+ }
+
+ public void require(int i, String s, String s1) throws XMLStreamException {
+ if (isDelegating()) {
+ realReader.require(i, s, s1);
+ }
+ }
+
+ public boolean standaloneSet() {
+ if (isDelegating()) {
+ return realReader.standaloneSet();
+ } else {
+ return false;
+ }
+ }
+
+ public int getAttributeCount() {
+ if (isDelegating()) {
+ return realReader.getAttributeCount();
+ } else {
+ throw new IllegalStateException();
+ }
+ }
+
+ public String getAttributeLocalName(int i) {
+ if (isDelegating()) {
+ return realReader.getAttributeLocalName(i);
+ } else {
+ throw new IllegalStateException();
+ }
+ }
+
+ public QName getAttributeName(int i) {
+ if (isDelegating()) {
+ return realReader.getAttributeName(i);
+ } else {
+ throw new IllegalStateException();
+ }
+ }
+
+ public String getAttributeNamespace(int i) {
+ if (isDelegating()) {
+ return realReader.getAttributeNamespace(i);
+ } else {
+ throw new IllegalStateException();
+ }
+ }
+
+ public String getAttributePrefix(int i) {
+ if (isDelegating()) {
+ return realReader.getAttributePrefix(i);
+ } else {
+ throw new IllegalStateException();
+ }
+ }
+
+ public String getAttributeType(int i) {
+ if (isDelegating()) {
+ return realReader.getAttributeType(i);
+ } else {
+ throw new IllegalStateException();
+ }
+ }
+
+ public String getAttributeValue(int i) {
+ if (isDelegating()) {
+ return realReader.getAttributeValue(i);
+ } else {
+ throw new IllegalStateException();
+ }
+ }
+
+ public String getAttributeValue(String s, String s1) {
+ if (isDelegating()) {
+ return realReader.getAttributeValue(s, s1);
+ } else {
+ throw new IllegalStateException();
+ }
+ }
+
+ public String getCharacterEncodingScheme() {
+ return realReader.getCharacterEncodingScheme();
+ }
+
+ public String getElementText() throws XMLStreamException {
+ if (isDelegating()) {
+ return realReader.getElementText();
+ } else {
+ throw new XMLStreamException();
+ }
+ }
+
+ public String getEncoding() {
+ return realReader.getEncoding();
+ }
+
+ public int getEventType() {
+ int event = -1;
+ switch (state) {
+ case STATE_SWITCHED:
+ case STATE_COMPLETE_AT_NEXT:
+ event = realReader.getEventType();
+ break;
+ case STATE_INIT:
+ event = START_DOCUMENT;
+ break;
+ case STATE_COMPLETED:
+ event = END_DOCUMENT;
+ break;
+ }
+ return event;
+ }
+
+ public Location getLocation() {
+ if (isDelegating()) {
+ return realReader.getLocation();
+ } else {
+ return null;
+ }
+ }
+
+ public QName getName() {
+ if (isDelegating()) {
+ return realReader.getName();
+ } else {
+ throw new IllegalStateException();
+ }
+ }
+
+ public String getLocalName() {
+ if (isDelegating()) {
+ return realReader.getLocalName();
+ } else {
+ throw new IllegalStateException();
+ }
+ }
+
+ public NamespaceContext getNamespaceContext() {
+ return realReader.getNamespaceContext();
+ }
+
+ public int getNamespaceCount() {
+ if (isDelegating()) {
+ return realReader.getNamespaceCount();
+ } else {
+ throw new IllegalStateException();
+ }
+ }
+
+ public String getNamespacePrefix(int i) {
+ if (isDelegating()) {
+ return realReader.getNamespacePrefix(i);
+ } else {
+ throw new IllegalStateException();
+ }
+ }
+
+ public String getNamespaceURI() {
+ if (isDelegating()) {
+ return realReader.getNamespaceURI();
+ } else {
+ throw new IllegalStateException();
+ }
+ }
+
+ public String getNamespaceURI(int i) {
+ if (isDelegating()) {
+ return realReader.getNamespaceURI(i);
+ } else {
+ throw new IllegalStateException();
+ }
+ }
+
+ public String getNamespaceURI(String s) {
+ if (isDelegating()) {
+ return realReader.getNamespaceURI(s);
+ } else {
+ throw new IllegalStateException();
+ }
+ }
+
+ public String getPIData() {
+ if (isDelegating()) {
+ return realReader.getPIData();
+ } else {
+ throw new IllegalStateException();
+ }
+ }
+
+ public String getPITarget() {
+ if (isDelegating()) {
+ return realReader.getPITarget();
+ } else {
+ throw new IllegalStateException();
+ }
+ }
+
+ public String getPrefix() {
+ if (isDelegating()) {
+ return realReader.getPrefix();
+ } else {
+ throw new IllegalStateException();
+ }
+ }
+
+ public Object getProperty(String s) throws IllegalArgumentException {
+ if (isDelegating()) {
+ return realReader.getProperty(s);
+ } else {
+ throw new IllegalArgumentException();
+ }
+ }
+
+ public String getText() {
+ if (isDelegating()) {
+ return realReader.getText();
+ } else {
+ throw new IllegalStateException();
+ }
+ }
+
+ public char[] getTextCharacters() {
+ if (isDelegating()) {
+ return realReader.getTextCharacters();
+ } else {
+ throw new IllegalStateException();
+ }
+ }
+
+ public int getTextCharacters(int i, char[] chars, int i1, int i2) throws XMLStreamException {
+ if (isDelegating()) {
+ return realReader.getTextCharacters(i, chars, i1, i2);
+ } else {
+ throw new IllegalStateException();
+ }
+ }
+
+ public int getTextLength() {
+ if (isDelegating()) {
+ return realReader.getTextLength();
+ } else {
+ throw new IllegalStateException();
+ }
+ }
+
+ public int getTextStart() {
+ if (isDelegating()) {
+ return realReader.getTextStart();
+ } else {
+ throw new IllegalStateException();
+ }
+ }
+
+ public String getVersion() {
+ if (isDelegating()) {
+ return realReader.getVersion();
+ } else {
+ return null;
+ }
+ }
+
+ public boolean hasName() {
+ if (isDelegating()) {
+ return realReader.hasName();
+ } else {
+ return false;
+ }
+ }
+
+ public boolean hasNext() throws XMLStreamException {
+ if (state == STATE_COMPLETE_AT_NEXT) {
+ return true;
+ } else if (state == STATE_COMPLETED) {
+ return false;
+ } else if (state == STATE_SWITCHED) {
+ return realReader.hasNext();
+ } else {
+ return true;
+ }
+ }
+
+ public boolean hasText() {
+ if (isDelegating()) {
+ return realReader.hasText();
+ } else {
+ return false;
+ }
+ }
+
+ public boolean isAttributeSpecified(int i) {
+ if (isDelegating()) {
+ return realReader.isAttributeSpecified(i);
+ } else {
+ return false;
+ }
+ }
+
+ public boolean isCharacters() {
+ if (isDelegating()) {
+ return realReader.isCharacters();
+ } else {
+ return false;
+ }
+ }
+
+ public boolean isEndElement() {
+ if (isDelegating()) {
+ return realReader.isEndElement();
+ } else {
+ return false;
+ }
+ }
+
+ public boolean isStandalone() {
+ if (isDelegating()) {
+ return realReader.isStandalone();
+ } else {
+ return false;
+ }
+ }
+
+ public boolean isStartElement() {
+ if (isDelegating()) {
+ return realReader.isStartElement();
+ } else {
+ return false;
+ }
+ }
+
+ public boolean isWhiteSpace() {
+ if (isDelegating()) {
+ return realReader.isWhiteSpace();
+ } else {
+ return false;
+ }
+ }
+} \ No newline at end of file
diff --git a/branches/sdo-java-M2/sdo/impl/src/main/java/org/apache/tuscany/sdo/util/resource/XMLFragmentStreamReader.java b/branches/sdo-java-M2/sdo/impl/src/main/java/org/apache/tuscany/sdo/util/resource/XMLFragmentStreamReader.java
new file mode 100644
index 0000000000..68d5e201a3
--- /dev/null
+++ b/branches/sdo-java-M2/sdo/impl/src/main/java/org/apache/tuscany/sdo/util/resource/XMLFragmentStreamReader.java
@@ -0,0 +1,50 @@
+/**
+ *
+ * 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.util.resource;
+
+import javax.xml.namespace.NamespaceContext;
+import javax.xml.stream.XMLStreamReader;
+
+interface XMLFragmentStreamReader extends XMLStreamReader {
+
+ // this will help to handle Text within the current element.
+ // user should pass the element text to the property list as this
+ // ELEMENT_TEXT as the key. This key deliberately has a space in it
+ // so that it is not a valid XML name
+ static final String ELEMENT_TEXT = "Element Text";
+
+ /**
+ * Extra method to query the state of the pullparser
+ * @return
+ */
+ boolean isEndOfFragment();
+
+ /**
+ * add the parent namespace context to this parser
+ */
+ void setParentNamespaceContext(NamespaceContext nsContext);
+
+ /**
+ * Initiate the parser - this will do whatever the needed
+ * tasks to initiate the parser and must be called before
+ * attempting any specific parsing using this parser
+ */
+ void init();
+}
diff --git a/branches/sdo-java-M2/sdo/impl/src/main/java/org/apache/tuscany/sdo/util/resource/XMLStreamSerializer.java b/branches/sdo-java-M2/sdo/impl/src/main/java/org/apache/tuscany/sdo/util/resource/XMLStreamSerializer.java
new file mode 100644
index 0000000000..b891dfcadb
--- /dev/null
+++ b/branches/sdo-java-M2/sdo/impl/src/main/java/org/apache/tuscany/sdo/util/resource/XMLStreamSerializer.java
@@ -0,0 +1,258 @@
+/*
+ * Copyright 2004,2005 The Apache Software Foundation.
+ *
+ * Licensed 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.util.resource;
+
+import javax.xml.namespace.NamespaceContext;
+import javax.xml.stream.XMLStreamConstants;
+import javax.xml.stream.XMLStreamException;
+import javax.xml.stream.XMLStreamReader;
+import javax.xml.stream.XMLStreamWriter;
+
+/**
+ * The XMLStreamSerializer pulls events from the XMLStreamReader and dumps into the XMLStreamWriter
+ */
+public class XMLStreamSerializer implements XMLStreamConstants {
+
+ private static int namespaceSuffix = 0;
+
+ public static final String NAMESPACE_PREFIX = "ns";
+
+ /*
+ * The behavior of the serializer is such that it returns when it encounters the starting element for the second time. The depth variable tracks
+ * the depth of the serilizer and tells it when to return. Note that it is assumed that this serialization starts on an Element.
+ */
+
+ /**
+ * Field depth
+ */
+ private int depth = 0;
+
+ /**
+ * Method serialize.
+ *
+ * @param node
+ * @param writer
+ * @throws XMLStreamException
+ */
+ public void serialize(XMLStreamReader node, XMLStreamWriter writer) throws XMLStreamException {
+ serializeNode(node, writer);
+ }
+
+ /**
+ * Method serializeNode.
+ *
+ * @param reader
+ * @param writer
+ * @throws XMLStreamException
+ */
+ protected void serializeNode(XMLStreamReader reader, XMLStreamWriter writer) throws XMLStreamException {
+ // TODO We get the StAXWriter at this point and uses it hereafter assuming that this is the only entry point to this class.
+ // If there can be other classes calling methodes of this we might need to change methode signatures to OMOutputer
+ while (reader.hasNext()) {
+ int event = reader.next();
+ if (event == START_ELEMENT) {
+ serializeElement(reader, writer);
+ depth++;
+ } else if (event == ATTRIBUTE) {
+ serializeAttributes(reader, writer);
+ } else if (event == CHARACTERS) {
+ serializeText(reader, writer);
+ } else if (event == COMMENT) {
+ serializeComment(reader, writer);
+ } else if (event == CDATA) {
+ serializeCData(reader, writer);
+ } else if (event == END_ELEMENT) {
+ serializeEndElement(writer);
+ depth--;
+ } else if (event == START_DOCUMENT) {
+ depth++; // if a start document is found then increment the depth
+ } else if (event == END_DOCUMENT) {
+ if (depth != 0)
+ depth--; // for the end document - reduce the depth
+ try {
+ serializeEndElement(writer);
+ } catch (Exception e) {
+ // TODO: log exceptions
+ }
+ }
+ if (depth == 0) {
+ break;
+ }
+ }
+ }
+
+ /**
+ * @param reader
+ * @param writer
+ * @throws XMLStreamException
+ */
+ protected void serializeElement(XMLStreamReader reader, XMLStreamWriter writer) throws XMLStreamException {
+ String prefix = reader.getPrefix();
+ String nameSpaceName = reader.getNamespaceURI();
+ if (nameSpaceName != null) {
+ String writer_prefix = writer.getPrefix(nameSpaceName);
+ if (writer_prefix != null) {
+ writer.writeStartElement(nameSpaceName, reader.getLocalName());
+ } else {
+ if (prefix != null) {
+ writer.writeStartElement(prefix, reader.getLocalName(), nameSpaceName);
+ writer.writeNamespace(prefix, nameSpaceName);
+ writer.setPrefix(prefix, nameSpaceName);
+ } else {
+ writer.writeStartElement(nameSpaceName, reader.getLocalName());
+ writer.writeDefaultNamespace(nameSpaceName);
+ writer.setDefaultNamespace(nameSpaceName);
+ }
+ }
+ } else {
+ writer.writeStartElement(reader.getLocalName());
+ }
+
+ // add the namespaces
+ int count = reader.getNamespaceCount();
+ String namespacePrefix;
+ for (int i = 0; i < count; i++) {
+ namespacePrefix = reader.getNamespacePrefix(i);
+ if (namespacePrefix != null && namespacePrefix.length() == 0)
+ continue;
+
+ serializeNamespace(namespacePrefix, reader.getNamespaceURI(i), writer);
+ }
+
+ // add attributes
+ serializeAttributes(reader, writer);
+
+ }
+
+ /**
+ * Method serializeEndElement.
+ *
+ * @param writer
+ * @throws XMLStreamException
+ */
+ protected void serializeEndElement(XMLStreamWriter writer) throws XMLStreamException {
+ writer.writeEndElement();
+ }
+
+ /**
+ * @param reader
+ * @param writer
+ * @throws XMLStreamException
+ */
+ protected void serializeText(XMLStreamReader reader, XMLStreamWriter writer) throws XMLStreamException {
+ writer.writeCharacters(reader.getText());
+ }
+
+ /**
+ * Method serializeCData.
+ *
+ * @param reader
+ * @param writer
+ * @throws XMLStreamException
+ */
+ protected void serializeCData(XMLStreamReader reader, XMLStreamWriter writer) throws XMLStreamException {
+ writer.writeCData(reader.getText());
+ }
+
+ /**
+ * Method serializeComment.
+ *
+ * @param reader
+ * @param writer
+ * @throws XMLStreamException
+ */
+ protected void serializeComment(XMLStreamReader reader, XMLStreamWriter writer) throws XMLStreamException {
+ writer.writeComment(reader.getText());
+ }
+
+ /**
+ * @param reader
+ * @param writer
+ * @throws XMLStreamException
+ */
+ protected void serializeAttributes(XMLStreamReader reader, XMLStreamWriter writer) throws XMLStreamException {
+ int count = reader.getAttributeCount();
+ String prefix = null;
+ String namespaceName = null;
+ String writerPrefix = null;
+ for (int i = 0; i < count; i++) {
+ prefix = reader.getAttributePrefix(i);
+ namespaceName = reader.getAttributeNamespace(i);
+ if (namespaceName != null)
+ writerPrefix = writer.getNamespaceContext().getPrefix(namespaceName);
+
+ if (!"".equals(namespaceName)) {
+ // prefix has already being declared but this particular attrib has a
+ // no prefix attached. So use the prefix provided by the writer
+ if (writerPrefix != null && (prefix == null || prefix.equals(""))) {
+ writer.writeAttribute(writerPrefix, namespaceName, reader.getAttributeLocalName(i), reader.getAttributeValue(i));
+
+ // writer prefix is available but different from the current
+ // prefix of the attrib. We should be decalring the new prefix
+ // as a namespace declaration
+ } else if (prefix != null && !"".equals(prefix) && !prefix.equals(writerPrefix)) {
+ writer.writeNamespace(prefix, namespaceName);
+ writer.writeAttribute(prefix, namespaceName, reader.getAttributeLocalName(i), reader.getAttributeValue(i));
+
+ // prefix is null (or empty), but the namespace name is valid! it has not
+ // being written previously also. So we need to generate a prefix
+ // here
+ } else {
+ prefix = generateUniquePrefix(writer.getNamespaceContext());
+ writer.writeNamespace(prefix, namespaceName);
+ writer.writeAttribute(prefix, namespaceName, reader.getAttributeLocalName(i), reader.getAttributeValue(i));
+ }
+ } else {
+ // empty namespace is equal to no namespace!
+ writer.writeAttribute(reader.getAttributeLocalName(i), reader.getAttributeValue(i));
+ }
+
+ }
+ }
+
+ /**
+ * Generates a unique namespace prefix that is not in the scope of the NamespaceContext
+ *
+ * @param nsCtxt
+ * @return string
+ */
+ private String generateUniquePrefix(NamespaceContext nsCtxt) {
+ String prefix = NAMESPACE_PREFIX + namespaceSuffix++;
+ // null should be returned if the prefix is not bound!
+ while (nsCtxt.getNamespaceURI(prefix) != null) {
+ prefix = NAMESPACE_PREFIX + namespaceSuffix++;
+ }
+
+ return prefix;
+ }
+
+ /**
+ * Method serializeNamespace.
+ *
+ * @param prefix
+ * @param URI
+ * @param writer
+ * @throws XMLStreamException
+ */
+ private void serializeNamespace(String prefix, String URI, XMLStreamWriter writer) throws XMLStreamException {
+ String prefix1 = writer.getPrefix(URI);
+ if (prefix1 == null) {
+ writer.writeNamespace(prefix, URI);
+ writer.setPrefix(prefix, URI);
+ }
+ }
+}
diff --git a/branches/sdo-java-M2/sdo/impl/src/main/resources/META-INF/LICENSE.txt b/branches/sdo-java-M2/sdo/impl/src/main/resources/META-INF/LICENSE.txt
new file mode 100644
index 0000000000..30e4ab9e24
--- /dev/null
+++ b/branches/sdo-java-M2/sdo/impl/src/main/resources/META-INF/LICENSE.txt
@@ -0,0 +1,446 @@
+
+ Apache License
+ Version 2.0, January 2004
+ http://www.apache.org/licenses/
+
+ TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION
+
+ 1. Definitions.
+
+ "License" shall mean the terms and conditions for use, reproduction,
+ and distribution as defined by Sections 1 through 9 of this document.
+
+ "Licensor" shall mean the copyright owner or entity authorized by
+ the copyright owner that is granting the License.
+
+ "Legal Entity" shall mean the union of the acting entity and all
+ other entities that control, are controlled by, or are under common
+ control with that entity. For the purposes of this definition,
+ "control" means (i) the power, direct or indirect, to cause the
+ direction or management of such entity, whether by contract or
+ otherwise, or (ii) ownership of fifty percent (50%) or more of the
+ outstanding shares, or (iii) beneficial ownership of such entity.
+
+ "You" (or "Your") shall mean an individual or Legal Entity
+ exercising permissions granted by this License.
+
+ "Source" form shall mean the preferred form for making modifications,
+ including but not limited to software source code, documentation
+ source, and configuration files.
+
+ "Object" form shall mean any form resulting from mechanical
+ transformation or translation of a Source form, including but
+ not limited to compiled object code, generated documentation,
+ and conversions to other media types.
+
+ "Work" shall mean the work of authorship, whether in Source or
+ Object form, made available under the License, as indicated by a
+ copyright notice that is included in or attached to the work
+ (an example is provided in the Appendix below).
+
+ "Derivative Works" shall mean any work, whether in Source or Object
+ form, that is based on (or derived from) the Work and for which the
+ editorial revisions, annotations, elaborations, or other modifications
+ represent, as a whole, an original work of authorship. For the purposes
+ of this License, Derivative Works shall not include works that remain
+ separable from, or merely link (or bind by name) to the interfaces of,
+ the Work and Derivative Works thereof.
+
+ "Contribution" shall mean any work of authorship, including
+ the original version of the Work and any modifications or additions
+ to that Work or Derivative Works thereof, that is intentionally
+ submitted to Licensor for inclusion in the Work by the copyright owner
+ or by an individual or Legal Entity authorized to submit on behalf of
+ the copyright owner. For the purposes of this definition, "submitted"
+ means any form of electronic, verbal, or written communication sent
+ to the Licensor or its representatives, including but not limited to
+ communication on electronic mailing lists, source code control systems,
+ and issue tracking systems that are managed by, or on behalf of, the
+ Licensor for the purpose of discussing and improving the Work, but
+ excluding communication that is conspicuously marked or otherwise
+ designated in writing by the copyright owner as "Not a Contribution."
+
+ "Contributor" shall mean Licensor and any individual or Legal Entity
+ on behalf of whom a Contribution has been received by Licensor and
+ subsequently incorporated within the Work.
+
+ 2. Grant of Copyright License. Subject to the terms and conditions of
+ this License, each Contributor hereby grants to You a perpetual,
+ worldwide, non-exclusive, no-charge, royalty-free, irrevocable
+ copyright license to reproduce, prepare Derivative Works of,
+ publicly display, publicly perform, sublicense, and distribute the
+ Work and such Derivative Works in Source or Object form.
+
+ 3. Grant of Patent License. Subject to the terms and conditions of
+ this License, each Contributor hereby grants to You a perpetual,
+ worldwide, non-exclusive, no-charge, royalty-free, irrevocable
+ (except as stated in this section) patent license to make, have made,
+ use, offer to sell, sell, import, and otherwise transfer the Work,
+ where such license applies only to those patent claims licensable
+ by such Contributor that are necessarily infringed by their
+ Contribution(s) alone or by combination of their Contribution(s)
+ with the Work to which such Contribution(s) was submitted. If You
+ institute patent litigation against any entity (including a
+ cross-claim or counterclaim in a lawsuit) alleging that the Work
+ or a Contribution incorporated within the Work constitutes direct
+ or contributory patent infringement, then any patent licenses
+ granted to You under this License for that Work shall terminate
+ as of the date such litigation is filed.
+
+ 4. Redistribution. You may reproduce and distribute copies of the
+ Work or Derivative Works thereof in any medium, with or without
+ modifications, and in Source or Object form, provided that You
+ meet the following conditions:
+
+ (a) You must give any other recipients of the Work or
+ Derivative Works a copy of this License; and
+
+ (b) You must cause any modified files to carry prominent notices
+ stating that You changed the files; and
+
+ (c) You must retain, in the Source form of any Derivative Works
+ that You distribute, all copyright, patent, trademark, and
+ attribution notices from the Source form of the Work,
+ excluding those notices that do not pertain to any part of
+ the Derivative Works; and
+
+ (d) If the Work includes a "NOTICE" text file as part of its
+ distribution, then any Derivative Works that You distribute must
+ include a readable copy of the attribution notices contained
+ within such NOTICE file, excluding those notices that do not
+ pertain to any part of the Derivative Works, in at least one
+ of the following places: within a NOTICE text file distributed
+ as part of the Derivative Works; within the Source form or
+ documentation, if provided along with the Derivative Works; or,
+ within a display generated by the Derivative Works, if and
+ wherever such third-party notices normally appear. The contents
+ of the NOTICE file are for informational purposes only and
+ do not modify the License. You may add Your own attribution
+ notices within Derivative Works that You distribute, alongside
+ or as an addendum to the NOTICE text from the Work, provided
+ that such additional attribution notices cannot be construed
+ as modifying the License.
+
+ You may add Your own copyright statement to Your modifications and
+ may provide additional or different license terms and conditions
+ for use, reproduction, or distribution of Your modifications, or
+ for any such Derivative Works as a whole, provided Your use,
+ reproduction, and distribution of the Work otherwise complies with
+ the conditions stated in this License.
+
+ 5. Submission of Contributions. Unless You explicitly state otherwise,
+ any Contribution intentionally submitted for inclusion in the Work
+ by You to the Licensor shall be under the terms and conditions of
+ this License, without any additional terms or conditions.
+ Notwithstanding the above, nothing herein shall supersede or modify
+ the terms of any separate license agreement you may have executed
+ with Licensor regarding such Contributions.
+
+ 6. Trademarks. This License does not grant permission to use the trade
+ names, trademarks, service marks, or product names of the Licensor,
+ except as required for reasonable and customary use in describing the
+ origin of the Work and reproducing the content of the NOTICE file.
+
+ 7. Disclaimer of Warranty. Unless required by applicable law or
+ agreed to in writing, Licensor provides the Work (and each
+ Contributor provides its Contributions) on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
+ implied, including, without limitation, any warranties or conditions
+ of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A
+ PARTICULAR PURPOSE. You are solely responsible for determining the
+ appropriateness of using or redistributing the Work and assume any
+ risks associated with Your exercise of permissions under this License.
+
+ 8. Limitation of Liability. In no event and under no legal theory,
+ whether in tort (including negligence), contract, or otherwise,
+ unless required by applicable law (such as deliberate and grossly
+ negligent acts) or agreed to in writing, shall any Contributor be
+ liable to You for damages, including any direct, indirect, special,
+ incidental, or consequential damages of any character arising as a
+ result of this License or out of the use or inability to use the
+ Work (including but not limited to damages for loss of goodwill,
+ work stoppage, computer failure or malfunction, or any and all
+ other commercial damages or losses), even if such Contributor
+ has been advised of the possibility of such damages.
+
+ 9. Accepting Warranty or Additional Liability. While redistributing
+ the Work or Derivative Works thereof, You may choose to offer,
+ and charge a fee for, acceptance of support, warranty, indemnity,
+ or other liability obligations and/or rights consistent with this
+ License. However, in accepting such obligations, You may act only
+ on Your own behalf and on Your sole responsibility, not on behalf
+ of any other Contributor, and only if You agree to indemnify,
+ defend, and hold each Contributor harmless for any liability
+ incurred by, or claims asserted against, such Contributor by reason
+ of your accepting any such warranty or additional liability.
+
+ END OF TERMS AND CONDITIONS
+
+ APPENDIX: How to apply the Apache License to your work.
+
+ To apply the Apache License to your work, attach the following
+ boilerplate notice, with the fields enclosed by brackets "[]"
+ replaced with your own identifying information. (Don't include
+ the brackets!) The text should be enclosed in the appropriate
+ comment syntax for the file format. We also recommend that a
+ file or class name and description of purpose be included on the
+ same "printed page" as the copyright notice for easier
+ identification within third-party archives.
+
+ Copyright [yyyy] [name of copyright owner]
+
+ Licensed 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.
+
+
+APACHE TUSCANY SUBCOMPONENTS:
+
+The Apache Tuscany distribution includes a number of subcomponents with
+separate copyright notices and license terms. Your use of the source
+code for the these subcomponents is subject to the terms and
+conditions of the following licenses.
+
+===============================================================================
+
+For the Eclipse Modeling Framework component:
+
+Eclipse Public License - v 1.0
+
+THE ACCOMPANYING PROGRAM IS PROVIDED UNDER THE TERMS OF THIS ECLIPSE
+PUBLIC LICENSE ("AGREEMENT"). ANY USE, REPRODUCTION OR DISTRIBUTION OF
+THE PROGRAM CONSTITUTES RECIPIENT'S ACCEPTANCE OF THIS AGREEMENT.
+
+1. DEFINITIONS
+
+"Contribution" means:
+
+a) in the case of the initial Contributor, the initial code and
+documentation distributed under this Agreement, and
+b) in the case of each subsequent Contributor:
+
+i) changes to the Program, and
+
+ii) additions to the Program;
+
+where such changes and/or additions to the Program originate from and
+are distributed by that particular Contributor. A Contribution
+'originates' from a Contributor if it was added to the Program by such
+Contributor itself or anyone acting on such Contributor's behalf.
+Contributions do not include additions to the Program which: (i) are
+separate modules of software distributed in conjunction with the
+Program under their own license agreement, and (ii) are not derivative
+works of the Program.
+
+"Contributor" means any person or entity that distributes the Program.
+
+"Licensed Patents " mean patent claims licensable by a Contributor
+which are necessarily infringed by the use or sale of its Contribution
+alone or when combined with the Program.
+
+"Program" means the Contributions distributed in accordance with this
+Agreement.
+
+"Recipient" means anyone who receives the Program under this
+Agreement, including all Contributors.
+
+2. GRANT OF RIGHTS
+
+a) Subject to the terms of this Agreement, each Contributor hereby
+grants Recipient a non-exclusive, worldwide, royalty-free copyright
+license to reproduce, prepare derivative works of, publicly display,
+publicly perform, distribute and sublicense the Contribution of such
+Contributor, if any, and such derivative works, in source code and
+object code form.
+
+b) Subject to the terms of this Agreement, each Contributor hereby
+grants Recipient a non-exclusive, worldwide, royalty-free patent
+license under Licensed Patents to make, use, sell, offer to sell,
+import and otherwise transfer the Contribution of such Contributor, if
+any, in source code and object code form. This patent license shall
+apply to the combination of the Contribution and the Program if, at
+the time the Contribution is added by the Contributor, such addition
+of the Contribution causes such combination to be covered by the
+Licensed Patents. The patent license shall not apply to any other
+combinations which include the Contribution. No hardware per se is
+licensed hereunder.
+
+c) Recipient understands that although each Contributor grants the
+licenses to its Contributions set forth herein, no assurances are
+provided by any Contributor that the Program does not infringe the
+patent or other intellectual property rights of any other entity. Each
+Contributor disclaims any liability to Recipient for claims brought by
+any other entity based on infringement of intellectual property rights
+or otherwise. As a condition to exercising the rights and licenses
+granted hereunder, each Recipient hereby assumes sole responsibility
+to secure any other intellectual property rights needed, if any. For
+example, if a third party patent license is required to allow
+Recipient to distribute the Program, it is Recipient's responsibility
+to acquire that license before distributing the Program.
+
+d) Each Contributor represents that to its knowledge it has sufficient
+copyright rights in its Contribution, if any, to grant the copyright
+license set forth in this Agreement.
+
+3. REQUIREMENTS
+
+A Contributor may choose to distribute the Program in object code form
+under its own license agreement, provided that:
+
+a) it complies with the terms and conditions of this Agreement; and
+
+b) its license agreement:
+
+i) effectively disclaims on behalf of all Contributors all warranties
+and conditions, express and implied, including warranties or
+conditions of title and non-infringement, and implied warranties or
+conditions of merchantability and fitness for a particular purpose;
+
+ii) effectively excludes on behalf of all Contributors all liability
+for damages, including direct, indirect, special, incidental and
+consequential damages, such as lost profits;
+
+iii) states that any provisions which differ from this Agreement are
+offered by that Contributor alone and not by any other party; and
+
+iv) states that source code for the Program is available from such
+Contributor, and informs licensees how to obtain it in a reasonable
+manner on or through a medium customarily used for software exchange.
+
+When the Program is made available in source code form:
+
+a) it must be made available under this Agreement; and
+
+b) a copy of this Agreement must be included with each copy of the
+Program.
+
+Contributors may not remove or alter any copyright notices contained
+within the Program.
+
+Each Contributor must identify itself as the originator of its
+Contribution, if any, in a manner that reasonably allows subsequent
+Recipients to identify the originator of the Contribution.
+
+4. COMMERCIAL DISTRIBUTION
+
+Commercial distributors of software may accept certain
+responsibilities with respect to end users, business partners and the
+like. While this license is intended to facilitate the commercial use
+of the Program, the Contributor who includes the Program in a
+commercial product offering should do so in a manner which does not
+create potential liability for other Contributors. Therefore, if a
+Contributor includes the Program in a commercial product offering,
+such Contributor ("Commercial Contributor") hereby agrees to defend
+and indemnify every other Contributor ("Indemnified Contributor")
+against any losses, damages and costs (collectively "Losses") arising
+from claims, lawsuits and other legal actions brought by a third party
+against the Indemnified Contributor to the extent caused by the acts
+or omissions of such Commercial Contributor in connection with its
+distribution of the Program in a commercial product offering. The
+obligations in this section do not apply to any claims or Losses
+relating to any actual or alleged intellectual property infringement.
+In order to qualify, an Indemnified Contributor must: a) promptly
+notify the Commercial Contributor in writing of such claim, and b)
+allow the Commercial Contributor to control, and cooperate with the
+Commercial Contributor in, the defense and any related settlement
+negotiations. The Indemnified Contributor may participate in any such
+claim at its own expense.
+
+For example, a Contributor might include the Program in a commercial
+product offering, Product X. That Contributor is then a Commercial
+Contributor. If that Commercial Contributor then makes performance
+claims, or offers warranties related to Product X, those performance
+claims and warranties are such Commercial Contributor's responsibility
+alone. Under this section, the Commercial Contributor would have to
+defend claims against the other Contributors related to those
+performance claims and warranties, and if a court requires any other
+Contributor to pay any damages as a result, the Commercial Contributor
+must pay those damages.
+
+5. NO WARRANTY
+
+EXCEPT AS EXPRESSLY SET FORTH IN THIS AGREEMENT, THE PROGRAM IS
+PROVIDED ON AN "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+KIND, EITHER EXPRESS OR IMPLIED INCLUDING, WITHOUT LIMITATION, ANY
+WARRANTIES OR CONDITIONS OF TITLE, NON-INFRINGEMENT, MERCHANTABILITY
+OR FITNESS FOR A PARTICULAR PURPOSE. Each Recipient is solely
+responsible for determining the appropriateness of using and
+distributing the Program and assumes all risks associated with its
+exercise of rights under this Agreement , including but not limited to
+the risks and costs of program errors, compliance with applicable
+laws, damage to or loss of data, programs or equipment, and
+unavailability or interruption of operations.
+
+6. DISCLAIMER OF LIABILITY
+
+EXCEPT AS EXPRESSLY SET FORTH IN THIS AGREEMENT, NEITHER RECIPIENT NOR
+ANY CONTRIBUTORS SHALL HAVE ANY LIABILITY FOR ANY DIRECT, INDIRECT,
+INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING
+WITHOUT LIMITATION LOST PROFITS), HOWEVER CAUSED AND ON ANY THEORY OF
+LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
+NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OR
+DISTRIBUTION OF THE PROGRAM OR THE EXERCISE OF ANY RIGHTS GRANTED
+HEREUNDER, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGES.
+
+7. GENERAL
+
+If any provision of this Agreement is invalid or unenforceable under
+applicable law, it shall not affect the validity or enforceability of
+the remainder of the terms of this Agreement, and without further
+action by the parties hereto, such provision shall be reformed to the
+minimum extent necessary to make such provision valid and enforceable.
+
+If Recipient institutes patent litigation against any entity
+(including a cross-claim or counterclaim in a lawsuit) alleging that
+the Program itself (excluding combinations of the Program with other
+software or hardware) infringes such Recipient's patent(s), then such
+Recipient's rights granted under Section 2(b) shall terminate as of
+the date such litigation is filed.
+
+All Recipient's rights under this Agreement shall terminate if it
+fails to comply with any of the material terms or conditions of this
+Agreement and does not cure such failure in a reasonable period of
+time after becoming aware of such noncompliance. If all Recipient's
+rights under this Agreement terminate, Recipient agrees to cease use
+and distribution of the Program as soon as reasonably practicable.
+However, Recipient's obligations under this Agreement and any licenses
+granted by Recipient relating to the Program shall continue and
+survive.
+
+Everyone is permitted to copy and distribute copies of this Agreement,
+but in order to avoid inconsistency the Agreement is copyrighted and
+may only be modified in the following manner. The Agreement Steward
+reserves the right to publish new versions (including revisions) of
+this Agreement from time to time. No one other than the Agreement
+Steward has the right to modify this Agreement. The Eclipse Foundation
+is the initial Agreement Steward. The Eclipse Foundation may assign
+the responsibility to serve as the Agreement Steward to a suitable
+separate entity. Each new version of the Agreement will be given a
+distinguishing version number. The Program (including Contributions)
+may always be distributed subject to the version of the Agreement
+under which it was received. In addition, after a new version of the
+Agreement is published, Contributor may elect to distribute the
+Program (including its Contributions) under the new version. Except as
+expressly stated in Sections 2(a) and 2(b) above, Recipient receives
+no rights or licenses to the intellectual property of any Contributor
+under this Agreement, whether expressly, by implication, estoppel or
+otherwise. All rights in the Program not expressly granted under this
+Agreement are reserved.
+
+This Agreement is governed by the laws of the State of New York and
+the intellectual property laws of the United States of America. No
+party to this Agreement will bring a legal action under this Agreement
+more than one year after the cause of action arose. Each party waives
+its rights to a jury trial in any resulting litigation.
+
+===============================================================================
+
+
diff --git a/branches/sdo-java-M2/sdo/impl/src/main/resources/META-INF/MANIFEST.MF b/branches/sdo-java-M2/sdo/impl/src/main/resources/META-INF/MANIFEST.MF
new file mode 100644
index 0000000000..6abece6be5
--- /dev/null
+++ b/branches/sdo-java-M2/sdo/impl/src/main/resources/META-INF/MANIFEST.MF
@@ -0,0 +1,25 @@
+Manifest-Version: 1.0
+Extension-Name: tuscany-sdo-impl
+Specification-Title: Tuscany SDO Implementation
+Specification-Vendor: Apache Software Foundation
+Implementation-Vendor: Apache Software Foundation
+Implementation-Vendor-Id: org.apache
+Implementation-Title: tuscany-sdo-impl
+Implementation-Version: incubating-M1
+Bundle-ManifestVersion: 2
+Bundle-Name: Tuscany SDO Implementation
+Bundle-SymbolicName: org.apache.tuscany.sdo.impl
+Bundle-Version: 1.0.0
+Bundle-Vendor: Apache Software Foundation
+Require-Bundle: org.eclipse.emf.common,
+ org.eclipse.emf.ecore,
+ org.eclipse.emf.ecore.change,
+ org.eclipse.emf.ecore.xmi,
+ org.eclipse.xsd,
+ org.apache.tuscany.sdo.spec;visibility:=reexport
+Export-Package: commonj.sdo.impl,
+ org.apache.tuscany.sdo,
+ org.apache.tuscany.sdo.helper,
+ org.apache.tuscany.sdo.impl,
+ org.apache.tuscany.sdo.test,
+ org.apache.tuscany.sdo.util
diff --git a/branches/sdo-java-M2/sdo/impl/src/main/resources/META-INF/NOTICE b/branches/sdo-java-M2/sdo/impl/src/main/resources/META-INF/NOTICE
new file mode 100644
index 0000000000..322cf40f9f
--- /dev/null
+++ b/branches/sdo-java-M2/sdo/impl/src/main/resources/META-INF/NOTICE
@@ -0,0 +1,29 @@
+Apache Tuscany SDO for Java
+Copyright 2006 The Apache Software Foundation
+
+This product includes software developed at
+The Apache Software Foundation (http://www.apache.org/).
+
+Apache Tuscany is an effort undergoing incubation at The Apache Software Foundation (ASF),
+sponsored by the Apache Web Services PMC. Incubation is required of all newly accepted
+projects until a further review indicates that the infrastructure, communications,
+and decision making process have stabilized in a manner consistent with other successful
+ASF projects. While incubation status is not necessarily a reflection of the completeness
+or stability of the code, it does indicate that the project has yet to be fully endorsed
+by the ASF.
+
+Unless otherwise indicated, all distribution made available by the Apache Software Foundation
+is provided to you under the terms and conditions of the Apache License Version 2.0 ("AL").
+A copy of the AL is provided with this distribution as the LICENSE.txt file present in the
+root directory, and is also available at http://www.apache.org/licenses/.
+
+The terms and conditions governing the distribution may refer to the AL or other license
+agreements, notices or terms and conditions. Some of these other license agreements may
+include (but are not limited to):
+
+ . Eclipse Public License Version 1.0 (available at http://www.eclipse.org/legal/epl-v10.html)
+ . Common Public License Version 1.0 (available at http://www.eclipse.org/legal/cpl-v10.html)
+
+It is your obligation to read and accept all such terms and conditions prior to use of the
+distribution. If term or condition is provided, please contact the Apache Software Foundation
+to determine what terms and conditions govern that particular distribution.
diff --git a/branches/sdo-java-M2/sdo/impl/src/main/resources/META-INF/README.txt b/branches/sdo-java-M2/sdo/impl/src/main/resources/META-INF/README.txt
new file mode 100644
index 0000000000..9b26d1690a
--- /dev/null
+++ b/branches/sdo-java-M2/sdo/impl/src/main/resources/META-INF/README.txt
@@ -0,0 +1,35 @@
+Apache Tuscany M1 build (May, 2006)
+===================================
+
+http://incubator.apache.org/tuscany/
+
+Tuscany is an effort undergoing incubation at the Apache Software Foundation
+(ASF), sponsored by the Web Services PMC.
+
+Incubation is required of all newly accepted projects until a further review
+indicates that the infrastructure, communications, and decision making process
+have stabilized in a manner consistent with other successful ASF projects.
+
+While incubation status is not necessarily a reflection of the completeness or
+stability of the code, it does indicate that the project has yet to be fully
+endorsed by the ASF.
+
+
+Support
+-------
+
+Any problem with this release can be reported to the Tuscany mailing list
+or in the JIRA issue tracker.
+
+Mailing list subscription:
+ tuscany-dev-subscribe@ws.apache.org
+
+Jira:
+ http://issues.apache.org/jira/browse/Tuscany
+
+
+Thank you for using Tuscany!
+
+
+The Tuscany Team.
+
diff --git a/branches/sdo-java-M2/sdo/impl/src/main/resources/META-INF/services/commonj.sdo.impl.HelperProvider b/branches/sdo-java-M2/sdo/impl/src/main/resources/META-INF/services/commonj.sdo.impl.HelperProvider
new file mode 100644
index 0000000000..73693d6556
--- /dev/null
+++ b/branches/sdo-java-M2/sdo/impl/src/main/resources/META-INF/services/commonj.sdo.impl.HelperProvider
@@ -0,0 +1 @@
+org.apache.tuscany.sdo.helper.HelperProviderImpl \ No newline at end of file
diff --git a/branches/sdo-java-M2/sdo/impl/src/main/resources/sdo-metadata.xsd b/branches/sdo-java-M2/sdo/impl/src/main/resources/sdo-metadata.xsd
new file mode 100644
index 0000000000..6a5132ed56
--- /dev/null
+++ b/branches/sdo-java-M2/sdo/impl/src/main/resources/sdo-metadata.xsd
@@ -0,0 +1,45 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ -->
+<schema xmlns="http://www.w3.org/2001/XMLSchema" targetNamespace="org.apache.tuscany.sdo/metadata" xmlns:metadata="org.apache.tuscany.sdo/metadata">
+
+ <element name="sdoMetaDataGroup" type="metadata:SDOMetaDataGroup"/>
+
+ <complexType name="SDOMetaDataGroup">
+ <sequence>
+ <element name="javaMetaData" type="metadata:JavaMetaData" maxOccurs="unbounded" minOccurs="0"/>
+ <element name="xsdMetaData" type="metadata:XSDMetaData" maxOccurs="unbounded" minOccurs="0"/>
+ <element name="typeMetaData" type="metadata:TypeMetaData" maxOccurs="unbounded" minOccurs="0"/>
+ </sequence>
+ </complexType>
+
+ <complexType name="JavaMetaData">
+ <attribute name="factoryInterface" type="string" use="optional"/>
+ <attribute name="typeInterface" type="string" use="optional"/>
+ </complexType>
+
+ <complexType name="XSDMetaData">
+ <attribute name="location" type="string" use="required"/>
+ </complexType>
+
+ <complexType name="TypeMetaData">
+ <attribute name="location" type="string" use="required"/>
+ </complexType>
+
+</schema>
diff --git a/branches/sdo-java-M2/sdo/impl/src/test/java/com/example/simple/Quote.java b/branches/sdo-java-M2/sdo/impl/src/test/java/com/example/simple/Quote.java
new file mode 100644
index 0000000000..2855d2a67c
--- /dev/null
+++ b/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;
+
+/**
+ * <!-- begin-user-doc -->
+ * A representation of the model object '<em><b>Quote</b></em>'.
+ * <!-- end-user-doc -->
+ *
+ * <p>
+ * The following features are supported:
+ * <ul>
+ * <li>{@link com.example.simple.Quote#getSymbol <em>Symbol</em>}</li>
+ * <li>{@link com.example.simple.Quote#getCompanyName <em>Company Name</em>}</li>
+ * <li>{@link com.example.simple.Quote#getPrice <em>Price</em>}</li>
+ * <li>{@link com.example.simple.Quote#getOpen1 <em>Open1</em>}</li>
+ * <li>{@link com.example.simple.Quote#getHigh <em>High</em>}</li>
+ * <li>{@link com.example.simple.Quote#getLow <em>Low</em>}</li>
+ * <li>{@link com.example.simple.Quote#getVolume <em>Volume</em>}</li>
+ * <li>{@link com.example.simple.Quote#getChange1 <em>Change1</em>}</li>
+ * <li>{@link com.example.simple.Quote#getQuotes <em>Quotes</em>}</li>
+ * </ul>
+ * </p>
+ *
+ * @generated
+ */
+public interface Quote
+{
+ /**
+ * Returns the value of the '<em><b>Symbol</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <p>
+ * If the meaning of the '<em>Symbol</em>' attribute isn't clear,
+ * there really should be more of a description here...
+ * </p>
+ * <!-- end-user-doc -->
+ * @return the value of the '<em>Symbol</em>' attribute.
+ * @see #setSymbol(String)
+ * @generated
+ */
+ String getSymbol();
+
+ /**
+ * Sets the value of the '{@link com.example.simple.Quote#getSymbol <em>Symbol</em>}' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @param value the new value of the '<em>Symbol</em>' attribute.
+ * @see #getSymbol()
+ * @generated
+ */
+ void setSymbol(String value);
+
+ /**
+ * Returns the value of the '<em><b>Company Name</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <p>
+ * If the meaning of the '<em>Company Name</em>' attribute isn't clear,
+ * there really should be more of a description here...
+ * </p>
+ * <!-- end-user-doc -->
+ * @return the value of the '<em>Company Name</em>' attribute.
+ * @see #setCompanyName(String)
+ * @generated
+ */
+ String getCompanyName();
+
+ /**
+ * Sets the value of the '{@link com.example.simple.Quote#getCompanyName <em>Company Name</em>}' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @param value the new value of the '<em>Company Name</em>' attribute.
+ * @see #getCompanyName()
+ * @generated
+ */
+ void setCompanyName(String value);
+
+ /**
+ * Returns the value of the '<em><b>Price</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <p>
+ * If the meaning of the '<em>Price</em>' attribute isn't clear,
+ * there really should be more of a description here...
+ * </p>
+ * <!-- end-user-doc -->
+ * @return the value of the '<em>Price</em>' attribute.
+ * @see #setPrice(BigDecimal)
+ * @generated
+ */
+ BigDecimal getPrice();
+
+ /**
+ * Sets the value of the '{@link com.example.simple.Quote#getPrice <em>Price</em>}' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @param value the new value of the '<em>Price</em>' attribute.
+ * @see #getPrice()
+ * @generated
+ */
+ void setPrice(BigDecimal value);
+
+ /**
+ * Returns the value of the '<em><b>Open1</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <p>
+ * If the meaning of the '<em>Open1</em>' attribute isn't clear,
+ * there really should be more of a description here...
+ * </p>
+ * <!-- end-user-doc -->
+ * @return the value of the '<em>Open1</em>' attribute.
+ * @see #setOpen1(BigDecimal)
+ * @generated
+ */
+ BigDecimal getOpen1();
+
+ /**
+ * Sets the value of the '{@link com.example.simple.Quote#getOpen1 <em>Open1</em>}' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @param value the new value of the '<em>Open1</em>' attribute.
+ * @see #getOpen1()
+ * @generated
+ */
+ void setOpen1(BigDecimal value);
+
+ /**
+ * Returns the value of the '<em><b>High</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <p>
+ * If the meaning of the '<em>High</em>' attribute isn't clear,
+ * there really should be more of a description here...
+ * </p>
+ * <!-- end-user-doc -->
+ * @return the value of the '<em>High</em>' attribute.
+ * @see #setHigh(BigDecimal)
+ * @generated
+ */
+ BigDecimal getHigh();
+
+ /**
+ * Sets the value of the '{@link com.example.simple.Quote#getHigh <em>High</em>}' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @param value the new value of the '<em>High</em>' attribute.
+ * @see #getHigh()
+ * @generated
+ */
+ void setHigh(BigDecimal value);
+
+ /**
+ * Returns the value of the '<em><b>Low</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <p>
+ * If the meaning of the '<em>Low</em>' attribute isn't clear,
+ * there really should be more of a description here...
+ * </p>
+ * <!-- end-user-doc -->
+ * @return the value of the '<em>Low</em>' attribute.
+ * @see #setLow(BigDecimal)
+ * @generated
+ */
+ BigDecimal getLow();
+
+ /**
+ * Sets the value of the '{@link com.example.simple.Quote#getLow <em>Low</em>}' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @param value the new value of the '<em>Low</em>' attribute.
+ * @see #getLow()
+ * @generated
+ */
+ void setLow(BigDecimal value);
+
+ /**
+ * Returns the value of the '<em><b>Volume</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <p>
+ * If the meaning of the '<em>Volume</em>' attribute isn't clear,
+ * there really should be more of a description here...
+ * </p>
+ * <!-- end-user-doc -->
+ * @return the value of the '<em>Volume</em>' attribute.
+ * @see #isSetVolume()
+ * @see #unsetVolume()
+ * @see #setVolume(double)
+ * @generated
+ */
+ double getVolume();
+
+ /**
+ * Sets the value of the '{@link com.example.simple.Quote#getVolume <em>Volume</em>}' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @param value the new value of the '<em>Volume</em>' attribute.
+ * @see #isSetVolume()
+ * @see #unsetVolume()
+ * @see #getVolume()
+ * @generated
+ */
+ void setVolume(double value);
+
+ /**
+ * Unsets the value of the '{@link com.example.simple.Quote#getVolume <em>Volume</em>}' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #isSetVolume()
+ * @see #getVolume()
+ * @see #setVolume(double)
+ * @generated
+ */
+ void unsetVolume();
+
+ /**
+ * Returns whether the value of the '{@link com.example.simple.Quote#getVolume <em>Volume</em>}' attribute is set.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return whether the value of the '<em>Volume</em>' attribute is set.
+ * @see #unsetVolume()
+ * @see #getVolume()
+ * @see #setVolume(double)
+ * @generated
+ */
+ boolean isSetVolume();
+
+ /**
+ * Returns the value of the '<em><b>Change1</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <p>
+ * If the meaning of the '<em>Change1</em>' attribute isn't clear,
+ * there really should be more of a description here...
+ * </p>
+ * <!-- end-user-doc -->
+ * @return the value of the '<em>Change1</em>' attribute.
+ * @see #isSetChange1()
+ * @see #unsetChange1()
+ * @see #setChange1(double)
+ * @generated
+ */
+ double getChange1();
+
+ /**
+ * Sets the value of the '{@link com.example.simple.Quote#getChange1 <em>Change1</em>}' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @param value the new value of the '<em>Change1</em>' attribute.
+ * @see #isSetChange1()
+ * @see #unsetChange1()
+ * @see #getChange1()
+ * @generated
+ */
+ void setChange1(double value);
+
+ /**
+ * Unsets the value of the '{@link com.example.simple.Quote#getChange1 <em>Change1</em>}' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #isSetChange1()
+ * @see #getChange1()
+ * @see #setChange1(double)
+ * @generated
+ */
+ void unsetChange1();
+
+ /**
+ * Returns whether the value of the '{@link com.example.simple.Quote#getChange1 <em>Change1</em>}' attribute is set.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return whether the value of the '<em>Change1</em>' attribute is set.
+ * @see #unsetChange1()
+ * @see #getChange1()
+ * @see #setChange1(double)
+ * @generated
+ */
+ boolean isSetChange1();
+
+ /**
+ * Returns the value of the '<em><b>Quotes</b></em>' containment reference list.
+ * The list contents are of type {@link com.example.simple.Quote}.
+ * <!-- begin-user-doc -->
+ * <p>
+ * If the meaning of the '<em>Quotes</em>' containment reference list isn't clear,
+ * there really should be more of a description here...
+ * </p>
+ * <!-- end-user-doc -->
+ * @return the value of the '<em>Quotes</em>' containment reference list.
+ * @generated
+ */
+ List getQuotes();
+
+} // Quote
diff --git a/branches/sdo-java-M2/sdo/impl/src/test/java/com/example/simple/SimpleFactory.java b/branches/sdo-java-M2/sdo/impl/src/test/java/com/example/simple/SimpleFactory.java
new file mode 100644
index 0000000000..4f33a3e19f
--- /dev/null
+++ b/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;
+
+
+/**
+ * <!-- begin-user-doc -->
+ * The <b>Factory</b> for the model.
+ * It provides a create method for each non-abstract class of the model.
+ * <!-- end-user-doc -->
+ * @generated
+ */
+public interface SimpleFactory
+{
+ /**
+ * The singleton instance of the factory.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ SimpleFactory INSTANCE = com.example.simple.impl.SimpleFactoryImpl.eINSTANCE;
+
+ /**
+ * Returns a new object of class '<em>Quote</em>'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return a new object of class '<em>Quote</em>'.
+ * @generated
+ */
+ Quote createQuote();
+
+} //SimpleFactory
diff --git a/branches/sdo-java-M2/sdo/impl/src/test/java/com/example/simple/impl/QuoteImpl.java b/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/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;
+
+/**
+ * <!-- begin-user-doc -->
+ * An implementation of the model object '<em><b>Quote</b></em>'.
+ * <!-- end-user-doc -->
+ * <p>
+ * The following features are implemented:
+ * <ul>
+ * <li>{@link com.example.simple.impl.QuoteImpl#getSymbol <em>Symbol</em>}</li>
+ * <li>{@link com.example.simple.impl.QuoteImpl#getCompanyName <em>Company Name</em>}</li>
+ * <li>{@link com.example.simple.impl.QuoteImpl#getPrice <em>Price</em>}</li>
+ * <li>{@link com.example.simple.impl.QuoteImpl#getOpen1 <em>Open1</em>}</li>
+ * <li>{@link com.example.simple.impl.QuoteImpl#getHigh <em>High</em>}</li>
+ * <li>{@link com.example.simple.impl.QuoteImpl#getLow <em>Low</em>}</li>
+ * <li>{@link com.example.simple.impl.QuoteImpl#getVolume <em>Volume</em>}</li>
+ * <li>{@link com.example.simple.impl.QuoteImpl#getChange1 <em>Change1</em>}</li>
+ * <li>{@link com.example.simple.impl.QuoteImpl#getQuotes <em>Quotes</em>}</li>
+ * </ul>
+ * </p>
+ *
+ * @generated
+ */
+public class QuoteImpl extends DataObjectImpl implements Quote
+{
+ /**
+ * The default value of the '{@link #getSymbol() <em>Symbol</em>}' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #getSymbol()
+ * @generated
+ * @ordered
+ */
+ protected static final String SYMBOL_EDEFAULT = null;
+
+ /**
+ * The cached value of the '{@link #getSymbol() <em>Symbol</em>}' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #getSymbol()
+ * @generated
+ * @ordered
+ */
+ protected String symbol = SYMBOL_EDEFAULT;
+
+ /**
+ * The default value of the '{@link #getCompanyName() <em>Company Name</em>}' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #getCompanyName()
+ * @generated
+ * @ordered
+ */
+ protected static final String COMPANY_NAME_EDEFAULT = null;
+
+ /**
+ * The cached value of the '{@link #getCompanyName() <em>Company Name</em>}' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #getCompanyName()
+ * @generated
+ * @ordered
+ */
+ protected String companyName = COMPANY_NAME_EDEFAULT;
+
+ /**
+ * The default value of the '{@link #getPrice() <em>Price</em>}' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #getPrice()
+ * @generated
+ * @ordered
+ */
+ protected static final BigDecimal PRICE_EDEFAULT = null;
+
+ /**
+ * The cached value of the '{@link #getPrice() <em>Price</em>}' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #getPrice()
+ * @generated
+ * @ordered
+ */
+ protected BigDecimal price = PRICE_EDEFAULT;
+
+ /**
+ * The default value of the '{@link #getOpen1() <em>Open1</em>}' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #getOpen1()
+ * @generated
+ * @ordered
+ */
+ protected static final BigDecimal OPEN1_EDEFAULT = null;
+
+ /**
+ * The cached value of the '{@link #getOpen1() <em>Open1</em>}' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #getOpen1()
+ * @generated
+ * @ordered
+ */
+ protected BigDecimal open1 = OPEN1_EDEFAULT;
+
+ /**
+ * The default value of the '{@link #getHigh() <em>High</em>}' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #getHigh()
+ * @generated
+ * @ordered
+ */
+ protected static final BigDecimal HIGH_EDEFAULT = null;
+
+ /**
+ * The cached value of the '{@link #getHigh() <em>High</em>}' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #getHigh()
+ * @generated
+ * @ordered
+ */
+ protected BigDecimal high = HIGH_EDEFAULT;
+
+ /**
+ * The default value of the '{@link #getLow() <em>Low</em>}' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #getLow()
+ * @generated
+ * @ordered
+ */
+ protected static final BigDecimal LOW_EDEFAULT = null;
+
+ /**
+ * The cached value of the '{@link #getLow() <em>Low</em>}' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #getLow()
+ * @generated
+ * @ordered
+ */
+ protected BigDecimal low = LOW_EDEFAULT;
+
+ /**
+ * The default value of the '{@link #getVolume() <em>Volume</em>}' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #getVolume()
+ * @generated
+ * @ordered
+ */
+ protected static final double VOLUME_EDEFAULT = 0.0;
+
+ /**
+ * The cached value of the '{@link #getVolume() <em>Volume</em>}' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #getVolume()
+ * @generated
+ * @ordered
+ */
+ protected double volume = VOLUME_EDEFAULT;
+
+ /**
+ * This is true if the Volume attribute has been set.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ protected boolean volumeESet = false;
+
+ /**
+ * The default value of the '{@link #getChange1() <em>Change1</em>}' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #getChange1()
+ * @generated
+ * @ordered
+ */
+ protected static final double CHANGE1_EDEFAULT = 0.0;
+
+ /**
+ * The cached value of the '{@link #getChange1() <em>Change1</em>}' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #getChange1()
+ * @generated
+ * @ordered
+ */
+ protected double change1 = CHANGE1_EDEFAULT;
+
+ /**
+ * This is true if the Change1 attribute has been set.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ protected boolean change1ESet = false;
+
+ /**
+ * The cached value of the '{@link #getQuotes() <em>Quotes</em>}' containment reference list.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #getQuotes()
+ * @generated
+ * @ordered
+ */
+ protected EList quotes = null;
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ protected QuoteImpl()
+ {
+ super();
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ protected EClass eStaticClass()
+ {
+ return SimplePackageImpl.Literals.QUOTE;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public String getSymbol()
+ {
+ return symbol;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public void setSymbol(String newSymbol)
+ {
+ String oldSymbol = symbol;
+ symbol = newSymbol;
+ if (eNotificationRequired())
+ eNotify(new ENotificationImpl(this, Notification.SET, SimplePackageImpl.QUOTE__SYMBOL, oldSymbol, symbol));
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public String getCompanyName()
+ {
+ return companyName;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @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));
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public BigDecimal getPrice()
+ {
+ return price;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public void setPrice(BigDecimal newPrice)
+ {
+ BigDecimal oldPrice = price;
+ price = newPrice;
+ if (eNotificationRequired())
+ eNotify(new ENotificationImpl(this, Notification.SET, SimplePackageImpl.QUOTE__PRICE, oldPrice, price));
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public BigDecimal getOpen1()
+ {
+ return open1;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public void setOpen1(BigDecimal newOpen1)
+ {
+ BigDecimal oldOpen1 = open1;
+ open1 = newOpen1;
+ if (eNotificationRequired())
+ eNotify(new ENotificationImpl(this, Notification.SET, SimplePackageImpl.QUOTE__OPEN1, oldOpen1, open1));
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public BigDecimal getHigh()
+ {
+ return high;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public void setHigh(BigDecimal newHigh)
+ {
+ BigDecimal oldHigh = high;
+ high = newHigh;
+ if (eNotificationRequired())
+ eNotify(new ENotificationImpl(this, Notification.SET, SimplePackageImpl.QUOTE__HIGH, oldHigh, high));
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public BigDecimal getLow()
+ {
+ return low;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public void setLow(BigDecimal newLow)
+ {
+ BigDecimal oldLow = low;
+ low = newLow;
+ if (eNotificationRequired())
+ eNotify(new ENotificationImpl(this, Notification.SET, SimplePackageImpl.QUOTE__LOW, oldLow, low));
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public double getVolume()
+ {
+ return volume;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @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));
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @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));
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public boolean isSetVolume()
+ {
+ return volumeESet;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public double getChange1()
+ {
+ return change1;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @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));
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @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));
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public boolean isSetChange1()
+ {
+ return change1ESet;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public List getQuotes()
+ {
+ if (quotes == null)
+ {
+ quotes = new EObjectContainmentEList(Quote.class, this, SimplePackageImpl.QUOTE__QUOTES);
+ }
+ return quotes;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @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);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @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);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @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);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @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);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @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);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @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("<unset>");
+ result.append(", change1: ");
+ if (change1ESet) result.append(change1); else result.append("<unset>");
+ result.append(')');
+ return result.toString();
+ }
+
+} //QuoteImpl
diff --git a/branches/sdo-java-M2/sdo/impl/src/test/java/com/example/simple/impl/SimpleFactoryImpl.java b/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/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;
+
+/**
+ * <!-- begin-user-doc -->
+ * An implementation of the model <b>Factory</b>.
+ * <!-- end-user-doc -->
+ * @generated
+ */
+public class SimpleFactoryImpl extends EFactoryImpl implements SimpleFactory
+{
+ /**
+ * The singleton instance of the factory.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public static final SimpleFactoryImpl eINSTANCE = init();
+
+ /**
+ * Creates the default factory implementation.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @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.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public SimpleFactoryImpl()
+ {
+ super();
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @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");
+ }
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EObject createDocumentRoot()
+ {
+ EObject documentRoot = super.create(SimplePackageImpl.Literals.DOCUMENT_ROOT);
+ return documentRoot;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public Quote createQuote()
+ {
+ QuoteImpl quote = new QuoteImpl();
+ return quote;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public SimplePackageImpl getSimplePackageImpl()
+ {
+ return (SimplePackageImpl)getEPackage();
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @deprecated
+ * @generated
+ */
+ public static SimplePackageImpl getPackage()
+ {
+ return SimplePackageImpl.eINSTANCE;
+ }
+
+} //SimpleFactoryImpl
diff --git a/branches/sdo-java-M2/sdo/impl/src/test/java/com/example/simple/impl/SimplePackageImpl.java b/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/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;
+
+/**
+ * <!-- begin-user-doc -->
+ * The <b>Package</b> for the model.
+ * It contains accessors for the meta objects to represent
+ * <ul>
+ * <li>each class,</li>
+ * <li>each feature of each class,</li>
+ * <li>each enum,</li>
+ * <li>and each data type</li>
+ * </ul>
+ * <!-- end-user-doc -->
+ * @see com.example.simple.SimpleFactory
+ * @generated
+ */
+public class SimplePackageImpl extends EPackageImpl
+{
+ /**
+ * The package name.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public static final String eNAME = "simple";
+
+ /**
+ * The package namespace URI.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public static final String eNS_URI = "http://www.example.com/simple";
+
+ /**
+ * The package namespace name.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public static final String eNS_PREFIX = "simple";
+
+ /**
+ * The singleton instance of the package.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public static final SimplePackageImpl eINSTANCE = com.example.simple.impl.SimplePackageImpl.init();
+
+ /**
+ * The meta object id for the '{@link com.example.simple.impl.DocumentRootImpl <em>Document Root</em>}' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @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 '<em><b>Mixed</b></em>' attribute list.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ public static final int DOCUMENT_ROOT__MIXED = 0;
+
+ /**
+ * The feature id for the '<em><b>XMLNS Prefix Map</b></em>' map.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ public static final int DOCUMENT_ROOT__XMLNS_PREFIX_MAP = 1;
+
+ /**
+ * The feature id for the '<em><b>XSI Schema Location</b></em>' map.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ public static final int DOCUMENT_ROOT__XSI_SCHEMA_LOCATION = 2;
+
+ /**
+ * The feature id for the '<em><b>Stock Quote</b></em>' containment reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ public static final int DOCUMENT_ROOT__STOCK_QUOTE = 3;
+
+ /**
+ * The number of structural features of the '<em>Document Root</em>' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ public static final int DOCUMENT_ROOT_FEATURE_COUNT = 4;
+
+ /**
+ * The meta object id for the '{@link com.example.simple.impl.QuoteImpl <em>Quote</em>}' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @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 '<em><b>Symbol</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ public static final int QUOTE__SYMBOL = 0;
+
+ /**
+ * The feature id for the '<em><b>Company Name</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ public static final int QUOTE__COMPANY_NAME = 1;
+
+ /**
+ * The feature id for the '<em><b>Price</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ public static final int QUOTE__PRICE = 2;
+
+ /**
+ * The feature id for the '<em><b>Open1</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ public static final int QUOTE__OPEN1 = 3;
+
+ /**
+ * The feature id for the '<em><b>High</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ public static final int QUOTE__HIGH = 4;
+
+ /**
+ * The feature id for the '<em><b>Low</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ public static final int QUOTE__LOW = 5;
+
+ /**
+ * The feature id for the '<em><b>Volume</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ public static final int QUOTE__VOLUME = 6;
+
+ /**
+ * The feature id for the '<em><b>Change1</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ public static final int QUOTE__CHANGE1 = 7;
+
+ /**
+ * The feature id for the '<em><b>Quotes</b></em>' containment reference list.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ public static final int QUOTE__QUOTES = 8;
+
+ /**
+ * The number of structural features of the '<em>Quote</em>' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ public static final int QUOTE_FEATURE_COUNT = 9;
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ private EClass documentRootEClass = null;
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ private EClass quoteEClass = null;
+
+ /**
+ * Creates an instance of the model <b>Package</b>, registered with
+ * {@link org.eclipse.emf.ecore.EPackage.Registry EPackage.Registry} by the package
+ * package URI value.
+ * <p>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.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @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));
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ private static boolean isInited = false;
+
+ /**
+ * Creates, registers, and initializes the <b>Package</b> 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.
+ * <p>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.
+ * <p>Invocation of this method will not affect any packages that have
+ * already been initialized.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @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 <em>Document Root</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for class '<em>Document Root</em>'.
+ * @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 <em>Mixed</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for the attribute list '<em>Mixed</em>'.
+ * @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 <em>XMLNS Prefix Map</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for the map '<em>XMLNS Prefix Map</em>'.
+ * @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 <em>XSI Schema Location</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for the map '<em>XSI Schema Location</em>'.
+ * @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 <em>Stock Quote</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for the containment reference '<em>Stock Quote</em>'.
+ * @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 <em>Quote</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for class '<em>Quote</em>'.
+ * @see com.example.simple.Quote
+ * @generated
+ */
+ public EClass getQuote()
+ {
+ return quoteEClass;
+ }
+
+ /**
+ * Returns the meta object for the attribute '{@link com.example.simple.Quote#getSymbol <em>Symbol</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for the attribute '<em>Symbol</em>'.
+ * @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 <em>Company Name</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for the attribute '<em>Company Name</em>'.
+ * @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 <em>Price</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for the attribute '<em>Price</em>'.
+ * @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 <em>Open1</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for the attribute '<em>Open1</em>'.
+ * @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 <em>High</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for the attribute '<em>High</em>'.
+ * @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 <em>Low</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for the attribute '<em>Low</em>'.
+ * @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 <em>Volume</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for the attribute '<em>Volume</em>'.
+ * @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 <em>Change1</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for the attribute '<em>Change1</em>'.
+ * @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 <em>Quotes</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for the containment reference list '<em>Quotes</em>'.
+ * @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.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the factory that creates the instances of the model.
+ * @generated
+ */
+ public SimpleFactory getSimpleFactory()
+ {
+ return (SimpleFactory)getEFactoryInstance();
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @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.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @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);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @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.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @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 <b>http:///org/eclipse/emf/ecore/util/ExtendedMetaData</b>.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @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"
+ });
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * Defines literals for the meta objects that represent
+ * <ul>
+ * <li>each class,</li>
+ * <li>each feature of each class,</li>
+ * <li>each enum,</li>
+ * <li>and each data type</li>
+ * </ul>
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public interface Literals
+ {
+ /**
+ * The meta object literal for the '{@link com.example.simple.impl.DocumentRootImpl <em>Document Root</em>}' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @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 '<em><b>Mixed</b></em>' attribute list feature.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public static final EAttribute DOCUMENT_ROOT__MIXED = eINSTANCE.getDocumentRoot_Mixed();
+
+ /**
+ * The meta object literal for the '<em><b>XMLNS Prefix Map</b></em>' map feature.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public static final EReference DOCUMENT_ROOT__XMLNS_PREFIX_MAP = eINSTANCE.getDocumentRoot_XMLNSPrefixMap();
+
+ /**
+ * The meta object literal for the '<em><b>XSI Schema Location</b></em>' map feature.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public static final EReference DOCUMENT_ROOT__XSI_SCHEMA_LOCATION = eINSTANCE.getDocumentRoot_XSISchemaLocation();
+
+ /**
+ * The meta object literal for the '<em><b>Stock Quote</b></em>' containment reference feature.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public static final EReference DOCUMENT_ROOT__STOCK_QUOTE = eINSTANCE.getDocumentRoot_StockQuote();
+
+ /**
+ * The meta object literal for the '{@link com.example.simple.impl.QuoteImpl <em>Quote</em>}' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @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 '<em><b>Symbol</b></em>' attribute feature.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public static final EAttribute QUOTE__SYMBOL = eINSTANCE.getQuote_Symbol();
+
+ /**
+ * The meta object literal for the '<em><b>Company Name</b></em>' attribute feature.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public static final EAttribute QUOTE__COMPANY_NAME = eINSTANCE.getQuote_CompanyName();
+
+ /**
+ * The meta object literal for the '<em><b>Price</b></em>' attribute feature.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public static final EAttribute QUOTE__PRICE = eINSTANCE.getQuote_Price();
+
+ /**
+ * The meta object literal for the '<em><b>Open1</b></em>' attribute feature.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public static final EAttribute QUOTE__OPEN1 = eINSTANCE.getQuote_Open1();
+
+ /**
+ * The meta object literal for the '<em><b>High</b></em>' attribute feature.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public static final EAttribute QUOTE__HIGH = eINSTANCE.getQuote_High();
+
+ /**
+ * The meta object literal for the '<em><b>Low</b></em>' attribute feature.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public static final EAttribute QUOTE__LOW = eINSTANCE.getQuote_Low();
+
+ /**
+ * The meta object literal for the '<em><b>Volume</b></em>' attribute feature.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public static final EAttribute QUOTE__VOLUME = eINSTANCE.getQuote_Volume();
+
+ /**
+ * The meta object literal for the '<em><b>Change1</b></em>' attribute feature.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public static final EAttribute QUOTE__CHANGE1 = eINSTANCE.getQuote_Change1();
+
+ /**
+ * The meta object literal for the '<em><b>Quotes</b></em>' containment reference list feature.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public static final EReference QUOTE__QUOTES = eINSTANCE.getQuote_Quotes();
+
+ }
+
+} //SimplePackageImpl
diff --git a/branches/sdo-java-M2/sdo/impl/src/test/java/org/apache/tuscany/sdo/codegen/Bar1.java b/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/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/branches/sdo-java-M2/sdo/impl/src/test/java/org/apache/tuscany/sdo/codegen/Bar2.java b/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/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/branches/sdo-java-M2/sdo/impl/src/test/java/org/apache/tuscany/sdo/codegen/BytecodeInterfaceGeneratorTestCase.java b/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/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/branches/sdo-java-M2/sdo/impl/src/test/java/org/apache/tuscany/sdo/codegen/Foo.java b/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/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/branches/sdo-java-M2/sdo/impl/src/test/java/org/apache/tuscany/sdo/codegen/JavaInterfaceGeneratorTestCase.java b/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/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/branches/sdo-java-M2/sdo/impl/src/test/java/org/apache/tuscany/sdo/codegen/MockProperty.java b/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/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/branches/sdo-java-M2/sdo/impl/src/test/java/org/apache/tuscany/sdo/codegen/MockType.java b/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/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/branches/sdo-java-M2/sdo/impl/src/test/java/org/apache/tuscany/sdo/test/ChangeSummaryTestCase.java b/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/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/branches/sdo-java-M2/sdo/impl/src/test/java/org/apache/tuscany/sdo/test/CrossScopeCopyTestCase.java b/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/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 <indent; i++) System.out.print(" ");
+ }
+ */
+
+ protected void constructSourceTree(DataFactory df)
+ {
+ // Create Instances
+ bankSDO = df.create(TEST_NAMESPACE, BANK_TYPE );
+ branchSDO1 = df.create(TEST_NAMESPACE, BRANCH_TYPE );
+ branchSDO2 = df.create(TEST_NAMESPACE, BRANCH_TYPE );
+ serviceSDO1 = df.create(TEST_NAMESPACE, SERVICE_TYPE );
+ serviceSDO2 = df.create(TEST_NAMESPACE, SERVICE_TYPE );
+ serviceSDO3 = df.create(TEST_NAMESPACE, SERVICE_TYPE );
+ customerSDO1 = df.create(TEST_NAMESPACE, CUSTOMER_TYPE );
+ customerSDO2 = df.create(TEST_NAMESPACE, CUSTOMER_TYPE );
+ customerSDO3 = df.create(TEST_NAMESPACE, CUSTOMER_TYPE );
+ customerSDO4 = df.create(TEST_NAMESPACE, CUSTOMER_TYPE );
+
+ // Populate the Bank Instance
+ bankSDO.set("name", "Fourth National");
+ Vector v = new Vector();
+ v.add(branchSDO1);
+ v.add(branchSDO2);
+ bankSDO.set("Branch",v);
+ v.removeAllElements();
+ v.add(serviceSDO1);
+ v.add(serviceSDO2);
+ v.add(serviceSDO3);
+ bankSDO.set("Service",v);
+ v.removeAllElements();
+ v.add(customerSDO1);
+ v.add(customerSDO2);
+ v.add(customerSDO3);
+ v.add(customerSDO4);
+ bankSDO.set("Customer",v);
+ v.removeAllElements();
+
+ // Populate Branch Instances
+ // Branch 1
+ branchSDO1.set("ID", "BR100");
+ DataObject addr = df.create(TEST_NAMESPACE, ADDRESS_TYPE );
+ addr.set("Street", "1302 Money Street");
+ addr.set("City", "Apex");
+ addr.set("State", "NC");
+ addr.set("Zip", "27502");
+ branchSDO1.set("Address", addr);
+ v.add("If you are north, head south");
+ v.add("If you are south, head north");
+ branchSDO1.set("Directions", v);
+ v.removeAllElements();
+ DataObject account1 = df.create(TEST_NAMESPACE, ACCOUNT_TYPE );
+ account1.set("ID", "0000 1200 0001");
+ account1.set("Service", serviceSDO1 );
+ account1.setBigDecimal("Balance", new BigDecimal("3124.12"));
+ v.add(account1);
+ DataObject account2 = df.create(TEST_NAMESPACE, ACCOUNT_TYPE );
+ account2.set("ID", "0000 8899 0001");
+ account2.set("Service", serviceSDO1 );
+ account2.setBigDecimal("Balance", new BigDecimal("20.00"));
+ v.add(account2);
+ DataObject account3 = df.create(TEST_NAMESPACE, ACCOUNT_TYPE );
+ account3.set("ID", "0000 3110 0020");
+ account3.set("Service", serviceSDO3 );
+ account3.setBigDecimal("Balance", new BigDecimal("5000.00"));
+ v.add(account3);
+ branchSDO1.set("Account", v);
+ v.removeAllElements();
+ // Branch 2
+ branchSDO2.set("ID", "BR200");
+ addr = df.create(TEST_NAMESPACE, ADDRESS_TYPE );
+ addr.set("Street", "1207 Cash Court");
+ addr.set("City", "Raleigh");
+ addr.set("State", "NC");
+ addr.set("Zip", "27701");
+ branchSDO2.set("Address", addr);
+ v.add("If you are east, head west");
+ v.add("If you are west, head east");
+ branchSDO2.set("Directions", v);
+ v.removeAllElements();
+ DataObject account4 = df.create(TEST_NAMESPACE, ACCOUNT_TYPE );
+ account4.set("ID", "0000 0011 0001");
+ account4.set("Service", serviceSDO1 );
+ account4.setBigDecimal("Balance", new BigDecimal("99.12"));
+ v.add(account4);
+ DataObject account5 = df.create(TEST_NAMESPACE, ACCOUNT_TYPE );
+ account5.set("ID", "0000 9911 0001");
+ account5.set("Service", serviceSDO2 );
+ account5.setBigDecimal("Balance", new BigDecimal("820.00"));
+ v.add(account5);
+ DataObject account6 = df.create(TEST_NAMESPACE, ACCOUNT_TYPE );
+ account6.set("ID", "0000 0001 0020");
+ account6.set("Service", serviceSDO3 );
+ account6.setBigDecimal("Balance", new BigDecimal("9000.00"));
+ v.add(account6);
+ branchSDO2.set("Account", v);
+ v.removeAllElements();
+
+ // Populate Service Instances
+ serviceSDO1.set("ID", "SRV01");
+ serviceSDO1.set("Name", "Checking");
+ serviceSDO1.setBigDecimal("Fee", new BigDecimal("0.00"));
+ serviceSDO2.set("ID", "SRV02");
+ serviceSDO2.set("Name", "Savings");
+ serviceSDO2.setBigDecimal("Fee", new BigDecimal("0.00"));
+ serviceSDO3.set("ID", "SRV03");
+ serviceSDO3.set("Name", "Loan");
+ serviceSDO3.setBigDecimal("Fee", new BigDecimal("0.00"));
+
+ // Populate Customer Instances
+ // Customer 1
+ customerSDO1.set("ID", "CUST01");
+ customerSDO1.set("First", "James");
+ customerSDO1.set("Last", "Madison");
+ addr = df.create(TEST_NAMESPACE, ADDRESS_TYPE );
+ addr.set("Street", "1234 Easy Street");
+ addr.set("City", "New York");
+ addr.set("State", "NY");
+ addr.set("Zip", "27511");
+ customerSDO1.set("Address", addr);
+ customerSDO1.set("HomeBranch", branchSDO1);
+ v.add(account1);
+ customerSDO1.set("Account", v);
+ v.removeAllElements();
+ v.add(customerSDO2);
+ v.add(customerSDO3);
+ customerSDO1.set("Related", v);
+ v.removeAllElements();
+ // Customer 2
+ customerSDO2.set("ID", "CUST02");
+ customerSDO2.set("First", "George");
+ customerSDO2.set("Last", "Washington");
+ addr = df.create(TEST_NAMESPACE, ADDRESS_TYPE );
+ addr.set("Street", "1776 Potomac Avenue");
+ addr.set("City", "Washington");
+ addr.set("State", "DC");
+ addr.set("Zip", "50555");
+ customerSDO2.set("Address", addr);
+ customerSDO2.set("HomeBranch", branchSDO1);
+ v.add(account2);
+ v.add(account3);
+ customerSDO2.set("Account", v);
+ v.removeAllElements();
+ // Customer 3
+ customerSDO3.set("ID", "CUST03");
+ customerSDO3.set("First", "Thomas");
+ customerSDO3.set("Last", "Jefferson");
+ addr = df.create(TEST_NAMESPACE, ADDRESS_TYPE );
+ addr.set("Street", "1492 Columbus Avenue");
+ addr.set("City", "Charlottesville");
+ addr.set("State", "VA");
+ addr.set("Zip", "20121");
+ customerSDO3.set("Address", addr);
+ customerSDO3.set("HomeBranch", branchSDO2);
+ v.add(account4);
+ customerSDO3.set("Account", v);
+ v.removeAllElements();
+ // Customer 4
+ customerSDO4.set("ID", "CUST04");
+ customerSDO4.set("First", "Benjamin");
+ customerSDO4.set("Last", "Franklin");
+ addr = df.create(TEST_NAMESPACE, ADDRESS_TYPE );
+ addr.set("Street", "99 Light Street");
+ addr.set("City", "Philadelphia");
+ addr.set("State", "PA");
+ addr.set("Zip", "19251");
+ customerSDO4.set("Address", addr);
+ customerSDO4.set("HomeBranch", branchSDO2);
+ v.add(account5);
+ v.add(account6);
+ customerSDO4.set("Account", v);
+ v.removeAllElements();
+
+ }
+
+ private void populateScopeWithDynamicTypes(TypeHelper scope)
+ {
+ Type stringType = scope.getType("commonj.sdo", "String");
+ DataObject customerType = DataFactory.INSTANCE.create("commonj.sdo", "Type");
+ customerType.set("uri", TEST_NAMESPACE);
+ customerType.set("name", DYNAMIC_TYPE );
+ DataObject custNumProperty = customerType.createDataObject("property");
+ custNumProperty.set("name", "custNum");
+ custNumProperty.set("type", stringType);
+ DataObject firstNameProperty = customerType.createDataObject("property");
+ firstNameProperty.set("name", "firstName");
+ firstNameProperty.set("type", stringType);
+ DataObject lastNameProperty = customerType.createDataObject("property");
+ lastNameProperty.set("name", "lastName");
+ lastNameProperty.set("type", stringType);
+ scope.define(customerType);
+ }
+
+ /*
+ private void dumpObject(DataObject sdo, String node )
+ {
+ try
+ {
+ ByteArrayOutputStream baos = new ByteArrayOutputStream();
+ SDOUtil.createXMLHelper(scopeA).save(sdo, TEST_NAMESPACE,
+ node, baos);
+ System.out.println(baos.toString());
+ }
+ catch (IOException e)
+ {
+ e.printStackTrace();
+ }
+ }
+ */
+}
diff --git a/branches/sdo-java-M2/sdo/impl/src/test/java/org/apache/tuscany/sdo/test/DataTypeBaseTypeTestCase.java b/branches/sdo-java-M2/sdo/impl/src/test/java/org/apache/tuscany/sdo/test/DataTypeBaseTypeTestCase.java
new file mode 100644
index 0000000000..a49b165386
--- /dev/null
+++ b/branches/sdo-java-M2/sdo/impl/src/test/java/org/apache/tuscany/sdo/test/DataTypeBaseTypeTestCase.java
@@ -0,0 +1,68 @@
+/**
+ *
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+package org.apache.tuscany.sdo.test;
+
+
+import java.io.IOException;
+import java.io.InputStream;
+import java.net.URL;
+import java.util.List;
+
+import junit.framework.TestCase;
+
+import commonj.sdo.Type;
+import commonj.sdo.helper.TypeHelper;
+import commonj.sdo.helper.XSDHelper;
+
+
+public class DataTypeBaseTypeTestCase extends TestCase {
+ private final String TEST_MODEL = "/datatype.xsd";
+ private final String TEST_NAMESPACE = "http://www.example.com/datatype";
+
+ public void testSimpleSDOType() throws IOException
+ {
+ Type type = TypeHelper.INSTANCE.getType(TEST_NAMESPACE, "SimpleSDOType");
+ List baseTypes = type.getBaseTypes();
+ assertTrue(baseTypes.size() == 1);
+ }
+
+ public void testSimpleSDOTypeInstanceClass() throws IOException
+ {
+ Type type = TypeHelper.INSTANCE.getType(TEST_NAMESPACE, "SimpleSDOTypeInstanceClass");
+ List baseTypes = type.getBaseTypes();
+ assertTrue(baseTypes.size() == 0);
+ }
+
+ public void testSimpleSDOTypeExtendedInstanceClass() throws IOException
+ {
+ Type type = TypeHelper.INSTANCE.getType(TEST_NAMESPACE, "SimpleSDOTypeExtendedInstanceClass");
+ List baseTypes = type.getBaseTypes();
+ assertTrue(baseTypes.size() == 1);
+ }
+
+ public void setUp() throws Exception
+ {
+ URL url = getClass().getResource(TEST_MODEL);
+ InputStream inputStream = url.openStream();
+ XSDHelper.INSTANCE.define(inputStream, url.toString());
+ inputStream.close();
+ }
+
+}
diff --git a/branches/sdo-java-M2/sdo/impl/src/test/java/org/apache/tuscany/sdo/test/DateConversionTestCase.java b/branches/sdo-java-M2/sdo/impl/src/test/java/org/apache/tuscany/sdo/test/DateConversionTestCase.java
new file mode 100644
index 0000000000..ca345eb241
--- /dev/null
+++ b/branches/sdo-java-M2/sdo/impl/src/test/java/org/apache/tuscany/sdo/test/DateConversionTestCase.java
@@ -0,0 +1,366 @@
+/**
+ *
+ * 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.lang.reflect.Method;
+import java.util.Calendar;
+import java.util.Date;
+import java.util.GregorianCalendar;
+
+import junit.framework.TestCase;
+
+import commonj.sdo.helper.DataHelper;
+
+// DateConversionTestCase insures that the DataHelper conversions accurately
+// retain the information in the specified fields (e.g. month, day or year).
+// It also provides coverage for the DataHelper API.
+// Note that toDate is called each time Test.initialize() is called.
+
+public class DateConversionTestCase extends TestCase
+{
+ private static Calendar test_calendar;
+ private static Date test_date;
+ private static DataHelper data_helper;
+
+ private static final TestType TO_DATE_TIME = new TestType("toDateTime", new int [] {Calendar.YEAR, Calendar.MONTH,
+ Calendar.DAY_OF_MONTH, Calendar.HOUR_OF_DAY, Calendar.MINUTE, Calendar.SECOND, Calendar.MILLISECOND});
+ private static final TestType TO_DURATION = new TestType("toDuration", new int [] {Calendar.YEAR, Calendar.MONTH,
+ Calendar.DAY_OF_MONTH, Calendar.HOUR_OF_DAY, Calendar.MINUTE, Calendar.SECOND, Calendar.MILLISECOND});
+ private static final TestType TO_TIME = new TestType("toTime", new int [] {Calendar.HOUR_OF_DAY, Calendar.MINUTE,
+ Calendar.SECOND, Calendar.MILLISECOND});
+ private static final TestType TO_DAY = new TestType("toDay", new int[] {Calendar.DAY_OF_MONTH});
+ private static final TestType TO_MONTH = new TestType("toMonth", new int[] {Calendar.MONTH});
+ private static final TestType TO_MONTH_DAY = new TestType("toMonthDay", new int[] {Calendar.MONTH, Calendar.DAY_OF_MONTH});
+ private static final TestType TO_YEAR = new TestType("toYear", new int[] {Calendar.YEAR});
+ private static final TestType TO_YEAR_MONTH= new TestType("toYearMonth", new int[] {Calendar.YEAR, Calendar.MONTH});
+ private static final TestType TO_YEAR_MONTH_DAY = new TestType("toYearMonthDay", new int[] {Calendar.YEAR,
+ Calendar.MONTH, Calendar.DAY_OF_MONTH});
+
+ public DateConversionTestCase() throws Exception
+ {
+ data_helper = DataHelper.INSTANCE;
+ test_calendar = new GregorianCalendar();
+ test_calendar.setTime(new Date(System.currentTimeMillis()));
+ test_date = test_calendar.getTime();
+ }
+
+ private static class TestType
+ {
+ private static final Class[] DATE_CLASS_ARRAY = {Date.class};
+ private static final Class[] CALENDAR_CLASS_ARRAY = {Calendar.class};
+
+ Method date_method;
+ Method calendar_method;
+ int [] compare_fields;
+
+ public TestType (String method_name, int [] compare_fields)
+ {
+ try
+ {
+ this.date_method = DataHelper.class.getMethod(method_name, DATE_CLASS_ARRAY);
+ }
+ catch (NoSuchMethodException e)
+ {
+ this.date_method = null;
+ }
+
+ this.compare_fields = compare_fields;
+ try
+ {
+ this.calendar_method = DataHelper.class.getMethod(method_name, CALENDAR_CLASS_ARRAY);
+ }
+ catch (NoSuchMethodException e)
+ {
+ this.calendar_method = null;
+ }
+
+ }
+
+ public Method getDateMethod()
+ {
+ return this.date_method;
+ }
+
+ public Method getCalendarMethod()
+ {
+ return this.calendar_method;
+ }
+ }
+
+ private static class Test
+ {
+ String from_type;
+ Date from_date;
+ Calendar from_calendar;
+ Class expected_exception;
+
+ public Test ()
+ {
+ this.from_date = null;
+ this.from_calendar = null;
+ expected_exception = null;
+ }
+
+ public void initialize (TestType from_type)
+ {
+ this.from_type = from_type.getDateMethod().getName();
+
+ try
+ {
+ String date_string = (String) from_type.getDateMethod().invoke(data_helper, new Object[] {test_date});
+ this.from_date = data_helper.toDate(date_string);
+ date_string = (String) from_type.getCalendarMethod().invoke(data_helper, new Object[] {test_calendar});
+ this.from_calendar = data_helper.toCalendar(date_string);
+ }
+ catch (Exception e)
+ {
+ this.from_date = null;
+ this.from_calendar = null;
+ }
+
+ }
+
+ // This method is needed because there is not a toDate(Date) method in DataHelper.
+
+ public void initializeToDate()
+ {
+ this.from_calendar = test_calendar;
+ this.from_date = test_date;
+ this.from_type = "toDate";
+ }
+
+ public void attemptConversion (TestType to_type) throws Exception
+ {
+ executeConversion(to_type.getDateMethod(), new Object[] {this.from_date}, to_type.compare_fields);
+ executeConversion(to_type.getCalendarMethod(), new Object[] {this.from_calendar}, to_type.compare_fields);
+ }
+
+ private void executeConversion (Method conversion, Object[] parm, int [] compare_fields) throws Exception
+ {
+ String result;
+
+ try
+ {
+ result = (String) conversion.invoke(data_helper, parm);
+ }
+ catch (Exception e)
+ {
+ System.err.println("An unexpected exception was thrown while calling " + conversion.getName() +
+ " after initializing with " + this.from_type + ".");
+ throw e;
+ }
+
+ assertTrue("The expected value did not result when calling " + conversion.getName() +
+ " after initializing with " + this.from_type + ".", compareFields(parm[0], result, compare_fields));
+ }
+
+ private boolean compareFields(Object compare_to, String output, int [] compare_fields)
+ {
+ Calendar result = data_helper.toCalendar(output);
+ Calendar expected;
+
+ if (compare_to instanceof Calendar)
+ expected = (GregorianCalendar) test_calendar;
+ else
+ {
+ expected = new GregorianCalendar();
+ expected.setTime((Date) test_date);
+ }
+
+ for (int i = 0; i < compare_fields.length; i++)
+ {
+ if (expected.get(compare_fields[i]) != result.get(compare_fields[i]))
+ return false;
+ }
+ return true;
+ }
+
+ }
+
+ /*
+ public void testConversionsFromDay() throws Exception
+ {
+ Test FromDay = new Test();
+
+ FromDay.initialize(TO_DAY);
+
+ FromDay.attemptConversion(TO_DAY);
+ }
+
+ public void testConversionsFromDate() throws Exception
+ {
+ Test FromDate = new Test();
+
+ FromDate.initializeToDate();
+
+ FromDate.attemptConversion(TO_DATE_TIME);
+ FromDate.attemptConversion(TO_DURATION);
+ FromDate.attemptConversion(TO_TIME);
+ FromDate.attemptConversion(TO_DAY);
+ FromDate.attemptConversion(TO_MONTH);
+ FromDate.attemptConversion(TO_MONTH_DAY);
+ FromDate.attemptConversion(TO_YEAR);
+ FromDate.attemptConversion(TO_YEAR_MONTH);
+ FromDate.attemptConversion(TO_YEAR_MONTH_DAY);
+ }
+
+ public void testConversionsFromDateTime() throws Exception
+ {
+ Test FromDateTime = new Test();
+
+ FromDateTime.initialize(TO_DATE_TIME);
+
+ FromDateTime.attemptConversion(TO_DATE_TIME);
+ FromDateTime.attemptConversion(TO_DURATION);
+ FromDateTime.attemptConversion(TO_TIME);
+ FromDateTime.attemptConversion(TO_DAY);
+ FromDateTime.attemptConversion(TO_MONTH);
+ FromDateTime.attemptConversion(TO_MONTH_DAY);
+ FromDateTime.attemptConversion(TO_YEAR);
+ FromDateTime.attemptConversion(TO_YEAR_MONTH);
+ FromDateTime.attemptConversion(TO_YEAR_MONTH_DAY);
+ }
+
+ public void testConversionsFromDuration() throws Exception
+ {
+ Test FromDuration = new Test();
+
+ FromDuration.initialize(TO_DURATION);
+
+ FromDuration.attemptConversion(TO_DURATION);
+ FromDuration.attemptConversion(TO_DATE_TIME);
+ FromDuration.attemptConversion(TO_TIME);
+ FromDuration.attemptConversion(TO_DAY);
+ FromDuration.attemptConversion(TO_MONTH);
+ FromDuration.attemptConversion(TO_MONTH_DAY);
+ FromDuration.attemptConversion(TO_YEAR);
+ FromDuration.attemptConversion(TO_YEAR_MONTH);
+ FromDuration.attemptConversion(TO_YEAR_MONTH_DAY);
+ }
+
+ public void testConversionsFromMonth() throws Exception
+ {
+ Test FromMonth = new Test();
+
+ FromMonth.initialize(TO_MONTH);
+
+ FromMonth.attemptConversion(TO_MONTH);
+ }
+
+ public void testConversionsFromMonthDay() throws Exception
+ {
+ Test FromMonthDay = new Test();
+
+ FromMonthDay.initialize(TO_MONTH_DAY);
+ FromMonthDay.attemptConversion(TO_MONTH_DAY);
+ FromMonthDay.attemptConversion(TO_MONTH);
+ FromMonthDay.attemptConversion(TO_DAY);
+ }
+
+ public void testConversionsFromTime() throws Exception
+ {
+ Test FromTime = new Test();
+
+ FromTime.initialize(TO_TIME);
+
+ FromTime.attemptConversion(TO_TIME);
+ }
+
+ public void testConversionsFromYear() throws Exception
+ {
+ Test FromYear = new Test();
+
+ FromYear.initialize(TO_YEAR);
+
+ FromYear.attemptConversion(TO_YEAR);
+ }
+
+ public void testConversionsFromYearMonth() throws Exception
+ {
+ Test FromYearMonth = new Test();
+
+ FromYearMonth.initialize(TO_YEAR_MONTH);
+
+ FromYearMonth.attemptConversion(TO_YEAR_MONTH);
+ FromYearMonth.attemptConversion(TO_MONTH);
+ FromYearMonth.attemptConversion(TO_YEAR);
+ }
+
+ public void testConversionsFromYearMonthDay() throws Exception
+ {
+ Test FromYearMonthDay = new Test();
+
+ FromYearMonthDay.initialize(TO_YEAR_MONTH_DAY);
+
+ FromYearMonthDay.attemptConversion(TO_YEAR_MONTH_DAY);
+ FromYearMonthDay.attemptConversion(TO_YEAR_MONTH);
+ FromYearMonthDay.attemptConversion(TO_MONTH_DAY);
+ FromYearMonthDay.attemptConversion(TO_YEAR);
+ FromYearMonthDay.attemptConversion(TO_MONTH);
+ FromYearMonthDay.attemptConversion(TO_DAY);
+ }
+ */
+
+ // Ensure that strings that should be recognized by toDate do not
+ // result in a null Date value.
+
+ public void testToDateFormats() throws Exception
+ {
+ String[] validStrings =
+ {
+ "2006-03-31T03:30:45.123Z",
+ "-2006-03-31T03:30:45.1Z",
+ "2006-03-31T03:30:45Z",
+ "2006-03-31T03:30:45.123",
+ "2006-03-31T03:30:45.1",
+ "-2006-03-31T03:30:45",
+ "2006-03-31T03:30:45.123 EDT",
+ "2006-03-31T03:30:45.1 EDT",
+ "2006-03-31T03:30:45 EDT",
+ "---05 PST",
+ "---04",
+ "--12 GMT",
+ "--12",
+ "--08-08 EST",
+ "--08-08",
+ "1976-08-08 PDT",
+ "1976-08-08",
+ "88-12 CST",
+ "1988-12",
+ "2005 CDT",
+ "1999",
+ "P2006Y 08M 10D T 12H 24M 07S",
+ "P2006Y 10D T 12H",
+ "-P2006Y 08M 10D T 07S.2",
+ "P08M 10D T 07H",
+ "-P 04M 10DT12H 24S.88",
+ "PT12H"
+ };
+
+ for (int i = 0; i < validStrings.length; i++)
+ {
+ assertNotNull("DataHelper.toData() should not return null for '" + validStrings[i] + "'.",
+ data_helper.toDate(validStrings[i]));
+ }
+
+ }
+
+}
+
diff --git a/branches/sdo-java-M2/sdo/impl/src/test/java/org/apache/tuscany/sdo/test/DefineOpenContentPropertyTestCase.java b/branches/sdo-java-M2/sdo/impl/src/test/java/org/apache/tuscany/sdo/test/DefineOpenContentPropertyTestCase.java
new file mode 100644
index 0000000000..e1a3e2b781
--- /dev/null
+++ b/branches/sdo-java-M2/sdo/impl/src/test/java/org/apache/tuscany/sdo/test/DefineOpenContentPropertyTestCase.java
@@ -0,0 +1,123 @@
+/**
+ *
+ * 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 org.apache.tuscany.sdo.helper.TypeHelperImpl;
+import org.apache.tuscany.sdo.util.SDOUtil;
+
+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 DefineOpenContentPropertyTestCase extends TestCase {
+ private final String TEST_MODEL = "/open.xsd";
+ private final String TEST_NAMESPACE = "http://www.example.com/open";
+ private final String TEST_DATA = "/openContentProperty.xml";
+
+ private TypeHelperImpl typeHelper;
+ private XSDHelper xsdHelper;
+ private XMLHelper xmlHelper;
+ private DataFactory dataFactory;
+
+ public void testDefineOpenContentProperty() throws IOException {
+ Type quoteType = typeHelper.getType(TEST_NAMESPACE, "OpenQuote");
+ DataObject quote = dataFactory.create(quoteType);
+
+ quote.setString("symbol", "s1");
+
+ Property companyProperty = typeHelper.getOpenContentProperty(TEST_NAMESPACE, "company");
+ DataObject company = quote.createDataObject(companyProperty);
+ company.setString("name", "FlyByNightTechnology");
+
+ Property priceProperty = typeHelper.getOpenContentProperty(TEST_NAMESPACE, "price");
+ quote.getList(priceProperty).add(new BigDecimal("1000.0"));
+
+ // Define a new SDO open content property with simple type
+ DataObject p = dataFactory.create("commonj.sdo", "Property");
+ p.set("type", typeHelper.getType("commonj.sdo", "Decimal"));
+ p.set("name", "highPrice");
+ Property highPrice = typeHelper.defineOpenContentProperty(TEST_NAMESPACE, p);
+
+ quote.setBigDecimal(highPrice, new BigDecimal("1100.0"));
+
+ // Define a new SDO open content property with complex type
+ DataObject mutualFundQuotePropertyDef = dataFactory.create("commonj.sdo", "Property");
+ mutualFundQuotePropertyDef.set("type", quoteType);
+ mutualFundQuotePropertyDef.set("name", "mutualFundQuote");
+ mutualFundQuotePropertyDef.setBoolean("containment", true);
+ Property mutualFundQuoteProperty = typeHelper.defineOpenContentProperty(TEST_NAMESPACE, mutualFundQuotePropertyDef);
+
+ DataObject mutualFundQuote = quote.createDataObject(mutualFundQuoteProperty);
+ mutualFundQuote.setString("symbol", "mutual-1");
+
+ ByteArrayOutputStream baos = new ByteArrayOutputStream();
+ xmlHelper.save(quote, TEST_NAMESPACE, "openStockQuote", baos);
+
+ assertTrue(TestUtil.equalXmlFiles(new ByteArrayInputStream(baos.toByteArray()), getClass().getResource(TEST_DATA)));
+
+ // validate existing property condition
+ Property duplicateProp = typeHelper.defineOpenContentProperty(TEST_NAMESPACE, p);
+ assertTrue(highPrice.equals(duplicateProp));
+
+ // validate error condition, where new property exists with different type
+ boolean errorCondition = false;
+ try
+ {
+ p = dataFactory.create("commonj.sdo", "Property");
+ p.set("type", typeHelper.getType("commonj.sdo", "String"));
+ p.set("name", "highPrice");
+ highPrice = typeHelper.defineOpenContentProperty(TEST_NAMESPACE, p);
+ }
+ catch( IllegalArgumentException ex )
+ {
+ errorCondition = true;
+ }
+ assertTrue(errorCondition);
+ }
+
+ protected void setUp() throws Exception {
+ super.setUp();
+
+ typeHelper = (TypeHelperImpl)SDOUtil.createTypeHelper();
+ xsdHelper = SDOUtil.createXSDHelper(typeHelper);
+ xmlHelper = SDOUtil.createXMLHelper(typeHelper);
+ dataFactory = SDOUtil.createDataFactory(typeHelper);
+
+ // Populate the meta data for the test (Stock Quote) model
+ URL url = getClass().getResource(TEST_MODEL);
+ InputStream inputStream = url.openStream();
+ xsdHelper.define(inputStream, url.toString());
+ inputStream.close();
+ }
+}
diff --git a/branches/sdo-java-M2/sdo/impl/src/test/java/org/apache/tuscany/sdo/test/DefineTypeTestCase.java b/branches/sdo-java-M2/sdo/impl/src/test/java/org/apache/tuscany/sdo/test/DefineTypeTestCase.java
new file mode 100644
index 0000000000..259820b2f6
--- /dev/null
+++ b/branches/sdo-java-M2/sdo/impl/src/test/java/org/apache/tuscany/sdo/test/DefineTypeTestCase.java
@@ -0,0 +1,627 @@
+/**
+ *
+ * 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.math.BigDecimal;
+
+import junit.framework.TestCase;
+
+import org.apache.tuscany.sdo.helper.TypeHelperImpl;
+import org.apache.tuscany.sdo.util.SDOUtil;
+
+import commonj.sdo.DataObject;
+import commonj.sdo.Property;
+import commonj.sdo.Sequence;
+import commonj.sdo.Type;
+import commonj.sdo.helper.DataFactory;
+import commonj.sdo.helper.TypeHelper;
+import commonj.sdo.helper.XMLDocument;
+import commonj.sdo.helper.XMLHelper;
+import commonj.sdo.helper.XSDHelper;
+
+public class DefineTypeTestCase extends TestCase
+{
+ private static final String CUSTOMER1_XML = "/customer1.xml";
+ private static final String CUSTOMER2_XML = "/customer2.xml";
+ private static final String OPEN_XML = "/open2.xml";
+ private static final String MIXED_XML = "/mixed2.xml";
+ private static final String MIXEDOPEN_XML = "/mixedopen.xml";
+
+ public void testDefineTypeRoundTrip() throws Exception {
+ TypeHelper types = SDOUtil.createTypeHelper();
+ DataFactory factory = SDOUtil.createDataFactory(types);
+ XMLHelper xmlHelper = SDOUtil.createXMLHelper(types);
+
+ Type intType = types.getType("commonj.sdo", "Int");
+ Type stringType = types.getType("commonj.sdo", "String");
+
+ // 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);
+
+ ByteArrayOutputStream baos = new ByteArrayOutputStream();
+ xmlHelper.save(customerType, "commonj.sdo", "type", baos);
+
+ ByteArrayInputStream bais = new ByteArrayInputStream(baos.toByteArray());
+ XMLDocument xdoc = xmlHelper.load(bais);
+
+ customerType = xdoc.getRootObject();
+
+ // now define the Customer type so that customers can be made
+ types.define(customerType);
+
+ DataObject customer1 = factory.create("http://example.com/customer",
+ "Customer");
+
+ customer1.setInt("custNum", 1);
+ customer1.set("firstName", "John");
+ customer1.set("lastName", "Adams");
+ DataObject customer2 = factory.create("http://example.com/customer",
+ "Customer");
+ customer2.setInt("custNum", 2);
+ customer2.set("firstName", "Jeremy");
+ customer2.set("lastName", "Pavick");
+
+ assertNotNull(customer1);
+ Type type = customer1.getType();
+ assertNotNull(type.getProperty("custNum"));
+ assertNotNull(type.getProperty("firstName"));
+ assertNotNull(type.getProperty("lastName"));
+ assertEquals(type.getProperty("custNum").getType(), intType);
+ assertEquals(type.getProperty("firstName").getType(), stringType);
+ assertEquals(type.getProperty("lastName").getType(), stringType);
+
+ assertNotNull(customer2);
+ type = customer2.getType();
+ assertNotNull(type.getProperty("custNum"));
+ assertNotNull(type.getProperty("firstName"));
+ assertNotNull(type.getProperty("lastName"));
+ assertEquals(type.getProperty("custNum").getType(), intType);
+ assertEquals(type.getProperty("firstName").getType(), stringType);
+ assertEquals(type.getProperty("lastName").getType(), stringType);
+
+ baos = new ByteArrayOutputStream();
+ xmlHelper.save(
+ customer1,
+ "http://example.com/customer",
+ "Customer", baos);
+ assertTrue(
+ TestUtil.equalXmlFiles(
+ new ByteArrayInputStream(baos.toByteArray()),
+ getClass().getResource(CUSTOMER1_XML)));
+
+ baos = new ByteArrayOutputStream();
+ xmlHelper.save(
+ customer2,
+ "http://example.com/customer",
+ "Customer", baos);
+ assertTrue(
+ TestUtil.equalXmlFiles(
+ new ByteArrayInputStream(baos.toByteArray()),
+ getClass().getResource(CUSTOMER2_XML)));
+ }
+
+ public void testDefineType() throws Exception
+ {
+ TypeHelper types = SDOUtil.createTypeHelper();
+ DataFactory factory = SDOUtil.createDataFactory(types);
+ XMLHelper xmlHelper = SDOUtil.createXMLHelper(types);
+
+ Type intType = types.getType("commonj.sdo", "Int");
+ Type stringType = types.getType("commonj.sdo", "String");
+
+ // 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);
+
+ // now define the Customer type so that customers can be made
+ types.define(customerType);
+
+ DataObject customer1 = factory.create("http://example.com/customer",
+ "Customer");
+ customer1.setInt("custNum", 1);
+ customer1.set("firstName", "John");
+ customer1.set("lastName", "Adams");
+ DataObject customer2 = factory.create("http://example.com/customer",
+ "Customer");
+ customer2.setInt("custNum", 2);
+ customer2.set("firstName", "Jeremy");
+ customer2.set("lastName", "Pavick");
+
+ assertNotNull(customer1);
+ Type type = customer1.getType();
+ assertNotNull(type.getProperty("custNum"));
+ assertNotNull(type.getProperty("firstName"));
+ assertNotNull(type.getProperty("lastName"));
+ assertEquals(type.getProperty("custNum").getType(), intType);
+ assertEquals(type.getProperty("firstName").getType(), stringType);
+ assertEquals(type.getProperty("lastName").getType(), stringType);
+
+ assertNotNull(customer2);
+ type = customer2.getType();
+ assertNotNull(type.getProperty("custNum"));
+ assertNotNull(type.getProperty("firstName"));
+ assertNotNull(type.getProperty("lastName"));
+ assertEquals(type.getProperty("custNum").getType(), intType);
+ assertEquals(type.getProperty("firstName").getType(), stringType);
+ assertEquals(type.getProperty("lastName").getType(), stringType);
+
+ ByteArrayOutputStream baos = new ByteArrayOutputStream();
+ xmlHelper.save(
+ customer1,
+ "http://example.com/customer",
+ "Customer", baos);
+ assertTrue(
+ TestUtil.equalXmlFiles(
+ new ByteArrayInputStream(baos.toByteArray()),
+ getClass().getResource(CUSTOMER1_XML)));
+
+ baos = new ByteArrayOutputStream();
+ xmlHelper.save(
+ customer2,
+ "http://example.com/customer",
+ "Customer", baos);
+ assertTrue(
+ TestUtil.equalXmlFiles(
+ new ByteArrayInputStream(baos.toByteArray()),
+ getClass().getResource(CUSTOMER2_XML)));
+ }
+
+ public void testDefineDataType() throws Exception
+ {
+ TypeHelper types = SDOUtil.createTypeHelper();
+ DataFactory factory = SDOUtil.createDataFactory(types);
+ XSDHelper xsdHelper = SDOUtil.createXSDHelper(types);
+ XMLHelper xmlHelper = SDOUtil.createXMLHelper(types);
+
+ Property javaClassProperty = xsdHelper.getGlobalProperty("commonj.sdo/java", "javaClass", false);
+
+ // create a data types
+ DataObject intType = factory.create("commonj.sdo", "Type");
+ intType.set("uri", "http://example.com/customer");
+ intType.set("name", "MyIntType");
+ intType.setBoolean("dataType", true);
+ intType.set(javaClassProperty, "int");
+
+ DataObject stringType = factory.create("commonj.sdo", "Type");
+ stringType.set("uri", "http://example.com/customer");
+ stringType.set("name", "MyStringType");
+ stringType.setBoolean("dataType", true);
+ stringType.set(javaClassProperty, "java.lang.String");
+
+ // 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);
+
+ // now define the Customer type so that customers can be made
+ types.define(customerType);
+
+ DataObject customer1 = factory.create("http://example.com/customer",
+ "Customer");
+
+ customer1.setInt("custNum", 1);
+ customer1.set("firstName", "John");
+ customer1.set("lastName", "Adams");
+ DataObject customer2 = factory.create("http://example.com/customer",
+ "Customer");
+ customer2.setInt("custNum", 2);
+ customer2.set("firstName", "Jeremy");
+ customer2.set("lastName", "Pavick");
+
+ assertNotNull(customer1);
+ Type type = customer1.getType();
+ assertNotNull(type.getProperty("custNum"));
+ assertNotNull(type.getProperty("firstName"));
+ assertNotNull(type.getProperty("lastName"));
+ assertNotNull(type.getProperty("custNum"));
+ assertNotNull(type.getProperty("firstName"));
+ assertNotNull(type.getProperty("lastName"));
+
+ type = type.getProperty("custNum").getType();
+ assertEquals(type.getURI(), "http://example.com/customer");
+ assertEquals(type.getName(), "MyIntType");
+ assertTrue(type.isDataType());
+
+ assertNotNull(customer2);
+ type = customer2.getType();
+ assertNotNull(type.getProperty("custNum"));
+ assertNotNull(type.getProperty("firstName"));
+ assertNotNull(type.getProperty("lastName"));
+ assertNotNull(type.getProperty("custNum"));
+ assertNotNull(type.getProperty("firstName"));
+ assertNotNull(type.getProperty("lastName"));
+
+ ByteArrayOutputStream baos = new ByteArrayOutputStream();
+ xmlHelper.save(
+ customer1,
+ "http://example.com/customer",
+ "Customer", baos);
+ assertTrue(
+ TestUtil.equalXmlFiles(
+ new ByteArrayInputStream(baos.toByteArray()),
+ getClass().getResource(CUSTOMER1_XML)));
+
+ baos = new ByteArrayOutputStream();
+ xmlHelper.save(
+ customer2,
+ "http://example.com/customer",
+ "Customer", baos);
+ assertTrue(
+ TestUtil.equalXmlFiles(
+ new ByteArrayInputStream(baos.toByteArray()),
+ getClass().getResource(CUSTOMER2_XML)));
+ }
+
+ public void testFastDefineType() throws Exception
+ {
+ TypeHelper types = SDOUtil.createTypeHelper();
+ DataFactory factory = SDOUtil.createDataFactory(types);
+ XMLHelper xmlHelper = SDOUtil.createXMLHelper(types);
+
+ Type intType = types.getType("commonj.sdo", "Int");
+ Type stringType = types.getType("commonj.sdo", "String");
+
+ // create a new Type for Customers
+ Type customerType = SDOUtil.createType(types, "http://example.com/customer", "Customer", false);
+
+ // create a customer number property
+ SDOUtil.createProperty(customerType, "custNum", intType);
+
+ // create a first name property
+ SDOUtil.createProperty(customerType, "firstName", stringType);
+
+ // create a last name property
+ SDOUtil.createProperty(customerType, "lastName", stringType);
+
+ DataObject customer1 = factory.create("http://example.com/customer",
+ "Customer");
+ customer1.setInt("custNum", 1);
+ customer1.set("firstName", "John");
+ customer1.set("lastName", "Adams");
+ DataObject customer2 = factory.create("http://example.com/customer",
+ "Customer");
+ customer2.setInt("custNum", 2);
+ customer2.set("firstName", "Jeremy");
+ customer2.set("lastName", "Pavick");
+
+ assertNotNull(customer1);
+ Type type = customer1.getType();
+ assertNotNull(type.getProperty("custNum"));
+ assertNotNull(type.getProperty("firstName"));
+ assertNotNull(type.getProperty("lastName"));
+ assertEquals(type.getProperty("custNum").getType(), intType);
+ assertEquals(type.getProperty("firstName").getType(), stringType);
+ assertEquals(type.getProperty("lastName").getType(), stringType);
+
+ assertNotNull(customer2);
+ type = customer2.getType();
+ assertNotNull(type.getProperty("custNum"));
+ assertNotNull(type.getProperty("firstName"));
+ assertNotNull(type.getProperty("lastName"));
+ assertEquals(type.getProperty("custNum").getType(), intType);
+ assertEquals(type.getProperty("firstName").getType(), stringType);
+ assertEquals(type.getProperty("lastName").getType(), stringType);
+
+ ByteArrayOutputStream baos = new ByteArrayOutputStream();
+ xmlHelper.save(
+ customer1,
+ "http://example.com/customer",
+ "Customer", baos);
+ assertTrue(
+ TestUtil.equalXmlFiles(
+ new ByteArrayInputStream(baos.toByteArray()),
+ getClass().getResource(CUSTOMER1_XML)));
+
+ baos = new ByteArrayOutputStream();
+ xmlHelper.save(
+ customer2,
+ "http://example.com/customer",
+ "Customer", baos);
+ assertTrue(
+ TestUtil.equalXmlFiles(
+ new ByteArrayInputStream(baos.toByteArray()),
+ getClass().getResource(CUSTOMER2_XML)));
+ }
+
+ public void testDefineSequencedType() throws Exception
+ {
+
+ TypeHelper types = SDOUtil.createTypeHelper();
+ DataFactory factory = SDOUtil.createDataFactory(types);
+ XMLHelper xmlHelper = SDOUtil.createXMLHelper(types);
+
+ Type stringType = types.getType("commonj.sdo", "String");
+ Type decimalType = types.getType("commonj.sdo", "Decimal");
+
+ // Define a new mixed type - MixedQuote
+ DataObject mixedQuoteType = factory.create("commonj.sdo", "Type");
+ mixedQuoteType.set("uri", "http://www.example.com/mixed");
+ mixedQuoteType.set("name", "MixedQuote");
+ mixedQuoteType.set("sequenced", Boolean.TRUE);
+
+ DataObject symbolProperty = mixedQuoteType.createDataObject("property");
+ symbolProperty.set("name", "symbol");
+ symbolProperty.set("type", stringType);
+
+ DataObject companyNameProperty = mixedQuoteType.createDataObject("property");
+ companyNameProperty.set("name", "companyName");
+ companyNameProperty.set("type", stringType);
+
+ DataObject priceProperty = mixedQuoteType.createDataObject("property");
+ priceProperty.set("name", "price");
+ priceProperty.set("type", decimalType);
+
+ DataObject quotesProperty = mixedQuoteType.createDataObject("property");
+ quotesProperty.set("name", "quotes");
+ quotesProperty.set("type", mixedQuoteType);
+ quotesProperty.set("many", Boolean.TRUE);
+ quotesProperty.set("containment", Boolean.TRUE);
+
+ types.define(mixedQuoteType);
+
+ DataObject quote = factory.create("http://www.example.com/mixed", "MixedQuote");
+
+ assertTrue(quote.getType().isSequenced());
+
+ 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.save(quote, "http://www.example.com/mixed", "mixedStockQuote", baos);
+ assertTrue(TestUtil.equalXmlFiles(new ByteArrayInputStream(baos.toByteArray()), getClass().getResource(MIXED_XML)));
+ }
+
+ public void testDefineSequencedOpenType() throws Exception
+ {
+
+ TypeHelper types = SDOUtil.createTypeHelper();
+ DataFactory factory = SDOUtil.createDataFactory(types);
+ XMLHelper xmlHelper = SDOUtil.createXMLHelper(types);
+
+ Type stringType = types.getType("commonj.sdo", "String");
+ Type decimalType = types.getType("commonj.sdo", "Decimal");
+
+ // Define a new mixed type - MixedQuote
+ DataObject mixedQuoteType = factory.create("commonj.sdo", "Type");
+ mixedQuoteType.set("uri", "http://www.example.com/mixed");
+ mixedQuoteType.set("name", "MixedOpenQuote");
+ mixedQuoteType.set("sequenced", Boolean.TRUE);
+ mixedQuoteType.set("open", Boolean.TRUE);
+
+// DataObject symbolProperty = mixedQuoteType.createDataObject("property");
+// symbolProperty.set("name", "symbol");
+// symbolProperty.set("type", stringType);
+
+ DataObject companyNameProperty = mixedQuoteType.createDataObject("property");
+ companyNameProperty.set("name", "companyName");
+ companyNameProperty.set("type", stringType);
+
+ DataObject priceProperty = mixedQuoteType.createDataObject("property");
+ priceProperty.set("name", "price");
+ priceProperty.set("type", decimalType);
+
+ DataObject quotesProperty = mixedQuoteType.createDataObject("property");
+ quotesProperty.set("name", "quotes");
+ quotesProperty.set("type", mixedQuoteType);
+ quotesProperty.set("many", Boolean.TRUE);
+ quotesProperty.set("containment", Boolean.TRUE);
+
+ types.define(mixedQuoteType);
+
+ // Define a global type
+ DataObject globalType = factory.create("commonj.sdo", "Type");
+ globalType.set("uri", "http://www.example.com/open");
+ // Don't set the type's name - null is used for types containing global properties.
+
+ DataObject symbolProperty = globalType.createDataObject("property");
+ symbolProperty.set("name", "symbol");
+ symbolProperty.set("type", stringType);
+ symbolProperty.set("containment", Boolean.TRUE);
+
+ types.define(globalType);
+
+ DataObject quote = factory.create("http://www.example.com/mixed", "MixedOpenQuote");
+
+ assertTrue(quote.getType().isSequenced());
+
+ Sequence sequence = quote.getSequence();
+
+ sequence.add("\n ");
+
+ Type definedGlobalType = types.getType("http://www.example.com/open", null);
+
+ Property definedSymbolProperty = definedGlobalType.getProperty("symbol");
+ quote.setString(definedSymbolProperty, "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.save(quote, "http://www.example.com/mixed", "mixedOpenStockQuote", baos);
+ assertTrue(TestUtil.equalXmlFiles(new ByteArrayInputStream(baos.toByteArray()), getClass().getResource(MIXEDOPEN_XML)));
+ }
+
+
+ public void testDefineOpenType() throws Exception
+ {
+ TypeHelperImpl types = (TypeHelperImpl)SDOUtil.createTypeHelper();
+ DataFactory factory = SDOUtil.createDataFactory(types);
+ XMLHelper xmlHelper = SDOUtil.createXMLHelper(types);
+
+ Type stringType = types.getType("commonj.sdo", "String");
+ Type decimalType = types.getType("commonj.sdo", "Decimal");
+
+ // Define a new open type - OpenQuote
+ DataObject openQuoteType = factory.create("commonj.sdo", "Type");
+ openQuoteType.set("uri", "http://www.example.com/open");
+ openQuoteType.set("name", "OpenQuote");
+ openQuoteType.set("open", Boolean.TRUE);
+ openQuoteType.setBoolean("open", true);
+
+ types.define(openQuoteType);
+
+ // Define new type - CompanyType
+ DataObject companyType = factory.create("commonj.sdo", "Type");
+ companyType.set("uri", "http://www.example.com/open");
+ companyType.set("name", "CompanyType");
+
+ // Create CompanyType property - "name"
+ DataObject nameProperty = companyType.createDataObject("property");
+ nameProperty.set("name", "name");
+ nameProperty.set("type", stringType);
+ nameProperty.set("containment", Boolean.TRUE);
+
+ types.define(companyType);
+
+ // Define open content property - company
+ DataObject symbolProperty = factory.create("commonj.sdo", "Property");
+ symbolProperty.set("name", "symbol");
+ symbolProperty.set("type", stringType);
+ types.defineOpenContentProperty("http://www.example.com/open", symbolProperty);
+
+ // Define open content property - company
+ DataObject companyProperty = factory.create("commonj.sdo", "Property");
+ companyProperty.set("name", "company");
+ companyProperty.set("type", companyType);
+ companyProperty.set("containment", Boolean.TRUE);
+ types.defineOpenContentProperty("http://www.example.com/open", companyProperty);
+
+ // Define open content property - price
+ DataObject priceProperty = factory.create("commonj.sdo", "Property");
+ priceProperty.set("name", "price");
+ priceProperty.set("type", decimalType);
+ types.defineOpenContentProperty("http://www.example.com/open", priceProperty);
+
+ // Create DataObject instances
+ DataObject openQuote = factory.create("http://www.example.com/open", "OpenQuote");
+ assertTrue(openQuote.getType().isOpen());
+
+ Property definedSymbolProperty = types.getOpenContentProperty("http://www.example.com/open", "symbol");
+ openQuote.set(definedSymbolProperty, "s1");
+
+ Property definedCompanyProperty = types.getOpenContentProperty("http://www.example.com/open", "company");
+ DataObject company = openQuote.createDataObject(definedCompanyProperty);
+ company.setString("name", "FlyByNightTechnology");
+
+ Property definedPriceProperty = types.getOpenContentProperty("http://www.example.com/open", "price");
+ openQuote.setBigDecimal(definedPriceProperty, new BigDecimal("1000.0"));
+
+ assertEquals(definedPriceProperty.getType(), decimalType);
+
+ ByteArrayOutputStream baos = new ByteArrayOutputStream();
+ xmlHelper.save(
+ openQuote,
+ "http://www.example.com/open",
+ "openStockQuote", baos);
+ assertTrue(
+ TestUtil.equalXmlFiles(
+ new ByteArrayInputStream(baos.toByteArray()),
+ getClass().getResource(OPEN_XML)));
+ }
+
+}
diff --git a/branches/sdo-java-M2/sdo/impl/src/test/java/org/apache/tuscany/sdo/test/IsManyTestCase.java b/branches/sdo-java-M2/sdo/impl/src/test/java/org/apache/tuscany/sdo/test/IsManyTestCase.java
new file mode 100644
index 0000000000..1eef4ea657
--- /dev/null
+++ b/branches/sdo-java-M2/sdo/impl/src/test/java/org/apache/tuscany/sdo/test/IsManyTestCase.java
@@ -0,0 +1,65 @@
+/**
+ *
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+package org.apache.tuscany.sdo.test;
+
+import java.io.InputStream;
+import java.net.URL;
+
+import org.apache.tuscany.sdo.util.SDOUtil;
+
+import junit.framework.TestCase;
+
+import commonj.sdo.*;
+import commonj.sdo.helper.*;
+
+public class IsManyTestCase extends TestCase {
+ private final String TEST_MODEL = "/open.xsd";
+ private final String TEST_MODEL1ANY = "/open1any.xsd";
+ private final String TEST_NAMESPACE = "http://www.example.com/open";
+ private final String TEST_NAMESPACE1ANY = "http://www.example.com/open1any";
+
+ public void testIsMany() {
+ Property priceProperty = XSDHelper.INSTANCE.getGlobalProperty(TEST_NAMESPACE, "price", true);
+
+ Type quoteType = TypeHelper.INSTANCE.getType(TEST_NAMESPACE, "OpenQuote");
+ DataObject quote = DataFactory.INSTANCE.create(quoteType);
+ assertTrue( SDOUtil.isMany(priceProperty, quote));
+
+ quoteType = TypeHelper.INSTANCE.getType(TEST_NAMESPACE1ANY, "OpenQuote");
+ quote = DataFactory.INSTANCE.create(quoteType);
+ assertFalse( SDOUtil.isMany(priceProperty, quote));
+ }
+
+ protected void setUp() throws Exception {
+ super.setUp();
+
+ // Populate the meta data for the test (Stock Quote) model
+ URL url = getClass().getResource(TEST_MODEL);
+ InputStream inputStream = url.openStream();
+ XSDHelper.INSTANCE.define(inputStream, url.toString());
+ inputStream.close();
+
+ // Populate the meta data for the test (Stock Quote) model with maxOccurs=1 <any>
+ url = getClass().getResource(TEST_MODEL1ANY);
+ inputStream = url.openStream();
+ XSDHelper.INSTANCE.define(inputStream, url.toString());
+ inputStream.close();
+ }
+} \ No newline at end of file
diff --git a/branches/sdo-java-M2/sdo/impl/src/test/java/org/apache/tuscany/sdo/test/JiraTestCases.java b/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/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/branches/sdo-java-M2/sdo/impl/src/test/java/org/apache/tuscany/sdo/test/MixedTypeTestCase.java b/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/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/branches/sdo-java-M2/sdo/impl/src/test/java/org/apache/tuscany/sdo/test/OpenTypeTestCase.java b/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/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/branches/sdo-java-M2/sdo/impl/src/test/java/org/apache/tuscany/sdo/test/SerializeTypesTestCase.java b/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/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/branches/sdo-java-M2/sdo/impl/src/test/java/org/apache/tuscany/sdo/test/SimpleCopyTestCase.java b/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/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/branches/sdo-java-M2/sdo/impl/src/test/java/org/apache/tuscany/sdo/test/SimpleDynamicTestCase.java b/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/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/branches/sdo-java-M2/sdo/impl/src/test/java/org/apache/tuscany/sdo/test/SimpleEqualityTestCase.java b/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/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/branches/sdo-java-M2/sdo/impl/src/test/java/org/apache/tuscany/sdo/test/SubstitutionValuesTestCase.java b/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/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/branches/sdo-java-M2/sdo/impl/src/test/java/org/apache/tuscany/sdo/test/TestUtil.java b/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/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<length; i++)
+ {
+ Node node = nodeList.item(i);
+ nodes.add(node);
+ getAllNodes(node.getChildNodes(), nodes);
+ } // for
+ }
+
+ private static boolean equalNamedNodeMap(NamedNodeMap mapA, NamedNodeMap mapB) {
+ if (mapA == null) {
+ if (mapB == null) {
+ return true;
+ }
+ return false;
+ }
+ if (mapA.getLength() != mapB.getLength()) {
+ return false;
+ }
+ for (int i = 0; i < mapA.getLength(); i++) {
+ Node trialNode = mapA.item(i);
+ if (trialNode == null) {
+ return false;
+ }
+ Node checkNode = mapB.getNamedItem(trialNode.getNodeName());
+ if (checkNode == null) {
+ return false;
+ }
+ if (!equalNode(trialNode, checkNode)) {
+ return false;
+ }
+ }
+ return true;
+ }
+
+ private static boolean equalNode(Node nodeA, Node nodeB) {
+ if (nodeA == null) {
+ if (nodeB == null) {
+ return true;
+ }
+ return false;
+ }
+ // following is intended to provide same function as 1.5 isEqualNode()
+ if (nodeA.getNodeType() != nodeB.getNodeType()) {
+ return false;
+ }
+ if (!equalString(nodeA.getNodeName(), nodeB.getNodeName())) {
+ return false;
+ }
+ if (!equalString(nodeA.getLocalName(), nodeB.getLocalName())) {
+ return false;
+ }
+ if (!equalString(nodeA.getNamespaceURI(), nodeB.getNamespaceURI())) {
+ return false;
+ }
+ if (!equalString(nodeA.getNamespaceURI(), nodeB.getNamespaceURI())) {
+ return false;
+ }
+ if (!equalString(nodeA.getPrefix(), nodeB.getPrefix())) {
+ return false;
+ }
+ if (!equalString(nodeA.getNodeValue(), nodeB.getNodeValue())) {
+ return false;
+ }
+ if (!equalNamedNodeMap(nodeA.getAttributes(), nodeB.getAttributes())) {
+ return false;
+ }
+ if (!equalNodeList(nodeA.getChildNodes(), nodeB.getChildNodes())) {
+ return false;
+ }
+ if (nodeA.getNodeType() == Node.DOCUMENT_TYPE_NODE) {
+ DocumentType documentTypeA = (DocumentType) nodeA;
+ DocumentType documentTypeB = (DocumentType) nodeB;
+ if (!equalString(documentTypeA.getPublicId(), documentTypeB.getPublicId())) {
+ return false;
+ }
+ if (!equalString(documentTypeA.getSystemId(), documentTypeB.getSystemId())) {
+ return false;
+ }
+ if (!equalString(documentTypeA.getInternalSubset(), documentTypeB.getInternalSubset())) {
+ return false;
+ }
+ if (!equalNamedNodeMap(documentTypeA.getEntities(), documentTypeB.getEntities())) {
+ return false;
+ }
+ if (!equalNamedNodeMap(documentTypeA.getNotations(), documentTypeB.getNotations())) {
+ return false;
+ }
+ }
+ return true;
+ }
+
+ private static boolean equalNodeList(NodeList nodeListA, NodeList nodeListB) {
+ if (nodeListA == null) {
+ if (nodeListB == null) {
+ return true;
+ }
+ return false;
+ }
+ return equalNodes(nodeListA, nodeListB);
+ }
+
+ private static boolean equalString(String stringA, String stringB) {
+ if (stringA == null) {
+ if (stringB == null) {
+ return true;
+ }
+ return false;
+ }
+ return stringA.equals(stringB);
+ }
+
+ private static boolean equalNodes(NodeList sourceNodeList, NodeList targetNodeList)
+ {
+ ArrayList sourceNodes = new ArrayList();
+ ArrayList targetNodes = new ArrayList();
+
+ getAllNodes(sourceNodeList, sourceNodes);
+ getAllNodes(targetNodeList, targetNodes);
+
+ int sourceLength = sourceNodes.size();
+ int targetLength = targetNodes.size();
+
+ if (sourceLength != targetLength)
+ {
+ return false;
+ }
+
+ for (int i=0; i<sourceLength; i++)
+ {
+ Node sourceNode = (Node)sourceNodes.get(i);
+ Node targetNode = (Node)targetNodes.get(i);
+
+ /* remove comment when migrated to Java 1.5
+ if (!sourceNode.isEqualNode(targetNode))
+ {
+ return false;
+ }
+ */
+ // following is intended as 1.4 equivalent of isEqualNode()
+ if (!equalNode(sourceNode, targetNode))
+ {
+ return false;
+ }
+ } // for
+
+ return true;
+ }
+
+ public static boolean equalXmlFiles(URL source, URL target)
+ {
+ try {
+ return equalXmlFiles(source.openStream(), target.openStream());
+ }
+ catch (IOException e)
+ {
+ return false;
+ }
+ }
+
+ public static boolean equalXmlFiles(InputStream sourceStream, URL target)
+ {
+ try {
+ return equalXmlFiles(sourceStream, target.openStream());
+ }
+ catch (IOException e)
+ {
+ return false;
+ }
+ }
+
+ public static boolean equalXmlFiles(URL source, InputStream targetStream)
+ {
+ try {
+ return equalXmlFiles(source.openStream(), targetStream);
+ }
+ catch (IOException e)
+ {
+ return false;
+ }
+ }
+
+ public static boolean equalXmlFiles(InputStream sourceStream, InputStream targetStream)
+ {
+ DocumentBuilder builder;
+ Document sourceDocument;
+ Document targetDocument;
+
+ try {
+ builder = DocumentBuilderFactory.newInstance().newDocumentBuilder();
+ sourceDocument = builder.parse(sourceStream);
+ targetDocument = builder.parse(targetStream);
+ }
+ catch (FactoryConfigurationError fce) {
+ return false;
+ }
+ catch (ParserConfigurationException ce) {
+ return false;
+ }
+ catch (SAXException se)
+ {
+ return false;
+ }
+ catch (IOException ie)
+ {
+ return false;
+ }
+
+ sourceDocument.normalize();
+ targetDocument.normalize();
+
+ /* remove comment when migrated to Java 1.5
+ if (!sourceDocument.getXmlVersion().equals(targetDocument.getXmlVersion()))
+ {
+ return false;
+ }
+
+ String sourceXmlEncoding = sourceDocument.getXmlEncoding();
+ String targetXmlEncoding = targetDocument.getXmlEncoding();
+
+ if (sourceXmlEncoding != null && targetXmlEncoding != null &&
+ sourceXmlEncoding.equalsIgnoreCase(targetXmlEncoding))
+ {
+ // continue
+ }
+ else
+ {
+ return false;
+ }
+ */
+
+ NodeList sourceNodes = sourceDocument.getChildNodes();
+ NodeList targetNodes = targetDocument.getChildNodes();
+
+ return equalNodes(sourceNodes, targetNodes);
+ }
+}
diff --git a/branches/sdo-java-M2/sdo/impl/src/test/java/org/apache/tuscany/sdo/test/TypeConversionTestCase.java b/branches/sdo-java-M2/sdo/impl/src/test/java/org/apache/tuscany/sdo/test/TypeConversionTestCase.java
new file mode 100644
index 0000000000..278355bfd3
--- /dev/null
+++ b/branches/sdo-java-M2/sdo/impl/src/test/java/org/apache/tuscany/sdo/test/TypeConversionTestCase.java
@@ -0,0 +1,883 @@
+/**
+ *
+ * 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 junit.framework.TestCase;
+
+
+import java.io.InputStream;
+import java.lang.reflect.Method;
+import java.math.BigDecimal;
+import java.math.BigInteger;
+import java.net.URL;
+import java.text.SimpleDateFormat;
+import java.util.Comparator;
+import java.util.Date;
+import java.util.TimeZone;
+
+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.XSDHelper;
+
+public class TypeConversionTestCase extends TestCase
+{
+ // The following constants are used to get Types from XSDs
+
+ private static final String TEST_MODEL = "/api_test.xsd";
+ private static final String TEST_NAMESPACE = "http://www.example.com/api_test";
+
+ // The following constants describe the index for the fields in api_test.xsd.
+
+ private static final int STRING_VAL_INDEX = 1;
+ private static final int BOOLEAN_VAL_INDEX = 2;
+ private static final int BYTE_VAL_INDEX = 4;
+ private static final int DECIMAL_VAL_INDEX = 6;
+ private static final int INT_VAL_INDEX = 8;
+ private static final int FLOAT_VAL_INDEX = 9;
+ private static final int DOUBLE_VAL_INDEX = 10;
+ private static final int DATE_VAL_INDEX = 11;
+ private static final int SHORT_VAL_INDEX = 12;
+ private static final int LONG_VAL_INDEX = 13;
+ private static final int BYTES_VAL_INDEX = 15;
+ private static final int INTEGER_VAL_INDEX = 16;
+ private static final int CHAR_VAL_INDEX = 17;
+
+ // The following variables are Method arrays. Each array refers to a specific get<Type>, but within
+ // the array exist the get<Type>(index), get<Type>(property), and get<Type>(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/branches/sdo-java-M2/sdo/impl/src/test/java/org/apache/tuscany/sdo/test/TypeRoundTripTestCase.java b/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/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/branches/sdo-java-M2/sdo/impl/src/test/java/org/apache/tuscany/sdo/test/XMLDocumentTestCase.java b/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/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/branches/sdo-java-M2/sdo/impl/src/test/java/org/apache/tuscany/sdo/test/XMLStreamHelperTestCase.java b/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/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;
+
+ // = "<module name=\"m\" xmlns=\"http://foo\" xmlns:bar=\"http://bar\" xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\"
+ // xsi:schemaLocation=\"http://bar foo-ext.xsd http://foo foo.xsd \"><component name=\"c\"><bar:implementation.mock
+ // myAttr=\"helloworld.HelloWorldImpl\" listAttr=\"1 2\">1<bar:myElement>Dummy</bar:myElement>2</bar:implementation.mock></component></module>";
+
+ 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/branches/sdo-java-M2/sdo/impl/src/test/java/org/apache/tuscany/sdo/test/XPathTestCase.java b/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/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/branches/sdo-java-M2/sdo/impl/src/test/java/org/apache/tuscany/sdo/test/XSDHelperTestCase.java b/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/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/branches/sdo-java-M2/sdo/impl/src/test/resources/SubstitutionValues.xsd b/branches/sdo-java-M2/sdo/impl/src/test/resources/SubstitutionValues.xsd
new file mode 100644
index 0000000000..7aee02c032
--- /dev/null
+++ b/branches/sdo-java-M2/sdo/impl/src/test/resources/SubstitutionValues.xsd
@@ -0,0 +1,30 @@
+<schema xmlns="http://www.w3.org/2001/XMLSchema"
+ targetNamespace="http://www.apache.org/tuscany/SubstitutionValues"
+ xmlns:sv="http://www.apache.org/tuscany/SubstitutionValues">
+ <!--
+ Licensed to the Apache Software Foundation (ASF) under one
+ or more contributor license agreements. See the NOTICE file
+ distributed with this work for additional information
+ regarding copyright ownership. The ASF licenses this file
+ to you under the Apache License, Version 2.0 (the
+ "License"); you may not use this file except in compliance
+ with the License. You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing,
+ software distributed under the License is distributed on an
+ "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ KIND, either express or implied. See the License for the
+ specific language governing permissions and limitations
+ under the License.
+ -->
+ <element name="groupHead" type="string"/>
+ <complexType name="TestObject">
+ <sequence>
+ <element ref="sv:groupHead"/>
+ <element name="nonGroupHead" type="string"/>
+ </sequence>
+ </complexType>
+ <element name="groupMember" type="string" substitutionGroup="sv:groupHead"/>
+</schema> \ No newline at end of file
diff --git a/branches/sdo-java-M2/sdo/impl/src/test/resources/XMLDocumentNoNamespaceSchemaLocation.xsd b/branches/sdo-java-M2/sdo/impl/src/test/resources/XMLDocumentNoNamespaceSchemaLocation.xsd
new file mode 100644
index 0000000000..7718cb424f
--- /dev/null
+++ b/branches/sdo-java-M2/sdo/impl/src/test/resources/XMLDocumentNoNamespaceSchemaLocation.xsd
@@ -0,0 +1,31 @@
+<?xml version="1.0" encoding="UTF-8"?>
+ <!--
+ Licensed to the Apache Software Foundation (ASF) under one
+ or more contributor license agreements. See the NOTICE file
+ distributed with this work for additional information
+ regarding copyright ownership. The ASF licenses this file
+ to you under the Apache License, Version 2.0 (the
+ "License"); you may not use this file except in compliance
+ with the License. You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing,
+ software distributed under the License is distributed on an
+ "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ KIND, either express or implied. See the License for the
+ specific language governing permissions and limitations
+ under the License.
+ -->
+<xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema">
+
+ <xsd:element name="aNoNamespaceSchemaLocationElement">
+ <xsd:complexType>
+ <xsd:sequence>
+ <xsd:element name="anElement" type="xsd:string" minOccurs="1" maxOccurs="unbounded"/>
+ </xsd:sequence>
+ <xsd:attribute name="date" type="xsd:date"/>
+ </xsd:complexType>
+ </xsd:element>
+
+</xsd:schema>
diff --git a/branches/sdo-java-M2/sdo/impl/src/test/resources/XMLDocumentSchemaLocation.xsd b/branches/sdo-java-M2/sdo/impl/src/test/resources/XMLDocumentSchemaLocation.xsd
new file mode 100644
index 0000000000..c48fab79f1
--- /dev/null
+++ b/branches/sdo-java-M2/sdo/impl/src/test/resources/XMLDocumentSchemaLocation.xsd
@@ -0,0 +1,35 @@
+<?xml version="1.0" encoding="UTF-8"?>
+ <!--
+ Licensed to the Apache Software Foundation (ASF) under one
+ or more contributor license agreements. See the NOTICE file
+ distributed with this work for additional information
+ regarding copyright ownership. The ASF licenses this file
+ to you under the Apache License, Version 2.0 (the
+ "License"); you may not use this file except in compliance
+ with the License. You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing,
+ software distributed under the License is distributed on an
+ "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ KIND, either express or implied. See the License for the
+ specific language governing permissions and limitations
+ under the License.
+ -->
+<xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema"
+ targetNamespace="http://www.example.com/xmlDocumentSchemaLocation"
+ xmlns:sl="http://www.example.com/xmlDocumentSchemaLocation">
+
+ <xsd:element name="schemaLocationElement" type="xsd:string" />
+
+ <xsd:element name="purchaseReport">
+ <xsd:complexType>
+ <xsd:sequence>
+ <xsd:any minOccurs="1" maxOccurs="unbounded"/>
+ </xsd:sequence>
+ <xsd:attribute name="periodEnding" type="xsd:date"/>
+ </xsd:complexType>
+ </xsd:element>
+
+</xsd:schema>
diff --git a/branches/sdo-java-M2/sdo/impl/src/test/resources/XMLDocumentTestCase.xml b/branches/sdo-java-M2/sdo/impl/src/test/resources/XMLDocumentTestCase.xml
new file mode 100644
index 0000000000..88160e0b2f
--- /dev/null
+++ b/branches/sdo-java-M2/sdo/impl/src/test/resources/XMLDocumentTestCase.xml
@@ -0,0 +1,14 @@
+<sl:purchaseReport
+ xmlns:sl="http://www.example.com/xmlDocumentSchemaLocation"
+ xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+ xsi:schemaLocation="http://www.example.com/xmlDocumentSchemaLocation
+ /XMLDocumentSchemaLocation.xsd
+ http://www.example.com/open
+ /open.xsd"
+ xsi:noNamespaceSchemaLocation="/XMLDocumentNoNamespaceSchemaLocation.xsd"
+ periodEnding="2007-12-31">
+ <sl:schemaLocationElement>some string</sl:schemaLocationElement>
+ <aNoNamespaceSchemaLocationElement date="2006-04-01">
+ <anElement>another string</anElement>
+ </aNoNamespaceSchemaLocationElement>
+</sl:purchaseReport>
diff --git a/branches/sdo-java-M2/sdo/impl/src/test/resources/api_test.xsd b/branches/sdo-java-M2/sdo/impl/src/test/resources/api_test.xsd
new file mode 100644
index 0000000000..3ccaebdd57
--- /dev/null
+++ b/branches/sdo-java-M2/sdo/impl/src/test/resources/api_test.xsd
@@ -0,0 +1,46 @@
+<?xml version="1.0" encoding="UTF-8"?>
+ <!--
+ Licensed to the Apache Software Foundation (ASF) under one
+ or more contributor license agreements. See the NOTICE file
+ distributed with this work for additional information
+ regarding copyright ownership. The ASF licenses this file
+ to you under the Apache License, Version 2.0 (the
+ "License"); you may not use this file except in compliance
+ with the License. You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing,
+ software distributed under the License is distributed on an
+ "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ KIND, either express or implied. See the License for the
+ specific language governing permissions and limitations
+ under the License.
+ -->
+<xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:sdo="commonj.sdo" xmlns:simple="http://www.example.com/api_test" targetNamespace="http://www.example.com/api_test">
+ <xsd:import namespace="commonj.sdo" schemaLocation="sdoModel.xsd"/>
+ <xsd:element name="apiTestElem" type="simple:APITest"/>
+
+ <xsd:complexType mixed="true" name="APITest">
+ <xsd:sequence>
+ <xsd:element name="stringVal" type="sdo:String"/>
+ <xsd:element name="booleanVal" type="sdo:Boolean"/>
+ <xsd:element name="booleanVal2" type="sdo:Boolean"/>
+ <xsd:element name="byteVal" type="sdo:Byte"/>
+ <xsd:element name="stringVal2" type="sdo:String"/>
+ <xsd:element name="decimalVal" type="sdo:Decimal"/>
+ <xsd:element name="decimalVal2" type="sdo:Decimal"/>
+ <xsd:element name="intVal" type="sdo:Int"/>
+ <xsd:element name="floatVal" type="sdo:Float"/>
+ <xsd:element name="doubleVal" type="sdo:Double"/>
+ <xsd:element name="dateVal" type="sdo:Date"/>
+ <xsd:element name="shortVal" type="sdo:Short"/>
+ <xsd:element name="longVal" type="sdo:Long"/>
+ <xsd:element maxOccurs="unbounded" minOccurs="0" name="children" type="simple:APITest"/>
+ <xsd:element name="bytesVal" type="sdo:Bytes"/>
+ <xsd:element name="integerVal" type="sdo:Integer"/>
+ <xsd:element name="charVal" type="sdo:Character"/>
+ <xsd:element name="xsdDate" type="xsd:date"/>
+ </xsd:sequence>
+ </xsd:complexType>
+</xsd:schema>
diff --git a/branches/sdo-java-M2/sdo/impl/src/test/resources/bank.xsd b/branches/sdo-java-M2/sdo/impl/src/test/resources/bank.xsd
new file mode 100644
index 0000000000..ae23feefa3
--- /dev/null
+++ b/branches/sdo-java-M2/sdo/impl/src/test/resources/bank.xsd
@@ -0,0 +1,78 @@
+<?xml version="1.0" encoding="UTF-8"?>
+ <!--
+ Licensed to the Apache Software Foundation (ASF) under one
+ or more contributor license agreements. See the NOTICE file
+ distributed with this work for additional information
+ regarding copyright ownership. The ASF licenses this file
+ to you under the Apache License, Version 2.0 (the
+ "License"); you may not use this file except in compliance
+ with the License. You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing,
+ software distributed under the License is distributed on an
+ "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ KIND, either express or implied. See the License for the
+ specific language governing permissions and limitations
+ under the License.
+ -->
+<xsd:schema targetNamespace="http://www.example.com/bank"
+ xmlns:bank="http://www.example.com/bank"
+ xmlns:xsd="http://www.w3.org/2001/XMLSchema"
+ xmlns:sdoXML="commonj.sdo/xml">
+
+ <xsd:element name="bank" type="bank:bankType"/>
+
+ <xsd:complexType name="bankType">
+ <xsd:sequence>
+ <xsd:element name="Branch" type="bank:branchType" maxOccurs="unbounded" />
+ <xsd:element name="Service" type="bank:serviceType" maxOccurs="unbounded" />
+ <xsd:element name="Customer" type="bank:customerType" maxOccurs="unbounded" />
+ </xsd:sequence>
+ <xsd:attribute name="name" type="xsd:string"/>
+ </xsd:complexType>
+
+ <xsd:complexType name="branchType">
+ <xsd:sequence>
+ <xsd:element name="Address" type="bank:addressType"/>
+ <xsd:element name="Directions" type="xsd:string" maxOccurs="unbounded" />
+ <xsd:element name="Account" type="bank:accountType" maxOccurs="unbounded" />
+ </xsd:sequence>
+ <xsd:attribute name="ID" type="xsd:ID"/>
+ </xsd:complexType>
+
+ <xsd:complexType name="serviceType">
+ <xsd:attribute name="ID" type="xsd:ID"/>
+ <xsd:attribute name="Name" type="xsd:string"/>
+ <xsd:attribute name="Fee" type="xsd:decimal"/>
+ </xsd:complexType>
+
+ <xsd:complexType name="accountType">
+ <xsd:attribute name="ID" type="xsd:ID"/>
+ <xsd:attribute name="Service" type="xsd:IDREF" sdoXML:propertyType="bank:serviceType" />
+ <xsd:attribute name="Balance" type="xsd:decimal" />
+ </xsd:complexType>
+
+ <xsd:complexType name="customerType">
+ <xsd:sequence>
+ <xsd:element name="First" type="xsd:string" />
+ <xsd:element name="Last" type="xsd:string" />
+ <xsd:element name="Address" type="bank:addressType"/>
+ <xsd:element name="HomeBranch" type="xsd:IDREF" sdoXML:propertyType="bank:branchType" />
+ <xsd:element name="Account" type="xsd:IDREF" sdoXML:propertyType="bank:accountType" maxOccurs="unbounded" />
+ </xsd:sequence>
+ <xsd:attribute name="ID" type="xsd:ID"/>
+ <xsd:attribute name="Related" type="xsd:IDREFS" sdoXML:propertyType="bank:customerType" />
+ </xsd:complexType>
+
+ <xsd:complexType name="addressType">
+ <xsd:sequence>
+ <xsd:element name="Street" type="xsd:string"/>
+ <xsd:element name="City" type="xsd:string"/>
+ <xsd:element name="State" type="xsd:string"/>
+ <xsd:element name="Zip" type="xsd:string"/>
+ </xsd:sequence>
+ </xsd:complexType>
+
+ </xsd:schema>
diff --git a/branches/sdo-java-M2/sdo/impl/src/test/resources/company.xsd b/branches/sdo-java-M2/sdo/impl/src/test/resources/company.xsd
new file mode 100644
index 0000000000..18e99352be
--- /dev/null
+++ b/branches/sdo-java-M2/sdo/impl/src/test/resources/company.xsd
@@ -0,0 +1,44 @@
+<?xml version="1.0" encoding="UTF-8"?>
+ <!--
+ Licensed to the Apache Software Foundation (ASF) under one
+ or more contributor license agreements. See the NOTICE file
+ distributed with this work for additional information
+ regarding copyright ownership. The ASF licenses this file
+ to you under the Apache License, Version 2.0 (the
+ "License"); you may not use this file except in compliance
+ with the License. You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing,
+ software distributed under the License is distributed on an
+ "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ KIND, either express or implied. See the License for the
+ specific language governing permissions and limitations
+ under the License.
+ -->
+ <xsd:schema xmlns:company="company.xsd"
+ xmlns:xsd="http://www.w3.org/2001/XMLSchema"
+ targetNamespace="company.xsd">
+ <xsd:element name="company" type="company:CompanyType"/>
+ <xsd:complexType name="CompanyType">
+ <xsd:sequence>
+ <xsd:element name="departments" type="company:DepartmentType" maxOccurs="unbounded"/>
+ </xsd:sequence>
+ <xsd:attribute name="name" type="xsd:string"/>
+ <xsd:attribute name="employeeOfTheMonth" type="xsd:string"/>
+ </xsd:complexType>
+ <xsd:complexType name="DepartmentType">
+ <xsd:sequence>
+ <xsd:element name="employees" type="company:EmployeeType" maxOccurs="unbounded"/>
+ </xsd:sequence>
+ <xsd:attribute name="name" type="xsd:string"/>
+ <xsd:attribute name="location" type="xsd:string"/>
+ <xsd:attribute name="number" type="xsd:int"/>
+ </xsd:complexType>
+ <xsd:complexType name="EmployeeType">
+ <xsd:attribute name="name" type="xsd:string"/>
+ <xsd:attribute name="SN" type="xsd:ID"/>
+ <xsd:attribute name="manager" type="xsd:boolean"/>
+ </xsd:complexType>
+ </xsd:schema>
diff --git a/branches/sdo-java-M2/sdo/impl/src/test/resources/customer1.xml b/branches/sdo-java-M2/sdo/impl/src/test/resources/customer1.xml
new file mode 100644
index 0000000000..5a29e30a3c
--- /dev/null
+++ b/branches/sdo-java-M2/sdo/impl/src/test/resources/customer1.xml
@@ -0,0 +1,8 @@
+<?xml version="1.0" encoding="ASCII"?>
+<customer:Customer
+ xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+ xmlns:customer="http://example.com/customer"
+ xsi:type="customer:Customer"
+ custNum="1"
+ firstName="John"
+ lastName="Adams"/> \ No newline at end of file
diff --git a/branches/sdo-java-M2/sdo/impl/src/test/resources/customer2.xml b/branches/sdo-java-M2/sdo/impl/src/test/resources/customer2.xml
new file mode 100644
index 0000000000..e9ebb92677
--- /dev/null
+++ b/branches/sdo-java-M2/sdo/impl/src/test/resources/customer2.xml
@@ -0,0 +1,8 @@
+<?xml version="1.0" encoding="ASCII"?>
+<customer:Customer
+ xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+ xmlns:customer="http://example.com/customer"
+ xsi:type="customer:Customer"
+ custNum="2"
+ firstName="Jeremy"
+ lastName="Pavick"/> \ No newline at end of file
diff --git a/branches/sdo-java-M2/sdo/impl/src/test/resources/datatype.xsd b/branches/sdo-java-M2/sdo/impl/src/test/resources/datatype.xsd
new file mode 100644
index 0000000000..9c03964367
--- /dev/null
+++ b/branches/sdo-java-M2/sdo/impl/src/test/resources/datatype.xsd
@@ -0,0 +1,34 @@
+<?xml version="1.0" encoding="UTF-8"?>
+ <!--
+ Licensed to the Apache Software Foundation (ASF) under one
+ or more contributor license agreements. See the NOTICE file
+ distributed with this work for additional information
+ regarding copyright ownership. The ASF licenses this file
+ to you under the Apache License, Version 2.0 (the
+ "License"); you may not use this file except in compliance
+ with the License. You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing,
+ software distributed under the License is distributed on an
+ "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ KIND, either express or implied. See the License for the
+ specific language governing permissions and limitations
+ under the License.
+ -->
+<xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:datatype="http://www.example.com/datatype" xmlns:sdoJava="commonj.sdo/java" targetNamespace="http://www.example.com/datatype">
+
+ <xsd:simpleType name="SimpleSDOType">
+ <xsd:restriction base="xsd:string"/>
+ </xsd:simpleType>
+
+ <xsd:simpleType name="SimpleSDOTypeInstanceClass" sdoJava:instanceClass="java.lang.Integer">
+ <xsd:restriction base="xsd:string"/>
+ </xsd:simpleType>
+
+ <xsd:simpleType name="SimpleSDOTypeExtendedInstanceClass" sdoJava:extendedInstanceClass="java.lang.String">
+ <xsd:restriction base="xsd:string"/>
+ </xsd:simpleType>
+
+</xsd:schema>
diff --git a/branches/sdo-java-M2/sdo/impl/src/test/resources/foo-ext.xml b/branches/sdo-java-M2/sdo/impl/src/test/resources/foo-ext.xml
new file mode 100644
index 0000000000..000909a52e
--- /dev/null
+++ b/branches/sdo-java-M2/sdo/impl/src/test/resources/foo-ext.xml
@@ -0,0 +1,9 @@
+<module name="m" xmlns="http://foo" xmlns:bar="http://bar"
+ xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+ xsi:schemaLocation="http://bar foo-ext.xsd http://foo foo.xsd ">
+ <component name="c">
+ <bar:implementation.mock myAttr="helloworld.HelloWorldImpl"
+ listAttr="1 2">1<bar:myElement>Dummy</bar:myElement>2
+ </bar:implementation.mock>
+ </component>
+</module> \ No newline at end of file
diff --git a/branches/sdo-java-M2/sdo/impl/src/test/resources/foo-ext.xsd b/branches/sdo-java-M2/sdo/impl/src/test/resources/foo-ext.xsd
new file mode 100644
index 0000000000..8bad6f9307
--- /dev/null
+++ b/branches/sdo-java-M2/sdo/impl/src/test/resources/foo-ext.xsd
@@ -0,0 +1,44 @@
+<?xml version="1.0" encoding="UTF-8"?>
+ <!--
+ Licensed to the Apache Software Foundation (ASF) under one
+ or more contributor license agreements. See the NOTICE file
+ distributed with this work for additional information
+ regarding copyright ownership. The ASF licenses this file
+ to you under the Apache License, Version 2.0 (the
+ "License"); you may not use this file except in compliance
+ with the License. You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing,
+ software distributed under the License is distributed on an
+ "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ KIND, either express or implied. See the License for the
+ specific language governing permissions and limitations
+ under the License.
+ -->
+<schema xmlns="http://www.w3.org/2001/XMLSchema"
+ targetNamespace="http://bar"
+ elementFormDefault="qualified"
+ xmlns:foo="http://foo" xmlns:bar="http://bar">
+
+ <import namespace="http://foo"
+ schemaLocation="foo.xsd" />
+
+ <element name="implementation.mock" type="bar:MockImplementation"
+ substitutionGroup="foo:implementation" />
+ <complexType name="MockImplementation" mixed="true">
+ <complexContent>
+ <extension base="foo:Implementation">
+ <sequence>
+ <element name="myElement" type="string"/>
+ <any namespace="##other" processContents="lax"
+ minOccurs="0" maxOccurs="unbounded" />
+ </sequence>
+ <attribute name="myAttr" type="NCName" use="required" />
+ <attribute name="listAttr" type="NMTOKENS" use="optional" />
+ <anyAttribute namespace="##any" processContents="lax" />
+ </extension>
+ </complexContent>
+ </complexType>
+</schema>
diff --git a/branches/sdo-java-M2/sdo/impl/src/test/resources/foo.xsd b/branches/sdo-java-M2/sdo/impl/src/test/resources/foo.xsd
new file mode 100644
index 0000000000..27a8e3644c
--- /dev/null
+++ b/branches/sdo-java-M2/sdo/impl/src/test/resources/foo.xsd
@@ -0,0 +1,232 @@
+<?xml version="1.0" encoding="UTF-8"?>
+ <!--
+ Licensed to the Apache Software Foundation (ASF) under one
+ or more contributor license agreements. See the NOTICE file
+ distributed with this work for additional information
+ regarding copyright ownership. The ASF licenses this file
+ to you under the Apache License, Version 2.0 (the
+ "License"); you may not use this file except in compliance
+ with the License. You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing,
+ software distributed under the License is distributed on an
+ "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ KIND, either express or implied. See the License for the
+ specific language governing permissions and limitations
+ under the License.
+ -->
+<schema xmlns="http://www.w3.org/2001/XMLSchema"
+ targetNamespace="http://foo"
+ elementFormDefault="qualified" xmlns:foo="http://foo">
+
+ <element name="componentType" type="foo:ComponentType"/>
+ <complexType name="ComponentType">
+ <sequence>
+ <element minOccurs="0" maxOccurs="unbounded" name="service" type="foo:Service"/>
+ <element minOccurs="0" maxOccurs="unbounded" name="reference" type="foo:Reference"/>
+ <element minOccurs="0" maxOccurs="unbounded" name="property" type="foo:Property"/>
+ <any namespace="##other" processContents="lax" minOccurs="0" maxOccurs="unbounded"/>
+ </sequence>
+ <anyAttribute namespace="##any" processContents="lax"/>
+ </complexType>
+
+ <complexType name="Service">
+ <sequence>
+ <element minOccurs="1" maxOccurs="1" ref="foo:interface"/>
+ <any namespace="##other" processContents="lax" minOccurs="0" maxOccurs="unbounded"/>
+ </sequence>
+ <attribute name="name" type="NCName" use="required"/>
+ <anyAttribute namespace="##any" processContents="lax"/>
+ </complexType>
+
+ <element name="interface" type="foo:Interface"/>
+ <complexType name="Interface"/>
+
+ <complexType name="Reference">
+ <sequence>
+ <element minOccurs="1" maxOccurs="1" ref="foo:interface"/>
+ <any namespace="##other" processContents="lax" minOccurs="0" maxOccurs="unbounded"/>
+ </sequence>
+ <attribute name="name" type="NCName" use="required"/>
+ <attribute name="multiplicity" type="foo:Multiplicity" use="optional" default="1..1"/>
+ <anyAttribute namespace="##any" processContents="lax"/>
+ </complexType>
+
+ <complexType name="Property">
+ <sequence>
+ <any namespace="##other" processContents="lax" minOccurs="0" maxOccurs="unbounded"/>
+ </sequence>
+ <attribute name="name" type="NCName" use="required"/>
+ <attribute name="type" type="QName" use="required"/>
+ <attribute name="many" type="boolean" default="false" use="optional"/>
+ <attribute name="required" type="boolean" default="false" use="optional"/>
+ <attribute name="default" type="string" use="optional"/>
+ <anyAttribute namespace="##any" processContents="lax"/>
+ </complexType>
+
+
+ <element name="moduleFragment" type="foo:ModuleFragment"/>
+ <complexType name="ModuleFragment">
+ <sequence>
+ <element minOccurs="0" maxOccurs="unbounded" name="entryPoint" type="foo:EntryPoint"/>
+ <element minOccurs="0" maxOccurs="unbounded" name="component" type="foo:Component"/>
+ <element minOccurs="0" maxOccurs="unbounded" name="externalService" type="foo:ExternalService"/>
+ <element minOccurs="0" maxOccurs="unbounded" name="wire" type="foo:ModuleWire"/>
+ <any namespace="##other" processContents="lax" minOccurs="0" maxOccurs="unbounded"/>
+ </sequence>
+ <attribute name="name" type="NCName" use="required"/>
+ <anyAttribute namespace="##any" processContents="lax"/>
+ </complexType>
+
+ <element name="module" type="foo:Module"/>
+ <complexType name="Module">
+ <complexContent>
+ <extension base="foo:ModuleFragment"/>
+ </complexContent>
+ </complexType>
+
+ <complexType name="EntryPoint">
+ <sequence>
+ <element minOccurs="0" maxOccurs="1" ref="foo:interface"/>
+ <element minOccurs="1" maxOccurs="unbounded" ref="foo:binding"/>
+ <element minOccurs="1" maxOccurs="unbounded" name="reference" type="anyURI"/>
+ <any namespace="##other" processContents="lax" minOccurs="0" maxOccurs="unbounded"/>
+ </sequence>
+ <attribute name="name" type="NCName" use="required"/>
+ <attribute name="multiplicity" type="foo:Multiplicity" use="optional" default="1..1"/>
+ <anyAttribute namespace="##any" processContents="lax"/>
+ </complexType>
+ <!-- a multiplicity 1..1 or 0..n sample
+ <reference>StockQuoteComponent</reference> - type must be URI
+ a multiplicity 1..n or 0..n sample
+ <reference>StockQuoteComponent1</reference> - type must be URI
+ <reference>StockQuoteComponent2</reference>
+ -->
+
+ <element name="binding" type="foo:Binding"/>
+ <complexType name="Binding">
+ <attribute name="uri" type="anyURI" use="optional"/>
+ </complexType>
+
+ <complexType name="Component">
+ <sequence>
+ <element minOccurs="1" maxOccurs="1" ref="foo:implementation"/>
+ <element minOccurs="0" maxOccurs="1" name="properties" type="foo:PropertyValues"/>
+ <element minOccurs="0" maxOccurs="1" name="references" type="foo:ReferenceValues"/>
+ <any namespace="##other" processContents="lax" minOccurs="0" maxOccurs="unbounded"/>
+ </sequence>
+ <attribute name="name" type="NCName" use="required"/>
+ <anyAttribute namespace="##any" processContents="lax"/>
+ </complexType>
+ <!-- a multiplicity 1..1 or 0..1 sample
+ <references>
+ <v:stockQuote>StockQuoteComponent</v:stockquote> - type must be URI
+ </references>
+ a multiplicity 1..n or 0..n sample
+ <references>
+ <v:stockQuote>StockQuoteComponent1</v:stockQuote> - type must be URI
+ <v:stockQuote>StockQuoteComponent2</v:stockQuote>
+ </references>
+ -->
+
+ <element name="implementation" type="foo:Implementation"/>
+ <complexType name="Implementation"/>
+
+ <complexType name="PropertyValues">
+ <sequence>
+ <any namespace="##other" processContents="lax" minOccurs="0" maxOccurs="unbounded"/>
+ </sequence>
+ <anyAttribute namespace="##any" processContents="lax"/>
+ </complexType>
+
+ <complexType name="ReferenceValues">
+ <sequence>
+ <any namespace="##other" processContents="lax" minOccurs="0" maxOccurs="unbounded"/>
+ </sequence>
+ <anyAttribute namespace="##any" processContents="lax"/>
+ </complexType>
+
+
+ <complexType name="ExternalService">
+ <sequence>
+ <element minOccurs="1" maxOccurs="1" ref="foo:interface"/>
+ <element minOccurs="0" maxOccurs="unbounded" ref="foo:binding"/>
+ </sequence>
+ <attribute name="name" type="NCName" use="required"/>
+ <attribute name="overridable" type="foo:OverrideOptions" default="may" use="optional"/>
+ <anyAttribute namespace="##any" processContents="lax"/>
+ </complexType>
+
+
+ <complexType name="ModuleWire">
+ <sequence>
+ <element minOccurs="1" maxOccurs="1" ref="foo:source.uri"/>
+ <element minOccurs="1" maxOccurs="1" ref="foo:target.uri"/>
+ <any namespace="##other" processContents="lax" minOccurs="0" maxOccurs="unbounded"/>
+ </sequence>
+ <anyAttribute namespace="##any" processContents="lax"/>
+ </complexType>
+
+ <element name="source"/>
+ <element name="target"/>
+
+ <element name="source.uri" type="anyURI" substitutionGroup="foo:source"/>
+ <element name="target.uri" type="anyURI" substitutionGroup="foo:target"/>
+
+ <element name="subsystem" type="foo:Subsystem"/>
+ <complexType name="Subsystem">
+ <sequence>
+ <element minOccurs="0" maxOccurs="unbounded" name="entryPoint" type="foo:EntryPoint"/>
+ <element minOccurs="0" maxOccurs="unbounded" name="moduleComponent" type="foo:ModuleComponent"/>
+ <element minOccurs="0" maxOccurs="unbounded" name="externalService" type="foo:ExternalService"/>
+ <element minOccurs="0" maxOccurs="unbounded" name="wire" type="foo:SystemWire"/>
+ <any namespace="##other" processContents="lax" minOccurs="0" maxOccurs="unbounded"/>
+ </sequence>
+ <attribute name="name" type="NCName" use="required"/>
+ <attribute name="uri" type="anyURI" use="optional"/>
+ <anyAttribute namespace="##any" processContents="lax"/>
+ </complexType>
+
+ <complexType name="ModuleComponent">
+ <sequence>
+ <element minOccurs="0" maxOccurs="1" name="properties" type="foo:PropertyValues"/>
+ <element minOccurs="0" maxOccurs="1" name="references" type="foo:ReferenceValues"/>
+ <any namespace="##other" processContents="lax" minOccurs="0" maxOccurs="unbounded"/>
+ </sequence>
+ <attribute name="name" type="NCName" use="required"/>
+ <attribute name="module" type="NCName" use="required"/>
+ <attribute name="uri" type="anyURI" use="optional"/>
+ <anyAttribute namespace="##any" processContents="lax"/>
+ </complexType>
+
+ <complexType name="SystemWire">
+ <sequence>
+ <element minOccurs="1" maxOccurs="1" ref="foo:source"/>
+ <element minOccurs="1" maxOccurs="1" ref="foo:target"/>
+ <any namespace="##other" processContents="lax" minOccurs="0" maxOccurs="unbounded"/>
+ </sequence>
+ </complexType>
+
+ <element name="source.epr" substitutionGroup="foo:source"/>
+ <element name="target.epr" substitutionGroup="foo:target"/>
+
+ <simpleType name="Multiplicity">
+ <restriction base="string">
+ <enumeration value="0..1"/>
+ <enumeration value="1..1"/>
+ <enumeration value="0..n"/>
+ <enumeration value="1..n"/>
+ </restriction>
+ </simpleType>
+
+ <simpleType name="OverrideOptions">
+ <restriction base="string">
+ <enumeration value="no"/>
+ <enumeration value="may"/>
+ <enumeration value="must"/>
+ </restriction>
+ </simpleType>
+
+</schema>
diff --git a/branches/sdo-java-M2/sdo/impl/src/test/resources/mixed.xml b/branches/sdo-java-M2/sdo/impl/src/test/resources/mixed.xml
new file mode 100644
index 0000000000..42ff3a3a5b
--- /dev/null
+++ b/branches/sdo-java-M2/sdo/impl/src/test/resources/mixed.xml
@@ -0,0 +1,9 @@
+<?xml version="1.0" encoding="ASCII"?>
+<mixed:mixedStockQuote xmlns:mixed="http://www.example.com/mixed">
+ <symbol>fbnt</symbol>
+ <companyName>FlyByNightTechnology</companyName>
+ some text
+ <quotes><price>2000.0</price></quotes>
+ more text
+ <price>1000.0</price>
+</mixed:mixedStockQuote> \ No newline at end of file
diff --git a/branches/sdo-java-M2/sdo/impl/src/test/resources/mixed.xsd b/branches/sdo-java-M2/sdo/impl/src/test/resources/mixed.xsd
new file mode 100644
index 0000000000..b9a8487559
--- /dev/null
+++ b/branches/sdo-java-M2/sdo/impl/src/test/resources/mixed.xsd
@@ -0,0 +1,41 @@
+<?xml version="1.0" encoding="UTF-8"?>
+ <!--
+ Licensed to the Apache Software Foundation (ASF) under one
+ or more contributor license agreements. See the NOTICE file
+ distributed with this work for additional information
+ regarding copyright ownership. The ASF licenses this file
+ to you under the Apache License, Version 2.0 (the
+ "License"); you may not use this file except in compliance
+ with the License. You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing,
+ software distributed under the License is distributed on an
+ "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ KIND, either express or implied. See the License for the
+ specific language governing permissions and limitations
+ under the License.
+ -->
+<xsd:schema
+ targetNamespace="http://www.example.com/mixed"
+ xmlns:xsd="http://www.w3.org/2001/XMLSchema"
+ xmlns:simple="http://www.example.com/mixed">
+
+ <xsd:element name="mixedStockQuote" type="simple:MixedQuote"/>
+
+ <xsd:complexType name="MixedQuote" mixed="true">
+ <xsd:sequence>
+ <xsd:element name="symbol" type="xsd:string"/>
+ <xsd:element name="companyName" type="xsd:string"/>
+ <xsd:element name="price" type="xsd:decimal"/>
+ <xsd:element name="open1" type="xsd:decimal"/>
+ <xsd:element name="high" type="xsd:decimal"/>
+ <xsd:element name="low" type="xsd:decimal"/>
+ <xsd:element name="volume" type="xsd:double"/>
+ <xsd:element name="change1" type="xsd:double"/>
+ <xsd:element name="quotes" type="simple:MixedQuote" minOccurs="0" maxOccurs="unbounded"/>
+ </xsd:sequence>
+ </xsd:complexType>
+
+</xsd:schema>
diff --git a/branches/sdo-java-M2/sdo/impl/src/test/resources/mixed2.xml b/branches/sdo-java-M2/sdo/impl/src/test/resources/mixed2.xml
new file mode 100644
index 0000000000..d95d179478
--- /dev/null
+++ b/branches/sdo-java-M2/sdo/impl/src/test/resources/mixed2.xml
@@ -0,0 +1,12 @@
+<?xml version="1.0" encoding="ASCII"?>
+<mixed:mixedStockQuote
+ xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+ xmlns:mixed="http://www.example.com/mixed"
+ xsi:type="mixed:MixedQuote">
+ <symbol>fbnt</symbol>
+ <companyName>FlyByNightTechnology</companyName>
+ some text
+ <quotes><price>2000.0</price></quotes>
+ more text
+ <price>1000.0</price>
+</mixed:mixedStockQuote> \ No newline at end of file
diff --git a/branches/sdo-java-M2/sdo/impl/src/test/resources/mixedopen.xml b/branches/sdo-java-M2/sdo/impl/src/test/resources/mixedopen.xml
new file mode 100644
index 0000000000..21a62ef2d0
--- /dev/null
+++ b/branches/sdo-java-M2/sdo/impl/src/test/resources/mixedopen.xml
@@ -0,0 +1,13 @@
+<?xml version="1.0" encoding="ASCII"?>
+<mixed:mixedOpenStockQuote
+ xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+ xmlns:mixed="http://www.example.com/mixed"
+ xmlns:open="http://www.example.com/open"
+ xsi:type="mixed:MixedOpenQuote">
+ <open:symbol>fbnt</open:symbol>
+ <companyName>FlyByNightTechnology</companyName>
+ some text
+ <quotes><price>2000.0</price></quotes>
+ more text
+ <price>1000.0</price>
+</mixed:mixedOpenStockQuote>
diff --git a/branches/sdo-java-M2/sdo/impl/src/test/resources/names.xsd b/branches/sdo-java-M2/sdo/impl/src/test/resources/names.xsd
new file mode 100644
index 0000000000..97b57c1741
--- /dev/null
+++ b/branches/sdo-java-M2/sdo/impl/src/test/resources/names.xsd
@@ -0,0 +1,33 @@
+<?xml version="1.0" encoding="UTF-8"?>
+ <!--
+ Licensed to the Apache Software Foundation (ASF) under one
+ or more contributor license agreements. See the NOTICE file
+ distributed with this work for additional information
+ regarding copyright ownership. The ASF licenses this file
+ to you under the Apache License, Version 2.0 (the
+ "License"); you may not use this file except in compliance
+ with the License. You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing,
+ software distributed under the License is distributed on an
+ "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ KIND, either express or implied. See the License for the
+ specific language governing permissions and limitations
+ under the License.
+ -->
+<xsd:schema
+ targetNamespace="http://www.example.com/names"
+ xmlns:xsd="http://www.w3.org/2001/XMLSchema"
+ xmlns:names="http://www.example.com/names">
+
+ <xsd:element name="class" type="names:class"/>
+ <xsd:element name="test.element" type="names:test.element" />
+ <xsd:element name="void" type="names:void" />
+
+ <xsd:complexType name="class" />
+ <xsd:complexType name="test.element" />
+ <xsd:complexType name="void" />
+
+</xsd:schema>
diff --git a/branches/sdo-java-M2/sdo/impl/src/test/resources/open.xml b/branches/sdo-java-M2/sdo/impl/src/test/resources/open.xml
new file mode 100644
index 0000000000..d4a5b92e0c
--- /dev/null
+++ b/branches/sdo-java-M2/sdo/impl/src/test/resources/open.xml
@@ -0,0 +1,8 @@
+<?xml version="1.0" encoding="ASCII"?>
+<open:openStockQuote xmlns:open="http://www.example.com/open">
+ <symbol>s1</symbol>
+ <open:company>
+ <name>FlyByNightTechnology</name>
+ </open:company>
+ <open:price>1000.0</open:price>
+</open:openStockQuote> \ No newline at end of file
diff --git a/branches/sdo-java-M2/sdo/impl/src/test/resources/open.xsd b/branches/sdo-java-M2/sdo/impl/src/test/resources/open.xsd
new file mode 100644
index 0000000000..d100d58fc6
--- /dev/null
+++ b/branches/sdo-java-M2/sdo/impl/src/test/resources/open.xsd
@@ -0,0 +1,44 @@
+<?xml version="1.0" encoding="UTF-8"?>
+ <!--
+ Licensed to the Apache Software Foundation (ASF) under one
+ or more contributor license agreements. See the NOTICE file
+ distributed with this work for additional information
+ regarding copyright ownership. The ASF licenses this file
+ to you under the Apache License, Version 2.0 (the
+ "License"); you may not use this file except in compliance
+ with the License. You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing,
+ software distributed under the License is distributed on an
+ "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ KIND, either express or implied. See the License for the
+ specific language governing permissions and limitations
+ under the License.
+ -->
+<xsd:schema
+ xmlns:simple="http://www.example.com/open"
+ xmlns:xsd="http://www.w3.org/2001/XMLSchema"
+ targetNamespace="http://www.example.com/open">
+
+ <xsd:element name="openStockQuote" type="simple:OpenQuote"/>
+
+ <xsd:element name="price" type="xsd:decimal"/>
+
+ <xsd:element name="company">
+ <xsd:complexType>
+ <xsd:sequence>
+ <xsd:element name="name" type="xsd:string"/>
+ </xsd:sequence>
+ </xsd:complexType>
+ </xsd:element>
+
+ <xsd:complexType name="OpenQuote">
+ <xsd:sequence>
+ <xsd:element name="symbol" type="xsd:string"/>
+ <xsd:any maxOccurs="unbounded" namespace="##any"/>
+ </xsd:sequence>
+ </xsd:complexType>
+
+</xsd:schema>
diff --git a/branches/sdo-java-M2/sdo/impl/src/test/resources/open1any.xsd b/branches/sdo-java-M2/sdo/impl/src/test/resources/open1any.xsd
new file mode 100644
index 0000000000..00efaef5e0
--- /dev/null
+++ b/branches/sdo-java-M2/sdo/impl/src/test/resources/open1any.xsd
@@ -0,0 +1,44 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+ Licensed to the Apache Software Foundation (ASF) under one
+ or more contributor license agreements. See the NOTICE file
+ distributed with this work for additional information
+ regarding copyright ownership. The ASF licenses this file
+ to you under the Apache License, Version 2.0 (the
+ "License"); you may not use this file except in compliance
+ with the License. You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing,
+ software distributed under the License is distributed on an
+ "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ KIND, either express or implied. See the License for the
+ specific language governing permissions and limitations
+ under the License.
+ -->
+<xsd:schema
+ xmlns:simple="http://www.example.com/open1any"
+ xmlns:xsd="http://www.w3.org/2001/XMLSchema"
+ targetNamespace="http://www.example.com/open1any">
+
+ <xsd:element name="openStockQuote" type="simple:OpenQuote"/>
+
+ <xsd:element name="price" type="xsd:decimal"/>
+
+ <xsd:element name="company">
+ <xsd:complexType>
+ <xsd:sequence>
+ <xsd:element name="name" type="xsd:string"/>
+ </xsd:sequence>
+ </xsd:complexType>
+ </xsd:element>
+
+ <xsd:complexType name="OpenQuote">
+ <xsd:sequence>
+ <xsd:element name="symbol" type="xsd:string"/>
+ <xsd:any namespace="##any"/>
+ </xsd:sequence>
+ </xsd:complexType>
+
+</xsd:schema>
diff --git a/branches/sdo-java-M2/sdo/impl/src/test/resources/open2.xml b/branches/sdo-java-M2/sdo/impl/src/test/resources/open2.xml
new file mode 100644
index 0000000000..ab992ccf74
--- /dev/null
+++ b/branches/sdo-java-M2/sdo/impl/src/test/resources/open2.xml
@@ -0,0 +1,9 @@
+<?xml version="1.0" encoding="ASCII"?>
+<open:openStockQuote
+ xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+ xmlns:open="http://www.example.com/open"
+ xsi:type="open:OpenQuote">
+ <open:symbol>s1</open:symbol>
+ <open:company name="FlyByNightTechnology"/>
+ <open:price>1000.0</open:price>
+</open:openStockQuote>
diff --git a/branches/sdo-java-M2/sdo/impl/src/test/resources/openContentProperty.xml b/branches/sdo-java-M2/sdo/impl/src/test/resources/openContentProperty.xml
new file mode 100644
index 0000000000..03608365c0
--- /dev/null
+++ b/branches/sdo-java-M2/sdo/impl/src/test/resources/openContentProperty.xml
@@ -0,0 +1,12 @@
+<?xml version="1.0" encoding="ASCII"?>
+<open:openStockQuote xmlns:open="http://www.example.com/open">
+ <symbol>s1</symbol>
+ <open:company>
+ <name>FlyByNightTechnology</name>
+ </open:company>
+ <open:price>1000.0</open:price>
+ <open:highPrice>1100.0</open:highPrice>
+ <open:mutualFundQuote>
+ <symbol>mutual-1</symbol>
+ </open:mutualFundQuote>
+</open:openStockQuote> \ No newline at end of file
diff --git a/branches/sdo-java-M2/sdo/impl/src/test/resources/po.xsd b/branches/sdo-java-M2/sdo/impl/src/test/resources/po.xsd
new file mode 100644
index 0000000000..5c53ac1905
--- /dev/null
+++ b/branches/sdo-java-M2/sdo/impl/src/test/resources/po.xsd
@@ -0,0 +1,62 @@
+<xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema"
+ xmlns="http://www.example.com/PO" targetNamespace="http://www.example.com/PO">
+
+ <xsd:element name="purchaseOrder" type="PurchaseOrderType"/>
+ <xsd:element name="comment" type="xsd:string"/>
+
+ <xsd:complexType name="PurchaseOrderType">
+ <xsd:sequence>
+ <xsd:element name="shipTo" type="USAddress"/>
+ <xsd:element name="billTo" type="USAddress"/>
+ <xsd:element ref="comment" minOccurs="0"/>
+ <xsd:element name="items" type="Items"/>
+
+ </xsd:sequence>
+ <xsd:attribute name="orderDate" type="xsd:date"/>
+ </xsd:complexType>
+
+ <xsd:complexType name="USAddress">
+ <xsd:sequence>
+ <xsd:element name="name" type="xsd:string"/>
+
+ <xsd:element name="street" type="xsd:string"/>
+ <xsd:element name="city" type="xsd:string"/>
+ <xsd:element name="state" type="xsd:string"/>
+ <xsd:element name="zip" type="xsd:decimal"/>
+ </xsd:sequence>
+ <xsd:attribute name="country" type="xsd:NMTOKEN" fixed="US"/>
+
+ </xsd:complexType>
+
+ <xsd:complexType name="Items">
+ <xsd:sequence>
+ <xsd:element name="item" minOccurs="0" maxOccurs="unbounded">
+ <xsd:complexType>
+ <xsd:sequence>
+
+ <xsd:element name="productName" type="xsd:string"/>
+ <xsd:element name="price" type="xsd:decimal"/>
+ <xsd:element name="quantity">
+ <xsd:simpleType>
+ <xsd:restriction base="xsd:positiveInteger">
+ <xsd:maxExclusive value="100"/>
+ </xsd:restriction>
+
+ </xsd:simpleType>
+ </xsd:element>
+ <xsd:element ref="comment" minOccurs="0"/>
+ <xsd:element name="shipDate" type="xsd:date" minOccurs="0"/>
+ </xsd:sequence>
+
+ <xsd:attribute name="partNum" type="SKU" use="required"/>
+ </xsd:complexType>
+ </xsd:element>
+ </xsd:sequence>
+ </xsd:complexType>
+ <xsd:simpleType name="SKU">
+
+ <xsd:restriction base="xsd:string">
+ <xsd:pattern value="\d{3}-[A-Z]{2}"/>
+ </xsd:restriction>
+ </xsd:simpleType>
+ </xsd:schema>
diff --git a/branches/sdo-java-M2/sdo/impl/src/test/resources/quote.xml b/branches/sdo-java-M2/sdo/impl/src/test/resources/quote.xml
new file mode 100644
index 0000000000..d7b5969e23
--- /dev/null
+++ b/branches/sdo-java-M2/sdo/impl/src/test/resources/quote.xml
@@ -0,0 +1,14 @@
+<?xml version="1.0" encoding="ASCII"?>
+<simple:stockQuote xmlns:simple="http://www.example.com/simple">
+ <symbol>fbnt</symbol>
+ <companyName>FlyByNightTechnology</companyName>
+ <price>1000.0</price>
+ <open1>1000.0</open1>
+ <high>1000.0</high>
+ <low>1000.0</low>
+ <volume>1000.0</volume>
+ <change1>1000.0</change1>
+ <quotes>
+ <price>2000.0</price>
+ </quotes>
+</simple:stockQuote> \ No newline at end of file
diff --git a/branches/sdo-java-M2/sdo/impl/src/test/resources/sdoannotations.xsd b/branches/sdo-java-M2/sdo/impl/src/test/resources/sdoannotations.xsd
new file mode 100644
index 0000000000..98be3a57d7
--- /dev/null
+++ b/branches/sdo-java-M2/sdo/impl/src/test/resources/sdoannotations.xsd
@@ -0,0 +1,60 @@
+<?xml version="1.0" encoding="UTF-8"?>
+ <!--
+ Licensed to the Apache Software Foundation (ASF) under one
+ or more contributor license agreements. See the NOTICE file
+ distributed with this work for additional information
+ regarding copyright ownership. The ASF licenses this file
+ to you under the Apache License, Version 2.0 (the
+ "License"); you may not use this file except in compliance
+ with the License. You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing,
+ software distributed under the License is distributed on an
+ "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ KIND, either express or implied. See the License for the
+ specific language governing permissions and limitations
+ under the License.
+ -->
+<xsd:schema
+ targetNamespace="http://www.example.com/sdoannotations"
+ xmlns:xsd="http://www.w3.org/2001/XMLSchema"
+ xmlns:sdoa="http://www.example.com/sdoannotations"
+ xmlns:sdo="commonj.sdo/xml"
+ xmlns:sdoj="commonj.sdo/java">
+
+ <!-- simple element with no annotations -->
+ <xsd:element name="foo0" type="xsd:string" />
+
+ <!-- simple element with sdo:name -->
+ <xsd:element name="foo1" type="xsd:string" sdo:name="foo2" />
+
+ <!-- simple element with sdo:type -->
+ <xsd:element
+ name="foo3" type="xsd:int"
+ sdo:dataType="xsd:string"
+ sdo:aliasName="foo4"
+ sdo:readOnly="true" />
+
+ <xsd:element
+ name="foo5" type="sdoa:foo6" />
+
+ <!-- complex type with no annotations -->
+ <xsd:complexType name="foo6">
+ <xsd:sequence>
+ <xsd:element name="bar1" type="xsd:int" />
+ </xsd:sequence>
+ <xsd:attribute name="bar2" type="xsd:int" />
+ </xsd:complexType>
+
+ <xsd:element
+ name="foo7" type="sdoa:foo8" />
+
+ <xsd:complexType name="foo8" sdo:name="foo9" sdoj:instanceClass="org.apache.tuscany.sdo.test.XSDHelperTestCase">
+ <xsd:sequence>
+ <xsd:element name="bar3" type="xsd:int" sdo:string="true" />
+ </xsd:sequence>
+ </xsd:complexType>
+
+</xsd:schema>
diff --git a/branches/sdo-java-M2/sdo/impl/src/test/resources/sdotypes.xsd b/branches/sdo-java-M2/sdo/impl/src/test/resources/sdotypes.xsd
new file mode 100644
index 0000000000..f206c86013
--- /dev/null
+++ b/branches/sdo-java-M2/sdo/impl/src/test/resources/sdotypes.xsd
@@ -0,0 +1,71 @@
+<?xml version="1.0" encoding="UTF-8"?>
+ <!--
+ Licensed to the Apache Software Foundation (ASF) under one
+ or more contributor license agreements. See the NOTICE file
+ distributed with this work for additional information
+ regarding copyright ownership. The ASF licenses this file
+ to you under the Apache License, Version 2.0 (the
+ "License"); you may not use this file except in compliance
+ with the License. You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing,
+ software distributed under the License is distributed on an
+ "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ KIND, either express or implied. See the License for the
+ specific language governing permissions and limitations
+ under the License.
+ -->
+<xsd:schema
+ targetNamespace="http://www.example.com/sdotypes"
+ xmlns:xsd="http://www.w3.org/2001/XMLSchema"
+ xmlns:sdot="http://www.example.com/sdotypes">
+
+ <xsd:element name="foo0" type="xsd:anySimpleType"/>
+ <xsd:element name="foo2" type="xsd:anyURI"/>
+ <xsd:element name="foo3" type="xsd:base64Binary"/>
+ <xsd:element name="foo4" type="xsd:boolean"/>
+ <xsd:element name="foo5" type="xsd:byte"/>
+ <xsd:element name="foo6" type="xsd:date"/>
+ <xsd:element name="foo7" type="xsd:dateTime"/>
+ <xsd:element name="foo8" type="xsd:decimal"/>
+ <xsd:element name="foo9" type="xsd:double"/>
+ <xsd:element name="foo10" type="xsd:duration"/>
+ <xsd:element name="foo11" type="xsd:ENTITIES"/>
+ <xsd:element name="foo12" type="xsd:ENTITY"/>
+ <xsd:element name="foo13" type="xsd:float"/>
+ <xsd:element name="foo14" type="xsd:gDay"/>
+ <xsd:element name="foo15" type="xsd:gMonth"/>
+ <xsd:element name="foo16" type="xsd:gMonthDay"/>
+ <xsd:element name="foo17" type="xsd:gYear"/>
+ <xsd:element name="foo18" type="xsd:gYearMonth"/>
+ <xsd:element name="foo19" type="xsd:hexBinary"/>
+ <xsd:element name="foo20" type="xsd:ID"/>
+ <xsd:element name="foo21" type="xsd:IDREF"/>
+ <xsd:element name="foo22" type="xsd:IDREFS"/>
+ <xsd:element name="foo23" type="xsd:int"/>
+ <xsd:element name="foo24" type="xsd:integer"/>
+ <xsd:element name="foo25" type="xsd:language"/>
+ <xsd:element name="foo26" type="xsd:long"/>
+ <xsd:element name="foo27" type="xsd:Name"/>
+ <xsd:element name="foo28" type="xsd:NCName"/>
+ <xsd:element name="foo29" type="xsd:negativeInteger"/>
+ <xsd:element name="foo30" type="xsd:NMTOKEN"/>
+ <xsd:element name="foo31" type="xsd:NMTOKENS"/>
+ <xsd:element name="foo32" type="xsd:nonNegativeInteger"/>
+ <xsd:element name="foo33" type="xsd:nonPositiveInteger"/>
+ <xsd:element name="foo34" type="xsd:normalizedString"/>
+ <xsd:element name="foo35" type="xsd:NOTATION"/>
+ <xsd:element name="foo36" type="xsd:positiveInteger"/>
+ <xsd:element name="foo37" type="xsd:QName"/>
+ <xsd:element name="foo38" type="xsd:short"/>
+ <xsd:element name="foo39" type="xsd:string"/>
+ <xsd:element name="foo40" type="xsd:time"/>
+ <xsd:element name="foo41" type="xsd:token"/>
+ <xsd:element name="foo42" type="xsd:unsignedByte"/>
+ <xsd:element name="foo43" type="xsd:unsignedInt"/>
+ <xsd:element name="foo44" type="xsd:unsignedLong"/>
+ <xsd:element name="foo45" type="xsd:unsignedShort"/>
+
+</xsd:schema>
diff --git a/branches/sdo-java-M2/sdo/impl/src/test/resources/shallowquote.xml b/branches/sdo-java-M2/sdo/impl/src/test/resources/shallowquote.xml
new file mode 100644
index 0000000000..a56f2fe2b7
--- /dev/null
+++ b/branches/sdo-java-M2/sdo/impl/src/test/resources/shallowquote.xml
@@ -0,0 +1,11 @@
+<?xml version="1.0" encoding="ASCII"?>
+<simple:stockQuote xmlns:simple="http://www.example.com/simple">
+ <symbol>fbnt</symbol>
+ <companyName>FlyByNightTechnology</companyName>
+ <price>1000.0</price>
+ <open1>1000.0</open1>
+ <high>1000.0</high>
+ <low>1000.0</low>
+ <volume>1000.0</volume>
+ <change1>1000.0</change1>
+</simple:stockQuote> \ No newline at end of file
diff --git a/branches/sdo-java-M2/sdo/impl/src/test/resources/simple.xsd b/branches/sdo-java-M2/sdo/impl/src/test/resources/simple.xsd
new file mode 100644
index 0000000000..46a2b1f4df
--- /dev/null
+++ b/branches/sdo-java-M2/sdo/impl/src/test/resources/simple.xsd
@@ -0,0 +1,41 @@
+<?xml version="1.0" encoding="UTF-8"?>
+ <!--
+ Licensed to the Apache Software Foundation (ASF) under one
+ or more contributor license agreements. See the NOTICE file
+ distributed with this work for additional information
+ regarding copyright ownership. The ASF licenses this file
+ to you under the Apache License, Version 2.0 (the
+ "License"); you may not use this file except in compliance
+ with the License. You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing,
+ software distributed under the License is distributed on an
+ "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ KIND, either express or implied. See the License for the
+ specific language governing permissions and limitations
+ under the License.
+ -->
+<xsd:schema
+ targetNamespace="http://www.example.com/simple"
+ xmlns:xsd="http://www.w3.org/2001/XMLSchema"
+ xmlns:simple="http://www.example.com/simple">
+
+ <xsd:element name="stockQuote" type="simple:Quote"/>
+
+ <xsd:complexType name="Quote">
+ <xsd:sequence>
+ <xsd:element name="symbol" type="xsd:string"/>
+ <xsd:element name="companyName" type="xsd:string"/>
+ <xsd:element name="price" type="xsd:decimal"/>
+ <xsd:element name="open1" type="xsd:decimal"/>
+ <xsd:element name="high" type="xsd:decimal"/>
+ <xsd:element name="low" type="xsd:decimal"/>
+ <xsd:element name="volume" type="xsd:double"/>
+ <xsd:element name="change1" type="xsd:double"/>
+ <xsd:element name="quotes" type="simple:Quote" minOccurs="0" maxOccurs="unbounded"/>
+ </xsd:sequence>
+ </xsd:complexType>
+
+</xsd:schema>
diff --git a/branches/sdo-java-M2/sdo/impl/src/test/resources/simplechangesummary.xml b/branches/sdo-java-M2/sdo/impl/src/test/resources/simplechangesummary.xml
new file mode 100644
index 0000000000..1a34e0bf80
--- /dev/null
+++ b/branches/sdo-java-M2/sdo/impl/src/test/resources/simplechangesummary.xml
@@ -0,0 +1,36 @@
+<?xml version="1.0" encoding="ASCII"?>
+<sdo:datagraph xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:sdo="commonj.sdo"
+ xmlns:sdo_1="http://www.apache.org/tuscany/2005/SDO" xmlns:simple="http://www.example.com/simple">
+ <changeSummary xmlns=""
+ logging="false">
+ <objectChanges key="#//@eRootObject">
+ <value xsi:type="sdo_1:ChangeSummarySetting" featureName="symbol" set="false"/>
+ <value xsi:type="sdo_1:ChangeSummarySetting" featureName="companyName" set="false"/>
+ <value xsi:type="sdo_1:ChangeSummarySetting" featureName="price" set="false"/>
+ <value xsi:type="sdo_1:ChangeSummarySetting" featureName="open1" set="false"/>
+ <value xsi:type="sdo_1:ChangeSummarySetting" featureName="high" set="false"/>
+ <value xsi:type="sdo_1:ChangeSummarySetting" featureName="low" set="false"/>
+ <value xsi:type="sdo_1:ChangeSummarySetting" featureName="volume" dataValue="0.0"
+ set="false"/>
+ <value xsi:type="sdo_1:ChangeSummarySetting" featureName="change1" dataValue="0.0"
+ set="false"/>
+ <value xsi:type="sdo_1:ChangeSummarySetting" featureName="quotes" set="false"/>
+ </objectChanges>
+ <objectChanges key="#//@eRootObject/@quotes.0">
+ <value xsi:type="sdo_1:ChangeSummarySetting" featureName="price" set="false"/>
+ </objectChanges>
+ </changeSummary>
+ <simple:Quote>
+ <symbol>fbnt</symbol>
+ <companyName>FlyByNightTechnology</companyName>
+ <price>1000.0</price>
+ <open1>1000.0</open1>
+ <high>1000.0</high>
+ <low>1000.0</low>
+ <volume>1000.0</volume>
+ <change1>1000.0</change1>
+ <quotes>
+ <price>2000.0</price>
+ </quotes>
+ </simple:Quote>
+</sdo:datagraph>
diff --git a/branches/sdo-java-M2/sdo/impl/src/test/resources/xpath.xml b/branches/sdo-java-M2/sdo/impl/src/test/resources/xpath.xml
new file mode 100644
index 0000000000..3b3e2ffbb4
--- /dev/null
+++ b/branches/sdo-java-M2/sdo/impl/src/test/resources/xpath.xml
@@ -0,0 +1,51 @@
+<?xml version="1.0" encoding="ASCII"?>
+<xpath:drive xmlns:xpath="http://www.example.com/xpath" id="0">
+ <Folder creation_date="1999-10-20" creator="Hasan" type="FolderType">
+ <FolderName>Folder00000000000</FolderName>
+ <description>marries inflamed apprehended beseeming bustle</description>
+ <SecurityObject name="secure1">
+ <Allows>
+ <Allow>
+ <User>Brian</User>
+ <Permissions>rw</Permissions>
+ </Allow>
+ <Allow>
+ <User>Fuhwei</User>
+ <Permissions>r</Permissions>
+ </Allow>
+ </Allows>
+ <Denies>
+ <Deny>
+ <User>Hasan</User>
+ </Deny>
+ <Deny>
+ <User>Frank</User>
+ </Deny>
+ </Denies>
+ </SecurityObject>
+ </Folder>
+ <Folder creation_date="2000-03-23" creator="Kapil" type="FileType">
+ <FolderName>Folder00000000011</FolderName>
+ <description>Mumbling Jumblin Pink Panther goofs it up</description>
+ <SecurityObject name="secure2">
+ <Allows>
+ <Allow>
+ <User>Imad</User>
+ <Permissions>x</Permissions>
+ </Allow>
+ <Allow>
+ <User>Robbie</User>
+ <Permissions>rwx</Permissions>
+ </Allow>
+ </Allows>
+ <Denies>
+ <Deny>
+ <User>Yang</User>
+ </Deny>
+ <Deny>
+ <User>Art</User>
+ </Deny>
+ </Denies>
+ </SecurityObject>
+ </Folder>
+</xpath:drive> \ No newline at end of file
diff --git a/branches/sdo-java-M2/sdo/impl/src/test/resources/xpath.xsd b/branches/sdo-java-M2/sdo/impl/src/test/resources/xpath.xsd
new file mode 100644
index 0000000000..0b817d425d
--- /dev/null
+++ b/branches/sdo-java-M2/sdo/impl/src/test/resources/xpath.xsd
@@ -0,0 +1,75 @@
+<xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema"
+ xmlns="http://www.example.com/xpath" targetNamespace="http://www.example.com/xpath">
+ <!--
+ Licensed to the Apache Software Foundation (ASF) under one
+ or more contributor license agreements. See the NOTICE file
+ distributed with this work for additional information
+ regarding copyright ownership. The ASF licenses this file
+ to you under the Apache License, Version 2.0 (the
+ "License"); you may not use this file except in compliance
+ with the License. You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing,
+ software distributed under the License is distributed on an
+ "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ KIND, either express or implied. See the License for the
+ specific language governing permissions and limitations
+ under the License.
+ -->
+ <xsd:element name="drive" type="DriveType"/>
+
+ <xsd:complexType name="DriveType">
+ <xsd:sequence>
+ <xsd:element name="Folder" type="FolderType" minOccurs="0" maxOccurs="unbounded"/>
+ </xsd:sequence>
+ <xsd:attribute name="id" type="xsd:int"/>
+ </xsd:complexType>
+
+ <xsd:complexType name="FolderType">
+ <xsd:sequence>
+ <xsd:element name="FolderName" type="xsd:string"/>
+ <xsd:element name="description" type="xsd:string"/>
+ <xsd:element name="SecurityObject" type="SecurityObjectType"/>
+ </xsd:sequence>
+ <xsd:attribute name="creation_date" type="xsd:date" minOccurs="0"/>
+ <xsd:attribute name="creator" type="xsd:string" minOccurs="0"/>
+ <xsd:attribute name="type" type="xsd:string" minOccurs="0"/>
+
+ </xsd:complexType>
+
+ <xsd:complexType name="AllowsObjectType">
+ <xsd:sequence>
+ <xsd:element name="Allow" minOccurs="0" maxOccurs="unbounded">
+ <xsd:complexType>
+ <xsd:sequence>
+ <xsd:element name="User" type="xsd:string"/>
+ <xsd:element name="Permissions" type="xsd:string"/>
+ </xsd:sequence>
+ </xsd:complexType>
+ </xsd:element>
+ </xsd:sequence>
+ </xsd:complexType>
+
+ <xsd:complexType name="DeniesObjectType">
+ <xsd:sequence>
+ <xsd:element name="Deny" minOccurs="0" maxOccurs="unbounded">
+ <xsd:complexType>
+ <xsd:sequence>
+ <xsd:element name="User" type="xsd:string"/>
+ </xsd:sequence>
+ </xsd:complexType>
+ </xsd:element>
+ </xsd:sequence>
+ </xsd:complexType>
+
+ <xsd:complexType name="SecurityObjectType">
+ <xsd:sequence>
+ <xsd:element name="Allows" type="AllowsObjectType"/>
+ <xsd:element name="Denies" type="DeniesObjectType"/>
+ </xsd:sequence>
+ <xsd:attribute name="name" type="xsd:string"/>
+ </xsd:complexType>
+
+</xsd:schema>
diff --git a/branches/sdo-java-M2/sdo/plugin/pom.xml b/branches/sdo-java-M2/sdo/plugin/pom.xml
new file mode 100644
index 0000000000..63a6b6d5e2
--- /dev/null
+++ b/branches/sdo-java-M2/sdo/plugin/pom.xml
@@ -0,0 +1,57 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+-->
+<project>
+ <parent>
+ <groupId>org.apache.tuscany.sdo</groupId>
+ <artifactId>tuscany-sdo</artifactId>
+ <version>1.0-incubator-M2</version>
+ </parent>
+ <modelVersion>4.0.0</modelVersion>
+ <artifactId>tuscany-sdo-plugin</artifactId>
+ <packaging>maven-plugin</packaging>
+ <name>Tuscany SDO Maven Plugin</name>
+
+ <dependencies>
+ <dependency>
+ <groupId>org.apache.maven</groupId>
+ <artifactId>maven-plugin-api</artifactId>
+ <version>2.0.4</version>
+ <scope>compile</scope>
+ </dependency>
+ <dependency>
+ <groupId>org.apache.maven</groupId>
+ <artifactId>maven-project</artifactId>
+ <version>2.0.4</version>
+ <scope>compile</scope>
+ </dependency>
+ <dependency>
+ <groupId>org.apache.maven</groupId>
+ <artifactId>maven-plugin-descriptor</artifactId>
+ <version>2.0.4</version>
+ <scope>compile</scope>
+ </dependency>
+ <dependency>
+ <groupId>org.apache.tuscany.sdo</groupId>
+ <artifactId>tuscany-sdo-tools</artifactId>
+ <version>${pom.version}</version>
+ <scope>compile</scope>
+ </dependency>
+ </dependencies>
+</project>
diff --git a/branches/sdo-java-M2/sdo/plugin/src/main/java/org/apache/tuscany/sdo/plugin/GeneratorMojo.java b/branches/sdo-java-M2/sdo/plugin/src/main/java/org/apache/tuscany/sdo/plugin/GeneratorMojo.java
new file mode 100644
index 0000000000..b73886ee24
--- /dev/null
+++ b/branches/sdo-java-M2/sdo/plugin/src/main/java/org/apache/tuscany/sdo/plugin/GeneratorMojo.java
@@ -0,0 +1,312 @@
+/**
+ *
+ * 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.plugin;
+
+import java.io.File;
+import java.io.FileFilter;
+import java.io.IOException;
+import java.util.Iterator;
+import java.util.List;
+import java.util.Map;
+
+import org.apache.maven.model.Plugin;
+import org.apache.maven.model.PluginExecution;
+import org.apache.maven.plugin.AbstractMojo;
+import org.apache.maven.plugin.MojoExecutionException;
+import org.apache.maven.plugin.descriptor.MojoDescriptor;
+import org.apache.maven.plugin.descriptor.PluginDescriptor;
+import org.apache.maven.project.MavenProject;
+import org.apache.tuscany.sdo.generate.JavaGenerator;
+import org.apache.tuscany.sdo.generate.XSD2JavaGenerator;
+
+/**
+ * @version $Rev$ $Date$
+ * @goal generate
+ * @phase generate-sources
+ * @description Generate SDO interface classes from an XML Schema
+ */
+public class GeneratorMojo extends AbstractMojo {
+ /**
+ * The directory containing schema files; defaults to ${basedir}/src/main/xsd
+ *
+ * @parameter expression="${basedir}/src/main/xsd"
+ */
+ private String schemaDir;
+
+ /**
+ * Name of the schema file; if omitted all files in the directory are processed
+ *
+ * @parameter
+ */
+ private File schemaFile;
+
+ /**
+ * The Java package to generate into. By default the value is derived from the schema URI.
+ *
+ * @parameter
+ */
+ private String javaPackage;
+
+ /**
+ * The directory to generate into; defaults to ${project.build.directory}/sdo-source
+ *
+ * @parameter expression="${project.build.directory}/sdo-source"
+ */
+ private String targetDirectory;
+
+ /**
+ * Specifies the prefix string to use for naming the generated factory.
+ *
+ * @parameter
+ */
+ private String prefix;
+
+ /**
+ * This option can be used to eliminate the generated interface and to generate only an implementation class.
+ *
+ * @parameter
+ */
+ private Boolean noInterfaces;
+
+ /**
+ * Turns off container management for containment properties.
+ *
+ * @parameter
+ */
+ private Boolean noContainment;
+
+ /**
+ * This option eliminates all change notification overhead in the generated classes.
+ *
+ * @parameter
+ */
+ private Boolean noNotification;
+
+ /**
+ * With this option, all generated properties will not record their unset state.
+ *
+ * @parameter
+ */
+ private Boolean noUnsettable;
+
+ /**
+ * Generate a fast XML parser/loader for instances of the model.
+ *
+ * @parameter
+ */
+ private Boolean generateLoader;
+
+ /**
+ * Generate a Switch class for the model.
+ *
+ * @parameter
+ */
+ private Boolean generateSwitch;
+
+ /**
+ * @parameter expression="${project}"
+ *
+ * @required
+ */
+ private MavenProject project;
+
+ /**
+ * @parameter expression="${plugin.mojos}"
+ */
+ private List mojos;
+
+ /**
+ * With this option, generated code will not have EMF references.
+ *
+ * @parameter
+ */
+ private Boolean noEMF;
+
+ /**
+ * With this option, generated interfaces will extend commonj.sdo.DataObject.
+ *
+ * @parameter
+ */
+ private Boolean interfaceDataObject;
+
+ /**
+ * Support for generating multiple schema files.
+ *
+ * @parameter
+ */
+ private SchemaFileOption[] schemaFiles;
+
+ public void execute() throws MojoExecutionException {
+
+ // check for schemaFiles parameter first, if properties are not set, use global property
+ if (null != schemaFiles) {
+ for (int i = 0; i < schemaFiles.length; ++i) {
+ SchemaFileOption sf = schemaFiles[i];
+
+ if (null == sf.getTargetDirectory()) {
+ sf.setTargetDirectory(targetDirectory);
+ }
+ if (null == sf.getJavaPackage()) {
+ sf.setJavaPackage(javaPackage);
+ }
+ if (null == sf.isNoInterfaces()) {
+ sf.setNoInterfaces(noInterfaces);
+ }
+ if (null == sf.isNoContainment()) {
+ sf.setNoContainment(noContainment);
+ }
+ if (null == sf.isNoNotification()) {
+ sf.setNoNotification(noNotification);
+ }
+ if (null == sf.isNoUnsettable()) {
+ sf.setNoUnsettable(noUnsettable);
+ }
+ if (null == sf.isGenerateLoader()) {
+ sf.setGenerateLoader(generateLoader);
+ }
+ if (null == sf.isGenerateSwitch()) {
+ sf.setGenerateSwitch(generateSwitch);
+ }
+ // if (null == sf.getCompilerSourceRoots()) {
+ // sf.setCompilerSourceRoots(compileSourceRoots);
+ // }
+ if (null == sf.isNoEMF()) {
+ sf.setNoEMF(noEMF);
+ }
+ if (null == sf.isInterfaceDataObject()) {
+ sf.setInterfaceDataObject(interfaceDataObject);
+ }
+ if (sf.getFileName() == null || sf.getFileName().length() == 0) {
+ throw new MojoExecutionException("no fileName specfied for schema.");
+ }
+ if (!sf.getFileName().canRead() || !sf.getFileName().isFile()) {
+
+ throw new MojoExecutionException("file can not be read:" + sf.getFileName());
+ }
+ }
+ } else {
+
+ if (schemaFile == null) {
+ File[] files = new File(schemaDir).listFiles(FILTER);
+ schemaFiles = new SchemaFileOption[files.length];
+ for (int i = files.length - 1; i > -1; --i) {
+ schemaFiles[i] = new SchemaFileOption();
+ schemaFiles[i].setFileName(files[i]);
+ schemaFiles[i].setJavaPackage(javaPackage);
+ // schemaFiles[i].setCompilerSourceRoots(compileSourceRoots);
+ schemaFiles[i].setGenerateLoader(generateLoader);
+ schemaFiles[i].setGenerateSwitch(generateSwitch);
+ schemaFiles[i].setNoContainment(noContainment);
+ schemaFiles[i].setNoEMF(noEMF);
+ schemaFiles[i].setInterfaceDataObject(interfaceDataObject);
+ schemaFiles[i].setNoInterfaces(noInterfaces);
+ schemaFiles[i].setNoNotification(noNotification);
+ schemaFiles[i].setNoUnsettable(noUnsettable);
+ schemaFiles[i].setPrefix(prefix);
+ schemaFiles[i].setTargetDirectory(targetDirectory);
+ }
+ } else {
+ schemaFiles = new SchemaFileOption[] { new SchemaFileOption() };
+ schemaFiles[0].setFileName(schemaFile);
+ schemaFiles[0].setJavaPackage(javaPackage);
+ // schemaFiles[0].setCompilerSourceRoots(compileSourceRoots);
+ schemaFiles[0].setGenerateLoader(generateLoader);
+ schemaFiles[0].setGenerateSwitch(generateSwitch);
+ schemaFiles[0].setNoContainment(noContainment);
+ schemaFiles[0].setNoEMF(noEMF);
+ schemaFiles[0].setInterfaceDataObject(interfaceDataObject);
+ schemaFiles[0].setNoInterfaces(noInterfaces);
+ schemaFiles[0].setNoNotification(noNotification);
+ schemaFiles[0].setNoUnsettable(noUnsettable);
+ schemaFiles[0].setPrefix(prefix);
+ schemaFiles[0].setTargetDirectory(targetDirectory);
+ }
+ }
+
+ for (int i = 0; i < schemaFiles.length; i++) {
+ File file = schemaFiles[i].getFileName();
+ File marker = new File(targetDirectory, ".gen#" + file.getName());
+ if (file.lastModified() > marker.lastModified()) {
+ getLog().info("Generating SDO interfaces from " + file);
+
+ int genOptions = 0;
+
+ if (schemaFiles[i].isNoInterfaces() != null && schemaFiles[i].isNoInterfaces().booleanValue()) {
+ genOptions |= JavaGenerator.OPTION_NO_INTERFACES;
+ }
+ if (schemaFiles[i].isNoContainment() != null && schemaFiles[i].isNoContainment().booleanValue()) {
+ genOptions |= JavaGenerator.OPTION_NO_CONTAINMENT;
+ }
+ if (schemaFiles[i].isNoNotification() != null && schemaFiles[i].isNoNotification().booleanValue()) {
+ genOptions |= JavaGenerator.OPTION_NO_NOTIFICATION;
+ }
+ if (schemaFiles[i].isGenerateLoader() != null && schemaFiles[i].isGenerateLoader().booleanValue()) {
+ genOptions |= JavaGenerator.OPTION_GENERATE_LOADER;
+ }
+ if (schemaFiles[i].isNoUnsettable() != null && schemaFiles[i].isNoUnsettable().booleanValue()) {
+ genOptions |= JavaGenerator.OPTION_NO_UNSETTABLE;
+ }
+ if (schemaFiles[i].isGenerateSwitch() != null && schemaFiles[i].isGenerateSwitch().booleanValue()) {
+ genOptions |= JavaGenerator.OPTION_GENERATE_SWITCH;
+ }
+ if (schemaFiles[i].isNoEMF() != null && schemaFiles[i].isNoEMF().booleanValue()) {
+ genOptions |= JavaGenerator.OPTION_NO_EMF;
+ }
+ if (schemaFiles[i].isInterfaceDataObject() != null
+ && schemaFiles[i].isInterfaceDataObject().booleanValue()) {
+ genOptions |= JavaGenerator.OPTION_INTERFACE_DO;
+ }
+
+ XSD2JavaGenerator.generateFromXMLSchema(file.toString(), null, targetDirectory, javaPackage, prefix,
+ genOptions);
+ }
+ try {
+ marker.createNewFile();
+ } catch (IOException e) {
+ throw new MojoExecutionException(e.getMessage() + "'" + marker.getAbsolutePath() + "'", e);
+ }
+ marker.setLastModified(System.currentTimeMillis());
+ }
+
+ targetDirectory = targetDirectory.replace('/', File.separatorChar);
+
+ // FIXME: [rfeng] Workaround to figure out the current execution phase
+ MojoDescriptor descriptor = (MojoDescriptor) mojos.get(0);
+ PluginDescriptor pluginDescriptor = descriptor.getPluginDescriptor();
+ Map pluginMap = project.getBuild().getPluginsAsMap();
+ Plugin plugin = (Plugin) pluginMap.get(pluginDescriptor.getGroupId() + ":" + pluginDescriptor.getArtifactId());
+ // How to get the current execution id?
+ for (Iterator i = plugin.getExecutions().iterator(); i.hasNext();) {
+ PluginExecution execution = (PluginExecution) i.next();
+ String phase = execution.getPhase();
+ if (phase != null && phase.indexOf("-test-") != -1) {
+ project.addTestCompileSourceRoot(targetDirectory);
+ } else {
+ project.addCompileSourceRoot(targetDirectory);
+ }
+ }
+ }
+
+ private static final FileFilter FILTER = new FileFilter() {
+ public boolean accept(File pathname) {
+ return (pathname.isFile() || !pathname.isHidden());
+ }
+ };
+}
diff --git a/branches/sdo-java-M2/sdo/plugin/src/main/java/org/apache/tuscany/sdo/plugin/SchemaFileOption.java b/branches/sdo-java-M2/sdo/plugin/src/main/java/org/apache/tuscany/sdo/plugin/SchemaFileOption.java
new file mode 100644
index 0000000000..dfd2f25001
--- /dev/null
+++ b/branches/sdo-java-M2/sdo/plugin/src/main/java/org/apache/tuscany/sdo/plugin/SchemaFileOption.java
@@ -0,0 +1,208 @@
+/**
+ *
+ * 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.plugin;
+
+import java.io.File;
+
+public class SchemaFileOption {
+
+ /**
+ * Name of the schema file
+ *
+ */
+ private File fileName;
+
+ /**
+ * The Java package to generate into. By default the value is derived from the schema URI.
+ *
+ * @parameter
+ */
+ private String javaPackage;
+
+ /**
+ * The directory to generate into; defaults to ${project.build.directory}/sdo-source
+ *
+ * @parameter expression="${project.build.directory}/sdo-source"
+ */
+ private String targetDirectory;
+
+ /**
+ * Specifies the prefix string to use for naming the generated factory.
+ *
+ * @parameter
+ */
+ private String prefix;
+
+ /**
+ * This option can be used to eliminate the generated interface and to generate only an implementation class.
+ *
+ * @parameter
+ */
+ private Boolean noInterfaces;
+
+ /**
+ * Turns off container management for containment properties.
+ *
+ * @parameter
+ */
+ private Boolean noContainment;
+
+ /**
+ * This option eliminates all change notification overhead in the generated classes.
+ *
+ * @parameter
+ */
+ private Boolean noNotification;
+
+ /**
+ * With this option, all generated properties will not record their unset state.
+ *
+ * @parameter
+ */
+ private Boolean noUnsettable;
+
+ /**
+ * Generate a fast XML parser/loader for instances of the model.
+ *
+ * @parameter
+ */
+ private Boolean generateLoader;
+
+ /**
+ * Generate a Switch class for the model.
+ *
+ * @parameter
+ */
+ private Boolean generateSwitch;
+
+ /**
+ * With this option, generated code will not have EMF references.
+ *
+ * @parameter
+ */
+ private Boolean noEMF;
+
+ /**
+ * With this option, generated interfaces will extend commonj.sdo.DataObject.
+ *
+ * @parameter
+ */
+ private Boolean interfaceDataObject;
+
+ public SchemaFileOption() {
+ }
+
+ public Boolean isGenerateLoader() {
+ return generateLoader;
+ }
+
+ public void setGenerateLoader(Boolean generateLoader) {
+ this.generateLoader = generateLoader;
+ }
+
+ public Boolean isGenerateSwitch() {
+ return generateSwitch;
+ }
+
+ public void setGenerateSwitch(Boolean generateSwitch) {
+ this.generateSwitch = generateSwitch;
+ }
+
+ public String getJavaPackage() {
+ return javaPackage;
+ }
+
+ public void setJavaPackage(String javaPackage) {
+ this.javaPackage = javaPackage;
+ }
+
+ public Boolean isNoContainment() {
+ return noContainment;
+ }
+
+ public void setNoContainment(Boolean noContainment) {
+ this.noContainment = noContainment;
+ }
+
+ public Boolean isNoEMF() {
+ return noEMF;
+ }
+
+ public void setNoEMF(Boolean noEMF) {
+ this.noEMF = noEMF;
+ }
+
+ public Boolean isNoInterfaces() {
+ return noInterfaces;
+ }
+
+ public void setNoInterfaces(Boolean noInterfaces) {
+ this.noInterfaces = noInterfaces;
+ }
+
+ public Boolean isNoNotification() {
+ return noNotification;
+ }
+
+ public void setNoNotification(Boolean noNotification) {
+ this.noNotification = noNotification;
+ }
+
+ public Boolean isNoUnsettable() {
+ return noUnsettable;
+ }
+
+ public void setNoUnsettable(Boolean noUnsettable) {
+ this.noUnsettable = noUnsettable;
+ }
+
+ public String getPrefix() {
+ return prefix;
+ }
+
+ public void setPrefix(String prefix) {
+ this.prefix = prefix;
+ }
+
+ public String getTargetDirectory() {
+ return targetDirectory;
+ }
+
+ public void setTargetDirectory(String targetDirectory) {
+ this.targetDirectory = targetDirectory;
+ }
+
+ public File getFileName() {
+ return fileName;
+ }
+
+ public void setFileName(File fileName) {
+ this.fileName = fileName;
+ }
+
+ public Boolean isInterfaceDataObject() {
+ return interfaceDataObject;
+ }
+
+ public void setInterfaceDataObject(Boolean interfaceDataObject) {
+ this.interfaceDataObject = interfaceDataObject;
+ }
+
+}
diff --git a/branches/sdo-java-M2/sdo/plugin/src/main/resources/META-INF/LICENSE.txt b/branches/sdo-java-M2/sdo/plugin/src/main/resources/META-INF/LICENSE.txt
new file mode 100644
index 0000000000..25d78feeac
--- /dev/null
+++ b/branches/sdo-java-M2/sdo/plugin/src/main/resources/META-INF/LICENSE.txt
@@ -0,0 +1,1277 @@
+
+ Apache License
+ Version 2.0, January 2004
+ http://www.apache.org/licenses/
+
+ TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION
+
+ 1. Definitions.
+
+ "License" shall mean the terms and conditions for use, reproduction,
+ and distribution as defined by Sections 1 through 9 of this document.
+
+ "Licensor" shall mean the copyright owner or entity authorized by
+ the copyright owner that is granting the License.
+
+ "Legal Entity" shall mean the union of the acting entity and all
+ other entities that control, are controlled by, or are under common
+ control with that entity. For the purposes of this definition,
+ "control" means (i) the power, direct or indirect, to cause the
+ direction or management of such entity, whether by contract or
+ otherwise, or (ii) ownership of fifty percent (50%) or more of the
+ outstanding shares, or (iii) beneficial ownership of such entity.
+
+ "You" (or "Your") shall mean an individual or Legal Entity
+ exercising permissions granted by this License.
+
+ "Source" form shall mean the preferred form for making modifications,
+ including but not limited to software source code, documentation
+ source, and configuration files.
+
+ "Object" form shall mean any form resulting from mechanical
+ transformation or translation of a Source form, including but
+ not limited to compiled object code, generated documentation,
+ and conversions to other media types.
+
+ "Work" shall mean the work of authorship, whether in Source or
+ Object form, made available under the License, as indicated by a
+ copyright notice that is included in or attached to the work
+ (an example is provided in the Appendix below).
+
+ "Derivative Works" shall mean any work, whether in Source or Object
+ form, that is based on (or derived from) the Work and for which the
+ editorial revisions, annotations, elaborations, or other modifications
+ represent, as a whole, an original work of authorship. For the purposes
+ of this License, Derivative Works shall not include works that remain
+ separable from, or merely link (or bind by name) to the interfaces of,
+ the Work and Derivative Works thereof.
+
+ "Contribution" shall mean any work of authorship, including
+ the original version of the Work and any modifications or additions
+ to that Work or Derivative Works thereof, that is intentionally
+ submitted to Licensor for inclusion in the Work by the copyright owner
+ or by an individual or Legal Entity authorized to submit on behalf of
+ the copyright owner. For the purposes of this definition, "submitted"
+ means any form of electronic, verbal, or written communication sent
+ to the Licensor or its representatives, including but not limited to
+ communication on electronic mailing lists, source code control systems,
+ and issue tracking systems that are managed by, or on behalf of, the
+ Licensor for the purpose of discussing and improving the Work, but
+ excluding communication that is conspicuously marked or otherwise
+ designated in writing by the copyright owner as "Not a Contribution."
+
+ "Contributor" shall mean Licensor and any individual or Legal Entity
+ on behalf of whom a Contribution has been received by Licensor and
+ subsequently incorporated within the Work.
+
+ 2. Grant of Copyright License. Subject to the terms and conditions of
+ this License, each Contributor hereby grants to You a perpetual,
+ worldwide, non-exclusive, no-charge, royalty-free, irrevocable
+ copyright license to reproduce, prepare Derivative Works of,
+ publicly display, publicly perform, sublicense, and distribute the
+ Work and such Derivative Works in Source or Object form.
+
+ 3. Grant of Patent License. Subject to the terms and conditions of
+ this License, each Contributor hereby grants to You a perpetual,
+ worldwide, non-exclusive, no-charge, royalty-free, irrevocable
+ (except as stated in this section) patent license to make, have made,
+ use, offer to sell, sell, import, and otherwise transfer the Work,
+ where such license applies only to those patent claims licensable
+ by such Contributor that are necessarily infringed by their
+ Contribution(s) alone or by combination of their Contribution(s)
+ with the Work to which such Contribution(s) was submitted. If You
+ institute patent litigation against any entity (including a
+ cross-claim or counterclaim in a lawsuit) alleging that the Work
+ or a Contribution incorporated within the Work constitutes direct
+ or contributory patent infringement, then any patent licenses
+ granted to You under this License for that Work shall terminate
+ as of the date such litigation is filed.
+
+ 4. Redistribution. You may reproduce and distribute copies of the
+ Work or Derivative Works thereof in any medium, with or without
+ modifications, and in Source or Object form, provided that You
+ meet the following conditions:
+
+ (a) You must give any other recipients of the Work or
+ Derivative Works a copy of this License; and
+
+ (b) You must cause any modified files to carry prominent notices
+ stating that You changed the files; and
+
+ (c) You must retain, in the Source form of any Derivative Works
+ that You distribute, all copyright, patent, trademark, and
+ attribution notices from the Source form of the Work,
+ excluding those notices that do not pertain to any part of
+ the Derivative Works; and
+
+ (d) If the Work includes a "NOTICE" text file as part of its
+ distribution, then any Derivative Works that You distribute must
+ include a readable copy of the attribution notices contained
+ within such NOTICE file, excluding those notices that do not
+ pertain to any part of the Derivative Works, in at least one
+ of the following places: within a NOTICE text file distributed
+ as part of the Derivative Works; within the Source form or
+ documentation, if provided along with the Derivative Works; or,
+ within a display generated by the Derivative Works, if and
+ wherever such third-party notices normally appear. The contents
+ of the NOTICE file are for informational purposes only and
+ do not modify the License. You may add Your own attribution
+ notices within Derivative Works that You distribute, alongside
+ or as an addendum to the NOTICE text from the Work, provided
+ that such additional attribution notices cannot be construed
+ as modifying the License.
+
+ You may add Your own copyright statement to Your modifications and
+ may provide additional or different license terms and conditions
+ for use, reproduction, or distribution of Your modifications, or
+ for any such Derivative Works as a whole, provided Your use,
+ reproduction, and distribution of the Work otherwise complies with
+ the conditions stated in this License.
+
+ 5. Submission of Contributions. Unless You explicitly state otherwise,
+ any Contribution intentionally submitted for inclusion in the Work
+ by You to the Licensor shall be under the terms and conditions of
+ this License, without any additional terms or conditions.
+ Notwithstanding the above, nothing herein shall supersede or modify
+ the terms of any separate license agreement you may have executed
+ with Licensor regarding such Contributions.
+
+ 6. Trademarks. This License does not grant permission to use the trade
+ names, trademarks, service marks, or product names of the Licensor,
+ except as required for reasonable and customary use in describing the
+ origin of the Work and reproducing the content of the NOTICE file.
+
+ 7. Disclaimer of Warranty. Unless required by applicable law or
+ agreed to in writing, Licensor provides the Work (and each
+ Contributor provides its Contributions) on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
+ implied, including, without limitation, any warranties or conditions
+ of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A
+ PARTICULAR PURPOSE. You are solely responsible for determining the
+ appropriateness of using or redistributing the Work and assume any
+ risks associated with Your exercise of permissions under this License.
+
+ 8. Limitation of Liability. In no event and under no legal theory,
+ whether in tort (including negligence), contract, or otherwise,
+ unless required by applicable law (such as deliberate and grossly
+ negligent acts) or agreed to in writing, shall any Contributor be
+ liable to You for damages, including any direct, indirect, special,
+ incidental, or consequential damages of any character arising as a
+ result of this License or out of the use or inability to use the
+ Work (including but not limited to damages for loss of goodwill,
+ work stoppage, computer failure or malfunction, or any and all
+ other commercial damages or losses), even if such Contributor
+ has been advised of the possibility of such damages.
+
+ 9. Accepting Warranty or Additional Liability. While redistributing
+ the Work or Derivative Works thereof, You may choose to offer,
+ and charge a fee for, acceptance of support, warranty, indemnity,
+ or other liability obligations and/or rights consistent with this
+ License. However, in accepting such obligations, You may act only
+ on Your own behalf and on Your sole responsibility, not on behalf
+ of any other Contributor, and only if You agree to indemnify,
+ defend, and hold each Contributor harmless for any liability
+ incurred by, or claims asserted against, such Contributor by reason
+ of your accepting any such warranty or additional liability.
+
+ END OF TERMS AND CONDITIONS
+
+ APPENDIX: How to apply the Apache License to your work.
+
+ To apply the Apache License to your work, attach the following
+ boilerplate notice, with the fields enclosed by brackets "[]"
+ replaced with your own identifying information. (Don't include
+ the brackets!) The text should be enclosed in the appropriate
+ comment syntax for the file format. We also recommend that a
+ file or class name and description of purpose be included on the
+ same "printed page" as the copyright notice for easier
+ identification within third-party archives.
+
+ Copyright [yyyy] [name of copyright owner]
+
+ Licensed 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.
+
+
+APACHE TUSCANY SUBCOMPONENTS:
+
+The Apache Tuscany distribution includes a number of subcomponents with
+separate copyright notices and license terms. Your use of the source
+code for the these subcomponents is subject to the terms and
+conditions of the following licenses.
+
+===============================================================================
+
+For the Eclipse Modeling Framework component and the Celtix binding:
+
+Eclipse Public License - v 1.0
+
+THE ACCOMPANYING PROGRAM IS PROVIDED UNDER THE TERMS OF THIS ECLIPSE
+PUBLIC LICENSE ("AGREEMENT"). ANY USE, REPRODUCTION OR DISTRIBUTION OF
+THE PROGRAM CONSTITUTES RECIPIENT'S ACCEPTANCE OF THIS AGREEMENT.
+
+1. DEFINITIONS
+
+"Contribution" means:
+
+a) in the case of the initial Contributor, the initial code and
+documentation distributed under this Agreement, and
+b) in the case of each subsequent Contributor:
+
+i) changes to the Program, and
+
+ii) additions to the Program;
+
+where such changes and/or additions to the Program originate from and
+are distributed by that particular Contributor. A Contribution
+'originates' from a Contributor if it was added to the Program by such
+Contributor itself or anyone acting on such Contributor's behalf.
+Contributions do not include additions to the Program which: (i) are
+separate modules of software distributed in conjunction with the
+Program under their own license agreement, and (ii) are not derivative
+works of the Program.
+
+"Contributor" means any person or entity that distributes the Program.
+
+"Licensed Patents " mean patent claims licensable by a Contributor
+which are necessarily infringed by the use or sale of its Contribution
+alone or when combined with the Program.
+
+"Program" means the Contributions distributed in accordance with this
+Agreement.
+
+"Recipient" means anyone who receives the Program under this
+Agreement, including all Contributors.
+
+2. GRANT OF RIGHTS
+
+a) Subject to the terms of this Agreement, each Contributor hereby
+grants Recipient a non-exclusive, worldwide, royalty-free copyright
+license to reproduce, prepare derivative works of, publicly display,
+publicly perform, distribute and sublicense the Contribution of such
+Contributor, if any, and such derivative works, in source code and
+object code form.
+
+b) Subject to the terms of this Agreement, each Contributor hereby
+grants Recipient a non-exclusive, worldwide, royalty-free patent
+license under Licensed Patents to make, use, sell, offer to sell,
+import and otherwise transfer the Contribution of such Contributor, if
+any, in source code and object code form. This patent license shall
+apply to the combination of the Contribution and the Program if, at
+the time the Contribution is added by the Contributor, such addition
+of the Contribution causes such combination to be covered by the
+Licensed Patents. The patent license shall not apply to any other
+combinations which include the Contribution. No hardware per se is
+licensed hereunder.
+
+c) Recipient understands that although each Contributor grants the
+licenses to its Contributions set forth herein, no assurances are
+provided by any Contributor that the Program does not infringe the
+patent or other intellectual property rights of any other entity. Each
+Contributor disclaims any liability to Recipient for claims brought by
+any other entity based on infringement of intellectual property rights
+or otherwise. As a condition to exercising the rights and licenses
+granted hereunder, each Recipient hereby assumes sole responsibility
+to secure any other intellectual property rights needed, if any. For
+example, if a third party patent license is required to allow
+Recipient to distribute the Program, it is Recipient's responsibility
+to acquire that license before distributing the Program.
+
+d) Each Contributor represents that to its knowledge it has sufficient
+copyright rights in its Contribution, if any, to grant the copyright
+license set forth in this Agreement.
+
+3. REQUIREMENTS
+
+A Contributor may choose to distribute the Program in object code form
+under its own license agreement, provided that:
+
+a) it complies with the terms and conditions of this Agreement; and
+
+b) its license agreement:
+
+i) effectively disclaims on behalf of all Contributors all warranties
+and conditions, express and implied, including warranties or
+conditions of title and non-infringement, and implied warranties or
+conditions of merchantability and fitness for a particular purpose;
+
+ii) effectively excludes on behalf of all Contributors all liability
+for damages, including direct, indirect, special, incidental and
+consequential damages, such as lost profits;
+
+iii) states that any provisions which differ from this Agreement are
+offered by that Contributor alone and not by any other party; and
+
+iv) states that source code for the Program is available from such
+Contributor, and informs licensees how to obtain it in a reasonable
+manner on or through a medium customarily used for software exchange.
+
+When the Program is made available in source code form:
+
+a) it must be made available under this Agreement; and
+
+b) a copy of this Agreement must be included with each copy of the
+Program.
+
+Contributors may not remove or alter any copyright notices contained
+within the Program.
+
+Each Contributor must identify itself as the originator of its
+Contribution, if any, in a manner that reasonably allows subsequent
+Recipients to identify the originator of the Contribution.
+
+4. COMMERCIAL DISTRIBUTION
+
+Commercial distributors of software may accept certain
+responsibilities with respect to end users, business partners and the
+like. While this license is intended to facilitate the commercial use
+of the Program, the Contributor who includes the Program in a
+commercial product offering should do so in a manner which does not
+create potential liability for other Contributors. Therefore, if a
+Contributor includes the Program in a commercial product offering,
+such Contributor ("Commercial Contributor") hereby agrees to defend
+and indemnify every other Contributor ("Indemnified Contributor")
+against any losses, damages and costs (collectively "Losses") arising
+from claims, lawsuits and other legal actions brought by a third party
+against the Indemnified Contributor to the extent caused by the acts
+or omissions of such Commercial Contributor in connection with its
+distribution of the Program in a commercial product offering. The
+obligations in this section do not apply to any claims or Losses
+relating to any actual or alleged intellectual property infringement.
+In order to qualify, an Indemnified Contributor must: a) promptly
+notify the Commercial Contributor in writing of such claim, and b)
+allow the Commercial Contributor to control, and cooperate with the
+Commercial Contributor in, the defense and any related settlement
+negotiations. The Indemnified Contributor may participate in any such
+claim at its own expense.
+
+For example, a Contributor might include the Program in a commercial
+product offering, Product X. That Contributor is then a Commercial
+Contributor. If that Commercial Contributor then makes performance
+claims, or offers warranties related to Product X, those performance
+claims and warranties are such Commercial Contributor's responsibility
+alone. Under this section, the Commercial Contributor would have to
+defend claims against the other Contributors related to those
+performance claims and warranties, and if a court requires any other
+Contributor to pay any damages as a result, the Commercial Contributor
+must pay those damages.
+
+5. NO WARRANTY
+
+EXCEPT AS EXPRESSLY SET FORTH IN THIS AGREEMENT, THE PROGRAM IS
+PROVIDED ON AN "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+KIND, EITHER EXPRESS OR IMPLIED INCLUDING, WITHOUT LIMITATION, ANY
+WARRANTIES OR CONDITIONS OF TITLE, NON-INFRINGEMENT, MERCHANTABILITY
+OR FITNESS FOR A PARTICULAR PURPOSE. Each Recipient is solely
+responsible for determining the appropriateness of using and
+distributing the Program and assumes all risks associated with its
+exercise of rights under this Agreement , including but not limited to
+the risks and costs of program errors, compliance with applicable
+laws, damage to or loss of data, programs or equipment, and
+unavailability or interruption of operations.
+
+6. DISCLAIMER OF LIABILITY
+
+EXCEPT AS EXPRESSLY SET FORTH IN THIS AGREEMENT, NEITHER RECIPIENT NOR
+ANY CONTRIBUTORS SHALL HAVE ANY LIABILITY FOR ANY DIRECT, INDIRECT,
+INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING
+WITHOUT LIMITATION LOST PROFITS), HOWEVER CAUSED AND ON ANY THEORY OF
+LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
+NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OR
+DISTRIBUTION OF THE PROGRAM OR THE EXERCISE OF ANY RIGHTS GRANTED
+HEREUNDER, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGES.
+
+7. GENERAL
+
+If any provision of this Agreement is invalid or unenforceable under
+applicable law, it shall not affect the validity or enforceability of
+the remainder of the terms of this Agreement, and without further
+action by the parties hereto, such provision shall be reformed to the
+minimum extent necessary to make such provision valid and enforceable.
+
+If Recipient institutes patent litigation against any entity
+(including a cross-claim or counterclaim in a lawsuit) alleging that
+the Program itself (excluding combinations of the Program with other
+software or hardware) infringes such Recipient's patent(s), then such
+Recipient's rights granted under Section 2(b) shall terminate as of
+the date such litigation is filed.
+
+All Recipient's rights under this Agreement shall terminate if it
+fails to comply with any of the material terms or conditions of this
+Agreement and does not cure such failure in a reasonable period of
+time after becoming aware of such noncompliance. If all Recipient's
+rights under this Agreement terminate, Recipient agrees to cease use
+and distribution of the Program as soon as reasonably practicable.
+However, Recipient's obligations under this Agreement and any licenses
+granted by Recipient relating to the Program shall continue and
+survive.
+
+Everyone is permitted to copy and distribute copies of this Agreement,
+but in order to avoid inconsistency the Agreement is copyrighted and
+may only be modified in the following manner. The Agreement Steward
+reserves the right to publish new versions (including revisions) of
+this Agreement from time to time. No one other than the Agreement
+Steward has the right to modify this Agreement. The Eclipse Foundation
+is the initial Agreement Steward. The Eclipse Foundation may assign
+the responsibility to serve as the Agreement Steward to a suitable
+separate entity. Each new version of the Agreement will be given a
+distinguishing version number. The Program (including Contributions)
+may always be distributed subject to the version of the Agreement
+under which it was received. In addition, after a new version of the
+Agreement is published, Contributor may elect to distribute the
+Program (including its Contributions) under the new version. Except as
+expressly stated in Sections 2(a) and 2(b) above, Recipient receives
+no rights or licenses to the intellectual property of any Contributor
+under this Agreement, whether expressly, by implication, estoppel or
+otherwise. All rights in the Program not expressly granted under this
+Agreement are reserved.
+
+This Agreement is governed by the laws of the State of New York and
+the intellectual property laws of the United States of America. No
+party to this Agreement will bring a legal action under this Agreement
+more than one year after the cause of action arose. Each party waives
+its rights to a jury trial in any resulting litigation.
+
+===============================================================================
+
+For the Rhino JavaScript container component:
+
+Mozilla Public License 1.1 (MPL 1.1)
+
+1. Definitions.
+
+ 1.0.1. "Commercial Use" means distribution or otherwise making the
+Covered Code available to a third party.
+
+ 1.1. "Contributor" means each entity that creates or contributes to
+the creation of Modifications.
+
+ 1.2. "Contributor Version" means the combination of the Original Code,
+prior Modifications used by a Contributor, and the Modifications made by that
+particular Contributor.
+
+ 1.3. "Covered Code" means the Original Code or Modifications or the
+combination of the Original Code and Modifications, in each case including
+portions thereof.
+
+ 1.4. "Electronic Distribution Mechanism" means a mechanism generally
+accepted in the software development community for the electronic transfer of
+data.
+
+ 1.5. "Executable" means Covered Code in any form other than Source
+Code.
+
+ 1.6. "Initial Developer" means the individual or entity identified as
+the Initial Developer in the Source Code notice required by Exhibit A.
+
+ 1.7. "Larger Work" means a work which combines Covered Code or
+portions thereof with code not governed by the terms of this License.
+
+ 1.8. "License" means this document.
+
+ 1.8.1. "Licensable" means having the right to grant, to the maximum
+extent possible, whether at the time of the initial grant or subsequently
+acquired, any and all of the rights conveyed herein.
+
+ 1.9. "Modifications" means any addition to or deletion from the
+substance or structure of either the Original Code or any previous
+Modifications. When Covered Code is released as a series of files, a
+Modification is:
+ A. Any addition to or deletion from the contents of a file
+containing Original Code or previous Modifications.
+
+ B. Any new file that contains any part of the Original Code or
+previous Modifications.
+
+ 1.10. "Original Code" means Source Code of computer software code
+which is described in the Source Code notice required by Exhibit A as Original
+Code, and which, at the time of its release under this License is not already
+Covered Code governed by this License.
+
+ 1.10.1. "Patent Claims" means any patent claim(s), now owned or
+hereafter acquired, including without limitation, method, process, and
+apparatus claims, in any patent Licensable by grantor.
+
+ 1.11. "Source Code" means the preferred form of the Covered Code for
+making modifications to it, including all modules it contains, plus any
+associated interface definition files, scripts used to control compilation and
+installation of an Executable, or source code differential comparisons against
+either the Original Code or another well known, available Covered Code of the
+Contributor's choice. The Source Code can be in a compressed or archival form,
+provided the appropriate decompression or de-archiving software is widely
+available for no charge.
+
+ 1.12. "You" (or "Your") means an individual or a legal entity
+exercising rights under, and complying with all of the terms of, this License
+or a future version of this License issued under Section 6.1. For legal
+entities, "You" includes any entity which controls, is controlled by, or is
+under common control with You. For purposes of this definition, "control"
+means (a) the power, direct or indirect, to cause the direction or management
+of such entity, whether by contract or otherwise, or (b) ownership of more
+than fifty percent (50%) of the outstanding shares or beneficial ownership of
+such entity.
+
+2. Source Code License.
+
+ 2.1. The Initial Developer Grant.
+ The Initial Developer hereby grants You a world-wide, royalty-free,
+non-exclusive license, subject to third party intellectual property claims:
+ (a) under intellectual property rights (other than patent or
+trademark) Licensable by Initial Developer to use, reproduce, modify, display,
+perform, sublicense and distribute the Original Code (or portions thereof)
+with or without Modifications, and/or as part of a Larger Work; and
+
+ (b) under Patents Claims infringed by the making, using or selling
+of Original Code, to make, have made, use, practice, sell, and offer for sale,
+and/or otherwise dispose of the Original Code (or portions thereof).
+ (c) the licenses granted in this Section 2.1(a) and
+(b) are effective on the date Initial Developer first distributes Original
+Code under the terms of this License.
+
+ (d) Notwithstanding Section 2.1(b) above, no patent license is
+granted: 1) for code that You delete from the Original Code; 2) separate from
+the Original Code; or 3) for infringements caused by: i) the modification of
+the Original Code or ii) the combination of the Original Code with other
+software or devices.
+
+ 2.2. Contributor Grant.
+ Subject to third party intellectual property claims, each Contributor
+hereby grants You a world-wide, royalty-free, non-exclusive license
+
+ (a) under intellectual property rights (other than patent or
+trademark) Licensable by Contributor, to use, reproduce, modify, display,
+perform, sublicense and distribute the Modifications created by such
+Contributor (or portions thereof) either on an unmodified basis, with other
+Modifications, as Covered Code and/or as part of a Larger Work; and
+
+ (b) under Patent Claims infringed by the making, using, or selling
+of Modifications made by that Contributor either alone and/or in combination
+with its Contributor Version (or portions of such combination), to make, use,
+sell, offer for sale, have made, and/or otherwise dispose of: 1) Modifications
+made by that Contributor (or portions thereof); and 2) the combination of
+Modifications made by that Contributor with its Contributor Version (or
+portions of such combination).
+
+ (c) the licenses granted in Sections 2.2(a) and 2.2(b) are
+effective on the date Contributor first makes Commercial Use of the Covered
+Code.
+
+ (d) Notwithstanding Section 2.2(b) above, no patent license is
+granted: 1) for any code that Contributor has deleted from the Contributor
+Version; 2) separate from the Contributor Version; 3) for infringements
+caused by: i) third party modifications of Contributor Version or ii) the
+combination of Modifications made by that Contributor with other software
+(except as part of the Contributor Version) or other devices; or 4) under
+Patent Claims infringed by Covered Code in the absence of Modifications made
+by that Contributor.
+
+
+3. Distribution Obligations.
+
+ 3.1. Application of License.
+ The Modifications which You create or to which You contribute are
+governed by the terms of this License, including without limitation Section
+2.2. The Source Code version of Covered Code may be distributed only under the
+terms of this License or a future version of this License released under
+Section 6.1, and You must include a copy of this License with every copy of
+the Source Code You distribute. You may not offer or impose any terms on any
+Source Code version that alters or restricts the applicable version of this
+License or the recipients' rights hereunder. However, You may include an
+additional document offering the additional rights described in Section 3.5.
+
+ 3.2. Availability of Source Code.
+ Any Modification which You create or to which You contribute must be
+made available in Source Code form under the terms of this License either on
+the same media as an Executable version or via an accepted Electronic
+Distribution Mechanism to anyone to whom you made an Executable version
+available; and if made available via Electronic Distribution Mechanism, must
+remain available for at least twelve (12) months after the date it initially
+became available, or at least six (6) months after a subsequent version of
+that particular Modification has been made available to such recipients. You
+are responsible for ensuring that the Source Code version remains available
+even if the Electronic Distribution Mechanism is maintained by a third party.
+
+ 3.3. Description of Modifications.
+ You must cause all Covered Code to which You contribute to contain a
+file documenting the changes You made to create that Covered Code and the date
+of any change. You must include a prominent statement that the Modification is
+derived, directly or indirectly, from Original Code provided by the Initial
+Developer and including the name of the Initial Developer in (a) the Source
+Code, and (b) in any notice in an Executable version or related documentation
+in which You describe the origin or ownership of the Covered Code.
+
+ 3.4. Intellectual Property Matters
+ (a) Third Party Claims.
+ If Contributor has knowledge that a license under a third party's
+intellectual property rights is required to exercise the rights granted by
+such Contributor under Sections 2.1 or 2.2, Contributor must include a text
+file with the Source Code distribution titled "LEGAL" which describes the
+claim and the party making the claim in sufficient detail that a recipient
+will know whom to contact. If Contributor obtains such knowledge after the
+Modification is made available as described in Section 3.2, Contributor shall
+promptly modify the LEGAL file in all copies Contributor makes available
+thereafter and shall take other steps (such as notifying appropriate mailing
+lists or newsgroups) reasonably calculated to inform those who received the
+Covered Code that new knowledge has been obtained.
+
+ (b) Contributor APIs.
+ If Contributor's Modifications include an application programming
+interface and Contributor has knowledge of patent licenses which are
+reasonably necessary to implement that API, Contributor must also include this
+information in the LEGAL file.
+
+ (c) Representations.
+ Contributor represents that, except as disclosed pursuant to
+Section 3.4(a) above, Contributor believes that Contributor's Modifications
+are Contributor's original creation(s) and/or Contributor has sufficient
+rights to grant the rights conveyed by this License.
+
+
+ 3.5. Required Notices.
+ You must duplicate the notice in Exhibit A in each file of the Source
+Code. If it is not possible to put such notice in a particular Source Code
+file due to its structure, then You must include such notice in a location
+(such as a relevant directory) where a user would be likely to look for such a
+notice. If You created one or more Modification(s) You may add your name as a
+Contributor to the notice described in Exhibit A. You must also duplicate
+this License in any documentation for the Source Code where You describe
+recipients' rights or ownership rights relating to Covered Code. You may
+choose to offer, and to charge a fee for, warranty, support, indemnity or
+liability obligations to one or more recipients of Covered Code. However, You
+may do so only on Your own behalf, and not on behalf of the Initial Developer
+or any Contributor. You must make it absolutely clear than any such warranty,
+support, indemnity or liability obligation is offered by You alone, and You
+hereby agree to indemnify the Initial Developer and every Contributor for any
+liability incurred by the Initial Developer or such Contributor as a result of
+warranty, support, indemnity or liability terms You offer.
+
+ 3.6. Distribution of Executable Versions.
+ You may distribute Covered Code in Executable form only if the
+requirements of Section 3.1-3.5 have been met for that Covered Code, and if
+You include a notice stating that the Source Code version of the Covered Code
+is available under the terms of this License, including a description of how
+and where You have fulfilled the obligations of Section 3.2. The notice must
+be conspicuously included in any notice in an Executable version, related
+documentation or collateral in which You describe recipients' rights relating
+to the Covered Code. You may distribute the Executable version of Covered Code
+or ownership rights under a license of Your choice, which may contain terms
+different from this License, provided that You are in compliance with the
+terms of this License and that the license for the Executable version does not
+attempt to limit or alter the recipient's rights in the Source Code version
+from the rights set forth in this License. If You distribute the Executable
+version under a different license You must make it absolutely clear that any
+terms which differ from this License are offered by You alone, not by the
+Initial Developer or any Contributor. You hereby agree to indemnify the
+Initial Developer and every Contributor for any liability incurred by the
+Initial Developer or such Contributor as a result of any such terms You offer.
+
+ 3.7. Larger Works.
+ You may create a Larger Work by combining Covered Code with other code
+not governed by the terms of this License and distribute the Larger Work as a
+single product. In such a case, You must make sure the requirements of this
+License are fulfilled for the Covered Code.
+
+4. Inability to Comply Due to Statute or Regulation.
+
+ If it is impossible for You to comply with any of the terms of this
+License with respect to some or all of the Covered Code due to statute,
+judicial order, or regulation then You must: (a) comply with the terms of this
+License to the maximum extent possible; and (b) describe the limitations and
+the code they affect. Such description must be included in the LEGAL file
+described in Section 3.4 and must be included with all distributions of the
+Source Code. Except to the extent prohibited by statute or regulation, such
+description must be sufficiently detailed for a recipient of ordinary skill to
+be able to understand it.
+
+5. Application of this License.
+
+ This License applies to code to which the Initial Developer has attached
+the notice in Exhibit A and to related Covered Code.
+
+6. Versions of the License.
+
+ 6.1. New Versions.
+ Netscape Communications Corporation ("Netscape") may publish revised
+and/or new versions of the License from time to time. Each version will be
+given a distinguishing version number.
+
+ 6.2. Effect of New Versions.
+ Once Covered Code has been published under a particular version of the
+License, You may always continue to use it under the terms of that version.
+You may also choose to use such Covered Code under the terms of any subsequent
+version of the License published by Netscape. No one other than Netscape has
+the right to modify the terms applicable to Covered Code created under this
+License.
+
+ 6.3. Derivative Works.
+ If You create or use a modified version of this License (which you may
+only do in order to apply it to code which is not already Covered Code
+governed by this License), You must (a) rename Your license so that the
+phrases "Mozilla", "MOZILLAPL", "MOZPL", "Netscape", "MPL", "NPL" or
+any confusingly similar phrase do not appear in your license (except to note
+that your license differs from this License) and (b) otherwise make it clear
+that Your version of the license contains terms which differ from the Mozilla
+Public License and Netscape Public License. (Filling in the name of the
+Initial Developer, Original Code or Contributor in the notice described in
+Exhibit A shall not of themselves be deemed to be modifications of this
+License.)
+
+7. DISCLAIMER OF WARRANTY.
+
+ COVERED CODE IS PROVIDED UNDER THIS LICENSE ON AN "AS IS" BASIS,
+WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, WITHOUT
+LIMITATION, WARRANTIES THAT THE COVERED CODE IS FREE OF DEFECTS, MERCHANTABLE,
+FIT FOR A PARTICULAR PURPOSE OR NON-INFRINGING. THE ENTIRE RISK AS TO THE
+QUALITY AND PERFORMANCE OF THE COVERED CODE IS WITH YOU. SHOULD ANY COVERED
+CODE PROVE DEFECTIVE IN ANY RESPECT, YOU (NOT THE INITIAL DEVELOPER OR ANY
+OTHER CONTRIBUTOR) ASSUME THE COST OF ANY NECESSARY SERVICING, REPAIR OR
+CORRECTION. THIS DISCLAIMER OF WARRANTY CONSTITUTES AN ESSENTIAL PART OF THIS
+LICENSE. NO USE OF ANY COVERED CODE IS AUTHORIZED HEREUNDER EXCEPT UNDER THIS
+DISCLAIMER.
+
+8. TERMINATION.
+
+ 8.1. This License and the rights granted hereunder will terminate
+automatically if You fail to comply with terms herein and fail to cure such
+breach within 30 days of becoming aware of the breach. All sublicenses to the
+Covered Code which are properly granted shall survive any termination of this
+License. Provisions which, by their nature, must remain in effect beyond the
+termination of this License shall survive.
+
+ 8.2. If You initiate litigation by asserting a patent infringement
+claim (excluding declatory judgment actions) against Initial Developer or a
+Contributor (the Initial Developer or Contributor against whom You file such
+action is referred to as "Participant") alleging that:
+
+ (a) such Participant's Contributor Version directly or indirectly
+infringes any patent, then any and all rights granted by such Participant to
+You under Sections 2.1 and/or 2.2 of this License shall, upon 60 days notice
+from Participant terminate prospectively, unless if within 60 days after
+receipt of notice You either: (i) agree in writing to pay Participant a
+mutually agreeable reasonable royalty for Your past and future use of
+Modifications made by such Participant, or (ii) withdraw Your litigation claim
+with respect to the Contributor Version against such Participant. If within
+60 days of notice, a reasonable royalty and payment arrangement are not
+mutually agreed upon in writing by the parties or the litigation claim is not
+withdrawn, the rights granted by Participant to You under Sections 2.1 and/or
+2.2 automatically terminate at the expiration of the 60 day notice period
+specified above.
+
+ (b) any software, hardware, or device, other than such Participant's
+Contributor Version, directly or indirectly infringes any patent, then any
+rights granted to You by such Participant under Sections 2.1(b) and 2.2(b) are
+revoked effective as of the date You first made, used, sold, distributed, or
+had made, Modifications made by that Participant.
+
+ 8.3. If You assert a patent infringement claim against Participant
+alleging that such Participant's Contributor Version directly or indirectly
+infringes any patent where such claim is resolved (such as by license or
+settlement) prior to the initiation of patent infringement litigation, then
+the reasonable value of the licenses granted by such Participant under
+Sections 2.1 or 2.2 shall be taken into account in determining the amount or
+value of any payment or license.
+
+ 8.4. In the event of termination under Sections 8.1 or 8.2 above, all
+end user license agreements (excluding distributors and resellers) which have
+been validly granted by You or any distributor hereunder prior to termination
+shall survive termination.
+
+9. LIMITATION OF LIABILITY.
+
+ UNDER NO CIRCUMSTANCES AND UNDER NO LEGAL THEORY, WHETHER TORT
+(INCLUDING NEGLIGENCE), CONTRACT, OR OTHERWISE, SHALL YOU, THE INITIAL
+DEVELOPER, ANY OTHER CONTRIBUTOR, OR ANY DISTRIBUTOR OF COVERED CODE, OR ANY
+SUPPLIER OF ANY OF SUCH PARTIES, BE LIABLE TO ANY PERSON FOR ANY INDIRECT,
+SPECIAL, INCIDENTAL, OR CONSEQUENTIAL DAMAGES OF ANY CHARACTER INCLUDING,
+WITHOUT LIMITATION, DAMAGES FOR LOSS OF GOODWILL, WORK STOPPAGE, COMPUTER
+FAILURE OR MALFUNCTION, OR ANY AND ALL OTHER COMMERCIAL DAMAGES OR LOSSES,
+EVEN IF SUCH PARTY SHALL HAVE BEEN INFORMED OF THE POSSIBILITY OF SUCH
+DAMAGES. THIS LIMITATION OF LIABILITY SHALL NOT APPLY TO LIABILITY FOR DEATH
+OR PERSONAL INJURY RESULTING FROM SUCH PARTY'S NEGLIGENCE TO THE EXTENT
+APPLICABLE LAW PROHIBITS SUCH LIMITATION. SOME JURISDICTIONS DO NOT ALLOW THE
+EXCLUSION OR LIMITATION OF INCIDENTAL OR CONSEQUENTIAL DAMAGES, SO THIS
+EXCLUSION AND LIMITATION MAY NOT APPLY TO YOU.
+
+10. U.S. GOVERNMENT END USERS.
+
+ The Covered Code is a "commercial item," as that term is defined in 48
+C.F.R. 2.101 (Oct. 1995), consisting of "commercial computer software" and
+"commercial computer software documentation," as such terms are used in 48
+C.F.R. 12.212 (Sept. 1995). Consistent with 48 C.F.R. 12.212 and 48 C.F.R.
+227.7202-1 through 227.7202-4 (June 1995), all U.S. Government End Users
+acquire Covered Code with only those rights set forth herein.
+
+11. MISCELLANEOUS.
+
+ This License represents the complete agreement concerning subject matter
+hereof. If any provision of this License is held to be unenforceable, such
+provision shall be reformed only to the extent necessary to make it
+enforceable. This License shall be governed by California law provisions
+(except to the extent applicable law, if any, provides otherwise), excluding
+its conflict-of-law provisions. With respect to disputes in which at least one
+party is a citizen of, or an entity chartered or registered to do business in
+the United States of America, any litigation relating to this License shall be
+subject to the jurisdiction of the Federal Courts of the Northern District of
+California, with venue lying in Santa Clara County, California, with the
+losing party responsible for costs, including without limitation, court costs
+and reasonable attorneys' fees and expenses. The application of the United
+Nations Convention on Contracts for the International Sale of Goods is
+expressly excluded. Any law or regulation which provides that the language of
+a contract shall be construed against the drafter shall not apply to this
+License.
+
+12. RESPONSIBILITY FOR CLAIMS.
+
+ As between Initial Developer and the Contributors, each party is
+responsible for claims and damages arising, directly or indirectly, out of its
+utilization of rights under this License and You agree to work with Initial
+Developer and Contributors to distribute such responsibility on an equitable
+basis. Nothing herein is intended or shall be deemed to constitute any
+admission of liability.
+
+13. MULTIPLE-LICENSED CODE.
+
+ Initial Developer may designate portions of the Covered Code as
+Multiple-Licensed. Multiple-Licensed means that the Initial Developer permits
+you to utilize portions of the Covered Code under Your choice of the MPL or
+the alternative licenses, if any, specified by the Initial Developer in the
+file described in Exhibit A.
+
+
+EXHIBIT A -Mozilla Public License.
+
+ ``The contents of this file are subject to the Mozilla Public License
+Version 1.1 (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.mozilla.org/MPL/
+
+ Software distributed under the License is distributed on an "AS IS"
+basis, WITHOUT WARRANTY OF
+ ANY KIND, either express or implied. See the License for the specific
+language governing rights and
+ limitations under the License.
+
+ The Original Code is ______________________________________.
+
+ The Initial Developer of the Original Code is ________________________.
+Portions created by
+ ______________________ are Copyright (C) ______
+_______________________. All Rights
+ Reserved.
+
+ Contributor(s): ______________________________________.
+
+ Alternatively, the contents of this file may be used under the terms of
+the _____ license (the [___] License), in which case the provisions of
+[______] License are applicable instead of those above. If you wish to allow
+use of your version of this file only under the terms of the [____] License
+and not to allow others to use your version of this file under the MPL,
+indicate your decision by deleting the provisions above and replace them
+with the notice and other provisions required by the [___] License. If you do
+not delete the provisions above, a recipient may use your version of this file
+under either the MPL or the [___] License."
+
+ [NOTE: The text of this Exhibit A may differ slightly from the text of
+the notices in the Source Code files of the Original Code. You should use the
+text of this Exhibit A rather than the text found in the Original Code Source
+Code for Your Modifications.]
+
+
+===============================================================================
+
+For the JAX-WS Reference Implementation component:
+
+COMMON DEVELOPMENT AND DISTRIBUTION LICENSE (CDDL) Version 1.0
+
+
+ 1. Definitions.
+
+ 1.1. "Contributor" means each individual or entity that
+ creates or contributes to the creation of Modifications.
+
+ 1.2. "Contributor Version" means the combination of the
+ Original Software, prior Modifications used by a
+ Contributor (if any), and the Modifications made by that
+ particular Contributor.
+
+ 1.3. "Covered Software" means (a) the Original Software, or
+ (b) Modifications, or (c) the combination of files
+ containing Original Software with files containing
+ Modifications, in each case including portions thereof.
+
+ 1.4. "Executable" means the Covered Software in any form
+ other than Source Code.
+
+ 1.5. "Initial Developer" means the individual or entity
+ that first makes Original Software available under this
+ License.
+
+ 1.6. "Larger Work" means a work which combines Covered
+ Software or portions thereof with code not governed by the
+ terms of this License.
+
+ 1.7. "License" means this document.
+
+ 1.8. "Licensable" means having the right to grant, to the
+ maximum extent possible, whether at the time of the initial
+ grant or subsequently acquired, any and all of the rights
+ conveyed herein.
+
+ 1.9. "Modifications" means the Source Code and Executable
+ form of any of the following:
+
+ A. Any file that results from an addition to,
+ deletion from or modification of the contents of a
+ file containing Original Software or previous
+ Modifications;
+
+ B. Any new file that contains any part of the
+ Original Software or previous Modification; or
+
+ C. Any new file that is contributed or otherwise made
+ available under the terms of this License.
+
+ 1.10. "Original Software" means the Source Code and
+ Executable form of computer software code that is
+ originally released under this License.
+
+ 1.11. "Patent Claims" means any patent claim(s), now owned
+ or hereafter acquired, including without limitation,
+ method, process, and apparatus claims, in any patent
+ Licensable by grantor.
+
+ 1.12. "Source Code" means (a) the common form of computer
+ software code in which modifications are made and (b)
+ associated documentation included in or with such code.
+
+ 1.13. "You" (or "Your") means an individual or a legal
+ entity exercising rights under, and complying with all of
+ the terms of, this License. For legal entities, "You"
+ includes any entity which controls, is controlled by, or is
+ under common control with You. For purposes of this
+ definition, "control" means (a) the power, direct or
+ indirect, to cause the direction or management of such
+ entity, whether by contract or otherwise, or (b) ownership
+ of more than fifty percent (50%) of the outstanding shares
+ or beneficial ownership of such entity.
+
+ 2. License Grants.
+
+ 2.1. The Initial Developer Grant.
+
+ Conditioned upon Your compliance with Section 3.1 below and
+ subject to third party intellectual property claims, the
+ Initial Developer hereby grants You a world-wide,
+ royalty-free, non-exclusive license:
+
+ (a) under intellectual property rights (other than
+ patent or trademark) Licensable by Initial Developer,
+ to use, reproduce, modify, display, perform,
+ sublicense and distribute the Original Software (or
+ portions thereof), with or without Modifications,
+ and/or as part of a Larger Work; and
+
+ (b) under Patent Claims infringed by the making,
+ using or selling of Original Software, to make, have
+ made, use, practice, sell, and offer for sale, and/or
+ otherwise dispose of the Original Software (or
+ portions thereof).
+
+ (c) The licenses granted in Sections 2.1(a) and (b)
+ are effective on the date Initial Developer first
+ distributes or otherwise makes the Original Software
+ available to a third party under the terms of this
+ License.
+
+ (d) Notwithstanding Section 2.1(b) above, no patent
+ license is granted: (1) for code that You delete from
+ the Original Software, or (2) for infringements
+ caused by: (i) the modification of the Original
+ Software, or (ii) the combination of the Original
+ Software with other software or devices.
+
+ 2.2. Contributor Grant.
+
+ Conditioned upon Your compliance with Section 3.1 below and
+ subject to third party intellectual property claims, each
+ Contributor hereby grants You a world-wide, royalty-free,
+ non-exclusive license:
+
+ (a) under intellectual property rights (other than
+ patent or trademark) Licensable by Contributor to
+ use, reproduce, modify, display, perform, sublicense
+ and distribute the Modifications created by such
+ Contributor (or portions thereof), either on an
+ unmodified basis, with other Modifications, as
+ Covered Software and/or as part of a Larger Work; and
+
+
+ (b) under Patent Claims infringed by the making,
+ using, or selling of Modifications made by that
+ Contributor either alone and/or in combination with
+ its Contributor Version (or portions of such
+ combination), to make, use, sell, offer for sale,
+ have made, and/or otherwise dispose of: (1)
+ Modifications made by that Contributor (or portions
+ thereof); and (2) the combination of Modifications
+ made by that Contributor with its Contributor Version
+ (or portions of such combination).
+
+ (c) The licenses granted in Sections 2.2(a) and
+ 2.2(b) are effective on the date Contributor first
+ distributes or otherwise makes the Modifications
+ available to a third party.
+
+ (d) Notwithstanding Section 2.2(b) above, no patent
+ license is granted: (1) for any code that Contributor
+ has deleted from the Contributor Version; (2) for
+ infringements caused by: (i) third party
+ modifications of Contributor Version, or (ii) the
+ combination of Modifications made by that Contributor
+ with other software (except as part of the
+ Contributor Version) or other devices; or (3) under
+ Patent Claims infringed by Covered Software in the
+ absence of Modifications made by that Contributor.
+
+ 3. Distribution Obligations.
+
+ 3.1. Availability of Source Code.
+
+ Any Covered Software that You distribute or otherwise make
+ available in Executable form must also be made available in
+ Source Code form and that Source Code form must be
+ distributed only under the terms of this License. You must
+ include a copy of this License with every copy of the
+ Source Code form of the Covered Software You distribute or
+ otherwise make available. You must inform recipients of any
+ such Covered Software in Executable form as to how they can
+ obtain such Covered Software in Source Code form in a
+ reasonable manner on or through a medium customarily used
+ for software exchange.
+
+ 3.2. Modifications.
+
+ The Modifications that You create or to which You
+ contribute are governed by the terms of this License. You
+ represent that You believe Your Modifications are Your
+ original creation(s) and/or You have sufficient rights to
+ grant the rights conveyed by this License.
+
+ 3.3. Required Notices.
+
+ You must include a notice in each of Your Modifications
+ that identifies You as the Contributor of the Modification.
+ You may not remove or alter any copyright, patent or
+ trademark notices contained within the Covered Software, or
+ any notices of licensing or any descriptive text giving
+ attribution to any Contributor or the Initial Developer.
+
+ 3.4. Application of Additional Terms.
+
+ You may not offer or impose any terms on any Covered
+ Software in Source Code form that alters or restricts the
+ applicable version of this License or the recipients'
+ rights hereunder. You may choose to offer, and to charge a
+ fee for, warranty, support, indemnity or liability
+ obligations to one or more recipients of Covered Software.
+ However, you may do so only on Your own behalf, and not on
+ behalf of the Initial Developer or any Contributor. You
+ must make it absolutely clear that any such warranty,
+ support, indemnity or liability obligation is offered by
+ You alone, and You hereby agree to indemnify the Initial
+ Developer and every Contributor for any liability incurred
+ by the Initial Developer or such Contributor as a result of
+ warranty, support, indemnity or liability terms You offer.
+
+
+ 3.5. Distribution of Executable Versions.
+
+ You may distribute the Executable form of the Covered
+ Software under the terms of this License or under the terms
+ of a license of Your choice, which may contain terms
+ different from this License, provided that You are in
+ compliance with the terms of this License and that the
+ license for the Executable form does not attempt to limit
+ or alter the recipient's rights in the Source Code form
+ from the rights set forth in this License. If You
+ distribute the Covered Software in Executable form under a
+ different license, You must make it absolutely clear that
+ any terms which differ from this License are offered by You
+ alone, not by the Initial Developer or Contributor. You
+ hereby agree to indemnify the Initial Developer and every
+ Contributor for any liability incurred by the Initial
+ Developer or such Contributor as a result of any such terms
+ You offer.
+
+ 3.6. Larger Works.
+
+ You may create a Larger Work by combining Covered Software
+ with other code not governed by the terms of this License
+ and distribute the Larger Work as a single product. In such
+ a case, You must make sure the requirements of this License
+ are fulfilled for the Covered Software.
+
+ 4. Versions of the License.
+
+ 4.1. New Versions.
+
+ Sun Microsystems, Inc. is the initial license steward and
+ may publish revised and/or new versions of this License
+ from time to time. Each version will be given a
+ distinguishing version number. Except as provided in
+ Section 4.3, no one other than the license steward has the
+ right to modify this License.
+
+ 4.2. Effect of New Versions.
+
+ You may always continue to use, distribute or otherwise
+ make the Covered Software available under the terms of the
+ version of the License under which You originally received
+ the Covered Software. If the Initial Developer includes a
+ notice in the Original Software prohibiting it from being
+ distributed or otherwise made available under any
+ subsequent version of the License, You must distribute and
+ make the Covered Software available under the terms of the
+ version of the License under which You originally received
+ the Covered Software. Otherwise, You may also choose to
+ use, distribute or otherwise make the Covered Software
+ available under the terms of any subsequent version of the
+ License published by the license steward.
+
+ 4.3. Modified Versions.
+
+ When You are an Initial Developer and You want to create a
+ new license for Your Original Software, You may create and
+ use a modified version of this License if You: (a) rename
+ the license and remove any references to the name of the
+ license steward (except to note that the license differs
+ from this License); and (b) otherwise make it clear that
+ the license contains terms which differ from this License.
+
+
+ 5. DISCLAIMER OF WARRANTY.
+
+ COVERED SOFTWARE IS PROVIDED UNDER THIS LICENSE ON AN "AS IS"
+ BASIS, WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED,
+ INCLUDING, WITHOUT LIMITATION, WARRANTIES THAT THE COVERED
+ SOFTWARE IS FREE OF DEFECTS, MERCHANTABLE, FIT FOR A PARTICULAR
+ PURPOSE OR NON-INFRINGING. THE ENTIRE RISK AS TO THE QUALITY AND
+ PERFORMANCE OF THE COVERED SOFTWARE IS WITH YOU. SHOULD ANY
+ COVERED SOFTWARE PROVE DEFECTIVE IN ANY RESPECT, YOU (NOT THE
+ INITIAL DEVELOPER OR ANY OTHER CONTRIBUTOR) ASSUME THE COST OF
+ ANY NECESSARY SERVICING, REPAIR OR CORRECTION. THIS DISCLAIMER OF
+ WARRANTY CONSTITUTES AN ESSENTIAL PART OF THIS LICENSE. NO USE OF
+ ANY COVERED SOFTWARE IS AUTHORIZED HEREUNDER EXCEPT UNDER THIS
+ DISCLAIMER.
+
+ 6. TERMINATION.
+
+ 6.1. This License and the rights granted hereunder will
+ terminate automatically if You fail to comply with terms
+ herein and fail to cure such breach within 30 days of
+ becoming aware of the breach. Provisions which, by their
+ nature, must remain in effect beyond the termination of
+ this License shall survive.
+
+ 6.2. If You assert a patent infringement claim (excluding
+ declaratory judgment actions) against Initial Developer or
+ a Contributor (the Initial Developer or Contributor against
+ whom You assert such claim is referred to as "Participant")
+ alleging that the Participant Software (meaning the
+ Contributor Version where the Participant is a Contributor
+ or the Original Software where the Participant is the
+ Initial Developer) directly or indirectly infringes any
+ patent, then any and all rights granted directly or
+ indirectly to You by such Participant, the Initial
+ Developer (if the Initial Developer is not the Participant)
+ and all Contributors under Sections 2.1 and/or 2.2 of this
+ License shall, upon 60 days notice from Participant
+ terminate prospectively and automatically at the expiration
+ of such 60 day notice period, unless if within such 60 day
+ period You withdraw Your claim with respect to the
+ Participant Software against such Participant either
+ unilaterally or pursuant to a written agreement with
+ Participant.
+
+ 6.3. In the event of termination under Sections 6.1 or 6.2
+ above, all end user licenses that have been validly granted
+ by You or any distributor hereunder prior to termination
+ (excluding licenses granted to You by any distributor)
+ shall survive termination.
+
+ 7. LIMITATION OF LIABILITY.
+
+ UNDER NO CIRCUMSTANCES AND UNDER NO LEGAL THEORY, WHETHER TORT
+ (INCLUDING NEGLIGENCE), CONTRACT, OR OTHERWISE, SHALL YOU, THE
+ INITIAL DEVELOPER, ANY OTHER CONTRIBUTOR, OR ANY DISTRIBUTOR OF
+ COVERED SOFTWARE, OR ANY SUPPLIER OF ANY OF SUCH PARTIES, BE
+ LIABLE TO ANY PERSON FOR ANY INDIRECT, SPECIAL, INCIDENTAL, OR
+ CONSEQUENTIAL DAMAGES OF ANY CHARACTER INCLUDING, WITHOUT
+ LIMITATION, DAMAGES FOR LOST PROFITS, LOSS OF GOODWILL, WORK
+ STOPPAGE, COMPUTER FAILURE OR MALFUNCTION, OR ANY AND ALL OTHER
+ COMMERCIAL DAMAGES OR LOSSES, EVEN IF SUCH PARTY SHALL HAVE BEEN
+ INFORMED OF THE POSSIBILITY OF SUCH DAMAGES. THIS LIMITATION OF
+ LIABILITY SHALL NOT APPLY TO LIABILITY FOR DEATH OR PERSONAL
+ INJURY RESULTING FROM SUCH PARTY'S NEGLIGENCE TO THE EXTENT
+ APPLICABLE LAW PROHIBITS SUCH LIMITATION. SOME JURISDICTIONS DO
+ NOT ALLOW THE EXCLUSION OR LIMITATION OF INCIDENTAL OR
+ CONSEQUENTIAL DAMAGES, SO THIS EXCLUSION AND LIMITATION MAY NOT
+ APPLY TO YOU.
+
+ 8. U.S. GOVERNMENT END USERS.
+
+ The Covered Software is a "commercial item," as that term is
+ defined in 48 C.F.R. 2.101 (Oct. 1995), consisting of "commercial
+ computer software" (as that term is defined at 48 C.F.R.
+ 252.227-7014(a)(1)) and "commercial computer software
+ documentation" as such terms are used in 48 C.F.R. 12.212 (Sept.
+ 1995). Consistent with 48 C.F.R. 12.212 and 48 C.F.R. 227.7202-1
+ through 227.7202-4 (June 1995), all U.S. Government End Users
+ acquire Covered Software with only those rights set forth herein.
+ This U.S. Government Rights clause is in lieu of, and supersedes,
+ any other FAR, DFAR, or other clause or provision that addresses
+ Government rights in computer software under this License.
+
+ 9. MISCELLANEOUS.
+
+ This License represents the complete agreement concerning subject
+ matter hereof. If any provision of this License is held to be
+ unenforceable, such provision shall be reformed only to the
+ extent necessary to make it enforceable. This License shall be
+ governed by the law of the jurisdiction specified in a notice
+ contained within the Original Software (except to the extent
+ applicable law, if any, provides otherwise), excluding such
+ jurisdiction's conflict-of-law provisions. Any litigation
+ relating to this License shall be subject to the jurisdiction of
+ the courts located in the jurisdiction and venue specified in a
+ notice contained within the Original Software, with the losing
+ party responsible for costs, including, without limitation, court
+ costs and reasonable attorneys' fees and expenses. The
+ application of the United Nations Convention on Contracts for the
+ International Sale of Goods is expressly excluded. Any law or
+ regulation which provides that the language of a contract shall
+ be construed against the drafter shall not apply to this License.
+ You agree that You alone are responsible for compliance with the
+ United States export administration regulations (and the export
+ control laws and regulation of any other countries) when You use,
+ distribute or otherwise make available any Covered Software.
+
+ 10. RESPONSIBILITY FOR CLAIMS.
+
+ As between Initial Developer and the Contributors, each party is
+ responsible for claims and damages arising, directly or
+ indirectly, out of its utilization of rights under this License
+ and You agree to work with Initial Developer and Contributors to
+ distribute such responsibility on an equitable basis. Nothing
+ herein is intended or shall be deemed to constitute any admission
+ of liability.
+
diff --git a/branches/sdo-java-M2/sdo/plugin/src/main/resources/META-INF/NOTICE b/branches/sdo-java-M2/sdo/plugin/src/main/resources/META-INF/NOTICE
new file mode 100644
index 0000000000..322cf40f9f
--- /dev/null
+++ b/branches/sdo-java-M2/sdo/plugin/src/main/resources/META-INF/NOTICE
@@ -0,0 +1,29 @@
+Apache Tuscany SDO for Java
+Copyright 2006 The Apache Software Foundation
+
+This product includes software developed at
+The Apache Software Foundation (http://www.apache.org/).
+
+Apache Tuscany is an effort undergoing incubation at The Apache Software Foundation (ASF),
+sponsored by the Apache Web Services PMC. Incubation is required of all newly accepted
+projects until a further review indicates that the infrastructure, communications,
+and decision making process have stabilized in a manner consistent with other successful
+ASF projects. While incubation status is not necessarily a reflection of the completeness
+or stability of the code, it does indicate that the project has yet to be fully endorsed
+by the ASF.
+
+Unless otherwise indicated, all distribution made available by the Apache Software Foundation
+is provided to you under the terms and conditions of the Apache License Version 2.0 ("AL").
+A copy of the AL is provided with this distribution as the LICENSE.txt file present in the
+root directory, and is also available at http://www.apache.org/licenses/.
+
+The terms and conditions governing the distribution may refer to the AL or other license
+agreements, notices or terms and conditions. Some of these other license agreements may
+include (but are not limited to):
+
+ . Eclipse Public License Version 1.0 (available at http://www.eclipse.org/legal/epl-v10.html)
+ . Common Public License Version 1.0 (available at http://www.eclipse.org/legal/cpl-v10.html)
+
+It is your obligation to read and accept all such terms and conditions prior to use of the
+distribution. If term or condition is provided, please contact the Apache Software Foundation
+to determine what terms and conditions govern that particular distribution.
diff --git a/branches/sdo-java-M2/sdo/plugin/src/main/resources/META-INF/README.txt b/branches/sdo-java-M2/sdo/plugin/src/main/resources/META-INF/README.txt
new file mode 100644
index 0000000000..9b26d1690a
--- /dev/null
+++ b/branches/sdo-java-M2/sdo/plugin/src/main/resources/META-INF/README.txt
@@ -0,0 +1,35 @@
+Apache Tuscany M1 build (May, 2006)
+===================================
+
+http://incubator.apache.org/tuscany/
+
+Tuscany is an effort undergoing incubation at the Apache Software Foundation
+(ASF), sponsored by the Web Services PMC.
+
+Incubation is required of all newly accepted projects until a further review
+indicates that the infrastructure, communications, and decision making process
+have stabilized in a manner consistent with other successful ASF projects.
+
+While incubation status is not necessarily a reflection of the completeness or
+stability of the code, it does indicate that the project has yet to be fully
+endorsed by the ASF.
+
+
+Support
+-------
+
+Any problem with this release can be reported to the Tuscany mailing list
+or in the JIRA issue tracker.
+
+Mailing list subscription:
+ tuscany-dev-subscribe@ws.apache.org
+
+Jira:
+ http://issues.apache.org/jira/browse/Tuscany
+
+
+Thank you for using Tuscany!
+
+
+The Tuscany Team.
+
diff --git a/branches/sdo-java-M2/sdo/pom.xml b/branches/sdo-java-M2/sdo/pom.xml
new file mode 100644
index 0000000000..11c11cf00a
--- /dev/null
+++ b/branches/sdo-java-M2/sdo/pom.xml
@@ -0,0 +1,168 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+-->
+<project>
+ <modelVersion>4.0.0</modelVersion>
+ <parent>
+ <groupId>org.apache.tuscany</groupId>
+ <artifactId>parent</artifactId>
+ <version>1-incubator</version>
+ </parent>
+ <groupId>org.apache.tuscany.sdo</groupId>
+ <artifactId>tuscany-sdo</artifactId>
+ <packaging>pom</packaging>
+ <name>Tuscany SDO Implementation Project</name>
+ <version>1.0-incubator-M2</version>
+
+ <repositories>
+ <repository>
+ <id>apache.snapshots</id>
+ <name>Apache Snapshot Repository</name>
+ <url>http://people.apache.org/repo/m2-snapshot-repository</url>
+ <releases>
+ <enabled>false</enabled>
+ </releases>
+ <snapshots>
+ <enabled>true</enabled>
+ </snapshots>
+ </repository>
+ <repository>
+ <id>apache.incubator</id>
+ <name>Apache Incubator Repository</name>
+ <url>http://people.apache.org/repo/m2-incubating-repository/</url>
+ <releases>
+ <enabled>true</enabled>
+ </releases>
+ <snapshots>
+ <enabled>false</enabled>
+ </snapshots>
+ </repository>
+ <repository>
+ <id>eclipse.emf</id>
+ <url>http://download.eclipse.org/tools/emf/maven2</url>
+ <snapshots>
+ <enabled>true</enabled>
+ </snapshots>
+ </repository>
+ </repositories>
+
+ <properties>
+ <specVersion>2.0.1</specVersion>
+ <emfVersion>2.2.1</emfVersion>
+ </properties>
+
+ <modules>
+ <module>impl</module>
+ <module>tools</module>
+ <module>plugin</module>
+ <!-- <module>sample</module> -->
+ <!-- <module>distribution</module> -->
+ </modules>
+
+ <build>
+ <defaultGoal>install</defaultGoal>
+
+ <plugins>
+ <plugin>
+ <groupId>org.apache.maven.plugins</groupId>
+ <artifactId>maven-compiler-plugin</artifactId>
+ <configuration>
+ <source>1.4</source>
+ <target>1.4</target>
+ </configuration>
+ </plugin>
+ <plugin>
+ <groupId>org.apache.maven.plugins</groupId>
+ <artifactId>maven-surefire-plugin</artifactId>
+ <configuration>
+ <includes>
+ <include>**/*TestCase.java</include>
+ </includes>
+ </configuration>
+ </plugin>
+
+ <plugin>
+ <groupId>org.apache.maven.plugins</groupId>
+ <artifactId>maven-dependency-plugin</artifactId>
+ <!-- <version>${dependency.plugin.version}</version> -->
+ <executions>
+ <execution>
+ <id>unpack-javadoc</id>
+ <phase>package</phase>
+ <goals>
+ <goal>unpack</goal>
+ </goals>
+ <configuration>
+ <artifactItems>
+ <artifactItem>
+ <groupId>commonj</groupId>
+ <artifactId>sdo-api-r${specVersion}</artifactId>
+ <classifier>javadoc</classifier>
+ <version>${pom.version}</version>
+ <outputDirectory>${project.build.directory}/javadoc/api</outputDirectory>
+ </artifactItem>
+ </artifactItems>
+ </configuration>
+ </execution>
+ </executions>
+ </plugin>
+ <plugin>
+ <groupId>org.apache.maven.plugins</groupId>
+ <artifactId>maven-assembly-plugin</artifactId>
+ <version>2.2-SNAPSHOT</version>
+ <configuration>
+ <descriptors>
+ <descriptor>sdo.xml</descriptor>
+ </descriptors>
+ </configuration>
+ </plugin>
+ </plugins>
+
+ <pluginManagement>
+ <plugins>
+ <plugin>
+ <groupId>org.apache.maven.plugins</groupId>
+ <artifactId>maven-javadoc-plugin</artifactId>
+ <configuration>
+ <aggregate>true</aggregate>
+ <version>2.0</version>
+ </configuration>
+ </plugin>
+ </plugins>
+ </pluginManagement>
+
+ </build>
+
+ <dependencyManagement>
+ <dependencies>
+ <dependency>
+ <groupId>commonj</groupId>
+ <artifactId>sdo-api-r${specVersion}</artifactId>
+ <version>1.0-incubator-M2</version>
+ <scope>compile</scope>
+ </dependency>
+ <dependency>
+ <groupId>junit</groupId>
+ <artifactId>junit</artifactId>
+ <version>3.8.1</version>
+ <scope>test</scope>
+ </dependency>
+ </dependencies>
+ </dependencyManagement>
+</project>
diff --git a/branches/sdo-java-M2/sdo/sample/LICENSE.txt b/branches/sdo-java-M2/sdo/sample/LICENSE.txt
new file mode 100644
index 0000000000..82fa517fac
--- /dev/null
+++ b/branches/sdo-java-M2/sdo/sample/LICENSE.txt
@@ -0,0 +1,236 @@
+
+ Apache License
+ Version 2.0, January 2004
+ http://www.apache.org/licenses/
+
+ TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION
+
+ 1. Definitions.
+
+ "License" shall mean the terms and conditions for use, reproduction,
+ and distribution as defined by Sections 1 through 9 of this document.
+
+ "Licensor" shall mean the copyright owner or entity authorized by
+ the copyright owner that is granting the License.
+
+ "Legal Entity" shall mean the union of the acting entity and all
+ other entities that control, are controlled by, or are under common
+ control with that entity. For the purposes of this definition,
+ "control" means (i) the power, direct or indirect, to cause the
+ direction or management of such entity, whether by contract or
+ otherwise, or (ii) ownership of fifty percent (50%) or more of the
+ outstanding shares, or (iii) beneficial ownership of such entity.
+
+ "You" (or "Your") shall mean an individual or Legal Entity
+ exercising permissions granted by this License.
+
+ "Source" form shall mean the preferred form for making modifications,
+ including but not limited to software source code, documentation
+ source, and configuration files.
+
+ "Object" form shall mean any form resulting from mechanical
+ transformation or translation of a Source form, including but
+ not limited to compiled object code, generated documentation,
+ and conversions to other media types.
+
+ "Work" shall mean the work of authorship, whether in Source or
+ Object form, made available under the License, as indicated by a
+ copyright notice that is included in or attached to the work
+ (an example is provided in the Appendix below).
+
+ "Derivative Works" shall mean any work, whether in Source or Object
+ form, that is based on (or derived from) the Work and for which the
+ editorial revisions, annotations, elaborations, or other modifications
+ represent, as a whole, an original work of authorship. For the purposes
+ of this License, Derivative Works shall not include works that remain
+ separable from, or merely link (or bind by name) to the interfaces of,
+ the Work and Derivative Works thereof.
+
+ "Contribution" shall mean any work of authorship, including
+ the original version of the Work and any modifications or additions
+ to that Work or Derivative Works thereof, that is intentionally
+ submitted to Licensor for inclusion in the Work by the copyright owner
+ or by an individual or Legal Entity authorized to submit on behalf of
+ the copyright owner. For the purposes of this definition, "submitted"
+ means any form of electronic, verbal, or written communication sent
+ to the Licensor or its representatives, including but not limited to
+ communication on electronic mailing lists, source code control systems,
+ and issue tracking systems that are managed by, or on behalf of, the
+ Licensor for the purpose of discussing and improving the Work, but
+ excluding communication that is conspicuously marked or otherwise
+ designated in writing by the copyright owner as "Not a Contribution."
+
+ "Contributor" shall mean Licensor and any individual or Legal Entity
+ on behalf of whom a Contribution has been received by Licensor and
+ subsequently incorporated within the Work.
+
+ 2. Grant of Copyright License. Subject to the terms and conditions of
+ this License, each Contributor hereby grants to You a perpetual,
+ worldwide, non-exclusive, no-charge, royalty-free, irrevocable
+ copyright license to reproduce, prepare Derivative Works of,
+ publicly display, publicly perform, sublicense, and distribute the
+ Work and such Derivative Works in Source or Object form.
+
+ 3. Grant of Patent License. Subject to the terms and conditions of
+ this License, each Contributor hereby grants to You a perpetual,
+ worldwide, non-exclusive, no-charge, royalty-free, irrevocable
+ (except as stated in this section) patent license to make, have made,
+ use, offer to sell, sell, import, and otherwise transfer the Work,
+ where such license applies only to those patent claims licensable
+ by such Contributor that are necessarily infringed by their
+ Contribution(s) alone or by combination of their Contribution(s)
+ with the Work to which such Contribution(s) was submitted. If You
+ institute patent litigation against any entity (including a
+ cross-claim or counterclaim in a lawsuit) alleging that the Work
+ or a Contribution incorporated within the Work constitutes direct
+ or contributory patent infringement, then any patent licenses
+ granted to You under this License for that Work shall terminate
+ as of the date such litigation is filed.
+
+ 4. Redistribution. You may reproduce and distribute copies of the
+ Work or Derivative Works thereof in any medium, with or without
+ modifications, and in Source or Object form, provided that You
+ meet the following conditions:
+
+ (a) You must give any other recipients of the Work or
+ Derivative Works a copy of this License; and
+
+ (b) You must cause any modified files to carry prominent notices
+ stating that You changed the files; and
+
+ (c) You must retain, in the Source form of any Derivative Works
+ that You distribute, all copyright, patent, trademark, and
+ attribution notices from the Source form of the Work,
+ excluding those notices that do not pertain to any part of
+ the Derivative Works; and
+
+ (d) If the Work includes a "NOTICE" text file as part of its
+ distribution, then any Derivative Works that You distribute must
+ include a readable copy of the attribution notices contained
+ within such NOTICE file, excluding those notices that do not
+ pertain to any part of the Derivative Works, in at least one
+ of the following places: within a NOTICE text file distributed
+ as part of the Derivative Works; within the Source form or
+ documentation, if provided along with the Derivative Works; or,
+ within a display generated by the Derivative Works, if and
+ wherever such third-party notices normally appear. The contents
+ of the NOTICE file are for informational purposes only and
+ do not modify the License. You may add Your own attribution
+ notices within Derivative Works that You distribute, alongside
+ or as an addendum to the NOTICE text from the Work, provided
+ that such additional attribution notices cannot be construed
+ as modifying the License.
+
+ You may add Your own copyright statement to Your modifications and
+ may provide additional or different license terms and conditions
+ for use, reproduction, or distribution of Your modifications, or
+ for any such Derivative Works as a whole, provided Your use,
+ reproduction, and distribution of the Work otherwise complies with
+ the conditions stated in this License.
+
+ 5. Submission of Contributions. Unless You explicitly state otherwise,
+ any Contribution intentionally submitted for inclusion in the Work
+ by You to the Licensor shall be under the terms and conditions of
+ this License, without any additional terms or conditions.
+ Notwithstanding the above, nothing herein shall supersede or modify
+ the terms of any separate license agreement you may have executed
+ with Licensor regarding such Contributions.
+
+ 6. Trademarks. This License does not grant permission to use the trade
+ names, trademarks, service marks, or product names of the Licensor,
+ except as required for reasonable and customary use in describing the
+ origin of the Work and reproducing the content of the NOTICE file.
+
+ 7. Disclaimer of Warranty. Unless required by applicable law or
+ agreed to in writing, Licensor provides the Work (and each
+ Contributor provides its Contributions) on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
+ implied, including, without limitation, any warranties or conditions
+ of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A
+ PARTICULAR PURPOSE. You are solely responsible for determining the
+ appropriateness of using or redistributing the Work and assume any
+ risks associated with Your exercise of permissions under this License.
+
+ 8. Limitation of Liability. In no event and under no legal theory,
+ whether in tort (including negligence), contract, or otherwise,
+ unless required by applicable law (such as deliberate and grossly
+ negligent acts) or agreed to in writing, shall any Contributor be
+ liable to You for damages, including any direct, indirect, special,
+ incidental, or consequential damages of any character arising as a
+ result of this License or out of the use or inability to use the
+ Work (including but not limited to damages for loss of goodwill,
+ work stoppage, computer failure or malfunction, or any and all
+ other commercial damages or losses), even if such Contributor
+ has been advised of the possibility of such damages.
+
+ 9. Accepting Warranty or Additional Liability. While redistributing
+ the Work or Derivative Works thereof, You may choose to offer,
+ and charge a fee for, acceptance of support, warranty, indemnity,
+ or other liability obligations and/or rights consistent with this
+ License. However, in accepting such obligations, You may act only
+ on Your own behalf and on Your sole responsibility, not on behalf
+ of any other Contributor, and only if You agree to indemnify,
+ defend, and hold each Contributor harmless for any liability
+ incurred by, or claims asserted against, such Contributor by reason
+ of your accepting any such warranty or additional liability.
+
+ END OF TERMS AND CONDITIONS
+
+ APPENDIX: How to apply the Apache License to your work.
+
+ To apply the Apache License to your work, attach the following
+ boilerplate notice, with the fields enclosed by brackets "[]"
+ replaced with your own identifying information. (Don't include
+ the brackets!) The text should be enclosed in the appropriate
+ comment syntax for the file format. We also recommend that a
+ file or class name and description of purpose be included on the
+ same "printed page" as the copyright notice for easier
+ identification within third-party archives.
+
+ Copyright [yyyy] [name of copyright owner]
+
+ Licensed 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.
+
+
+===============================================================================================================
+
+
+License for the Service Data Objects JavaDoc and Interface Definition files.
+
+Permission to copy, make derivative works of, and distribute the Service Data Objects
+JavaDoc and Interface Definition Files files in any medium without fee or royalty as part
+of a compliant implementation of the Service Data Objects Specification is hereby granted.
+The Service Data Objects Specification may be found at any of the following locations:
+
+http://dev2dev.bea.com/technologies/commonj/index.jsp
+http://www.ibm.com/developerworks/library/specification/ws-sdo/
+http://oracle.com/technology/webservices/sca
+https://www.sdn.sap.com/
+http://www.xcalia/xdn/specs/sdo
+
+THE SERVICE DATA OBJECTS SPECIFICATION AND THE JAVADOC AND INTERFACE DEFINITION FILES
+ARE PROVIDED "AS IS," AND THE AUTHORS MAKE NO REPRESENTATIONS OR WARRANTIES, EXPRESS OR IMPLIED, REGARDING THIS
+SPECIFICATION OR THE JAVADOC AND INTERFACE DEFINITION FILES AND THE IMPLEMENTATION OF THEIR CONTENTS,
+INCLUDING, BUT NOT LIMITED TO, WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE,
+NON-INFRINGEMENT OR TITLE. THE AUTHORS WILL NOT BE LIABLE FOR ANY DIRECT, INDIRECT, SPECIAL,
+INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF OR RELATING TO ANY USE OR DISTRIBUTION OF THE
+SERVICE DATA OBJECTS SPECIFICATION OR THE JAVADOC OR INTERFACE DEFINTION FILES.
+
+The name and trademarks of the Authors may NOT be used in any manner, including advertising or
+publicity pertaining to the Service Component Architecture Specification or its contents without specific,
+written prior permission. Title to copyright in the Service Data Objects Specification and the
+JavaDoc and Interface Definition Files will at all times remain with the Authors.
+
+No other rights are granted by implication, estoppel or otherwise.
+
+
diff --git a/branches/sdo-java-M2/sdo/sample/NOTICE.txt b/branches/sdo-java-M2/sdo/sample/NOTICE.txt
new file mode 100644
index 0000000000..6e0a0b8dce
--- /dev/null
+++ b/branches/sdo-java-M2/sdo/sample/NOTICE.txt
@@ -0,0 +1,34 @@
+Apache Tuscany SDO for Java
+Copyright 2006 The Apache Software Foundation
+
+This product includes software developed at
+The Apache Software Foundation (http://www.apache.org/).
+
+Apache Tuscany is an effort undergoing incubation at The Apache Software Foundation (ASF),
+sponsored by the Apache Web Services PMC. Incubation is required of all newly accepted
+projects until a further review indicates that the infrastructure, communications,
+and decision making process have stabilized in a manner consistent with other successful
+ASF projects. While incubation status is not necessarily a reflection of the completeness
+or stability of the code, it does indicate that the project has yet to be fully endorsed
+by the ASF.
+
+Unless otherwise indicated, all distribution made available by the Apache Software Foundation
+is provided to you under the terms and conditions of the Apache License Version 2.0 ("AL").
+A copy of the AL is provided with this distribution as the LICENSE.txt file present in the
+root directory, and is also available at http://www.apache.org/licenses/.
+
+The terms and conditions governing the distribution may refer to the AL or other license
+agreements, notices or terms and conditions. Some of these other license agreements may
+include (but are not limited to):
+
+ . Eclipse Public License Version 1.0 (available at http://www.eclipse.org/legal/epl-v10.html)
+ . Common Public License Version 1.0 (available at http://www.eclipse.org/legal/cpl-v10.html)
+
+It is your obligation to read and accept all such terms and conditions prior to use of the
+distribution. If term or condition is provided, please contact the Apache Software Foundation
+to determine what terms and conditions govern that particular distribution.
+
+This product also includes software developed by the Open Service Oriented Architecture organisation
+(http://osoa.org). The license for this software may be found in the LICENSE.txt file contained in this
+distribution.
+
diff --git a/branches/sdo-java-M2/sdo/sample/README.txt b/branches/sdo-java-M2/sdo/sample/README.txt
new file mode 100644
index 0000000000..0a6f233d55
--- /dev/null
+++ b/branches/sdo-java-M2/sdo/sample/README.txt
@@ -0,0 +1,20 @@
+Tuscany SDO Java M2 Sample Program Distribution
+===============================================
+
+This is a distribution of the sample programs for the Tuscany SDO Java implementation.
+
+Building the SDO Java Samples Project from this source distribution
+-------------------------------------------------------------------
+
+Note: If you have already built the SDO for Java Implementation source distribution
+then these sample programs are included in that distribution and are built as part
+of that process. This distribution archive is provided for building against a
+binary distribution of SDO for Java.
+
+Ensure that all the jar files found in the SDO for Java binary distribution's
+lib directory are on your java classpath, and use your java 1.4.2 (or greater) compiler to
+compile the classes in this distribution in your own favourite development environment.
+
+Look at the site/apidocs/index.html to understand how to run these programs.
+
+
diff --git a/branches/sdo-java-M2/sdo/sample/STATUS.txt b/branches/sdo-java-M2/sdo/sample/STATUS.txt
new file mode 100644
index 0000000000..24a37ea606
--- /dev/null
+++ b/branches/sdo-java-M2/sdo/sample/STATUS.txt
@@ -0,0 +1,73 @@
+Apache Tuscany Status
+
+Tuscany provides multiple language implementations of the Service Component Architecture (SCA) specifications and related technologies such as SDO.
+
+PROJECT STATUS
+==============
+
+ Tuscany is being incubated at the request of the Apache Web Services PMC.
+ For information on incubation please visit the project page at
+ http://incubator.apache.org/projects/tuscany.html
+
+PENDING ISSUES
+==============
+XXXX-XX-XX CCLA received for IBM's contribution of a C++ implementation
+XXXX-XX-XX CCLA received for BEA and IBM joint contribution of a Java implementation
+
+RESOLVED ISSUES SINCE LAST STATUS
+=================================
+None
+
+OTHER NEWS
+==========
+
+2006-09-29 Vote to add Ignacio Silva-Lepe as a new committer
+2006-09-18 Vote to add Venkata Krishnan as a new committer
+2006-08-10 Vote to add Andrew Borley as a new committer
+2006-08-07 Vote to add Meeraj Kunnumpurath as a new committer
+2006-08-07 Vote to add Kelvin Goodson as a new committer
+2006-08-06 Vote to add Brent Daniel as a new committer
+2006-08-04 Vote to add Raymond Feng as a new committer
+2006-08-01 C++ Milestone 1 release
+2006-06-07 Java Milestone 1 release
+2006-05-02 Vote to add Dan Kulp as a new committer
+
+2006-01-05 Contribution of Java implementation by BEA and IBM committed
+2006-01-05 Contribution of C+ implementation by IBM committed
+
+RELEASE STATUS
+==============
+None
+
+REFERENCES
+==========
+Status file http://svn.apache.org/repos/asf/incubator/tuscany/STATUS
+User List tuscany-user@ws.apache.org
+Developer List tuscany-dev@ws.apache.org
+Commits List tuscany-commits@ws.apache.org
+Source Code http://svn.apache.org/repos/asf/incubator/tuscany/
+Issue Tracking http://issues.apache.org/jira/browse/TUSCANY
+
+Committers
+ ajborley Andrew Borley
+ antelder Ant Elder
+ bdaniel Brent Daniel
+ dkulp Dan Kulp
+ dims Davanum Srinivas
+ edslattery Ed Slattery
+ ekoneil Eddie O'Neil
+ frankb Frank Budinsky
+ geirm Geir Magnusson Jr
+ isilval Ignacio Silva-Lepe
+ jsdelfino Jean-Sebastien Delfino
+ jboynes Jeremy Boynes
+ jmarino Jim Marino
+ kelvingoodson Kelvin Goodson
+ kentam Ken Tam
+ kwilliams Kevin Williams
+ edwardsmj Mike Edwards
+ meerajk Meeraj Kunnumpurath
+ rfeng Raymond Feng
+ robbinspg Pete Robbins
+ rineholt Rick Rineholt
+ svkrish Venkata Krishnan
diff --git a/branches/sdo-java-M2/sdo/sample/pom.xml b/branches/sdo-java-M2/sdo/sample/pom.xml
new file mode 100644
index 0000000000..9c98895620
--- /dev/null
+++ b/branches/sdo-java-M2/sdo/sample/pom.xml
@@ -0,0 +1,107 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+-->
+<project xmlns="http://maven.apache.org/POM/4.0.0"
+ xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+ xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
+
+ <parent>
+ <groupId>org.apache.tuscany.sdo</groupId>
+ <artifactId>tuscany-sdo</artifactId>
+ <version>1.0-incubator-M2</version>
+ </parent>
+
+ <modelVersion>4.0.0</modelVersion>
+ <artifactId>sample-sdo</artifactId>
+ <packaging>jar</packaging>
+ <name>Tuscany SDO Sample</name>
+ <dependencies>
+ <dependency>
+ <groupId>commonj</groupId>
+ <artifactId>sdo-api-r${specVersion}</artifactId>
+ </dependency>
+
+ <dependency>
+ <groupId>org.apache.tuscany.sdo</groupId>
+ <artifactId>tuscany-sdo-impl</artifactId>
+ <version>${pom.version}</version>
+ <scope>compile</scope>
+ </dependency>
+ </dependencies>
+
+ <build>
+ <sourceDirectory>src/main/java</sourceDirectory>
+ <resources>
+ <resource>
+ <directory>src/main/java</directory>
+ </resource>
+ <resource>
+ <directory>src/main/resources</directory>
+ </resource>
+ </resources>
+ <plugins>
+ <plugin>
+ <groupId>org.apache.maven.plugins</groupId>
+ <artifactId>maven-javadoc-plugin</artifactId>
+ <configuration>
+ <overview>${basedir}/src/main/java/org/apache/tuscany/samples/sdo/overview.html</overview>
+ <version>2.0</version>
+ </configuration>
+ <executions>
+ <execution>
+ <phase>package</phase>
+ <goals>
+ <goal>javadoc</goal>
+ </goals>
+ </execution>
+ </executions>
+ </plugin>
+ <plugin>
+ <groupId>org.apache.maven.plugins</groupId>
+ <artifactId>maven-jar-plugin</artifactId>
+ <configuration>
+ <archive>
+ <manifest>
+ <mainClass>org.apache.tuscany.samples.sdo.ExecuteSamples</mainClass>
+ </manifest>
+ </archive>
+ </configuration>
+ </plugin>
+ <!-- <plugin>
+ <groupId>org.apache.maven.plugins</groupId>
+ <artifactId>maven-assembly-plugin</artifactId>
+
+ <executions>
+ <execution>
+ <phase>package</phase>
+ <goals>
+ <goal>assembly</goal>
+ </goals>
+ </execution>
+ </executions>
+
+ <configuration>
+ <descriptors>
+ <descriptor>distribution/assembly/sdoSamples.xml</descriptor>
+ </descriptors>
+ </configuration>
+ </plugin> -->
+ </plugins>
+ </build>
+</project>
diff --git a/branches/sdo-java-M2/sdo/sample/src/main/java/org/apache/tuscany/samples/sdo/ExecuteSamples.java b/branches/sdo-java-M2/sdo/sample/src/main/java/org/apache/tuscany/samples/sdo/ExecuteSamples.java
new file mode 100644
index 0000000000..8a151aa3af
--- /dev/null
+++ b/branches/sdo-java-M2/sdo/sample/src/main/java/org/apache/tuscany/samples/sdo/ExecuteSamples.java
@@ -0,0 +1,199 @@
+/**
+ *
+ * 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.samples.sdo;
+
+import java.io.BufferedReader;
+import java.io.InputStreamReader;
+
+import org.apache.tuscany.samples.sdo.otherSources.*;
+import org.apache.tuscany.samples.sdo.specCodeSnippets.*;
+import org.apache.tuscany.samples.sdo.specExampleSection.*;
+
+/**
+ * Executes all command line samples. <br>
+ * <br>
+ * <b>Usage:</b> <br>
+ * This sample can easily be run from within Eclipse as a Java Application if tuscany or
+ * the sample-sdo project is imported into Eclipse as an existing project.
+ * <br><br>
+ * If executing as a standalone application please do the following:
+ * <br>
+ * <UL>
+ * <LI>Include the following jar files on your classpath :
+ * <UL>
+ * <LI>SDO API and Tuscany Implementation
+ * <UL>
+ * <LI>sdo-api-{version}.jar - SDO API
+ * <LI>tuscany-sdo-impl-{version}.jar - Tuscany SDO implementation
+ * </UL>
+ * </LI>
+ * <LI>EMF dependencies.
+ * <UL>
+ * <LI>emf-common-{version}.jar - some common framework utility and base classes
+ * <LI>emf-ecore-{version}.jar - the EMF core runtime implementation classes (the Ecore metamodel)
+ * <LI>emf-ecore-change-{version}.jar - the EMF change recorder and framework
+ * <LI>emf-ecore-xmi-{version}.jar - EMF's default XML (and XMI) serializer and loader
+ * <LI>xsd-{version}.jar - the XML Schema model
+ * </UL>
+ * </LI>
+ * </UL>
+ *
+ * These jar files can be obtained from directly from Tuscany and EMF projects or from <a
+ * href="http://wiki.apache.org/ws-data/attachments/Tuscany(2f)TuscanyJava(2f)SDO_Java_Overview/attachments/SDO%20Execution%20Dependencies"
+ * target="_bank">SDO Execution Dependancies </a> </LI>
+ * <LI>Execute: <br>
+ * java org.apache.tuscany.samples.sdo.ExecuteSamples </LI>
+ * </UL>
+ *
+ * @author Robbie Minshall
+ */
+public class ExecuteSamples {
+
+ /**
+ * @param args
+ */
+ public static void main(String[] args) {
+ try {
+
+ System.out.println("Welcome to SDO Sample Land");
+ System.out.println("This class will simply execute samples within this jar file");
+
+ BufferedReader in = new BufferedReader(new InputStreamReader(System.in));
+ System.out.println();
+ System.out.println();
+ System.out.println("There are currently three groups of samples");
+ System.out.println("1. Simple code snippets located throughout the specifiction with comparative methods for acheiving the same results");
+ System.out.println("2. Full examples located within Examples section of specification");
+ System.out.println("3. Other sample sources such as white papers and online articles");
+ System.out.println(">>>Press Enter to continue");
+ in.readLine();
+ System.out
+ .println("--------------------------------------------------------------------------------------------------------------------------");
+ System.out
+ .println("Lets start with some basics. These samples are located within the org.apache.tuscany.sdo.samples.specCodeSnipets package."
+ + " They demonstrate many code snippets that are located throughout the SDO specification");
+ System.out
+ .println("--------------------------------------------------------------------------------------------------------------------------");
+
+ System.out.println(">>>Press Enter to continue");
+ in.readLine();
+ CreateDataObjectFromXmlString.main(args);
+ System.out.println(">>>Press Enter for next sample");
+ in.readLine();
+ CreateDataObjectFromXsdAndXmlFiles.main(args);
+ System.out.println(">>>Press Enter for next sample");
+ in.readLine();
+ AccessDataObjectPropertiesByName.main(args);
+ System.out.println(">>>Press Enter to continue");
+ in.readLine();
+
+ //The following samples are still under construction
+
+ //CreateXmlAndXsdFromDataObject.main(args);
+ //System.out.println(">>>Press Enter for next sample");
+ //in.readLine();
+ //DataObjectWithChangeSummary.main(args);
+ //System.out.println(">>>Press Enter for next sample");
+ //in.readLine();
+
+ DynamicCustomerTypeSample.main(args);
+ System.out.println(">>>Press Enter for next sample");
+ in.readLine();
+ PrintPropertiesOfDataObject.main(args);
+ System.out.println(">>>Press Enter for next sample");
+ in.readLine();
+ UsingXPath.main(args);
+ System.out.println(">>>Press Enter for next sample");
+ in.readLine();
+ ObtainingDataGraphFromXml.main(args);
+
+ System.out.println();
+ System.out
+ .println("--------------------------------------------------------------------------------------------------------------------------");
+ System.out
+ .println("The following group of samples implement the examples located within Examples section of specification and are located in "
+ + "the org.apache.tuscany.sdo.samples.specExampleSection package");
+ System.out
+ .println("--------------------------------------------------------------------------------------------------------------------------");
+
+ System.out.println(">>>Press Enter to continue");
+ in.readLine();
+ AccessDataObjectsUsingXPath.main(args);
+ System.out.println(">>>Press Enter for next sample");
+ in.readLine();
+
+ AccessingDataObjectsViaPropertyIndex.main(args);
+ System.out.println(">>>Press Enter for next sample");
+ in.readLine();
+
+ AccessingTheContentsOfASequence.main(args);
+ System.out.println(">>>Press Enter for next sample");
+ in.readLine();
+
+ CreatingDataObjectTreesFromXMLDocuments.main(args);
+ System.out.println(">>>Press Enter for next sample");
+ in.readLine();
+
+ CreatingXmlFromDataObjects.main(args);
+ System.out.println(">>>Press Enter for next sample");
+ in.readLine();
+
+ SerializingDesearializingADataObject.main(args);
+ System.out.println(">>>Press Enter for next sample");
+ in.readLine();
+
+ UsingTypeAndPropertyWithDataObjects.main(args);
+ System.out.println(">>>Press Enter for next sample");
+ in.readLine();
+
+ System.out.println();
+ System.out
+ .println("--------------------------------------------------------------------------------------------------------------------------");
+ System.out.println("The following group of samples come from sources other than the specification");
+ System.out
+ .println("--------------------------------------------------------------------------------------------------------------------------");
+
+ System.out
+ .println("The next two samples are based upon Fuhwei Lwo's paper http://www-128.ibm.com/developerworks/webservices/library/ws-sdoxmlschema/");
+ System.out.println(">>>Press Enter to continue");
+ in.readLine();
+ CreatePurchaseOrder.main(args);
+ System.out.println(">>>Press Enter for next sample");
+ in.readLine();
+ ReadPurchaseOrder.main(args);
+
+ System.out.println();
+ System.out.println();
+ System.out
+ .println("The following sample is slightly more extensive and provides a interactive menu to play with purchase order DataObjects");
+ System.out.println(">>>Press Enter to continue");
+ in.readLine();
+ PurchaseOrderCmdLine.main(args);
+
+ } catch (Exception e) {
+ System.out.println("Sorry an exception was encountered " + e.toString());
+ e.printStackTrace();
+ }
+ System.out.println("All done, goodBye");
+
+ }
+
+}
diff --git a/branches/sdo-java-M2/sdo/sample/src/main/java/org/apache/tuscany/samples/sdo/SdoSampleConstants.java b/branches/sdo-java-M2/sdo/sample/src/main/java/org/apache/tuscany/samples/sdo/SdoSampleConstants.java
new file mode 100644
index 0000000000..ff36dd0ae8
--- /dev/null
+++ b/branches/sdo-java-M2/sdo/sample/src/main/java/org/apache/tuscany/samples/sdo/SdoSampleConstants.java
@@ -0,0 +1,72 @@
+/**
+ *
+ * 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.samples.sdo;
+
+/**
+ * Interface provides some common Constants that are used across the samples.
+ *
+ * @author Robbie Minshall
+ */
+public interface SdoSampleConstants {
+
+ /**
+ * 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";
+
+ /**
+ * Default file name to use when generated xml file for purchase order
+ * @see org.apache.tuscany.samples.sdo.CreatePurchaseOrder
+ */
+ public static final String PO_XML_GENERATED = "temporaryPoGenerated.xml";
+
+ /**
+ * Fake namespace used for PurchaseOrder
+ */
+ public static final String PO_NAMESPACE = "http://www.example.com/PO";
+
+ /**
+ * 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.otherSources.CreateCompany}
+ */
+ public static final String COMPANY_DATAOBJECT_XML = "companyGenerated.xml";
+
+}
diff --git a/branches/sdo-java-M2/sdo/sample/src/main/java/org/apache/tuscany/samples/sdo/otherSources/CreateCompany.java b/branches/sdo-java-M2/sdo/sample/src/main/java/org/apache/tuscany/samples/sdo/otherSources/CreateCompany.java
new file mode 100644
index 0000000000..c4eddabb6b
--- /dev/null
+++ b/branches/sdo-java-M2/sdo/sample/src/main/java/org/apache/tuscany/samples/sdo/otherSources/CreateCompany.java
@@ -0,0 +1,249 @@
+/**
+ *
+ * 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.samples.sdo.otherSources;
+
+import java.io.BufferedReader;
+import java.io.FileOutputStream;
+import java.io.InputStream;
+import java.io.InputStreamReader;
+
+import java.util.List;
+
+import commonj.sdo.DataObject;
+import commonj.sdo.Type;
+import commonj.sdo.DataGraph;
+import commonj.sdo.helper.TypeHelper;
+import commonj.sdo.helper.DataFactory;
+import commonj.sdo.helper.XMLHelper;
+import commonj.sdo.helper.XSDHelper;
+
+import org.apache.tuscany.samples.sdo.SdoSampleConstants;
+import org.apache.tuscany.sdo.util.SDOUtil;
+
+/**
+ * Demonstrates creating a DataObject using the Types defined in a previously generated xsd {@link SdoSampleConstants#COMPANY_XSD} then persisting to a XML file
+ * This example is useful as a reference for creating valid xml documents that conform to an existing XSD and has been used to create valid XML files for use
+ * with specification code samples.
+ *
+ * <b>Usage:</b> <br>
+ * This sample can easily be run from within Eclipse as a Java Application if tuscany or
+ * the sample-sdo project is imported into Eclipse as an existing project.
+ * <br><br>
+ * If executing as a standalone application please do the following:
+ * <br>
+ * <UL>
+ * <LI>Include the following jar files on your classpath :
+ * <UL>
+ * <LI>SDO API and Tuscany Implementation
+ * <UL>
+ * <LI>sdo-api-{version}.jar - SDO API
+ * <LI>tuscany-sdo-impl-{version}.jar - Tuscany SDO implementation
+ * </UL>
+ * </LI>
+ * <LI>EMF dependencies.
+ * <UL>
+ * <LI>emf-common-{version}.jar - some common framework utility and base classes
+ * <LI>emf-ecore-{version}.jar - the EMF core runtime implementation classes (the Ecore metamodel)
+ * <LI>emf-ecore-change-{version}.jar - the EMF change recorder and framework
+ * <LI>emf-ecore-xmi-{version}.jar - EMF's default XML (and XMI) serializer and loader
+ * <LI>xsd-{version}.jar - the XML Schema model
+ * </UL>
+ * </LI>
+ * </UL>
+ *
+ * These jar files can be obtained from directly from Tuscany and EMF projects or from <a
+ * href="http://wiki.apache.org/ws-data/attachments/Tuscany(2f)TuscanyJava(2f)SDO_Java_Overview/attachments/SDO%20Execution%20Dependencies"
+ * target="_bank">SDO Execution Dependancies </a> </LI>
+ * <LI>Execute: <br>
+ * java org.apache.tuscany.samples.sdo.otherSources.CreateCompany</LI>
+ * </UL>
+ *
+ * @author Robbie Minshall
+ *
+ */
+public class CreateCompany {
+
+ /**
+ * XML file generated for the company DataObject
+ */
+ public static final String COMPANY_GENERATED_XML = "companyGenerated.xml";
+
+ /**
+ * XML file generated for the company DataGraph
+ */
+ public static final String COMPANY_DATAGRAPH_GENERATED_XML = "companyDataGraphGenerated.xml";
+
+
+ /**
+ * Main method. Execute this method in order to run sample
+ * @param args
+ * @throws Exception
+ */
+ public static void main(String[] args) throws Exception {
+
+ System.out.println("***************************************");
+ System.out.println("SDO Sample CreateCompany");
+ System.out.println("***************************************");
+ System.out.println("Demonstrates creating a DataObject using the Types defined in a previously generated xsd {@link SdoSampleConstants#COMPANY_XSD} then persisting to a XML file");
+ System.out.println("***************************************");
+ /**
+ * Use xsd to define model
+ */
+ defineCompanyTypes();
+
+ /**
+ * DataObjects can exist on there own or can be associated with a DataGraph. This sample allows you to create and then generate xml for a
+ * company DataObject That is either associated with a DataGraph or independant
+ */
+ boolean useDataGraph = shouldUseDataGraph();
+
+ // define these so that they will be scoped appropiately.
+ DataGraph dataGraph = null;
+ DataObject company = null;
+
+ if (useDataGraph) {
+
+ /**
+ * The SDO specification says the following about creating a DataGraph A DataGraph is created by a DAS, which returns either an empty
+ * DataGraph, or a DataGraph filled with DataObjects. An empty DataGraph can have a root assigned by the createRootObject() methods.
+ * However, if a previous root DataObject exists then an IllegalStateException is thrown.
+ *
+ * In order to create a simply sample which creates a DataGraph without the use of a DAS this sample will use the
+ * {@link org.apache.tuscany.sdo.util.SDOUtil} class to create a DataObject
+ */
+
+ dataGraph = SDOUtil.createDataGraph();
+ company = dataGraph.createRootObject(SdoSampleConstants.COMPANY_NAMESPACE, "CompanyType");
+
+ } else {
+
+ /*
+ * The following creates a DataObject without a DataGraph
+ */
+ Type companyType = TypeHelper.INSTANCE.getType(SdoSampleConstants.COMPANY_NAMESPACE, "CompanyType");
+ // this is equivilent to
+ // DataObject company = DataFactory.INSTANCE.create(SdoSampleConstants.COMPANY_NAMESPACE, "CompanyType");
+ company = DataFactory.INSTANCE.create(companyType);
+ }
+
+ System.out.println("Populating company DataObject");
+ company.setString("name", "ACME");
+ company.setString("employeeOfTheMonth", "E0001");
+
+ System.out.println("Creating Deptartment");
+ DataObject depts = company.createDataObject("departments",SdoSampleConstants.COMPANY_NAMESPACE,"DepartmentType");
+
+ depts.setString("name", "Advanced Technologies");
+ depts.setString("location", "NY");
+ depts.setString("number", "123");
+
+ System.out.println("Creating employee John Jones");
+ DataObject johnJones = depts.createDataObject("employees",SdoSampleConstants.COMPANY_NAMESPACE, "EmployeeType");
+ johnJones.setString("name", "John Jones");
+
+ johnJones.setString("SN", "E0001");
+
+ System.out.println("Creating employee Jane Doe");
+ DataObject janeDoe = depts.createDataObject("employees",SdoSampleConstants.COMPANY_NAMESPACE, "EmployeeType");
+ janeDoe.setString("name", "Jane Doe");
+ janeDoe.setString("SN", "E0003");
+
+ System.out.println("Creating manager A Varone");
+ DataObject fVarone = depts.createDataObject("employees",SdoSampleConstants.COMPANY_NAMESPACE, "EmployeeType");
+ fVarone.setString("name", "A Varone");
+ fVarone.setString("SN", "E0004");
+ fVarone.setString("manager", "true");
+ System.out.println("DataObject creation completed");
+ System.out.println();
+
+ // print out the generated company DataObject or DataGraph according to user preferences
+ if (useDataGraph) {
+ //write the DataGraph to generated xml file
+ FileOutputStream fos = new FileOutputStream(COMPANY_DATAGRAPH_GENERATED_XML);
+ System.out.println("Writing company DataGraph to " + COMPANY_DATAGRAPH_GENERATED_XML);
+ // print the Company DataObject
+ SDOUtil.saveDataGraph(dataGraph, fos, null);
+
+ // print the company DataGraph to System.out
+ System.out.println("The xml for the created DataGraph would like : ");
+ SDOUtil.saveDataGraph(dataGraph, System.out, null);
+
+ } else {
+
+ //write out to a generated xml file
+ FileOutputStream fos = new FileOutputStream(COMPANY_GENERATED_XML);
+ System.out.println("Writing company DataObject to " + COMPANY_GENERATED_XML);
+ // print the Company DataObject
+ XMLHelper.INSTANCE.save(company, SdoSampleConstants.COMPANY_NAMESPACE, "company", fos);
+
+ // print the company DataObject to System.out
+ String generatedXml = XMLHelper.INSTANCE.save(company, SdoSampleConstants.COMPANY_NAMESPACE, "company");
+ System.out.println("The generated xml for the DataObject would look like : " );
+ System.out.println(generatedXml);
+ }
+
+ }
+
+ /**
+ * Defines company types using XSD.
+ * @throws Exception
+ */
+ private static void defineCompanyTypes() throws Exception {
+
+ System.out.println("Defining Types using XSD");
+ InputStream is = null;
+
+ System.out.println("Opening input stream to " + SdoSampleConstants.COMPANY_XSD);
+ is = ClassLoader.getSystemResourceAsStream(SdoSampleConstants.COMPANY_XSD);
+ List types = XSDHelper.INSTANCE.define(is, null);
+ is.close();
+ System.out.println("Type definition completed");
+
+ }
+
+ /**
+ * Utility method to obtain information from the user about whether or not they would like to use a DataGraph or simply use a DataObject
+ *
+ * @return whether or not a DataGraph should be used
+ * @throws Exception
+ */
+ private static boolean shouldUseDataGraph() throws Exception {
+
+ System.out.print("Create company DataObject associated with a DataGraph {y,n} :");
+ BufferedReader in = new BufferedReader(new InputStreamReader(System.in));
+ String answer = in.readLine();
+ while ((! answer.equalsIgnoreCase("n")) && (! answer.equalsIgnoreCase("y"))) {
+
+ System.out.println();
+ System.out.print("Sorry, please enter 'y' or 'n':");
+ answer = in.readLine();
+ }
+ System.out.println();
+
+ if (answer.equalsIgnoreCase("y")) {
+ return true;
+ } else {
+ return false;
+ }
+ }
+
+
+}
diff --git a/branches/sdo-java-M2/sdo/sample/src/main/java/org/apache/tuscany/samples/sdo/otherSources/CreatePurchaseOrder.java b/branches/sdo-java-M2/sdo/sample/src/main/java/org/apache/tuscany/samples/sdo/otherSources/CreatePurchaseOrder.java
new file mode 100644
index 0000000000..f3c0a6e704
--- /dev/null
+++ b/branches/sdo-java-M2/sdo/sample/src/main/java/org/apache/tuscany/samples/sdo/otherSources/CreatePurchaseOrder.java
@@ -0,0 +1,174 @@
+/**
+ *
+ * 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.samples.sdo.otherSources;
+
+import java.io.FileOutputStream;
+import java.io.InputStream;
+import java.io.OutputStream;
+
+import commonj.sdo.DataObject;
+import commonj.sdo.helper.DataFactory;
+import commonj.sdo.helper.XMLHelper;
+import commonj.sdo.helper.XSDHelper;
+
+import org.apache.tuscany.samples.sdo.SdoSampleConstants;
+
+/**
+ * Demonstrates creating a purchaseOrder DataObject from an existing XSD and then
+ * persisting to disk. Uses previously defined model
+ * {@link org.apache.tuscany.samples.sdo.SdoSampleConstants#PO_XSD_RESOURCE} to
+ * define types then generates a purchase order DataObject and persists to
+ * {@link org.apache.tuscany.samples.sdo.SdoSampleConstants#PO_XML_GENERATED}. This
+ * sample was used to generate valid XML for Fuhwei Lwo's paper <A
+ * HREF="http://www-128.ibm.com/developerworks/webservices/library/ws-sdoxmlschema/"
+ * title="Me" onClick="checkLinks(this)">Create and read an XML document based on XML
+ * Schema</A>
+ *
+ * * <b>Usage:</b> <br>
+ * This sample can easily be run from within Eclipse as a Java Application if tuscany or
+ * the sample-sdo project is imported into Eclipse as an existing project.
+ * <br><br>
+ * If executing as a standalone application please do the following:
+ * <br>
+ * <UL>
+ * <LI>Include the following jar files on your classpath :
+ * <UL>
+ * <LI>SDO API and Tuscany Implementation
+ * <UL>
+ * <LI>sdo-api-{version}.jar - SDO API
+ * <LI>tuscany-sdo-impl-{version}.jar - Tuscany SDO implementation
+ * </UL>
+ * </LI>
+ * <LI>EMF dependencies.
+ * <UL>
+ * <LI>emf-common-{version}.jar - some common framework utility and base classes
+ * <LI>emf-ecore-{version}.jar - the EMF core runtime implementation classes (the Ecore metamodel)
+ * <LI>emf-ecore-change-{version}.jar - the EMF change recorder and framework
+ * <LI>emf-ecore-xmi-{version}.jar - EMF's default XML (and XMI) serializer and loader
+ * <LI>xsd-{version}.jar - the XML Schema model
+ * </UL>
+ * </LI>
+ * </UL>
+ *
+ * These jar files can be obtained from directly from Tuscany and EMF projects or from <a
+ * href="http://wiki.apache.org/ws-data/attachments/Tuscany(2f)TuscanyJava(2f)SDO_Java_Overview/attachments/SDO%20Execution%20Dependencies"
+ * target="_bank">SDO Execution Dependancies </a> </LI>
+ * <LI>Execute: <br>
+ * java org.apache.tuscany.samples.sdo.otherSources.CreatePurchaseOrder</LI>
+ * </UL>
+ *
+ * @author Fuhwei Lwo
+ * @author Robbie Minshall
+ * @see ReadPurchaseOrder
+ * @see org.apache.tuscany.samples.sdo.specExampleSection.CreatingXmlFromDataObjects
+ */
+
+public class CreatePurchaseOrder {
+
+ /**
+ * Defines purchase order types using
+ * {@link org.apache.tuscany.samples.sdo.SdoSampleConstants#PO_XSD_RESOURCE}
+ *
+ * @throws Exception
+ */
+ private static void definePOTypes() throws Exception {
+
+ InputStream is = ClassLoader.getSystemResourceAsStream(SdoSampleConstants.PO_XSD_RESOURCE);
+ if (is == null) {
+ System.out.println("InputStream is null");
+ } else {
+ System.out.println("Obtained Input Stream from resoruce");
+ }
+ XSDHelper.INSTANCE.define(is, null);
+ is.close();
+ }
+
+ /**
+ * Drives sample
+ *
+ * @param args.
+ * none required.
+ */
+ public static void main(String[] args) {
+ try {
+
+ System.out.println("***************************************");
+ System.out.println("SDO Sample CreatePurchaseOrder");
+ System.out.println("***************************************");
+ System.out.println("This sample is based upon Fuhwei Lwo's paper "
+ + "http://www-128.ibm.com/developerworks/webservices/library/ws-sdoxmlschema/"
+ + " and demonstrates creating a purchaseOrder DataObject from an "
+ + " existing XSD and then persisting to disk. Uses previously defined model");
+
+ System.out.println("***************************************");
+
+ definePOTypes();
+ System.out.println("Defined Types using xsd");
+ DataObject purchaseOrder = DataFactory.INSTANCE.create(SdoSampleConstants.PO_NAMESPACE, "PurchaseOrderType");
+ System.out.println("Created DataObject using DataFactory");
+
+ purchaseOrder.setString("orderDate", "1999-10-20");
+
+ DataObject shipTo = purchaseOrder.createDataObject("shipTo");
+ shipTo.set("country", "US");
+ shipTo.set("name", "Alice Smith");
+ shipTo.set("street", "123 Maple Street");
+ shipTo.set("city", "Mill Valley");
+ shipTo.set("state", "CA");
+ shipTo.setString("zip", "90952");
+ DataObject billTo = purchaseOrder.createDataObject("billTo");
+ billTo.set("country", "US");
+ billTo.set("name", "Robert Smith");
+ billTo.set("street", "8 Oak Avenue");
+ billTo.set("city", "Mill Valley");
+ billTo.set("state", "PA");
+ billTo.setString("zip", "95819");
+ purchaseOrder.set("comment", "Hurry, my lawn is going wild!");
+ System.out.println("Created orderDate, shipTo, billTo and comment properties");
+
+ DataObject items = purchaseOrder.createDataObject("items");
+
+ DataObject item1 = items.createDataObject("item");
+ item1.set("partNum", "872-AA");
+ item1.set("productName", "Lawnmower");
+ item1.setInt("quantity", 1);
+ item1.setString("price", "148.95");
+
+ item1.set("comment", "Confirm this is electric");
+
+ DataObject item2 = items.createDataObject("item");
+ item2.set("partNum", "926-AA");
+ item2.set("productName", "Baby Monitor");
+ item2.setInt("quantity", 1);
+ item2.setString("price", "39.98");
+ item2.setString("shipDate", "1999-05-21");
+ System.out.println("Created 2 items");
+
+ OutputStream stream = new FileOutputStream(SdoSampleConstants.PO_XML_GENERATED);
+ XMLHelper.INSTANCE.save(purchaseOrder, SdoSampleConstants.PO_NAMESPACE, "purchaseOrder", stream);
+ System.out.println("Created file " + SdoSampleConstants.PO_XML_GENERATED);
+ } catch (Exception e) {
+ System.out.println("Sorry an error occured " + e.toString());
+ e.printStackTrace();
+ }
+ System.out.println("GoodBye");
+ }
+}
diff --git a/branches/sdo-java-M2/sdo/sample/src/main/java/org/apache/tuscany/samples/sdo/otherSources/PurchaseOrderCmdLine.java b/branches/sdo-java-M2/sdo/sample/src/main/java/org/apache/tuscany/samples/sdo/otherSources/PurchaseOrderCmdLine.java
new file mode 100644
index 0000000000..148f677a5f
--- /dev/null
+++ b/branches/sdo-java-M2/sdo/sample/src/main/java/org/apache/tuscany/samples/sdo/otherSources/PurchaseOrderCmdLine.java
@@ -0,0 +1,398 @@
+/**
+ *
+ * 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.samples.sdo.otherSources;
+
+import java.io.*;
+import org.apache.tuscany.samples.sdo.SdoSampleConstants;
+
+/**
+ * Provides interactive menu based command line interface to modify, save, view purchase order DataObject.
+ *
+ * <b>Usage:</b> <br>
+ * This sample can easily be run from within Eclipse as a Java Application if tuscany or
+ * the sample-sdo project is imported into Eclipse as an existing project.
+ * <br><br>
+ * If executing as a standalone application please do the following:
+ * <br>
+ * <UL>
+ * <LI>Include the following jar files on your classpath :
+ * <UL>
+ * <LI>SDO API and Tuscany Implementation
+ * <UL>
+ * <LI>sdo-api-{version}.jar - SDO API
+ * <LI>tuscany-sdo-impl-{version}.jar - Tuscany SDO implementation
+ * </UL>
+ * </LI>
+ * <LI>EMF dependencies.
+ * <UL>
+ * <LI>emf-common-{version}.jar - some common framework utility and base classes
+ * <LI>emf-ecore-{version}.jar - the EMF core runtime implementation classes (the Ecore metamodel)
+ * <LI>emf-ecore-change-{version}.jar - the EMF change recorder and framework
+ * <LI>emf-ecore-xmi-{version}.jar - EMF's default XML (and XMI) serializer and loader
+ * <LI>xsd-{version}.jar - the XML Schema model
+ * </UL>
+ * </LI>
+ * </UL>
+ *
+ * These jar files can be obtained from directly from Tuscany and EMF projects or from <a
+ * href="http://wiki.apache.org/ws-data/attachments/Tuscany(2f)TuscanyJava(2f)SDO_Java_Overview/attachments/SDO%20Execution%20Dependencies"
+ * target="_bank">SDO Execution Dependancies </a> </LI>
+ * <LI>Execute: <br>
+ * java org.apache.tuscany.samples.sdo.otherSources.PurchaseOrderCmdLine</LI>
+ * </UL>
+ * @author Robbie Minshall
+ * @see org.apache.tuscany.samples.sdo.SdoSampleConstants
+ * @see org.apache.tuscany.samples.sdo.otherSources.PurchaseOrderControl
+ */
+
+public class PurchaseOrderCmdLine {
+
+ private static final int MENU = 1;
+
+ private static final int PRINT_SUMMARY = 2;
+
+ private static final int PRINT_ALL_PROPERTIES = 3;
+
+ private static final int PRINT_BILLTO = 4;
+
+ private static final int PRINT_SHIPTO = 5;
+
+ private static final int APPEND_COMMENT = 6;
+
+ private static final int MODIFY_SHIP_TO = 7;
+
+ private static final int MODIFY_BILL_TO = 8;
+
+ private static final int ADD_ITEM = 9;
+
+ private static final int REMOVE_ITEM = 10;
+
+ private static final int SAVE = 11;
+
+ private static final int SAVE_AS = 12;
+
+ private static final int SHOW_CHANGE_SUMMARY = 13;
+
+ private static final int SHOW_XML_DOCUMENT = 14;
+
+ private static final int QUIT = 15;
+
+ /**
+ * Drives sample program
+ *
+ * @param args.
+ * args[0] is optional xsdFilename, args[1] is optional xmlFileName
+ */
+ public static void main(String[] args) {
+
+ System.out.println("***************************************");
+ System.out.println("SDO Purchase Order Sample Command Line Interface");
+ System.out.println("***************************************");
+ System.out.println("Provides an interactive menu to play with purchase order DataObjects");
+ System.out.println("***************************************");
+
+ printUsage();
+
+ PurchaseOrderControl poc = null;
+ String xsdFileName = null;
+ String xmlFileName = null;
+
+ // see if we should load an xsd file or if we should use a resource
+ if ((args.length >= 1)) {
+ xsdFileName = args[0];
+ }
+
+ // see if we should load an xml file or if we should use a resource
+ if ((args.length >= 2)) {
+ xmlFileName = args[1];
+ }
+ try {
+ poc = new PurchaseOrderControl(xsdFileName, xmlFileName);
+ } catch (Exception e) {
+ System.out.println("Sorry could not initialize PurchaseOrderControl. Error: " + e.toString());
+ e.printStackTrace();
+ return;
+ }
+ boolean inOperation = true;
+ try {
+
+ BufferedReader in = new BufferedReader(new InputStreamReader(System.in));
+ int command = QUIT;
+
+ printMenu();
+ while (inOperation) {
+ System.out.print(">>> ");
+ try {
+ command = Integer.valueOf(in.readLine()).intValue();
+ } catch (Exception e) {
+ System.out.println("Invalid option, please try again.");
+ command = MENU;
+
+ }
+ switch (command) {
+ case MENU:
+ printMenu();
+
+ break;
+ case PRINT_SUMMARY:
+ poc.printPurchaseOrderSummary();
+ break;
+ case PRINT_ALL_PROPERTIES:
+ try {
+ poc.printPurchaseOrderProperties();
+ } catch (Exception e) {
+ System.out.println("Sorry the following error was received when printing all properties " + e.toString());
+ e.printStackTrace();
+ }
+ break;
+ case PRINT_BILLTO:
+ poc.printBillTo();
+ break;
+ case PRINT_SHIPTO:
+ poc.printShipTo();
+ break;
+ case APPEND_COMMENT:
+ try {
+
+ System.out.println("Append Comment: ");
+ poc.appendComment(in.readLine());
+ } catch (Exception e) {
+ System.out.println("Sorry unexpected exception occured appending comment" + e.toString());
+ e.printStackTrace();
+ }
+
+ break;
+ case MODIFY_SHIP_TO:
+ try {
+
+ System.out.println("Modify Ship To ( press enter to leave unchanged )");
+ poc.printShipTo();
+ System.out.print("Name: ");
+ String name = in.readLine();
+ System.out.println();
+
+ System.out.print("Street: ");
+ String street = in.readLine();
+ System.out.println();
+
+ System.out.print("City: ");
+ String city = in.readLine();
+ System.out.println();
+
+ System.out.print("State: ");
+ String state = in.readLine();
+ System.out.println();
+
+ System.out.print("Zip: ");
+ String zip = in.readLine();
+ if ((zip != null) && (!zip.equals(""))) {
+ selectSetDecimalOption(in, poc);
+ }
+ System.out.println();
+
+ poc.modifyShipTo(name, street, city, state, zip);
+ } catch (Exception e) {
+ System.out.println("Sorry unexpected exception occured modifying ShipTo address :" + e.toString());
+ e.printStackTrace();
+ }
+
+ break;
+ case MODIFY_BILL_TO:
+ try {
+
+ System.out.println("Modify Bill To ( press enter to leave unchanged )");
+ poc.printBillTo();
+ System.out.print("Name: ");
+ String name = in.readLine();
+ System.out.println();
+
+ System.out.print("Street: ");
+ String street = in.readLine();
+ System.out.println();
+
+ System.out.print("City: ");
+ String city = in.readLine();
+ System.out.println();
+
+ System.out.print("State: ");
+ String state = in.readLine();
+ System.out.println();
+
+ System.out.print("Zip: ");
+ String zip = in.readLine();
+ if ((zip != null) && (!zip.equals(""))) {
+ selectSetDecimalOption(in, poc);
+ }
+ System.out.println();
+
+ poc.modifyBillTo(name, street, city, state, zip);
+ } catch (Exception e) {
+ System.out.println("Sorry unexpected exception occured when modifying address :" + e.toString());
+ e.printStackTrace();
+ }
+
+ break;
+
+ case ADD_ITEM:
+
+ try {
+ System.out.println("Add item to Purchase Order");
+ System.out.print("Product Number: ");
+ String productNumber = in.readLine();
+ System.out.println();
+
+ System.out.print("Product Name: ");
+ String productName = in.readLine();
+ System.out.println();
+
+ System.out.print("Quantity: ");
+ int quantity = Integer.valueOf(in.readLine()).intValue();
+ System.out.println();
+
+ System.out.print("Price: ");
+ double price = Double.valueOf(in.readLine()).doubleValue();
+ System.out.println();
+
+ System.out.print("Comment: ");
+ String comment = in.readLine();
+ System.out.println();
+
+ poc.addItem(productNumber, productName, price, quantity, comment);
+ } catch (Exception e) {
+ System.out.println("Sorry unexpected exception occured when adding item :" + e.toString());
+ e.printStackTrace();
+ }
+
+ break;
+ case REMOVE_ITEM:
+ try {
+ System.out.print("Please enter the index of the item you would like to remove :");
+ String index = in.readLine();
+ poc.removeItem(Integer.valueOf(index).intValue());
+
+ } catch (Exception e) {
+ System.out.println("Sorry there was an error when remove item : " + e.toString());
+ e.printStackTrace();
+
+ }
+ break;
+ case SAVE:
+ try {
+ poc.save();
+ } catch (IOException e) {
+ System.out.println("Sorry an error was received : " + e.toString());
+ e.printStackTrace();
+ }
+ break;
+ case SAVE_AS:
+ System.out.print("FileName:");
+ String fileName = in.readLine();
+ try {
+ poc.saveAs(fileName);
+ System.out.println("File saved to " + fileName);
+ } catch (IOException e) {
+ System.out.println("Sorry an error was received : " + e.toString());
+ e.printStackTrace();
+ }
+ break;
+ case SHOW_CHANGE_SUMMARY:
+ try {
+
+ poc.printChangeSummary();
+ } catch (Exception e) {
+ System.out.println("Sorry exception caught when accessing change summary : " + e.toString());
+ e.printStackTrace();
+ }
+
+ break;
+ case SHOW_XML_DOCUMENT:
+ try {
+ System.out.println("XMLDocument representing purchase order: ");
+ System.out.println(poc.getXMLString());
+ } catch (Exception e) {
+ System.out.println("Sorry there was an erorr when printing the XMLDocument :" + e.toString());
+ e.printStackTrace();
+ }
+ break;
+ case QUIT:
+ inOperation = false;
+ break;
+ default:
+ System.out.println("Sorry I did not understand the command");
+ printMenu();
+ }
+ }
+ System.out.println("Goodbye");
+
+ } catch (Exception e) {
+ System.out.println("Unexpected exception occured during execution: " + e.toString());
+ e.printStackTrace();
+ }
+
+ }
+
+ private static void selectSetDecimalOption(BufferedReader in, PurchaseOrderControl poc) {
+ try {
+
+ System.out.println("SDO provides a number of methods to set properties on a DataObject");
+ System.out.println("Please select the method that you would like to use in order to set decimal values");
+ System.out.println("1. dataObject.set(. . . )");
+ System.out.println("2. dataObject.setString(. . . )");
+ System.out.println("3. dataObject.setDouble(. . . )");
+ System.out.print(">>>");
+
+ poc.setDecimalPropertyMethod(Integer.valueOf(in.readLine()).intValue());
+ } catch (Exception e) {
+ System.out.println("invalid option - oh well");
+ }
+
+ }
+
+ private static void printUsage() {
+ System.out.println("***************************************");
+ System.out.println("java org.apache.tuscany.samples.sdo.otherSources.PurchaseOrderCmdLine <xsdFileName> <xmlFileName>");
+ System.out.println("If xsdFileName and xmlFileName are not specified " + SdoSampleConstants.PO_XSD_RESOURCE + " and "
+ + SdoSampleConstants.PO_XML_RESOURCE + " will be used as resources");
+ System.out.println("Specify null if you wish to use the appropiate resource from the jar rather specifying a fileName");
+ System.out.println("***************************************");
+ }
+
+ private static void printMenu() {
+ System.out.println("***************************************");
+ System.out.println("Purchase Order Control Menu");
+ System.out.println(MENU + ". MENU");
+ System.out.println(PRINT_SUMMARY + ". PRINT_SUMMARY");
+ System.out.println(PRINT_ALL_PROPERTIES + ". PRINT_ALL_PROPERTIES");
+ System.out.println(PRINT_BILLTO + ". PRINT_BILLTO");
+ System.out.println(PRINT_SHIPTO + ". PRINT_SHIPTO");
+ System.out.println(APPEND_COMMENT + ". APPEND_COMMENT");
+ System.out.println(MODIFY_SHIP_TO + ". MODIFY_SHIP_TO");
+ System.out.println(MODIFY_BILL_TO + ". MODIFY_BILL_TO");
+ System.out.println(ADD_ITEM + ". ADD_ITEM");
+ System.out.println(REMOVE_ITEM + ". REMOVE_ITEM");
+ System.out.println(SAVE + ". SAVE");
+ System.out.println(SAVE_AS + ". SAVE_AS");
+ System.out.println(SHOW_CHANGE_SUMMARY + ". SHOW_CHANGE_SUMMARY");
+ System.out.println(SHOW_XML_DOCUMENT + ". SHOW_XML_DOCUMENT");
+ System.out.println(QUIT + ". QUIT");
+ System.out.println("***************************************");
+ }
+}
diff --git a/branches/sdo-java-M2/sdo/sample/src/main/java/org/apache/tuscany/samples/sdo/otherSources/PurchaseOrderControl.java b/branches/sdo-java-M2/sdo/sample/src/main/java/org/apache/tuscany/samples/sdo/otherSources/PurchaseOrderControl.java
new file mode 100644
index 0000000000..9a5a3279f6
--- /dev/null
+++ b/branches/sdo-java-M2/sdo/sample/src/main/java/org/apache/tuscany/samples/sdo/otherSources/PurchaseOrderControl.java
@@ -0,0 +1,496 @@
+/**
+ *
+ * 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.samples.sdo.otherSources;
+
+import java.io.*;
+
+import java.util.List;
+import java.math.BigDecimal;
+
+import commonj.sdo.DataObject;
+import commonj.sdo.ChangeSummary;
+import commonj.sdo.helper.XMLDocument;
+import commonj.sdo.helper.XMLHelper;
+import commonj.sdo.helper.XSDHelper;
+import commonj.sdo.helper.CopyHelper;
+
+import org.apache.tuscany.samples.sdo.SdoSampleConstants;
+
+import org.apache.tuscany.samples.sdo.specCodeSnippets.*;
+
+/**
+ * Provides operational API for purchase order sample for SDO. It is used by
+ * {@link PurchaseOrderCmdLine} for an interactive sample. Often relies upon
+ * methods that are located within the {@link org.apache.tuscany.samples.sdo.otherSources} package.
+ *
+ * @author Robbie Minshall
+ * @see org.apache.tuscany.samples.sdo.otherSources.PurchaseOrderCmdLine
+ *
+ */
+public class PurchaseOrderControl {
+
+ // there are a number of ways to set properties
+ // these constants define which mechanism the user
+ // would like to use.
+ public static final int SET_DECIMAL_PROPERTY_VIA_SET = 1;
+
+ public static final int SET_DECIMAL_PROPERTY_VIA_SET_STRING = 2;
+
+ public static final int SET_DECIMAL_PROPERTY_VIA_SET_DOUBLE = 3;
+
+ // local variable to determine which of the above mechanisms to use
+ private int decimalPropertyMethod = SET_DECIMAL_PROPERTY_VIA_SET_STRING;
+
+ // these files can be optionally used to specify where to locate xsd and xml
+ // to define types and populate DataObject
+ // if these are null will use the resources above
+ private String xmlFileName;
+
+ private String xsdFileName;
+
+ // root DataObject
+ private DataObject purchaseOrder;
+
+ /**
+ * Uses resources files included in jar file to define types (using xsd), and
+ * populate DataObjects (xml)
+ *
+ * @throws Exception
+ */
+ public PurchaseOrderControl() throws Exception {
+ this(null, null);
+ }
+
+ /**
+ * Uses files on the file system to define types (using xsd), and populate
+ * DataObjects (xml)
+ *
+ * @param xsdFileName
+ * location of po.xsd
+ * @param xmlFileName
+ * location of xml to populate DataObject (for example po.xml)
+ * @throws Exception
+ */
+ public PurchaseOrderControl(String xsdFileName, String xmlFileName) throws Exception {
+ this.xsdFileName = xsdFileName;
+ this.xmlFileName = xmlFileName;
+
+ // define purchase order types for SDO
+ definePurchaseOrderTypes();
+ // read in existing xml and populate DataObjects
+ readPurchaseOrderXml();
+ }
+
+ /**
+ * Method to take XSD (w3c) to define SDO types. This is static so that it can be
+ * used as a helper method for some simpler examples Uses either fileName used to
+ * construct this class or will use resource ( po.xsd ) included within jar file
+ */
+ private void definePurchaseOrderTypes() throws Exception {
+
+ if ((xsdFileName == null) || (xsdFileName.equals("")) || (xsdFileName.equalsIgnoreCase("null"))) {
+
+ // use simple example to define type from resource
+ CreateDataObjectFromXsdAndXmlFiles.definePurchaseOrderTypeUsingXsdResource();
+
+ } else {
+ System.out.println("Using file to access xsd in order to define types");
+ try {
+ FileInputStream fis = new FileInputStream(xsdFileName);
+ XSDHelper.INSTANCE.define(fis, null);
+ fis.close();
+ System.out.println("Sucessfully used " + xsdFileName + " to define types");
+
+ } catch (Exception e) {
+ System.out.println("Could not access file " + xsdFileName);
+ e.printStackTrace();
+ throw e;
+ }
+
+ }
+ }
+
+ /**
+ * Reads in xml and populates DataGraph.
+ *
+ * Will set the purchaseOrder to the root object Uses either fileName used to
+ * construct this class or will use resource ( po.xml ) included within jar file
+ */
+ public void readPurchaseOrderXml() throws Exception, FileNotFoundException {
+
+ if ((xmlFileName == null) || (xmlFileName.equals("")) || (xmlFileName.equalsIgnoreCase("null"))) {
+
+ purchaseOrder = CreateDataObjectFromXsdAndXmlFiles.createPurchaseOrderDataObjectUsingXmlResource();
+ } else {
+ try {
+
+ System.out.println("Using file to access xml to populate DataObjects");
+ FileInputStream fis = new FileInputStream(xmlFileName);
+ XMLDocument xmlDoc = XMLHelper.INSTANCE.load(fis);
+ purchaseOrder = xmlDoc.getRootObject();
+ System.out.println("Sucessfully used file to populate DataObjects");
+ fis.close();
+ } catch (Exception e) {
+ System.out.println("Could not open and use file " + xmlFileName);
+ e.printStackTrace();
+ throw e;
+ }
+ }
+
+ }
+
+ /**
+ * Appends new comment to comment property of purchase order Accesses comment
+ * property by name
+ *
+ * @param newComment
+ */
+ public void appendComment(String newComment) {
+ String oldComment = (String) purchaseOrder.get("comment");
+ setComment(oldComment + "-" + newComment);
+ }
+
+ /**
+ * Sets comment property on purchase order by accessing property by name
+ *
+ * @param comment
+ */
+ public void setComment(String comment) {
+ // set using path info
+ purchaseOrder.set("comment", comment);
+ }
+
+ /**
+ * Modifies complex address type for billTo. If any parameter is null it will not
+ * be modified
+ *
+ * @param name
+ * @param street
+ * @param city
+ * @param state
+ * @param zip
+ */
+ public void modifyBillTo(String name, String street, String city, String state, String zip) {
+
+ DataObject billTo = purchaseOrder.getDataObject("billTo");
+ modifyAddress(billTo, name, street, city, state, zip);
+ }
+
+ /**
+ * Modifies complex address type for shipTo. If any parameter is null it will not
+ * be modified
+ *
+ * @param name
+ * @param street
+ * @param city
+ * @param state
+ * @param zip
+ */
+ public void modifyShipTo(String name, String street, String city, String state, String zip) {
+
+ DataObject shipTo = purchaseOrder.getDataObject("shipTo");
+ modifyAddress(shipTo, name, street, city, state, zip);
+ }
+
+ /**
+ * Modifies complex address type ( used for either billTo or shipTo ) If any
+ * parameter is null it will not be modified
+ *
+ * @param name
+ * @param street
+ * @param city
+ * @param state
+ * @param zip
+ */
+ private void modifyAddress(DataObject dataObject, String name, String street, String city, String state, String zip) {
+ if ((name != null) && (!name.equals(""))) {
+ dataObject.set("name", name);
+ }
+ if ((street != null) && (!street.equals(""))) {
+ dataObject.set("street", street);
+ }
+ if ((city != null) && (!city.equals(""))) {
+ dataObject.set("city", city);
+ }
+ if ((state != null) && (!state.equals(""))) {
+ dataObject.set("state", state);
+ }
+ if ((zip != null) && (!zip.equals(""))) {
+ // there are a number of ways to set a decimal property
+ // so in order to demonstrate the various output results
+ // the user can determine which manner to do so
+ setDecimalPropertyOnDataObject(dataObject, "zip", zip);
+ }
+ }
+
+ /**
+ * Adds an additional item to the items list of the item property on purchase
+ * order DataObject
+ *
+ * @param partNumber
+ * @param productName
+ * @param price
+ * @param quantity
+ * @param comment
+ */
+ public void addItem(String partNumber, String productName, double price, int quantity, String comment) {
+ // get items dataObject
+ DataObject items = purchaseOrder.getDataObject("items");
+
+ // create a new child data object
+ DataObject newItem = items.createDataObject("item");
+ newItem.setString("partNum", partNumber);
+ newItem.setString("productName", productName);
+ newItem.setInt("quantity", quantity);
+ newItem.setDouble("price", price);
+ newItem.setString("comment", comment);
+
+ }
+
+ /**
+ * Removes a particular item from the items list. Obtains the List associated
+ * with the item property and removes by index
+ *
+ * @param index
+ */
+ public void removeItem(int index) {
+ // TODO: this is not working due to java.lang.ClassCastException:
+ // org.eclipse.emf.ecore.util.EcoreEList$Dynamic incompatible with
+ // commonj.sdo.DataObject
+ // access a DataObject by the index and then remove it
+ DataObject items = purchaseOrder.getDataObject("items");
+ List itemList = items.getList("item");
+ itemList.remove(index);
+ }
+
+ /**
+ * Saves modified purchase order DataObject to original xml used to populate it
+ * If resource packaged within jar is used will create a new file on file system
+ *
+ * @throws IOException
+ */
+ public void save() throws IOException {
+ if (this.xmlFileName != null) {
+ saveAs(xmlFileName);
+ } else {
+ System.out.println("Sorry, can not save to resource within jar, will create file called " + SdoSampleConstants.PO_XML_RESOURCE
+ + " and save");
+ saveAs(SdoSampleConstants.PO_XML_RESOURCE);
+ }
+ }
+
+ /**
+ * Saves modified purchaseOrder DataObject to file
+ *
+ * @param fileName.
+ * Location to save file to save DataObject to
+ * @throws IOException
+ */
+ public void saveAs(String fileName) throws IOException {
+ OutputStream stream = new FileOutputStream(fileName);
+ XMLHelper.INSTANCE.save(purchaseOrder, SdoSampleConstants.PO_NAMESPACE, "purchaseOrder", stream);
+ System.out.println("Saved to " + fileName);
+ }
+
+ // PRINTING METHODS TO SYSTEM.OUT
+
+ /**
+ * Prints purchase order summary to System.out
+ */
+
+ public void printChangeSummary() {
+
+ // TODO: change summary is not currently working
+ ChangeSummary changeSummary = getChangeSummary();
+ boolean logging = changeSummary.isLogging();
+ if (!logging) {
+ System.out.println("Change logging is disabled");
+ } else {
+ System.out.println("Change logging is enabled");
+ }
+ // TODO: complete this method
+
+ }
+
+ /**
+ * Uses simple sample PrintPropertiesOfDataObject
+ */
+ public void printPurchaseOrderProperties() throws Exception {
+ // use previously created method from simple sample
+ PrintPropertiesOfDataObject.printDataObjectProperties(purchaseOrder);
+ }
+
+ /**
+ * Accesses key properties via name and prints to System.out
+ *
+ */
+ public void printPurchaseOrderSummary() {
+ // use previously created method from simple sample
+ // for an example of accessing properties by name see
+ // AccessDataObjectPropertiesByName or
+ // the method below printAddressInfo
+ AccessDataObjectPropertiesByName.printPurchaseOrderSummary(purchaseOrder);
+ }
+
+ /**
+ * Accesses properties of USAddress Type by name and prints to System.out
+ *
+ * @param dataObject.
+ * Either shipTo and billTo property of purchase order
+ */
+ private void printAddressInfo(DataObject dataObject) {
+ System.out.println(" name: " + dataObject.get("name"));
+ System.out.println(" street: " + dataObject.get("street"));
+ System.out.println(" city: " + dataObject.get("city"));
+ System.out.println(" state: " + dataObject.get("state"));
+ System.out.println(" zip: " + dataObject.get("zip"));
+ }
+
+ /**
+ * Prints properties of shipTo
+ *
+ */
+ public void printBillTo() {
+ DataObject billTo = purchaseOrder.getDataObject("billTo");
+ printAddressInfo(billTo);
+ }
+
+ /**
+ * Prints properties of billTo
+ *
+ */
+ public void printShipTo() {
+ DataObject shipTo = purchaseOrder.getDataObject("shipTo");
+ printAddressInfo(shipTo);
+ }
+
+ // GETTERS AND SETTERS
+
+ /**
+ * Sets the mechanism to set decimal property for zip code Decimals can be set in
+ * a number of ways. This scenario controls how this class will set the zip code
+ * when modifying address
+ */
+ public void setDecimalPropertyMethod(int i) {
+ decimalPropertyMethod = i;
+ }
+
+ /**
+ * Gets the mechanism used to zip decimal property for the zip code of an address
+ *
+ * @return
+ */
+ public int getDecimalPropertyMethod() {
+ return decimalPropertyMethod;
+ }
+
+ // METHODS TO GET AND COPY DATAOBJECTS
+ /**
+ * @return purchaseOrder DataObject
+ */
+ public DataObject getPurchaseOrder() {
+ return purchaseOrder;
+ }
+
+ /**
+ *
+ * @return deep copy of the purchase order DataObject
+ */
+ public DataObject getDeepCopyPurchaseOrder() {
+ return CopyHelper.INSTANCE.copy(purchaseOrder);
+
+ }
+
+ /**
+ *
+ * @return shallow copy of the purchase order DataObject
+ */
+ public DataObject getShallowCopyPurchaseOrder() {
+ return CopyHelper.INSTANCE.copyShallow(purchaseOrder);
+ }
+
+ /**
+ * Currently this does not work
+ *
+ * @return Change summary for purchaseOrder
+ *
+ */
+ public ChangeSummary getChangeSummary() {
+ // TODO: why is the data graph null
+ return purchaseOrder.getDataGraph().getChangeSummary();
+ }
+
+ /**
+ *
+ * @return XMLDocument that represents current purchase order DataObject
+ */
+ public XMLDocument getXMLDocuement() {
+ return XMLHelper.INSTANCE.createDocument(purchaseOrder, SdoSampleConstants.PO_NAMESPACE, "purchaseOrder");
+ }
+
+ /**
+ *
+ * @return String xml representation of current purcahse order DataObject
+ */
+ public String getXMLString() {
+ // alternativly could use the following
+ // return XMLHelper.INSTANCE.createDocument(purchaseOrder, PO_NAMESPACE,
+ // "purchaseOrder").toString();
+ return XMLHelper.INSTANCE.save(purchaseOrder, SdoSampleConstants.PO_NAMESPACE, "purchaseOrder");
+ }
+
+ // PRIVATE HELPER METHODS
+
+ /**
+ * Uses a variety of ways to set a decimal property on a DataObject
+ *
+ * @param dataObject
+ * @param propertyName
+ * @param propertyValue
+ */
+ private void setDecimalPropertyOnDataObject(DataObject dataObject, String propertyName, String propertyValue) {
+ // since the type specified in the xsd is of type decimal when we
+ // wish to just use the set method one must construct a BigDecimal or
+ // else a ClassCastException will occur
+ // alternativly one could call dataObject.setString(zip) or
+ // dataObject.setDouble( Double.valueOf(zip))
+ switch (decimalPropertyMethod) {
+
+ case (SET_DECIMAL_PROPERTY_VIA_SET): {
+ dataObject.set(propertyName, new BigDecimal(propertyValue));
+ break;
+ }
+ case (SET_DECIMAL_PROPERTY_VIA_SET_DOUBLE): {
+ dataObject.setDouble(propertyName, Double.valueOf(propertyValue).doubleValue());
+ break;
+ }
+ case (SET_DECIMAL_PROPERTY_VIA_SET_STRING): {
+ dataObject.setString(propertyName, propertyValue);
+ break;
+ }
+ default: {
+ dataObject.setString(propertyName, propertyValue);
+ }
+
+ }// end of switch
+
+ }
+}
diff --git a/branches/sdo-java-M2/sdo/sample/src/main/java/org/apache/tuscany/samples/sdo/otherSources/ReadPurchaseOrder.java b/branches/sdo-java-M2/sdo/sample/src/main/java/org/apache/tuscany/samples/sdo/otherSources/ReadPurchaseOrder.java
new file mode 100644
index 0000000000..1e9b8e7c2d
--- /dev/null
+++ b/branches/sdo-java-M2/sdo/sample/src/main/java/org/apache/tuscany/samples/sdo/otherSources/ReadPurchaseOrder.java
@@ -0,0 +1,143 @@
+/**
+ *
+ * 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.samples.sdo.otherSources;
+
+import java.io.FileInputStream;
+import java.io.InputStream;
+import java.util.List;
+
+import commonj.sdo.DataObject;
+import commonj.sdo.helper.XMLDocument;
+import commonj.sdo.helper.XMLHelper;
+import commonj.sdo.helper.XSDHelper;
+
+import org.apache.tuscany.samples.sdo.SdoSampleConstants;
+
+/**
+ * Reads purchase order DataObject from XML, based upon Fuhwei Lwo's paper <A
+ * HREF="http://www-128.ibm.com/developerworks/webservices/library/ws-sdoxmlschema/"
+ * title="Me" onClick="checkLinks(this)">Create and read an XML document based on XML
+ * Schema</A>. Uses file
+ * {@link org.apache.tuscany.samples.sdo.SdoSampleConstants#PO_XML_GENERATED}
+ * previously generated by {@link CreatePurchaseOrder} to populate purchase order
+ * DataObject
+ *
+ * <b>Usage:</b> <br>
+ * This sample can easily be run from within Eclipse as a Java Application if tuscany or
+ * the sample-sdo project is imported into Eclipse as an existing project.
+ * <br><br>
+ * If executing as a standalone application please do the following:
+ * <br>
+ * <UL>
+ * <LI>Include the following jar files on your classpath :
+ * <UL>
+ * <LI>SDO API and Tuscany Implementation
+ * <UL>
+ * <LI>sdo-api-{version}.jar - SDO API
+ * <LI>tuscany-sdo-impl-{version}.jar - Tuscany SDO implementation
+ * </UL>
+ * </LI>
+ * <LI>EMF dependencies.
+ * <UL>
+ * <LI>emf-common-{version}.jar - some common framework utility and base classes
+ * <LI>emf-ecore-{version}.jar - the EMF core runtime implementation classes (the Ecore metamodel)
+ * <LI>emf-ecore-change-{version}.jar - the EMF change recorder and framework
+ * <LI>emf-ecore-xmi-{version}.jar - EMF's default XML (and XMI) serializer and loader
+ * <LI>xsd-{version}.jar - the XML Schema model
+ * </UL>
+ * </LI>
+ * </UL>
+ *
+ * These jar files can be obtained from directly from Tuscany and EMF projects or from <a
+ * href="http://wiki.apache.org/ws-data/attachments/Tuscany(2f)TuscanyJava(2f)SDO_Java_Overview/attachments/SDO%20Execution%20Dependencies"
+ * target="_bank">SDO Execution Dependancies </a> </LI>
+ * <LI>Execute: <br>
+ * java org.apache.tuscany.samples.sdo.otherSources.ReadPurchaseOrder</LI>
+ * </UL>
+ *
+ * @author Fuhwei Lwo
+ * @author Robbie Minshall
+ */
+public class ReadPurchaseOrder {
+
+ private static void definePOTypes() throws Exception {
+ InputStream is = ClassLoader.getSystemResourceAsStream(SdoSampleConstants.PO_XSD_RESOURCE);
+ if (is == null) {
+ System.out.println("InputStream is null");
+ } else {
+ System.out.println("Obtained Input Stream from resource");
+ }
+ XSDHelper.INSTANCE.define(is, null);
+ is.close();
+ }
+
+ public static void main(String[] args) {
+ System.out.println("***************************************");
+ System.out.println("SDO Sample ReadPurchaseOrder");
+ System.out.println("***************************************");
+ System.out.println("This sample is based upon Fuhwei Lwo's paper http://www-128.ibm.com/developerworks/webservices/library/ws-sdoxmlschema/");
+ System.out.println("previously generated by CreatePurchaseOrder sample to populate purchase order DataObject");
+
+ System.out.println("***************************************");
+
+ try {
+ definePOTypes();
+
+ FileInputStream fis = null;
+ try {
+ fis = new FileInputStream(SdoSampleConstants.PO_XML_GENERATED);
+ } catch (Exception e) {
+ System.out.println("Sorry an error occcured, please run CreatePurchaseOrder sample first");
+ System.out.println("Exception : " + e.toString());
+ e.printStackTrace();
+ return;
+ }
+
+ XMLDocument xmlDoc = XMLHelper.INSTANCE.load(fis);
+
+ DataObject purchaseOrder = xmlDoc.getRootObject();
+
+ System.out.println("Order date: " + purchaseOrder.get("orderDate"));
+ System.out.println("Comment: " + purchaseOrder.get("comment"));
+
+ DataObject shipTo = purchaseOrder.getDataObject("shipTo");
+ System.out.println("Ship to name: " + shipTo.get("name"));
+
+ DataObject billTo = purchaseOrder.getDataObject("billTo");
+ System.out.println("Bill to name: " + billTo.get("name"));
+ System.out.println();
+
+ DataObject items = purchaseOrder.getDataObject("items");
+ List itemList = items.getList("item");
+ for (int i = 0; i < itemList.size(); i++) {
+
+ DataObject item = (DataObject) itemList.get(i);
+
+ System.out.println("Part num: " + item.get("partNum"));
+ System.out.println("Product name: " + item.get("productName"));
+ } // for
+ } catch (Exception e) {
+ System.out.println("Sorry an error was encountered " + e.toString());
+ e.printStackTrace();
+ }
+ System.out.println("GoodBye");
+ }
+}
diff --git a/branches/sdo-java-M2/sdo/sample/src/main/java/org/apache/tuscany/samples/sdo/otherSources/package.html b/branches/sdo-java-M2/sdo/sample/src/main/java/org/apache/tuscany/samples/sdo/otherSources/package.html
new file mode 100644
index 0000000000..357048094b
--- /dev/null
+++ b/branches/sdo-java-M2/sdo/sample/src/main/java/org/apache/tuscany/samples/sdo/otherSources/package.html
@@ -0,0 +1,42 @@
+<html>
+<!--
+ *
+ * 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.
+ * -->
+<head>
+ <title>package information</title>
+</head>
+<body>
+
+Provides examples from sources other than the SDO specification. These examples are from whitepapers,
+ or are custom examples designed to show SDO in a more elegant light than the specification. They
+ also include basic interactive examples, and useful scenarios not outlined in the specification.
+ The user is encouraged to modify and execute these code examples.
+
+<h2>Related Documentation</h2>
+
+<h2>Related Documentation</h2>
+For overviews, tutorials, examples, guides, and tool documentation, please see
+
+<ul>
+ <li><a href="http://incubator.apache.org/tuscany/java_sdo_overview.html"> SDO Java Overview</a> section of the Tuscany website.</li>
+ <li><a href="http://www-128.ibm.com/developerworks/webservices/library/ws-sdoxmlschema/">Create and read an XML document based on XML Schema</a></li>
+</ul>
+
+</body>
+</html> \ No newline at end of file
diff --git a/branches/sdo-java-M2/sdo/sample/src/main/java/org/apache/tuscany/samples/sdo/overview.html b/branches/sdo-java-M2/sdo/sample/src/main/java/org/apache/tuscany/samples/sdo/overview.html
new file mode 100644
index 0000000000..17310acb4d
--- /dev/null
+++ b/branches/sdo-java-M2/sdo/sample/src/main/java/org/apache/tuscany/samples/sdo/overview.html
@@ -0,0 +1,57 @@
+<html>
+<head>
+ <title>SDO Sample Overview</title>
+</head>
+<BODY>
+<h1>Tuscany Service Data Object (SDO) Sample Programs</h1>
+<h2>Overview</h2>
+This sample code is from the <a href="http://incubator.apache.org/tuscany"
+ target="_blank"> Apache Tuscany</a> project. The samples were written to help users
+understand and experiment with SDO. They are grouped into three packages according to the source of the example material. Some are based upon example code contained
+within the <a
+ href="http://osoa.org/download/attachments/791/SDO_Specification_Java_V2.01.pdf?version=1"
+ target="_bank">SDO Specification</a>, and are intended to be read alongside the specification. Others are based upon papers and published material
+ (see the documentation for each sample for the reference to the publication),
+ or were simply written specifically for these samples.
+<H2>Experimentation</H2>
+The SDO samples are written to be used in conjunction with the specification and other documents. However,
+the most important function that these samples provide is a place to begin experimenting with the SDO API
+and programming model. Developers are encouraged to extend and experiment with the current set of samples.
+If a sample is unclear, is missing documentation or a tutorial, or does not cover a desired area ,
+please send feedback to the tuscany mailing lists,
+or better still send us a patch or join the Tuscany team and contribute back to the
+<A href="http://incubator.apache.org/tuscany">project</A>.
+
+
+<h3>Getting Ready to run the Samples</h3>
+The samples depend on the following libraries<UL>
+ <LI>The SDO API and the Tuscany SDO Implementation
+ <UL>
+ <LI>sdo-api-{version}.jar - SDO API</LI>
+ <LI>tuscany-sdo-impl-{version}.jar - Tuscany SDO implementation</LI>
+ </UL>
+ </LI>
+ <LI>EMF dependencies.
+ <UL>
+ <LI>emf-common-{version}.jar - some common framework utility and base
+ classes</LI>
+ <LI>emf-ecore-{version}.jar - the EMF core runtime implementation
+ classes (the Ecore metamodel)</LI>
+ <LI>emf-ecore-change-{version}.jar - the EMF change recorder and
+ framework</LI>
+ <LI>emf-ecore-xmi-{version}.jar - EMF's default XML (and XMI)
+ serializer and loader</LI>
+ <LI>xsd-{version}.jar - the XML Schema model</LI></UL></LI></UL>
+<P>If you are running these samples from a Tuscany samples distribution you can resolve these dependencies by ensuring that all the jar files in the lib directory of the extracted distribution are on your classpath.<BR>
+<BR>
+If you are running these samples as a result of building Tuscany SDO for Java from a Tuscany source distribution using maven then these dependencies will be resolved by having followed the build instructions.<BR>
+<BR>To run these samples against the current Tuscany codebase, follow the instructions at <A
+ href="http://incubator.apache.org/tuscany/java_sdo_overview.html">Tuscany SDO Java Overview</A>, which describes how to build Tuscany SDO for Java in an Eclipse SDK environment.</P>
+<H3>Running the Samples</H3>
+<P>In order to get an overview of the samples the user may wish to run
+{@link org.apache.tuscany.samples.sdo.ExecuteSamples} which will execute
+all the command line examples.<BR>
+<FONT face="Courier">java org.apache.tuscany.samples.sdo.ExecuteSamples</FONT></P><P>Alternatively, browse the JavaDoc for the sample program classes and run an
+individual example of your choice in the same way. Another suggestion is to read the
+SDO specifciaton in conjunction with the examples in {@link
+org.apache.tuscany.samples.sdo.specExampleSection}.</P></BODY></html>
diff --git a/branches/sdo-java-M2/sdo/sample/src/main/java/org/apache/tuscany/samples/sdo/package.html b/branches/sdo-java-M2/sdo/sample/src/main/java/org/apache/tuscany/samples/sdo/package.html
new file mode 100644
index 0000000000..68ff7a8914
--- /dev/null
+++ b/branches/sdo-java-M2/sdo/sample/src/main/java/org/apache/tuscany/samples/sdo/package.html
@@ -0,0 +1,33 @@
+<html>
+<!--
+ *
+ * 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.
+ * -->
+<head>
+ <title>package information</title>
+</head>
+<body>
+Provides common constants and a command line java interface for executing samples.
+<h2>Related Documentation</h2>
+For overviews, tutorials, examples, guides, and tool documentation, please see the
+<a href="http://incubator.apache.org/tuscany/java_sdo_overview.html"> SDO Java Overview
+</a>
+section of the Tuscany website.
+
+</body>
+</html> \ No newline at end of file
diff --git a/branches/sdo-java-M2/sdo/sample/src/main/java/org/apache/tuscany/samples/sdo/specCodeSnippets/AccessDataObjectPropertiesByName.java b/branches/sdo-java-M2/sdo/sample/src/main/java/org/apache/tuscany/samples/sdo/specCodeSnippets/AccessDataObjectPropertiesByName.java
new file mode 100644
index 0000000000..7aa9909657
--- /dev/null
+++ b/branches/sdo-java-M2/sdo/sample/src/main/java/org/apache/tuscany/samples/sdo/specCodeSnippets/AccessDataObjectPropertiesByName.java
@@ -0,0 +1,154 @@
+/**
+ *
+ * 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.samples.sdo.specCodeSnippets;
+
+import java.util.List;
+
+import commonj.sdo.DataObject;
+import commonj.sdo.helper.XMLHelper;
+import commonj.sdo.helper.XSDHelper;
+import org.apache.tuscany.samples.sdo.SdoSampleConstants;
+
+/**
+ * Demonstrates accessing a created DataObject's properties by name.
+ *
+ * This sample is from the <a href="http://incubator.apache.org/tuscany"
+ * target="_blank"> Apache Tuscany</a> project. It was written to help users
+ * understand and experiement with SDO. It is based upon code snippets contained
+ * within, and is meant for use with, and reference to the <a
+ * href="http://www.osoa.org/download/attachments/791/SDO_Specification_Java_V2.01.pdf?version=1"
+ * target="_bank">SDO Specification</a>.
+ *
+ * <br>
+ * <br>
+ * <b>Usage:</b> <br>
+ * This sample can easily be run from within Eclipse as a Java Application if tuscany or
+ * the sample-sdo project is imported into Eclipse as an existing project.
+ * <br><br>
+ * If executing as a standalone application please do the following:
+ * <br>
+ * <UL>
+ * <LI>Include the following jar files on your classpath :
+ * <UL>
+ * <LI>SDO API and Tuscany Implementation
+ * <UL>
+ * <LI>sdo-api-{version}.jar - SDO API
+ * <LI>tuscany-sdo-impl-{version}.jar - Tuscany SDO implementation
+ * </UL>
+ * </LI>
+ * <LI>EMF dependencies.
+ * <UL>
+ * <LI>emf-common-{version}.jar - some common framework utility and base classes
+ * <LI>emf-ecore-{version}.jar - the EMF core runtime implementation classes (the Ecore metamodel)
+ * <LI>emf-ecore-change-{version}.jar - the EMF change recorder and framework
+ * <LI>emf-ecore-xmi-{version}.jar - EMF's default XML (and XMI) serializer and loader
+ * <LI>xsd-{version}.jar - the XML Schema model
+ * </UL>
+ * </LI>
+ * </UL>
+ *
+ * These jar files can be obtained from directly from Tuscany and EMF projects or from <a
+ * href="http://wiki.apache.org/ws-data/attachments/Tuscany(2f)TuscanyJava(2f)SDO_Java_Overview/attachments/SDO%20Execution%20Dependencies"
+ * target="_bank">SDO Execution Dependancies </a> </LI>
+ * <LI>Execute: <br>
+ * java org.apache.tuscany.samples.sdo.specCodeSnippets.AccessDataObjectPropertiesByName</LI>
+ * </UL>
+ *
+ * @author Robbie Minshall
+ */
+public class AccessDataObjectPropertiesByName {
+
+ /**
+ * Prints a subset of PurchaseOrder properties to System.out
+ *
+ * @param purchaseOrder.
+ * DataObject defined by Types in
+ * {@link org.apache.tuscany.samples.sdo.SdoSampleConstants#PO_XSD_RESOURCE}
+ */
+ public static void printPurchaseOrderSummary(DataObject purchaseOrder) {
+
+ // example accessing properties via property names
+ System.out.println("Purchase Order: ");
+ System.out.println(" Order date: " + purchaseOrder.get("orderDate"));
+ System.out.println(" Comment: " + purchaseOrder.get("comment"));
+
+ DataObject shipTo = purchaseOrder.getDataObject("shipTo");
+ System.out.println(" Ship to name: " + shipTo.get("name"));
+
+ DataObject billTo = purchaseOrder.getDataObject("billTo");
+ System.out.println(" Bill to name: " + billTo.get("name"));
+
+ DataObject items = purchaseOrder.getDataObject("items");
+ List itemList = items.getList("item");
+
+ System.out.println(" Items:");
+ for (int i = 0; i < itemList.size(); i++) {
+ DataObject item = (DataObject) itemList.get(i);
+ System.out.println(" Item " + i);
+ System.out.println(" Part num: " + item.get("partNum"));
+ System.out.println(" Product name: " + item.get("productName"));
+ }
+ }
+
+ /**
+ * Prints properties of a purchase order DataObject( properties are defined in
+ * the xsd
+ * {@link org.apache.tuscany.samples.sdo.SdoSampleConstants#PO_XSD_RESOURCE} and
+ * populated by xml
+ * {@link org.apache.tuscany.samples.sdo.SdoSampleConstants#PO_XML_RESOURCE} )
+ *
+ * @param args.
+ * No parameters required.
+ */
+ public static void main(String[] args) {
+
+ // information
+ System.out.println("***************************************");
+ System.out.println("SDO Sample AccessDataObjectPropertiesByName");
+ System.out.println("***************************************");
+ System.out.println("This sample will access a DataObject properties by name");
+ System.out.println("***************************************");
+
+ // create a DataObejct
+ DataObject purchaseOrder = null;
+ try {
+ XSDHelper.INSTANCE.define(ClassLoader.getSystemResourceAsStream(SdoSampleConstants.PO_XSD_RESOURCE), null);
+ purchaseOrder = XMLHelper.INSTANCE.load(ClassLoader.getSystemResourceAsStream(SdoSampleConstants.PO_XML_RESOURCE)).getRootObject();
+ System.out.println("DataObject created");
+ } catch (Exception e) {
+ System.out.println("Error creating DataObject " + e.toString());
+ e.printStackTrace();
+ return;
+ }
+
+ // start of sample
+ try {
+ System.out.println("Accessing properties by name");
+ printPurchaseOrderSummary(purchaseOrder);
+ } catch (Exception e) {
+ System.out.println("Sorry there was an error accessing properties by name " + e.toString());
+ e.printStackTrace();
+ }
+ System.out.println("GoodBye");
+ // end of sample
+ }
+
+}
diff --git a/branches/sdo-java-M2/sdo/sample/src/main/java/org/apache/tuscany/samples/sdo/specCodeSnippets/AccessDataObjectUsingValidXPath.java b/branches/sdo-java-M2/sdo/sample/src/main/java/org/apache/tuscany/samples/sdo/specCodeSnippets/AccessDataObjectUsingValidXPath.java
new file mode 100644
index 0000000000..3906ed3c32
--- /dev/null
+++ b/branches/sdo-java-M2/sdo/sample/src/main/java/org/apache/tuscany/samples/sdo/specCodeSnippets/AccessDataObjectUsingValidXPath.java
@@ -0,0 +1,146 @@
+/**
+ *
+ * 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.samples.sdo.specCodeSnippets;
+
+import org.apache.tuscany.samples.sdo.SdoSampleConstants;
+
+import commonj.sdo.DataObject;
+import commonj.sdo.helper.XMLHelper;
+import commonj.sdo.helper.XSDHelper;
+
+/**
+ * Demonstrates accessing a created DataObject's properties using xPath.
+ *
+ * This sample is from the <a href="http://incubator.apache.org/tuscany"
+ * target="_blank"> Apache Tuscany</a> project. It was written to help users
+ * understand and experiement with SDO. It is based upon code snipets contained
+ * within, and is meant for use with, and reference to the <a
+ * href="http://download.boulder.ibm.com/ibmdl/pub/software/dw/specs/ws-sdo/SDO_Specification_Java_V2.01.pdf"
+ * target="_bank">SDO Specification</a>. <br>
+ * <br>
+ * It is worth noting that the Examples section of the specification, and the
+ * {@link org.apache.tuscany.samples.sdo.specExampleSection.AccessingDataObjectsUsingXPath}
+ * use unpure xpath expression. This sample attempts to demonstrate a more appropiate
+ * subset of xPath operations.<br>
+ * <br>
+ * <br>
+ * <br>
+ * <b>Usage:</b> <br>
+ * This sample can easily be run from within Eclipse as a Java Application if tuscany or
+ * the sample-sdo project is imported into Eclipse as an existing project.
+ * <br><br>
+ * If executing as a standalone application please do the following:
+ * <br>
+ * <UL>
+ * <LI>Include the following jar files on your classpath :
+ * <UL>
+ * <LI>SDO API and Tuscany Implementation
+ * <UL>
+ * <LI>sdo-api-{version}.jar - SDO API
+ * <LI>tuscany-sdo-impl-{version}.jar - Tuscany SDO implementation
+ * </UL>
+ * </LI>
+ * <LI>EMF dependencies.
+ * <UL>
+ * <LI>emf-common-{version}.jar - some common framework utility and base classes
+ * <LI>emf-ecore-{version}.jar - the EMF core runtime implementation classes (the Ecore metamodel)
+ * <LI>emf-ecore-change-{version}.jar - the EMF change recorder and framework
+ * <LI>emf-ecore-xmi-{version}.jar - EMF's default XML (and XMI) serializer and loader
+ * <LI>xsd-{version}.jar - the XML Schema model
+ * </UL>
+ * </LI>
+ * </UL>
+ *
+ * These jar files can be obtained from directly from Tuscany and EMF projects or from <a
+ * href="http://wiki.apache.org/ws-data/attachments/Tuscany(2f)TuscanyJava(2f)SDO_Java_Overview/attachments/SDO%20Execution%20Dependencies"
+ * target="_bank">SDO Execution Dependencies </a> </LI>
+ * Execute: java
+ * org.apache.tuscany.samples.sdo.specCodeSnippets.AccessDataObjectUsingValidXPath
+ *
+ * @author Robbie Minshall
+ */
+public class AccessDataObjectUsingValidXPath {
+
+ /**
+ * Prints a subset of item properties to System.out where the individual item was
+ * accessed using an xPath expression
+ *
+ * @param purchaseOrder.
+ * DataObject defined by Types in
+ * {@link org.apache.tuscany.samples.sdo.SdoSampleConstants#PO_XSD_RESOURCE}
+ */
+ public static void accessDataObjectUsingXPath(DataObject purchaseOrder) {
+
+ System.out.println("Accessing individual item from list using xpath");
+ // TODO: use variety of xpath expressions such as items/item[1]
+ // TODO: add to junit test cases for test cases above
+ DataObject item = purchaseOrder.getDataObject("items/item[1]");
+ System.out.println("Item toString : " + item.toString());
+
+ System.out.println("Item name:" + item.get("productName"));
+ System.out.println("Part num: " + item.get("partNum"));
+
+ }
+
+ /**
+ * Accesses and modifies properties of a purchase order DataObject using xPath(
+ * properties are defined in the xsd
+ * {@link org.apache.tuscany.samples.sdo.SdoSampleConstants#PO_XSD_RESOURCE} and
+ * populated by xml
+ * {@link org.apache.tuscany.samples.sdo.SdoSampleConstants#PO_XML_RESOURCE} )
+ *
+ * @param args.
+ * No parameters required.
+ */
+ public static void main(String[] args) {
+
+ // information
+ System.out.println("***************************************");
+ System.out.println("SDO Sample AccessDataObjectUsingValidXPath");
+ System.out.println("***************************************");
+ System.out.println("Demonstrats accessing a created DataObject's properties using xPath.");
+ System.out.println("***************************************");
+
+ // create a DataObejct
+ DataObject purchaseOrder = null;
+ try {
+ XSDHelper.INSTANCE.define(ClassLoader.getSystemResourceAsStream(SdoSampleConstants.PO_XSD_RESOURCE), null);
+ purchaseOrder = XMLHelper.INSTANCE.load(ClassLoader.getSystemResourceAsStream(SdoSampleConstants.PO_XML_RESOURCE)).getRootObject();
+ System.out.println("DataObject created");
+ } catch (Exception e) {
+ System.out.println("Error creating DataObject " + e.toString());
+ e.printStackTrace();
+ return;
+ }
+
+ // start of sample
+ try {
+
+ accessDataObjectUsingXPath(purchaseOrder);
+ } catch (Exception e) {
+ System.out.println("Sorry there was an error accessing properties by name " + e.toString());
+ e.printStackTrace();
+ }
+ System.out.println("GoodBye");
+ // end of sample
+ }
+
+}
diff --git a/branches/sdo-java-M2/sdo/sample/src/main/java/org/apache/tuscany/samples/sdo/specCodeSnippets/CreateDataObjectFromXmlString.java b/branches/sdo-java-M2/sdo/sample/src/main/java/org/apache/tuscany/samples/sdo/specCodeSnippets/CreateDataObjectFromXmlString.java
new file mode 100644
index 0000000000..b58c7070e9
--- /dev/null
+++ b/branches/sdo-java-M2/sdo/sample/src/main/java/org/apache/tuscany/samples/sdo/specCodeSnippets/CreateDataObjectFromXmlString.java
@@ -0,0 +1,163 @@
+/**
+ *
+ * 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.samples.sdo.specCodeSnippets;
+
+import java.util.List;
+
+import commonj.sdo.DataObject;
+import commonj.sdo.helper.XMLHelper;
+
+/**
+ * Demonstrates creating a DataObject from a String of XML.
+ *
+ * The following sample is from the <a href="http://incubator.apache.org/tuscany"
+ * target="_blank"> Apache Tuscany</a> project. It was written to help users
+ * understand and experiement with SDO. It is based upon code snippets contained
+ * within, and is meant for use with, and reference to the <a
+ * href="http://www.osoa.org/download/attachments/791/SDO_Specification_Java_V2.01.pdf?version=1"
+ * target="_bank">SDO Specification</a>. Specifically this sample is based upon section titled "Creating DataObjects from XML documents" <br>
+ * <br>
+ * <b>Usage:</b> <br>
+ * This sample can easily be run from within Eclipse as a Java Application if tuscany or
+ * the sample-sdo project is imported into Eclipse as an existing project.
+ * <br><br>
+ * If executing as a standalone application please do the following:
+ * <br>
+ * <UL>
+ * <LI>Include the following jar files on your classpath :
+ * <UL>
+ * <LI>SDO API and Tuscany Implementation
+ * <UL>
+ * <LI>sdo-api-{version}.jar - SDO API
+ * <LI>tuscany-sdo-impl-{version}.jar - Tuscany SDO implementation
+ * </UL>
+ * </LI>
+ * <LI>EMF dependencies.
+ * <UL>
+ * <LI>emf-common-{version}.jar - some common framework utility and base classes
+ * <LI>emf-ecore-{version}.jar - the EMF core runtime implementation classes (the Ecore metamodel)
+ * <LI>emf-ecore-change-{version}.jar - the EMF change recorder and framework
+ * <LI>emf-ecore-xmi-{version}.jar - EMF's default XML (and XMI) serializer and loader
+ * <LI>xsd-{version}.jar - the XML Schema model
+ * </UL>
+ * </LI>
+ * </UL>
+ *
+ * These jar files can be obtained from directly from Tuscany and EMF projects or from <a
+ * href="http://wiki.apache.org/ws-data/attachments/Tuscany(2f)TuscanyJava(2f)SDO_Java_Overview/attachments/SDO%20Execution%20Dependencies"
+ * target="_bank">SDO Execution Dependancies </a> </LI>
+ * <LI>Execute: <br>
+ * java org.apache.tuscany.samples.sdo.specCodeSnippets.CreateDataObjectFromXmlString</LI>
+ * </UL>
+ *
+ * @author Robbie Minshall
+ */
+public class CreateDataObjectFromXmlString {
+
+ /**
+ * String representing a PurchaseOrder in XML format
+ */
+ public static final String XML_STRING = "<purchaseOrder orderDate='1999-10-20'>" + " <shipTo country='US'>" + " <name>Alice Smith</name>"
+ + " <street>123 Maple Street</street>" + " <city>Mill Valley</city>" + " <state>PA</state>" + " <zip>90952</zip>" + "</shipTo>"
+ + "</purchaseOrder>";
+
+ /**
+ * Creates a DataObject from an Xml String
+ *
+ * @return
+ */
+ public static DataObject createDataObjectFromXmlString() {
+
+ // TODO: do this with and without defining the schema
+ DataObject po = XMLHelper.INSTANCE.load(XML_STRING).getRootObject();
+ System.out.println("DataObject has been created : " + po.toString());
+ return po;
+ }
+
+ /**
+ * @param args
+ * None required
+ */
+ public static void main(String[] args) {
+
+ // information
+ System.out.println("***************************************");
+ System.out.println("SDO Sample CreateDataObjectFromXmlString");
+ System.out.println("***************************************");
+ System.out.println("Demonstrats creating a DataObject from a String of XML, based upon section titled 'Creating DataObjects from XML documents'");
+ System.out.println("***************************************");
+
+ // sample
+ try {
+
+ System.out.println("Use the following XML String: " + XML_STRING);
+ System.out.println("Creating DataObject");
+ DataObject po = createDataObjectFromXmlString();
+ System.out.println("The following DataObject sucessfully created from XML String");
+
+ System.out.println(XMLHelper.INSTANCE.save(po, "http://example.com/purchaseOrder", "purchaseOrder"));
+
+ /*
+ * Without a Type definition accessing a DataObject is slightly more
+ * difficult. This is because without a Type definition SDO does not know
+ * the intended multiplicity of properties. Currently the Tuscany
+ * implementation assumes that elements and attributes are lists. There
+ * is some discussion (SDO-3, also mentioned in SDO-22) about adding
+ * annotations to the XML (sdo:many="false") to control the indended
+ * multiplicity of DataObjects created without a model.
+ *
+ * The following code will not work when a model/schema is not defined
+ * shipTo = purchaseOrder.getDataObject("shipTo"); assertEquals("testing
+ * ship to name", shipTo.getString("name"), "Alice Smith");
+ * assertEquals("testing ship to zip", shipTo.getString("zip"), "90952");
+ */
+
+ System.out.println("Programatically access content of DataObject - getting name of the person this is getting shipped to");
+ // access the shipTo DataObject
+ List shipToList = po.getList("shipTo");
+ DataObject shipTo = (DataObject) shipToList.get(0);
+ // access the name DataObject
+
+ /*
+ * This is currently quite cumbersome. In future specifications accessing
+ * the name element will be simplier and the user could simply execute:
+ * List nameList = shipTo.getList("name"); String actualName = (String)
+ * nameList.get(0);
+ *
+ * Or if name is an attribute ("<shipTo country='US' name='Alice
+ * Smith'>") simply: String actualName = shipTo.getString("name");
+ *
+ * There are currently more elegant means to perform this task using the xPath support
+ */
+ List nameList = shipTo.getList("name");
+ DataObject name = (DataObject) nameList.get(0);
+ // access the contents of the name DataObject
+ List textList = name.getList("text");
+ String actualName = (String) textList.get(0);
+ System.out.println("Name being shipped to: " + actualName);
+
+ } catch (Exception e) {
+ System.out.println("Sorry, exception caught when creating DataObject : " + e.toString());
+ e.printStackTrace();
+ }
+ // end of sample
+ System.out.println("GoodBye");
+ }
+}
diff --git a/branches/sdo-java-M2/sdo/sample/src/main/java/org/apache/tuscany/samples/sdo/specCodeSnippets/CreateDataObjectFromXsdAndXmlFiles.java b/branches/sdo-java-M2/sdo/sample/src/main/java/org/apache/tuscany/samples/sdo/specCodeSnippets/CreateDataObjectFromXsdAndXmlFiles.java
new file mode 100644
index 0000000000..6f1d8c60db
--- /dev/null
+++ b/branches/sdo-java-M2/sdo/sample/src/main/java/org/apache/tuscany/samples/sdo/specCodeSnippets/CreateDataObjectFromXsdAndXmlFiles.java
@@ -0,0 +1,196 @@
+/**
+ *
+ * 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.samples.sdo.specCodeSnippets;
+
+import java.io.InputStream;
+
+import org.apache.tuscany.samples.sdo.SdoSampleConstants;
+import commonj.sdo.DataObject;
+import commonj.sdo.helper.XMLDocument;
+import commonj.sdo.helper.XMLHelper;
+import commonj.sdo.helper.XSDHelper;
+
+
+/**
+ * Demonstrates defining Types by using a predefined xsd resource, and populating a DataObject by using a previously created xml file.
+ *
+ * The following sample is from the <a href="http://incubator.apache.org/tuscany"
+ * target="_blank"> Apache Tuscany</a> project. It was written to help users
+ * understand and experiement with SDO. It is based upon code snippets contained
+ * within, and is meant for use with, and reference to the <a
+ * href="http://www.osoa.org/download/attachments/791/SDO_Specification_Java_V2.01.pdf?version=1"
+ * target="_bank">SDO Specification</a>. <br>
+ * <br>
+ * <br>Uses {@link org.apache.tuscany.samples.sdo.SdoSampleConstants#PO_XSD_RESOURCE} and {@link org.apache.tuscany.samples.sdo.SdoSampleConstants#PO_XML_RESOURCE} in order to define purcahseOrder DataObjects
+ * <br><br>
+ * <b>Usage:</b> <br>
+ * This sample can easily be run from within Eclipse as a Java Application if tuscany or
+ * the sample-sdo project is imported into Eclipse as an existing project.
+ * <br><br>
+ * If executing as a standalone application please do the following:
+ * <br>
+ * <UL>
+ * <LI>Include the following jar files on your classpath :
+ * <UL>
+ * <LI>SDO API and Tuscany Implementation
+ * <UL>
+ * <LI>sdo-api-{version}.jar - SDO API
+ * <LI>tuscany-sdo-impl-{version}.jar - Tuscany SDO implementation
+ * </UL>
+ * </LI>
+ * <LI>EMF dependencies.
+ * <UL>
+ * <LI>emf-common-{version}.jar - some common framework utility and base classes
+ * <LI>emf-ecore-{version}.jar - the EMF core runtime implementation classes (the Ecore metamodel)
+ * <LI>emf-ecore-change-{version}.jar - the EMF change recorder and framework
+ * <LI>emf-ecore-xmi-{version}.jar - EMF's default XML (and XMI) serializer and loader
+ * <LI>xsd-{version}.jar - the XML Schema model
+ * </UL>
+ * </LI>
+ * </UL>
+ *
+ * These jar files can be obtained from directly from Tuscany and EMF projects or from <a
+ * href="http://wiki.apache.org/ws-data/attachments/Tuscany(2f)TuscanyJava(2f)SDO_Java_Overview/attachments/SDO%20Execution%20Dependencies"
+ * target="_bank">SDO Execution Dependancies </a> </LI>
+ * <LI>Execute: <br>
+ * java org.apache.tuscany.samples.sdo.specCodeSnippets.CreateDataObjectFromXsdAndXmlFiles</LI>
+ * </UL>
+ *
+ * @author Robbie Minshall
+ */
+public class CreateDataObjectFromXsdAndXmlFiles {
+
+ public static boolean typesDefined = false;
+
+
+ /**
+ * Loads the {@link org.apache.tuscany.samples.sdo.SdoSampleConstants#PO_XSD_RESOURCE} resource in order to define PurchaseOrder
+ * Types
+ */
+ public static void definePurchaseOrderTypeUsingXsdResource()
+ throws Exception {
+
+ InputStream is = null;
+ try {
+ System.out.println("Attempting to define types using resource "
+ + SdoSampleConstants.PO_XSD_RESOURCE);
+ is = ClassLoader.getSystemResourceAsStream(SdoSampleConstants.PO_XSD_RESOURCE);
+ if (is == null) {
+ System.out.println("InputStream is null, you may need to add the resources directory is on the classpath");
+ throw new Exception("InputStream for " + SdoSampleConstants.PO_XSD_RESOURCE + " was null, ensure that it is located on the classpath");
+ } else {
+ System.out.println("Obtained Input Stream from resoruce");
+ }
+ XSDHelper.INSTANCE.define(is, null);
+
+ } catch (Exception e) {
+ System.out
+ .println("Exception caught defining Types from resoruce stream to "
+ + SdoSampleConstants.PO_XSD_RESOURCE);
+ throw e;
+ } finally {
+ // try to close the input stream
+ if (is != null) {
+ try {
+ is.close();
+ System.out.println("Closed input stream");
+ } catch (Exception e) {
+ System.out.println("could not close input stream " + e.toString());
+ }
+ }
+ }
+ }
+
+ /**
+ * Uses resource {@link org.apache.tuscany.samples.sdo.SdoSampleConstants#PO_XML_RESOURCE} to populate DataObject
+ * @return populated purchase order DataObject
+ */
+ public static DataObject createPurchaseOrderDataObjectUsingXmlResource()
+ throws Exception {
+
+ if (! typesDefined){
+ definePurchaseOrderTypeUsingXsdResource();
+ }
+ DataObject purchaseOrder = null;
+ InputStream is = null;
+
+ try {
+
+ System.out
+ .println("Using resource as stream to access xml to populate DataObjects");
+ // FileInputStream fis = new FileInputStream(xmlFileName);
+ is = ClassLoader.getSystemResourceAsStream(SdoSampleConstants.PO_XML_RESOURCE);
+ if (is == null) {
+ System.out.println("InputStream is null");
+ } else {
+ System.out
+ .println("Successfully obtained InputStream from resource");
+ }
+ XMLDocument xmlDoc = XMLHelper.INSTANCE.load(is);
+ purchaseOrder = xmlDoc.getRootObject();
+
+ } catch (Exception e) {
+ System.out.println("Could not use resourceAsStream "
+ + e.toString());
+ e.printStackTrace();
+ throw e;
+ }finally {
+ // try to close the input stream
+ if (is != null) {
+ try {
+ is.close();
+ System.out.println("Closed input stream");
+ } catch (Exception e) {
+ System.out.println("Could not close input stream " + e.toString());
+ }
+ }
+ }
+
+ return purchaseOrder;
+ }
+
+ /**
+ * @param args. No arguments required
+ */
+ public static void main(String[] args) {
+ // information
+ System.out.println("***************************************");
+ System.out.println("SDO Sample CreateDataObjectFromXsdAndXmlFiles");
+ System.out.println("***************************************");
+ System.out.println("Demonstrates defining Types by using a predefined xsd resource, and populating a DataObject by using a previously created xml file");
+ System.out.println("***************************************");
+
+
+ try {
+ // define the types
+ definePurchaseOrderTypeUsingXsdResource();
+
+ // create a dataObject
+ DataObject purchaseOrder = createPurchaseOrderDataObjectUsingXmlResource();
+ System.out.println("DataObject sucessfully created");
+
+ } catch (Exception e) {
+ System.out.println("Sorry there was an error encountered " + e.toString());
+ }
+ System.out.println("GoodBye");
+ }
+
+}
diff --git a/branches/sdo-java-M2/sdo/sample/src/main/java/org/apache/tuscany/samples/sdo/specCodeSnippets/DynamicCustomerTypeSample.java b/branches/sdo-java-M2/sdo/sample/src/main/java/org/apache/tuscany/samples/sdo/specCodeSnippets/DynamicCustomerTypeSample.java
new file mode 100644
index 0000000000..7df6e9fc93
--- /dev/null
+++ b/branches/sdo-java-M2/sdo/sample/src/main/java/org/apache/tuscany/samples/sdo/specCodeSnippets/DynamicCustomerTypeSample.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.samples.sdo.specCodeSnippets;
+
+import commonj.sdo.DataObject;
+import commonj.sdo.Type;
+import commonj.sdo.helper.DataFactory;
+import commonj.sdo.helper.XMLHelper;
+import commonj.sdo.helper.TypeHelper;
+import java.util.List;
+
+/**
+ * Demonstrates creating and using Types dynamically. This sample is from the <a
+ * href="http://incubator.apache.org/tuscany" target="_blank"> Apache Tuscany</a>
+ * project. It was written to help users understand and experiement with SDO. It is
+ * based upon code snippets contained within, and is meant for use with, and reference
+ * to the <a
+ * href="http://www.osoa.org/download/attachments/791/SDO_Specification_Java_V2.01.pdf?version=1"
+ * target="_bank">SDO Specification</a>. Specifically, this sample is based upon the
+ * section titled "Defining SDO Types Dynamically" <br>
+ * <br> * <b>Usage:</b> <br>
+ * This sample can easily be run from within Eclipse as a Java Application if tuscany or
+ * the sample-sdo project is imported into Eclipse as an existing project.
+ * <br><br>
+ * If executing as a standalone application please do the following:
+ * <br>
+ * <UL>
+ * <LI>Include the following jar files on your classpath :
+ * <UL>
+ * <LI>SDO API and Tuscany Implementation
+ * <UL>
+ * <LI>sdo-api-{version}.jar - SDO API
+ * <LI>tuscany-sdo-impl-{version}.jar - Tuscany SDO implementation
+ * </UL>
+ * </LI>
+ * <LI>EMF dependencies.
+ * <UL>
+ * <LI>emf-common-{version}.jar - some common framework utility and base classes
+ * <LI>emf-ecore-{version}.jar - the EMF core runtime implementation classes (the Ecore metamodel)
+ * <LI>emf-ecore-change-{version}.jar - the EMF change recorder and framework
+ * <LI>emf-ecore-xmi-{version}.jar - EMF's default XML (and XMI) serializer and loader
+ * <LI>xsd-{version}.jar - the XML Schema model
+ * </UL>
+ * </LI>
+ * </UL>
+ *
+ * These jar files can be obtained from directly from Tuscany and EMF projects or from <a
+ * href="http://wiki.apache.org/ws-data/attachments/Tuscany(2f)TuscanyJava(2f)SDO_Java_Overview/attachments/SDO%20Execution%20Dependencies"
+ * target="_bank">SDO Execution Dependancies </a> </LI>
+ * <LI>Execute: <br>
+ * java org.apache.tuscany.samples.sdo.specCodeSnippets.DynamicCustomerTypeSample</LI>
+ * </UL>
+ *
+ * @author Robbie Minshall
+ */
+public class DynamicCustomerTypeSample {
+
+ /**
+ * XSD file used to define the model and Types for Customer Dataobject
+ */
+ public static final String CUSTOMER_MODEL = "customer.xsd";
+
+ /**
+ * Default file name to use when generated customer XSD files.
+ *
+ * @see org.apache.tuscany.samples.sdo.specCodeSnippets.CreateXmlAndXsdFromDataObject
+ */
+ public static final String CUSTOMER_MODEL_GENERATED = "generatedCustomer.xsd";
+
+ /**
+ * Fake namespace used for Customer
+ */
+ public static final String CUSTOMER_NAMESPACE = "http://www.example.com/customer";
+
+ /**
+ * XML file used to populate Customer DataObjects
+ */
+ public static final String CUSTOMER_XML = "customer.xml";
+
+ /**
+ * Default file name to use when generated customer XML files.
+ *
+ * @see org.apache.tuscany.samples.sdo.specCodeSnippets.CreateXmlAndXsdFromDataObject
+ */
+ public static final String CUSTOMER_XML_GENERATED = "generatedCustomer.xml";
+
+ /**
+ * Method dynamically defines customer types
+ */
+ public static void defineCustomerTypes() {
+ // get an instance of the type helper
+ TypeHelper types = TypeHelper.INSTANCE;
+ Type intType = types.getType("commonj.sdo", "Int");
+ Type stringType = types.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
+ types.define(customerType);
+
+ Type testType = TypeHelper.INSTANCE.getType("http://example.com/customer", "Customer");
+ List props = testType.getProperties();
+ for (int i = 0; i < props.size(); i++) {
+ System.out.println(props.get(i));
+ }
+ }
+
+ /**
+ * Creates a new Customer using dynamically defined Customer Type
+ *
+ * @param custNum
+ * @param firstName
+ * @param lastName
+ * @return
+ */
+ private static DataObject createCustomer(int custNum, String firstName, String lastName) {
+ DataFactory factory = DataFactory.INSTANCE;
+ DataObject customer1 = factory.create("http://example.com/customer", "Customer");
+ customer1.setInt("custNum", custNum);
+ customer1.set("firstName", firstName);
+ customer1.set("lastName", lastName);
+ return customer1;
+ }
+
+ /**
+ * Drives sample methods
+ *
+ * @param args
+ * no arguments required
+ */
+ public static void main(String args[]) {
+ System.out.println("***************************************");
+ System.out.println("SDO Sample DynamicCustomerTypeSample");
+ System.out.println("***************************************");
+ System.out.println("Demonstrats creating and using Types dynamically");
+ System.out.println("***************************************");
+ try {
+ System.out.println("Dynamically defining Customer Type");
+ defineCustomerTypes();
+
+ System.out.println("Creating new customer DataObject");
+ DataObject customer1 = createCustomer(1, "John", "Adams");
+ System.out.println("Customer Created");
+
+ System.out.println("converting to xml");
+ String xmlDocString = XMLHelper.INSTANCE.save(customer1, CUSTOMER_NAMESPACE, "customer");
+ System.out.println(xmlDocString);
+
+ } catch (Exception e) {
+ System.out.println("Sorry unexpected exception caught during sample execution : " + e.toString());
+ e.printStackTrace();
+ }
+ System.out.println("GoodBye");
+ }
+
+}
diff --git a/branches/sdo-java-M2/sdo/sample/src/main/java/org/apache/tuscany/samples/sdo/specCodeSnippets/ObtainingDataGraphFromXml.java b/branches/sdo-java-M2/sdo/sample/src/main/java/org/apache/tuscany/samples/sdo/specCodeSnippets/ObtainingDataGraphFromXml.java
new file mode 100644
index 0000000000..69c2098798
--- /dev/null
+++ b/branches/sdo-java-M2/sdo/sample/src/main/java/org/apache/tuscany/samples/sdo/specCodeSnippets/ObtainingDataGraphFromXml.java
@@ -0,0 +1,189 @@
+/**
+ *
+ * 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.samples.sdo.specCodeSnippets;
+
+import java.io.InputStream;
+
+import org.apache.tuscany.samples.sdo.SdoSampleConstants;
+
+import org.apache.tuscany.sdo.util.SDOUtil;
+import commonj.sdo.helper.XMLHelper;
+import commonj.sdo.helper.XSDHelper;
+import commonj.sdo.DataObject;
+import commonj.sdo.DataGraph;
+import commonj.sdo.Sequence;
+
+/**
+ * Demonstrates a vareity of methods available to obtain the root DataObject
+ * contained within an xml representation of a DataGraph. This is currently a grey
+ * area of the specification and this samples demonstrates spec complant means, as
+ * well as utility methods that have been added to Tuscany to address issues within
+ * the specification.
+ *
+ * The following sample is from the <a href="http://incubator.apache.org/tuscany"
+ * target="_blank"> Apache Tuscany</a> project. It was written to help users
+ * understand and experiement with SDO. It is based upon example code contained
+ * within, and is meant for use with, and reference to the <a
+ * href="http://www.osoa.org/download/attachments/791/SDO_Specification_Java_V2.01.pdf?version=1"
+ * target="_bank">SDO Specification</a>. This sample addresses confusing aspects of
+ * the the AccessDataObjectsUsingXPath example from the Examples section of the SDO
+ * specification.<br>
+ * <br>
+ * To define the correct Types for each DataObject ( CompanyType, DepartmentType etc )
+ * this sample relies upon
+ * {@link org.apache.tuscany.samples.sdo.SdoSampleConstants#COMPANY_XSD} which is
+ * provided in the resources directory of these samples. The xml file
+ * {@link org.apache.tuscany.samples.sdo.SdoSampleConstants#COMPANY_DATAGRAPH_XML} is
+ * used to load the DataGraph and is also located in this resources directory. <br>
+ * <br>
+ * <b>Usage:</b> <br>
+ * This sample can easily be run from within Eclipse as a Java Application if tuscany or
+ * the sample-sdo project is imported into Eclipse as an existing project.
+ * <br><br>
+ * If executing as a standalone application please do the following:
+ * <br>
+ * <UL>
+ * <LI>Include the following jar files on your classpath :
+ * <UL>
+ * <LI>SDO API and Tuscany Implementation
+ * <UL>
+ * <LI>sdo-api-{version}.jar - SDO API
+ * <LI>tuscany-sdo-impl-{version}.jar - Tuscany SDO implementation
+ * </UL>
+ * </LI>
+ * <LI>EMF dependencies.
+ * <UL>
+ * <LI>emf-common-{version}.jar - some common framework utility and base classes
+ * <LI>emf-ecore-{version}.jar - the EMF core runtime implementation classes (the Ecore metamodel)
+ * <LI>emf-ecore-change-{version}.jar - the EMF change recorder and framework
+ * <LI>emf-ecore-xmi-{version}.jar - EMF's default XML (and XMI) serializer and loader
+ * <LI>xsd-{version}.jar - the XML Schema model
+ * </UL>
+ * </LI>
+ * </UL>
+ *
+ * These jar files can be obtained from directly from Tuscany and EMF projects or from <a
+ * href="http://wiki.apache.org/ws-data/attachments/Tuscany(2f)TuscanyJava(2f)SDO_Java_Overview/attachments/SDO%20Execution%20Dependencies"
+ * target="_bank">SDO Execution Dependancies </a> </LI>
+ * <LI>Execute: <br>
+ * java org.apache.tuscany.samples.sdo.specCodeSnippets.ObtainingDataGraphFromXml</LI>
+ * </UL>
+ *
+ * @see org.apache.tuscany.samples.sdo.specExampleSection.AccessDataObjectsUsingXPath
+ * @author Robbie Minshall
+ */
+
+public class ObtainingDataGraphFromXml {
+
+ /**
+ * Execute this method in order to run the sample.
+ *
+ * @param args
+ */
+ public static void main(String[] args) {
+ System.out.println("***************************************");
+ System.out.println("SDO Sample ObtainingDataGraphFromXml");
+ System.out.println("***************************************");
+ System.out.println("Demonstrates a vareity of methods available to obtain the root DataObject"
+ + "contained within an xml representation of a DataGraph.");
+ System.out.println("***************************************");
+
+
+ // define Types
+ try {
+ System.out.println("Defining Types using XSD");
+ InputStream is = null;
+ is = ClassLoader.getSystemResourceAsStream(SdoSampleConstants.COMPANY_XSD);
+ XSDHelper.INSTANCE.define(is, null);
+ is.close();
+ System.out.println("Type definition completed");
+ } catch (Exception e) {
+ System.out.println("Exception caught defining types " + e.toString());
+ e.printStackTrace();
+ }
+
+ try {
+
+ /**
+ * A DataGraph is an optional envelope for a graph of DataObjects and an
+ * associated ChangeSummary.
+ *
+ * The specification group is currently investigating options regarding
+ * obtaining a DataGraph from an xml file as well as the role of the
+ * DataGraph within the SDO specification.
+ *
+ * In order to obtain the rootObject contained within the specification
+ * the specification demonstrates reading in an XML file and obtaining a
+ * DataObject that represents the datagraph contained within the file.
+ * Note, that the specification does not obtain a DataGraph - there are
+ * not mechanisms within the specification for obtaining a DataGraph from
+ * xml. Obtaining the root DataObject from this datagraph representation
+ * is quite cumbersome and is demonstrated below.
+ *
+ * In order to address this current limitation within the specification
+ * Tuscany has added a utility method to SDOUtil that allows a user to
+ * obtain an actual DataGraph from xml.
+ */
+
+ DataObject company = null;
+
+ /**
+ * Use specification mechanism for obtaining a DataObject that represents
+ */
+ // the a datagraph
+ System.out.println("Using specification methods to obtain DataObject represeenting a datagraph from xml");
+
+ // When the xml file represents a DataGraph the root Object
+ // of the XMLDocument is a DataGraph
+ DataObject dataObjectRepresentingDataGraph = XMLHelper.INSTANCE.load(
+ ClassLoader.getSystemResourceAsStream(SdoSampleConstants.COMPANY_DATAGRAPH_XML)).getRootObject();
+
+ // Obtain the company DataObject from the DataObject representing the datagraph
+ Sequence mySeq = (Sequence) dataObjectRepresentingDataGraph.getSequence("any");
+ company = (DataObject) mySeq.getValue(0);
+
+ System.out.println("Obtained DataObject representing datagraph");
+ System.out.println(dataObjectRepresentingDataGraph);
+ System.out.println("Obtained root DataObject from datagraph");
+ System.out.println(company);
+ System.out.println();
+
+
+ /**
+ * Use utility method to obtain an actual DataGraph from the xml
+ */
+ DataGraph datagraph = SDOUtil.loadDataGraph(ClassLoader.getSystemResourceAsStream(SdoSampleConstants.COMPANY_DATAGRAPH_XML), null);
+ // Obtain the company DataObject from the actual DataGraph
+ company = datagraph.getRootObject();
+ System.out.println("Obtained actual DataGraph:");
+ System.out.println(datagraph);
+ System.out.println("Obtained root DataObject from DataGraph:");
+ System.out.println(company);
+ System.out.println();
+
+ } catch (Exception e) {
+ System.out.println("Sorry there was an error encountered " + e.toString());
+ e.printStackTrace();
+ }
+ System.out.println("GoodBye");
+
+ }
+}
diff --git a/branches/sdo-java-M2/sdo/sample/src/main/java/org/apache/tuscany/samples/sdo/specCodeSnippets/PrintPropertiesOfDataObject.java b/branches/sdo-java-M2/sdo/sample/src/main/java/org/apache/tuscany/samples/sdo/specCodeSnippets/PrintPropertiesOfDataObject.java
new file mode 100644
index 0000000000..453cec211a
--- /dev/null
+++ b/branches/sdo-java-M2/sdo/sample/src/main/java/org/apache/tuscany/samples/sdo/specCodeSnippets/PrintPropertiesOfDataObject.java
@@ -0,0 +1,177 @@
+/**
+ *
+ * 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.samples.sdo.specCodeSnippets;
+
+import java.util.List;
+
+import org.apache.tuscany.samples.sdo.SdoSampleConstants;
+
+import commonj.sdo.DataObject;
+import commonj.sdo.Property;
+import commonj.sdo.Type;
+import commonj.sdo.helper.XMLHelper;
+import commonj.sdo.helper.XSDHelper;
+
+/**
+ * Demonstrates iterating through, and inspecting properites of a DataObject. This
+ * sample shows listing properties of a dataObject, determining if the properties are
+ * set, are simple properties or represent DataObjects <br>
+ * <br>
+ * This sample is from the <a href="http://incubator.apache.org/tuscany"
+ * target="_blank"> Apache Tuscany</a> project. It was written to help users
+ * understand and experiement with SDO. It is based upon code snippets contained
+ * within, and is meant for use with, and reference to the <a
+ * href="http://www.osoa.org/download/attachments/791/SDO_Specification_Java_V2.01.pdf?version=1"
+ * target="_bank">SDO Specification</a>. This specific examples was based upon code
+ * snippets in the section titled 'Property Indexes'. <br>
+ * <b>Usage:</b> <br>
+ * This sample can easily be run from within Eclipse as a Java Application if tuscany or
+ * the sample-sdo project is imported into Eclipse as an existing project.
+ * <br><br>
+ * If executing as a standalone application please do the following:
+ * <br>
+ * <UL>
+ * <LI>Include the following jar files on your classpath :
+ * <UL>
+ * <LI>SDO API and Tuscany Implementation
+ * <UL>
+ * <LI>sdo-api-{version}.jar - SDO API
+ * <LI>tuscany-sdo-impl-{version}.jar - Tuscany SDO implementation
+ * </UL>
+ * </LI>
+ * <LI>EMF dependencies.
+ * <UL>
+ * <LI>emf-common-{version}.jar - some common framework utility and base classes
+ * <LI>emf-ecore-{version}.jar - the EMF core runtime implementation classes (the Ecore metamodel)
+ * <LI>emf-ecore-change-{version}.jar - the EMF change recorder and framework
+ * <LI>emf-ecore-xmi-{version}.jar - EMF's default XML (and XMI) serializer and loader
+ * <LI>xsd-{version}.jar - the XML Schema model
+ * </UL>
+ * </LI>
+ * </UL>
+ *
+ * These jar files can be obtained from directly from Tuscany and EMF projects or from <a
+ * href="http://wiki.apache.org/ws-data/attachments/Tuscany(2f)TuscanyJava(2f)SDO_Java_Overview/attachments/SDO%20Execution%20Dependencies"
+ * target="_bank">SDO Execution Dependancies </a> </LI>
+ * <LI>Execute: <br>
+ * java org.apache.tuscany.samples.sdo.specCodeSnippets.PrintPropertiesOfDataObject</LI>
+ * </UL>
+ *
+ * @author Robbie Minshall
+ */
+
+public class PrintPropertiesOfDataObject {
+
+ /**
+ * Calls recursive method to inspect and print properties of a DataObject.
+ *
+ * @param DataObject.
+ * The DataObject to print the properties of
+ */
+ public static void printDataObjectProperties(DataObject myDo) throws Exception {
+ System.out.println("Recursivly inspecting and printing properties of DataObject");
+ printAndInspectDataObject(" ", myDo);
+ }
+
+ /**
+ * Recursivly inspects and prints DataObject. This method will list all set
+ * properties
+ *
+ * @param buffer.
+ * Blank string to help with formating
+ * @param myDo.
+ * DataObject to recursivly inspect and print the properties of.
+ * @throws Exception
+ */
+ private static void printAndInspectDataObject(String buffer, DataObject myDo) throws Exception {
+
+ for (int i = 0; i < myDo.getInstanceProperties().size(); i++) {
+ Property p = (Property) myDo.getInstanceProperties().get(i);
+ // just print out the name, type and string value of the property
+ Type type = p.getType();
+ System.out.print(buffer + " " + p.getName() + ",type=" + type.getName());
+ if (myDo.isSet(p)) {
+ // see if this represents a simple property or if the type is also a
+ // datatype
+ if (type.isDataType()) {
+ System.out.println(", simple type : " + myDo.get(i));
+ } else {
+
+ // check to see if the property has many values
+ if (p.isMany()) {
+ System.out.println(buffer + ", many valued with list of DataObjects : ");
+ List dataObjects = myDo.getList(p);
+ for (int x = 0; x < dataObjects.size(); x++) {
+ printAndInspectDataObject(buffer + " ", (DataObject) dataObjects.get(x));
+ System.out.println();
+ }
+
+ } else {
+
+ System.out.println(buffer + ", data object : ");
+ DataObject newDataObject = myDo.getDataObject(p);
+ printAndInspectDataObject(buffer + " ", newDataObject);
+ System.out.println("");
+ }
+ }
+ } else {
+ System.out.println(buffer + ", is not set");
+ }
+ }
+
+ }
+
+ /**
+ * @param args.
+ * none required.
+ */
+ public static void main(String[] args) {
+ // information
+ System.out.println("***************************************");
+ System.out.println("SDO Sample InspectAndPrintPropertiesOfDataObject");
+ System.out.println("***************************************");
+ System.out.println("Demonstrates a common pattern of looping through and inspecting the META-DATA for all instance properties."
+ + "This example uses recursion to iterate through properties which themselves are DataObjects.");
+ System.out.println("***************************************");
+
+ // create a DataObejct
+ DataObject purchaseOrder = null;
+ try {
+ XSDHelper.INSTANCE.define(ClassLoader.getSystemResourceAsStream(SdoSampleConstants.PO_XSD_RESOURCE), null);
+ purchaseOrder = XMLHelper.INSTANCE.load(ClassLoader.getSystemResourceAsStream(SdoSampleConstants.PO_XML_RESOURCE)).getRootObject();
+ System.out.println("DataObject created");
+ } catch (Exception e) {
+ System.out.println("Error creating DataObject " + e.toString());
+ e.printStackTrace();
+ return;
+ }
+
+ //print and inspect properties of the DataObject
+ try {
+ System.out.println("Will iterate and inspect the properties of the following data object " + purchaseOrder.toString());
+ printDataObjectProperties(purchaseOrder);
+
+ } catch (Exception e) {
+ System.out.println("Sorry, an error was encountered inspecting DataObject " + e.toString());
+ }
+ System.out.println("GoodBye");
+ }
+}
diff --git a/branches/sdo-java-M2/sdo/sample/src/main/java/org/apache/tuscany/samples/sdo/specCodeSnippets/UsingXPath.java b/branches/sdo-java-M2/sdo/sample/src/main/java/org/apache/tuscany/samples/sdo/specCodeSnippets/UsingXPath.java
new file mode 100644
index 0000000000..b243bc0361
--- /dev/null
+++ b/branches/sdo-java-M2/sdo/sample/src/main/java/org/apache/tuscany/samples/sdo/specCodeSnippets/UsingXPath.java
@@ -0,0 +1,149 @@
+/**
+ *
+ * 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.samples.sdo.specCodeSnippets;
+
+import org.apache.tuscany.samples.sdo.SdoSampleConstants;
+
+import commonj.sdo.DataObject;
+import commonj.sdo.helper.XMLHelper;
+import commonj.sdo.helper.XSDHelper;
+
+/**
+ * Demonstrates accessing a created DataObject's properties using xPath.
+ *
+ * This sample is from the <a href="http://incubator.apache.org/tuscany" target="_blank"> Apache Tuscany</a> project. It was written to help users
+ * understand and experiement with SDO. It is based upon code snippets contained within, and is meant for use with, and reference to the <a
+ * href="http://www.osoa.org/download/attachments/791/SDO_Specification_Java_V2.01.pdf?version=1" target="_bank">SDO Specification</a>.
+ * <br>
+ * <br>
+ * It is worth noting that the Examples section of the specification, and the
+ * {@link org.apache.tuscany.samples.sdo.specExampleSection.AccessingDataObjectsUsingXPath} use unpure xpath expression. This sample attempts to
+ * demonstrate a more appropiate subset of xPath operations.<br>
+ * <br>
+ * <b>Usage:</b> <br>
+ * This sample can easily be run from within Eclipse as a Java Application if tuscany or the sample-sdo project is imported into Eclipse as an
+ * existing project. <br>
+ * <br>
+ * If executing as a standalone application please do the following: <br>
+ * <UL>
+ * <LI>Include the following jar files on your classpath :
+ * <UL>
+ * <LI>SDO API and Tuscany Implementation
+ * <UL>
+ * <LI>sdo-api-{version}.jar - SDO API
+ * <LI>tuscany-sdo-impl-{version}.jar - Tuscany SDO implementation
+ * </UL>
+ * </LI>
+ * <LI>EMF dependencies.
+ * <UL>
+ * <LI>emf-common-{version}.jar - some common framework utility and base classes
+ * <LI>emf-ecore-{version}.jar - the EMF core runtime implementation classes (the Ecore metamodel)
+ * <LI>emf-ecore-change-{version}.jar - the EMF change recorder and framework
+ * <LI>emf-ecore-xmi-{version}.jar - EMF's default XML (and XMI) serializer and loader
+ * <LI>xsd-{version}.jar - the XML Schema model
+ * </UL>
+ * </LI>
+ * </UL>
+ *
+ * These jar files can be obtained from directly from Tuscany and EMF projects or from <a
+ * href="http://wiki.apache.org/ws-data/attachments/Tuscany(2f)TuscanyJava(2f)SDO_Java_Overview/attachments/SDO%20Execution%20Dependencies"
+ * target="_bank">SDO Execution Dependancies </a> </LI>
+ * <LI>Execute: <br>
+ * java org.apache.tuscany.samples.sdo.specCodeSnippets.UsingXPath</LI>
+ * </UL>
+ *
+ * @author Robbie Minshall
+ */
+public class UsingXPath {
+
+ /**
+ * Prints a subset of item properties to System.out where the individual item was accessed using an xPath expression
+ *
+ * @param purchaseOrder.
+ * DataObject defined by Types in {@link org.apache.tuscany.samples.sdo.SdoSampleConstants#PO_XSD_RESOURCE}
+ */
+ public static void accessDataObjectUsingXPath(DataObject purchaseOrder) throws Exception {
+ // TODO: use variety of xpath expressions such as items/item[1]
+ // TODO: add to junit test cases for test cases above
+
+ // xpath expressions for obtaining various items
+ String[] xPathExpressions = { "items/item[1]","items/item[productName=\"Baby Monitor\"]" };
+
+ for (int i = 0; i < xPathExpressions.length; i++) {
+ try {
+ System.out.println("Accessing individual item from list using xpath expression" + xPathExpressions[i]);
+
+ DataObject item = purchaseOrder.getDataObject(xPathExpressions[i]);
+ System.out.println(" DataObject toString : " + item.toString());
+
+ System.out.println(" Item name:" + item.get("productName"));
+ System.out.println(" Part num: " + item.get("partNum"));
+ } catch (Exception e) {
+ System.out.println(" Sorry there was an error executing expression " + xPathExpressions[i]);
+ throw e;
+ }
+ }
+
+ //TODO: select various lists of properties from DataObjects using xPath.
+ }
+
+ /**
+ * Accesses and modifies properties of a purchase order DataObject using xPath( properties are defined in the xsd
+ * {@link org.apache.tuscany.samples.sdo.SdoSampleConstants#PO_XSD_RESOURCE} and populated by xml
+ * {@link org.apache.tuscany.samples.sdo.SdoSampleConstants#PO_XML_RESOURCE} )
+ *
+ * @param args.
+ * No parameters required.
+ */
+ public static void main(String[] args) {
+
+ // information
+ System.out.println("***************************************");
+ System.out.println("SDO Sample UsingXPath");
+ System.out.println("***************************************");
+ System.out.println("Demonstrats accessing a created DataObject's properties using xPath.");
+ System.out.println("***************************************");
+
+ // create a DataObejct
+ DataObject purchaseOrder = null;
+ try {
+ XSDHelper.INSTANCE.define(ClassLoader.getSystemResourceAsStream(SdoSampleConstants.PO_XSD_RESOURCE), null);
+ purchaseOrder = XMLHelper.INSTANCE.load(ClassLoader.getSystemResourceAsStream(SdoSampleConstants.PO_XML_RESOURCE)).getRootObject();
+ System.out.println("DataObject created");
+ } catch (Exception e) {
+ System.out.println("Error creating DataObject " + e.toString());
+ e.printStackTrace();
+ return;
+ }
+
+ // start of sample
+ try {
+
+ accessDataObjectUsingXPath(purchaseOrder);
+ } catch (Exception e) {
+ System.out.println("Sorry there was an error accessing properties by name " + e.toString());
+ e.printStackTrace();
+ }
+ System.out.println("GoodBye");
+ // end of sample
+ }
+
+}
diff --git a/branches/sdo-java-M2/sdo/sample/src/main/java/org/apache/tuscany/samples/sdo/specCodeSnippets/package.html b/branches/sdo-java-M2/sdo/sample/src/main/java/org/apache/tuscany/samples/sdo/specCodeSnippets/package.html
new file mode 100644
index 0000000000..ac784deabc
--- /dev/null
+++ b/branches/sdo-java-M2/sdo/sample/src/main/java/org/apache/tuscany/samples/sdo/specCodeSnippets/package.html
@@ -0,0 +1,40 @@
+<html>
+<!--
+ *
+ * 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.
+ * -->
+<head>
+ <title>package information</title>
+</head>
+<body>
+
+Provides examples containing code snippets located throughout the SDO Specification. In general these samples attempt to use the
+code and comments contained within the specification but allow a certain degree of flexibility to extend or improve
+upon the code snippets where desirable.
+ The user is encouraged to modify and execute these code examples.
+
+
+<h2>Related Documentation</h2>
+
+For overviews, tutorials, examples, guides, and tool documentation, please see the
+<a href="http://incubator.apache.org/tuscany/java_sdo_overview.html"> SDO Java Overview
+</a>
+section of the Tuscany website.
+
+</body>
+</html> \ No newline at end of file
diff --git a/branches/sdo-java-M2/sdo/sample/src/main/java/org/apache/tuscany/samples/sdo/specExampleSection/AccessDataObjectsUsingXPath.java b/branches/sdo-java-M2/sdo/sample/src/main/java/org/apache/tuscany/samples/sdo/specExampleSection/AccessDataObjectsUsingXPath.java
new file mode 100644
index 0000000000..97441c7473
--- /dev/null
+++ b/branches/sdo-java-M2/sdo/sample/src/main/java/org/apache/tuscany/samples/sdo/specExampleSection/AccessDataObjectsUsingXPath.java
@@ -0,0 +1,251 @@
+/**
+ *
+ * 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.samples.sdo.specExampleSection;
+
+import java.util.List;
+
+import org.apache.tuscany.samples.sdo.SdoSampleConstants;
+
+import commonj.sdo.helper.XMLHelper;
+import commonj.sdo.helper.XSDHelper;
+import commonj.sdo.DataObject;
+
+/**
+ * Demonstrates accessing the properties of a DataObject using XPath queries.
+ *
+ * The following sample is from the <a href="http://incubator.apache.org/tuscany"
+ * target="_blank"> Apache Tuscany</a> project. It was written to help users
+ * understand and experiement with SDO. It is based upon example code contained
+ * within, and is meant for use with, and reference to the <a
+ * href="http://www.osoa.org/download/attachments/791/SDO_Specification_Java_V2.01.pdf?version=1"
+ * target="_bank">SDO Specification</a>. In general this sample attempts to use the
+ * code and comments contained within the specification, exceptions to this are noted
+ * in comments.<br>
+ * <br>
+ * This specific sample is based upon the AccessDataObjectsUsingXPath example from
+ * the Examples section of the SDO specification. It shows the use of DataObjects and
+ * the XMLHelper and demonstrates accessing the properties of a DataObject using
+ * XPath queries. <br>
+ * <br>
+ * This sample reads an xml file representing a DataObject of a company. A
+ * DataAccessService (DAS) is simply a component which creates a DataGraph or
+ * DataObject, it can also be responcible for creating SDO Types for created
+ * DataObjects. In order to create a DataObject or DataGraph this sample relies upon
+ * XMLHelper class which is essentially an example of a XML DAS. The code shown here
+ * would work just as well against an equivalent DataGraph or DataObject that was
+ * provided by any DAS that creates an identical DataObject/DataGraph of the same
+ * Type used here. <br>
+ * <br>
+ * To define the correct Types for each DataObject ( CompanyType, DepartmentType etc )
+ * this sample relies upon
+ * {@link org.apache.tuscany.samples.sdo.SdoSampleConstants#COMPANY_XSD} which is
+ * provided in the resources directory of these samples. The xml file
+ * {@link org.apache.tuscany.samples.sdo.SdoSampleConstants#COMPANY_DATAOBJECT_XML}
+ * used to load the DataObject is also located in this resources directory. The xsd
+ * the xml was generated by
+ * {@link org.apache.tuscany.samples.sdo.otherSources.CreateCompany} which is a good
+ * resource for how to populate or create DataObjects or DataGraphs dynamically. <br>
+ * <br>
+ * The following example has the same effect as
+ * {@link org.apache.tuscany.samples.sdo.specExampleSection.AccessDataObjectsViaPropertyIndex}.
+ * <br><br>
+ * <b>Usage:</b> <br>
+ * This sample can easily be run from within Eclipse as a Java Application if tuscany or
+ * the sample-sdo project is imported into Eclipse as an existing project.
+ * <br><br>
+ * If executing as a standalone application please do the following:
+ * <br>
+ * <UL>
+ * <LI>Include the following jar files on your classpath :
+ * <UL>
+ * <LI>SDO API and Tuscany Implementation
+ * <UL>
+ * <LI>sdo-api-{version}.jar - SDO API
+ * <LI>tuscany-sdo-impl-{version}.jar - Tuscany SDO implementation
+ * </UL>
+ * </LI>
+ * <LI>EMF dependencies.
+ * <UL>
+ * <LI>emf-common-{version}.jar - some common framework utility and base classes
+ * <LI>emf-ecore-{version}.jar - the EMF core runtime implementation classes (the Ecore metamodel)
+ * <LI>emf-ecore-change-{version}.jar - the EMF change recorder and framework
+ * <LI>emf-ecore-xmi-{version}.jar - EMF's default XML (and XMI) serializer and loader
+ * <LI>xsd-{version}.jar - the XML Schema model
+ * </UL>
+ * </LI>
+ * </UL>
+ *
+ * These jar files can be obtained from directly from Tuscany and EMF projects or from <a
+ * href="http://wiki.apache.org/ws-data/attachments/Tuscany(2f)TuscanyJava(2f)SDO_Java_Overview/attachments/SDO%20Execution%20Dependencies"
+ * target="_bank">SDO Execution Dependancies </a> </LI>
+ * <LI>Execute: <br>
+ * java org.apache.tuscany.samples.sdo.specExampleSection.AccessDataObjectsUsingXPath </LI>
+ * </UL>
+ *
+ * @author Robbie Minshall
+ * @see org.apache.tuscany.samples.sdo.specCodeSnippets.ObtainingDataGraphFromXml
+ */
+
+public class AccessDataObjectsUsingXPath {
+
+ /**
+ * Execute this method in order to run the sample.
+ *
+ * @param args
+ */
+ public static void main(String[] args) {
+ System.out.println("***************************************");
+ System.out.println("SDO Sample AccessDataObjectsUsingXPath");
+ System.out.println("***************************************");
+ System.out.println("Demonstrates accessing the properties of a DataObject using XPath queries");
+ System.out.println("***************************************");
+
+ /**
+ * In order to associate the correct Type, to the DataObjects represented in
+ * the xml Read in the model/schema which is declared within the xsd so that
+ * it can be associated. If the Types were not defined in this manner you can
+ * still populate, access and use a DataObject or DataGraph but would not
+ * have the protection and use of use afforded by the relationships declared
+ * within the model.
+ */
+ try {
+ System.out.println("Defining Types using XSD");
+ XSDHelper.INSTANCE.define(ClassLoader.getSystemResourceAsStream(SdoSampleConstants.COMPANY_XSD), null);
+ System.out.println("Type definition completed");
+ } catch (Exception e) {
+ System.out.println("Exception caught defining types " + e.toString());
+ e.printStackTrace();
+ }
+
+ try {
+
+ /**
+ * The specification Example demonstrates using both a DataObject and
+ * DataGraph representation of a compony model. This example simply uses
+ * a DataObject representation.
+ *
+ * Obtain the RootObject from the XMLDocument obtained from the XMLHelper
+ * instance. In this case the root object is a DataObject representing a
+ * company
+ */
+
+ DataObject company = XMLHelper.INSTANCE.load(ClassLoader.getSystemResourceAsStream(SdoSampleConstants.COMPANY_DATAOBJECT_XML)).getRootObject();
+
+ // print out some information to show the user what the objects
+ // look like
+ System.out.println("Company DataObject:");
+ System.out.println(company);
+
+ String generatedXml = XMLHelper.INSTANCE.save(company, SdoSampleConstants.COMPANY_NAMESPACE, "company");
+ System.out.println("Company data object xml representation: ");
+ System.out.println(generatedXml);
+
+ /*
+ * If we wish to change the name of the company DataObject from "ACME" to
+ * "MEGACORP" , we could use the following:
+ */
+
+ // Set the "name" property for the company
+ System.out.println("Setting 'name' property for the company DataObject to 'MEGACORP'");
+ company.setString("name", " MegaCorp");
+ System.out.println();
+
+ /*
+ * Now, suppose we wish to access the employee whose serial number is
+ * "E0002" If we know that this employee is located at index 1 within the
+ * department that is located at index 0 within the company object one
+ * way to do this is by traversing each reference in the data graph and
+ * locating each DataObject in the many-valued department property using
+ * it's index in the list. For example, from the company, we can get a
+ * list of departments, from that list we can get the department at index
+ * 0, from there we can get a list of employees, and from that list we
+ * can get the employee at index 1.
+ */
+
+ System.out
+ .println("Obtain employee whose serial number is 'E0002' by acessing list of departments via index, and then accessing specific employee by index. This requies that we know the indices of both the department and employee");
+ // Get the list of departments
+ List departments = company.getList("departments");
+ // Get the department at index 0 on the list
+ DataObject department = (DataObject) departments.get(0);
+ // Get the list of employees for the department
+ List employees = department.getList("employees");
+ // Get the employee at index 2 on the list
+ DataObject employeeFromList = (DataObject) employees.get(2);
+
+ /*
+ * Alternatively, we can write a single XPath expression that directly
+ * accesses the employee from the root company. Please note that the
+ * specification's use of . indexing starting at index 0 is not true
+ * xPath. Please see the
+ * org.apache.tuscany.samples.sdo.specCodeSnippets.UsingXPath
+ * example for more examples of using xPath. A more appropiate use of
+ * xPath might be
+ *
+ * employeeFromXPath =
+ * company.getDataObject("departments[1]/employees[3]");
+ *
+ */
+
+ System.out.println("Obtain employee using xPath expression");
+ DataObject employeeFromXPath = company.getDataObject("departments.0/employees.2");
+
+ /*
+ * In order to remove that employee from the data graph, we could
+ */
+
+ // remove the employee from the list of employees
+ System.out.println("Removing employee " + employeeFromXPath.getString("name") + " from list of employees");
+ employeeFromXPath.detach();
+
+ /*
+ * And, finally, to create a new employee:
+ */
+ // create a new employee
+ System.out.println("Creating new employee (manager) Al Smith and adding to list");
+ DataObject newEmployee = department.createDataObject("employees");
+
+ newEmployee.set("name", "Al Smith");
+ newEmployee.set("SN", "E0005");
+ newEmployee.setBoolean("manager", true);
+
+ // Reset employeeOfTheMonth to be the new employee
+ System.out.println("Setting employee of the month to new employee");
+ company.set("employeeOfTheMonth", newEmployee.getString("SN"));
+
+ // print out some information to show the user what the objects
+ // look like
+ System.out.println("The modified company DataObject: ");
+ System.out.println(company);
+ System.out.println();
+
+ generatedXml = XMLHelper.INSTANCE.save(company, SdoSampleConstants.COMPANY_NAMESPACE, "company");
+ System.out.println("Company data object xml representation: ");
+ System.out.println(generatedXml);
+ System.out.println();
+
+ } catch (Exception e) {
+ System.out.println("Sorry there was an error encountered " + e.toString());
+ e.printStackTrace();
+ }
+ System.out.println("GoodBye");
+ }
+}
diff --git a/branches/sdo-java-M2/sdo/sample/src/main/java/org/apache/tuscany/samples/sdo/specExampleSection/AccessingDataObjectsViaPropertyIndex.java b/branches/sdo-java-M2/sdo/sample/src/main/java/org/apache/tuscany/samples/sdo/specExampleSection/AccessingDataObjectsViaPropertyIndex.java
new file mode 100644
index 0000000000..f2e2b8f2d7
--- /dev/null
+++ b/branches/sdo-java-M2/sdo/sample/src/main/java/org/apache/tuscany/samples/sdo/specExampleSection/AccessingDataObjectsViaPropertyIndex.java
@@ -0,0 +1,232 @@
+/**
+ *
+ * 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.samples.sdo.specExampleSection;
+
+import java.io.InputStream;
+import java.util.List;
+
+import org.apache.tuscany.samples.sdo.SdoSampleConstants;
+
+import commonj.sdo.helper.XMLHelper;
+import commonj.sdo.helper.XSDHelper;
+import commonj.sdo.DataObject;
+
+/**
+ * Demonstrates accessing the properties of a DataObject using property indices.
+ *
+ * The following sample is from the <a href="http://incubator.apache.org/tuscany"
+ * target="_blank"> Apache Tuscany</a> project. It was written to help users
+ * understand and experiment with SDO. It is based upon example code contained
+ * within, and is meant for use with, and reference to the <a
+ * href="http://www.osoa.org/download/attachments/791/SDO_Specification_Java_V2.01.pdf?version=1"
+ * target="_bank">SDO Specification</a>. In general this sample attempts to use the
+ * code and comments contained within the specification, exceptions to this are noted
+ * in comments.<br>
+ * <br>
+ * The following sample is based upon the 'Accessing DataObjects via Property Index'
+ * example from the Examples section of the SDO specification. It shows the use of
+ * DataObjects and the XMLHelper amd demonstrates accessing the properties of a
+ * DataObject using property indices. <br>
+ * <br>
+ * The following example has the same effect as
+ * {@link org.apache.tuscany.samples.sdo.specExampleSection.AccessDataObjectsUsingXPath}.
+ * The indexes for the properties are defined as constants in this class. <br>
+ * <br>
+ * This sample reads an xml file representing a DataObject of a company. In order to
+ * create a DataObject or DataGraph this sample relies upon XMLHelper class which is
+ * essentially example of a XML DAS implementation. The code shown here would work
+ * just as well against an equivalent DataObject that was provided by any DAS. <br>
+ * <br>
+ * To define the correct Types for each DataObject ( CompanyType, DepartmentType etc )
+ * this sample relies upon
+ * {@link org.apache.tuscany.samples.sdo.SdoSampleConstants#COMPANY_XSD} which is
+ * provided in the resources directory of these samples <br>
+ * The xml file
+ * {@link org.apache.tuscany.samples.sdo.SdoSampleConstants#COMPANY_DATAOBJECT_XML}
+ * used to load the DataObject is also located in this resources directory. To help
+ * ensure consistancy with the xsd the xml was generated by
+ * {@link org.apache.tuscany.samples.sdo.otherSources.CreateCompany} which is a good
+ * resource for populating DataObjects, or creating DataGraphs dynamically.
+ * <br><br>
+ * <b>Usage:</b> <br>
+ * This sample can easily be run from within Eclipse as a Java Application if tuscany or
+ * the sample-sdo project is imported into Eclipse as an existing project.
+ * <br><br>
+ * If executing as a standalone application please do the following:
+ * <br>
+ * <UL>
+ * <LI>Include the following jar files on your classpath :
+ * <UL>
+ * <LI>SDO API and Tuscany Implementation
+ * <UL>
+ * <LI>sdo-api-{version}.jar - SDO API
+ * <LI>tuscany-sdo-impl-{version}.jar - Tuscany SDO implementation
+ * </UL>
+ * </LI>
+ * <LI>EMF dependencies.
+ * <UL>
+ * <LI>emf-common-{version}.jar - some common framework utility and base classes
+ * <LI>emf-ecore-{version}.jar - the EMF core runtime implementation classes (the Ecore metamodel)
+ * <LI>emf-ecore-change-{version}.jar - the EMF change recorder and framework
+ * <LI>emf-ecore-xmi-{version}.jar - EMF's default XML (and XMI) serializer and loader
+ * <LI>xsd-{version}.jar - the XML Schema model
+ * </UL>
+ * </LI>
+ * </UL>
+ *
+ * These jar files can be obtained from directly from Tuscany and EMF projects or from <a
+ * href="http://wiki.apache.org/ws-data/attachments/Tuscany(2f)TuscanyJava(2f)SDO_Java_Overview/attachments/SDO%20Execution%20Dependencies"
+ * target="_bank">SDO Execution Dependancies </a> </LI>
+ * <LI>Execute: <br>
+ * java org.apache.tuscany.samples.sdo.specExampleSection.AccessingDataObjectsViaPropertyIndex </LI>
+ * </UL>
+ *
+ * Note: when reading this source code in conjunction with the specification there is scope for confusion
+ * over what the values of the numeric indices ought to be, depending on your understanding of the
+ * word "lexical" in the context of sequencing. So the SDO specification at the 2.0.1 level (and before) says
+ * <i>The order of Properties in Type.getDeclaredProperties() is the lexical order of declarations in the
+ * XML Schema ComplexType.</i>. So if your background is in computing and in particular in lexical parsing
+ * then you would understand this to mean "the sequence of tokens produced by the lexical analyis (first) phase of a compiler"
+ * and if you ran a lexical parser against the complex type then you would see the elements emerege in the order they were
+ * written down. If however you think more in terms of lexical in the context of lexicons or dictionaries, you may
+ * expect the indices to correspond to the lexically sorted (essentially alphabetically sorted) list of element names.
+ * After some investigation it is understood that the intention of the spec is to convey the first of these meanings.
+ * A clarification in the SDO 2.1 spec is being sought, but may not make it into that document in time.
+ *
+ * @author Robbie Minshall
+ */
+
+public class AccessingDataObjectsViaPropertyIndex {
+
+ /**
+ * Predefine the property indexes.
+ *
+
+ */
+
+ private static final int COMPANY_DEPARTMENT = 0;
+
+ private static final int COMPANY_EMPLOYEE_OF_MONTH = 1;
+
+ private static final int COMPANY_NAME = 2;
+
+ private static final int DEPARTMENT_EMPLOYEES = 0;
+
+ private static final int EMPLOYEE_NAME = 0;
+ private static final int EMPLOYEE_SN = 1;
+ private static final int EMPLOYEE_MANAGER = 2;
+
+
+ /**
+ * Execute this method in order to run the sample.
+ *
+ * @param args
+ */
+ public static void main(String[] args) {
+ System.out.println("***************************************");
+ System.out.println("SDO Sample AccessingDataObjectsViaPropertyIndex");
+ System.out.println("***************************************");
+ System.out.println("Demonstrates accessing the properties of a DataObject using property indices.");
+ System.out.println("***************************************");
+
+ // TODO: what happens if not type is defined
+ try {
+ System.out.println("Defining Types using XSD");
+ InputStream is = null;
+ is = ClassLoader.getSystemResourceAsStream(SdoSampleConstants.COMPANY_XSD);
+ XSDHelper.INSTANCE.define(is, null);
+ is.close();
+ System.out.println("Type definition completed");
+ } catch (Exception e) {
+ System.out.println("Exception caught defining types " + e.toString());
+ e.printStackTrace();
+ }
+
+ try {
+
+ /**
+ * In this example simply use a company DataObject read in from xml
+ */
+
+ // For DataObjects
+ // Obtain the RootObject from the XMLDocument obtained from the XMLHelper
+ // instance.
+ // In this case the root object is a DataObject representing a company
+ DataObject company = XMLHelper.INSTANCE.load(ClassLoader.getSystemResourceAsStream(SdoSampleConstants.COMPANY_DATAOBJECT_XML))
+ .getRootObject();
+
+ // print out some information to show the user what the objects look like
+ System.out.println("Company DataObject:");
+ System.out.println(company);
+
+ String generatedXml = XMLHelper.INSTANCE.save(company, SdoSampleConstants.COMPANY_NAMESPACE, "company");
+ System.out.println("Company data object xml representation: ");
+ System.out.println(generatedXml);
+
+ System.out.println("Setting name of company to MegaCorp");
+ // Set the "name" property for the company
+ company.setString(COMPANY_NAME, "MegaCorp");
+ // Get the list of departments
+ List departments = company.getList(COMPANY_DEPARTMENT);
+ // Get the department at index 0 on the list
+ DataObject department = (DataObject) departments.get(0);
+ // Get the list of employees for the department
+ List employees = department.getList(DEPARTMENT_EMPLOYEES);
+ // Get the employee at index 1 on the list
+ DataObject employeeFromList = (DataObject) employees.get(2);
+
+ // remove the employee from the graph
+ System.out.println("Removing employee " + employeeFromList.getString("name") + " from list of employees");
+ employeeFromList.detach();
+
+ // create a new employee
+ System.out.println("Creating new employee (manager) Al Smith and adding to list");
+ DataObject newEmployee = department.createDataObject(DEPARTMENT_EMPLOYEES);
+
+ /**
+ * Properties from Type.getDeclaredProperties, or Type.getProperties
+ * should be in lexical (alphanumerical) ordering of the xml schema
+ * complex type.
+ */
+
+ newEmployee.set(EMPLOYEE_NAME, "Al Smith");
+ newEmployee.set(EMPLOYEE_SN, "E0005");
+ newEmployee.setBoolean(EMPLOYEE_MANAGER, true);
+
+ System.out.println("setting employee of the month to new employee");
+ company.set(COMPANY_EMPLOYEE_OF_MONTH, newEmployee.get(EMPLOYEE_SN));
+
+ // print out some information to show the user what the objects look like
+ System.out.println("The modified company DataObject :");
+ System.out.println(company);
+
+ generatedXml = XMLHelper.INSTANCE.save(company, SdoSampleConstants.COMPANY_NAMESPACE, "company");
+ System.out.println("Company data object xml representation: ");
+ System.out.println(generatedXml);
+
+ } catch (Exception e) {
+ System.out.println("Sorry there was an error encountered " + e.toString());
+ e.printStackTrace();
+ }
+ System.out.println("GoodBye");
+
+ }
+}
diff --git a/branches/sdo-java-M2/sdo/sample/src/main/java/org/apache/tuscany/samples/sdo/specExampleSection/AccessingTheContentsOfASequence.java b/branches/sdo-java-M2/sdo/sample/src/main/java/org/apache/tuscany/samples/sdo/specExampleSection/AccessingTheContentsOfASequence.java
new file mode 100644
index 0000000000..04ef5e704f
--- /dev/null
+++ b/branches/sdo-java-M2/sdo/sample/src/main/java/org/apache/tuscany/samples/sdo/specExampleSection/AccessingTheContentsOfASequence.java
@@ -0,0 +1,194 @@
+/**
+ *
+ * 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.samples.sdo.specExampleSection;
+
+
+import commonj.sdo.helper.XMLHelper;
+import commonj.sdo.helper.XSDHelper;
+import commonj.sdo.DataObject;
+import commonj.sdo.Sequence;
+import commonj.sdo.Property;
+
+/**
+ * Demonstrates accessing the sequence from a DataObject containing mixed content.
+ *
+ * The following sample is from the <a href="http://incubator.apache.org/tuscany"
+ * target="_blank"> Apache Tuscany</a> project. It was written to help users
+ * understand and experiement with SDO. It is based upon example code contained
+ * within, and is meant for use with, and reference to the <a
+ * href="http://www.osoa.org/download/attachments/791/SDO_Specification_Java_V2.01.pdf?version=1"
+ * target="_bank">SDO Specification</a>. In general this sample attempts to use the
+ * code and comments contained within the specification, exceptions to this are noted
+ * in comments.<br>
+ *
+ * Specifically the following sample is based upon the 'Accessing the contents of a Sequence' example from the Examples section of the SDO specification. <br>
+ * <br>
+ * The following code uses the Sequence interface to analyze the contents of a DataObject that conforms to teh Letter model defined in
+ * {@link #LETTER_XSD}. This code first goes through the Sequence looking for unformatted text entrires and prints them out. Then the code checks to
+ * verify that the contents of teh "lastName" property of the DataObject matches the contents of the same property of the Sequence. <br>
+ * <br>
+ * This sample reads an xml file (@link #LETTER_XML} representing a DataObject of a letter. In order to create a DataObject or DataGraph this sample
+ * relies upon XMLHelper class which is an example of a XML DAS. The code shown here would work just as well against an equivalent DataObject that was
+ * provided by any DAS. <br>
+ *
+ * The XSD for {@link #LETTER_XSD} defines the FormLetter complex type as mixed. Mixed content and sequences are often used for semi structured business data.
+ * <br><br>
+ * <b>Usage:</b> <br>
+ * This sample can easily be run from within Eclipse as a Java Application if tuscany or
+ * the sample-sdo project is imported into Eclipse as an existing project.
+ * <br><br>
+ * If executing as a standalone application please do the following:
+ * <br>
+ * <UL>
+ * <LI>Include the following jar files on your classpath :
+ * <UL>
+ * <LI>SDO API and Tuscany Implementation
+ * <UL>
+ * <LI>sdo-api-{version}.jar - SDO API
+ * <LI>tuscany-sdo-impl-{version}.jar - Tuscany SDO implementation
+ * </UL>
+ * </LI>
+ * <LI>EMF dependencies.
+ * <UL>
+ * <LI>emf-common-{version}.jar - some common framework utility and base classes
+ * <LI>emf-ecore-{version}.jar - the EMF core runtime implementation classes (the Ecore metamodel)
+ * <LI>emf-ecore-change-{version}.jar - the EMF change recorder and framework
+ * <LI>emf-ecore-xmi-{version}.jar - EMF's default XML (and XMI) serializer and loader
+ * <LI>xsd-{version}.jar - the XML Schema model
+ * </UL>
+ * </LI>
+ * </UL>
+ *
+ * These jar files can be obtained from directly from Tuscany and EMF projects or from <a
+ * href="http://wiki.apache.org/ws-data/attachments/Tuscany(2f)TuscanyJava(2f)SDO_Java_Overview/attachments/SDO%20Execution%20Dependencies"
+ * target="_bank">SDO Execution Dependancies </a> </LI>
+ * <LI>Execute: <br>
+ * java org.apache.tuscany.samples.sdo.specExampleSection.AccessingTheContentsOfASequence</LI>
+ * </UL>
+ *
+ * @author Robbie Minshall
+ */
+
+public class AccessingTheContentsOfASequence {
+
+ /**
+ * previously created XSD file used
+ */
+ public static final String LETTER_XSD = "letter.xsd";
+
+ /**
+ * previously created XML file used
+ */
+ public static final String LETTER_XML = "letter.xml";
+
+ /**
+ * Execute this method in order to run the sample.
+ *
+ * @param args
+ */
+ public static void main(String[] args) {
+ System.out.println("***************************************");
+ System.out.println("SDO Sample AccessingTheContentsOfASequence");
+ System.out.println("***************************************");
+ System.out.println("Demonstrates accessing the sequence from a DataObject containing mixed content.");
+ System.out.println("***************************************");
+
+ try {
+ // define model
+ System.out.println("Defining Types using XSD");
+ XSDHelper.INSTANCE.define(ClassLoader.getSystemResourceAsStream(LETTER_XSD), null);
+
+ // define letter data object
+ System.out.println("Loading Letter DataObject from XML");
+ DataObject letter = XMLHelper.INSTANCE.load(ClassLoader.getSystemResourceAsStream(LETTER_XML)).getRootObject();
+
+ // print letter sequence
+ System.out.println("Printing sequence for " + letter);
+ System.out.println(XMLHelper.INSTANCE.save(letter, "letter.xsd", "letter"));
+ printSequence(letter);
+
+ } catch (Exception e) {
+ System.out.println("Sorry there was an error encountered " + e.toString());
+ e.printStackTrace();
+ }
+ System.out.println("GoodBye");
+
+ }
+
+ /**
+ * Uses the Sequence interface to analyze the contents of a DataObject that conforms to teh Letter model defined in
+ * {@link #LETTER_XSD}. This code first goes through the Sequence looking for unformatted text entrires and prints them out. Then the code checks
+ * to verify that the contents of the "lastName" property of the DataObject matches the contents of the same property of the Sequence. <br>
+ *
+ * @param letter. Letter DataObject conforming to {@link #LETTER_XSD}
+ */
+ public static void printSequence(DataObject letter) {
+ // Access the Sequence of the FormLetter
+ System.out.println("The type is for letter dataObject is mixed " + XSDHelper.INSTANCE.isMixed(letter.getType()));
+
+ Sequence letterSequence = letter.getSequence();
+ // Print out all the settings that contain unstructured text
+ System.out.println("Unstructured text:");
+ for (int i = 0; i < letterSequence.size(); i++) {
+
+ /*
+ * Please note that the following line is a correction to the 2.0 specification which incorrectly calls:
+ *
+ * String propertyName = ((Property) letterSequence.getProperty(i)).getName();
+ *
+ * According to the SDO API sequence.getProperty will return null if the content is mixed, in this case
+ * we want to print it out as unstructured text
+ */
+ Property prop = letterSequence.getProperty(i);
+ if (prop == null) {
+ String text = (String) letterSequence.getValue(i);
+ System.out.println("\t(" + text + ")");
+ }
+
+ }
+
+ /*
+ * Please note that the following line is a correction to the 2.0 Specification which incorrectly uses letterDataObject variable rather than
+ * simply letter
+ */
+ // Verify that the lastName property of the DataObject has the same
+ // value as the lastName property for the Sequence.
+ String dataObjectLastName = letter.getString("lastName");
+ for (int i = 0; i < letterSequence.size(); i++) {
+
+ /*
+ * The following line has been corrected from the 2.0 specification
+ * According to the SDO API sequence.getProperty will return null if the content is mixed.
+ * We want to check that the content is not mixed, and then check that it it is the property which
+ * we are looking for
+ */
+ Property property = letterSequence.getProperty(i);
+
+ if ( (property != null) && ("lastName".equals(property.getName()))) {
+ String sequenceLastName = (String) letterSequence.getValue(i);
+ if (dataObjectLastName == sequenceLastName)
+ System.out.println("Last Name property matches");
+ break;
+ }
+ }
+ }
+
+}
diff --git a/branches/sdo-java-M2/sdo/sample/src/main/java/org/apache/tuscany/samples/sdo/specExampleSection/CreatingDataObjectTreesFromXMLDocuments.java b/branches/sdo-java-M2/sdo/sample/src/main/java/org/apache/tuscany/samples/sdo/specExampleSection/CreatingDataObjectTreesFromXMLDocuments.java
new file mode 100644
index 0000000000..53fc82e06d
--- /dev/null
+++ b/branches/sdo-java-M2/sdo/sample/src/main/java/org/apache/tuscany/samples/sdo/specExampleSection/CreatingDataObjectTreesFromXMLDocuments.java
@@ -0,0 +1,136 @@
+/**
+ *
+ * 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.samples.sdo.specExampleSection;
+
+import commonj.sdo.DataObject;
+import commonj.sdo.helper.XMLHelper;
+import commonj.sdo.helper.XSDHelper;
+
+import org.apache.tuscany.samples.sdo.SdoSampleConstants;
+
+/**
+ * Demonstrates creating a DataObject from an XML String.
+ * <br>
+ * The following sample is from the <a href="http://incubator.apache.org/tuscany"
+ * target="_blank"> Apache Tuscany</a> project. It was written to help users
+ * understand and experiement with SDO. It is based upon example code contained
+ * within, and is meant for use with, and reference to the <a
+ * href="http://www.osoa.org/download/attachments/791/SDO_Specification_Java_V2.01.pdf?version=1"
+ * target="_bank">SDO Specification</a>. In general this sample attempts to use the
+ * code and comments contained within the specification, exceptions to this are noted
+ * in comments.<br>
+ * <br>
+ * Specifically this sample is based upon the 'Creating DataObject Trees from XML
+ * documents' example from the Examples section of the SDO Specification. It is
+ * possible to convert to and from XML documents to build DataObject trees, which is
+ * useful when assembling DataObjects from serval data sources. This sample uses the
+ * XMLHelper to convert xml Strings to DataObjects. <br>
+ * <br>
+ * Uses previously defined model
+ * {@link org.apache.tuscany.samples.sdo.SdoSampleConstants#PO_XSD_RESOURCE} to
+ * define types then generates a purchase order DataObject and persists to
+ * {@link org.apache.tuscany.samples.sdo.SdoSampleConstants#PO_XML_GENERATED}
+ * <br><br>
+ * <b>Usage:</b> <br>
+ * This sample can easily be run from within Eclipse as a Java Application if tuscany or
+ * the sample-sdo project is imported into Eclipse as an existing project.
+ * <br><br>
+ * If executing as a standalone application please do the following:
+ * <br>
+ * <UL>
+ * <LI>Include the following jar files on your classpath :
+ * <UL>
+ * <LI>SDO API and Tuscany Implementation
+ * <UL>
+ * <LI>sdo-api-{version}.jar - SDO API
+ * <LI>tuscany-sdo-impl-{version}.jar - Tuscany SDO implementation
+ * </UL>
+ * </LI>
+ * <LI>EMF dependencies.
+ * <UL>
+ * <LI>emf-common-{version}.jar - some common framework utility and base classes
+ * <LI>emf-ecore-{version}.jar - the EMF core runtime implementation classes (the Ecore metamodel)
+ * <LI>emf-ecore-change-{version}.jar - the EMF change recorder and framework
+ * <LI>emf-ecore-xmi-{version}.jar - EMF's default XML (and XMI) serializer and loader
+ * <LI>xsd-{version}.jar - the XML Schema model
+ * </UL>
+ * </LI>
+ * </UL>
+ *
+ * These jar files can be obtained from directly from Tuscany and EMF projects or from <a
+ * href="http://wiki.apache.org/ws-data/attachments/Tuscany(2f)TuscanyJava(2f)SDO_Java_Overview/attachments/SDO%20Execution%20Dependencies"
+ * target="_bank">SDO Execution Dependancies </a> </LI>
+ * <LI>Execute: <br>
+ * java org.apache.tuscany.samples.sdo.specExampleSection.CreatingDataObjectTreesFromXMLDocuments</LI>
+ * </UL>
+ *
+ * @author Robbie Minshall
+ * @see {@link org.apache.tuscany.samples.sdo.otherSources.CreatePurchaseOrder}
+ */
+
+public class CreatingDataObjectTreesFromXMLDocuments {
+
+ /**
+ * Drives sample
+ *
+ * @param args.
+ * none required.
+ */
+ public static void main(String[] args) {
+ try {
+
+ System.out.println("***************************************");
+ System.out.println("SDO Sample CreatingDataObjectTreesFromXMLDocuments");
+ System.out.println("***************************************");
+
+ // use xsd to define purchase order types
+ System.out.println("Definging purchase order types using " + SdoSampleConstants.PO_XSD_RESOURCE);
+ XSDHelper.INSTANCE.define(ClassLoader.getSystemResourceAsStream(SdoSampleConstants.PO_XSD_RESOURCE), null);
+ System.out.println("Defined Types using xsd");
+
+ System.out.println("Creating purchase order DataObject using previously created " + SdoSampleConstants.PO_XML_RESOURCE);
+ DataObject purchaseOrder = XMLHelper.INSTANCE.load(ClassLoader.getSystemResourceAsStream(SdoSampleConstants.PO_XML_RESOURCE))
+ .getRootObject();
+
+ // To create the shipTo DataObject from XML:
+ String shipToXML = "<shipTo country='US'>" + " <name>Alice Smith</name>" + " <street>123 Maple Street</street>"
+ + " <city>Mill Valley</city>" + " <state>PA</state>" + " <zip>90952</zip>" + "</shipTo>";
+ DataObject shipTo = XMLHelper.INSTANCE.load(shipToXML).getRootObject();
+
+ // Modify shipTo DataObject on purchaseOrder to value created from a
+ // String
+ System.out.println("Modifying shipTo DataObject on purchaseOrder to value created from a String");
+ purchaseOrder.set("shipTo", shipTo);
+
+ // Obtain and convert the billTo DataObject to XML
+ System.out.println("Obtaining billTo dataObject from purchase order and converting to XML");
+ DataObject billTo = purchaseOrder.getDataObject("billTo");
+ String billToXML = XMLHelper.INSTANCE.save(billTo, null, "billTo");
+ System.out.println("billTo DataObject:");
+ System.out.println(billToXML);
+
+ } catch (Exception e) {
+ System.out.println("Sorry an error occured " + e.toString());
+ e.printStackTrace();
+ }
+ System.out.println("GoodBye");
+ }
+}
diff --git a/branches/sdo-java-M2/sdo/sample/src/main/java/org/apache/tuscany/samples/sdo/specExampleSection/CreatingXmlFromDataObjects.java b/branches/sdo-java-M2/sdo/sample/src/main/java/org/apache/tuscany/samples/sdo/specExampleSection/CreatingXmlFromDataObjects.java
new file mode 100644
index 0000000000..3c5e147677
--- /dev/null
+++ b/branches/sdo-java-M2/sdo/sample/src/main/java/org/apache/tuscany/samples/sdo/specExampleSection/CreatingXmlFromDataObjects.java
@@ -0,0 +1,160 @@
+/**
+ *
+ * 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.samples.sdo.specExampleSection;
+
+import java.io.FileOutputStream;
+import java.io.OutputStream;
+
+import commonj.sdo.DataObject;
+import commonj.sdo.helper.DataFactory;
+import commonj.sdo.helper.XMLHelper;
+import commonj.sdo.helper.XSDHelper;
+
+import org.apache.tuscany.samples.sdo.SdoSampleConstants;
+
+/**
+ * Demonstrates programmatically creating a DataObject and generating an XML String.
+ * <br>
+ * The following sample is from the <a href="http://incubator.apache.org/tuscany"
+ * target="_blank"> Apache Tuscany</a> project. It was written to help users
+ * understand and experiement with SDO. It is based upon example code contained
+ * within, and is meant for use with, and reference to the <a
+ * href="http://www.osoa.org/download/attachments/791/SDO_Specification_Java_V2.01.pdf?version=1"
+ * target="_bank">SDO Specification</a>. In general this sample attempts to use the
+ * code and comments contained within the specification, exceptions to this are noted
+ * in comments.<br>
+ * <br>
+ * Specifically this sample is based upon the 'Creating XML from DataObjects' example
+ * from the SDO specification's Examples section. <br>
+ * <br>
+ * Uses previously defined model
+ * {@link org.apache.tuscany.samples.sdo.SdoSampleConstants#PO_XSD_RESOURCE} to
+ * define types then generates a purchase order DataObject and persists to
+ * {@link org.apache.tuscany.samples.sdo.SdoSampleConstants#PO_XML_GENERATED}
+ * <br><br>
+ * <b>Usage:</b> <br>
+ * This sample can easily be run from within Eclipse as a Java Application if tuscany or
+ * the sample-sdo project is imported into Eclipse as an existing project.
+ * <br><br>
+ * If executing as a standalone application please do the following:
+ * <br>
+ * <UL>
+ * <LI>Include the following jar files on your classpath :
+ * <UL>
+ * <LI>SDO API and Tuscany Implementation
+ * <UL>
+ * <LI>sdo-api-{version}.jar - SDO API
+ * <LI>tuscany-sdo-impl-{version}.jar - Tuscany SDO implementation
+ * </UL>
+ * </LI>
+ * <LI>EMF dependencies.
+ * <UL>
+ * <LI>emf-common-{version}.jar - some common framework utility and base classes
+ * <LI>emf-ecore-{version}.jar - the EMF core runtime implementation classes (the Ecore metamodel)
+ * <LI>emf-ecore-change-{version}.jar - the EMF change recorder and framework
+ * <LI>emf-ecore-xmi-{version}.jar - EMF's default XML (and XMI) serializer and loader
+ * <LI>xsd-{version}.jar - the XML Schema model
+ * </UL>
+ * </LI>
+ * </UL>
+ *
+ * These jar files can be obtained from directly from Tuscany and EMF projects or from <a
+ * href="http://wiki.apache.org/ws-data/attachments/Tuscany(2f)TuscanyJava(2f)SDO_Java_Overview/attachments/SDO%20Execution%20Dependencies"
+ * target="_bank">SDO Execution Dependancies </a> </LI>
+ * <LI>Execute: <br>
+ * java org.apache.tuscany.samples.sdo.specExampleSection.CreatingXmlFromDataObjects</LI>
+ * </UL>
+ *
+ * @author Robbie Minshall
+ * @see {@link org.apache.tuscany.samples.sdo.otherSources.CreatePurchaseOrder}
+ */
+
+public class CreatingXmlFromDataObjects {
+
+ /**
+ * Drives sample
+ *
+ * @param args.
+ * none required.
+ */
+ public static void main(String[] args) {
+ try {
+
+ System.out.println("***************************************");
+ System.out.println("SDO Sample CreatingXmlFromDataObjects");
+ System.out.println("***************************************");
+ System.out.println("Demonstrates programmatically creating a DataObject and generating an XML String");
+ System.out.println("***************************************");
+
+ XSDHelper.INSTANCE.define(ClassLoader.getSystemResourceAsStream(SdoSampleConstants.PO_XSD_RESOURCE), null);
+ System.out.println("Defined Types using xsd");
+ DataObject purchaseOrder = DataFactory.INSTANCE.create(SdoSampleConstants.PO_NAMESPACE, "PurchaseOrderType");
+ System.out.println("Created DataObject using DataFactory");
+
+ System.out.println("Populating purchase order data object");
+
+ purchaseOrder.setString("orderDate", "1999-10-20");
+
+ DataObject shipTo = purchaseOrder.createDataObject("shipTo");
+ shipTo.set("country", "US");
+ shipTo.set("name", "Alice Smith");
+ shipTo.set("street", "123 Maple Street");
+ shipTo.set("city", "Mill Valley");
+ shipTo.set("state", "CA");
+ shipTo.setString("zip", "90952");
+ DataObject billTo = purchaseOrder.createDataObject("billTo");
+ billTo.set("country", "US");
+ billTo.set("name", "Robert Smith");
+ billTo.set("street", "8 Oak Avenue");
+ billTo.set("city", "Mill Valley");
+ billTo.set("state", "PA");
+ billTo.setString("zip", "95819");
+ purchaseOrder.set("comment", "Hurry, my lawn is going wild!");
+
+ DataObject items = purchaseOrder.createDataObject("items");
+
+ DataObject item1 = items.createDataObject("item");
+ item1.set("partNum", "872-AA");
+ item1.set("productName", "Lawnmower");
+ item1.setInt("quantity", 1);
+ item1.setString("price", "148.95");
+
+ item1.set("comment", "Confirm this is electric");
+
+ DataObject item2 = items.createDataObject("item");
+ item2.set("partNum", "926-AA");
+ item2.set("productName", "Baby Monitor");
+ item2.setInt("quantity", 1);
+ item2.setString("price", "39.98");
+ item2.setString("shipDate", "1999-05-21");
+
+ OutputStream stream = new FileOutputStream(SdoSampleConstants.PO_XML_GENERATED);
+ XMLHelper.INSTANCE.save(purchaseOrder, SdoSampleConstants.PO_NAMESPACE, "purchaseOrder", stream);
+ System.out.println("Created file " + SdoSampleConstants.PO_XML_GENERATED);
+ System.out.println("Populated with :");
+ System.out.println(XMLHelper.INSTANCE.save(purchaseOrder, SdoSampleConstants.PO_NAMESPACE, "purchaseOrder"));
+ } catch (Exception e) {
+ System.out.println("Sorry an error occured " + e.toString());
+ e.printStackTrace();
+ }
+ System.out.println("GoodBye");
+ }
+}
diff --git a/branches/sdo-java-M2/sdo/sample/src/main/java/org/apache/tuscany/samples/sdo/specExampleSection/SerializingDesearializingADataObject.java b/branches/sdo-java-M2/sdo/sample/src/main/java/org/apache/tuscany/samples/sdo/specExampleSection/SerializingDesearializingADataObject.java
new file mode 100644
index 0000000000..97772eaf33
--- /dev/null
+++ b/branches/sdo-java-M2/sdo/sample/src/main/java/org/apache/tuscany/samples/sdo/specExampleSection/SerializingDesearializingADataObject.java
@@ -0,0 +1,183 @@
+/**
+ *
+ * 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.samples.sdo.specExampleSection;
+
+import commonj.sdo.helper.XMLHelper;
+import commonj.sdo.helper.XSDHelper;
+import commonj.sdo.helper.EqualityHelper;
+import commonj.sdo.DataObject;
+
+import java.io.BufferedReader;
+import java.io.FileInputStream;
+import java.io.InputStreamReader;
+import java.io.ObjectInputStream;
+import java.io.FileOutputStream;
+import java.io.ObjectOutputStream;
+import java.io.IOException;
+
+
+import org.apache.tuscany.samples.sdo.SdoSampleConstants;
+
+/**
+ * Demonstrates serializing and deserializing a DataObject to disk.
+ *
+ * The following sample is from the <a href="http://incubator.apache.org/tuscany"
+ * target="_blank"> Apache Tuscany</a> project. It was written to help users
+ * understand and experiement with SDO. It is based upon example code contained
+ * within, and is meant for use with, and reference to the <a
+ * href="http://www.osoa.org/download/attachments/791/SDO_Specification_Java_V2.01.pdf?version=1"
+ * target="_bank">SDO Specification</a>. In general this sample attempts to use the
+ * code and comments contained within the specification, exceptions to this are noted
+ * in comments.<br>
+ * <br>
+ * The following sample is based upon the 'Serializing/Deserializing a DataGraph or DataObject' example from the Examples section of the SDO
+ * specification. <br>
+ * <br>
+ * The DataObject and DataGraph interfaces extend java.io.Serializable, so any DataObject
+ * or DataGraph be serialized. The following code serializes the company dataObject to a file
+ * of the user's choosing. The file is not deleted after execution.<br>
+ * <br><br>
+ * <b>Usage:</b> <br>
+ * This sample can easily be run from within Eclipse as a Java Application if tuscany or
+ * the sample-sdo project is imported into Eclipse as an existing project.
+ * <br><br>
+ * If executing as a standalone application please do the following:
+ * <br>
+ * <UL>
+ * <LI>Include the following jar files on your classpath :
+ * <UL>
+ * <LI>SDO API and Tuscany Implementation
+ * <UL>
+ * <LI>sdo-api-{version}.jar - SDO API
+ * <LI>tuscany-sdo-impl-{version}.jar - Tuscany SDO implementation
+ * </UL>
+ * </LI>
+ * <LI>EMF dependencies.
+ * <UL>
+ * <LI>emf-common-{version}.jar - some common framework utility and base classes
+ * <LI>emf-ecore-{version}.jar - the EMF core runtime implementation classes (the Ecore metamodel)
+ * <LI>emf-ecore-change-{version}.jar - the EMF change recorder and framework
+ * <LI>emf-ecore-xmi-{version}.jar - EMF's default XML (and XMI) serializer and loader
+ * <LI>xsd-{version}.jar - the XML Schema model
+ * </UL>
+ * </LI>
+ * </UL>
+ *
+ * These jar files can be obtained from directly from Tuscany and EMF projects or from <a
+ * href="http://wiki.apache.org/ws-data/attachments/Tuscany(2f)TuscanyJava(2f)SDO_Java_Overview/attachments/SDO%20Execution%20Dependencies"
+ * target="_bank">SDO Execution Dependancies </a> </LI>
+ * <LI>Execute: <br>
+ * java org.apache.tuscany.samples.sdo.specExampleSection.SerializingDesearializingADataObject</LI>
+ * </UL>
+ *
+ * @author Robbie Minshall
+ */
+
+public class SerializingDesearializingADataObject {
+
+ /**
+ * Default fileName to serialize DataObject to
+ */
+ public static final String DEFAULT_FILE_NAME = "temporarySerializedDataObject.xml";
+
+ public static void serializeDO(DataObject DataObject, String fileName) throws IOException {
+ // serialize data object
+ FileOutputStream fos = new FileOutputStream(fileName);
+ ObjectOutputStream out = new ObjectOutputStream(fos);
+ out.writeObject(DataObject);
+ out.close();
+ }
+
+ /**
+ * Execute this method in order to run the sample.
+ *
+ * @param args
+ */
+ public static void main(String[] args) {
+ System.out.println("***************************************");
+ System.out.println("SDO Sample AccessingTheContentsOfASequence");
+ System.out.println("***************************************");
+ System.out.println("Demonstrates serializing and deserializing a DataObject to disk.");
+ System.out.println("***************************************");
+
+
+ try {
+ // define Types using XSDHelper and predefined xsd file
+ System.out.println("Defining Types using XSD");
+ XSDHelper.INSTANCE.define(ClassLoader.getSystemResourceAsStream(SdoSampleConstants.COMPANY_XSD), null);
+ System.out.println("Type definition completed");
+
+ // create company DataObject using XMLHelper which is an example of a XML DAS
+ System.out.println("Creating company DataObject");
+ DataObject company = XMLHelper.INSTANCE.load(ClassLoader.getSystemResourceAsStream(SdoSampleConstants.COMPANY_DATAOBJECT_XML))
+ .getRootObject();
+
+ // prompt user for a fileName
+ BufferedReader in = new BufferedReader(new InputStreamReader(System.in));
+ System.out.print("Please enter file name, enter for default :");
+ String fileName = in.readLine();
+ if ( (fileName == null) || (fileName.equals(""))){
+ fileName = DEFAULT_FILE_NAME;
+ }
+
+ // serialize dataObject out
+ System.out.println("Serializing DataObject to " + fileName);
+ FileOutputStream fos = new FileOutputStream(fileName);
+ ObjectOutputStream out = new ObjectOutputStream(fos);
+ out.writeObject(company);
+ out.close();
+
+ // read in DataObject
+ System.out.println("Deserialize DataObject from file");
+ FileInputStream fis = new FileInputStream(fileName);
+ ObjectInputStream input = new ObjectInputStream(fis);
+ DataObject newDataObject = (DataObject) input.readObject();
+ input.close();
+
+ /**
+ * Compare DataObjects
+ */
+
+ System.out.println("Comparing original and deserialized DataObject");
+ //determine if two graphs of DataObjects are equal
+ System.out.println("DataObjects are equal: " + EqualityHelper.INSTANCE.equal(company, newDataObject));
+
+ //determine if two DataObjects have the same values for their datatype properties
+ System.out.println("DataObjects have same values for their datatype properties : " + EqualityHelper.INSTANCE.equalShallow(company, newDataObject));
+
+ //print out xml representation
+ System.out.println();
+ System.out.println("Original company DataObject:");
+ System.out.println(XMLHelper.INSTANCE.save(company, SdoSampleConstants.COMPANY_NAMESPACE, "company"));
+
+ System.out.println();
+ System.out.println("Deserialized company DataObject:");
+ System.out.println(XMLHelper.INSTANCE.save(newDataObject, SdoSampleConstants.COMPANY_NAMESPACE, "company"));
+
+ } catch (Exception e) {
+ System.out.println("Sorry there was an error encountered " + e.toString());
+ e.printStackTrace();
+ }
+
+ System.out.println("GoodBye");
+
+ }
+}
diff --git a/branches/sdo-java-M2/sdo/sample/src/main/java/org/apache/tuscany/samples/sdo/specExampleSection/UsingTypeAndPropertyWithDataObjects.java b/branches/sdo-java-M2/sdo/sample/src/main/java/org/apache/tuscany/samples/sdo/specExampleSection/UsingTypeAndPropertyWithDataObjects.java
new file mode 100644
index 0000000000..f93b716fb5
--- /dev/null
+++ b/branches/sdo-java-M2/sdo/sample/src/main/java/org/apache/tuscany/samples/sdo/specExampleSection/UsingTypeAndPropertyWithDataObjects.java
@@ -0,0 +1,190 @@
+/**
+ *
+ * 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.samples.sdo.specExampleSection;
+
+import commonj.sdo.helper.XMLHelper;
+import commonj.sdo.helper.XSDHelper;
+import commonj.sdo.DataObject;
+import commonj.sdo.Type;
+import commonj.sdo.Property;
+
+import java.util.List;
+
+import org.apache.tuscany.samples.sdo.SdoSampleConstants;
+
+/**
+ * Demonstrates the use of Type and Property to display and the META-DATA for and access Properties of a DataObject.
+ * <br>
+ * The following sample is from the <a href="http://incubator.apache.org/tuscany"
+ * target="_blank"> Apache Tuscany</a> project. It was written to help users
+ * understand and experiement with SDO. It is based upon example code contained
+ * within, and is meant for use with, and reference to the <a
+ * href="http://www.osoa.org/download/attachments/791/SDO_Specification_Java_V2.01.pdf?version=1"
+ * target="_bank">SDO Specification</a>. In general this sample attempts to use the
+ * code and comments contained within the specification, exceptions to this are noted
+ * in comments.<br>
+ * <br>
+ * The following sample is based upon the 'Using Type and Property with DataObjects' example from the Examples section of the SDO specification. <br>
+ * <br>
+ * The Type interface provides access to the metadata for DataObjects. The methods on Type and Property provide information that describes the
+ * properties of a DataObject. To obtain the Type for a DataObject use the getType() method. This example prints out the contents of a DataObject,
+ * each property has it's meta-data displayed, accessed dynamically using Type and Property.<br>
+ * <br><br>
+ * <b>Usage:</b> <br>
+ * This sample can easily be run from within Eclipse as a Java Application if tuscany or
+ * the sample-sdo project is imported into Eclipse as an existing project.
+ * <br><br>
+ * If executing as a standalone application please do the following:
+ * <br>
+ * <UL>
+ * <LI>Include the following jar files on your classpath :
+ * <UL>
+ * <LI>SDO API and Tuscany Implementation
+ * <UL>
+ * <LI>sdo-api-{version}.jar - SDO API
+ * <LI>tuscany-sdo-impl-{version}.jar - Tuscany SDO implementation
+ * </UL>
+ * </LI>
+ * <LI>EMF dependencies.
+ * <UL>
+ * <LI>emf-common-{version}.jar - some common framework utility and base classes
+ * <LI>emf-ecore-{version}.jar - the EMF core runtime implementation classes (the Ecore metamodel)
+ * <LI>emf-ecore-change-{version}.jar - the EMF change recorder and framework
+ * <LI>emf-ecore-xmi-{version}.jar - EMF's default XML (and XMI) serializer and loader
+ * <LI>xsd-{version}.jar - the XML Schema model
+ * </UL>
+ * </LI>
+ * </UL>
+ *
+ * These jar files can be obtained from directly from Tuscany and EMF projects or from <a
+ * href="http://wiki.apache.org/ws-data/attachments/Tuscany(2f)TuscanyJava(2f)SDO_Java_Overview/attachments/SDO%20Execution%20Dependencies"
+ * target="_bank">SDO Execution Dependancies </a> </LI>
+ * <LI>Execute: <br>
+ * java org.apache.tuscany.samples.sdo.specExampleSection.UsingTypeAndPropertyWithDataObjects</LI>
+ * </UL>
+ *
+ * @author Robbie Minshall
+ * @see org.apache.tuscany.samples.sdo.specCodeSnippets.PrintPropertiesOfDataObject
+ */
+
+public class UsingTypeAndPropertyWithDataObjects {
+
+ /**
+ * Execute this method in order to run the sample.
+ *
+ * @param args
+ */
+ public static void main(String[] args) {
+ System.out.println("***************************************");
+ System.out.println("SDO Sample UsingTypeAndPropertyWithDataObjects");
+ System.out.println("***************************************");
+ System.out.println("Demonstrates the use of Type and Property to display and the META-DATA for and access Properties of a DataObject.");
+ System.out.println("***************************************");
+
+ try {
+ // define Types using XSDHelper and predefined xsd file
+ System.out.println("Defining company Types using XSD");
+ XSDHelper.INSTANCE.define(ClassLoader.getSystemResourceAsStream(SdoSampleConstants.COMPANY_XSD), null);
+ System.out.println("Type definition completed");
+
+ // create company DataObject using XMLHelper which is an example of a XML DAS
+ System.out.println("Creating company DataObject");
+ DataObject company = XMLHelper.INSTANCE.load(ClassLoader.getSystemResourceAsStream(SdoSampleConstants.COMPANY_DATAOBJECT_XML))
+ .getRootObject();
+
+ printDataObject(company, 0);
+
+ System.out.println("Defining purchase order types");
+ XSDHelper.INSTANCE.define(ClassLoader.getSystemResourceAsStream(SdoSampleConstants.PO_XSD_RESOURCE), null);
+ System.out.println("Type definition completed");
+
+ // create company DataObject using XMLHelper which is an example of a XML DAS
+ System.out.println("Creating purchase order DataObject");
+ DataObject po = XMLHelper.INSTANCE.load(ClassLoader.getSystemResourceAsStream(SdoSampleConstants.PO_XML_RESOURCE))
+ .getRootObject();
+
+ printDataObject(po, 0);
+
+
+
+
+
+
+
+ } catch (Exception e) {
+ System.out.println("Sorry there was an error encountered " + e.toString());
+ e.printStackTrace();
+ }
+ System.out.println("GoodBye");
+ }
+
+ /**
+ * Prints out the contents of a DataObject, each property has it's meta-data displayed, accessed dynamically using Type and Property.
+ * @param dataObject. DataObject to be printed.
+ * @param indent. For formatting
+ */
+ public static void printDataObject(DataObject dataObject, int indent) {
+ // For each Property
+ List properties = dataObject.getInstanceProperties();
+ for (int p = 0, size = properties.size(); p < size; p++) {
+ if (dataObject.isSet(p)) {
+ Property property = (Property) properties.get(p);
+ if (property.isMany()) {
+ // For many-valued properties, process a list of values
+ List values = dataObject.getList(p);
+ for (int v = 0, count = values.size(); v < count; v++) {
+ printValue(values.get(v), property, indent);
+ }
+ } else {
+ // For single-valued properties, print out the value
+ printValue(dataObject.get(p), property, indent);
+ }
+ }
+ }
+ }
+
+ /**
+ * Prints the value of a property
+ * @param value. Value of Property to be printed
+ * @param property. Property to be printed
+ * @param indent. For formatting
+ */
+ public static void printValue(Object value, Property property, int indent) {
+ // Get the name of the property
+ String propertyName = property.getName();
+ // Construct a string for the proper indentation
+ String margin = "";
+ for (int i = 0; i < indent; i++)
+ margin += "\t";
+ if (value != null && property.isContainment()) {
+ // For containment properties, display the value
+ // with printDataObject
+ Type type = property.getType();
+ String typeName = type.getName();
+ System.out.println(margin + propertyName + " (" + typeName + "):");
+ printDataObject((DataObject) value, indent + 1);
+ } else {
+ // For non-containment properties, just print the value
+ System.out.println(margin + propertyName + ": " + value);
+ }
+ }
+
+}
diff --git a/branches/sdo-java-M2/sdo/sample/src/main/java/org/apache/tuscany/samples/sdo/specExampleSection/package.html b/branches/sdo-java-M2/sdo/sample/src/main/java/org/apache/tuscany/samples/sdo/specExampleSection/package.html
new file mode 100644
index 0000000000..0aa2a9bcb2
--- /dev/null
+++ b/branches/sdo-java-M2/sdo/sample/src/main/java/org/apache/tuscany/samples/sdo/specExampleSection/package.html
@@ -0,0 +1,40 @@
+<html>
+<!--
+ *
+ * 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.
+ * -->
+<head>
+ <title>package information</title>
+</head>
+<body>
+
+Provides samples from the Examples section of the SDO Specification. In general these samples attempt to use the
+code and comments contained within the specification; exceptions to this are noted in comments.
+ The user is encouraged to modify and execute these code examples.
+
+
+
+<h2>Related Documentation</h2>
+For overviews, tutorials, examples, guides, and tool documentation, please see the
+<a href="http://incubator.apache.org/tuscany/java_sdo_overview.html"> SDO Java Overview
+</a>
+section of the Tuscany website.
+
+
+</body>
+</html>
diff --git a/branches/sdo-java-M2/sdo/sample/src/main/resources/company.xsd b/branches/sdo-java-M2/sdo/sample/src/main/resources/company.xsd
new file mode 100644
index 0000000000..887dddbc61
--- /dev/null
+++ b/branches/sdo-java-M2/sdo/sample/src/main/resources/company.xsd
@@ -0,0 +1,27 @@
+<?xml version="1.0" encoding="UTF-8"?>
+
+ <xsd:schema xmlns:company="company.xsd"
+ xmlns:xsd="http://www.w3.org/2001/XMLSchema"
+ targetNamespace="company.xsd">
+ <xsd:element name="company" type="company:CompanyType"/>
+ <xsd:complexType name="CompanyType">
+ <xsd:sequence>
+ <xsd:element name="departments" type="company:DepartmentType" maxOccurs="unbounded"/>
+ </xsd:sequence>
+ <xsd:attribute name="name" type="xsd:string"/>
+ <xsd:attribute name="employeeOfTheMonth" type="xsd:string"/>
+ </xsd:complexType>
+ <xsd:complexType name="DepartmentType">
+ <xsd:sequence>
+ <xsd:element name="employees" type="company:EmployeeType" maxOccurs="unbounded"/>
+ </xsd:sequence>
+ <xsd:attribute name="name" type="xsd:string"/>
+ <xsd:attribute name="location" type="xsd:string"/>
+ <xsd:attribute name="number" type="xsd:int"/>
+ </xsd:complexType>
+ <xsd:complexType name="EmployeeType">
+ <xsd:attribute name="name" type="xsd:string"/>
+ <xsd:attribute name="SN" type="xsd:ID"/>
+ <xsd:attribute name="manager" type="xsd:boolean"/>
+ </xsd:complexType>
+ </xsd:schema>
diff --git a/branches/sdo-java-M2/sdo/sample/src/main/resources/companyCompleteDataGraph.xml b/branches/sdo-java-M2/sdo/sample/src/main/resources/companyCompleteDataGraph.xml
new file mode 100644
index 0000000000..49aed2b0c5
--- /dev/null
+++ b/branches/sdo-java-M2/sdo/sample/src/main/resources/companyCompleteDataGraph.xml
@@ -0,0 +1,50 @@
+<sdo:datagraph xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+xmlns:xsd="http://www.w3.org/2001/XMLSchema"
+xmlns:company="company.xsd"
+xmlns:sdo="commonj.sdo">
+
+ <xsd>
+ <xsd:schema targetNamespace="company.xsd">
+ <xsd:element name="company" type="company:CompanyType" minOccurs="0" maxOccurs="unbounded"/>
+ <xsd:complexType name="CompanyType">
+ <xsd:sequence>
+ <xsd:element name="departments" type="company:DepartmentType" maxOccurs="unbounded"/>
+ </xsd:sequence>
+ <xsd:attribute name="name" type="xsd:string"/>
+ <xsd:attribute name="employeeOfTheMonth" type="xsd:string"/>
+ </xsd:complexType>
+ <xsd:complexType name="DepartmentType">
+ <xsd:sequence>
+ <xsd:element name="employees" type="company:EmployeeType" maxOccurs="unbounded"/>
+ </xsd:sequence>
+ <xsd:attribute name="name" type="xsd:string"/>
+ <xsd:attribute name="location" type="xsd:string"/>
+ <xsd:attribute name="number" type="xsd:int"/>
+ </xsd:complexType>
+ <xsd:complexType name="EmployeeType">
+ <xsd:attribute name="name" type="xsd:string"/>
+ <xsd:attribute name="SN" type="xsd:ID"/>
+ <xsd:attribute name="manager" type="xsd:boolean"/>
+ </xsd:complexType>
+ </xsd:schema>
+ </xsd>
+
+ <changeSummary create="E0004" delete="E0002">
+ <company sdo:ref="#/company" name="ACME"
+ employeeOfTheMonth="E0002"/>
+ <departments sdo:ref="#/company/departments[1]">
+ <employees sdo:ref="E0001"/>
+ <employees name="Mary Smith" SN="E0002" manager="true"/>
+ <employees sdo:ref="E0003"/>
+ </departments>
+ </changeSummary>
+
+ <company:company name="MegaCorp" employeeOfTheMonth="E0004">
+ <departments name="Advanced Technologies" location="NY" number="123">
+ <employees name="John Jones" SN="E0001"/>
+ <employees name="Jane Doe" SN="E0003"/>
+ <employees name="Al Smith" SN="E0004" manager="true"/>
+ </departments>
+ </company:company>
+
+</sdo:datagraph>
diff --git a/branches/sdo-java-M2/sdo/sample/src/main/resources/companyDataGraph.xml b/branches/sdo-java-M2/sdo/sample/src/main/resources/companyDataGraph.xml
new file mode 100644
index 0000000000..e16284ddc6
--- /dev/null
+++ b/branches/sdo-java-M2/sdo/sample/src/main/resources/companyDataGraph.xml
@@ -0,0 +1,12 @@
+<?xml version="1.0" encoding="ASCII"?>
+<sdo:datagraph xmlns:company="company.xsd"
+ xmlns:sdo="commonj.sdo">
+ <company:company name="ACME" employeeOfTheMonth="E0002">
+ <departments name="Advanced Technologies" location="NY" number="123">
+ <employees name="John Jones" SN="E0001"/>
+ <employees name="Mary Smith" SN="E0002" manager="true"/>
+ <employees name="Jane Doe" SN="E0003"/>
+ </departments>
+ </company:company>
+</sdo:datagraph>
+
diff --git a/branches/sdo-java-M2/sdo/sample/src/main/resources/companyDataGraphGenerated.xml b/branches/sdo-java-M2/sdo/sample/src/main/resources/companyDataGraphGenerated.xml
new file mode 100644
index 0000000000..7cdadf9378
--- /dev/null
+++ b/branches/sdo-java-M2/sdo/sample/src/main/resources/companyDataGraphGenerated.xml
@@ -0,0 +1,11 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<sdo:datagraph xmlns:company="company.xsd" xmlns:sdo="commonj.sdo">
+ <company:CompanyType employeeOfTheMonth="E0002"
+ name="ACME">
+ <departments location="NY" name="Advanced Technologies" number="123">
+ <employees name="John Jones" SN="E0001"/>
+ <employees name="Jane Doe" SN="E0003"/>
+ <employees manager="true" name="Al Smith" SN="E0004"/>
+ </departments>
+ </company:CompanyType>
+</sdo:datagraph>
diff --git a/branches/sdo-java-M2/sdo/sample/src/main/resources/companyGenerated.xml b/branches/sdo-java-M2/sdo/sample/src/main/resources/companyGenerated.xml
new file mode 100644
index 0000000000..10e0aa6739
--- /dev/null
+++ b/branches/sdo-java-M2/sdo/sample/src/main/resources/companyGenerated.xml
@@ -0,0 +1,9 @@
+<?xml version="1.0" encoding="ASCII"?>
+<company:company xmlns:company="company.xsd" employeeOfTheMonth="E0001"
+ name="ACME">
+ <departments location="NY" name="Advanced Technologies" number="123">
+ <employees name="John Jones" SN="E0001"/>
+ <employees name="Jane Doe" SN="E0003"/>
+ <employees manager="true" name="A Varone" SN="E0004"/>
+ </departments>
+</company:company> \ No newline at end of file
diff --git a/branches/sdo-java-M2/sdo/sample/src/main/resources/doc-files/cmdPrompt.GIF b/branches/sdo-java-M2/sdo/sample/src/main/resources/doc-files/cmdPrompt.GIF
new file mode 100644
index 0000000000..ad2fbbf46f
--- /dev/null
+++ b/branches/sdo-java-M2/sdo/sample/src/main/resources/doc-files/cmdPrompt.GIF
Binary files differ
diff --git a/branches/sdo-java-M2/sdo/sample/src/main/resources/letter.xml b/branches/sdo-java-M2/sdo/sample/src/main/resources/letter.xml
new file mode 100644
index 0000000000..a436d24b5e
--- /dev/null
+++ b/branches/sdo-java-M2/sdo/sample/src/main/resources/letter.xml
@@ -0,0 +1,2 @@
+<?xml version="1.0" encoding="ASCII"?>
+<letter:letters xmlns:letter="letter.xsd"><date>August 1, 2003</date>Mutual of Omaha Wild Kingdom, USA Dear<firstName>Casy</firstName><lastName>Crocodile</lastName>Please buy more shark repellent. Your premium is past due.</letter:letters> \ No newline at end of file
diff --git a/branches/sdo-java-M2/sdo/sample/src/main/resources/letter.xsd b/branches/sdo-java-M2/sdo/sample/src/main/resources/letter.xsd
new file mode 100644
index 0000000000..25fb6eb5f8
--- /dev/null
+++ b/branches/sdo-java-M2/sdo/sample/src/main/resources/letter.xsd
@@ -0,0 +1,14 @@
+<?xml version="1.0" encoding="UTF-8"?>
+
+<xsd:schema xmlns:letter="letter.xsd" targetNamespace="letter.xsd" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
+
+ <xsd:element name="letters" type="letter:FormLetter"/>
+ <xsd:complexType name="FormLetter" mixed="true">
+ <xsd:sequence>
+ <xsd:element name="date" minOccurs="0" type="xsd:string"/>
+ <xsd:element name="firstName" minOccurs="0" type="xsd:string"/>
+ <xsd:element name="lastName" minOccurs="0" type="xsd:string"/>
+ </xsd:sequence>
+ </xsd:complexType>
+</xsd:schema>
+
diff --git a/branches/sdo-java-M2/sdo/sample/src/main/resources/po.xml b/branches/sdo-java-M2/sdo/sample/src/main/resources/po.xml
new file mode 100644
index 0000000000..7da98c1369
--- /dev/null
+++ b/branches/sdo-java-M2/sdo/sample/src/main/resources/po.xml
@@ -0,0 +1,38 @@
+<?xml version="1.0" encoding="ASCII"?>
+<PO:purchaseOrder xmlns:PO="http://www.example.com/PO" orderDate="1999-10-20">
+ <shipTo country="US">
+ <name>Robbie Minshall</name>
+ <street>123 Maple Street</street>
+ <city>Mill Valley</city>
+ <state>CA</state>
+ <zip>90952</zip>
+ </shipTo>
+ <billTo country="US">
+ <name>Robert Smith</name>
+ <street>8 Oak Avenue</street>
+ <city>Mill Valley</city>
+ <state>PA</state>
+ <zip>95819</zip>
+ </billTo>
+ <PO:comment>Hurry, my lawn is going wild!</PO:comment>
+ <items>
+ <item partNum="872-AA">
+ <productName>Lawnmower</productName>
+ <price>148.95</price>
+ <quantity>1</quantity>
+ <PO:comment>Confirm this is electric</PO:comment>
+ </item>
+ <item partNum="926-AA">
+ <productName>Baby Monitor</productName>
+ <price>39.98</price>
+ <quantity>1</quantity>
+ <shipDate>1999-05-21</shipDate>
+ </item>
+ <item partNum="876">
+ <productName>GrassSeed</productName>
+ <price>50</price>
+ <quantity>100</quantity>
+ <PO:comment>For Shade</PO:comment>
+ </item>
+ </items>
+</PO:purchaseOrder> \ No newline at end of file
diff --git a/branches/sdo-java-M2/sdo/sample/src/main/resources/po.xsd b/branches/sdo-java-M2/sdo/sample/src/main/resources/po.xsd
new file mode 100644
index 0000000000..bde118b6ea
--- /dev/null
+++ b/branches/sdo-java-M2/sdo/sample/src/main/resources/po.xsd
@@ -0,0 +1,62 @@
+<xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema"
+ xmlns="http://www.example.com/PO" targetNamespace="http://www.example.com/PO">
+
+ <xsd:element name="purchaseOrder" type="PurchaseOrderType"/>
+ <xsd:element name="comment" type="xsd:string"/>
+
+ <xsd:complexType name="PurchaseOrderType">
+ <xsd:sequence>
+ <xsd:element name="shipTo" type="USAddress"/>
+ <xsd:element name="billTo" type="USAddress"/>
+ <xsd:element ref="comment" minOccurs="0"/>
+ <xsd:element name="items" type="Items"/>
+
+ </xsd:sequence>
+ <xsd:attribute name="orderDate" type="xsd:date"/>
+ </xsd:complexType>
+
+ <xsd:complexType name="USAddress">
+ <xsd:sequence>
+ <xsd:element name="name" type="xsd:string"/>
+
+ <xsd:element name="street" type="xsd:string"/>
+ <xsd:element name="city" type="xsd:string"/>
+ <xsd:element name="state" type="xsd:string"/>
+ <xsd:element name="zip" type="xsd:decimal"/>
+ </xsd:sequence>
+ <xsd:attribute name="country" type="xsd:NMTOKEN" fixed="US"/>
+
+ </xsd:complexType>
+
+ <xsd:complexType name="Items">
+ <xsd:sequence>
+ <xsd:element name="item" minOccurs="0" maxOccurs="unbounded">
+ <xsd:complexType>
+ <xsd:sequence>
+
+ <xsd:element name="productName" type="xsd:string"/>
+ <xsd:element name="price" type="xsd:decimal"/>
+ <xsd:element name="quantity">
+ <xsd:simpleType>
+ <xsd:restriction base="xsd:positiveInteger">
+ <xsd:maxExclusive value="100"/>
+ </xsd:restriction>
+
+ </xsd:simpleType>
+ </xsd:element>
+ <xsd:element ref="comment" minOccurs="0"/>
+ <xsd:element name="shipDate" type="xsd:date" minOccurs="0"/>
+ </xsd:sequence>
+
+ <xsd:attribute name="partNum" type="SKU" use="required"/>
+ </xsd:complexType>
+ </xsd:element>
+ </xsd:sequence>
+ </xsd:complexType>
+ <xsd:simpleType name="SKU">
+
+ <xsd:restriction base="xsd:string">
+ <xsd:pattern value="\d{3}-[A-Z]{2}"/>
+ </xsd:restriction>
+ </xsd:simpleType>
+ </xsd:schema> \ No newline at end of file
diff --git a/branches/sdo-java-M2/sdo/sdo.xml b/branches/sdo-java-M2/sdo/sdo.xml
new file mode 100644
index 0000000000..8d77cf0a30
--- /dev/null
+++ b/branches/sdo-java-M2/sdo/sdo.xml
@@ -0,0 +1,62 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+ * Copyright (c) 2005-2006 The Apache Software Foundation or its licensors, as applicable.
+ *
+ * Licensed 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.
+ -->
+<assembly>
+ <id>bin</id>
+ <includeBaseDirectory>false</includeBaseDirectory>
+ <formats>
+ <format>zip</format>
+ <format>tar.gz</format>
+ </formats>
+
+ <fileSets>
+ <!-- include legal and other files -->
+ <fileSet>
+ <includes>
+ <include>LICENSE.txt</include>
+ <include>NOTICE.txt</include>
+ <include>STATUS.txt</include>
+ </includes>
+ </fileSet>
+ <fileSet>
+ <directory>distribution</directory>
+ <outputDirectory>/</outputDirectory>
+ </fileSet>
+ <fileSet>
+ <directory>target/javadoc/api</directory>
+ <outputDirectory>javadoc/api</outputDirectory>
+ </fileSet>
+ <fileSet>
+ <directory>target/site/apidocs</directory>
+ <outputDirectory>javadoc/impl</outputDirectory>
+ </fileSet>
+ </fileSets>
+
+ <moduleSets>
+ <moduleSet>
+ <includes>
+ <include>org.apache.tuscany.sdo:tuscany-sdo-impl</include>
+ <include>org.apache.tuscany.sdo:tuscany-sdo-tools</include>
+ </includes>
+ <binaries>
+ <outputDirectory>lib</outputDirectory>
+ <unpack>false</unpack>
+ <includeDependencies>true</includeDependencies>
+ </binaries>
+ </moduleSet>
+ </moduleSets>
+</assembly>
+
diff --git a/branches/sdo-java-M2/sdo/tools/pom.xml b/branches/sdo-java-M2/sdo/tools/pom.xml
new file mode 100644
index 0000000000..4c0467928d
--- /dev/null
+++ b/branches/sdo-java-M2/sdo/tools/pom.xml
@@ -0,0 +1,84 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+-->
+<project>
+ <parent>
+ <groupId>org.apache.tuscany.sdo</groupId>
+ <artifactId>tuscany-sdo</artifactId>
+ <version>1.0-incubator-M2</version>
+ </parent>
+ <modelVersion>4.0.0</modelVersion>
+ <artifactId>tuscany-sdo-tools</artifactId>
+ <name>Tuscany SDO Tools</name>
+ <description>SDO Tools.</description>
+
+ <dependencies>
+ <dependency>
+ <groupId>org.apache.tuscany.sdo</groupId>
+ <artifactId>tuscany-sdo-impl</artifactId>
+ <version>${pom.version}</version>
+ <scope>compile</scope>
+ </dependency>
+
+ <dependency>
+ <groupId>org.eclipse.emf</groupId>
+ <artifactId>codegen</artifactId>
+ <version>${emfVersion}</version>
+ <scope>compile</scope>
+ </dependency>
+
+ <dependency>
+ <groupId>org.eclipse.emf</groupId>
+ <artifactId>codegen-ecore</artifactId>
+ <version>${emfVersion}</version>
+ <scope>compile</scope>
+ </dependency>
+
+ <dependency>
+ <groupId>junit</groupId>
+ <artifactId>junit</artifactId>
+ </dependency>
+ </dependencies>
+
+
+ <build>
+ <plugins>
+ <plugin>
+ <groupId>org.apache.maven.plugins</groupId>
+ <artifactId>maven-javadoc-plugin</artifactId>
+ <configuration>
+ <!-- <overview>${basedir}/src/main/java/org/apache/tuscany/sdo/overview.html</overview> -->
+ <version>2.0</version>
+ </configuration>
+ <!-- <executions>
+ <execution>
+ <id>package</id>
+ <phase>package</phase>
+ <goals>
+ <goal>jar</goal>
+ </goals>
+ </execution>
+ </executions> -->
+ </plugin>
+
+ </plugins>
+ </build>
+
+
+</project>
diff --git a/branches/sdo-java-M2/sdo/tools/readme.htm b/branches/sdo-java-M2/sdo/tools/readme.htm
new file mode 100644
index 0000000000..693d14baa5
--- /dev/null
+++ b/branches/sdo-java-M2/sdo/tools/readme.htm
@@ -0,0 +1,44 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
+<html>
+<head>
+ <!--
+ 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.
+ -->
+
+<meta content="text/html; charset=iso-8859-1" http-equiv="Content-Type">
+<meta content="text/css" http-equiv="Content-Style-Type"><title>Tuscany SDO Tools</title>
+
+<style type="text/css" media="all">
+@import url("../../css/maven-base.css");
+@import url("../../css/maven-theme.css");
+@import url("../../css/site.css");
+</style>
+<link rel="stylesheet" href="./css/print.css" type="text/css" media="print"></head>
+
+<body>
+<h2>Tuscany SDO Tools</h2>
+<h3>Building SDO Tools</h3>
+
+To build the Tuscany SDO Java Generator tools, perform the following steps
+<ul>
+<li> Ensure that the environment variable JAVA_HOME is set to point to an installation of Java 5 (Java 1.5.0_6 works) </li>
+<li> Run the command "mvn" </li>
+</ul>
+<b>Note:</b> only the Interface2JavaGenerator class requires Java 5. You can build the XSD2JavaGenerator tool using a Java 1.4 JDK by removing the Interface2JavaGenerator.java file before running the "mvn" command.
+
+</body></html>
diff --git a/branches/sdo-java-M2/sdo/tools/src/main/java/org/apache/tuscany/sdo/generate/Interface2JavaGenerator.java b/branches/sdo-java-M2/sdo/tools/src/main/java/org/apache/tuscany/sdo/generate/Interface2JavaGenerator.java
new file mode 100644
index 0000000000..837a3504f2
--- /dev/null
+++ b/branches/sdo-java-M2/sdo/tools/src/main/java/org/apache/tuscany/sdo/generate/Interface2JavaGenerator.java
@@ -0,0 +1,245 @@
+/**
+ *
+ * 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.generate;
+
+import java.lang.reflect.Method;
+import java.lang.reflect.ParameterizedType;
+import java.lang.reflect.Type;
+import java.util.ArrayList;
+import java.util.HashMap;
+import java.util.Iterator;
+import java.util.List;
+import java.util.Map;
+
+import org.apache.tuscany.sdo.util.DataObjectUtil;
+import org.eclipse.emf.ecore.EAttribute;
+import org.eclipse.emf.ecore.EClass;
+import org.eclipse.emf.ecore.EDataType;
+import org.eclipse.emf.ecore.EPackage;
+import org.eclipse.emf.ecore.EReference;
+import org.eclipse.emf.ecore.EcoreFactory;
+import org.eclipse.emf.ecore.impl.EPackageRegistryImpl;
+
+import commonj.sdo.helper.TypeHelper;
+
+public class Interface2JavaGenerator extends JavaGenerator
+{
+ /**
+ * Generate static SDOs from Java interfaces
+ *
+ * Usage arguments: see JavaGenerator
+ *
+ * [ -targetDirectory <target-root-directory> ]
+ * [ -javaPackage <java-package-name> ]
+ * [ -namespace <xsd-namespace> ]
+ * [ other options ... ]
+ * interface-names
+ *
+ * Options:
+ *
+ * -namespace
+ * Set the namespaceURI of the generated SDO Types to the specified value.
+ *
+ * NOTE: see the base class JavaGenerator for other options.
+ *
+ * Example:
+ *
+ * generate somepackage.InterfaceA somepackage.InterfaceB
+ *
+ */
+ public static void main(String args[])
+ {
+ try
+ {
+ JavaGenerator generator = new Interface2JavaGenerator();
+ generator.processArguments(args);
+ generator.run(args);
+ }
+ catch (IllegalArgumentException e)
+ {
+ printUsage();
+ }
+ }
+
+ protected String namespace = null;
+
+ protected int handleArgument(String args[], int index)
+ {
+ if (args[index].equalsIgnoreCase("-namespace"))
+ {
+ namespace = args[++index];
+ }
+ else
+ {
+ return super.handleArgument(args, index);
+ }
+
+ return index + 1;
+ }
+
+ protected void run(String args[])
+ {
+ List javaInterfaces=new ArrayList();
+
+ for (int index = inputIndex; index < args.length; ++index)
+ {
+ javaInterfaces.add(args[index]);
+ }
+
+ ClassLoader classLoader=JavaGenerator.class.getClassLoader();
+ generateFromJavaInterfaces(classLoader, javaInterfaces, namespace, targetDirectory, javaPackage, prefix, genOptions);
+ }
+
+ public static void generateFromJavaInterfaces(ClassLoader classLoader, List javaInterfaces, String packageURI, String targetDirectory, String javaPackage, String prefix, int genOptions)
+ {
+ try
+ {
+ // Initialize the SDO runtime
+ DataObjectUtil.initRuntime();
+ EPackage.Registry packageRegistry = new EPackageRegistryImpl(EPackage.Registry.INSTANCE);
+
+ // Create an EPackage for the generated SDO
+ if (packageURI == null)
+ packageURI = "http://" + javaPackage;
+ EPackage implEPackage = EcoreFactory.eINSTANCE.createEPackage();
+ implEPackage.setNsURI(packageURI);
+ String shortName = shortName(packageURI);
+ implEPackage.setName(shortName);
+ implEPackage.setNsPrefix(shortName.toLowerCase());
+ packageRegistry.put(packageURI, implEPackage);
+
+ // Create EClasses for all the given Java interfaces
+ Map eClasses = new HashMap();
+ for (Iterator iter = javaInterfaces.iterator(); iter.hasNext();)
+ {
+ String interfaceName = (String)iter.next();
+ Class instanceClass = Class.forName(interfaceName, true, classLoader);
+
+ EClass implEClass = EcoreFactory.eINSTANCE.createEClass();
+ String className = shortName(instanceClass.getName());
+ implEClass.setName(className);
+ implEClass.setInstanceClass(instanceClass);
+
+ eClasses.put(instanceClass, implEClass);
+ implEPackage.getEClassifiers().add(implEClass);
+ }
+
+ // Populate the EClasses with EAttributes and EReferences for their properties
+ for (Iterator iter = implEPackage.getEClassifiers().iterator(); iter.hasNext();)
+ {
+ EClass implEClass = (EClass)iter.next();
+ Class instanceClass = implEClass.getInstanceClass();
+ Method[] methods = instanceClass.getMethods();
+ for (int m = 0; m < methods.length; m++)
+ {
+ Method method = methods[m];
+ String propertyName = null;
+ if (method.getName().startsWith("get"))
+ propertyName = method.getName().substring(3);
+ else if (method.getName().startsWith("is"))
+ propertyName = method.getName().substring(2);
+
+ if (propertyName != null)
+ {
+ if (propertyName.length() > 1)
+ propertyName = propertyName.substring(0, 1).toLowerCase() + propertyName.substring(1);
+
+ Class propertyClass = method.getReturnType();
+ EClass propertyEClass = (EClass)eClasses.get(propertyClass);
+
+ if (propertyEClass != null)
+ {
+ // The property is another SDO, create an EReference to represent the property
+ EReference reference = EcoreFactory.eINSTANCE.createEReference();
+ reference.setName(propertyName);
+ reference.setContainment(true);
+ reference.setEType(propertyEClass);
+ implEClass.getEStructuralFeatures().add(reference);
+
+ }
+ else
+ {
+ // The property is a List<T> and T is an SDO, created a 0..many EReference to represent the property
+ if (propertyClass == List.class)
+ {
+ Type genericType = method.getGenericReturnType();
+ if (genericType instanceof ParameterizedType)
+ {
+ ParameterizedType parameterizedType = (ParameterizedType)genericType;
+ Type[] targs = parameterizedType.getActualTypeArguments();
+ if (targs.length != 0 && eClasses.containsKey(targs[0]))
+ {
+ propertyEClass = (EClass)eClasses.get(targs[0]);
+ if (propertyEClass != null)
+ {
+ EReference reference = EcoreFactory.eINSTANCE.createEReference();
+ reference.setName(propertyName);
+ reference.setContainment(true);
+ reference.setEType(propertyEClass);
+ reference.setUpperBound(-1);
+ implEClass.getEStructuralFeatures().add(reference);
+ }
+ }
+ }
+ continue;
+ }
+
+ // The property is a regular Java type / not an SDO, create an EAttribute to represent it
+ EAttribute attribute = EcoreFactory.eINSTANCE.createEAttribute();
+ attribute.setName(propertyName);
+ EDataType dataType = (EDataType)TypeHelper.INSTANCE.getType(propertyClass);
+ attribute.setEType(dataType);
+ implEClass.getEStructuralFeatures().add(attribute);
+ }
+ }
+ }
+ }
+
+ generatePackages(packageRegistry.values(), packageURI, shortName, targetDirectory, javaPackage, prefix, genOptions);
+ }
+ catch (ClassNotFoundException e)
+ {
+ e.printStackTrace();
+ }
+ }
+
+ protected static void printUsage()
+ {
+ System.out.println("Usage arguments:");
+ System.out.println(" [ -targetDirectory <target-root-directory> ]");
+ System.out.println(" [ -javaPackage <java-package-name> ]");
+ System.out.println(" [ -namespace <xsd-namespace> ]");
+ System.out.println(" [ -prefix <prefix-string> ]");
+ System.out.println(" [ -sparsePattern | -storePattern ]");
+ System.out.println(" [ -noInterfaces ]");
+ System.out.println(" [ -noContainment ]");
+ System.out.println(" [ -noNotification ]");
+ System.out.println(" [ -arrayAccessors ]");
+ System.out.println(" [ -generateLoader ]");
+ System.out.println(" [ -noUnsettable ]");
+ System.out.println(" [ -noEMF ]");
+ System.out.println(" interface-names");
+ System.out.println("");
+ System.out.println("For example:");
+ System.out.println("");
+ System.out.println(" generate somepackage.InterfaceA somepackage.InterfaceB");
+ }
+
+}
diff --git a/branches/sdo-java-M2/sdo/tools/src/main/java/org/apache/tuscany/sdo/generate/JavaGenerator.java b/branches/sdo-java-M2/sdo/tools/src/main/java/org/apache/tuscany/sdo/generate/JavaGenerator.java
new file mode 100644
index 0000000000..80030bf3d0
--- /dev/null
+++ b/branches/sdo-java-M2/sdo/tools/src/main/java/org/apache/tuscany/sdo/generate/JavaGenerator.java
@@ -0,0 +1,636 @@
+/**
+ *
+ * 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.generate;
+
+
+import java.io.File;
+import java.io.FileInputStream;
+import java.io.IOException;
+import java.io.InputStream;
+import java.util.ArrayList;
+import java.util.Collection;
+import java.util.Collections;
+import java.util.Iterator;
+import java.util.List;
+import java.util.StringTokenizer;
+
+import org.apache.tuscany.sdo.generate.adapter.SDOGenModelGeneratorAdapterFactory;
+import org.apache.tuscany.sdo.helper.XSDHelperImpl;
+import org.apache.tuscany.sdo.impl.SDOPackageImpl;
+import org.apache.tuscany.sdo.model.impl.ModelPackageImpl;
+import org.apache.tuscany.sdo.util.DataObjectUtil;
+import org.eclipse.emf.codegen.ecore.generator.Generator;
+import org.eclipse.emf.codegen.ecore.generator.GeneratorAdapterFactory;
+import org.eclipse.emf.codegen.ecore.genmodel.GenClass;
+import org.eclipse.emf.codegen.ecore.genmodel.GenDelegationKind;
+import org.eclipse.emf.codegen.ecore.genmodel.GenModel;
+import org.eclipse.emf.codegen.ecore.genmodel.GenModelFactory;
+import org.eclipse.emf.codegen.ecore.genmodel.GenModelPackage;
+import org.eclipse.emf.codegen.ecore.genmodel.GenPackage;
+import org.eclipse.emf.codegen.ecore.genmodel.GenResourceKind;
+import org.eclipse.emf.codegen.ecore.genmodel.generator.GenBaseGeneratorAdapter;
+import org.eclipse.emf.codegen.ecore.genmodel.generator.GenModelGeneratorAdapterFactory;
+import org.eclipse.emf.codegen.util.CodeGenUtil;
+import org.eclipse.emf.common.util.BasicMonitor;
+import org.eclipse.emf.common.util.Diagnostic;
+import org.eclipse.emf.common.util.URI;
+import org.eclipse.emf.ecore.EObject;
+import org.eclipse.emf.ecore.EPackage;
+import org.eclipse.emf.ecore.impl.EPackageRegistryImpl;
+import org.eclipse.emf.ecore.resource.Resource;
+import org.eclipse.emf.ecore.resource.ResourceSet;
+import org.eclipse.emf.ecore.util.BasicExtendedMetaData;
+import org.eclipse.emf.ecore.util.Diagnostician;
+import org.eclipse.emf.ecore.util.ExtendedMetaData;
+import org.eclipse.xsd.XSDSchema;
+
+import commonj.sdo.helper.XSDHelper;
+
+/**
+ * Abstract base class for static SDO code generators. See XSD2JavaGenerator and Interface2JavaGenerator for
+ * concrete generator commands.
+ *
+ * Supports the following command line options:
+ *
+ * [ -targetDirectory <target-root-directory> ]
+ * [ -javaPackage <java-package-name> ]
+ * [ -prefix <prefix-string> ]
+ * [ -sparsePattern | -storePattern ]
+ * [ -noInterfaces ]
+ * [ -noContainment ]
+ * [ -noNotification ]
+ * [ -arrayAccessors ]
+ * [ -generateLoader ]
+ * [ -noUnsettable ]
+ * [ -noEMF ]
+ * [ -interfaceDataObject ]
+ *
+ * Basic options:
+ *
+ * -targetDirectory
+ * Generates the Java source code in the specified directory. By default, the code is generated
+ * in the same directory as the input xsd or wsdl file.
+ * -javaPackage
+ * Overrides the Java package for the generated classes. By default the package name is derived
+ * from the targetNamespace of the XML schema being generated. For example, if the targetNamespace is
+ * "http://www.example.com/simple", the default package will be "com.example.simple".
+ * -prefix
+ * Specifies the prefix string to use for naming the generated factory. For example "-prefix Foo" will
+ * result in a factory interface with the name "FooFactory".
+ * -sparsePattern
+ * For SDO metamodels that have classes with many properties of which only a few are typically set at
+ * runtime, this option can be used to produce a space-optimized implementation (at the expense of speed).
+ * -storePattern
+ * This option can be used to generate static classes that work with a Store-based DataObject
+ * implementation. It changes the generator pattern to generate accessors which delegate to the
+ * reflective methods (as opposed to the other way around) and changes the DataObject base class
+ * to org.apache.tuscany.sdo.impl.StoreDataObjectImpl. Note that this option generates classes that
+ * require a Store implementation to be provided before they can be run.
+ * -noEMF
+ * This option is used to generate static classes that have no references to EMF classes. This
+ * feature is currently being implemented and is in a preliminary state.
+ * -interfaceDataObject
+ * This option is used to generate static interfaces that extend commonj.sdo.DataObject
+ *
+ * The following options can be used to increase performance, but with some loss of SDO functionality:
+ *
+ * -noInterfaces
+ * By default, each DataObject generates both a Java interface and a corresponding implementation
+ * class. If an SDO metamodel does not use multiple inheritance (which is always the case for
+ * XML Schema derived models), then this option can be used to eliminate the interface and to generate
+ * only an implementation class.
+ *
+ * Following are planned but not supported yet:
+ *
+ * -noNotification
+ * This option eliminates all change notification overhead in the generated classes. Changes to
+ * DataObjects generated using this option cannot be recorded, and consequently the classes cannot
+ * be used with an SDO ChangeSummary or DataGraph.
+ * -noContainment
+ * Turns off container management for containment properties. DataObject.getContainer() will always
+ * return null for data objects generated with this option, even if a containment reference is set.
+ * Setting a containment reference will also not automatically remove the target object from its
+ * previous container, if it had one, so it will need to be explicitly removed by the client. Use
+ * of this option is only recommended for scenarios where this kind of container movement/management
+ * is not necessary.
+ * -arrayAccessors
+ * Generates Java array getters/setters for multiplicity-many properties. With this option,
+ * the set of "standard" JavaBean array accessor methods (e.g., Foo[] getFoo(), Foo getFoo(int),
+ * int getFooLength(), setFoo(Foo[]), and void setFoo(int, Foo)) are generated. The normal
+ * List-returning accessor is renamed with the suffix "List" (e.g., List getFooList()). The array
+ * returned by the generated method is not a copy, but instead a pointer to the underlying storage
+ * array, so directly modifying it can have undesirable consequences and should be avoided.
+ * -generateLoader
+ * Generate a fast XML parser/loader for instances of the model. The details of this option are
+ * subject to change, but currently it generates two additional classes in a "util" package:
+ * <prefix>ResourceImpl and <prefix>ResourceFactoryImpl. To use the generated loader at runtime,
+ * you need to pass an option to the XMLHelper.load() method like this:
+ * Map options = new HashMap();
+ * options.put("GENERATED_LOADER", <prefix>ResourceFactoryImpl.class);
+ * XMLDocument doc = XMLHelper.INSTANCE.load(new FileInputStream("somefile.xml"), null, options);
+ * Note: this option currently only works for simple schemas without substitution groups or wildcards.
+ * -noUnsettable
+ * By default, some XML constructs result in SDO property implementations that maintain additional
+ * state information to record when the property has been set to the "default value", as opposed to
+ * being truly unset (see DataObject.isSet() and DataObject.unset()). The SDO specification allows an
+ * implementation to choose to provide this behavior or not. With this option, all generated properties
+ * will not record their unset state. The generated isSet() methods simply returns whether the current
+ * value is equal to the property's "default value".
+ *
+ */
+public abstract class JavaGenerator
+{
+ public static int OPTION_NO_INTERFACES=0x1;
+ public static int OPTION_SPARSE_PATTERN=0x2;
+ public static int OPTION_STORE_PATTERN=0x4;
+ public static int OPTION_NO_CONTAINMENT=0x8;
+ public static int OPTION_NO_NOTIFICATION=0x10;
+ public static int OPTION_ARRAY_ACCESSORS=0x20;
+ public static int OPTION_GENERATE_LOADER=0x40;
+ public static int OPTION_NO_UNSETTABLE=0x80;
+ //FIXME Temporary, I need this option for now to get Switch classes generated for the SCDL models
+ public static int OPTION_GENERATE_SWITCH=0x100;
+ public static int OPTION_NO_EMF=0x200;
+ public static int OPTION_INTERFACE_DO=0x400;
+
+ static
+ {
+ System.setProperty("EMF_NO_CONSTRAINTS", "true"); // never generate a validator class
+ }
+
+ /**
+ * @deprecated replaced by XSD2JavaGenerator
+ */
+ public static void main(String args[])
+ {
+ try
+ {
+ JavaGenerator generator = new XSD2JavaGenerator();
+ generator.processArguments(args);
+ generator.run(args);
+ }
+ catch (IllegalArgumentException e)
+ {
+ printUsage();
+ }
+ }
+
+ protected void processArguments(String args[])
+ {
+ if (args.length == 0)
+ {
+ throw new IllegalArgumentException();
+ }
+
+ int index = 0;
+ while (args[index].startsWith("-"))
+ {
+ int newIndex = handleArgument(args, index);
+ if (newIndex == index)
+ {
+ throw new IllegalArgumentException();
+ }
+ index = newIndex;
+ if (index == args.length)
+ {
+ throw new IllegalArgumentException();
+ }
+ }
+
+ inputIndex = index;
+ }
+
+ protected String targetDirectory = null;
+ protected String javaPackage = null;
+ protected String prefix = null;
+ protected int genOptions = 0;
+ protected String xsdFileName;
+ protected int inputIndex;
+
+ protected int handleArgument(String args[], int index)
+ {
+ if (args[index].equalsIgnoreCase("-targetDirectory"))
+ {
+ targetDirectory = args[++index];
+ }
+ else if (args[index].equalsIgnoreCase("-javaPackage"))
+ {
+ javaPackage = args[++index];
+ }
+ else if (args[index].equalsIgnoreCase("-prefix"))
+ {
+ prefix = args[++index];
+ }
+ else if (args[index].equalsIgnoreCase("-noInterfaces"))
+ {
+ genOptions |= OPTION_NO_INTERFACES;
+ }
+ else if (args[index].equalsIgnoreCase("-sparsePattern"))
+ {
+ genOptions |= OPTION_SPARSE_PATTERN;
+ }
+ else if (args[index].equalsIgnoreCase("-storePattern"))
+ {
+ genOptions |= OPTION_STORE_PATTERN;
+ }
+ else if (args[index].equalsIgnoreCase("-noContainment"))
+ {
+ genOptions |= OPTION_NO_CONTAINMENT;
+ }
+ else if (args[index].equalsIgnoreCase("-noNotification"))
+ {
+ genOptions |= OPTION_NO_NOTIFICATION;
+ }
+ else if (args[index].equalsIgnoreCase("-arrayAccessors"))
+ {
+ genOptions |= OPTION_ARRAY_ACCESSORS;
+ }
+ else if (args[index].equalsIgnoreCase("-generateLoader"))
+ {
+ genOptions |= OPTION_GENERATE_LOADER;
+ }
+ else if (args[index].equalsIgnoreCase("-noUnsettable"))
+ {
+ genOptions |= OPTION_NO_UNSETTABLE;
+ }
+ else if (args[index].equalsIgnoreCase("-noEMF"))
+ {
+ genOptions |= OPTION_NO_EMF;
+ }
+ else if (args[index].equalsIgnoreCase("-interfaceDataObject"))
+ {
+ genOptions |= OPTION_INTERFACE_DO;
+ }
+ //else if (...)
+ else
+ {
+ return index;
+ }
+
+ return index + 1;
+ }
+
+ protected abstract void run(String args[]);
+
+ /**
+ * @deprecated moved to XSD2JavaGenerator
+ */
+ public static void generateFromXMLSchema(String xsdFileName, String targetDirectory, String javaPackage, String prefix, int genOptions)
+ {
+ DataObjectUtil.initRuntime();
+ EPackage.Registry packageRegistry = new EPackageRegistryImpl(EPackage.Registry.INSTANCE);
+ ExtendedMetaData extendedMetaData = new BasicExtendedMetaData(packageRegistry);
+ XSDHelper xsdHelper = new XSDHelperImpl(extendedMetaData);
+
+ try
+ {
+ File inputFile = new File(xsdFileName).getAbsoluteFile();
+ InputStream inputStream = new FileInputStream(inputFile);
+ xsdHelper.define(inputStream, inputFile.toURI().toString());
+
+ if (targetDirectory == null)
+ {
+ targetDirectory = new File(xsdFileName).getCanonicalFile().getParent();
+ }
+ else
+ {
+ targetDirectory = new File(targetDirectory).getCanonicalPath();
+ }
+
+ if (!packageRegistry.values().isEmpty())
+ {
+ String packageURI = getSchemaNamespace(xsdFileName);
+ generatePackages(packageRegistry.values(), packageURI, null, targetDirectory, javaPackage, prefix, genOptions);
+ }
+
+ /*
+ for (Iterator iter = packageRegistry.values().iterator(); iter.hasNext();)
+ {
+ EPackage ePackage = (EPackage)iter.next();
+ String basePackage = extractBasePackageName(ePackage, javaPackage);
+ if (prefix == null)
+ {
+ prefix = CodeGenUtil.capName(ePackage.getName());
+ }
+ generateFromEPackage(ePackage, targetDirectory, basePackage, prefix, genOptions);
+ }
+ */
+ }
+ catch (IOException e)
+ {
+ e.printStackTrace();
+ }
+ }
+
+ public static void generatePackages(Collection packageList, String packageURI, String shortName, String targetDirectory, String javaPackage, String prefix, int genOptions)
+ {
+ ResourceSet resourceSet = DataObjectUtil.createResourceSet();
+ List usedGenPackages = new ArrayList();
+ GenModel genModel = null;
+ for (Iterator iter = packageList.iterator(); iter.hasNext();)
+ {
+ EPackage currentEPackage = (EPackage)iter.next();
+ String currentBasePackage = extractBasePackageName(currentEPackage, javaPackage);
+ String currentPrefix = prefix == null ? CodeGenUtil.capName(shortName != null ? shortName : currentEPackage.getName()) : prefix;
+ GenPackage currentGenPackage = createGenPackage(currentEPackage, currentBasePackage, currentPrefix, genOptions, resourceSet);
+ if (currentEPackage.getNsURI().equals(packageURI))
+ {
+ genModel = currentGenPackage.getGenModel();
+ }
+ else
+ {
+ usedGenPackages.add(currentGenPackage);
+ }
+ }
+
+ if (genModel == null) return; // nothing to generate
+
+ usedGenPackages.add(createGenPackage(SDOPackageImpl.eINSTANCE, "org.apache.tuscany", "SDO", 0, resourceSet));
+ usedGenPackages.add(createGenPackage(ModelPackageImpl.eINSTANCE, "org.apache.tuscany.sdo", "Model", 0, resourceSet));
+ genModel.getUsedGenPackages().addAll(usedGenPackages);
+
+ // Invoke the SDO JavaGenerator to generate the SDO classes
+ try
+ {
+ generateFromGenModel(genModel, new File(targetDirectory).getCanonicalPath(), genOptions);
+ }
+ catch (IOException e)
+ {
+ e.printStackTrace();
+ }
+ }
+
+ /**
+ * @deprecated
+ */
+ public static String getSchemaNamespace(String xsdFileName)
+ {
+ ResourceSet resourceSet = DataObjectUtil.createResourceSet();
+ File inputFile = new File(xsdFileName).getAbsoluteFile();
+ Resource model = resourceSet.getResource(URI.createURI(inputFile.toURI().toString()), true);
+ XSDSchema schema = (XSDSchema)model.getContents().get(0);
+ return schema.getTargetNamespace();
+ }
+
+ public static GenPackage createGenPackage(EPackage ePackage, String basePackage, String prefix, int genOptions, ResourceSet resourceSet)
+ {
+ GenModel genModel = ecore2GenModel(ePackage, basePackage, prefix, genOptions);
+
+ URI ecoreURI = URI.createURI("file:///" + ePackage.getName() + ".ecore");
+ URI genModelURI = ecoreURI.trimFileExtension().appendFileExtension("genmodel");
+
+ Resource ecoreResource = resourceSet.createResource(ecoreURI);
+ ecoreResource.getContents().add(ePackage);
+
+ Resource genModelResource = resourceSet.createResource(genModelURI);
+ genModelResource.getContents().add(genModel);
+
+ return (GenPackage)genModel.getGenPackages().get(0);
+ }
+
+ public static void generateFromEPackage(EPackage ePackage, String targetDirectory, String basePackage, String prefix, int genOptions)
+ {
+ GenModel genModel = ecore2GenModel(ePackage, basePackage, prefix, genOptions);
+
+ ResourceSet resourceSet = DataObjectUtil.createResourceSet();
+ URI ecoreURI = URI.createURI("file:///temp.ecore");
+ URI genModelURI = ecoreURI.trimFileExtension().appendFileExtension("genmodel");
+
+ Resource ecoreResource = resourceSet.createResource(ecoreURI);
+ ecoreResource.getContents().add(ePackage);
+
+ Resource genModelResource = resourceSet.createResource(genModelURI);
+ genModelResource.getContents().add(genModel);
+
+ generateFromGenModel(genModel, targetDirectory, genOptions);
+ }
+
+ public static void generateFromGenModel(GenModel genModel, String targetDirectory, int genOptions)
+ {
+ Resource resource = genModel.eResource();
+
+ if (targetDirectory != null)
+ {
+ resource.getResourceSet().getURIConverter().getURIMap().put(
+ URI.createURI("platform:/resource/TargetProject/"),
+ URI.createFileURI(targetDirectory + "/"));
+ genModel.setModelDirectory("/TargetProject");
+ }
+
+ //genModel.gen(new BasicMonitor.Printing(System.out));
+ GeneratorAdapterFactory.Descriptor.Registry.INSTANCE.addDescriptor
+ (GenModelPackage.eNS_URI, GenModelGeneratorAdapterFactory.DESCRIPTOR);
+
+ Generator generator = new Generator();
+
+ if ((genOptions & OPTION_NO_EMF) != 0)
+ {
+ generator.getAdapterFactoryDescriptorRegistry().addDescriptor
+ (GenModelPackage.eNS_URI, SDOGenModelGeneratorAdapterFactory.DESCRIPTOR);
+ }
+
+ generator.setInput(genModel);
+ generator.generate(genModel, GenBaseGeneratorAdapter.MODEL_PROJECT_TYPE, new BasicMonitor.Printing(System.out));
+
+
+ for (Iterator j = resource.getContents().iterator(); j.hasNext();)
+ {
+ EObject eObject = (EObject)j.next();
+ Diagnostic diagnostic = Diagnostician.INSTANCE.validate(eObject);
+ if (diagnostic.getSeverity() != Diagnostic.OK)
+ {
+ printDiagnostic(diagnostic, "");
+ }
+ }
+ }
+
+ public static GenModel ecore2GenModel(EPackage ePackage, String basePackage, String prefix, int genOptions)
+ {
+ GenModel genModel = GenModelFactory.eINSTANCE.createGenModel();
+ genModel.initialize(Collections.singleton(ePackage));
+
+ genModel.setRootExtendsInterface("");
+ genModel.setRootImplementsInterface("commonj.sdo.DataObject");
+ genModel.setRootExtendsClass("org.apache.tuscany.sdo.impl.DataObjectImpl");
+ genModel.setFeatureMapWrapperInterface("commonj.sdo.Sequence");
+ genModel.setFeatureMapWrapperInternalInterface("org.apache.tuscany.sdo.util.BasicSequence");
+ genModel.setFeatureMapWrapperClass("org.apache.tuscany.sdo.util.BasicSequence");
+ genModel.setSuppressEMFTypes(true);
+ genModel.setSuppressEMFMetaData(true);
+ genModel.setSuppressEMFModelTags(true);
+ genModel.setCanGenerate(true);
+ //FIXME workaround java.lang.NoClassDefFoundError: org/eclipse/jdt/core/jdom/IDOMNode with 02162006 build
+ genModel.setFacadeHelperClass("Hack");
+ genModel.setForceOverwrite(true);
+
+ if ((genOptions & OPTION_NO_INTERFACES) != 0)
+ {
+ genModel.setSuppressInterfaces(true);
+ }
+
+ if ((genOptions & OPTION_SPARSE_PATTERN) != 0)
+ {
+ genModel.setFeatureDelegation(GenDelegationKind.VIRTUAL_LITERAL);
+ }
+ else if ((genOptions & OPTION_STORE_PATTERN) != 0)
+ {
+ genModel.setFeatureDelegation(GenDelegationKind.REFLECTIVE_LITERAL);
+ genModel.setRootExtendsClass("org.apache.tuscany.sdo.impl.StoreDataObjectImpl");
+ }
+
+ if ((genOptions & OPTION_NO_CONTAINMENT) != 0)
+ {
+ genModel.setSuppressContainment(true);
+ }
+
+ if ((genOptions & OPTION_NO_NOTIFICATION) != 0)
+ {
+ genModel.setSuppressNotification(true);
+ }
+
+ if ((genOptions & OPTION_ARRAY_ACCESSORS) != 0)
+ {
+ genModel.setArrayAccessors(true);
+ }
+
+ if ((genOptions & OPTION_NO_UNSETTABLE) != 0)
+ {
+ genModel.setSuppressUnsettable(true);
+ }
+
+ if ((genOptions & OPTION_NO_EMF) != 0)
+ {
+ genModel.setRootExtendsClass("org.apache.tuscany.sdo.impl.DataObjectBase");
+ }
+
+ if ((genOptions & OPTION_INTERFACE_DO) != 0)
+ {
+ genModel.setRootExtendsInterface("commonj.sdo.DataObject");
+ }
+ else
+ {
+ genModel.setRootExtendsInterface("java.io.Serializable");
+ }
+
+ GenPackage genPackage = (GenPackage)genModel.getGenPackages().get(0);
+
+ if (basePackage != null)
+ {
+ genPackage.setBasePackage(basePackage);
+ }
+ if (prefix != null)
+ {
+ genPackage.setPrefix(prefix);
+ }
+
+ //FIXME Temporary, I need this option for now to get Switch classes generated for the SCDL models
+ if ((genOptions & OPTION_GENERATE_SWITCH) == 0)
+ {
+ genPackage.setAdapterFactory(false);
+ }
+
+ if ((genOptions & OPTION_GENERATE_LOADER) != 0)
+ {
+ //FIXME workaround compile error with 02162006 build, generated code references non-existent EcoreResourceImpl class
+ genPackage.setResource(GenResourceKind.XML_LITERAL);
+ //genPackage.setDataTypeConverters(true);
+ }
+ else
+ {
+ genPackage.setResource(GenResourceKind.NONE_LITERAL);
+ for (Iterator iter = genPackage.getGenClasses().iterator(); iter.hasNext();)
+ {
+ GenClass genClass = (GenClass)iter.next();
+ if ("DocumentRoot".equals(genClass.getName()))
+ {
+ genClass.setDynamic(true); // Don't generate DocumentRoot class
+ break;
+ }
+ }
+ }
+
+ return genModel;
+ }
+
+ public static String extractBasePackageName(EPackage ePackage, String javaPackage)
+ {
+ String qualifiedName = javaPackage != null ? javaPackage : ePackage.getName();
+ String name = /*CodeGenUtil.*/shortName(qualifiedName);
+ String baseName = qualifiedName.substring(0, qualifiedName.length() - name.length());
+ if (javaPackage != null || !name.equals(qualifiedName))
+ {
+ ePackage.setName(name);
+ }
+ return baseName != null ? /*CodeGenUtil.*/safeQualifiedName(baseName) : null;
+ }
+
+ public static String shortName(String qualifiedName)
+ {
+ int index = qualifiedName.lastIndexOf(".");
+ return index != -1 ? qualifiedName.substring(index + 1) : qualifiedName;
+ }
+
+ public static String safeQualifiedName(String qualifiedName)
+ {
+ StringBuffer safeQualifiedName = new StringBuffer();
+ for (StringTokenizer stringTokenizer = new StringTokenizer(qualifiedName, "."); stringTokenizer.hasMoreTokens();)
+ {
+ String name = stringTokenizer.nextToken();
+ safeQualifiedName.append(CodeGenUtil.safeName(name));
+ if (stringTokenizer.hasMoreTokens())
+ {
+ safeQualifiedName.append('.');
+ }
+ }
+ return safeQualifiedName.toString();
+ }
+
+ protected static void printDiagnostic(Diagnostic diagnostic, String indent)
+ {
+ System.out.print(indent);
+ System.out.println(diagnostic.getMessage());
+ for (Iterator i = diagnostic.getChildren().iterator(); i.hasNext();)
+ {
+ printDiagnostic((Diagnostic)i.next(), indent + " ");
+ }
+ }
+
+ protected static void printUsage()
+ {
+ System.out.println("Usage arguments:");
+ System.out.println(" [ -targetDirectory <target-root-directory> ]");
+ System.out.println(" [ -javaPackage <java-package-name> ]");
+ System.out.println(" [ -prefix <prefix-string> ]");
+ System.out.println(" [ -sparsePattern | -storePattern ]");
+ System.out.println(" [ -noInterfaces ]");
+ System.out.println(" [ -noContainment ]");
+ System.out.println(" [ -noNotification ]");
+ System.out.println(" [ -arrayAccessors ]");
+ System.out.println(" [ -generateLoader ]");
+ System.out.println(" [ -noUnsettable ]");
+ System.out.println(" [ -noEMF ]");
+ System.out.println(" <xsd-file> | <wsdl-file>");
+ System.out.println("");
+ System.out.println("For example:");
+ System.out.println("");
+ System.out.println(" generate somedir/somefile.xsd");
+ }
+
+}
diff --git a/branches/sdo-java-M2/sdo/tools/src/main/java/org/apache/tuscany/sdo/generate/XSD2JavaGenerator.java b/branches/sdo-java-M2/sdo/tools/src/main/java/org/apache/tuscany/sdo/generate/XSD2JavaGenerator.java
new file mode 100644
index 0000000000..78af8efc6e
--- /dev/null
+++ b/branches/sdo-java-M2/sdo/tools/src/main/java/org/apache/tuscany/sdo/generate/XSD2JavaGenerator.java
@@ -0,0 +1,183 @@
+/**
+ *
+ * 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.generate;
+
+import java.io.File;
+import java.io.FileInputStream;
+import java.io.IOException;
+import java.io.InputStream;
+
+import org.apache.tuscany.sdo.helper.XSDHelperImpl;
+import org.apache.tuscany.sdo.util.DataObjectUtil;
+import org.eclipse.emf.common.util.URI;
+import org.eclipse.emf.ecore.EPackage;
+import org.eclipse.emf.ecore.impl.EPackageRegistryImpl;
+import org.eclipse.emf.ecore.resource.Resource;
+import org.eclipse.emf.ecore.resource.ResourceSet;
+import org.eclipse.emf.ecore.util.BasicExtendedMetaData;
+import org.eclipse.emf.ecore.util.ExtendedMetaData;
+import org.eclipse.xsd.XSDSchema;
+
+import commonj.sdo.helper.XSDHelper;
+
+public class XSD2JavaGenerator extends JavaGenerator
+{
+ /**
+ * Generate static SDOs from XML Schema
+ *
+ * Usage arguments: see JavaGenerator
+ *
+ * [ -targetDirectory <target-root-directory> ]
+ * [ -javaPackage <java-package-name> ]
+ * [ -schemaNamespace <namespace-uri> ]
+ * [ other options ... ]
+ * <xsd-file> | <wsdl-file>
+ *
+ * Options:
+ *
+ * -schemaNamespace
+ * Generate classes for XSD types in the specified targetNamespace. By default, types in the
+ * targetNamespace of the first schema in the specified xsd or wsdl file are generated.
+ *
+ * NOTE: see the base class JavaGenerator for other options.
+ *
+ * Example:
+ *
+ * generate somedir/somefile.xsd
+ *
+ * See base class JavaGenerator for details and the other options.
+ *
+ */
+ public static void main(String args[])
+ {
+ try
+ {
+ XSD2JavaGenerator generator = new XSD2JavaGenerator();
+ generator.processArguments(args);
+ generator.run(args);
+ }
+ catch (IllegalArgumentException e)
+ {
+ printUsage();
+ }
+ }
+
+ protected String schemaNamespace = null;
+
+ protected int handleArgument(String args[], int index)
+ {
+ if (args[index].equalsIgnoreCase("-schemaNamespace"))
+ {
+ schemaNamespace = args[++index];
+ }
+ else
+ {
+ return super.handleArgument(args, index);
+ }
+
+ return index + 1;
+ }
+
+ protected void run(String args[])
+ {
+ String xsdFileName = args[inputIndex];
+ generateFromXMLSchema(xsdFileName, schemaNamespace, targetDirectory, javaPackage, prefix, genOptions);
+ }
+
+ public static void generateFromXMLSchema(String xsdFileName, String namespace, String targetDirectory, String javaPackage, String prefix, int genOptions)
+ {
+ DataObjectUtil.initRuntime();
+ EPackage.Registry packageRegistry = new EPackageRegistryImpl(EPackage.Registry.INSTANCE);
+ ExtendedMetaData extendedMetaData = new BasicExtendedMetaData(packageRegistry);
+ XSDHelper xsdHelper = new XSDHelperImpl(extendedMetaData);
+
+ try
+ {
+ File inputFile = new File(xsdFileName).getAbsoluteFile();
+ InputStream inputStream = new FileInputStream(inputFile);
+ xsdHelper.define(inputStream, inputFile.toURI().toString());
+
+ if (targetDirectory == null)
+ {
+ targetDirectory = new File(xsdFileName).getCanonicalFile().getParent();
+ }
+ else
+ {
+ targetDirectory = new File(targetDirectory).getCanonicalPath();
+ }
+
+ if (!packageRegistry.values().isEmpty())
+ {
+ String packageURI = namespace != null ? namespace : getSchemaNamespace(xsdFileName);
+ generatePackages(packageRegistry.values(), packageURI, null, targetDirectory, javaPackage, prefix, genOptions);
+ }
+
+ /*
+ for (Iterator iter = packageRegistry.values().iterator(); iter.hasNext();)
+ {
+ EPackage ePackage = (EPackage)iter.next();
+ String basePackage = extractBasePackageName(ePackage, javaPackage);
+ if (prefix == null)
+ {
+ prefix = CodeGenUtil.capName(ePackage.getName());
+ }
+ generateFromEPackage(ePackage, targetDirectory, basePackage, prefix, genOptions);
+ }
+ */
+ }
+ catch (IOException e)
+ {
+ e.printStackTrace();
+ }
+ }
+
+ public static String getSchemaNamespace(String xsdFileName)
+ {
+ ResourceSet resourceSet = DataObjectUtil.createResourceSet();
+ File inputFile = new File(xsdFileName).getAbsoluteFile();
+ Resource model = resourceSet.getResource(URI.createURI(inputFile.toURI().toString()), true);
+ XSDSchema schema = (XSDSchema)model.getContents().get(0);
+ return schema.getTargetNamespace();
+ }
+
+ protected static void printUsage()
+ {
+ System.out.println("Usage arguments:");
+ System.out.println(" [ -targetDirectory <target-root-directory> ]");
+ System.out.println(" [ -javaPackage <java-package-name> ]");
+ System.out.println(" [ -schemaNamespace <namespace-uri> ]");
+ System.out.println(" [ -prefix <prefix-string> ]");
+ System.out.println(" [ -sparsePattern | -storePattern ]");
+ System.out.println(" [ -noInterfaces ]");
+ System.out.println(" [ -noContainment ]");
+ System.out.println(" [ -noNotification ]");
+ System.out.println(" [ -arrayAccessors ]");
+ System.out.println(" [ -generateLoader ]");
+ System.out.println(" [ -noUnsettable ]");
+ System.out.println(" [ -noEMF ]");
+ System.out.println(" [ -interfaceDataObject ]");
+ System.out.println(" <xsd-file> | <wsdl-file>");
+ System.out.println("");
+ System.out.println("For example:");
+ System.out.println("");
+ System.out.println(" generate somedir/somefile.xsd");
+ }
+
+}
diff --git a/branches/sdo-java-M2/sdo/tools/src/main/java/org/apache/tuscany/sdo/generate/adapter/SDOGenClassGeneratorAdapter.java b/branches/sdo-java-M2/sdo/tools/src/main/java/org/apache/tuscany/sdo/generate/adapter/SDOGenClassGeneratorAdapter.java
new file mode 100644
index 0000000000..80f8fe7755
--- /dev/null
+++ b/branches/sdo-java-M2/sdo/tools/src/main/java/org/apache/tuscany/sdo/generate/adapter/SDOGenClassGeneratorAdapter.java
@@ -0,0 +1,46 @@
+/**
+ *
+ * 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.generate.adapter;
+
+import org.eclipse.emf.codegen.ecore.generator.GeneratorAdapterFactory;
+import org.eclipse.emf.codegen.ecore.genmodel.generator.GenClassGeneratorAdapter;
+
+public class SDOGenClassGeneratorAdapter extends GenClassGeneratorAdapter {
+
+ public SDOGenClassGeneratorAdapter(GeneratorAdapterFactory generatorAdapterFactory)
+ {
+ super(generatorAdapterFactory);
+ }
+
+ private static JETEmitterDescriptor[] jetEmitterDescriptors;
+
+ protected JETEmitterDescriptor[] getJETEmitterDescriptors()
+ {
+ if (jetEmitterDescriptors == null)
+ {
+ JETEmitterDescriptor[] base = super.getJETEmitterDescriptors();
+ jetEmitterDescriptors = new JETEmitterDescriptor[base.length];
+ System.arraycopy(base, 0, jetEmitterDescriptors, 0, base.length);
+ jetEmitterDescriptors[CLASS_ID] = new JETEmitterDescriptor("model/SDOClass.javajet", "org.apache.tuscany.sdo.generate.templates.model.SDOClass");
+ }
+ return jetEmitterDescriptors;
+ }
+
+}
diff --git a/branches/sdo-java-M2/sdo/tools/src/main/java/org/apache/tuscany/sdo/generate/adapter/SDOGenModelGeneratorAdapterFactory.java b/branches/sdo-java-M2/sdo/tools/src/main/java/org/apache/tuscany/sdo/generate/adapter/SDOGenModelGeneratorAdapterFactory.java
new file mode 100644
index 0000000000..eabf90c310
--- /dev/null
+++ b/branches/sdo-java-M2/sdo/tools/src/main/java/org/apache/tuscany/sdo/generate/adapter/SDOGenModelGeneratorAdapterFactory.java
@@ -0,0 +1,54 @@
+/**
+ *
+ * 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.generate.adapter;
+
+import org.eclipse.emf.codegen.ecore.generator.GeneratorAdapterFactory;
+import org.eclipse.emf.codegen.ecore.genmodel.generator.GenModelGeneratorAdapterFactory;
+import org.eclipse.emf.common.notify.Adapter;
+
+public class SDOGenModelGeneratorAdapterFactory extends
+ GenModelGeneratorAdapterFactory {
+
+ public static final GeneratorAdapterFactory.Descriptor DESCRIPTOR = new GeneratorAdapterFactory.Descriptor()
+ {
+ public GeneratorAdapterFactory createAdapterFactory()
+ {
+ return new SDOGenModelGeneratorAdapterFactory();
+ }
+ };
+
+ public Adapter createGenClassAdapter()
+ {
+ if (genClassGeneratorAdapter == null)
+ {
+ genClassGeneratorAdapter = new SDOGenClassGeneratorAdapter(this);
+ }
+ return genClassGeneratorAdapter;
+ }
+
+ public Adapter createGenPackageAdapter()
+ {
+ if (genPackageGeneratorAdapter == null)
+ {
+ genPackageGeneratorAdapter = new SDOGenPackageGeneratorAdapter(this);
+ }
+ return genPackageGeneratorAdapter;
+ }
+}
diff --git a/branches/sdo-java-M2/sdo/tools/src/main/java/org/apache/tuscany/sdo/generate/adapter/SDOGenPackageGeneratorAdapter.java b/branches/sdo-java-M2/sdo/tools/src/main/java/org/apache/tuscany/sdo/generate/adapter/SDOGenPackageGeneratorAdapter.java
new file mode 100644
index 0000000000..4a187674ce
--- /dev/null
+++ b/branches/sdo-java-M2/sdo/tools/src/main/java/org/apache/tuscany/sdo/generate/adapter/SDOGenPackageGeneratorAdapter.java
@@ -0,0 +1,52 @@
+/**
+ *
+ * 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.generate.adapter;
+
+import org.eclipse.emf.codegen.ecore.generator.GeneratorAdapterFactory;
+import org.eclipse.emf.codegen.ecore.genmodel.GenPackage;
+import org.eclipse.emf.codegen.ecore.genmodel.generator.GenPackageGeneratorAdapter;
+import org.eclipse.emf.common.util.Monitor;
+
+public class SDOGenPackageGeneratorAdapter extends GenPackageGeneratorAdapter
+{
+ public SDOGenPackageGeneratorAdapter(GeneratorAdapterFactory generatorAdapterFactory)
+ {
+ super(generatorAdapterFactory);
+ }
+
+ private static JETEmitterDescriptor[] jetEmitterDescriptors;
+
+ protected JETEmitterDescriptor[] getJETEmitterDescriptors()
+ {
+ if (jetEmitterDescriptors == null)
+ {
+ JETEmitterDescriptor[] base = super.getJETEmitterDescriptors();
+ jetEmitterDescriptors = new JETEmitterDescriptor[base.length];
+ System.arraycopy(base, 0, jetEmitterDescriptors, 0, base.length);
+ jetEmitterDescriptors[FACTORY_CLASS_ID] = new JETEmitterDescriptor("model/SDOFactoryClass.javajet", "org.apache.tuscany.sdo.generate.templates.model.SDOFactoryClass");
+ }
+ return jetEmitterDescriptors;
+ }
+
+ protected void generatePackageClass(GenPackage genPackage, Monitor monitor)
+ {
+ // do nothing
+ }
+}
diff --git a/branches/sdo-java-M2/sdo/tools/src/main/java/org/apache/tuscany/sdo/generate/templates/model/SDOClass.java b/branches/sdo-java-M2/sdo/tools/src/main/java/org/apache/tuscany/sdo/generate/templates/model/SDOClass.java
new file mode 100644
index 0000000000..956157a3a8
--- /dev/null
+++ b/branches/sdo-java-M2/sdo/tools/src/main/java/org/apache/tuscany/sdo/generate/templates/model/SDOClass.java
@@ -0,0 +1,4142 @@
+/**
+ *
+ * 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.generate.templates.model;
+
+import org.eclipse.emf.codegen.util.*;
+import java.util.*;
+import org.eclipse.emf.codegen.ecore.genmodel.*;
+
+public class SDOClass
+{
+ protected static String nl;
+ public static synchronized SDOClass create(String lineSeparator)
+ {
+ nl = lineSeparator;
+ SDOClass result = new SDOClass();
+ nl = null;
+ return result;
+ }
+
+ protected final String NL = nl == null ? (System.getProperties().getProperty("line.separator")) : nl;
+ protected final String TEXT_1 = "";
+ protected final String TEXT_2 = "/**" + NL + " * <copyright>" + NL + " * </copyright>" + NL + " *" + NL + " * ";
+ protected final String TEXT_3 = "Id";
+ protected final String TEXT_4 = NL + " */";
+ protected final String TEXT_5 = NL + "package ";
+ protected final String TEXT_6 = ";";
+ protected final String TEXT_7 = NL + "package ";
+ protected final String TEXT_8 = ";";
+ protected final String TEXT_9 = NL;
+ protected final String TEXT_10 = NL;
+ protected final String TEXT_11 = NL + "/**" + NL + " * <!-- begin-user-doc -->" + NL + " * A representation of the model object '<em><b>";
+ protected final String TEXT_12 = "</b></em>'." + NL + " * <!-- end-user-doc -->";
+ protected final String TEXT_13 = NL + " *" + NL + " * <!-- begin-model-doc -->" + NL + " * ";
+ protected final String TEXT_14 = NL + " * <!-- end-model-doc -->";
+ protected final String TEXT_15 = NL + " *";
+ protected final String TEXT_16 = NL + " * <p>" + NL + " * The following features are supported:" + NL + " * <ul>";
+ protected final String TEXT_17 = NL + " * <li>{@link ";
+ protected final String TEXT_18 = "#";
+ protected final String TEXT_19 = " <em>";
+ protected final String TEXT_20 = "</em>}</li>";
+ protected final String TEXT_21 = NL + " * </ul>" + NL + " * </p>";
+ protected final String TEXT_22 = NL + " *";
+ protected final String TEXT_23 = NL + " * @see ";
+ protected final String TEXT_24 = "#get";
+ protected final String TEXT_25 = "()";
+ protected final String TEXT_26 = NL + " * @model ";
+ protected final String TEXT_27 = NL + " * ";
+ protected final String TEXT_28 = NL + " * @model";
+ protected final String TEXT_29 = NL + " * @extends ";
+ protected final String TEXT_30 = NL + " * @generated" + NL + " */";
+ protected final String TEXT_31 = NL + "/**" + NL + " * <!-- begin-user-doc -->" + NL + " * An implementation of the model object '<em><b>";
+ protected final String TEXT_32 = "</b></em>'." + NL + " * <!-- end-user-doc -->" + NL + " * <p>";
+ protected final String TEXT_33 = NL + " * The following features are implemented:" + NL + " * <ul>";
+ protected final String TEXT_34 = NL + " * <li>{@link ";
+ protected final String TEXT_35 = "#";
+ protected final String TEXT_36 = " <em>";
+ protected final String TEXT_37 = "</em>}</li>";
+ protected final String TEXT_38 = NL + " * </ul>";
+ protected final String TEXT_39 = NL + " * </p>" + NL + " *" + NL + " * @generated" + NL + " */";
+ protected final String TEXT_40 = NL + "public";
+ protected final String TEXT_41 = " abstract";
+ protected final String TEXT_42 = " class ";
+ protected final String TEXT_43 = NL + "public interface ";
+ protected final String TEXT_44 = NL + "{";
+ protected final String TEXT_45 = NL + "\t/**" + NL + "\t * <!-- begin-user-doc -->" + NL + "\t * <!-- end-user-doc -->" + NL + "\t * @generated" + NL + "\t */" + NL + "\t";
+ protected final String TEXT_46 = " copyright = \"";
+ protected final String TEXT_47 = "\";";
+ protected final String TEXT_48 = NL;
+ protected final String TEXT_49 = NL + "\t/**" + NL + "\t * <!-- begin-user-doc -->" + NL + "\t * <!-- end-user-doc -->" + NL + "\t * @generated" + NL + "\t */" + NL + "\tpublic static final ";
+ protected final String TEXT_50 = " mofDriverNumber = \"";
+ protected final String TEXT_51 = "\";";
+ protected final String TEXT_52 = NL;
+ protected final String TEXT_53 = NL + "\t/**" + NL + "\t * <!-- begin-user-doc -->" + NL + "\t * <!-- end-user-doc -->" + NL + "\t * @generated" + NL + "\t */" + NL + "\tprivate static final long serialVersionUID = 1L;" + NL;
+ protected final String TEXT_54 = NL + "\t/**" + NL + "\t * An array of objects representing the values of non-primitive features." + NL + "\t * <!-- begin-user-doc -->" + NL + "\t * <!-- end-user-doc -->" + NL + "\t * @generated" + NL + "\t */" + NL + "\tprotected Object[] ";
+ protected final String TEXT_55 = " = null;" + NL;
+ protected final String TEXT_56 = NL + "\t/**" + NL + "\t * A bit field representing the indices of non-primitive feature values." + NL + "\t * <!-- begin-user-doc -->" + NL + "\t * <!-- end-user-doc -->" + NL + "\t * @generated" + NL + "\t */" + NL + "\tprotected int ";
+ protected final String TEXT_57 = " = 0;" + NL;
+ protected final String TEXT_58 = NL + "\t/**" + NL + "\t * A set of bit flags representing the values of boolean attributes and whether unsettable features have been set." + NL + "\t * <!-- begin-user-doc -->" + NL + "\t * <!-- end-user-doc -->" + NL + "\t * @generated" + NL + "\t * @ordered" + NL + "\t */" + NL + "\tprotected int ";
+ protected final String TEXT_59 = " = 0;" + NL;
+ protected final String TEXT_60 = NL + "\t/**" + NL + "\t * The feature id for the '<em><b>";
+ protected final String TEXT_61 = "</b></em>' ";
+ protected final String TEXT_62 = "." + NL + "\t * <!-- begin-user-doc -->" + NL + "\t * <!-- end-user-doc -->" + NL + "\t * @generated" + NL + "\t * @ordered" + NL + "\t */";
+ protected final String TEXT_63 = "\t " + NL + "\tpublic final static int ";
+ protected final String TEXT_64 = " = ";
+ protected final String TEXT_65 = ";" + NL;
+ protected final String TEXT_66 = NL + "\t/**" + NL + "\t * This represents the number of properties for this type." + NL + "\t * <!-- begin-user-doc -->" + NL + "\t * <!-- end-user-doc -->" + NL + "\t * @generated" + NL + "\t * @ordered" + NL + "\t */" + NL + "\t";
+ protected final String TEXT_67 = NL + "\tpublic final static int SDO_PROPERTY_COUNT = ";
+ protected final String TEXT_68 = ";" + NL;
+ protected final String TEXT_69 = NL + "\t/**" + NL + "\t * The cached value of the '{@link #";
+ protected final String TEXT_70 = "() <em>";
+ protected final String TEXT_71 = "</em>}' ";
+ protected final String TEXT_72 = "." + NL + "\t * <!-- begin-user-doc -->" + NL + "\t * <!-- end-user-doc -->" + NL + "\t * @see #";
+ protected final String TEXT_73 = "()" + NL + "\t * @generated" + NL + "\t * @ordered" + NL + "\t */" + NL + "\t" + NL + "\tprotected ";
+ protected final String TEXT_74 = " ";
+ protected final String TEXT_75 = " = null;" + NL + "\t";
+ protected final String TEXT_76 = NL + "\t/**" + NL + "\t * The empty value for the '{@link #";
+ protected final String TEXT_77 = "() <em>";
+ protected final String TEXT_78 = "</em>}' array accessor." + NL + "\t * <!-- begin-user-doc -->" + NL + "\t * <!-- end-user-doc -->" + NL + "\t * @see #";
+ protected final String TEXT_79 = "()" + NL + "\t * @generated" + NL + "\t * @ordered" + NL + "\t */" + NL + "\tprotected static final ";
+ protected final String TEXT_80 = "[] ";
+ protected final String TEXT_81 = "_EEMPTY_ARRAY = new ";
+ protected final String TEXT_82 = " [0];" + NL;
+ protected final String TEXT_83 = NL + "\t/**" + NL + "\t * The default value of the '{@link #";
+ protected final String TEXT_84 = "() <em>";
+ protected final String TEXT_85 = "</em>}' ";
+ protected final String TEXT_86 = "." + NL + "\t * <!-- begin-user-doc -->" + NL + "\t * <!-- end-user-doc -->" + NL + "\t * @see #";
+ protected final String TEXT_87 = "()" + NL + "\t * @generated" + NL + "\t * @ordered" + NL + "\t */" + NL + "\tprotected static final ";
+ protected final String TEXT_88 = " ";
+ protected final String TEXT_89 = "_DEFAULT_ = ";
+ protected final String TEXT_90 = ";";
+ protected final String TEXT_91 = NL;
+ protected final String TEXT_92 = NL + "\t/**" + NL + "\t * An additional set of bit flags representing the values of boolean attributes and whether unsettable features have been set." + NL + "\t * <!-- begin-user-doc -->" + NL + "\t * <!-- end-user-doc -->" + NL + "\t * @generated" + NL + "\t * @ordered" + NL + "\t */" + NL + "\tprotected int ";
+ protected final String TEXT_93 = " = 0;" + NL;
+ protected final String TEXT_94 = NL + "\t/**" + NL + "\t * The flag representing the value of the '{@link #";
+ protected final String TEXT_95 = "() <em>";
+ protected final String TEXT_96 = "</em>}' ";
+ protected final String TEXT_97 = "." + NL + "\t * <!-- begin-user-doc -->" + NL + "\t * <!-- end-user-doc -->" + NL + "\t * @see #";
+ protected final String TEXT_98 = "()" + NL + "\t * @generated" + NL + "\t * @ordered" + NL + "\t */" + NL + "\tprotected static final int ";
+ protected final String TEXT_99 = "_EFLAG = 1 ";
+ protected final String TEXT_100 = ";" + NL;
+ protected final String TEXT_101 = NL + "\t/**" + NL + "\t * The cached value of the '{@link #";
+ protected final String TEXT_102 = "() <em>";
+ protected final String TEXT_103 = "</em>}' ";
+ protected final String TEXT_104 = "." + NL + "\t * <!-- begin-user-doc -->" + NL + "\t * <!-- end-user-doc -->" + NL + "\t * @see #";
+ protected final String TEXT_105 = "()" + NL + "\t * @generated" + NL + "\t * @ordered" + NL + "\t */" + NL + "\tprotected ";
+ protected final String TEXT_106 = " ";
+ protected final String TEXT_107 = " = ";
+ protected final String TEXT_108 = "_DEFAULT_;" + NL;
+ protected final String TEXT_109 = NL + "\t/**" + NL + "\t * An additional set of bit flags representing the values of boolean attributes and whether unsettable features have been set." + NL + "\t * <!-- begin-user-doc -->" + NL + "\t * <!-- end-user-doc -->" + NL + "\t * @generated" + NL + "\t * @ordered" + NL + "\t */" + NL + "\tprotected int ";
+ protected final String TEXT_110 = " = 0;" + NL;
+ protected final String TEXT_111 = NL + "\t/**" + NL + "\t * The flag representing whether the ";
+ protected final String TEXT_112 = " ";
+ protected final String TEXT_113 = " has been set." + NL + "\t * <!-- begin-user-doc -->" + NL + "\t * <!-- end-user-doc -->" + NL + "\t * @generated" + NL + "\t * @ordered" + NL + "\t */" + NL + "\tprotected static final int ";
+ protected final String TEXT_114 = "_ESETFLAG = 1 ";
+ protected final String TEXT_115 = ";" + NL;
+ protected final String TEXT_116 = NL + "\t/**" + NL + "\t * This is true if the ";
+ protected final String TEXT_117 = " ";
+ protected final String TEXT_118 = " has been set." + NL + "\t * <!-- begin-user-doc -->" + NL + "\t * <!-- end-user-doc -->" + NL + "\t * @generated" + NL + "\t * @ordered" + NL + "\t */" + NL + "\tprotected boolean ";
+ protected final String TEXT_119 = "_set_ = false;" + NL;
+ protected final String TEXT_120 = NL + "\t/**" + NL + "\t * <!-- begin-user-doc -->" + NL + "\t * <!-- end-user-doc -->" + NL + "\t * @generated" + NL + "\t */" + NL + "\tprotected ";
+ protected final String TEXT_121 = "()" + NL + "\t{" + NL + "\t\tsuper();";
+ protected final String TEXT_122 = NL + "\t\t";
+ protected final String TEXT_123 = " |= ";
+ protected final String TEXT_124 = "_EFLAG;";
+ protected final String TEXT_125 = NL + "\t}" + NL + "" + NL + "\t/**" + NL + "\t * <!-- begin-user-doc -->" + NL + "\t * <!-- end-user-doc -->" + NL + "\t * @generated" + NL + "\t */" + NL + "\tpublic ";
+ protected final String TEXT_126 = " getType()" + NL + "\t{" + NL + "\t\treturn ((";
+ protected final String TEXT_127 = ")";
+ protected final String TEXT_128 = ".INSTANCE).get";
+ protected final String TEXT_129 = "();" + NL + "\t}" + NL;
+ protected final String TEXT_130 = NL + "\t/**" + NL + "\t * <!-- begin-user-doc -->" + NL + "\t * <!-- end-user-doc -->" + NL + "\t * @generated" + NL + "\t */";
+ protected final String TEXT_131 = NL + "\t";
+ protected final String TEXT_132 = "[] ";
+ protected final String TEXT_133 = "();" + NL;
+ protected final String TEXT_134 = NL + "\tpublic ";
+ protected final String TEXT_135 = "[] ";
+ protected final String TEXT_136 = "()" + NL + "\t{";
+ protected final String TEXT_137 = NL + "\t\t";
+ protected final String TEXT_138 = " list = (";
+ protected final String TEXT_139 = ")";
+ protected final String TEXT_140 = "();" + NL + "\t\tif (list.isEmpty()) return ";
+ protected final String TEXT_141 = "_EEMPTY_ARRAY;";
+ protected final String TEXT_142 = NL + "\t\tif (";
+ protected final String TEXT_143 = " == null || ";
+ protected final String TEXT_144 = ".isEmpty()) return ";
+ protected final String TEXT_145 = "_EEMPTY_ARRAY;" + NL + "\t\t";
+ protected final String TEXT_146 = " list = (";
+ protected final String TEXT_147 = ")";
+ protected final String TEXT_148 = ";";
+ protected final String TEXT_149 = NL + "\t\tlist.shrink();" + NL + "\t\treturn (";
+ protected final String TEXT_150 = "[])list.data();" + NL + "\t}" + NL;
+ protected final String TEXT_151 = NL + "\t/**" + NL + "\t * <!-- begin-user-doc -->" + NL + "\t * <!-- end-user-doc -->" + NL + "\t * @generated" + NL + "\t */";
+ protected final String TEXT_152 = NL + "\t";
+ protected final String TEXT_153 = " get";
+ protected final String TEXT_154 = "(int index);";
+ protected final String TEXT_155 = NL + "\tpublic ";
+ protected final String TEXT_156 = " get";
+ protected final String TEXT_157 = "(int index)" + NL + "\t{" + NL + "\t\treturn (";
+ protected final String TEXT_158 = ")";
+ protected final String TEXT_159 = "().get(index);" + NL + "\t}";
+ protected final String TEXT_160 = NL + "\t/**" + NL + "\t * <!-- begin-user-doc -->" + NL + "\t * <!-- end-user-doc -->" + NL + "\t * @generated" + NL + "\t */";
+ protected final String TEXT_161 = NL + "\tint get";
+ protected final String TEXT_162 = "Length();" + NL;
+ protected final String TEXT_163 = NL + "\tpublic int get";
+ protected final String TEXT_164 = "Length()" + NL + "\t{";
+ protected final String TEXT_165 = NL + "\t\treturn ";
+ protected final String TEXT_166 = "().size();";
+ protected final String TEXT_167 = NL + "\t\treturn ";
+ protected final String TEXT_168 = " == null ? 0 : ";
+ protected final String TEXT_169 = ".size();";
+ protected final String TEXT_170 = NL + "\t}" + NL;
+ protected final String TEXT_171 = NL + "\t/**" + NL + "\t * <!-- begin-user-doc -->" + NL + "\t * <!-- end-user-doc -->" + NL + "\t * @generated" + NL + "\t */";
+ protected final String TEXT_172 = NL + "\tvoid set";
+ protected final String TEXT_173 = "(";
+ protected final String TEXT_174 = "[] new";
+ protected final String TEXT_175 = ");" + NL;
+ protected final String TEXT_176 = NL + "\tpublic void set";
+ protected final String TEXT_177 = "(";
+ protected final String TEXT_178 = "[] new";
+ protected final String TEXT_179 = ")" + NL + "\t{" + NL + "\t\t((";
+ protected final String TEXT_180 = ")";
+ protected final String TEXT_181 = "()).setData(new";
+ protected final String TEXT_182 = ".length, new";
+ protected final String TEXT_183 = ");" + NL + "\t}" + NL;
+ protected final String TEXT_184 = NL + "\t/**" + NL + "\t * <!-- begin-user-doc -->" + NL + "\t * <!-- end-user-doc -->" + NL + "\t * @generated" + NL + "\t */";
+ protected final String TEXT_185 = NL + "\tvoid set";
+ protected final String TEXT_186 = "(int index, ";
+ protected final String TEXT_187 = " element);" + NL;
+ protected final String TEXT_188 = NL + "\tpublic void set";
+ protected final String TEXT_189 = "(int index, ";
+ protected final String TEXT_190 = " element)" + NL + "\t{" + NL + "\t\t";
+ protected final String TEXT_191 = "().set(index, element);" + NL + "\t}" + NL;
+ protected final String TEXT_192 = NL + "\t/**" + NL + "\t * Returns the value of the '<em><b>";
+ protected final String TEXT_193 = "</b></em>' ";
+ protected final String TEXT_194 = ".";
+ protected final String TEXT_195 = NL + "\t * The key is of type ";
+ protected final String TEXT_196 = "list of {@link ";
+ protected final String TEXT_197 = "}";
+ protected final String TEXT_198 = "{@link ";
+ protected final String TEXT_199 = "}";
+ protected final String TEXT_200 = "," + NL + "\t * and the value is of type ";
+ protected final String TEXT_201 = "list of {@link ";
+ protected final String TEXT_202 = "}";
+ protected final String TEXT_203 = "{@link ";
+ protected final String TEXT_204 = "}";
+ protected final String TEXT_205 = ",";
+ protected final String TEXT_206 = NL + "\t * The list contents are of type {@link ";
+ protected final String TEXT_207 = "}.";
+ protected final String TEXT_208 = NL + "\t * The default value is <code>";
+ protected final String TEXT_209 = "</code>.";
+ protected final String TEXT_210 = NL + "\t * The literals are from the enumeration {@link ";
+ protected final String TEXT_211 = "}.";
+ protected final String TEXT_212 = NL + "\t * It is bidirectional and its opposite is '{@link ";
+ protected final String TEXT_213 = "#";
+ protected final String TEXT_214 = " <em>";
+ protected final String TEXT_215 = "</em>}'.";
+ protected final String TEXT_216 = NL + "\t * <!-- begin-user-doc -->";
+ protected final String TEXT_217 = NL + "\t * <p>" + NL + "\t * If the meaning of the '<em>";
+ protected final String TEXT_218 = "</em>' ";
+ protected final String TEXT_219 = " isn't clear," + NL + "\t * there really should be more of a description here..." + NL + "\t * </p>";
+ protected final String TEXT_220 = NL + "\t * <!-- end-user-doc -->";
+ protected final String TEXT_221 = NL + "\t * <!-- begin-model-doc -->" + NL + "\t * ";
+ protected final String TEXT_222 = NL + "\t * <!-- end-model-doc -->";
+ protected final String TEXT_223 = NL + "\t * @return the value of the '<em>";
+ protected final String TEXT_224 = "</em>' ";
+ protected final String TEXT_225 = ".";
+ protected final String TEXT_226 = NL + "\t * @see ";
+ protected final String TEXT_227 = NL + "\t * @see #isSet";
+ protected final String TEXT_228 = "()";
+ protected final String TEXT_229 = NL + "\t * @see #unset";
+ protected final String TEXT_230 = "()";
+ protected final String TEXT_231 = NL + "\t * @see #set";
+ protected final String TEXT_232 = "(";
+ protected final String TEXT_233 = ")";
+ protected final String TEXT_234 = NL + "\t * @see ";
+ protected final String TEXT_235 = "#get";
+ protected final String TEXT_236 = "()";
+ protected final String TEXT_237 = NL + "\t * @see ";
+ protected final String TEXT_238 = "#";
+ protected final String TEXT_239 = NL + "\t * @model ";
+ protected final String TEXT_240 = NL + "\t * ";
+ protected final String TEXT_241 = NL + "\t * @model";
+ protected final String TEXT_242 = NL + "\t * @generated" + NL + "\t */";
+ protected final String TEXT_243 = NL + "\t/**" + NL + "\t * <!-- begin-user-doc -->" + NL + "\t * <!-- end-user-doc -->" + NL + "\t * @generated" + NL + "\t */";
+ protected final String TEXT_244 = NL + "\t";
+ protected final String TEXT_245 = " ";
+ protected final String TEXT_246 = "();" + NL;
+ protected final String TEXT_247 = NL + "\tpublic ";
+ protected final String TEXT_248 = " ";
+ protected final String TEXT_249 = "()" + NL + "\t{";
+ protected final String TEXT_250 = NL + "\t\treturn ";
+ protected final String TEXT_251 = "(";
+ protected final String TEXT_252 = "(";
+ protected final String TEXT_253 = ")get(";
+ protected final String TEXT_254 = ", true)";
+ protected final String TEXT_255 = ").";
+ protected final String TEXT_256 = "()";
+ protected final String TEXT_257 = ";";
+ protected final String TEXT_258 = NL + "\t\t";
+ protected final String TEXT_259 = " ";
+ protected final String TEXT_260 = " = (";
+ protected final String TEXT_261 = ")eVirtualGet(";
+ protected final String TEXT_262 = ");";
+ protected final String TEXT_263 = NL + "\t\tif (";
+ protected final String TEXT_264 = " == null)" + NL + "\t\t{";
+ protected final String TEXT_265 = NL + "\t\t\teVirtualSet(";
+ protected final String TEXT_266 = ", ";
+ protected final String TEXT_267 = " = new ";
+ protected final String TEXT_268 = ");";
+ protected final String TEXT_269 = NL + "\t\t ";
+ protected final String TEXT_270 = " = createSequence(";
+ protected final String TEXT_271 = ");";
+ protected final String TEXT_272 = NL + "\t\t ";
+ protected final String TEXT_273 = " = createPropertyList(ListKind.CONTAINMENT, ";
+ protected final String TEXT_274 = ".class, ";
+ protected final String TEXT_275 = ");";
+ protected final String TEXT_276 = NL + "\t\t}" + NL + "\t\treturn ";
+ protected final String TEXT_277 = ";";
+ protected final String TEXT_278 = NL + "\t\tif (eContainerFeatureID != ";
+ protected final String TEXT_279 = ") return null;" + NL + "\t\treturn (";
+ protected final String TEXT_280 = ")eContainer();";
+ protected final String TEXT_281 = NL + "\t\t";
+ protected final String TEXT_282 = " ";
+ protected final String TEXT_283 = " = (";
+ protected final String TEXT_284 = ")eVirtualGet(";
+ protected final String TEXT_285 = ", ";
+ protected final String TEXT_286 = "_DEFAULT_";
+ protected final String TEXT_287 = ");";
+ protected final String TEXT_288 = NL + "\t\tif (";
+ protected final String TEXT_289 = " != null && ";
+ protected final String TEXT_290 = ".isProxy())" + NL + "\t\t{" + NL + "\t\t\t";
+ protected final String TEXT_291 = " old";
+ protected final String TEXT_292 = " = (";
+ protected final String TEXT_293 = ")";
+ protected final String TEXT_294 = ";" + NL + "\t\t\t";
+ protected final String TEXT_295 = " = ";
+ protected final String TEXT_296 = "eResolveProxy(old";
+ protected final String TEXT_297 = ");" + NL + "\t\t\tif (";
+ protected final String TEXT_298 = " != old";
+ protected final String TEXT_299 = ")" + NL + "\t\t\t{";
+ protected final String TEXT_300 = NL + "\t\t\t\t";
+ protected final String TEXT_301 = " new";
+ protected final String TEXT_302 = " = (";
+ protected final String TEXT_303 = ")";
+ protected final String TEXT_304 = ";";
+ protected final String TEXT_305 = NL + "\t\t\t\tChangeContext changeContext = old";
+ protected final String TEXT_306 = ".inverseRemove(this, EOPPOSITE_FEATURE_BASE - ";
+ protected final String TEXT_307 = ", null, null);";
+ protected final String TEXT_308 = NL + "\t\t\t\t";
+ protected final String TEXT_309 = " changeContext = old";
+ protected final String TEXT_310 = ".inverseRemove(this, ";
+ protected final String TEXT_311 = ", ";
+ protected final String TEXT_312 = ".class, null);";
+ protected final String TEXT_313 = NL + "\t\t\t\tif (new";
+ protected final String TEXT_314 = ".eInternalContainer() == null)" + NL + "\t\t\t\t{";
+ protected final String TEXT_315 = NL + "\t\t\t\t\tchangeContext = new";
+ protected final String TEXT_316 = ".eInverseAdd(this, EOPPOSITE_FEATURE_BASE - ";
+ protected final String TEXT_317 = ", null, changeContext);";
+ protected final String TEXT_318 = NL + "\t\t\t\t\tchangeContext = new";
+ protected final String TEXT_319 = ".eInverseAdd(this, ";
+ protected final String TEXT_320 = ", ";
+ protected final String TEXT_321 = ".class, changeContext);";
+ protected final String TEXT_322 = NL + "\t\t\t\t}" + NL + "\t\t\t\tif (changeContext != null) dispatch(changeContext);";
+ protected final String TEXT_323 = NL + "\t\t\t\teVirtualSet(";
+ protected final String TEXT_324 = ", ";
+ protected final String TEXT_325 = ");";
+ protected final String TEXT_326 = NL + "\t\t\t\tif (isNotifying())" + NL + "\t\t\t\t\tnotify(ChangeKind.RESOLVE, ";
+ protected final String TEXT_327 = ", old";
+ protected final String TEXT_328 = ", ";
+ protected final String TEXT_329 = ");";
+ protected final String TEXT_330 = NL + "\t\t\t}" + NL + "\t\t}";
+ protected final String TEXT_331 = NL + "\t\treturn (";
+ protected final String TEXT_332 = ")eVirtualGet(";
+ protected final String TEXT_333 = ", ";
+ protected final String TEXT_334 = "_DEFAULT_";
+ protected final String TEXT_335 = ");";
+ protected final String TEXT_336 = NL + "\t\treturn (";
+ protected final String TEXT_337 = " & ";
+ protected final String TEXT_338 = "_EFLAG) != 0;";
+ protected final String TEXT_339 = NL + "\t\treturn ";
+ protected final String TEXT_340 = ";";
+ protected final String TEXT_341 = NL + "\t\t";
+ protected final String TEXT_342 = " ";
+ protected final String TEXT_343 = " = basicGet";
+ protected final String TEXT_344 = "();" + NL + "\t\treturn ";
+ protected final String TEXT_345 = " != null && ";
+ protected final String TEXT_346 = ".isProxy() ? ";
+ protected final String TEXT_347 = "eResolveProxy((";
+ protected final String TEXT_348 = ")";
+ protected final String TEXT_349 = ") : ";
+ protected final String TEXT_350 = ";";
+ protected final String TEXT_351 = NL + "\t\treturn create";
+ protected final String TEXT_352 = "(get";
+ protected final String TEXT_353 = "(), getType(), ";
+ protected final String TEXT_354 = ");";
+ protected final String TEXT_355 = NL + "\t\treturn (";
+ protected final String TEXT_356 = ")((";
+ protected final String TEXT_357 = ")get";
+ protected final String TEXT_358 = "()).list(";
+ protected final String TEXT_359 = ");";
+ protected final String TEXT_360 = NL + " return get";
+ protected final String TEXT_361 = "(get";
+ protected final String TEXT_362 = "(), getType(), ";
+ protected final String TEXT_363 = ");" + NL;
+ protected final String TEXT_364 = NL + "\t\treturn ((";
+ protected final String TEXT_365 = ")get";
+ protected final String TEXT_366 = "()).list(";
+ protected final String TEXT_367 = ");";
+ protected final String TEXT_368 = NL + "\t\treturn ";
+ protected final String TEXT_369 = "(";
+ protected final String TEXT_370 = "(";
+ protected final String TEXT_371 = ")get(get";
+ protected final String TEXT_372 = "(), getType(), ";
+ protected final String TEXT_373 = ")";
+ protected final String TEXT_374 = ").";
+ protected final String TEXT_375 = "()";
+ protected final String TEXT_376 = ";";
+ protected final String TEXT_377 = NL + "\t\treturn ";
+ protected final String TEXT_378 = "(";
+ protected final String TEXT_379 = "(";
+ protected final String TEXT_380 = ")get(get";
+ protected final String TEXT_381 = "(), getType(), ";
+ protected final String TEXT_382 = ");";
+ protected final String TEXT_383 = ").";
+ protected final String TEXT_384 = "()";
+ protected final String TEXT_385 = ";";
+ protected final String TEXT_386 = NL + "\t\t// TODO: implement this method to return the '";
+ protected final String TEXT_387 = "' ";
+ protected final String TEXT_388 = NL + "\t\t// Ensure that you remove @generated or mark it @generated NOT" + NL + "\t\tthrow new UnsupportedOperationException();";
+ protected final String TEXT_389 = NL + "\t}";
+ protected final String TEXT_390 = NL + "\t/**" + NL + "\t * <!-- begin-user-doc -->" + NL + "\t * <!-- end-user-doc -->" + NL + "\t * @generated" + NL + "\t */" + NL + "\tpublic ";
+ protected final String TEXT_391 = " basicGet";
+ protected final String TEXT_392 = "()" + NL + "\t{";
+ protected final String TEXT_393 = NL + "\t\tif (eContainerFeatureID != ";
+ protected final String TEXT_394 = ") return null;" + NL + "\t\treturn (";
+ protected final String TEXT_395 = ")eInternalContainer();";
+ protected final String TEXT_396 = NL + "\t\treturn (";
+ protected final String TEXT_397 = ")eVirtualGet(";
+ protected final String TEXT_398 = ");";
+ protected final String TEXT_399 = NL + "\t\treturn ";
+ protected final String TEXT_400 = ";";
+ protected final String TEXT_401 = NL + "\t\treturn (";
+ protected final String TEXT_402 = ")get(get";
+ protected final String TEXT_403 = "(), getType(), ";
+ protected final String TEXT_404 = ");";
+ protected final String TEXT_405 = NL + "\t\treturn (";
+ protected final String TEXT_406 = ")get";
+ protected final String TEXT_407 = "().get(";
+ protected final String TEXT_408 = ", false);";
+ protected final String TEXT_409 = NL + "\t\t// TODO: implement this method to return the '";
+ protected final String TEXT_410 = "' ";
+ protected final String TEXT_411 = NL + "\t\t// -> do not perform proxy resolution" + NL + "\t\t// Ensure that you remove @generated or mark it @generated NOT" + NL + "\t\tthrow new UnsupportedOperationException();";
+ protected final String TEXT_412 = NL + "\t}" + NL;
+ protected final String TEXT_413 = NL + "\t/**" + NL + "\t * <!-- begin-user-doc -->" + NL + "\t * <!-- end-user-doc -->" + NL + "\t * @generated" + NL + "\t */" + NL + "\tpublic ChangeContext basicSet";
+ protected final String TEXT_414 = "(";
+ protected final String TEXT_415 = " new";
+ protected final String TEXT_416 = ", ChangeContext changeContext)" + NL + "\t{";
+ protected final String TEXT_417 = NL + "\t\tObject old";
+ protected final String TEXT_418 = " = eVirtualSet(";
+ protected final String TEXT_419 = ", new";
+ protected final String TEXT_420 = ");";
+ protected final String TEXT_421 = NL + "\t\t";
+ protected final String TEXT_422 = " old";
+ protected final String TEXT_423 = " = ";
+ protected final String TEXT_424 = ";" + NL + "\t\t";
+ protected final String TEXT_425 = " = new";
+ protected final String TEXT_426 = ";";
+ protected final String TEXT_427 = NL + "\t\tboolean isSetChange = old";
+ protected final String TEXT_428 = " == EVIRTUAL_NO_VALUE;";
+ protected final String TEXT_429 = NL + "\t\tboolean old";
+ protected final String TEXT_430 = "_set_ = (";
+ protected final String TEXT_431 = " & ";
+ protected final String TEXT_432 = "_ESETFLAG) != 0;" + NL + "\t\t";
+ protected final String TEXT_433 = " |= ";
+ protected final String TEXT_434 = "_ESETFLAG;";
+ protected final String TEXT_435 = NL + "\t\tboolean old";
+ protected final String TEXT_436 = "_set_ = ";
+ protected final String TEXT_437 = "_set_;" + NL + "\t\t";
+ protected final String TEXT_438 = "_set_ = true;";
+ protected final String TEXT_439 = NL + "\t\tif (isNotifying())" + NL + "\t\t{";
+ protected final String TEXT_440 = NL + "\t\t\taddNotification(this, ChangeKind.SET, ";
+ protected final String TEXT_441 = ", ";
+ protected final String TEXT_442 = "isSetChange ? null : old";
+ protected final String TEXT_443 = "old";
+ protected final String TEXT_444 = ", new";
+ protected final String TEXT_445 = ", ";
+ protected final String TEXT_446 = "isSetChange";
+ protected final String TEXT_447 = "!old";
+ protected final String TEXT_448 = "_set_";
+ protected final String TEXT_449 = ", changeContext);";
+ protected final String TEXT_450 = NL + "\t\t\taddNotification(this, ChangeKind.SET, ";
+ protected final String TEXT_451 = ", ";
+ protected final String TEXT_452 = "old";
+ protected final String TEXT_453 = " == EVIRTUAL_NO_VALUE ? null : old";
+ protected final String TEXT_454 = "old";
+ protected final String TEXT_455 = ", new";
+ protected final String TEXT_456 = ", changeContext);";
+ protected final String TEXT_457 = NL + "\t\t}";
+ protected final String TEXT_458 = NL + "\t\treturn changeContext;";
+ protected final String TEXT_459 = NL + "\t\treturn basicAdd(get";
+ protected final String TEXT_460 = "(), getType(), ";
+ protected final String TEXT_461 = ", new";
+ protected final String TEXT_462 = ", changeContext);";
+ protected final String TEXT_463 = NL + "\t\treturn basicAdd(get";
+ protected final String TEXT_464 = "(), getType(), ";
+ protected final String TEXT_465 = ", new";
+ protected final String TEXT_466 = ", changeContext);";
+ protected final String TEXT_467 = NL + "\t\t// TODO: implement this method to set the contained '";
+ protected final String TEXT_468 = "' ";
+ protected final String TEXT_469 = NL + "\t\t// -> this method is automatically invoked to keep the containment relationship in synch" + NL + "\t\t// -> do not modify other features" + NL + "\t\t// -> return changeContext, after adding any generated Notification to it (if it is null, a NotificationChain object must be created first)" + NL + "\t\t// Ensure that you remove @generated or mark it @generated NOT" + NL + "\t\tthrow new UnsupportedOperationException();";
+ protected final String TEXT_470 = NL + "\t}" + NL;
+ protected final String TEXT_471 = NL + "\t/**" + NL + "\t * Sets the value of the '{@link ";
+ protected final String TEXT_472 = "#";
+ protected final String TEXT_473 = " <em>";
+ protected final String TEXT_474 = "</em>}' ";
+ protected final String TEXT_475 = "." + NL + "\t * <!-- begin-user-doc -->" + NL + "\t * <!-- end-user-doc -->" + NL + "\t * @param value the new value of the '<em>";
+ protected final String TEXT_476 = "</em>' ";
+ protected final String TEXT_477 = ".";
+ protected final String TEXT_478 = NL + "\t * @see ";
+ protected final String TEXT_479 = NL + "\t * @see #isSet";
+ protected final String TEXT_480 = "()";
+ protected final String TEXT_481 = NL + "\t * @see #unset";
+ protected final String TEXT_482 = "()";
+ protected final String TEXT_483 = NL + "\t * @see #";
+ protected final String TEXT_484 = "()" + NL + "\t * @generated" + NL + "\t */";
+ protected final String TEXT_485 = NL + "\t/**" + NL + "\t * <!-- begin-user-doc -->" + NL + "\t * <!-- end-user-doc -->" + NL + "\t * @generated" + NL + "\t */";
+ protected final String TEXT_486 = NL + "\tvoid set";
+ protected final String TEXT_487 = "(";
+ protected final String TEXT_488 = " value);" + NL;
+ protected final String TEXT_489 = NL + "\tpublic void set";
+ protected final String TEXT_490 = "(";
+ protected final String TEXT_491 = " new";
+ protected final String TEXT_492 = ")" + NL + "\t{";
+ protected final String TEXT_493 = NL + "\t\t_set_(";
+ protected final String TEXT_494 = ", ";
+ protected final String TEXT_495 = "new ";
+ protected final String TEXT_496 = "(";
+ protected final String TEXT_497 = "new";
+ protected final String TEXT_498 = ")";
+ protected final String TEXT_499 = ");";
+ protected final String TEXT_500 = NL + "\t\tif (new";
+ protected final String TEXT_501 = " != eInternalContainer() || (eContainerFeatureID != ";
+ protected final String TEXT_502 = " && new";
+ protected final String TEXT_503 = " != null))" + NL + "\t\t{" + NL + "\t\t\tif (";
+ protected final String TEXT_504 = ".isAncestor(this, ";
+ protected final String TEXT_505 = "new";
+ protected final String TEXT_506 = "))" + NL + "\t\t\t\tthrow new ";
+ protected final String TEXT_507 = "(\"Recursive containment not allowed for \" + toString());";
+ protected final String TEXT_508 = NL + "\t\t\tChangeContext changeContext = null;" + NL + "\t\t\tif (eInternalContainer() != null)" + NL + "\t\t\t\tchangeContext = eBasicRemoveFromContainer(changeContext);" + NL + "\t\t\tif (new";
+ protected final String TEXT_509 = " != null)" + NL + "\t\t\t\tchangeContext = ((";
+ protected final String TEXT_510 = ")new";
+ protected final String TEXT_511 = ").eInverseAdd(this, ";
+ protected final String TEXT_512 = ", ";
+ protected final String TEXT_513 = ".class, changeContext);" + NL + "\t\t\tchangeContext = eBasicSetContainer((";
+ protected final String TEXT_514 = ")new";
+ protected final String TEXT_515 = ", ";
+ protected final String TEXT_516 = ", changeContext);" + NL + "\t\t\tif (changeContext != null) dispatch(changeContext);" + NL + "\t\t}";
+ protected final String TEXT_517 = NL + "\t\telse if (isNotifying())" + NL + "\t\t\tnotify(ChangeKind.SET, ";
+ protected final String TEXT_518 = ", new";
+ protected final String TEXT_519 = ", new";
+ protected final String TEXT_520 = ");";
+ protected final String TEXT_521 = NL + "\t\t";
+ protected final String TEXT_522 = " ";
+ protected final String TEXT_523 = " = (";
+ protected final String TEXT_524 = ")eVirtualGet(";
+ protected final String TEXT_525 = ");";
+ protected final String TEXT_526 = NL + "\t\tif (new";
+ protected final String TEXT_527 = " != ";
+ protected final String TEXT_528 = ")" + NL + "\t\t{" + NL + "\t\t\tChangeContext changeContext = null;" + NL + "\t\t\tif (";
+ protected final String TEXT_529 = " != null)";
+ protected final String TEXT_530 = NL + "\t\t\t\tchangeContext = inverseRemove(";
+ protected final String TEXT_531 = ", this, OPPOSITE_FEATURE_BASE - ";
+ protected final String TEXT_532 = ", null, changeContext);" + NL + "\t\t\tif (new";
+ protected final String TEXT_533 = " != null)" + NL + "\t\t\t\tchangeContext = inverseAdd(new";
+ protected final String TEXT_534 = ", this, OPPOSITE_FEATURE_BASE - ";
+ protected final String TEXT_535 = ", null, changeContext);";
+ protected final String TEXT_536 = NL + "\t\t\t\tchangeContext = inverseRemove(";
+ protected final String TEXT_537 = ", this, ";
+ protected final String TEXT_538 = ", ";
+ protected final String TEXT_539 = ".class, changeContext);" + NL + "\t\t\tif (new";
+ protected final String TEXT_540 = " != null)" + NL + "\t\t\t\tchangeContext = inverseAdd(new";
+ protected final String TEXT_541 = ", this, ";
+ protected final String TEXT_542 = ", ";
+ protected final String TEXT_543 = ".class, changeContext);";
+ protected final String TEXT_544 = NL + "\t\t\tchangeContext = basicSet";
+ protected final String TEXT_545 = "(";
+ protected final String TEXT_546 = "new";
+ protected final String TEXT_547 = ", changeContext);" + NL + "\t\t\tif (changeContext != null) dispatch(changeContext);" + NL + "\t\t}";
+ protected final String TEXT_548 = NL + "\t\telse" + NL + " \t{";
+ protected final String TEXT_549 = NL + "\t\t\tboolean old";
+ protected final String TEXT_550 = "_set_ = eVirtualIsSet(";
+ protected final String TEXT_551 = ");";
+ protected final String TEXT_552 = NL + "\t\t\tboolean old";
+ protected final String TEXT_553 = "_set_ = (";
+ protected final String TEXT_554 = " & ";
+ protected final String TEXT_555 = "_ESETFLAG) != 0;";
+ protected final String TEXT_556 = NL + "\t\t\t";
+ protected final String TEXT_557 = " |= ";
+ protected final String TEXT_558 = "_ESETFLAG;";
+ protected final String TEXT_559 = NL + "\t\t\tboolean old";
+ protected final String TEXT_560 = "_set_ = ";
+ protected final String TEXT_561 = "_set_;";
+ protected final String TEXT_562 = NL + "\t\t\t";
+ protected final String TEXT_563 = "_set_ = true;";
+ protected final String TEXT_564 = NL + "\t\t\tif (isNotifying())" + NL + "\t\t\t\tnotify(ChangeKind.SET, ";
+ protected final String TEXT_565 = ", new";
+ protected final String TEXT_566 = ", new";
+ protected final String TEXT_567 = ", !old";
+ protected final String TEXT_568 = "_set_);";
+ protected final String TEXT_569 = NL + " \t}";
+ protected final String TEXT_570 = NL + "\t\telse if (isNotifying())" + NL + "\t\t\tnotify(ChangeKind.SET, ";
+ protected final String TEXT_571 = ", new";
+ protected final String TEXT_572 = ", new";
+ protected final String TEXT_573 = ");";
+ protected final String TEXT_574 = NL + "\t\t";
+ protected final String TEXT_575 = " old";
+ protected final String TEXT_576 = " = (";
+ protected final String TEXT_577 = " & ";
+ protected final String TEXT_578 = "_EFLAG) != 0;";
+ protected final String TEXT_579 = NL + "\t\tif (new";
+ protected final String TEXT_580 = ") ";
+ protected final String TEXT_581 = " |= ";
+ protected final String TEXT_582 = "_EFLAG; else ";
+ protected final String TEXT_583 = " &= ~";
+ protected final String TEXT_584 = "_EFLAG;";
+ protected final String TEXT_585 = NL + "\t\t";
+ protected final String TEXT_586 = " old";
+ protected final String TEXT_587 = " = ";
+ protected final String TEXT_588 = ";";
+ protected final String TEXT_589 = NL + "\t\t";
+ protected final String TEXT_590 = " ";
+ protected final String TEXT_591 = " = new";
+ protected final String TEXT_592 = " == null ? ";
+ protected final String TEXT_593 = "_DEFAULT_ : new";
+ protected final String TEXT_594 = ";";
+ protected final String TEXT_595 = NL + "\t\t";
+ protected final String TEXT_596 = " = new";
+ protected final String TEXT_597 = " == null ? ";
+ protected final String TEXT_598 = "_DEFAULT_ : new";
+ protected final String TEXT_599 = ";";
+ protected final String TEXT_600 = NL + "\t\t";
+ protected final String TEXT_601 = " ";
+ protected final String TEXT_602 = " = ";
+ protected final String TEXT_603 = "new";
+ protected final String TEXT_604 = ";";
+ protected final String TEXT_605 = NL + "\t\t";
+ protected final String TEXT_606 = " = ";
+ protected final String TEXT_607 = "new";
+ protected final String TEXT_608 = ";";
+ protected final String TEXT_609 = NL + "\t\tObject old";
+ protected final String TEXT_610 = " = eVirtualSet(";
+ protected final String TEXT_611 = ", ";
+ protected final String TEXT_612 = ");";
+ protected final String TEXT_613 = NL + "\t\tboolean isSetChange = old";
+ protected final String TEXT_614 = " == EVIRTUAL_NO_VALUE;";
+ protected final String TEXT_615 = NL + "\t\tboolean old";
+ protected final String TEXT_616 = "_set_ = (";
+ protected final String TEXT_617 = " & ";
+ protected final String TEXT_618 = "_ESETFLAG) != 0;";
+ protected final String TEXT_619 = NL + "\t\t";
+ protected final String TEXT_620 = " |= ";
+ protected final String TEXT_621 = "_ESETFLAG;";
+ protected final String TEXT_622 = NL + "\t\tboolean old";
+ protected final String TEXT_623 = "_set_ = ";
+ protected final String TEXT_624 = "_set_;";
+ protected final String TEXT_625 = NL + "\t\t";
+ protected final String TEXT_626 = "_set_ = true;";
+ protected final String TEXT_627 = NL + "\t\tif (isNotifying())" + NL + "\t\t\tnotify(ChangeKind.SET, ";
+ protected final String TEXT_628 = ", ";
+ protected final String TEXT_629 = "isSetChange ? ";
+ protected final String TEXT_630 = "null";
+ protected final String TEXT_631 = "_DEFAULT_";
+ protected final String TEXT_632 = " : old";
+ protected final String TEXT_633 = "old";
+ protected final String TEXT_634 = ", ";
+ protected final String TEXT_635 = "new";
+ protected final String TEXT_636 = ", ";
+ protected final String TEXT_637 = "isSetChange";
+ protected final String TEXT_638 = "!old";
+ protected final String TEXT_639 = "_set_";
+ protected final String TEXT_640 = ");";
+ protected final String TEXT_641 = NL + "\t\tif (isNotifying())" + NL + "\t\t\tnotify(ChangeKind.SET, ";
+ protected final String TEXT_642 = ", ";
+ protected final String TEXT_643 = "old";
+ protected final String TEXT_644 = " == EVIRTUAL_NO_VALUE ? ";
+ protected final String TEXT_645 = "null";
+ protected final String TEXT_646 = "_DEFAULT_";
+ protected final String TEXT_647 = " : old";
+ protected final String TEXT_648 = "old";
+ protected final String TEXT_649 = ", ";
+ protected final String TEXT_650 = "new";
+ protected final String TEXT_651 = ");";
+ protected final String TEXT_652 = NL + "\t\tset(get";
+ protected final String TEXT_653 = "(), getType(), ";
+ protected final String TEXT_654 = ", ";
+ protected final String TEXT_655 = " new ";
+ protected final String TEXT_656 = "(";
+ protected final String TEXT_657 = "new";
+ protected final String TEXT_658 = ")";
+ protected final String TEXT_659 = ");";
+ protected final String TEXT_660 = NL + "\t\t((";
+ protected final String TEXT_661 = ".Internal)get";
+ protected final String TEXT_662 = "()).set(";
+ protected final String TEXT_663 = ", ";
+ protected final String TEXT_664 = "new ";
+ protected final String TEXT_665 = "(";
+ protected final String TEXT_666 = "new";
+ protected final String TEXT_667 = ")";
+ protected final String TEXT_668 = ");";
+ protected final String TEXT_669 = NL + "\t\t// TODO: implement this method to set the '";
+ protected final String TEXT_670 = "' ";
+ protected final String TEXT_671 = NL + "\t\t// Ensure that you remove @generated or mark it @generated NOT" + NL + "\t\tthrow new UnsupportedOperationException();";
+ protected final String TEXT_672 = NL + "\t}" + NL;
+ protected final String TEXT_673 = NL + "\t/**" + NL + "\t * <!-- begin-user-doc -->" + NL + "\t * <!-- end-user-doc -->" + NL + "\t * @generated" + NL + "\t */" + NL + "\tpublic ChangeContext basicUnset";
+ protected final String TEXT_674 = "(ChangeContext changeContext)" + NL + "\t{";
+ protected final String TEXT_675 = NL + "\t\tObject old";
+ protected final String TEXT_676 = " = eVirtualUnset(";
+ protected final String TEXT_677 = ");";
+ protected final String TEXT_678 = NL + "\t\t";
+ protected final String TEXT_679 = " old";
+ protected final String TEXT_680 = " = ";
+ protected final String TEXT_681 = ";" + NL + "\t\t";
+ protected final String TEXT_682 = " = null;";
+ protected final String TEXT_683 = NL + "\t\tboolean isSetChange = old";
+ protected final String TEXT_684 = " != EVIRTUAL_NO_VALUE;";
+ protected final String TEXT_685 = NL + "\t\tboolean old";
+ protected final String TEXT_686 = "_set_ = (";
+ protected final String TEXT_687 = " & ";
+ protected final String TEXT_688 = "_ESETFLAG) != 0;" + NL + "\t\t";
+ protected final String TEXT_689 = " &= ~";
+ protected final String TEXT_690 = "_ESETFLAG;";
+ protected final String TEXT_691 = NL + "\t\tboolean old";
+ protected final String TEXT_692 = "_set_ = ";
+ protected final String TEXT_693 = "_set_;" + NL + "\t\t";
+ protected final String TEXT_694 = "_set_ = false;";
+ protected final String TEXT_695 = NL + "\t\tif (isNotifying())" + NL + "\t\t{" + NL + "\t\t\t";
+ protected final String TEXT_696 = " notification = new ";
+ protected final String TEXT_697 = "(this, ";
+ protected final String TEXT_698 = ".UNSET, ";
+ protected final String TEXT_699 = ", ";
+ protected final String TEXT_700 = "isSetChange ? old";
+ protected final String TEXT_701 = " : null";
+ protected final String TEXT_702 = "old";
+ protected final String TEXT_703 = ", null, ";
+ protected final String TEXT_704 = "isSetChange";
+ protected final String TEXT_705 = "old";
+ protected final String TEXT_706 = "_set_";
+ protected final String TEXT_707 = ");" + NL + "\t\t\tif (changeContext == null) changeContext = notification; else changeContext.add(notification);" + NL + "\t\t}" + NL + "\t\treturn changeContext;";
+ protected final String TEXT_708 = NL + "\t\t// TODO: implement this method to unset the contained '";
+ protected final String TEXT_709 = "' ";
+ protected final String TEXT_710 = NL + "\t\t// -> this method is automatically invoked to keep the containment relationship in synch" + NL + "\t\t// -> do not modify other features" + NL + "\t\t// -> return changeContext, after adding any generated Notification to it (if it is null, a NotificationChain object must be created first)" + NL + "\t\t// Ensure that you remove @generated or mark it @generated NOT" + NL + "\t\tthrow new UnsupportedOperationException();";
+ protected final String TEXT_711 = NL + "\t}" + NL;
+ protected final String TEXT_712 = NL + "\t/**" + NL + "\t * Unsets the value of the '{@link ";
+ protected final String TEXT_713 = "#";
+ protected final String TEXT_714 = " <em>";
+ protected final String TEXT_715 = "</em>}' ";
+ protected final String TEXT_716 = "." + NL + "\t * <!-- begin-user-doc -->" + NL + "\t * <!-- end-user-doc -->";
+ protected final String TEXT_717 = NL + "\t * @see #isSet";
+ protected final String TEXT_718 = "()";
+ protected final String TEXT_719 = NL + "\t * @see #";
+ protected final String TEXT_720 = "()";
+ protected final String TEXT_721 = NL + "\t * @see #set";
+ protected final String TEXT_722 = "(";
+ protected final String TEXT_723 = ")";
+ protected final String TEXT_724 = NL + "\t * @generated" + NL + "\t */";
+ protected final String TEXT_725 = NL + "\t/**" + NL + "\t * <!-- begin-user-doc -->" + NL + "\t * <!-- end-user-doc -->" + NL + "\t * @generated" + NL + "\t */";
+ protected final String TEXT_726 = NL + "\tvoid unset";
+ protected final String TEXT_727 = "();" + NL;
+ protected final String TEXT_728 = NL + "\tpublic void unset";
+ protected final String TEXT_729 = "()" + NL + "\t{";
+ protected final String TEXT_730 = NL + "\t\tunset(";
+ protected final String TEXT_731 = ");";
+ protected final String TEXT_732 = NL + "\t\t((";
+ protected final String TEXT_733 = ".Unsettable)get";
+ protected final String TEXT_734 = "()).unset();";
+ protected final String TEXT_735 = NL + "\t\t";
+ protected final String TEXT_736 = " ";
+ protected final String TEXT_737 = " = (";
+ protected final String TEXT_738 = ")eVirtualGet(";
+ protected final String TEXT_739 = ");";
+ protected final String TEXT_740 = NL + "\t\tif (";
+ protected final String TEXT_741 = " != null)" + NL + "\t\t{" + NL + "\t\t\tChangeContext changeContext = null;";
+ protected final String TEXT_742 = NL + "\t\t\tchangeContext = ((";
+ protected final String TEXT_743 = ")";
+ protected final String TEXT_744 = ").inverseRemove(this, EOPPOSITE_FEATURE_BASE - ";
+ protected final String TEXT_745 = ", null, changeContext);";
+ protected final String TEXT_746 = NL + "\t\t\tchangeContext = ((";
+ protected final String TEXT_747 = ")";
+ protected final String TEXT_748 = ").inverseRemove(this, ";
+ protected final String TEXT_749 = ", ";
+ protected final String TEXT_750 = ".class, changeContext);";
+ protected final String TEXT_751 = NL + "\t\t\tchangeContext = basicUnset";
+ protected final String TEXT_752 = "(changeContext);" + NL + "\t\t\tif (changeContext != null) dispatch(changeContext);" + NL + "\t\t}" + NL + "\t\telse" + NL + " \t{";
+ protected final String TEXT_753 = NL + "\t\t\tboolean old";
+ protected final String TEXT_754 = "_set_ = eVirtualIsSet(";
+ protected final String TEXT_755 = ");";
+ protected final String TEXT_756 = NL + "\t\t\tboolean old";
+ protected final String TEXT_757 = "_set_ = (";
+ protected final String TEXT_758 = " & ";
+ protected final String TEXT_759 = "_ESETFLAG) != 0;";
+ protected final String TEXT_760 = NL + "\t\t\t";
+ protected final String TEXT_761 = " &= ~";
+ protected final String TEXT_762 = "_ESETFLAG;";
+ protected final String TEXT_763 = NL + "\t\t\tboolean old";
+ protected final String TEXT_764 = "_set_ = ";
+ protected final String TEXT_765 = "_set_;";
+ protected final String TEXT_766 = NL + "\t\t\t";
+ protected final String TEXT_767 = "_set_ = false;";
+ protected final String TEXT_768 = NL + "\t\t\tif (isNotifying())" + NL + "\t\t\t\tnotify(ChangeKind.UNSET, ";
+ protected final String TEXT_769 = ", null, null, old";
+ protected final String TEXT_770 = "_set_);";
+ protected final String TEXT_771 = NL + " \t}";
+ protected final String TEXT_772 = NL + "\t\t";
+ protected final String TEXT_773 = " old";
+ protected final String TEXT_774 = " = (";
+ protected final String TEXT_775 = " & ";
+ protected final String TEXT_776 = "_EFLAG) != 0;";
+ protected final String TEXT_777 = NL + "\t\tObject old";
+ protected final String TEXT_778 = " = eVirtualUnset(";
+ protected final String TEXT_779 = ");";
+ protected final String TEXT_780 = NL + "\t\t";
+ protected final String TEXT_781 = " old";
+ protected final String TEXT_782 = " = ";
+ protected final String TEXT_783 = ";";
+ protected final String TEXT_784 = NL + "\t\tboolean isSetChange = old";
+ protected final String TEXT_785 = " != EVIRTUAL_NO_VALUE;";
+ protected final String TEXT_786 = NL + "\t\tboolean old";
+ protected final String TEXT_787 = "_set_ = (";
+ protected final String TEXT_788 = " & ";
+ protected final String TEXT_789 = "_ESETFLAG) != 0;";
+ protected final String TEXT_790 = NL + "\t\tboolean old";
+ protected final String TEXT_791 = "_set_ = ";
+ protected final String TEXT_792 = "_set_;";
+ protected final String TEXT_793 = NL + "\t\t";
+ protected final String TEXT_794 = " = null;";
+ protected final String TEXT_795 = NL + "\t\t";
+ protected final String TEXT_796 = " &= ~";
+ protected final String TEXT_797 = "_ESETFLAG;";
+ protected final String TEXT_798 = NL + "\t\t";
+ protected final String TEXT_799 = "_set_ = false;";
+ protected final String TEXT_800 = NL + "\t\tif (isNotifying())" + NL + "\t\t\tnotify(ChangeKind.UNSET, ";
+ protected final String TEXT_801 = ", ";
+ protected final String TEXT_802 = "isSetChange ? old";
+ protected final String TEXT_803 = " : null";
+ protected final String TEXT_804 = "old";
+ protected final String TEXT_805 = ", null, ";
+ protected final String TEXT_806 = "isSetChange";
+ protected final String TEXT_807 = "old";
+ protected final String TEXT_808 = "_set_";
+ protected final String TEXT_809 = ");";
+ protected final String TEXT_810 = NL + "\t\tif (";
+ protected final String TEXT_811 = "_DEFAULT_) ";
+ protected final String TEXT_812 = " |= ";
+ protected final String TEXT_813 = "_EFLAG; else ";
+ protected final String TEXT_814 = " &= ~";
+ protected final String TEXT_815 = "_EFLAG;";
+ protected final String TEXT_816 = NL + "\t\t";
+ protected final String TEXT_817 = " = ";
+ protected final String TEXT_818 = "_DEFAULT_;";
+ protected final String TEXT_819 = NL + "\t\t";
+ protected final String TEXT_820 = " &= ~";
+ protected final String TEXT_821 = "_ESETFLAG;";
+ protected final String TEXT_822 = NL + "\t\t";
+ protected final String TEXT_823 = "_set_ = false;";
+ protected final String TEXT_824 = NL + "\t\tif (isNotifying())" + NL + "\t\t\tnotify(ChangeKind.UNSET, ";
+ protected final String TEXT_825 = ", ";
+ protected final String TEXT_826 = "isSetChange ? old";
+ protected final String TEXT_827 = " : ";
+ protected final String TEXT_828 = "_DEFAULT_";
+ protected final String TEXT_829 = "old";
+ protected final String TEXT_830 = ", ";
+ protected final String TEXT_831 = "_DEFAULT_, ";
+ protected final String TEXT_832 = "isSetChange";
+ protected final String TEXT_833 = "old";
+ protected final String TEXT_834 = "_set_";
+ protected final String TEXT_835 = ");";
+ protected final String TEXT_836 = NL + " unset(get";
+ protected final String TEXT_837 = "(), getType(), ";
+ protected final String TEXT_838 = ");";
+ protected final String TEXT_839 = NL + " unset";
+ protected final String TEXT_840 = "(get";
+ protected final String TEXT_841 = "());";
+ protected final String TEXT_842 = NL + "\t\t// TODO: implement this method to unset the '";
+ protected final String TEXT_843 = "' ";
+ protected final String TEXT_844 = NL + "\t\t// Ensure that you remove @generated or mark it @generated NOT" + NL + "\t\tthrow new UnsupportedOperationException();";
+ protected final String TEXT_845 = NL + "\t}" + NL;
+ protected final String TEXT_846 = NL + "\t/**" + NL + "\t * Returns whether the value of the '{@link ";
+ protected final String TEXT_847 = "#";
+ protected final String TEXT_848 = " <em>";
+ protected final String TEXT_849 = "</em>}' ";
+ protected final String TEXT_850 = " is set." + NL + "\t * <!-- begin-user-doc -->" + NL + "\t * <!-- end-user-doc -->" + NL + "\t * @return whether the value of the '<em>";
+ protected final String TEXT_851 = "</em>' ";
+ protected final String TEXT_852 = " is set.";
+ protected final String TEXT_853 = NL + "\t * @see #unset";
+ protected final String TEXT_854 = "()";
+ protected final String TEXT_855 = NL + "\t * @see #";
+ protected final String TEXT_856 = "()";
+ protected final String TEXT_857 = NL + "\t * @see #set";
+ protected final String TEXT_858 = "(";
+ protected final String TEXT_859 = ")";
+ protected final String TEXT_860 = NL + "\t * @generated" + NL + "\t */";
+ protected final String TEXT_861 = NL + "\t/**" + NL + "\t * <!-- begin-user-doc -->" + NL + "\t * <!-- end-user-doc -->" + NL + "\t * @generated" + NL + "\t */";
+ protected final String TEXT_862 = NL + "\tboolean isSet";
+ protected final String TEXT_863 = "();" + NL;
+ protected final String TEXT_864 = NL + "\tpublic boolean isSet";
+ protected final String TEXT_865 = "()" + NL + "\t{";
+ protected final String TEXT_866 = NL + "\t\treturn isSet(";
+ protected final String TEXT_867 = ");";
+ protected final String TEXT_868 = NL + "\t\t";
+ protected final String TEXT_869 = " ";
+ protected final String TEXT_870 = " = (";
+ protected final String TEXT_871 = ")eVirtualGet(";
+ protected final String TEXT_872 = ");";
+ protected final String TEXT_873 = NL + "\t\treturn ";
+ protected final String TEXT_874 = " != null && ((";
+ protected final String TEXT_875 = ".Unsettable)";
+ protected final String TEXT_876 = ").isSet();";
+ protected final String TEXT_877 = NL + "\t\treturn eVirtualIsSet(";
+ protected final String TEXT_878 = ");";
+ protected final String TEXT_879 = NL + "\t\treturn (";
+ protected final String TEXT_880 = " & ";
+ protected final String TEXT_881 = "_ESETFLAG) != 0;";
+ protected final String TEXT_882 = NL + "\t\treturn ";
+ protected final String TEXT_883 = "_set_;";
+ protected final String TEXT_884 = NL + " return isSet(get";
+ protected final String TEXT_885 = "(), getType(), ";
+ protected final String TEXT_886 = ");";
+ protected final String TEXT_887 = NL + "\t\treturn !((";
+ protected final String TEXT_888 = ".Internal)get";
+ protected final String TEXT_889 = "()).isEmpty(";
+ protected final String TEXT_890 = ");";
+ protected final String TEXT_891 = NL + "\t\t// TODO: implement this method to return whether the '";
+ protected final String TEXT_892 = "' ";
+ protected final String TEXT_893 = " is set" + NL + "\t\t// Ensure that you remove @generated or mark it @generated NOT" + NL + "\t\tthrow new UnsupportedOperationException();";
+ protected final String TEXT_894 = NL + "\t}" + NL;
+ protected final String TEXT_895 = NL + "\t/**" + NL + "\t * <!-- begin-user-doc -->" + NL + "\t * <!-- end-user-doc -->";
+ protected final String TEXT_896 = NL + "\t * <!-- begin-model-doc -->" + NL + "\t * ";
+ protected final String TEXT_897 = NL + "\t * <!-- end-model-doc -->";
+ protected final String TEXT_898 = NL + "\t * @model ";
+ protected final String TEXT_899 = NL + "\t * ";
+ protected final String TEXT_900 = NL + "\t * @model";
+ protected final String TEXT_901 = NL + "\t * @generated" + NL + "\t */";
+ protected final String TEXT_902 = NL + "\t/**" + NL + "\t * <!-- begin-user-doc -->" + NL + "\t * <!-- end-user-doc -->" + NL + "\t * @generated" + NL + "\t */";
+ protected final String TEXT_903 = NL + "\t";
+ protected final String TEXT_904 = " ";
+ protected final String TEXT_905 = "(";
+ protected final String TEXT_906 = ")";
+ protected final String TEXT_907 = ";" + NL;
+ protected final String TEXT_908 = NL + "\tpublic ";
+ protected final String TEXT_909 = " ";
+ protected final String TEXT_910 = "(";
+ protected final String TEXT_911 = ")";
+ protected final String TEXT_912 = NL + "\t{";
+ protected final String TEXT_913 = NL + "\t\t";
+ protected final String TEXT_914 = NL + "\t\t// TODO: implement this method" + NL + "\t\t// -> specify the condition that violates the invariant" + NL + "\t\t// -> verify the details of the diagnostic, including severity and message" + NL + "\t\t// Ensure that you remove @generated or mark it @generated NOT" + NL + "\t\tif (false)" + NL + "\t\t{" + NL + "\t\t\tif (";
+ protected final String TEXT_915 = " != null)" + NL + "\t\t\t{" + NL + "\t\t\t\t";
+ protected final String TEXT_916 = ".add" + NL + "\t\t\t\t\t(new ";
+ protected final String TEXT_917 = NL + "\t\t\t\t\t\t(";
+ protected final String TEXT_918 = ".ERROR," + NL + "\t\t\t\t\t\t ";
+ protected final String TEXT_919 = ".DIAGNOSTIC_SOURCE," + NL + "\t\t\t\t\t\t ";
+ protected final String TEXT_920 = ".";
+ protected final String TEXT_921 = "," + NL + "\t\t\t\t\t\t ";
+ protected final String TEXT_922 = ".INSTANCE.getString(\"_UI_GenericInvariant_diagnostic\", new Object[] { \"";
+ protected final String TEXT_923 = "\", ";
+ protected final String TEXT_924 = ".getObjectLabel(this, ";
+ protected final String TEXT_925 = ") }),";
+ protected final String TEXT_926 = NL + "\t\t\t\t\t\t new Object [] { this }));" + NL + "\t\t\t}" + NL + "\t\t\treturn false;" + NL + "\t\t}" + NL + "\t\treturn true;";
+ protected final String TEXT_927 = NL + "\t\t// TODO: implement this method" + NL + "\t\t// Ensure that you remove @generated or mark it @generated NOT" + NL + "\t\tthrow new UnsupportedOperationException();";
+ protected final String TEXT_928 = NL + "\t}" + NL;
+ protected final String TEXT_929 = NL + "\t/**" + NL + "\t * <!-- begin-user-doc -->" + NL + "\t * <!-- end-user-doc -->" + NL + "\t * @generated" + NL + "\t */" + NL + "\tpublic ChangeContext eInverseAdd(";
+ protected final String TEXT_930 = " otherEnd, int propertyIndex, ChangeContext changeContext)" + NL + "\t{" + NL + "\t\tswitch (propertyIndex)" + NL + "\t\t{";
+ protected final String TEXT_931 = NL + "\t\t\tcase ";
+ protected final String TEXT_932 = ":";
+ protected final String TEXT_933 = NL + "\t\t\t\treturn ((";
+ protected final String TEXT_934 = ")((";
+ protected final String TEXT_935 = ".InternalMapView)";
+ protected final String TEXT_936 = "()).eMap()).basicAdd(otherEnd, changeContext);";
+ protected final String TEXT_937 = NL + "\t\t\t\treturn ((";
+ protected final String TEXT_938 = ")";
+ protected final String TEXT_939 = "()).basicAdd(otherEnd, changeContext);";
+ protected final String TEXT_940 = NL + "\t\t\t\tif (eInternalContainer() != null)" + NL + "\t\t\t\t\tchangeContext = eBasicRemoveFromContainer(changeContext);" + NL + "\t\t\t\treturn eBasicSetContainer(otherEnd, ";
+ protected final String TEXT_941 = ", changeContext);";
+ protected final String TEXT_942 = NL + "\t\t\t\t";
+ protected final String TEXT_943 = " ";
+ protected final String TEXT_944 = " = (";
+ protected final String TEXT_945 = ")eVirtualGet(";
+ protected final String TEXT_946 = ");";
+ protected final String TEXT_947 = NL + "\t\t\t\tif (";
+ protected final String TEXT_948 = " != null)";
+ protected final String TEXT_949 = NL + "\t\t\t\t\tchangeContext = ((";
+ protected final String TEXT_950 = ")";
+ protected final String TEXT_951 = ").inverseRemove(this, EOPPOSITE_FEATURE_BASE - ";
+ protected final String TEXT_952 = ", null, changeContext);";
+ protected final String TEXT_953 = NL + "\t\t\t\t\tchangeContext = ((";
+ protected final String TEXT_954 = ")";
+ protected final String TEXT_955 = ").inverseRemove(this, ";
+ protected final String TEXT_956 = ", ";
+ protected final String TEXT_957 = ".class, changeContext);";
+ protected final String TEXT_958 = NL + "\t\t\t\treturn basicSet";
+ protected final String TEXT_959 = "((";
+ protected final String TEXT_960 = ")otherEnd, changeContext);";
+ protected final String TEXT_961 = NL + "\t\t}";
+ protected final String TEXT_962 = NL + "\t\treturn super.eInverseAdd(otherEnd, propertyIndex, changeContext);";
+ protected final String TEXT_963 = NL + "\t\treturn eDynamicInverseAdd(otherEnd, propertyIndex, changeContext);";
+ protected final String TEXT_964 = NL + "\t}" + NL;
+ protected final String TEXT_965 = NL + "\t/**" + NL + "\t * <!-- begin-user-doc -->" + NL + "\t * <!-- end-user-doc -->" + NL + "\t * @generated" + NL + "\t */" + NL + "\tpublic ChangeContext inverseRemove(";
+ protected final String TEXT_966 = " otherEnd, int propertyIndex, ChangeContext changeContext)" + NL + "\t{" + NL + "\t\tswitch (propertyIndex)" + NL + "\t\t{";
+ protected final String TEXT_967 = NL + "\t\t\tcase ";
+ protected final String TEXT_968 = ":";
+ protected final String TEXT_969 = NL + "\t\t\t\treturn ((";
+ protected final String TEXT_970 = ")((";
+ protected final String TEXT_971 = ".InternalMapView)";
+ protected final String TEXT_972 = "()).eMap()).basicRemove(otherEnd, changeContext);";
+ protected final String TEXT_973 = NL + "\t\t\t\treturn removeFrom";
+ protected final String TEXT_974 = "(";
+ protected final String TEXT_975 = "(), otherEnd, changeContext);";
+ protected final String TEXT_976 = NL + "\t\t\t\treturn removeFromList(";
+ protected final String TEXT_977 = "(), otherEnd, changeContext);";
+ protected final String TEXT_978 = NL + "\t\t\t\treturn eBasicSetContainer(null, ";
+ protected final String TEXT_979 = ", changeContext);";
+ protected final String TEXT_980 = NL + "\t\t\t\treturn basicUnset";
+ protected final String TEXT_981 = "(changeContext);";
+ protected final String TEXT_982 = NL + "\t\t\t\treturn basicSet";
+ protected final String TEXT_983 = "(null, changeContext);";
+ protected final String TEXT_984 = NL + "\t\t}";
+ protected final String TEXT_985 = NL + "\t\treturn super.inverseRemove(otherEnd, propertyIndex, changeContext);";
+ protected final String TEXT_986 = NL + "\t\treturn eDynamicInverseRemove(otherEnd, propertyIndex, changeContext);";
+ protected final String TEXT_987 = NL + "\t}" + NL;
+ protected final String TEXT_988 = NL + "\t/**" + NL + "\t * <!-- begin-user-doc -->" + NL + "\t * <!-- end-user-doc -->" + NL + "\t * @generated" + NL + "\t */" + NL + "\tpublic ChangeContext eBasicRemoveFromContainerFeature(ChangeContext changeContext)" + NL + "\t{" + NL + "\t\tswitch (eContainerFeatureID)" + NL + "\t\t{";
+ protected final String TEXT_989 = NL + "\t\t\tcase ";
+ protected final String TEXT_990 = ":" + NL + "\t\t\t\treturn eInternalContainer().inverseRemove(this, ";
+ protected final String TEXT_991 = ", ";
+ protected final String TEXT_992 = ".class, changeContext);";
+ protected final String TEXT_993 = NL + "\t\t}";
+ protected final String TEXT_994 = NL + "\t\treturn super.eBasicRemoveFromContainerFeature(changeContext);";
+ protected final String TEXT_995 = NL + "\t\treturn eDynamicBasicRemoveFromContainer(changeContext);";
+ protected final String TEXT_996 = NL + "\t}" + NL;
+ protected final String TEXT_997 = NL + "\t/**" + NL + "\t * <!-- begin-user-doc -->" + NL + "\t * <!-- end-user-doc -->" + NL + "\t * @generated" + NL + "\t */" + NL + "\tpublic Object get(int propertyIndex, boolean resolve)" + NL + "\t{" + NL + "\t\tswitch (propertyIndex)" + NL + "\t\t{";
+ protected final String TEXT_998 = NL + "\t\t\tcase ";
+ protected final String TEXT_999 = ":";
+ protected final String TEXT_1000 = NL + "\t\t\t\treturn ";
+ protected final String TEXT_1001 = "() ? Boolean.TRUE : Boolean.FALSE;";
+ protected final String TEXT_1002 = NL + "\t\t\t\treturn new ";
+ protected final String TEXT_1003 = "(";
+ protected final String TEXT_1004 = "());";
+ protected final String TEXT_1005 = NL + "\t\t\t\tif (resolve) return ";
+ protected final String TEXT_1006 = "();" + NL + "\t\t\t\treturn basicGet";
+ protected final String TEXT_1007 = "();";
+ protected final String TEXT_1008 = NL + "\t\t\t\tif (coreType) return ((";
+ protected final String TEXT_1009 = ".InternalMapView)";
+ protected final String TEXT_1010 = "()).eMap();" + NL + "\t\t\t\telse return ";
+ protected final String TEXT_1011 = "();";
+ protected final String TEXT_1012 = NL + "\t\t\t\tif (coreType) return ";
+ protected final String TEXT_1013 = "();" + NL + "\t\t\t\telse return ";
+ protected final String TEXT_1014 = "().map();";
+ protected final String TEXT_1015 = NL + "\t\t\t\t// XXX query introduce coreType as an argument? -- semantic = if true -- coreType - return the core EMF object if value is a non-EMF wrapper/view" + NL + "\t\t\t\t//if (coreType) " + NL + "\t\t\t\treturn ";
+ protected final String TEXT_1016 = "();";
+ protected final String TEXT_1017 = NL + "\t\t\t\tif (coreType) return ";
+ protected final String TEXT_1018 = "();" + NL + "\t\t\t\treturn ((";
+ protected final String TEXT_1019 = ".Internal)";
+ protected final String TEXT_1020 = "()).getWrapper();";
+ protected final String TEXT_1021 = NL + "\t\t\t\treturn ";
+ protected final String TEXT_1022 = "();";
+ protected final String TEXT_1023 = NL + "\t\t}";
+ protected final String TEXT_1024 = NL + "\t\treturn super.get(propertyIndex, resolve);";
+ protected final String TEXT_1025 = NL + "\t\treturn eDynamicGet(propertyIndex, resolve, coreType);";
+ protected final String TEXT_1026 = NL + "\t}" + NL;
+ protected final String TEXT_1027 = NL + "\t/**" + NL + "\t * <!-- begin-user-doc -->" + NL + "\t * <!-- end-user-doc -->" + NL + "\t * @generated" + NL + "\t */" + NL + "\tpublic void set(int propertyIndex, Object newValue)" + NL + "\t{" + NL + "\t\tswitch (propertyIndex)" + NL + "\t\t{";
+ protected final String TEXT_1028 = NL + "\t\t\tcase ";
+ protected final String TEXT_1029 = ":";
+ protected final String TEXT_1030 = NL + " \tset";
+ protected final String TEXT_1031 = "(";
+ protected final String TEXT_1032 = "(), newValue);";
+ protected final String TEXT_1033 = NL + "\t\t\t\t((";
+ protected final String TEXT_1034 = ".Internal)";
+ protected final String TEXT_1035 = "()).set(newValue);";
+ protected final String TEXT_1036 = NL + "\t\t\t\t((";
+ protected final String TEXT_1037 = ".Setting)((";
+ protected final String TEXT_1038 = ".InternalMapView)";
+ protected final String TEXT_1039 = "()).eMap()).set(newValue);";
+ protected final String TEXT_1040 = NL + "\t\t\t\t((";
+ protected final String TEXT_1041 = ".Setting)";
+ protected final String TEXT_1042 = "()).set(newValue);";
+ protected final String TEXT_1043 = NL + "\t\t\t\t";
+ protected final String TEXT_1044 = "().clear();" + NL + "\t\t\t\t";
+ protected final String TEXT_1045 = "().addAll((";
+ protected final String TEXT_1046 = ")newValue);";
+ protected final String TEXT_1047 = NL + "\t\t\t\tset";
+ protected final String TEXT_1048 = "(((";
+ protected final String TEXT_1049 = ")newValue).";
+ protected final String TEXT_1050 = "());";
+ protected final String TEXT_1051 = NL + "\t\t\t\tset";
+ protected final String TEXT_1052 = "((";
+ protected final String TEXT_1053 = ")newValue);";
+ protected final String TEXT_1054 = NL + "\t\t\t\treturn;";
+ protected final String TEXT_1055 = NL + "\t\t}";
+ protected final String TEXT_1056 = NL + "\t\tsuper.set(propertyIndex, newValue);";
+ protected final String TEXT_1057 = NL + "\t\teDynamicSet(propertyIndex, newValue);";
+ protected final String TEXT_1058 = NL + "\t}" + NL + "" + NL + "\t/**" + NL + "\t * <!-- begin-user-doc -->" + NL + "\t * <!-- end-user-doc -->" + NL + "\t * @generated" + NL + "\t */" + NL + "\tpublic void unset(int propertyIndex)" + NL + "\t{" + NL + "\t\tswitch (propertyIndex)" + NL + "\t\t{";
+ protected final String TEXT_1059 = NL + "\t\t\tcase ";
+ protected final String TEXT_1060 = ":";
+ protected final String TEXT_1061 = NL + "\t\t\t\tunset";
+ protected final String TEXT_1062 = "(";
+ protected final String TEXT_1063 = "());";
+ protected final String TEXT_1064 = NL + "\t\t\t\t";
+ protected final String TEXT_1065 = "().clear();";
+ protected final String TEXT_1066 = NL + "\t\t\t\tunset";
+ protected final String TEXT_1067 = "();";
+ protected final String TEXT_1068 = NL + "\t\t\t\tset";
+ protected final String TEXT_1069 = "((";
+ protected final String TEXT_1070 = ")null);";
+ protected final String TEXT_1071 = NL + "\t\t\t\tset";
+ protected final String TEXT_1072 = "(";
+ protected final String TEXT_1073 = "_DEFAULT_);";
+ protected final String TEXT_1074 = NL + "\t\t\t\treturn;";
+ protected final String TEXT_1075 = NL + "\t\t}";
+ protected final String TEXT_1076 = NL + "\t\tsuper.unset(propertyIndex);";
+ protected final String TEXT_1077 = NL + "\t\teDynamicUnset(propertyIndex);";
+ protected final String TEXT_1078 = NL + "\t}" + NL;
+ protected final String TEXT_1079 = NL + "\t/**" + NL + "\t * <!-- begin-user-doc -->" + NL + "\t * <!-- end-user-doc -->" + NL + "\t * @generated" + NL + "\t */" + NL + "\tpublic boolean isSet(int propertyIndex)" + NL + "\t{" + NL + "\t\tswitch (propertyIndex)" + NL + "\t\t{";
+ protected final String TEXT_1080 = NL + "\t\t\tcase ";
+ protected final String TEXT_1081 = ":";
+ protected final String TEXT_1082 = NL + "\t\t\t\treturn !is";
+ protected final String TEXT_1083 = "Empty(";
+ protected final String TEXT_1084 = "());";
+ protected final String TEXT_1085 = NL + "\t\t\t\treturn ";
+ protected final String TEXT_1086 = " != null && !is";
+ protected final String TEXT_1087 = "Empty(";
+ protected final String TEXT_1088 = "());";
+ protected final String TEXT_1089 = NL + "\t\t\t\treturn ";
+ protected final String TEXT_1090 = " != null && !";
+ protected final String TEXT_1091 = ".isEmpty();";
+ protected final String TEXT_1092 = NL + "\t\t\t\t";
+ protected final String TEXT_1093 = " ";
+ protected final String TEXT_1094 = " = (";
+ protected final String TEXT_1095 = ")eVirtualGet(";
+ protected final String TEXT_1096 = ");" + NL + "\t\t\t\treturn ";
+ protected final String TEXT_1097 = " != null && !";
+ protected final String TEXT_1098 = ".isEmpty();";
+ protected final String TEXT_1099 = NL + "\t\t\t\treturn !";
+ protected final String TEXT_1100 = "().isEmpty();";
+ protected final String TEXT_1101 = NL + "\t\t\t\treturn isSet";
+ protected final String TEXT_1102 = "();";
+ protected final String TEXT_1103 = NL + "\t\t\t\treturn ";
+ protected final String TEXT_1104 = " != null;";
+ protected final String TEXT_1105 = NL + "\t\t\t\treturn eVirtualGet(";
+ protected final String TEXT_1106 = ") != null;";
+ protected final String TEXT_1107 = NL + "\t\t\t\treturn basicGet";
+ protected final String TEXT_1108 = "() != null;";
+ protected final String TEXT_1109 = NL + "\t\t\t\treturn ";
+ protected final String TEXT_1110 = " != null;";
+ protected final String TEXT_1111 = NL + "\t\t\t\treturn eVirtualGet(";
+ protected final String TEXT_1112 = ") != null;";
+ protected final String TEXT_1113 = NL + "\t\t\t\treturn ";
+ protected final String TEXT_1114 = "() != null;";
+ protected final String TEXT_1115 = NL + "\t\t\t\treturn ((";
+ protected final String TEXT_1116 = " & ";
+ protected final String TEXT_1117 = "_EFLAG) != 0) != ";
+ protected final String TEXT_1118 = "_DEFAULT_;";
+ protected final String TEXT_1119 = NL + "\t\t\t\treturn ";
+ protected final String TEXT_1120 = " != ";
+ protected final String TEXT_1121 = "_DEFAULT_;";
+ protected final String TEXT_1122 = NL + "\t\t\t\treturn eVirtualGet(";
+ protected final String TEXT_1123 = ", ";
+ protected final String TEXT_1124 = "_DEFAULT_) != ";
+ protected final String TEXT_1125 = "_DEFAULT_;";
+ protected final String TEXT_1126 = NL + "\t\t\t\treturn ";
+ protected final String TEXT_1127 = "() != ";
+ protected final String TEXT_1128 = "_DEFAULT_;";
+ protected final String TEXT_1129 = NL + "\t\t\t\treturn ";
+ protected final String TEXT_1130 = "_DEFAULT_ == null ? ";
+ protected final String TEXT_1131 = " != null : !";
+ protected final String TEXT_1132 = "_DEFAULT_.equals(";
+ protected final String TEXT_1133 = ");";
+ protected final String TEXT_1134 = NL + "\t\t\t\t";
+ protected final String TEXT_1135 = " ";
+ protected final String TEXT_1136 = " = (";
+ protected final String TEXT_1137 = ")eVirtualGet(";
+ protected final String TEXT_1138 = ", ";
+ protected final String TEXT_1139 = "_DEFAULT_);" + NL + "\t\t\t\treturn ";
+ protected final String TEXT_1140 = "_DEFAULT_ == null ? ";
+ protected final String TEXT_1141 = " != null : !";
+ protected final String TEXT_1142 = "_DEFAULT_.equals(";
+ protected final String TEXT_1143 = ");";
+ protected final String TEXT_1144 = NL + "\t\t\t\treturn ";
+ protected final String TEXT_1145 = "_DEFAULT_ == null ? ";
+ protected final String TEXT_1146 = "() != null : !";
+ protected final String TEXT_1147 = "_DEFAULT_.equals(";
+ protected final String TEXT_1148 = "());";
+ protected final String TEXT_1149 = NL + "\t\t}";
+ protected final String TEXT_1150 = NL + "\t\treturn super.isSet(propertyIndex);";
+ protected final String TEXT_1151 = NL + "\t\treturn eDynamicIsSet(propertyIndex);";
+ protected final String TEXT_1152 = NL + "\t}" + NL;
+ protected final String TEXT_1153 = NL + "\t/**" + NL + "\t * <!-- begin-user-doc -->" + NL + "\t * <!-- end-user-doc -->" + NL + "\t * @generated" + NL + "\t */" + NL + "\tpublic int eBaseStructuralFeatureID(int derivedFeatureID, Class baseClass)" + NL + "\t{";
+ protected final String TEXT_1154 = NL + "\t\tif (baseClass == ";
+ protected final String TEXT_1155 = ".class)" + NL + "\t\t{" + NL + "\t\t\tswitch (derivedFeatureID)" + NL + "\t\t\t{";
+ protected final String TEXT_1156 = NL + "\t\t\t\tcase ";
+ protected final String TEXT_1157 = ": return ";
+ protected final String TEXT_1158 = ";";
+ protected final String TEXT_1159 = NL + "\t\t\t\tdefault: return -1;" + NL + "\t\t\t}" + NL + "\t\t}";
+ protected final String TEXT_1160 = NL + "\t\treturn super.eBaseStructuralFeatureID(derivedFeatureID, baseClass);" + NL + "\t}" + NL + "" + NL + "\t/**" + NL + "\t * <!-- begin-user-doc -->" + NL + "\t * <!-- end-user-doc -->" + NL + "\t * @generated" + NL + "\t */" + NL + "\tpublic int eDerivedStructuralFeatureID(int baseFeatureID, Class baseClass)" + NL + "\t{";
+ protected final String TEXT_1161 = NL + "\t\tif (baseClass == ";
+ protected final String TEXT_1162 = ".class)" + NL + "\t\t{" + NL + "\t\t\tswitch (baseFeatureID)" + NL + "\t\t\t{";
+ protected final String TEXT_1163 = NL + "\t\t\t\tcase ";
+ protected final String TEXT_1164 = ": return ";
+ protected final String TEXT_1165 = ";";
+ protected final String TEXT_1166 = NL + "\t\t\t\tdefault: return -1;" + NL + "\t\t\t}" + NL + "\t\t}";
+ protected final String TEXT_1167 = NL + "\t\treturn super.eDerivedStructuralFeatureID(baseFeatureID, baseClass);" + NL + "\t}" + NL;
+ protected final String TEXT_1168 = NL + "\t/**" + NL + "\t * <!-- begin-user-doc -->" + NL + "\t * <!-- end-user-doc -->" + NL + "\t * @generated" + NL + "\t */" + NL + "\tprotected Object[] eVirtualValues()" + NL + "\t{" + NL + "\t\treturn ";
+ protected final String TEXT_1169 = ";" + NL + "\t}" + NL + "" + NL + "\t/**" + NL + "\t * <!-- begin-user-doc -->" + NL + "\t * <!-- end-user-doc -->" + NL + "\t * @generated" + NL + "\t */" + NL + "\tprotected void setVirtualValues(Object[] newValues)" + NL + "\t{" + NL + "\t\t";
+ protected final String TEXT_1170 = " = newValues;" + NL + "\t}" + NL;
+ protected final String TEXT_1171 = NL + "\t/**" + NL + "\t * <!-- begin-user-doc -->" + NL + "\t * <!-- end-user-doc -->" + NL + "\t * @generated" + NL + "\t */" + NL + "\tprotected int eVirtualIndexBits(int offset)" + NL + "\t{" + NL + "\t\tswitch (offset)" + NL + "\t\t{";
+ protected final String TEXT_1172 = NL + "\t\t\tcase ";
+ protected final String TEXT_1173 = " :" + NL + "\t\t\t\treturn ";
+ protected final String TEXT_1174 = ";";
+ protected final String TEXT_1175 = NL + "\t\t\tdefault :" + NL + "\t\t\t\tthrow new IndexOutOfBoundsException();" + NL + "\t\t}" + NL + "\t}" + NL + "" + NL + "\t/**" + NL + "\t * <!-- begin-user-doc -->" + NL + "\t * <!-- end-user-doc -->" + NL + "\t * @generated" + NL + "\t */" + NL + "\tprotected void setVirtualIndexBits(int offset, int newIndexBits)" + NL + "\t{" + NL + "\t\tswitch (offset)" + NL + "\t\t{";
+ protected final String TEXT_1176 = NL + "\t\t\tcase ";
+ protected final String TEXT_1177 = " :" + NL + "\t\t\t\t";
+ protected final String TEXT_1178 = " = newIndexBits;" + NL + "\t\t\t\tbreak;";
+ protected final String TEXT_1179 = NL + "\t\t\tdefault :" + NL + "\t\t\t\tthrow new IndexOutOfBoundsException();" + NL + "\t\t}" + NL + "\t}" + NL;
+ protected final String TEXT_1180 = NL + "\t/**" + NL + "\t * <!-- begin-user-doc -->" + NL + "\t * <!-- end-user-doc -->" + NL + "\t * @generated" + NL + "\t */" + NL + "\tpublic String toString()" + NL + "\t{" + NL + "\t\tif (isProxy()) return super.toString();" + NL + "" + NL + "\t\tStringBuffer result = new StringBuffer(super.toString());";
+ protected final String TEXT_1181 = NL + "\t\tresult.append(\" (";
+ protected final String TEXT_1182 = ": \");";
+ protected final String TEXT_1183 = NL + "\t\tresult.append(\", ";
+ protected final String TEXT_1184 = ": \");";
+ protected final String TEXT_1185 = NL + "\t\tif (eVirtualIsSet(";
+ protected final String TEXT_1186 = ")) result.append(eVirtualGet(";
+ protected final String TEXT_1187 = ")); else result.append(\"<unset>\");";
+ protected final String TEXT_1188 = NL + "\t\tif (";
+ protected final String TEXT_1189 = "(";
+ protected final String TEXT_1190 = " & ";
+ protected final String TEXT_1191 = "_ESETFLAG) != 0";
+ protected final String TEXT_1192 = "_set_";
+ protected final String TEXT_1193 = ") result.append((";
+ protected final String TEXT_1194 = " & ";
+ protected final String TEXT_1195 = "_EFLAG) != 0); else result.append(\"<unset>\");";
+ protected final String TEXT_1196 = NL + "\t\tif (";
+ protected final String TEXT_1197 = "(";
+ protected final String TEXT_1198 = " & ";
+ protected final String TEXT_1199 = "_ESETFLAG) != 0";
+ protected final String TEXT_1200 = "_set_";
+ protected final String TEXT_1201 = ") result.append(";
+ protected final String TEXT_1202 = "); else result.append(\"<unset>\");";
+ protected final String TEXT_1203 = NL + "\t\tresult.append(eVirtualGet(";
+ protected final String TEXT_1204 = ", ";
+ protected final String TEXT_1205 = "_DEFAULT_";
+ protected final String TEXT_1206 = "));";
+ protected final String TEXT_1207 = NL + "\t\tresult.append((";
+ protected final String TEXT_1208 = " & ";
+ protected final String TEXT_1209 = "_EFLAG) != 0);";
+ protected final String TEXT_1210 = NL + "\t\tresult.append(";
+ protected final String TEXT_1211 = ");";
+ protected final String TEXT_1212 = NL + "\t\tresult.append(')');" + NL + "\t\treturn result.toString();" + NL + "\t}" + NL;
+ protected final String TEXT_1213 = NL + "\t/**" + NL + "\t * <!-- begin-user-doc -->" + NL + "\t * <!-- end-user-doc -->" + NL + "\t * @generated" + NL + "\t */" + NL + "\tprotected int hash = -1;" + NL + "" + NL + "\t/**" + NL + "\t * <!-- begin-user-doc -->" + NL + "\t * <!-- end-user-doc -->" + NL + " \t * @generated" + NL + " \t */" + NL + "\tpublic int getHash()" + NL + "\t{" + NL + "\t\tif (hash == -1)" + NL + "\t\t{" + NL + "\t\t\tObject theKey = getKey();" + NL + "\t\t\thash = (theKey == null ? 0 : theKey.hashCode());" + NL + "\t\t}" + NL + "\t\treturn hash;" + NL + "\t}" + NL + "" + NL + "\t/**" + NL + " \t * <!-- begin-user-doc -->" + NL + " \t * <!-- end-user-doc -->" + NL + " \t * @generated" + NL + " \t */" + NL + "\tpublic void setHash(int hash)" + NL + "\t{" + NL + "\t\tthis.hash = hash;" + NL + "\t}" + NL + "" + NL + "\t/**" + NL + " \t * <!-- begin-user-doc -->" + NL + " \t * <!-- end-user-doc -->" + NL + " \t * @generated" + NL + " \t */" + NL + "\tpublic Object getKey()" + NL + "\t{" + NL + " \t";
+ protected final String TEXT_1214 = NL + "\t\treturn new ";
+ protected final String TEXT_1215 = "(getTypedKey());" + NL + " \t";
+ protected final String TEXT_1216 = NL + "\t\treturn getTypedKey();" + NL + " \t";
+ protected final String TEXT_1217 = NL + "\t}" + NL + "" + NL + "\t/**" + NL + "\t * <!-- begin-user-doc -->" + NL + "\t * <!-- end-user-doc -->" + NL + "\t * @generated" + NL + "\t */" + NL + "\tpublic void setKey(Object key)" + NL + "\t{";
+ protected final String TEXT_1218 = NL + "\t\tgetTypedKey().addAll((";
+ protected final String TEXT_1219 = ")key);";
+ protected final String TEXT_1220 = NL + "\t\tsetTypedKey(((";
+ protected final String TEXT_1221 = ")key).";
+ protected final String TEXT_1222 = "());";
+ protected final String TEXT_1223 = NL + "\t\tsetTypedKey((";
+ protected final String TEXT_1224 = ")key);";
+ protected final String TEXT_1225 = NL + "\t}" + NL + "" + NL + "\t/**" + NL + "\t * <!-- begin-user-doc -->" + NL + "\t * <!-- end-user-doc -->" + NL + "\t * @generated" + NL + "\t */" + NL + "\tpublic Object getValue()" + NL + "\t{" + NL + " \t";
+ protected final String TEXT_1226 = NL + "\t\treturn new ";
+ protected final String TEXT_1227 = "(getTypedValue());" + NL + " \t";
+ protected final String TEXT_1228 = NL + "\t\treturn getTypedValue();" + NL + " \t";
+ protected final String TEXT_1229 = NL + "\t}" + NL + "" + NL + "\t/**" + NL + "\t * <!-- begin-user-doc -->" + NL + "\t * <!-- end-user-doc -->" + NL + "\t * @generated" + NL + "\t */" + NL + "\tpublic Object setValue(Object value)" + NL + "\t{" + NL + "\t\tObject oldValue = getValue();" + NL + " \t";
+ protected final String TEXT_1230 = NL + "\t\tgetTypedValue().clear();" + NL + "\t\tgetTypedValue().addAll((";
+ protected final String TEXT_1231 = ")value);" + NL + " \t";
+ protected final String TEXT_1232 = NL + "\t\tsetTypedValue(((";
+ protected final String TEXT_1233 = ")value).";
+ protected final String TEXT_1234 = "());" + NL + " \t";
+ protected final String TEXT_1235 = NL + "\t\tsetTypedValue((";
+ protected final String TEXT_1236 = ")value);" + NL + " \t";
+ protected final String TEXT_1237 = NL + "\t\treturn oldValue;" + NL + "\t}" + NL + "" + NL + "\t/**" + NL + "\t * <!-- begin-user-doc -->" + NL + "\t * <!-- end-user-doc -->" + NL + "\t * @generated" + NL + "\t */" + NL + "\tpublic ";
+ protected final String TEXT_1238 = " getEMap()" + NL + "\t{" + NL + "\t\t";
+ protected final String TEXT_1239 = " container = eContainer();" + NL + "\t\treturn container == null ? null : (";
+ protected final String TEXT_1240 = ")container.get(eContainmentFeature());" + NL + "\t}";
+ protected final String TEXT_1241 = NL + "} //";
+ protected final String TEXT_1242 = NL;
+
+ public String generate(Object argument)
+ {
+ final StringBuffer stringBuffer = new StringBuffer();
+
+ GenClass genClass = (GenClass)((Object[])argument)[0]; GenPackage genPackage = genClass.getGenPackage(); GenModel genModel=genPackage.getGenModel();
+ boolean isInterface = Boolean.TRUE.equals(((Object[])argument)[1]); boolean isImplementation = Boolean.TRUE.equals(((Object[])argument)[2]);
+ String publicStaticFinalFlag = isImplementation ? "public static final " : "";
+ stringBuffer.append(TEXT_1);
+ stringBuffer.append(TEXT_2);
+ stringBuffer.append("$");
+ stringBuffer.append(TEXT_3);
+ stringBuffer.append("$");
+ stringBuffer.append(TEXT_4);
+ if (isInterface) {
+ stringBuffer.append(TEXT_5);
+ stringBuffer.append(genPackage.getInterfacePackageName());
+ stringBuffer.append(TEXT_6);
+ } else {
+ stringBuffer.append(TEXT_7);
+ stringBuffer.append(genPackage.getClassPackageName());
+ stringBuffer.append(TEXT_8);
+ }
+ stringBuffer.append(TEXT_9);
+ genModel.markImportLocation(stringBuffer, genPackage);
+ stringBuffer.append(TEXT_10);
+ if (isInterface) {
+ stringBuffer.append(TEXT_11);
+ stringBuffer.append(genClass.getFormattedName());
+ stringBuffer.append(TEXT_12);
+ if (genClass.hasDocumentation()) {
+ stringBuffer.append(TEXT_13);
+ stringBuffer.append(genClass.getDocumentation(genModel.getIndentation(stringBuffer)));
+ stringBuffer.append(TEXT_14);
+ }
+ stringBuffer.append(TEXT_15);
+ if (!genClass.getGenFeatures().isEmpty()) {
+ stringBuffer.append(TEXT_16);
+ for (Iterator i=genClass.getGenFeatures().iterator(); i.hasNext();) { GenFeature genFeature = (GenFeature)i.next();
+ if (!genFeature.isSuppressedGetVisibility()) {
+ stringBuffer.append(TEXT_17);
+ stringBuffer.append(genClass.getQualifiedInterfaceName());
+ stringBuffer.append(TEXT_18);
+ stringBuffer.append(genFeature.getGetAccessor());
+ stringBuffer.append(TEXT_19);
+ stringBuffer.append(genFeature.getFormattedName());
+ stringBuffer.append(TEXT_20);
+ }
+ }
+ stringBuffer.append(TEXT_21);
+ }
+ stringBuffer.append(TEXT_22);
+ if (!genModel.isSuppressEMFMetaData()) {
+ stringBuffer.append(TEXT_23);
+ stringBuffer.append(genPackage.getQualifiedPackageInterfaceName());
+ stringBuffer.append(TEXT_24);
+ stringBuffer.append(genClass.getClassifierAccessorName());
+ stringBuffer.append(TEXT_25);
+ }
+ if (!genModel.isSuppressEMFModelTags()) { boolean first = true; for (StringTokenizer stringTokenizer = new StringTokenizer(genClass.getModelInfo(), "\n\r"); stringTokenizer.hasMoreTokens(); ) { String modelInfo = stringTokenizer.nextToken(); if (first) { first = false;
+ stringBuffer.append(TEXT_26);
+ stringBuffer.append(modelInfo);
+ } else {
+ stringBuffer.append(TEXT_27);
+ stringBuffer.append(modelInfo);
+ }} if (first) {
+ stringBuffer.append(TEXT_28);
+ }}
+ if (genClass.needsRootExtendsInterfaceExtendsTag()) {
+ stringBuffer.append(TEXT_29);
+ stringBuffer.append(genModel.getImportedName(genModel.getRootExtendsInterface()));
+ }
+ stringBuffer.append(TEXT_30);
+ } else {
+ stringBuffer.append(TEXT_31);
+ stringBuffer.append(genClass.getFormattedName());
+ stringBuffer.append(TEXT_32);
+ if (!genClass.getImplementedGenFeatures().isEmpty()) {
+ stringBuffer.append(TEXT_33);
+ for (Iterator i=genClass.getImplementedGenFeatures().iterator(); i.hasNext();) { GenFeature genFeature = (GenFeature)i.next();
+ stringBuffer.append(TEXT_34);
+ stringBuffer.append(genClass.getQualifiedClassName());
+ stringBuffer.append(TEXT_35);
+ stringBuffer.append(genFeature.getGetAccessor());
+ stringBuffer.append(TEXT_36);
+ stringBuffer.append(genFeature.getFormattedName());
+ stringBuffer.append(TEXT_37);
+ }
+ stringBuffer.append(TEXT_38);
+ }
+ stringBuffer.append(TEXT_39);
+ }
+ if (isImplementation) {
+ stringBuffer.append(TEXT_40);
+ if (genClass.isAbstract()) {
+ stringBuffer.append(TEXT_41);
+ }
+ stringBuffer.append(TEXT_42);
+ stringBuffer.append(genClass.getClassName());
+ stringBuffer.append(genClass.getClassExtends());
+ stringBuffer.append(genClass.getClassImplements());
+ } else {
+ stringBuffer.append(TEXT_43);
+ stringBuffer.append(genClass.getInterfaceName());
+ stringBuffer.append(genClass.getInterfaceExtends());
+ }
+ stringBuffer.append(TEXT_44);
+ if (genModel.getCopyrightText() != null) {
+ stringBuffer.append(TEXT_45);
+ stringBuffer.append(publicStaticFinalFlag);
+ stringBuffer.append(genModel.getImportedName("java.lang.String"));
+ stringBuffer.append(TEXT_46);
+ stringBuffer.append(genModel.getCopyrightText());
+ stringBuffer.append(TEXT_47);
+ stringBuffer.append(genModel.getNonNLS());
+ stringBuffer.append(TEXT_48);
+ }
+ if (isImplementation && genModel.getDriverNumber() != null) {
+ stringBuffer.append(TEXT_49);
+ stringBuffer.append(genModel.getImportedName("java.lang.String"));
+ stringBuffer.append(TEXT_50);
+ stringBuffer.append(genModel.getDriverNumber());
+ stringBuffer.append(TEXT_51);
+ stringBuffer.append(genModel.getNonNLS());
+ stringBuffer.append(TEXT_52);
+ }
+ if (isImplementation && genClass.isJavaIOSerializable()) {
+ stringBuffer.append(TEXT_53);
+ }
+ if (isImplementation && genModel.isVirtualDelegation()) { String eVirtualValuesField = genClass.getEVirtualValuesField();
+ if (eVirtualValuesField != null) {
+ stringBuffer.append(TEXT_54);
+ stringBuffer.append(eVirtualValuesField);
+ stringBuffer.append(TEXT_55);
+ }
+ { List eVirtualIndexBitFields = genClass.getEVirtualIndexBitFields(new ArrayList());
+ if (!eVirtualIndexBitFields.isEmpty()) {
+ for (Iterator i = eVirtualIndexBitFields.iterator(); i.hasNext();) { String eVirtualIndexBitField = (String)i.next();
+ stringBuffer.append(TEXT_56);
+ stringBuffer.append(eVirtualIndexBitField);
+ stringBuffer.append(TEXT_57);
+ }
+ }
+ }
+ }
+ if (isImplementation && genClass.isModelRoot() && genModel.isBooleanFlagsEnabled() && genModel.getBooleanFlagsReservedBits() == -1) {
+ stringBuffer.append(TEXT_58);
+ stringBuffer.append(genModel.getBooleanFlagsField());
+ stringBuffer.append(TEXT_59);
+ }
+ if (isImplementation && !genModel.isReflectiveDelegation()) {
+ for (Iterator f=genClass.getAllGenFeatures().iterator(); f.hasNext();) { GenFeature genFeature = (GenFeature)f.next();
+ stringBuffer.append(TEXT_60);
+ stringBuffer.append(genFeature.getFormattedName());
+ stringBuffer.append(TEXT_61);
+ stringBuffer.append(genFeature.getFeatureKind());
+ stringBuffer.append(TEXT_62);
+ String featureValue = "";
+ List allFeatures = genClass.getAllGenFeatures();
+ int g = allFeatures.indexOf(genFeature);
+ GenClass base = genClass.getBaseGenClass();
+ if (base == null)
+ {
+ featureValue = Integer.toString(g);
+ } else {
+ int baseCount = base.getFeatureCount();
+ if (g < baseCount)
+ {
+ featureValue = base.getClassName() + "." + genFeature.getUpperName();
+ } else {
+ String baseCountID = base.getClassName() + "." + "SDO_PROPERTY_COUNT";
+ featureValue = baseCountID + " + " + Integer.toString(g - baseCount);
+ }
+ }
+ stringBuffer.append(TEXT_63);
+ stringBuffer.append(genFeature.getUpperName());
+ stringBuffer.append(TEXT_64);
+ stringBuffer.append(featureValue);
+ stringBuffer.append(TEXT_65);
+ }
+ stringBuffer.append(TEXT_66);
+ String featureCount = "";
+ GenClass base = genClass.getBaseGenClass();
+ if (base == null)
+ {
+ featureCount = Integer.toString(genClass.getFeatureCount());
+ }
+ else {
+ String baseCountID = base.getClassName() + "." + "SDO_PROPERTY_COUNT";
+ featureCount = baseCountID + " + " + Integer.toString(genClass.getFeatureCount() - base.getFeatureCount());
+ }
+ stringBuffer.append(TEXT_67);
+ stringBuffer.append(featureCount);
+ stringBuffer.append(TEXT_68);
+ for (Iterator i=genClass.getDeclaredFieldGenFeatures().iterator(); i.hasNext();) { GenFeature genFeature = (GenFeature)i.next();
+ if (genFeature.isListType() || genFeature.isReferenceType()) {
+ if (genClass.isField(genFeature)) {
+ stringBuffer.append(TEXT_69);
+ stringBuffer.append(genFeature.getGetAccessor());
+ stringBuffer.append(TEXT_70);
+ stringBuffer.append(genFeature.getFormattedName());
+ stringBuffer.append(TEXT_71);
+ stringBuffer.append(genFeature.getFeatureKind());
+ stringBuffer.append(TEXT_72);
+ stringBuffer.append(genFeature.getGetAccessor());
+ stringBuffer.append(TEXT_73);
+ stringBuffer.append(genModel.getImportedName(genFeature.getType()));
+ stringBuffer.append(TEXT_74);
+ stringBuffer.append(genFeature.getSafeName());
+ stringBuffer.append(TEXT_75);
+ }
+ if (genModel.isArrayAccessors() && !genFeature.isFeatureMapType() && !genFeature.isMapType()) {
+ stringBuffer.append(TEXT_76);
+ stringBuffer.append(genFeature.getGetArrayAccessor());
+ stringBuffer.append(TEXT_77);
+ stringBuffer.append(genFeature.getFormattedName());
+ stringBuffer.append(TEXT_78);
+ stringBuffer.append(genFeature.getGetArrayAccessor());
+ stringBuffer.append(TEXT_79);
+ stringBuffer.append(genFeature.getListItemType());
+ stringBuffer.append(TEXT_80);
+ stringBuffer.append(genFeature.getUpperName());
+ stringBuffer.append(TEXT_81);
+ stringBuffer.append(genFeature.getListItemType());
+ stringBuffer.append(TEXT_82);
+ }
+ } else {
+ if (!genFeature.isVolatile() || !genModel.isReflectiveDelegation() && (!genFeature.hasDelegateFeature() || !genFeature.isUnsettable())) {
+ stringBuffer.append(TEXT_83);
+ stringBuffer.append(genFeature.getGetAccessor());
+ stringBuffer.append(TEXT_84);
+ stringBuffer.append(genFeature.getFormattedName());
+ stringBuffer.append(TEXT_85);
+ stringBuffer.append(genFeature.getFeatureKind());
+ stringBuffer.append(TEXT_86);
+ stringBuffer.append(genFeature.getGetAccessor());
+ stringBuffer.append(TEXT_87);
+ stringBuffer.append(genFeature.getImportedType());
+ stringBuffer.append(TEXT_88);
+ stringBuffer.append(genFeature.getUpperName());
+ stringBuffer.append(TEXT_89);
+ stringBuffer.append(genFeature.getStaticDefaultValue());
+ stringBuffer.append(TEXT_90);
+ stringBuffer.append(genModel.getNonNLS(genFeature.getStaticDefaultValue()));
+ stringBuffer.append(TEXT_91);
+ }
+ if (genClass.isField(genFeature)) {
+ if (genClass.isFlag(genFeature)) {
+ if (genClass.getFlagIndex(genFeature) > 31 && genClass.getFlagIndex(genFeature) % 32 == 0) {
+ stringBuffer.append(TEXT_92);
+ stringBuffer.append(genClass.getFlagsField(genFeature));
+ stringBuffer.append(TEXT_93);
+ }
+ stringBuffer.append(TEXT_94);
+ stringBuffer.append(genFeature.getGetAccessor());
+ stringBuffer.append(TEXT_95);
+ stringBuffer.append(genFeature.getFormattedName());
+ stringBuffer.append(TEXT_96);
+ stringBuffer.append(genFeature.getFeatureKind());
+ stringBuffer.append(TEXT_97);
+ stringBuffer.append(genFeature.getGetAccessor());
+ stringBuffer.append(TEXT_98);
+ stringBuffer.append(genFeature.getUpperName());
+ stringBuffer.append(TEXT_99);
+ stringBuffer.append("<< " + genClass.getFlagIndex(genFeature) % 32 );
+ stringBuffer.append(TEXT_100);
+ } else {
+ stringBuffer.append(TEXT_101);
+ stringBuffer.append(genFeature.getGetAccessor());
+ stringBuffer.append(TEXT_102);
+ stringBuffer.append(genFeature.getFormattedName());
+ stringBuffer.append(TEXT_103);
+ stringBuffer.append(genFeature.getFeatureKind());
+ stringBuffer.append(TEXT_104);
+ stringBuffer.append(genFeature.getGetAccessor());
+ stringBuffer.append(TEXT_105);
+ stringBuffer.append(genFeature.getImportedType());
+ stringBuffer.append(TEXT_106);
+ stringBuffer.append(genFeature.getSafeName());
+ stringBuffer.append(TEXT_107);
+ stringBuffer.append(genFeature.getUpperName());
+ stringBuffer.append(TEXT_108);
+ }
+ }
+ }
+ if (genClass.isESetField(genFeature)) {
+ if (genClass.isESetFlag(genFeature)) {
+ if (genClass.getESetFlagIndex(genFeature) > 31 && genClass.getESetFlagIndex(genFeature) % 32 == 0) {
+ stringBuffer.append(TEXT_109);
+ stringBuffer.append(genClass.getESetFlagsField(genFeature));
+ stringBuffer.append(TEXT_110);
+ }
+ stringBuffer.append(TEXT_111);
+ stringBuffer.append(genFeature.getFormattedName());
+ stringBuffer.append(TEXT_112);
+ stringBuffer.append(genFeature.getFeatureKind());
+ stringBuffer.append(TEXT_113);
+ stringBuffer.append(genFeature.getUpperName());
+ stringBuffer.append(TEXT_114);
+ stringBuffer.append("<< " + genClass.getESetFlagIndex(genFeature) % 32 );
+ stringBuffer.append(TEXT_115);
+ } else {
+ stringBuffer.append(TEXT_116);
+ stringBuffer.append(genFeature.getFormattedName());
+ stringBuffer.append(TEXT_117);
+ stringBuffer.append(genFeature.getFeatureKind());
+ stringBuffer.append(TEXT_118);
+ stringBuffer.append(genFeature.getUncapName());
+ stringBuffer.append(TEXT_119);
+ }
+ }
+ }
+ //Class/declaredFieldGenFeature.override.javajetinc
+ }
+ if (isImplementation) {
+ stringBuffer.append(TEXT_120);
+ stringBuffer.append(genClass.getClassName());
+ stringBuffer.append(TEXT_121);
+ for (Iterator i=genClass.getFlagGenFeatures("true").iterator(); i.hasNext();) { GenFeature genFeature = (GenFeature)i.next();
+ stringBuffer.append(TEXT_122);
+ stringBuffer.append(genClass.getFlagsField(genFeature));
+ stringBuffer.append(TEXT_123);
+ stringBuffer.append(genFeature.getUpperName());
+ stringBuffer.append(TEXT_124);
+ }
+ stringBuffer.append(TEXT_125);
+ stringBuffer.append(genModel.getImportedName("commonj.sdo.Type"));
+ stringBuffer.append(TEXT_126);
+ stringBuffer.append(genPackage.getImportedFactoryClassName());
+ stringBuffer.append(TEXT_127);
+ stringBuffer.append(genPackage.getImportedFactoryInterfaceName());
+ stringBuffer.append(TEXT_128);
+ stringBuffer.append(genClass.getClassifierAccessorName());
+ stringBuffer.append(TEXT_129);
+ }
+ for (Iterator i=(isImplementation ? genClass.getImplementedGenFeatures() : genClass.getDeclaredGenFeatures()).iterator(); i.hasNext();) { GenFeature genFeature = (GenFeature)i.next();
+ if (genModel.isArrayAccessors() && genFeature.isListType() && !genFeature.isFeatureMapType() && !genFeature.isMapType()) {
+ stringBuffer.append(TEXT_130);
+ if (!isImplementation) {
+ stringBuffer.append(TEXT_131);
+ stringBuffer.append(genFeature.getListItemType());
+ stringBuffer.append(TEXT_132);
+ stringBuffer.append(genFeature.getGetArrayAccessor());
+ stringBuffer.append(TEXT_133);
+ } else {
+ stringBuffer.append(TEXT_134);
+ stringBuffer.append(genFeature.getListItemType());
+ stringBuffer.append(TEXT_135);
+ stringBuffer.append(genFeature.getGetArrayAccessor());
+ stringBuffer.append(TEXT_136);
+ if (genFeature.isVolatile()) {
+ stringBuffer.append(TEXT_137);
+ stringBuffer.append(genModel.getImportedName("org.eclipse.emf.common.util.BasicEList"));
+ stringBuffer.append(TEXT_138);
+ stringBuffer.append(genModel.getImportedName("org.eclipse.emf.common.util.BasicEList"));
+ stringBuffer.append(TEXT_139);
+ stringBuffer.append(genFeature.getGetAccessor());
+ stringBuffer.append(TEXT_140);
+ stringBuffer.append(genFeature.getUpperName());
+ stringBuffer.append(TEXT_141);
+ } else {
+ stringBuffer.append(TEXT_142);
+ stringBuffer.append(genFeature.getSafeName());
+ stringBuffer.append(TEXT_143);
+ stringBuffer.append(genFeature.getSafeName());
+ stringBuffer.append(TEXT_144);
+ stringBuffer.append(genFeature.getUpperName());
+ stringBuffer.append(TEXT_145);
+ stringBuffer.append(genModel.getImportedName("org.eclipse.emf.common.util.BasicEList"));
+ stringBuffer.append(TEXT_146);
+ stringBuffer.append(genModel.getImportedName("org.eclipse.emf.common.util.BasicEList"));
+ stringBuffer.append(TEXT_147);
+ stringBuffer.append(genFeature.getSafeName());
+ stringBuffer.append(TEXT_148);
+ }
+ stringBuffer.append(TEXT_149);
+ stringBuffer.append(genFeature.getListItemType());
+ stringBuffer.append(TEXT_150);
+ }
+ stringBuffer.append(TEXT_151);
+ if (!isImplementation) {
+ stringBuffer.append(TEXT_152);
+ stringBuffer.append(genFeature.getListItemType());
+ stringBuffer.append(TEXT_153);
+ stringBuffer.append(genFeature.getAccessorName());
+ stringBuffer.append(TEXT_154);
+ } else {
+ stringBuffer.append(TEXT_155);
+ stringBuffer.append(genFeature.getListItemType());
+ stringBuffer.append(TEXT_156);
+ stringBuffer.append(genFeature.getAccessorName());
+ stringBuffer.append(TEXT_157);
+ stringBuffer.append(genFeature.getListItemType());
+ stringBuffer.append(TEXT_158);
+ stringBuffer.append(genFeature.getGetAccessor());
+ stringBuffer.append(TEXT_159);
+ }
+ stringBuffer.append(TEXT_160);
+ if (!isImplementation) {
+ stringBuffer.append(TEXT_161);
+ stringBuffer.append(genFeature.getAccessorName());
+ stringBuffer.append(TEXT_162);
+ } else {
+ stringBuffer.append(TEXT_163);
+ stringBuffer.append(genFeature.getAccessorName());
+ stringBuffer.append(TEXT_164);
+ if (genFeature.isVolatile()) {
+ stringBuffer.append(TEXT_165);
+ stringBuffer.append(genFeature.getGetAccessor());
+ stringBuffer.append(TEXT_166);
+ } else {
+ stringBuffer.append(TEXT_167);
+ stringBuffer.append(genFeature.getSafeName());
+ stringBuffer.append(TEXT_168);
+ stringBuffer.append(genFeature.getSafeName());
+ stringBuffer.append(TEXT_169);
+ }
+ stringBuffer.append(TEXT_170);
+ }
+ stringBuffer.append(TEXT_171);
+ if (!isImplementation) {
+ stringBuffer.append(TEXT_172);
+ stringBuffer.append(genFeature.getAccessorName());
+ stringBuffer.append(TEXT_173);
+ stringBuffer.append(genFeature.getListItemType());
+ stringBuffer.append(TEXT_174);
+ stringBuffer.append(genFeature.getCapName());
+ stringBuffer.append(TEXT_175);
+ } else {
+ stringBuffer.append(TEXT_176);
+ stringBuffer.append(genFeature.getAccessorName());
+ stringBuffer.append(TEXT_177);
+ stringBuffer.append(genFeature.getListItemType());
+ stringBuffer.append(TEXT_178);
+ stringBuffer.append(genFeature.getCapName());
+ stringBuffer.append(TEXT_179);
+ stringBuffer.append(genModel.getImportedName("org.eclipse.emf.common.util.BasicEList"));
+ stringBuffer.append(TEXT_180);
+ stringBuffer.append(genFeature.getGetAccessor());
+ stringBuffer.append(TEXT_181);
+ stringBuffer.append(genFeature.getCapName());
+ stringBuffer.append(TEXT_182);
+ stringBuffer.append(genFeature.getCapName());
+ stringBuffer.append(TEXT_183);
+ }
+ stringBuffer.append(TEXT_184);
+ if (!isImplementation) {
+ stringBuffer.append(TEXT_185);
+ stringBuffer.append(genFeature.getAccessorName());
+ stringBuffer.append(TEXT_186);
+ stringBuffer.append(genFeature.getListItemType());
+ stringBuffer.append(TEXT_187);
+ } else {
+ stringBuffer.append(TEXT_188);
+ stringBuffer.append(genFeature.getAccessorName());
+ stringBuffer.append(TEXT_189);
+ stringBuffer.append(genFeature.getListItemType());
+ stringBuffer.append(TEXT_190);
+ stringBuffer.append(genFeature.getGetAccessor());
+ stringBuffer.append(TEXT_191);
+ }
+ }
+ if (genFeature.isGet() && (isImplementation || !genFeature.isSuppressedGetVisibility())) {
+ if (isInterface) {
+ stringBuffer.append(TEXT_192);
+ stringBuffer.append(genFeature.getFormattedName());
+ stringBuffer.append(TEXT_193);
+ stringBuffer.append(genFeature.getFeatureKind());
+ stringBuffer.append(TEXT_194);
+ if (genFeature.isListType()) {
+ if (genFeature.isMapType()) { GenFeature keyFeature = genFeature.getMapEntryTypeGenClass().getMapEntryKeyFeature(); GenFeature valueFeature = genFeature.getMapEntryTypeGenClass().getMapEntryValueFeature();
+ stringBuffer.append(TEXT_195);
+ if (keyFeature.isListType()) {
+ stringBuffer.append(TEXT_196);
+ stringBuffer.append(keyFeature.getQualifiedListItemType());
+ stringBuffer.append(TEXT_197);
+ } else {
+ stringBuffer.append(TEXT_198);
+ stringBuffer.append(keyFeature.getType());
+ stringBuffer.append(TEXT_199);
+ }
+ stringBuffer.append(TEXT_200);
+ if (valueFeature.isListType()) {
+ stringBuffer.append(TEXT_201);
+ stringBuffer.append(valueFeature.getQualifiedListItemType());
+ stringBuffer.append(TEXT_202);
+ } else {
+ stringBuffer.append(TEXT_203);
+ stringBuffer.append(valueFeature.getType());
+ stringBuffer.append(TEXT_204);
+ }
+ stringBuffer.append(TEXT_205);
+ } else if (!genFeature.isWrappedFeatureMapType() && !(genModel.isSuppressEMFMetaData() && "org.eclipse.emf.ecore.EObject".equals(genFeature.getQualifiedListItemType()))) {
+ stringBuffer.append(TEXT_206);
+ stringBuffer.append(genFeature.getQualifiedListItemType());
+ stringBuffer.append(TEXT_207);
+ }
+ } else if (genFeature.isSetDefaultValue()) {
+ stringBuffer.append(TEXT_208);
+ stringBuffer.append(genFeature.getDefaultValue());
+ stringBuffer.append(TEXT_209);
+ }
+ if (genFeature.getTypeGenEnum() != null) {
+ stringBuffer.append(TEXT_210);
+ stringBuffer.append(genFeature.getTypeGenEnum().getQualifiedName());
+ stringBuffer.append(TEXT_211);
+ }
+ if (genFeature.isBidirectional() && !genFeature.getReverse().getGenClass().isMapEntry()) { GenFeature reverseGenFeature = genFeature.getReverse();
+ if (!reverseGenFeature.isSuppressedGetVisibility()) {
+ stringBuffer.append(TEXT_212);
+ stringBuffer.append(reverseGenFeature.getGenClass().getQualifiedInterfaceName());
+ stringBuffer.append(TEXT_213);
+ stringBuffer.append(reverseGenFeature.getGetAccessor());
+ stringBuffer.append(TEXT_214);
+ stringBuffer.append(reverseGenFeature.getFormattedName());
+ stringBuffer.append(TEXT_215);
+ }
+ }
+ stringBuffer.append(TEXT_216);
+ if (!genFeature.hasDocumentation()) {
+ stringBuffer.append(TEXT_217);
+ stringBuffer.append(genFeature.getFormattedName());
+ stringBuffer.append(TEXT_218);
+ stringBuffer.append(genFeature.getFeatureKind());
+ stringBuffer.append(TEXT_219);
+ }
+ stringBuffer.append(TEXT_220);
+ if (genFeature.hasDocumentation()) {
+ stringBuffer.append(TEXT_221);
+ stringBuffer.append(genFeature.getDocumentation(genModel.getIndentation(stringBuffer)));
+ stringBuffer.append(TEXT_222);
+ }
+ stringBuffer.append(TEXT_223);
+ stringBuffer.append(genFeature.getFormattedName());
+ stringBuffer.append(TEXT_224);
+ stringBuffer.append(genFeature.getFeatureKind());
+ stringBuffer.append(TEXT_225);
+ if (genFeature.getTypeGenEnum() != null) {
+ stringBuffer.append(TEXT_226);
+ stringBuffer.append(genFeature.getTypeGenEnum().getQualifiedName());
+ }
+ if (genFeature.isUnsettable()) {
+ if (!genFeature.isSuppressedIsSetVisibility()) {
+ stringBuffer.append(TEXT_227);
+ stringBuffer.append(genFeature.getAccessorName());
+ stringBuffer.append(TEXT_228);
+ }
+ if (genFeature.isChangeable() && !genFeature.isSuppressedUnsetVisibility()) {
+ stringBuffer.append(TEXT_229);
+ stringBuffer.append(genFeature.getAccessorName());
+ stringBuffer.append(TEXT_230);
+ }
+ }
+ if (genFeature.isChangeable() && !genFeature.isListType() && !genFeature.isSuppressedSetVisibility()) {
+ stringBuffer.append(TEXT_231);
+ stringBuffer.append(genFeature.getAccessorName());
+ stringBuffer.append(TEXT_232);
+ stringBuffer.append(genFeature.getImportedType());
+ stringBuffer.append(TEXT_233);
+ }
+ if (!genModel.isSuppressEMFMetaData()) {
+ stringBuffer.append(TEXT_234);
+ stringBuffer.append(genPackage.getQualifiedPackageInterfaceName());
+ stringBuffer.append(TEXT_235);
+ stringBuffer.append(genFeature.getFeatureAccessorName());
+ stringBuffer.append(TEXT_236);
+ }
+ if (genFeature.isBidirectional() && !genFeature.getReverse().getGenClass().isMapEntry()) { GenFeature reverseGenFeature = genFeature.getReverse();
+ if (!reverseGenFeature.isSuppressedGetVisibility()) {
+ stringBuffer.append(TEXT_237);
+ stringBuffer.append(reverseGenFeature.getGenClass().getQualifiedInterfaceName());
+ stringBuffer.append(TEXT_238);
+ stringBuffer.append(reverseGenFeature.getGetAccessor());
+ }
+ }
+ if (!genModel.isSuppressEMFModelTags()) { boolean first = true; for (StringTokenizer stringTokenizer = new StringTokenizer(genFeature.getModelInfo(), "\n\r"); stringTokenizer.hasMoreTokens(); ) { String modelInfo = stringTokenizer.nextToken(); if (first) { first = false;
+ stringBuffer.append(TEXT_239);
+ stringBuffer.append(modelInfo);
+ } else {
+ stringBuffer.append(TEXT_240);
+ stringBuffer.append(modelInfo);
+ }} if (first) {
+ stringBuffer.append(TEXT_241);
+ }}
+ stringBuffer.append(TEXT_242);
+ } else {
+ stringBuffer.append(TEXT_243);
+ }
+ if (!isImplementation) {
+ stringBuffer.append(TEXT_244);
+ stringBuffer.append(genFeature.getImportedType());
+ stringBuffer.append(TEXT_245);
+ stringBuffer.append(genFeature.getGetAccessor());
+ stringBuffer.append(TEXT_246);
+ } else {
+ stringBuffer.append(TEXT_247);
+ stringBuffer.append(genFeature.getImportedType());
+ stringBuffer.append(TEXT_248);
+ stringBuffer.append(genFeature.getGetAccessor());
+ stringBuffer.append(TEXT_249);
+ if (genModel.isReflectiveDelegation()) {
+ stringBuffer.append(TEXT_250);
+ if (genFeature.isPrimitiveType()) {
+ stringBuffer.append(TEXT_251);
+ }
+ stringBuffer.append(TEXT_252);
+ stringBuffer.append(genFeature.getObjectType());
+ stringBuffer.append(TEXT_253);
+ stringBuffer.append(genFeature.getQualifiedFeatureAccessor());
+ stringBuffer.append(TEXT_254);
+ if (genFeature.isPrimitiveType()) {
+ stringBuffer.append(TEXT_255);
+ stringBuffer.append(genFeature.getPrimitiveValueFunction());
+ stringBuffer.append(TEXT_256);
+ }
+ stringBuffer.append(TEXT_257);
+ } else if (!genFeature.isVolatile()) {
+ if (genFeature.isListType()) {
+ if (genModel.isVirtualDelegation()) {
+ stringBuffer.append(TEXT_258);
+ stringBuffer.append(genFeature.getImportedType());
+ stringBuffer.append(TEXT_259);
+ stringBuffer.append(genFeature.getSafeName());
+ stringBuffer.append(TEXT_260);
+ stringBuffer.append(genFeature.getImportedType());
+ stringBuffer.append(TEXT_261);
+ stringBuffer.append(genFeature.getUpperName());
+ stringBuffer.append(TEXT_262);
+ }
+ stringBuffer.append(TEXT_263);
+ stringBuffer.append(genFeature.getSafeName());
+ stringBuffer.append(TEXT_264);
+ if (genModel.isVirtualDelegation()) {
+ stringBuffer.append(TEXT_265);
+ stringBuffer.append(genFeature.getUpperName());
+ stringBuffer.append(TEXT_266);
+ stringBuffer.append(genFeature.getSafeName());
+ stringBuffer.append(TEXT_267);
+ stringBuffer.append(genClass.getListConstructor(genFeature));
+ stringBuffer.append(TEXT_268);
+ } else {
+ if (genFeature.getType().equals("commonj.sdo.Sequence")){
+ stringBuffer.append(TEXT_269);
+ stringBuffer.append(genFeature.getSafeName());
+ stringBuffer.append(TEXT_270);
+ stringBuffer.append(genFeature.getUpperName());
+ stringBuffer.append(TEXT_271);
+ } else {
+ stringBuffer.append(TEXT_272);
+ stringBuffer.append(genFeature.getSafeName());
+ stringBuffer.append(TEXT_273);
+ stringBuffer.append(genFeature.getListItemType());
+ stringBuffer.append(TEXT_274);
+ stringBuffer.append(genFeature.getUpperName());
+ stringBuffer.append(TEXT_275);
+ }}
+ stringBuffer.append(TEXT_276);
+ stringBuffer.append(genFeature.getSafeName());
+ stringBuffer.append(genFeature.isMapType() && genFeature.isEffectiveSuppressEMFTypes() ? ".map()" : "");
+ stringBuffer.append(TEXT_277);
+ } else if (genFeature.isContainer()) {
+ stringBuffer.append(TEXT_278);
+ stringBuffer.append(genFeature.getUpperName());
+ stringBuffer.append(TEXT_279);
+ stringBuffer.append(genFeature.getImportedType());
+ stringBuffer.append(TEXT_280);
+ } else {
+ if (genFeature.isResolveProxies()) {
+ if (genModel.isVirtualDelegation()) {
+ stringBuffer.append(TEXT_281);
+ stringBuffer.append(genFeature.getImportedType());
+ stringBuffer.append(TEXT_282);
+ stringBuffer.append(genFeature.getSafeName());
+ stringBuffer.append(TEXT_283);
+ stringBuffer.append(genFeature.getImportedType());
+ stringBuffer.append(TEXT_284);
+ stringBuffer.append(genFeature.getUpperName());
+ if (!genFeature.isReferenceType()) {
+ stringBuffer.append(TEXT_285);
+ stringBuffer.append(genFeature.getUpperName());
+ stringBuffer.append(TEXT_286);
+ }
+ stringBuffer.append(TEXT_287);
+ }
+ stringBuffer.append(TEXT_288);
+ stringBuffer.append(genFeature.getSafeName());
+ stringBuffer.append(TEXT_289);
+ stringBuffer.append(genFeature.getSafeNameAsEObject());
+ stringBuffer.append(TEXT_290);
+ stringBuffer.append(genModel.getImportedName("org.eclipse.emf.ecore.InternalEObject"));
+ stringBuffer.append(TEXT_291);
+ stringBuffer.append(genFeature.getCapName());
+ stringBuffer.append(TEXT_292);
+ stringBuffer.append(genModel.getImportedName("org.eclipse.emf.ecore.InternalEObject"));
+ stringBuffer.append(TEXT_293);
+ stringBuffer.append(genFeature.getSafeName());
+ stringBuffer.append(TEXT_294);
+ stringBuffer.append(genFeature.getSafeName());
+ stringBuffer.append(TEXT_295);
+ stringBuffer.append(genFeature.getNonEObjectInternalTypeCast());
+ stringBuffer.append(TEXT_296);
+ stringBuffer.append(genFeature.getCapName());
+ stringBuffer.append(TEXT_297);
+ stringBuffer.append(genFeature.getSafeName());
+ stringBuffer.append(TEXT_298);
+ stringBuffer.append(genFeature.getCapName());
+ stringBuffer.append(TEXT_299);
+ if (genFeature.isEffectiveContains()) {
+ stringBuffer.append(TEXT_300);
+ stringBuffer.append(genModel.getImportedName("org.eclipse.emf.ecore.InternalEObject"));
+ stringBuffer.append(TEXT_301);
+ stringBuffer.append(genFeature.getCapName());
+ stringBuffer.append(TEXT_302);
+ stringBuffer.append(genModel.getImportedName("org.eclipse.emf.ecore.InternalEObject"));
+ stringBuffer.append(TEXT_303);
+ stringBuffer.append(genFeature.getSafeName());
+ stringBuffer.append(TEXT_304);
+ if (!genFeature.isBidirectional()) {
+ stringBuffer.append(TEXT_305);
+ stringBuffer.append(genFeature.getCapName());
+ stringBuffer.append(TEXT_306);
+ stringBuffer.append(genFeature.getUpperName());
+ stringBuffer.append(TEXT_307);
+ } else { GenFeature reverseFeature = genFeature.getReverse(); GenClass targetClass = reverseFeature.getGenClass();
+ stringBuffer.append(TEXT_308);
+ stringBuffer.append(genModel.getImportedName("org.eclipse.emf.common.notify.ChangeContext"));
+ stringBuffer.append(TEXT_309);
+ stringBuffer.append(genFeature.getCapName());
+ stringBuffer.append(TEXT_310);
+ stringBuffer.append(targetClass.getQualifiedFeatureID(reverseFeature));
+ stringBuffer.append(TEXT_311);
+ stringBuffer.append(targetClass.getImportedInterfaceName());
+ stringBuffer.append(TEXT_312);
+ }
+ stringBuffer.append(TEXT_313);
+ stringBuffer.append(genFeature.getCapName());
+ stringBuffer.append(TEXT_314);
+ if (!genFeature.isBidirectional()) {
+ stringBuffer.append(TEXT_315);
+ stringBuffer.append(genFeature.getCapName());
+ stringBuffer.append(TEXT_316);
+ stringBuffer.append(genFeature.getUpperName());
+ stringBuffer.append(TEXT_317);
+ } else { GenFeature reverseFeature = genFeature.getReverse(); GenClass targetClass = reverseFeature.getGenClass();
+ stringBuffer.append(TEXT_318);
+ stringBuffer.append(genFeature.getCapName());
+ stringBuffer.append(TEXT_319);
+ stringBuffer.append(targetClass.getQualifiedFeatureID(reverseFeature));
+ stringBuffer.append(TEXT_320);
+ stringBuffer.append(targetClass.getImportedInterfaceName());
+ stringBuffer.append(TEXT_321);
+ }
+ stringBuffer.append(TEXT_322);
+ } else if (genModel.isVirtualDelegation()) {
+ stringBuffer.append(TEXT_323);
+ stringBuffer.append(genFeature.getUpperName());
+ stringBuffer.append(TEXT_324);
+ stringBuffer.append(genFeature.getSafeName());
+ stringBuffer.append(TEXT_325);
+ }
+ if (!genModel.isSuppressNotification()) {
+ stringBuffer.append(TEXT_326);
+ stringBuffer.append(genFeature.getUpperName());
+ stringBuffer.append(TEXT_327);
+ stringBuffer.append(genFeature.getCapName());
+ stringBuffer.append(TEXT_328);
+ stringBuffer.append(genFeature.getSafeName());
+ stringBuffer.append(TEXT_329);
+ }
+ stringBuffer.append(TEXT_330);
+ }
+ if (!genFeature.isResolveProxies() && genModel.isVirtualDelegation() && !genFeature.isPrimitiveType()) {
+ stringBuffer.append(TEXT_331);
+ stringBuffer.append(genFeature.getImportedType());
+ stringBuffer.append(TEXT_332);
+ stringBuffer.append(genFeature.getUpperName());
+ if (!genFeature.isReferenceType()) {
+ stringBuffer.append(TEXT_333);
+ stringBuffer.append(genFeature.getUpperName());
+ stringBuffer.append(TEXT_334);
+ }
+ stringBuffer.append(TEXT_335);
+ } else if (genClass.isFlag(genFeature)) {
+ stringBuffer.append(TEXT_336);
+ stringBuffer.append(genClass.getFlagsField(genFeature));
+ stringBuffer.append(TEXT_337);
+ stringBuffer.append(genFeature.getUpperName());
+ stringBuffer.append(TEXT_338);
+ } else {
+ stringBuffer.append(TEXT_339);
+ stringBuffer.append(genFeature.getSafeName());
+ stringBuffer.append(TEXT_340);
+ }
+ }
+ } else {//volatile
+ if (genFeature.isResolveProxies() && !genFeature.isListType()) {
+ stringBuffer.append(TEXT_341);
+ stringBuffer.append(genFeature.getImportedType());
+ stringBuffer.append(TEXT_342);
+ stringBuffer.append(genFeature.getSafeName());
+ stringBuffer.append(TEXT_343);
+ stringBuffer.append(genFeature.getAccessorName());
+ stringBuffer.append(TEXT_344);
+ stringBuffer.append(genFeature.getSafeName());
+ stringBuffer.append(TEXT_345);
+ stringBuffer.append(genFeature.getSafeName());
+ stringBuffer.append(TEXT_346);
+ stringBuffer.append(genFeature.getNonEObjectInternalTypeCast());
+ stringBuffer.append(TEXT_347);
+ stringBuffer.append(genModel.getImportedName("org.eclipse.emf.ecore.InternalEObject"));
+ stringBuffer.append(TEXT_348);
+ stringBuffer.append(genFeature.getSafeName());
+ stringBuffer.append(TEXT_349);
+ stringBuffer.append(genFeature.getSafeName());
+ stringBuffer.append(TEXT_350);
+ } else if (genFeature.hasDelegateFeature()) { GenFeature delegateFeature = genFeature.getDelegateFeature();
+ if (genFeature.isFeatureMapType()) {
+ if (delegateFeature.isWrappedFeatureMapType()) {
+ stringBuffer.append(TEXT_351);
+ stringBuffer.append(genFeature.getImportedType());
+ stringBuffer.append(TEXT_352);
+ stringBuffer.append(delegateFeature.getAccessorName());
+ stringBuffer.append(TEXT_353);
+ stringBuffer.append(genFeature.getUpperName());
+ stringBuffer.append(TEXT_354);
+ } else {
+ stringBuffer.append(TEXT_355);
+ stringBuffer.append(genModel.getImportedName("org.eclipse.emf.ecore.util.FeatureMap"));
+ stringBuffer.append(TEXT_356);
+ stringBuffer.append(genModel.getImportedName("org.eclipse.emf.ecore.util.FeatureMap"));
+ stringBuffer.append(TEXT_357);
+ stringBuffer.append(delegateFeature.getAccessorName());
+ stringBuffer.append(TEXT_358);
+ stringBuffer.append(genFeature.getQualifiedFeatureAccessor());
+ stringBuffer.append(TEXT_359);
+ }
+ } else if (genFeature.isListType()) {
+ if (delegateFeature.isWrappedFeatureMapType()) {
+ stringBuffer.append(TEXT_360);
+ stringBuffer.append(genFeature.getImportedType());
+ stringBuffer.append(TEXT_361);
+ stringBuffer.append(delegateFeature.getAccessorName());
+ stringBuffer.append(TEXT_362);
+ stringBuffer.append(genFeature.getUpperName());
+ stringBuffer.append(TEXT_363);
+ } else {
+ stringBuffer.append(TEXT_364);
+ stringBuffer.append(genModel.getImportedName("org.eclipse.emf.ecore.util.FeatureMap"));
+ stringBuffer.append(TEXT_365);
+ stringBuffer.append(delegateFeature.getAccessorName());
+ stringBuffer.append(TEXT_366);
+ stringBuffer.append(genFeature.getQualifiedFeatureAccessor());
+ stringBuffer.append(TEXT_367);
+ }
+ } else {
+ if (delegateFeature.isWrappedFeatureMapType()) {
+ stringBuffer.append(TEXT_368);
+ if (genFeature.isPrimitiveType()) {
+ stringBuffer.append(TEXT_369);
+ }
+ stringBuffer.append(TEXT_370);
+ stringBuffer.append(genFeature.getObjectType());
+ stringBuffer.append(TEXT_371);
+ stringBuffer.append(delegateFeature.getAccessorName());
+ stringBuffer.append(TEXT_372);
+ stringBuffer.append(genFeature.getUpperName());
+ stringBuffer.append(TEXT_373);
+ if (genFeature.isPrimitiveType()) {
+ stringBuffer.append(TEXT_374);
+ stringBuffer.append(genFeature.getPrimitiveValueFunction());
+ stringBuffer.append(TEXT_375);
+ }
+ stringBuffer.append(TEXT_376);
+ } else {
+ stringBuffer.append(TEXT_377);
+ if (genFeature.isPrimitiveType()) {
+ stringBuffer.append(TEXT_378);
+ }
+ stringBuffer.append(TEXT_379);
+ stringBuffer.append(genFeature.getObjectType());
+ stringBuffer.append(TEXT_380);
+ stringBuffer.append(delegateFeature.getAccessorName());
+ stringBuffer.append(TEXT_381);
+ stringBuffer.append(genFeature.getUpperName());
+ stringBuffer.append(TEXT_382);
+ if (genFeature.isPrimitiveType()) {
+ stringBuffer.append(TEXT_383);
+ stringBuffer.append(genFeature.getPrimitiveValueFunction());
+ stringBuffer.append(TEXT_384);
+ }
+ stringBuffer.append(TEXT_385);
+ }
+ }
+ } else {
+ stringBuffer.append(TEXT_386);
+ stringBuffer.append(genFeature.getFormattedName());
+ stringBuffer.append(TEXT_387);
+ stringBuffer.append(genFeature.getFeatureKind());
+ stringBuffer.append(TEXT_388);
+ //Class/getGenFeature.todo.override.javajetinc
+ }
+ }
+ stringBuffer.append(TEXT_389);
+ }
+ //Class/getGenFeature.override.javajetinc
+ }
+ if (isImplementation && !genModel.isReflectiveDelegation() && genFeature.isBasicGet()) {
+ stringBuffer.append(TEXT_390);
+ stringBuffer.append(genFeature.getImportedType());
+ stringBuffer.append(TEXT_391);
+ stringBuffer.append(genFeature.getAccessorName());
+ stringBuffer.append(TEXT_392);
+ if (genFeature.isContainer()) {
+ stringBuffer.append(TEXT_393);
+ stringBuffer.append(genFeature.getUpperName());
+ stringBuffer.append(TEXT_394);
+ stringBuffer.append(genFeature.getImportedType());
+ stringBuffer.append(TEXT_395);
+ } else if (!genFeature.isVolatile()) {
+ if (genModel.isVirtualDelegation()) {
+ stringBuffer.append(TEXT_396);
+ stringBuffer.append(genFeature.getImportedType());
+ stringBuffer.append(TEXT_397);
+ stringBuffer.append(genFeature.getUpperName());
+ stringBuffer.append(TEXT_398);
+ } else {
+ stringBuffer.append(TEXT_399);
+ stringBuffer.append(genFeature.getSafeName());
+ stringBuffer.append(TEXT_400);
+ }
+ } else if (genFeature.hasDelegateFeature()) { GenFeature delegateFeature = genFeature.getDelegateFeature();
+ if (delegateFeature.isWrappedFeatureMapType()) {
+ stringBuffer.append(TEXT_401);
+ stringBuffer.append(genFeature.getImportedType());
+ stringBuffer.append(TEXT_402);
+ stringBuffer.append(delegateFeature.getAccessorName());
+ stringBuffer.append(TEXT_403);
+ stringBuffer.append(genFeature.getUpperName());
+ stringBuffer.append(TEXT_404);
+ } else {
+ stringBuffer.append(TEXT_405);
+ stringBuffer.append(genFeature.getImportedType());
+ stringBuffer.append(TEXT_406);
+ stringBuffer.append(delegateFeature.getAccessorName());
+ stringBuffer.append(TEXT_407);
+ stringBuffer.append(genFeature.getQualifiedFeatureAccessor());
+ stringBuffer.append(TEXT_408);
+ }
+ } else {
+ stringBuffer.append(TEXT_409);
+ stringBuffer.append(genFeature.getFormattedName());
+ stringBuffer.append(TEXT_410);
+ stringBuffer.append(genFeature.getFeatureKind());
+ stringBuffer.append(TEXT_411);
+ //Class/basicGetGenFeature.todo.override.javajetinc
+ }
+ stringBuffer.append(TEXT_412);
+ //Class/basicGetGenFeature.override.javajetinc
+ }
+ if (isImplementation && !genModel.isReflectiveDelegation() && genFeature.isBasicSet()) {
+ stringBuffer.append(TEXT_413);
+ stringBuffer.append(genFeature.getAccessorName());
+ stringBuffer.append(TEXT_414);
+ stringBuffer.append(genFeature.getImportedInternalType());
+ stringBuffer.append(TEXT_415);
+ stringBuffer.append(genFeature.getCapName());
+ stringBuffer.append(TEXT_416);
+ if (!genFeature.isVolatile()) {
+ if (genModel.isVirtualDelegation()) {
+ stringBuffer.append(TEXT_417);
+ stringBuffer.append(genFeature.getCapName());
+ stringBuffer.append(TEXT_418);
+ stringBuffer.append(genFeature.getUpperName());
+ stringBuffer.append(TEXT_419);
+ stringBuffer.append(genFeature.getCapName());
+ stringBuffer.append(TEXT_420);
+ } else {
+ stringBuffer.append(TEXT_421);
+ stringBuffer.append(genFeature.getImportedType());
+ stringBuffer.append(TEXT_422);
+ stringBuffer.append(genFeature.getCapName());
+ stringBuffer.append(TEXT_423);
+ stringBuffer.append(genFeature.getSafeName());
+ stringBuffer.append(TEXT_424);
+ stringBuffer.append(genFeature.getSafeName());
+ stringBuffer.append(TEXT_425);
+ stringBuffer.append(genFeature.getCapName());
+ stringBuffer.append(TEXT_426);
+ }
+ if (genFeature.isUnsettable()) {
+ if (genModel.isVirtualDelegation()) {
+ stringBuffer.append(TEXT_427);
+ stringBuffer.append(genFeature.getCapName());
+ stringBuffer.append(TEXT_428);
+ } else if (genClass.isESetFlag(genFeature)) {
+ stringBuffer.append(TEXT_429);
+ stringBuffer.append(genFeature.getCapName());
+ stringBuffer.append(TEXT_430);
+ stringBuffer.append(genClass.getESetFlagsField(genFeature));
+ stringBuffer.append(TEXT_431);
+ stringBuffer.append(genFeature.getUpperName());
+ stringBuffer.append(TEXT_432);
+ stringBuffer.append(genClass.getESetFlagsField(genFeature));
+ stringBuffer.append(TEXT_433);
+ stringBuffer.append(genFeature.getUpperName());
+ stringBuffer.append(TEXT_434);
+ } else {
+ stringBuffer.append(TEXT_435);
+ stringBuffer.append(genFeature.getCapName());
+ stringBuffer.append(TEXT_436);
+ stringBuffer.append(genFeature.getUncapName());
+ stringBuffer.append(TEXT_437);
+ stringBuffer.append(genFeature.getUncapName());
+ stringBuffer.append(TEXT_438);
+ }
+ }
+ if (!genModel.isSuppressNotification()) {
+ stringBuffer.append(TEXT_439);
+ if (genFeature.isUnsettable()) {
+ stringBuffer.append(TEXT_440);
+ stringBuffer.append(genFeature.getUpperName());
+ stringBuffer.append(TEXT_441);
+ if (genModel.isVirtualDelegation()) {
+ stringBuffer.append(TEXT_442);
+ stringBuffer.append(genFeature.getCapName());
+ } else {
+ stringBuffer.append(TEXT_443);
+ stringBuffer.append(genFeature.getCapName());
+ }
+ stringBuffer.append(TEXT_444);
+ stringBuffer.append(genFeature.getCapName());
+ stringBuffer.append(TEXT_445);
+ if (genModel.isVirtualDelegation()) {
+ stringBuffer.append(TEXT_446);
+ } else {
+ stringBuffer.append(TEXT_447);
+ stringBuffer.append(genFeature.getCapName());
+ stringBuffer.append(TEXT_448);
+ }
+ stringBuffer.append(TEXT_449);
+ } else {
+ stringBuffer.append(TEXT_450);
+ stringBuffer.append(genFeature.getUpperName());
+ stringBuffer.append(TEXT_451);
+ if (genModel.isVirtualDelegation()) {
+ stringBuffer.append(TEXT_452);
+ stringBuffer.append(genFeature.getCapName());
+ stringBuffer.append(TEXT_453);
+ stringBuffer.append(genFeature.getCapName());
+ } else {
+ stringBuffer.append(TEXT_454);
+ stringBuffer.append(genFeature.getCapName());
+ }
+ stringBuffer.append(TEXT_455);
+ stringBuffer.append(genFeature.getCapName());
+ stringBuffer.append(TEXT_456);
+ }
+ stringBuffer.append(TEXT_457);
+ }
+ stringBuffer.append(TEXT_458);
+ } else if (genFeature.hasDelegateFeature()) { GenFeature delegateFeature = genFeature.getDelegateFeature();
+ if (delegateFeature.isWrappedFeatureMapType()) {
+ stringBuffer.append(TEXT_459);
+ stringBuffer.append(delegateFeature.getAccessorName());
+ stringBuffer.append(TEXT_460);
+ stringBuffer.append(genFeature.getUpperName());
+ stringBuffer.append(TEXT_461);
+ stringBuffer.append(genFeature.getCapName());
+ stringBuffer.append(TEXT_462);
+ } else {
+ stringBuffer.append(TEXT_463);
+ stringBuffer.append(delegateFeature.getAccessorName());
+ stringBuffer.append(TEXT_464);
+ stringBuffer.append(genFeature.getUpperName());
+ stringBuffer.append(TEXT_465);
+ stringBuffer.append(genFeature.getCapName());
+ stringBuffer.append(TEXT_466);
+ }
+ } else {
+ stringBuffer.append(TEXT_467);
+ stringBuffer.append(genFeature.getFormattedName());
+ stringBuffer.append(TEXT_468);
+ stringBuffer.append(genFeature.getFeatureKind());
+ stringBuffer.append(TEXT_469);
+ //Class/basicSetGenFeature.todo.override.javajetinc
+ }
+ stringBuffer.append(TEXT_470);
+ //Class/basicSetGenFeature.override.javajetinc
+ }
+ if (genFeature.isSet() && (isImplementation || !genFeature.isSuppressedSetVisibility())) {
+ if (isInterface) {
+ stringBuffer.append(TEXT_471);
+ stringBuffer.append(genClass.getQualifiedInterfaceName());
+ stringBuffer.append(TEXT_472);
+ stringBuffer.append(genFeature.getGetAccessor());
+ stringBuffer.append(TEXT_473);
+ stringBuffer.append(genFeature.getFormattedName());
+ stringBuffer.append(TEXT_474);
+ stringBuffer.append(genFeature.getFeatureKind());
+ stringBuffer.append(TEXT_475);
+ stringBuffer.append(genFeature.getFormattedName());
+ stringBuffer.append(TEXT_476);
+ stringBuffer.append(genFeature.getFeatureKind());
+ stringBuffer.append(TEXT_477);
+ if (genFeature.isEnumType()) {
+ stringBuffer.append(TEXT_478);
+ stringBuffer.append(genFeature.getTypeGenEnum().getQualifiedName());
+ }
+ if (genFeature.isUnsettable()) {
+ if (!genFeature.isSuppressedIsSetVisibility()) {
+ stringBuffer.append(TEXT_479);
+ stringBuffer.append(genFeature.getAccessorName());
+ stringBuffer.append(TEXT_480);
+ }
+ if (!genFeature.isSuppressedUnsetVisibility()) {
+ stringBuffer.append(TEXT_481);
+ stringBuffer.append(genFeature.getAccessorName());
+ stringBuffer.append(TEXT_482);
+ }
+ }
+ stringBuffer.append(TEXT_483);
+ stringBuffer.append(genFeature.getGetAccessor());
+ stringBuffer.append(TEXT_484);
+ } else {
+ stringBuffer.append(TEXT_485);
+ }
+ if (!isImplementation) {
+ stringBuffer.append(TEXT_486);
+ stringBuffer.append(genFeature.getAccessorName());
+ stringBuffer.append(TEXT_487);
+ stringBuffer.append(genFeature.getImportedType());
+ stringBuffer.append(TEXT_488);
+ } else {
+ stringBuffer.append(TEXT_489);
+ stringBuffer.append(genFeature.getAccessorName());
+ stringBuffer.append(TEXT_490);
+ stringBuffer.append(genFeature.getImportedType());
+ stringBuffer.append(TEXT_491);
+ stringBuffer.append(genFeature.getCapName());
+ stringBuffer.append(TEXT_492);
+ if (genModel.isReflectiveDelegation()) {
+ stringBuffer.append(TEXT_493);
+ stringBuffer.append(genFeature.getQualifiedFeatureAccessor());
+ stringBuffer.append(TEXT_494);
+ if (genFeature.isPrimitiveType()) {
+ stringBuffer.append(TEXT_495);
+ stringBuffer.append(genFeature.getObjectType());
+ stringBuffer.append(TEXT_496);
+ }
+ stringBuffer.append(TEXT_497);
+ stringBuffer.append(genFeature.getCapName());
+ if (genFeature.isPrimitiveType()) {
+ stringBuffer.append(TEXT_498);
+ }
+ stringBuffer.append(TEXT_499);
+ } else if (!genFeature.isVolatile()) {
+ if (genFeature.isContainer()) { GenFeature reverseFeature = genFeature.getReverse(); GenClass targetClass = reverseFeature.getGenClass();
+ stringBuffer.append(TEXT_500);
+ stringBuffer.append(genFeature.getCapName());
+ stringBuffer.append(TEXT_501);
+ stringBuffer.append(genFeature.getUpperName());
+ stringBuffer.append(TEXT_502);
+ stringBuffer.append(genFeature.getCapName());
+ stringBuffer.append(TEXT_503);
+ stringBuffer.append(genModel.getImportedName("org.eclipse.emf.ecore.util.EcoreUtil"));
+ stringBuffer.append(TEXT_504);
+ stringBuffer.append(genFeature.getEObjectCast());
+ stringBuffer.append(TEXT_505);
+ stringBuffer.append(genFeature.getCapName());
+ stringBuffer.append(TEXT_506);
+ stringBuffer.append(genModel.getImportedName("java.lang.IllegalArgumentException"));
+ stringBuffer.append(TEXT_507);
+ stringBuffer.append(genModel.getNonNLS());
+ stringBuffer.append(TEXT_508);
+ stringBuffer.append(genFeature.getCapName());
+ stringBuffer.append(TEXT_509);
+ stringBuffer.append(genModel.getImportedName("org.eclipse.emf.ecore.InternalEObject"));
+ stringBuffer.append(TEXT_510);
+ stringBuffer.append(genFeature.getCapName());
+ stringBuffer.append(TEXT_511);
+ stringBuffer.append(targetClass.getQualifiedFeatureID(reverseFeature));
+ stringBuffer.append(TEXT_512);
+ stringBuffer.append(targetClass.getImportedInterfaceName());
+ stringBuffer.append(TEXT_513);
+ stringBuffer.append(genModel.getImportedName("org.eclipse.emf.ecore.InternalEObject"));
+ stringBuffer.append(TEXT_514);
+ stringBuffer.append(genFeature.getCapName());
+ stringBuffer.append(TEXT_515);
+ stringBuffer.append(genFeature.getUpperName());
+ stringBuffer.append(TEXT_516);
+ if (!genModel.isSuppressNotification()) {
+ stringBuffer.append(TEXT_517);
+ stringBuffer.append(genFeature.getUpperName());
+ stringBuffer.append(TEXT_518);
+ stringBuffer.append(genFeature.getCapName());
+ stringBuffer.append(TEXT_519);
+ stringBuffer.append(genFeature.getCapName());
+ stringBuffer.append(TEXT_520);
+ }
+ } else if (genFeature.isBidirectional() || genFeature.isEffectiveContains()) {
+ if (genModel.isVirtualDelegation()) {
+ stringBuffer.append(TEXT_521);
+ stringBuffer.append(genFeature.getImportedType());
+ stringBuffer.append(TEXT_522);
+ stringBuffer.append(genFeature.getSafeName());
+ stringBuffer.append(TEXT_523);
+ stringBuffer.append(genFeature.getImportedType());
+ stringBuffer.append(TEXT_524);
+ stringBuffer.append(genFeature.getUpperName());
+ stringBuffer.append(TEXT_525);
+ }
+ stringBuffer.append(TEXT_526);
+ stringBuffer.append(genFeature.getCapName());
+ stringBuffer.append(TEXT_527);
+ stringBuffer.append(genFeature.getSafeName());
+ stringBuffer.append(TEXT_528);
+ stringBuffer.append(genFeature.getSafeName());
+ stringBuffer.append(TEXT_529);
+ if (!genFeature.isBidirectional()) {
+ stringBuffer.append(TEXT_530);
+ stringBuffer.append(genFeature.getSafeName());
+ stringBuffer.append(TEXT_531);
+ stringBuffer.append(genFeature.getUpperName());
+ stringBuffer.append(TEXT_532);
+ stringBuffer.append(genFeature.getCapName());
+ stringBuffer.append(TEXT_533);
+ stringBuffer.append(genFeature.getCapName());
+ stringBuffer.append(TEXT_534);
+ stringBuffer.append(genFeature.getUpperName());
+ stringBuffer.append(TEXT_535);
+ } else { GenFeature reverseFeature = genFeature.getReverse(); GenClass targetClass = reverseFeature.getGenClass();
+ stringBuffer.append(TEXT_536);
+ stringBuffer.append(genFeature.getSafeName());
+ stringBuffer.append(TEXT_537);
+ stringBuffer.append(targetClass.getQualifiedFeatureID(reverseFeature));
+ stringBuffer.append(TEXT_538);
+ stringBuffer.append(targetClass.getImportedInterfaceName());
+ stringBuffer.append(TEXT_539);
+ stringBuffer.append(genFeature.getCapName());
+ stringBuffer.append(TEXT_540);
+ stringBuffer.append(genFeature.getCapName());
+ stringBuffer.append(TEXT_541);
+ stringBuffer.append(targetClass.getQualifiedFeatureID(reverseFeature));
+ stringBuffer.append(TEXT_542);
+ stringBuffer.append(targetClass.getImportedInterfaceName());
+ stringBuffer.append(TEXT_543);
+ }
+ stringBuffer.append(TEXT_544);
+ stringBuffer.append(genFeature.getAccessorName());
+ stringBuffer.append(TEXT_545);
+ stringBuffer.append(genFeature.getInternalTypeCast());
+ stringBuffer.append(TEXT_546);
+ stringBuffer.append(genFeature.getCapName());
+ stringBuffer.append(TEXT_547);
+ if (genFeature.isUnsettable()) {
+ stringBuffer.append(TEXT_548);
+ if (genModel.isVirtualDelegation()) {
+ stringBuffer.append(TEXT_549);
+ stringBuffer.append(genFeature.getCapName());
+ stringBuffer.append(TEXT_550);
+ stringBuffer.append(genFeature.getUpperName());
+ stringBuffer.append(TEXT_551);
+ } else if (genClass.isESetFlag(genFeature)) {
+ if (!genModel.isSuppressNotification()) {
+ stringBuffer.append(TEXT_552);
+ stringBuffer.append(genFeature.getCapName());
+ stringBuffer.append(TEXT_553);
+ stringBuffer.append(genClass.getESetFlagsField(genFeature));
+ stringBuffer.append(TEXT_554);
+ stringBuffer.append(genFeature.getUpperName());
+ stringBuffer.append(TEXT_555);
+ }
+ stringBuffer.append(TEXT_556);
+ stringBuffer.append(genClass.getESetFlagsField(genFeature));
+ stringBuffer.append(TEXT_557);
+ stringBuffer.append(genFeature.getUpperName());
+ stringBuffer.append(TEXT_558);
+ } else {
+ if (!genModel.isSuppressNotification()) {
+ stringBuffer.append(TEXT_559);
+ stringBuffer.append(genFeature.getCapName());
+ stringBuffer.append(TEXT_560);
+ stringBuffer.append(genFeature.getUncapName());
+ stringBuffer.append(TEXT_561);
+ }
+ stringBuffer.append(TEXT_562);
+ stringBuffer.append(genFeature.getUncapName());
+ stringBuffer.append(TEXT_563);
+ }
+ if (!genModel.isSuppressNotification()) {
+ stringBuffer.append(TEXT_564);
+ stringBuffer.append(genFeature.getUpperName());
+ stringBuffer.append(TEXT_565);
+ stringBuffer.append(genFeature.getCapName());
+ stringBuffer.append(TEXT_566);
+ stringBuffer.append(genFeature.getCapName());
+ stringBuffer.append(TEXT_567);
+ stringBuffer.append(genFeature.getCapName());
+ stringBuffer.append(TEXT_568);
+ }
+ stringBuffer.append(TEXT_569);
+ } else {
+ if (!genModel.isSuppressNotification()) {
+ stringBuffer.append(TEXT_570);
+ stringBuffer.append(genFeature.getUpperName());
+ stringBuffer.append(TEXT_571);
+ stringBuffer.append(genFeature.getCapName());
+ stringBuffer.append(TEXT_572);
+ stringBuffer.append(genFeature.getCapName());
+ stringBuffer.append(TEXT_573);
+ }
+ }
+ } else {
+ if (genClass.isFlag(genFeature)) {
+ if (!genModel.isSuppressNotification()) {
+ stringBuffer.append(TEXT_574);
+ stringBuffer.append(genFeature.getImportedType());
+ stringBuffer.append(TEXT_575);
+ stringBuffer.append(genFeature.getCapName());
+ stringBuffer.append(TEXT_576);
+ stringBuffer.append(genClass.getFlagsField(genFeature));
+ stringBuffer.append(TEXT_577);
+ stringBuffer.append(genFeature.getUpperName());
+ stringBuffer.append(TEXT_578);
+ }
+ stringBuffer.append(TEXT_579);
+ stringBuffer.append(genFeature.getCapName());
+ stringBuffer.append(TEXT_580);
+ stringBuffer.append(genClass.getFlagsField(genFeature));
+ stringBuffer.append(TEXT_581);
+ stringBuffer.append(genFeature.getUpperName());
+ stringBuffer.append(TEXT_582);
+ stringBuffer.append(genClass.getFlagsField(genFeature));
+ stringBuffer.append(TEXT_583);
+ stringBuffer.append(genFeature.getUpperName());
+ stringBuffer.append(TEXT_584);
+ } else {
+ if (!genModel.isVirtualDelegation() || genFeature.isPrimitiveType()) {
+ if (!genModel.isSuppressNotification()) {
+ stringBuffer.append(TEXT_585);
+ stringBuffer.append(genFeature.getImportedType());
+ stringBuffer.append(TEXT_586);
+ stringBuffer.append(genFeature.getCapName());
+ stringBuffer.append(TEXT_587);
+ stringBuffer.append(genFeature.getSafeName());
+ stringBuffer.append(TEXT_588);
+ }
+ }
+ if (genFeature.isEnumType()) {
+ if (genModel.isVirtualDelegation()) {
+ stringBuffer.append(TEXT_589);
+ stringBuffer.append(genFeature.getImportedType());
+ stringBuffer.append(TEXT_590);
+ stringBuffer.append(genFeature.getSafeName());
+ stringBuffer.append(TEXT_591);
+ stringBuffer.append(genFeature.getCapName());
+ stringBuffer.append(TEXT_592);
+ stringBuffer.append(genFeature.getUpperName());
+ stringBuffer.append(TEXT_593);
+ stringBuffer.append(genFeature.getCapName());
+ stringBuffer.append(TEXT_594);
+ } else {
+ stringBuffer.append(TEXT_595);
+ stringBuffer.append(genFeature.getSafeName());
+ stringBuffer.append(TEXT_596);
+ stringBuffer.append(genFeature.getCapName());
+ stringBuffer.append(TEXT_597);
+ stringBuffer.append(genFeature.getUpperName());
+ stringBuffer.append(TEXT_598);
+ stringBuffer.append(genFeature.getCapName());
+ stringBuffer.append(TEXT_599);
+ }
+ } else {
+ if (genModel.isVirtualDelegation() && !genFeature.isPrimitiveType()) {
+ stringBuffer.append(TEXT_600);
+ stringBuffer.append(genFeature.getImportedType());
+ stringBuffer.append(TEXT_601);
+ stringBuffer.append(genFeature.getSafeName());
+ stringBuffer.append(TEXT_602);
+ stringBuffer.append(genFeature.getInternalTypeCast());
+ stringBuffer.append(TEXT_603);
+ stringBuffer.append(genFeature.getCapName());
+ stringBuffer.append(TEXT_604);
+ } else {
+ stringBuffer.append(TEXT_605);
+ stringBuffer.append(genFeature.getSafeName());
+ stringBuffer.append(TEXT_606);
+ stringBuffer.append(genFeature.getInternalTypeCast());
+ stringBuffer.append(TEXT_607);
+ stringBuffer.append(genFeature.getCapName());
+ stringBuffer.append(TEXT_608);
+ }
+ }
+ if (genModel.isVirtualDelegation() && !genFeature.isPrimitiveType()) {
+ stringBuffer.append(TEXT_609);
+ stringBuffer.append(genFeature.getCapName());
+ stringBuffer.append(TEXT_610);
+ stringBuffer.append(genFeature.getUpperName());
+ stringBuffer.append(TEXT_611);
+ stringBuffer.append(genFeature.getSafeName());
+ stringBuffer.append(TEXT_612);
+ }
+ }
+ if (genFeature.isUnsettable()) {
+ if (genModel.isVirtualDelegation() && !genFeature.isPrimitiveType()) {
+ stringBuffer.append(TEXT_613);
+ stringBuffer.append(genFeature.getCapName());
+ stringBuffer.append(TEXT_614);
+ } else if (genClass.isESetFlag(genFeature)) {
+ if (!genModel.isSuppressNotification()) {
+ stringBuffer.append(TEXT_615);
+ stringBuffer.append(genFeature.getCapName());
+ stringBuffer.append(TEXT_616);
+ stringBuffer.append(genClass.getESetFlagsField(genFeature));
+ stringBuffer.append(TEXT_617);
+ stringBuffer.append(genFeature.getUpperName());
+ stringBuffer.append(TEXT_618);
+ }
+ stringBuffer.append(TEXT_619);
+ stringBuffer.append(genClass.getESetFlagsField(genFeature));
+ stringBuffer.append(TEXT_620);
+ stringBuffer.append(genFeature.getUpperName());
+ stringBuffer.append(TEXT_621);
+ } else {
+ if (!genModel.isSuppressNotification()) {
+ stringBuffer.append(TEXT_622);
+ stringBuffer.append(genFeature.getCapName());
+ stringBuffer.append(TEXT_623);
+ stringBuffer.append(genFeature.getUncapName());
+ stringBuffer.append(TEXT_624);
+ }
+ stringBuffer.append(TEXT_625);
+ stringBuffer.append(genFeature.getUncapName());
+ stringBuffer.append(TEXT_626);
+ }
+ if (!genModel.isSuppressNotification()) {
+ stringBuffer.append(TEXT_627);
+ stringBuffer.append(genFeature.getUpperName());
+ stringBuffer.append(TEXT_628);
+ if (genModel.isVirtualDelegation() && !genFeature.isPrimitiveType()) {
+ stringBuffer.append(TEXT_629);
+ if (genFeature.isReferenceType()) {
+ stringBuffer.append(TEXT_630);
+ } else {
+ stringBuffer.append(genFeature.getUpperName());
+ stringBuffer.append(TEXT_631);
+ }
+ stringBuffer.append(TEXT_632);
+ stringBuffer.append(genFeature.getCapName());
+ } else {
+ stringBuffer.append(TEXT_633);
+ stringBuffer.append(genFeature.getCapName());
+ }
+ stringBuffer.append(TEXT_634);
+ if (genClass.isFlag(genFeature)) {
+ stringBuffer.append(TEXT_635);
+ stringBuffer.append(genFeature.getCapName());
+ } else {
+ stringBuffer.append(genFeature.getSafeName());
+ }
+ stringBuffer.append(TEXT_636);
+ if (genModel.isVirtualDelegation() && !genFeature.isPrimitiveType()) {
+ stringBuffer.append(TEXT_637);
+ } else {
+ stringBuffer.append(TEXT_638);
+ stringBuffer.append(genFeature.getCapName());
+ stringBuffer.append(TEXT_639);
+ }
+ stringBuffer.append(TEXT_640);
+ }
+ } else {
+ if (!genModel.isSuppressNotification()) {
+ stringBuffer.append(TEXT_641);
+ stringBuffer.append(genFeature.getUpperName());
+ stringBuffer.append(TEXT_642);
+ if (genModel.isVirtualDelegation() && !genFeature.isPrimitiveType()) {
+ stringBuffer.append(TEXT_643);
+ stringBuffer.append(genFeature.getCapName());
+ stringBuffer.append(TEXT_644);
+ if (genFeature.isReferenceType()) {
+ stringBuffer.append(TEXT_645);
+ } else {
+ stringBuffer.append(genFeature.getUpperName());
+ stringBuffer.append(TEXT_646);
+ }
+ stringBuffer.append(TEXT_647);
+ stringBuffer.append(genFeature.getCapName());
+ } else {
+ stringBuffer.append(TEXT_648);
+ stringBuffer.append(genFeature.getCapName());
+ }
+ stringBuffer.append(TEXT_649);
+ if (genClass.isFlag(genFeature)) {
+ stringBuffer.append(TEXT_650);
+ stringBuffer.append(genFeature.getCapName());
+ } else {
+ stringBuffer.append(genFeature.getSafeName());
+ }
+ stringBuffer.append(TEXT_651);
+ }
+ }
+ }
+ } else if (genFeature.hasDelegateFeature()) { GenFeature delegateFeature = genFeature.getDelegateFeature();
+ if (delegateFeature.isWrappedFeatureMapType()) {
+ stringBuffer.append(TEXT_652);
+ stringBuffer.append(delegateFeature.getAccessorName());
+ stringBuffer.append(TEXT_653);
+ stringBuffer.append(genFeature.getUpperName());
+ stringBuffer.append(TEXT_654);
+ if (genFeature.isPrimitiveType()){
+ stringBuffer.append(TEXT_655);
+ stringBuffer.append(genFeature.getObjectType());
+ stringBuffer.append(TEXT_656);
+ }
+ stringBuffer.append(TEXT_657);
+ stringBuffer.append(genFeature.getCapName());
+ if (genFeature.isPrimitiveType()){
+ stringBuffer.append(TEXT_658);
+ }
+ stringBuffer.append(TEXT_659);
+ } else {
+ stringBuffer.append(TEXT_660);
+ stringBuffer.append(genModel.getImportedName("org.eclipse.emf.ecore.util.FeatureMap"));
+ stringBuffer.append(TEXT_661);
+ stringBuffer.append(delegateFeature.getAccessorName());
+ stringBuffer.append(TEXT_662);
+ stringBuffer.append(genFeature.getQualifiedFeatureAccessor());
+ stringBuffer.append(TEXT_663);
+ if (genFeature.isPrimitiveType()) {
+ stringBuffer.append(TEXT_664);
+ stringBuffer.append(genFeature.getObjectType());
+ stringBuffer.append(TEXT_665);
+ }
+ stringBuffer.append(TEXT_666);
+ stringBuffer.append(genFeature.getCapName());
+ if (genFeature.isPrimitiveType()){
+ stringBuffer.append(TEXT_667);
+ }
+ stringBuffer.append(TEXT_668);
+ }
+ } else {
+ stringBuffer.append(TEXT_669);
+ stringBuffer.append(genFeature.getFormattedName());
+ stringBuffer.append(TEXT_670);
+ stringBuffer.append(genFeature.getFeatureKind());
+ stringBuffer.append(TEXT_671);
+ //Class/setGenFeature.todo.override.javajetinc
+ }
+ stringBuffer.append(TEXT_672);
+ }
+ //Class/setGenFeature.override.javajetinc
+ }
+ if (isImplementation && !genModel.isReflectiveDelegation() && genFeature.isBasicUnset()) {
+ stringBuffer.append(TEXT_673);
+ stringBuffer.append(genFeature.getAccessorName());
+ stringBuffer.append(TEXT_674);
+ if (!genFeature.isVolatile()) {
+ if (genModel.isVirtualDelegation()) {
+ stringBuffer.append(TEXT_675);
+ stringBuffer.append(genFeature.getCapName());
+ stringBuffer.append(TEXT_676);
+ stringBuffer.append(genFeature.getUpperName());
+ stringBuffer.append(TEXT_677);
+ } else {
+ stringBuffer.append(TEXT_678);
+ stringBuffer.append(genFeature.getImportedType());
+ stringBuffer.append(TEXT_679);
+ stringBuffer.append(genFeature.getCapName());
+ stringBuffer.append(TEXT_680);
+ stringBuffer.append(genFeature.getSafeName());
+ stringBuffer.append(TEXT_681);
+ stringBuffer.append(genFeature.getSafeName());
+ stringBuffer.append(TEXT_682);
+ }
+ if (genModel.isVirtualDelegation()) {
+ stringBuffer.append(TEXT_683);
+ stringBuffer.append(genFeature.getCapName());
+ stringBuffer.append(TEXT_684);
+ } else if (genClass.isESetFlag(genFeature)) {
+ stringBuffer.append(TEXT_685);
+ stringBuffer.append(genFeature.getCapName());
+ stringBuffer.append(TEXT_686);
+ stringBuffer.append(genClass.getESetFlagsField(genFeature));
+ stringBuffer.append(TEXT_687);
+ stringBuffer.append(genFeature.getUpperName());
+ stringBuffer.append(TEXT_688);
+ stringBuffer.append(genClass.getESetFlagsField(genFeature));
+ stringBuffer.append(TEXT_689);
+ stringBuffer.append(genFeature.getUpperName());
+ stringBuffer.append(TEXT_690);
+ } else {
+ stringBuffer.append(TEXT_691);
+ stringBuffer.append(genFeature.getCapName());
+ stringBuffer.append(TEXT_692);
+ stringBuffer.append(genFeature.getUncapName());
+ stringBuffer.append(TEXT_693);
+ stringBuffer.append(genFeature.getUncapName());
+ stringBuffer.append(TEXT_694);
+ }
+ if (!genModel.isSuppressNotification()) {
+ stringBuffer.append(TEXT_695);
+ stringBuffer.append(genModel.getImportedName("org.eclipse.emf.ecore.impl.ENotificationImpl"));
+ stringBuffer.append(TEXT_696);
+ stringBuffer.append(genModel.getImportedName("org.eclipse.emf.ecore.impl.ENotificationImpl"));
+ stringBuffer.append(TEXT_697);
+ stringBuffer.append(genModel.getImportedName("org.eclipse.emf.common.notify.Notification"));
+ stringBuffer.append(TEXT_698);
+ stringBuffer.append(genFeature.getUpperName());
+ stringBuffer.append(TEXT_699);
+ if (genModel.isVirtualDelegation()) {
+ stringBuffer.append(TEXT_700);
+ stringBuffer.append(genFeature.getCapName());
+ stringBuffer.append(TEXT_701);
+ } else {
+ stringBuffer.append(TEXT_702);
+ stringBuffer.append(genFeature.getCapName());
+ }
+ stringBuffer.append(TEXT_703);
+ if (genModel.isVirtualDelegation()) {
+ stringBuffer.append(TEXT_704);
+ } else {
+ stringBuffer.append(TEXT_705);
+ stringBuffer.append(genFeature.getCapName());
+ stringBuffer.append(TEXT_706);
+ }
+ stringBuffer.append(TEXT_707);
+ }
+ } else {
+ stringBuffer.append(TEXT_708);
+ stringBuffer.append(genFeature.getFormattedName());
+ stringBuffer.append(TEXT_709);
+ stringBuffer.append(genFeature.getFeatureKind());
+ stringBuffer.append(TEXT_710);
+ //Class/basicUnsetGenFeature.todo.override.javajetinc
+ }
+ stringBuffer.append(TEXT_711);
+ //Class.basicUnsetGenFeature.override.javajetinc
+ }
+ if (genFeature.isUnset() && (isImplementation || !genFeature.isSuppressedUnsetVisibility())) {
+ if (isInterface) {
+ stringBuffer.append(TEXT_712);
+ stringBuffer.append(genClass.getQualifiedInterfaceName());
+ stringBuffer.append(TEXT_713);
+ stringBuffer.append(genFeature.getGetAccessor());
+ stringBuffer.append(TEXT_714);
+ stringBuffer.append(genFeature.getFormattedName());
+ stringBuffer.append(TEXT_715);
+ stringBuffer.append(genFeature.getFeatureKind());
+ stringBuffer.append(TEXT_716);
+ if (!genFeature.isSuppressedIsSetVisibility()) {
+ stringBuffer.append(TEXT_717);
+ stringBuffer.append(genFeature.getAccessorName());
+ stringBuffer.append(TEXT_718);
+ }
+ stringBuffer.append(TEXT_719);
+ stringBuffer.append(genFeature.getGetAccessor());
+ stringBuffer.append(TEXT_720);
+ if (!genFeature.isListType() && !genFeature.isSuppressedSetVisibility()) {
+ stringBuffer.append(TEXT_721);
+ stringBuffer.append(genFeature.getAccessorName());
+ stringBuffer.append(TEXT_722);
+ stringBuffer.append(genFeature.getImportedType());
+ stringBuffer.append(TEXT_723);
+ }
+ stringBuffer.append(TEXT_724);
+ } else {
+ stringBuffer.append(TEXT_725);
+ }
+ if (!isImplementation) {
+ stringBuffer.append(TEXT_726);
+ stringBuffer.append(genFeature.getAccessorName());
+ stringBuffer.append(TEXT_727);
+ } else {
+ stringBuffer.append(TEXT_728);
+ stringBuffer.append(genFeature.getAccessorName());
+ stringBuffer.append(TEXT_729);
+ if (genModel.isReflectiveDelegation()) {
+ stringBuffer.append(TEXT_730);
+ stringBuffer.append(genFeature.getQualifiedFeatureAccessor());
+ stringBuffer.append(TEXT_731);
+ } else if (!genFeature.isVolatile()) {
+ if (genFeature.isListType()) {
+ stringBuffer.append(TEXT_732);
+ stringBuffer.append(genModel.getImportedName("org.eclipse.emf.ecore.util.InternalEList"));
+ stringBuffer.append(TEXT_733);
+ stringBuffer.append(genFeature.getAccessorName());
+ stringBuffer.append(TEXT_734);
+ } else if (genFeature.isBidirectional() || genFeature.isEffectiveContains()) {
+ if (genModel.isVirtualDelegation()) {
+ stringBuffer.append(TEXT_735);
+ stringBuffer.append(genFeature.getImportedType());
+ stringBuffer.append(TEXT_736);
+ stringBuffer.append(genFeature.getSafeName());
+ stringBuffer.append(TEXT_737);
+ stringBuffer.append(genFeature.getImportedType());
+ stringBuffer.append(TEXT_738);
+ stringBuffer.append(genFeature.getUpperName());
+ stringBuffer.append(TEXT_739);
+ }
+ stringBuffer.append(TEXT_740);
+ stringBuffer.append(genFeature.getSafeName());
+ stringBuffer.append(TEXT_741);
+ if (!genFeature.isBidirectional()) {
+ stringBuffer.append(TEXT_742);
+ stringBuffer.append(genModel.getImportedName("org.eclipse.emf.ecore.InternalEObject"));
+ stringBuffer.append(TEXT_743);
+ stringBuffer.append(genFeature.getSafeName());
+ stringBuffer.append(TEXT_744);
+ stringBuffer.append(genFeature.getUpperName());
+ stringBuffer.append(TEXT_745);
+ } else { GenFeature reverseFeature = genFeature.getReverse(); GenClass targetClass = reverseFeature.getGenClass();
+ stringBuffer.append(TEXT_746);
+ stringBuffer.append(genModel.getImportedName("org.eclipse.emf.ecore.InternalEObject"));
+ stringBuffer.append(TEXT_747);
+ stringBuffer.append(genFeature.getSafeName());
+ stringBuffer.append(TEXT_748);
+ stringBuffer.append(targetClass.getQualifiedFeatureID(reverseFeature));
+ stringBuffer.append(TEXT_749);
+ stringBuffer.append(targetClass.getImportedInterfaceName());
+ stringBuffer.append(TEXT_750);
+ }
+ stringBuffer.append(TEXT_751);
+ stringBuffer.append(genFeature.getAccessorName());
+ stringBuffer.append(TEXT_752);
+ if (genModel.isVirtualDelegation()) {
+ stringBuffer.append(TEXT_753);
+ stringBuffer.append(genFeature.getCapName());
+ stringBuffer.append(TEXT_754);
+ stringBuffer.append(genFeature.getUpperName());
+ stringBuffer.append(TEXT_755);
+ } else if (genClass.isESetFlag(genFeature)) {
+ if (!genModel.isSuppressNotification()) {
+ stringBuffer.append(TEXT_756);
+ stringBuffer.append(genFeature.getCapName());
+ stringBuffer.append(TEXT_757);
+ stringBuffer.append(genClass.getESetFlagsField(genFeature));
+ stringBuffer.append(TEXT_758);
+ stringBuffer.append(genFeature.getUpperName());
+ stringBuffer.append(TEXT_759);
+ }
+ stringBuffer.append(TEXT_760);
+ stringBuffer.append(genClass.getESetFlagsField(genFeature));
+ stringBuffer.append(TEXT_761);
+ stringBuffer.append(genFeature.getUpperName());
+ stringBuffer.append(TEXT_762);
+ } else {
+ if (!genModel.isSuppressNotification()) {
+ stringBuffer.append(TEXT_763);
+ stringBuffer.append(genFeature.getCapName());
+ stringBuffer.append(TEXT_764);
+ stringBuffer.append(genFeature.getUncapName());
+ stringBuffer.append(TEXT_765);
+ }
+ stringBuffer.append(TEXT_766);
+ stringBuffer.append(genFeature.getUncapName());
+ stringBuffer.append(TEXT_767);
+ }
+ if (!genModel.isSuppressNotification()) {
+ stringBuffer.append(TEXT_768);
+ stringBuffer.append(genFeature.getUpperName());
+ stringBuffer.append(TEXT_769);
+ stringBuffer.append(genFeature.getCapName());
+ stringBuffer.append(TEXT_770);
+ }
+ stringBuffer.append(TEXT_771);
+ } else {
+ if (genClass.isFlag(genFeature)) {
+ if (!genModel.isSuppressNotification()) {
+ stringBuffer.append(TEXT_772);
+ stringBuffer.append(genFeature.getImportedType());
+ stringBuffer.append(TEXT_773);
+ stringBuffer.append(genFeature.getCapName());
+ stringBuffer.append(TEXT_774);
+ stringBuffer.append(genClass.getFlagsField(genFeature));
+ stringBuffer.append(TEXT_775);
+ stringBuffer.append(genFeature.getUpperName());
+ stringBuffer.append(TEXT_776);
+ }
+ } else if (genModel.isVirtualDelegation() && !genFeature.isPrimitiveType()) {
+ stringBuffer.append(TEXT_777);
+ stringBuffer.append(genFeature.getCapName());
+ stringBuffer.append(TEXT_778);
+ stringBuffer.append(genFeature.getUpperName());
+ stringBuffer.append(TEXT_779);
+ } else {
+ if (!genModel.isSuppressNotification()) {
+ stringBuffer.append(TEXT_780);
+ stringBuffer.append(genFeature.getImportedType());
+ stringBuffer.append(TEXT_781);
+ stringBuffer.append(genFeature.getCapName());
+ stringBuffer.append(TEXT_782);
+ stringBuffer.append(genFeature.getSafeName());
+ stringBuffer.append(TEXT_783);
+ }
+ }
+ if (genModel.isVirtualDelegation() && !genFeature.isPrimitiveType()) {
+ stringBuffer.append(TEXT_784);
+ stringBuffer.append(genFeature.getCapName());
+ stringBuffer.append(TEXT_785);
+ } else if (genClass.isESetFlag(genFeature)) {
+ stringBuffer.append(TEXT_786);
+ stringBuffer.append(genFeature.getCapName());
+ stringBuffer.append(TEXT_787);
+ stringBuffer.append(genClass.getESetFlagsField(genFeature));
+ stringBuffer.append(TEXT_788);
+ stringBuffer.append(genFeature.getUpperName());
+ stringBuffer.append(TEXT_789);
+ } else {
+ if (!genModel.isSuppressNotification()) {
+ stringBuffer.append(TEXT_790);
+ stringBuffer.append(genFeature.getCapName());
+ stringBuffer.append(TEXT_791);
+ stringBuffer.append(genFeature.getUncapName());
+ stringBuffer.append(TEXT_792);
+ }
+ }
+ if (genFeature.isReferenceType()) {
+ stringBuffer.append(TEXT_793);
+ stringBuffer.append(genFeature.getSafeName());
+ stringBuffer.append(TEXT_794);
+ if (!genModel.isVirtualDelegation()) {
+ if (genClass.isESetFlag(genFeature)) {
+ stringBuffer.append(TEXT_795);
+ stringBuffer.append(genClass.getESetFlagsField(genFeature));
+ stringBuffer.append(TEXT_796);
+ stringBuffer.append(genFeature.getUpperName());
+ stringBuffer.append(TEXT_797);
+ } else {
+ stringBuffer.append(TEXT_798);
+ stringBuffer.append(genFeature.getUncapName());
+ stringBuffer.append(TEXT_799);
+ }
+ }
+ if (!genModel.isSuppressNotification()) {
+ stringBuffer.append(TEXT_800);
+ stringBuffer.append(genFeature.getUpperName());
+ stringBuffer.append(TEXT_801);
+ if (genModel.isVirtualDelegation()) {
+ stringBuffer.append(TEXT_802);
+ stringBuffer.append(genFeature.getCapName());
+ stringBuffer.append(TEXT_803);
+ } else {
+ stringBuffer.append(TEXT_804);
+ stringBuffer.append(genFeature.getCapName());
+ }
+ stringBuffer.append(TEXT_805);
+ if (genModel.isVirtualDelegation()) {
+ stringBuffer.append(TEXT_806);
+ } else {
+ stringBuffer.append(TEXT_807);
+ stringBuffer.append(genFeature.getCapName());
+ stringBuffer.append(TEXT_808);
+ }
+ stringBuffer.append(TEXT_809);
+ }
+ } else {
+ if (genClass.isFlag(genFeature)) {
+ stringBuffer.append(TEXT_810);
+ stringBuffer.append(genFeature.getUpperName());
+ stringBuffer.append(TEXT_811);
+ stringBuffer.append(genClass.getFlagsField(genFeature));
+ stringBuffer.append(TEXT_812);
+ stringBuffer.append(genFeature.getUpperName());
+ stringBuffer.append(TEXT_813);
+ stringBuffer.append(genClass.getFlagsField(genFeature));
+ stringBuffer.append(TEXT_814);
+ stringBuffer.append(genFeature.getUpperName());
+ stringBuffer.append(TEXT_815);
+ } else if (!genModel.isVirtualDelegation() || genFeature.isPrimitiveType()) {
+ stringBuffer.append(TEXT_816);
+ stringBuffer.append(genFeature.getSafeName());
+ stringBuffer.append(TEXT_817);
+ stringBuffer.append(genFeature.getUpperName());
+ stringBuffer.append(TEXT_818);
+ }
+ if (!genModel.isVirtualDelegation() || genFeature.isPrimitiveType()) {
+ if (genClass.isESetFlag(genFeature)) {
+ stringBuffer.append(TEXT_819);
+ stringBuffer.append(genClass.getESetFlagsField(genFeature));
+ stringBuffer.append(TEXT_820);
+ stringBuffer.append(genFeature.getUpperName());
+ stringBuffer.append(TEXT_821);
+ } else {
+ stringBuffer.append(TEXT_822);
+ stringBuffer.append(genFeature.getUncapName());
+ stringBuffer.append(TEXT_823);
+ }
+ }
+ if (!genModel.isSuppressNotification()) {
+ stringBuffer.append(TEXT_824);
+ stringBuffer.append(genFeature.getUpperName());
+ stringBuffer.append(TEXT_825);
+ if (genModel.isVirtualDelegation() && !genFeature.isPrimitiveType()) {
+ stringBuffer.append(TEXT_826);
+ stringBuffer.append(genFeature.getCapName());
+ stringBuffer.append(TEXT_827);
+ stringBuffer.append(genFeature.getUpperName());
+ stringBuffer.append(TEXT_828);
+ } else {
+ stringBuffer.append(TEXT_829);
+ stringBuffer.append(genFeature.getCapName());
+ }
+ stringBuffer.append(TEXT_830);
+ stringBuffer.append(genFeature.getUpperName());
+ stringBuffer.append(TEXT_831);
+ if (genModel.isVirtualDelegation() && !genFeature.isPrimitiveType()) {
+ stringBuffer.append(TEXT_832);
+ } else {
+ stringBuffer.append(TEXT_833);
+ stringBuffer.append(genFeature.getCapName());
+ stringBuffer.append(TEXT_834);
+ }
+ stringBuffer.append(TEXT_835);
+ }
+ }
+ }
+ } else if (genFeature.hasDelegateFeature()) { GenFeature delegateFeature = genFeature.getDelegateFeature();
+ if (delegateFeature.isWrappedFeatureMapType()) {
+ stringBuffer.append(TEXT_836);
+ stringBuffer.append(delegateFeature.getAccessorName());
+ stringBuffer.append(TEXT_837);
+ stringBuffer.append(genFeature.getUpperName());
+ stringBuffer.append(TEXT_838);
+ } else {
+ stringBuffer.append(TEXT_839);
+ stringBuffer.append(genFeature.getImportedType());
+ stringBuffer.append(TEXT_840);
+ stringBuffer.append(delegateFeature.getAccessorName());
+ stringBuffer.append(TEXT_841);
+ }
+ } else {
+ stringBuffer.append(TEXT_842);
+ stringBuffer.append(genFeature.getFormattedName());
+ stringBuffer.append(TEXT_843);
+ stringBuffer.append(genFeature.getFeatureKind());
+ stringBuffer.append(TEXT_844);
+ //Class/unsetGenFeature.todo.override.javajetinc
+ }
+ stringBuffer.append(TEXT_845);
+ }
+ //Class/unsetGenFeature.override.javajetinc
+ }
+ if (genFeature.isIsSet() && (isImplementation || !genFeature.isSuppressedIsSetVisibility())) {
+ if (isInterface) {
+ stringBuffer.append(TEXT_846);
+ stringBuffer.append(genClass.getQualifiedInterfaceName());
+ stringBuffer.append(TEXT_847);
+ stringBuffer.append(genFeature.getGetAccessor());
+ stringBuffer.append(TEXT_848);
+ stringBuffer.append(genFeature.getFormattedName());
+ stringBuffer.append(TEXT_849);
+ stringBuffer.append(genFeature.getFeatureKind());
+ stringBuffer.append(TEXT_850);
+ stringBuffer.append(genFeature.getFormattedName());
+ stringBuffer.append(TEXT_851);
+ stringBuffer.append(genFeature.getFeatureKind());
+ stringBuffer.append(TEXT_852);
+ if (genFeature.isChangeable() && !genFeature.isSuppressedUnsetVisibility()) {
+ stringBuffer.append(TEXT_853);
+ stringBuffer.append(genFeature.getAccessorName());
+ stringBuffer.append(TEXT_854);
+ }
+ stringBuffer.append(TEXT_855);
+ stringBuffer.append(genFeature.getGetAccessor());
+ stringBuffer.append(TEXT_856);
+ if (!genFeature.isListType() && genFeature.isChangeable() && !genFeature.isSuppressedSetVisibility()) {
+ stringBuffer.append(TEXT_857);
+ stringBuffer.append(genFeature.getAccessorName());
+ stringBuffer.append(TEXT_858);
+ stringBuffer.append(genFeature.getImportedType());
+ stringBuffer.append(TEXT_859);
+ }
+ stringBuffer.append(TEXT_860);
+ } else {
+ stringBuffer.append(TEXT_861);
+ }
+ if (!isImplementation) {
+ stringBuffer.append(TEXT_862);
+ stringBuffer.append(genFeature.getAccessorName());
+ stringBuffer.append(TEXT_863);
+ } else {
+ stringBuffer.append(TEXT_864);
+ stringBuffer.append(genFeature.getAccessorName());
+ stringBuffer.append(TEXT_865);
+ if (genModel.isReflectiveDelegation()) {
+ stringBuffer.append(TEXT_866);
+ stringBuffer.append(genFeature.getQualifiedFeatureAccessor());
+ stringBuffer.append(TEXT_867);
+ } else if (!genFeature.isVolatile()) {
+ if (genFeature.isListType()) {
+ if (genModel.isVirtualDelegation()) {
+ stringBuffer.append(TEXT_868);
+ stringBuffer.append(genFeature.getImportedType());
+ stringBuffer.append(TEXT_869);
+ stringBuffer.append(genFeature.getSafeName());
+ stringBuffer.append(TEXT_870);
+ stringBuffer.append(genFeature.getImportedType());
+ stringBuffer.append(TEXT_871);
+ stringBuffer.append(genFeature.getUpperName());
+ stringBuffer.append(TEXT_872);
+ }
+ stringBuffer.append(TEXT_873);
+ stringBuffer.append(genFeature.getSafeName());
+ stringBuffer.append(TEXT_874);
+ stringBuffer.append(genModel.getImportedName("org.eclipse.emf.ecore.util.InternalEList"));
+ stringBuffer.append(TEXT_875);
+ stringBuffer.append(genFeature.getSafeName());
+ stringBuffer.append(TEXT_876);
+ } else {
+ if (genModel.isVirtualDelegation() && !genFeature.isPrimitiveType()) {
+ stringBuffer.append(TEXT_877);
+ stringBuffer.append(genFeature.getUpperName());
+ stringBuffer.append(TEXT_878);
+ } else if (genClass.isESetFlag(genFeature)) {
+ stringBuffer.append(TEXT_879);
+ stringBuffer.append(genClass.getESetFlagsField(genFeature));
+ stringBuffer.append(TEXT_880);
+ stringBuffer.append(genFeature.getUpperName());
+ stringBuffer.append(TEXT_881);
+ } else {
+ stringBuffer.append(TEXT_882);
+ stringBuffer.append(genFeature.getUncapName());
+ stringBuffer.append(TEXT_883);
+ }
+ }
+ } else if (genFeature.hasDelegateFeature()) { GenFeature delegateFeature = genFeature.getDelegateFeature();
+ if (delegateFeature.isWrappedFeatureMapType()) {
+ stringBuffer.append(TEXT_884);
+ stringBuffer.append(delegateFeature.getAccessorName());
+ stringBuffer.append(TEXT_885);
+ stringBuffer.append(genFeature.getUpperName());
+ stringBuffer.append(TEXT_886);
+ } else {
+ stringBuffer.append(TEXT_887);
+ stringBuffer.append(genModel.getImportedName("org.eclipse.emf.ecore.util.FeatureMap"));
+ stringBuffer.append(TEXT_888);
+ stringBuffer.append(delegateFeature.getAccessorName());
+ stringBuffer.append(TEXT_889);
+ stringBuffer.append(genFeature.getQualifiedFeatureAccessor());
+ stringBuffer.append(TEXT_890);
+ }
+ } else {
+ stringBuffer.append(TEXT_891);
+ stringBuffer.append(genFeature.getFormattedName());
+ stringBuffer.append(TEXT_892);
+ stringBuffer.append(genFeature.getFeatureKind());
+ stringBuffer.append(TEXT_893);
+ //Class/isSetGenFeature.todo.override.javajetinc
+ }
+ stringBuffer.append(TEXT_894);
+ }
+ //Class/isSetGenFeature.override.javajetinc
+ }
+ //Class/genFeature.override.javajetinc
+ }//for
+ for (Iterator i= (isImplementation ? genClass.getImplementedGenOperations() : genClass.getDeclaredGenOperations()).iterator(); i.hasNext();) { GenOperation genOperation = (GenOperation)i.next();
+ if (isInterface) {
+ stringBuffer.append(TEXT_895);
+ if (genOperation.hasDocumentation()) {
+ stringBuffer.append(TEXT_896);
+ stringBuffer.append(genOperation.getDocumentation(genModel.getIndentation(stringBuffer)));
+ stringBuffer.append(TEXT_897);
+ }
+ if (!genModel.isSuppressEMFModelTags()) { boolean first = true; for (StringTokenizer stringTokenizer = new StringTokenizer(genOperation.getModelInfo(), "\n\r"); stringTokenizer.hasMoreTokens(); ) { String modelInfo = stringTokenizer.nextToken(); if (first) { first = false;
+ stringBuffer.append(TEXT_898);
+ stringBuffer.append(modelInfo);
+ } else {
+ stringBuffer.append(TEXT_899);
+ stringBuffer.append(modelInfo);
+ }} if (first) {
+ stringBuffer.append(TEXT_900);
+ }}
+ stringBuffer.append(TEXT_901);
+ } else {
+ stringBuffer.append(TEXT_902);
+ }
+ if (!isImplementation) {
+ stringBuffer.append(TEXT_903);
+ stringBuffer.append(genOperation.getImportedType());
+ stringBuffer.append(TEXT_904);
+ stringBuffer.append(genOperation.getName());
+ stringBuffer.append(TEXT_905);
+ stringBuffer.append(genOperation.getParameters());
+ stringBuffer.append(TEXT_906);
+ stringBuffer.append(genOperation.getThrows());
+ stringBuffer.append(TEXT_907);
+ } else {
+ stringBuffer.append(TEXT_908);
+ stringBuffer.append(genOperation.getImportedType());
+ stringBuffer.append(TEXT_909);
+ stringBuffer.append(genOperation.getName());
+ stringBuffer.append(TEXT_910);
+ stringBuffer.append(genOperation.getParameters());
+ stringBuffer.append(TEXT_911);
+ stringBuffer.append(genOperation.getThrows());
+ stringBuffer.append(TEXT_912);
+ if (genOperation.hasBody()) {
+ stringBuffer.append(TEXT_913);
+ stringBuffer.append(genOperation.getBody(genModel.getIndentation(stringBuffer)));
+ } else if (genOperation.isInvariant()) {GenClass opClass = genOperation.getGenClass(); String diagnostics = ((GenParameter)genOperation.getGenParameters().get(0)).getName(); String context = ((GenParameter)genOperation.getGenParameters().get(1)).getName();
+ stringBuffer.append(TEXT_914);
+ stringBuffer.append(diagnostics);
+ stringBuffer.append(TEXT_915);
+ stringBuffer.append(diagnostics);
+ stringBuffer.append(TEXT_916);
+ stringBuffer.append(genModel.getImportedName("org.eclipse.emf.common.util.BasicDiagnostic"));
+ stringBuffer.append(TEXT_917);
+ stringBuffer.append(genModel.getImportedName("org.eclipse.emf.common.util.Diagnostic"));
+ stringBuffer.append(TEXT_918);
+ stringBuffer.append(opClass.getGenPackage().getImportedValidatorClassName());
+ stringBuffer.append(TEXT_919);
+ stringBuffer.append(opClass.getGenPackage().getImportedValidatorClassName());
+ stringBuffer.append(TEXT_920);
+ stringBuffer.append(opClass.getOperationID(genOperation));
+ stringBuffer.append(TEXT_921);
+ stringBuffer.append(genModel.getImportedName("org.eclipse.emf.ecore.plugin.EcorePlugin"));
+ stringBuffer.append(TEXT_922);
+ stringBuffer.append(genOperation.getName());
+ stringBuffer.append(TEXT_923);
+ stringBuffer.append(genModel.getImportedName("org.eclipse.emf.ecore.util.EObjectValidator"));
+ stringBuffer.append(TEXT_924);
+ stringBuffer.append(context);
+ stringBuffer.append(TEXT_925);
+ stringBuffer.append(genModel.getNonNLS());
+ stringBuffer.append(genModel.getNonNLS(2));
+ stringBuffer.append(TEXT_926);
+ } else {
+ stringBuffer.append(TEXT_927);
+ //Class/implementedGenOperation.todo.override.javajetinc
+ }
+ stringBuffer.append(TEXT_928);
+ }
+ //Class/implementedGenOperation.override.javajetinc
+ }//for
+ if (isImplementation && !genModel.isReflectiveDelegation() && genClass.implementsAny(genClass.getEInverseAddGenFeatures())) {
+ stringBuffer.append(TEXT_929);
+ stringBuffer.append(genModel.getImportedName("org.eclipse.emf.ecore.InternalEObject"));
+ stringBuffer.append(TEXT_930);
+ for (Iterator i=genClass.getEInverseAddGenFeatures().iterator(); i.hasNext();) { GenFeature genFeature = (GenFeature)i.next();
+ if (!genModel.isMinimalReflectiveMethods() || genClass.getImplementedGenFeatures().contains(genFeature)) {
+ stringBuffer.append(TEXT_931);
+ stringBuffer.append(genFeature.getUpperName());
+ stringBuffer.append(TEXT_932);
+ if (genFeature.isListType()) {
+ if (genFeature.isMapType() && genFeature.isEffectiveSuppressEMFTypes()) {
+ stringBuffer.append(TEXT_933);
+ stringBuffer.append(genModel.getImportedName("org.eclipse.emf.ecore.util.InternalEList"));
+ stringBuffer.append(TEXT_934);
+ stringBuffer.append(genModel.getImportedName("org.eclipse.emf.common.util.EMap"));
+ stringBuffer.append(TEXT_935);
+ stringBuffer.append(genFeature.getGetAccessor());
+ stringBuffer.append(TEXT_936);
+ } else {
+ stringBuffer.append(TEXT_937);
+ stringBuffer.append(genModel.getImportedName("org.eclipse.emf.ecore.util.InternalEList"));
+ stringBuffer.append(TEXT_938);
+ stringBuffer.append(genFeature.getGetAccessor());
+ stringBuffer.append(TEXT_939);
+ }
+ } else if (genFeature.isContainer()) {
+ stringBuffer.append(TEXT_940);
+ stringBuffer.append(genFeature.getUpperName());
+ stringBuffer.append(TEXT_941);
+ } else {
+ if (genClass.getImplementingGenModel(genFeature).isVirtualDelegation()) {
+ stringBuffer.append(TEXT_942);
+ stringBuffer.append(genFeature.getImportedType());
+ stringBuffer.append(TEXT_943);
+ stringBuffer.append(genFeature.getSafeName());
+ stringBuffer.append(TEXT_944);
+ stringBuffer.append(genFeature.getImportedType());
+ stringBuffer.append(TEXT_945);
+ stringBuffer.append(genFeature.getUpperName());
+ stringBuffer.append(TEXT_946);
+ }
+ stringBuffer.append(TEXT_947);
+ stringBuffer.append(genFeature.getSafeName());
+ stringBuffer.append(TEXT_948);
+ if (genFeature.isEffectiveContains()) {
+ stringBuffer.append(TEXT_949);
+ stringBuffer.append(genModel.getImportedName("org.eclipse.emf.ecore.InternalEObject"));
+ stringBuffer.append(TEXT_950);
+ stringBuffer.append(genFeature.getSafeName());
+ stringBuffer.append(TEXT_951);
+ stringBuffer.append(genFeature.getUpperName());
+ stringBuffer.append(TEXT_952);
+ } else { GenFeature reverseFeature = genFeature.getReverse(); GenClass targetClass = reverseFeature.getGenClass();
+ stringBuffer.append(TEXT_953);
+ stringBuffer.append(genModel.getImportedName("org.eclipse.emf.ecore.InternalEObject"));
+ stringBuffer.append(TEXT_954);
+ stringBuffer.append(genFeature.getSafeName());
+ stringBuffer.append(TEXT_955);
+ stringBuffer.append(targetClass.getQualifiedFeatureID(reverseFeature));
+ stringBuffer.append(TEXT_956);
+ stringBuffer.append(targetClass.getImportedInterfaceName());
+ stringBuffer.append(TEXT_957);
+ }
+ stringBuffer.append(TEXT_958);
+ stringBuffer.append(genFeature.getAccessorName());
+ stringBuffer.append(TEXT_959);
+ stringBuffer.append(genFeature.getImportedType());
+ stringBuffer.append(TEXT_960);
+ }
+ }
+ }
+ stringBuffer.append(TEXT_961);
+ if (genModel.isMinimalReflectiveMethods()) {
+ stringBuffer.append(TEXT_962);
+ } else {
+ stringBuffer.append(TEXT_963);
+ }
+ stringBuffer.append(TEXT_964);
+ }
+ if (isImplementation && !genModel.isReflectiveDelegation() && genClass.implementsAny(genClass.getEInverseRemoveGenFeatures())) {
+ stringBuffer.append(TEXT_965);
+ stringBuffer.append(genModel.getImportedName("java.lang.Object"));
+ stringBuffer.append(TEXT_966);
+ for (Iterator i=genClass.getEInverseRemoveGenFeatures().iterator(); i.hasNext();) { GenFeature genFeature = (GenFeature)i.next();
+ if (!genModel.isMinimalReflectiveMethods() || genClass.getImplementedGenFeatures().contains(genFeature)) {
+ stringBuffer.append(TEXT_967);
+ stringBuffer.append(genFeature.getUpperName());
+ stringBuffer.append(TEXT_968);
+ if (genFeature.isListType()) {
+ if (genFeature.isMapType() && genFeature.isEffectiveSuppressEMFTypes()) {
+ stringBuffer.append(TEXT_969);
+ stringBuffer.append(genModel.getImportedName("org.eclipse.emf.ecore.util.InternalEList"));
+ stringBuffer.append(TEXT_970);
+ stringBuffer.append(genModel.getImportedName("org.eclipse.emf.common.util.EMap"));
+ stringBuffer.append(TEXT_971);
+ stringBuffer.append(genFeature.getGetAccessor());
+ stringBuffer.append(TEXT_972);
+ } else if (genFeature.isWrappedFeatureMapType()) {
+ stringBuffer.append(TEXT_973);
+ stringBuffer.append(genFeature.getImportedType());
+ stringBuffer.append(TEXT_974);
+ stringBuffer.append(genFeature.getGetAccessor());
+ stringBuffer.append(TEXT_975);
+ } else {
+ stringBuffer.append(TEXT_976);
+ stringBuffer.append(genFeature.getGetAccessor());
+ stringBuffer.append(TEXT_977);
+ }
+ } else if (genFeature.isContainer()) {
+ stringBuffer.append(TEXT_978);
+ stringBuffer.append(genFeature.getUpperName());
+ stringBuffer.append(TEXT_979);
+ } else if (genFeature.isUnsettable()) {
+ stringBuffer.append(TEXT_980);
+ stringBuffer.append(genFeature.getAccessorName());
+ stringBuffer.append(TEXT_981);
+ } else {
+ stringBuffer.append(TEXT_982);
+ stringBuffer.append(genFeature.getAccessorName());
+ stringBuffer.append(TEXT_983);
+ }
+ }
+ }
+ stringBuffer.append(TEXT_984);
+ if (genModel.isMinimalReflectiveMethods()) {
+ stringBuffer.append(TEXT_985);
+ } else {
+ stringBuffer.append(TEXT_986);
+ }
+ stringBuffer.append(TEXT_987);
+ }
+ if (isImplementation && !genModel.isReflectiveDelegation() && genClass.implementsAny(genClass.getEBasicRemoveFromContainerGenFeatures())) {
+ stringBuffer.append(TEXT_988);
+ for (Iterator i=genClass.getEBasicRemoveFromContainerGenFeatures().iterator(); i.hasNext();) { GenFeature genFeature = (GenFeature)i.next();
+ GenFeature reverseFeature = genFeature.getReverse(); GenClass targetClass = reverseFeature.getGenClass();
+ if (!genModel.isMinimalReflectiveMethods() || genClass.getImplementedGenFeatures().contains(genFeature)) {
+ stringBuffer.append(TEXT_989);
+ stringBuffer.append(genFeature.getUpperName());
+ stringBuffer.append(TEXT_990);
+ stringBuffer.append(targetClass.getQualifiedFeatureID(reverseFeature));
+ stringBuffer.append(TEXT_991);
+ stringBuffer.append(targetClass.getImportedInterfaceName());
+ stringBuffer.append(TEXT_992);
+ }
+ }
+ stringBuffer.append(TEXT_993);
+ if (genModel.isMinimalReflectiveMethods()) {
+ stringBuffer.append(TEXT_994);
+ } else {
+ stringBuffer.append(TEXT_995);
+ }
+ stringBuffer.append(TEXT_996);
+ }
+ if (isImplementation && !genModel.isReflectiveDelegation() && !genClass.getImplementedGenFeatures().isEmpty()) {
+ stringBuffer.append(TEXT_997);
+ for (Iterator i=genClass.getAllGenFeatures().iterator(); i.hasNext();) { GenFeature genFeature = (GenFeature)i.next();
+ if (!genModel.isMinimalReflectiveMethods() || genClass.getImplementedGenFeatures().contains(genFeature)) {
+ stringBuffer.append(TEXT_998);
+ stringBuffer.append(genFeature.getUpperName());
+ stringBuffer.append(TEXT_999);
+ if (genFeature.isPrimitiveType()) {
+ if (genFeature.isBooleanType()) {
+ stringBuffer.append(TEXT_1000);
+ stringBuffer.append(genFeature.getGetAccessor());
+ stringBuffer.append(TEXT_1001);
+ } else {
+ stringBuffer.append(TEXT_1002);
+ stringBuffer.append(genFeature.getObjectType());
+ stringBuffer.append(TEXT_1003);
+ stringBuffer.append(genFeature.getGetAccessor());
+ stringBuffer.append(TEXT_1004);
+ }
+ } else if (genFeature.isResolveProxies() && !genFeature.isListType()) {
+ stringBuffer.append(TEXT_1005);
+ stringBuffer.append(genFeature.getGetAccessor());
+ stringBuffer.append(TEXT_1006);
+ stringBuffer.append(genFeature.getAccessorName());
+ stringBuffer.append(TEXT_1007);
+ } else if (genFeature.isMapType()) {
+ if (genFeature.isEffectiveSuppressEMFTypes()) {
+ stringBuffer.append(TEXT_1008);
+ stringBuffer.append(genModel.getImportedName("org.eclipse.emf.common.util.EMap"));
+ stringBuffer.append(TEXT_1009);
+ stringBuffer.append(genFeature.getGetAccessor());
+ stringBuffer.append(TEXT_1010);
+ stringBuffer.append(genFeature.getGetAccessor());
+ stringBuffer.append(TEXT_1011);
+ } else {
+ stringBuffer.append(TEXT_1012);
+ stringBuffer.append(genFeature.getGetAccessor());
+ stringBuffer.append(TEXT_1013);
+ stringBuffer.append(genFeature.getGetAccessor());
+ stringBuffer.append(TEXT_1014);
+ }
+ } else if (genFeature.isWrappedFeatureMapType()) {
+ stringBuffer.append(TEXT_1015);
+ stringBuffer.append(genFeature.getGetAccessor());
+ stringBuffer.append(TEXT_1016);
+ } else if (genFeature.isFeatureMapType()) {
+ stringBuffer.append(TEXT_1017);
+ stringBuffer.append(genFeature.getGetAccessor());
+ stringBuffer.append(TEXT_1018);
+ stringBuffer.append(genModel.getImportedName("org.eclipse.emf.ecore.util.FeatureMap"));
+ stringBuffer.append(TEXT_1019);
+ stringBuffer.append(genFeature.getGetAccessor());
+ stringBuffer.append(TEXT_1020);
+ } else {
+ stringBuffer.append(TEXT_1021);
+ stringBuffer.append(genFeature.getGetAccessor());
+ stringBuffer.append(TEXT_1022);
+ }
+ }
+ }
+ stringBuffer.append(TEXT_1023);
+ if (genModel.isMinimalReflectiveMethods()) {
+ stringBuffer.append(TEXT_1024);
+ } else {
+ stringBuffer.append(TEXT_1025);
+ }
+ stringBuffer.append(TEXT_1026);
+ }
+ if (isImplementation && !genModel.isReflectiveDelegation() && genClass.implementsAny(genClass.getESetGenFeatures())) {
+ stringBuffer.append(TEXT_1027);
+ for (Iterator i=genClass.getESetGenFeatures().iterator(); i.hasNext();) { GenFeature genFeature = (GenFeature)i.next();
+ if (!genModel.isMinimalReflectiveMethods() || genClass.getImplementedGenFeatures().contains(genFeature)) {
+ stringBuffer.append(TEXT_1028);
+ stringBuffer.append(genFeature.getUpperName());
+ stringBuffer.append(TEXT_1029);
+ if (genFeature.isListType()) {
+ if (genFeature.isWrappedFeatureMapType()) {
+ stringBuffer.append(TEXT_1030);
+ stringBuffer.append(genFeature.getImportedType());
+ stringBuffer.append(TEXT_1031);
+ stringBuffer.append(genFeature.getGetAccessor());
+ stringBuffer.append(TEXT_1032);
+ } else if (genFeature.isFeatureMapType()) {
+ stringBuffer.append(TEXT_1033);
+ stringBuffer.append(genModel.getImportedName("org.eclipse.emf.ecore.util.FeatureMap"));
+ stringBuffer.append(TEXT_1034);
+ stringBuffer.append(genFeature.getGetAccessor());
+ stringBuffer.append(TEXT_1035);
+ } else if (genFeature.isMapType()) {
+ if (genFeature.isEffectiveSuppressEMFTypes()) {
+ stringBuffer.append(TEXT_1036);
+ stringBuffer.append(genModel.getImportedName("org.eclipse.emf.ecore.EStructuralFeature"));
+ stringBuffer.append(TEXT_1037);
+ stringBuffer.append(genModel.getImportedName("org.eclipse.emf.common.util.EMap"));
+ stringBuffer.append(TEXT_1038);
+ stringBuffer.append(genFeature.getGetAccessor());
+ stringBuffer.append(TEXT_1039);
+ } else {
+ stringBuffer.append(TEXT_1040);
+ stringBuffer.append(genModel.getImportedName("org.eclipse.emf.ecore.EStructuralFeature"));
+ stringBuffer.append(TEXT_1041);
+ stringBuffer.append(genFeature.getGetAccessor());
+ stringBuffer.append(TEXT_1042);
+ }
+ } else {
+ stringBuffer.append(TEXT_1043);
+ stringBuffer.append(genFeature.getGetAccessor());
+ stringBuffer.append(TEXT_1044);
+ stringBuffer.append(genFeature.getGetAccessor());
+ stringBuffer.append(TEXT_1045);
+ stringBuffer.append(genModel.getImportedName("java.util.Collection"));
+ stringBuffer.append(TEXT_1046);
+ }
+ } else if (genFeature.isPrimitiveType()) {
+ stringBuffer.append(TEXT_1047);
+ stringBuffer.append(genFeature.getAccessorName());
+ stringBuffer.append(TEXT_1048);
+ stringBuffer.append(genFeature.getObjectType());
+ stringBuffer.append(TEXT_1049);
+ stringBuffer.append(genFeature.getPrimitiveValueFunction());
+ stringBuffer.append(TEXT_1050);
+ } else {
+ stringBuffer.append(TEXT_1051);
+ stringBuffer.append(genFeature.getAccessorName());
+ stringBuffer.append(TEXT_1052);
+ stringBuffer.append(genFeature.getImportedType());
+ stringBuffer.append(TEXT_1053);
+ }
+ stringBuffer.append(TEXT_1054);
+ }
+ }
+ stringBuffer.append(TEXT_1055);
+ if (genModel.isMinimalReflectiveMethods()) {
+ stringBuffer.append(TEXT_1056);
+ } else {
+ stringBuffer.append(TEXT_1057);
+ }
+ stringBuffer.append(TEXT_1058);
+ for (Iterator i=genClass.getESetGenFeatures().iterator(); i.hasNext();) { GenFeature genFeature = (GenFeature)i.next();
+ if (!genModel.isMinimalReflectiveMethods() || genClass.getImplementedGenFeatures().contains(genFeature)) {
+ stringBuffer.append(TEXT_1059);
+ stringBuffer.append(genFeature.getUpperName());
+ stringBuffer.append(TEXT_1060);
+ if (genFeature.isListType() && !genFeature.isUnsettable()) {
+ if (genFeature.isWrappedFeatureMapType()) {
+ stringBuffer.append(TEXT_1061);
+ stringBuffer.append(genFeature.getImportedType());
+ stringBuffer.append(TEXT_1062);
+ stringBuffer.append(genFeature.getGetAccessor());
+ stringBuffer.append(TEXT_1063);
+ } else {
+ stringBuffer.append(TEXT_1064);
+ stringBuffer.append(genFeature.getGetAccessor());
+ stringBuffer.append(TEXT_1065);
+ }
+ } else if (genFeature.isUnsettable()) {
+ stringBuffer.append(TEXT_1066);
+ stringBuffer.append(genFeature.getAccessorName());
+ stringBuffer.append(TEXT_1067);
+ } else if (genFeature.isReferenceType()) {
+ stringBuffer.append(TEXT_1068);
+ stringBuffer.append(genFeature.getAccessorName());
+ stringBuffer.append(TEXT_1069);
+ stringBuffer.append(genFeature.getImportedType());
+ stringBuffer.append(TEXT_1070);
+ } else {
+ stringBuffer.append(TEXT_1071);
+ stringBuffer.append(genFeature.getAccessorName());
+ stringBuffer.append(TEXT_1072);
+ stringBuffer.append(genFeature.getUpperName());
+ stringBuffer.append(TEXT_1073);
+ }
+ stringBuffer.append(TEXT_1074);
+ }
+ }
+ stringBuffer.append(TEXT_1075);
+ if (genModel.isMinimalReflectiveMethods()) {
+ stringBuffer.append(TEXT_1076);
+ } else {
+ stringBuffer.append(TEXT_1077);
+ }
+ stringBuffer.append(TEXT_1078);
+ }
+ if (isImplementation && !genModel.isReflectiveDelegation() && !genClass.getImplementedGenFeatures().isEmpty()) {
+ stringBuffer.append(TEXT_1079);
+ for (Iterator i=genClass.getAllGenFeatures().iterator(); i.hasNext();) { GenFeature genFeature = (GenFeature)i.next();
+ if (!genModel.isMinimalReflectiveMethods() || genClass.getImplementedGenFeatures().contains(genFeature)) {
+ stringBuffer.append(TEXT_1080);
+ stringBuffer.append(genFeature.getUpperName());
+ stringBuffer.append(TEXT_1081);
+ if (genFeature.isListType() && !genFeature.isUnsettable()) {
+ if (genFeature.isWrappedFeatureMapType()) {
+ if (genFeature.isVolatile()) {
+ stringBuffer.append(TEXT_1082);
+ stringBuffer.append(genFeature.getImportedType());
+ stringBuffer.append(TEXT_1083);
+ stringBuffer.append(genFeature.getGetAccessor());
+ stringBuffer.append(TEXT_1084);
+ } else {
+ stringBuffer.append(TEXT_1085);
+ stringBuffer.append(genFeature.getSafeName());
+ stringBuffer.append(TEXT_1086);
+ stringBuffer.append(genFeature.getImportedType());
+ stringBuffer.append(TEXT_1087);
+ stringBuffer.append(genFeature.getGetAccessor());
+ stringBuffer.append(TEXT_1088);
+ }
+ } else {
+ if (genClass.isField(genFeature)) {
+ stringBuffer.append(TEXT_1089);
+ stringBuffer.append(genFeature.getSafeName());
+ stringBuffer.append(TEXT_1090);
+ stringBuffer.append(genFeature.getSafeName());
+ stringBuffer.append(TEXT_1091);
+ } else {
+ if (genFeature.isField() && genClass.getImplementingGenModel(genFeature).isVirtualDelegation()) {
+ stringBuffer.append(TEXT_1092);
+ stringBuffer.append(genFeature.getImportedType());
+ stringBuffer.append(TEXT_1093);
+ stringBuffer.append(genFeature.getSafeName());
+ stringBuffer.append(TEXT_1094);
+ stringBuffer.append(genFeature.getImportedType());
+ stringBuffer.append(TEXT_1095);
+ stringBuffer.append(genFeature.getUpperName());
+ stringBuffer.append(TEXT_1096);
+ stringBuffer.append(genFeature.getSafeName());
+ stringBuffer.append(TEXT_1097);
+ stringBuffer.append(genFeature.getSafeName());
+ stringBuffer.append(TEXT_1098);
+ } else {
+ stringBuffer.append(TEXT_1099);
+ stringBuffer.append(genFeature.getGetAccessor());
+ stringBuffer.append(TEXT_1100);
+ }
+ }
+ }
+ } else if (genFeature.isUnsettable()) {
+ stringBuffer.append(TEXT_1101);
+ stringBuffer.append(genFeature.getAccessorName());
+ stringBuffer.append(TEXT_1102);
+ } else if (genFeature.isResolveProxies()) {
+ if (genClass.isField(genFeature)) {
+ stringBuffer.append(TEXT_1103);
+ stringBuffer.append(genFeature.getSafeName());
+ stringBuffer.append(TEXT_1104);
+ } else {
+ if (genFeature.isField() && genClass.getImplementingGenModel(genFeature).isVirtualDelegation()) {
+ stringBuffer.append(TEXT_1105);
+ stringBuffer.append(genFeature.getUpperName());
+ stringBuffer.append(TEXT_1106);
+ } else {
+ stringBuffer.append(TEXT_1107);
+ stringBuffer.append(genFeature.getAccessorName());
+ stringBuffer.append(TEXT_1108);
+ }
+ }
+ } else if (genFeature.isReferenceType()) {
+ if (genClass.isField(genFeature)) {
+ stringBuffer.append(TEXT_1109);
+ stringBuffer.append(genFeature.getSafeName());
+ stringBuffer.append(TEXT_1110);
+ } else {
+ if (genFeature.isField() && genClass.getImplementingGenModel(genFeature).isVirtualDelegation()) {
+ stringBuffer.append(TEXT_1111);
+ stringBuffer.append(genFeature.getUpperName());
+ stringBuffer.append(TEXT_1112);
+ } else {
+ stringBuffer.append(TEXT_1113);
+ stringBuffer.append(genFeature.getGetAccessor());
+ stringBuffer.append(TEXT_1114);
+ }
+ }
+ } else if (genFeature.isPrimitiveType() || genFeature.isEnumType()) {
+ if (genClass.isField(genFeature)) {
+ if (genClass.isFlag(genFeature)) {
+ stringBuffer.append(TEXT_1115);
+ stringBuffer.append(genClass.getFlagsField(genFeature));
+ stringBuffer.append(TEXT_1116);
+ stringBuffer.append(genFeature.getUpperName());
+ stringBuffer.append(TEXT_1117);
+ stringBuffer.append(genFeature.getUpperName());
+ stringBuffer.append(TEXT_1118);
+ } else {
+ stringBuffer.append(TEXT_1119);
+ stringBuffer.append(genFeature.getSafeName());
+ stringBuffer.append(TEXT_1120);
+ stringBuffer.append(genFeature.getUpperName());
+ stringBuffer.append(TEXT_1121);
+ }
+ } else {
+ if (genFeature.isEnumType() && genFeature.isField() && genClass.getImplementingGenModel(genFeature).isVirtualDelegation()) {
+ stringBuffer.append(TEXT_1122);
+ stringBuffer.append(genFeature.getUpperName());
+ stringBuffer.append(TEXT_1123);
+ stringBuffer.append(genFeature.getUpperName());
+ stringBuffer.append(TEXT_1124);
+ stringBuffer.append(genFeature.getUpperName());
+ stringBuffer.append(TEXT_1125);
+ } else {
+ stringBuffer.append(TEXT_1126);
+ stringBuffer.append(genFeature.getGetAccessor());
+ stringBuffer.append(TEXT_1127);
+ stringBuffer.append(genFeature.getUpperName());
+ stringBuffer.append(TEXT_1128);
+ }
+ }
+ } else {//datatype
+ if (genClass.isField(genFeature)) {
+ stringBuffer.append(TEXT_1129);
+ stringBuffer.append(genFeature.getUpperName());
+ stringBuffer.append(TEXT_1130);
+ stringBuffer.append(genFeature.getSafeName());
+ stringBuffer.append(TEXT_1131);
+ stringBuffer.append(genFeature.getUpperName());
+ stringBuffer.append(TEXT_1132);
+ stringBuffer.append(genFeature.getSafeName());
+ stringBuffer.append(TEXT_1133);
+ } else {
+ if (genFeature.isField() && genClass.getImplementingGenModel(genFeature).isVirtualDelegation()) {
+ stringBuffer.append(TEXT_1134);
+ stringBuffer.append(genFeature.getImportedType());
+ stringBuffer.append(TEXT_1135);
+ stringBuffer.append(genFeature.getSafeName());
+ stringBuffer.append(TEXT_1136);
+ stringBuffer.append(genFeature.getImportedType());
+ stringBuffer.append(TEXT_1137);
+ stringBuffer.append(genFeature.getUpperName());
+ stringBuffer.append(TEXT_1138);
+ stringBuffer.append(genFeature.getUpperName());
+ stringBuffer.append(TEXT_1139);
+ stringBuffer.append(genFeature.getUpperName());
+ stringBuffer.append(TEXT_1140);
+ stringBuffer.append(genFeature.getSafeName());
+ stringBuffer.append(TEXT_1141);
+ stringBuffer.append(genFeature.getUpperName());
+ stringBuffer.append(TEXT_1142);
+ stringBuffer.append(genFeature.getSafeName());
+ stringBuffer.append(TEXT_1143);
+ } else {
+ stringBuffer.append(TEXT_1144);
+ stringBuffer.append(genFeature.getUpperName());
+ stringBuffer.append(TEXT_1145);
+ stringBuffer.append(genFeature.getGetAccessor());
+ stringBuffer.append(TEXT_1146);
+ stringBuffer.append(genFeature.getUpperName());
+ stringBuffer.append(TEXT_1147);
+ stringBuffer.append(genFeature.getGetAccessor());
+ stringBuffer.append(TEXT_1148);
+ }
+ }
+ }
+ }
+ }
+ stringBuffer.append(TEXT_1149);
+ if (genModel.isMinimalReflectiveMethods()) {
+ stringBuffer.append(TEXT_1150);
+ } else {
+ stringBuffer.append(TEXT_1151);
+ }
+ stringBuffer.append(TEXT_1152);
+ //Class/eIsSet.override.javajetinc
+ }
+ if (isImplementation && !genClass.getMixinGenFeatures().isEmpty()) {
+ stringBuffer.append(TEXT_1153);
+ for (Iterator m=genClass.getMixinGenClasses().iterator(); m.hasNext();) { GenClass mixinGenClass = (GenClass)m.next();
+ stringBuffer.append(TEXT_1154);
+ stringBuffer.append(mixinGenClass.getImportedInterfaceName());
+ stringBuffer.append(TEXT_1155);
+ for (Iterator f=mixinGenClass.getGenFeatures().iterator(); f.hasNext();) { GenFeature genFeature = (GenFeature)f.next();
+ stringBuffer.append(TEXT_1156);
+ stringBuffer.append(genFeature.getUpperName());
+ stringBuffer.append(TEXT_1157);
+ stringBuffer.append(mixinGenClass.getQualifiedFeatureID(genFeature));
+ stringBuffer.append(TEXT_1158);
+ }
+ stringBuffer.append(TEXT_1159);
+ }
+ stringBuffer.append(TEXT_1160);
+ for (Iterator m=genClass.getMixinGenClasses().iterator(); m.hasNext();) { GenClass mixinGenClass = (GenClass)m.next();
+ stringBuffer.append(TEXT_1161);
+ stringBuffer.append(mixinGenClass.getImportedInterfaceName());
+ stringBuffer.append(TEXT_1162);
+ for (Iterator f=mixinGenClass.getGenFeatures().iterator(); f.hasNext();) { GenFeature genFeature = (GenFeature)f.next();
+ stringBuffer.append(TEXT_1163);
+ stringBuffer.append(mixinGenClass.getQualifiedFeatureID(genFeature));
+ stringBuffer.append(TEXT_1164);
+ stringBuffer.append(genFeature.getUpperName());
+ stringBuffer.append(TEXT_1165);
+ }
+ stringBuffer.append(TEXT_1166);
+ }
+ stringBuffer.append(TEXT_1167);
+ }
+ if (isImplementation && genModel.isVirtualDelegation()) { String eVirtualValuesField = genClass.getEVirtualValuesField();
+ if (eVirtualValuesField != null) {
+ stringBuffer.append(TEXT_1168);
+ stringBuffer.append(eVirtualValuesField);
+ stringBuffer.append(TEXT_1169);
+ stringBuffer.append(eVirtualValuesField);
+ stringBuffer.append(TEXT_1170);
+ }
+ { List eVirtualIndexBitFields = genClass.getEVirtualIndexBitFields(new ArrayList());
+ if (!eVirtualIndexBitFields.isEmpty()) { List allEVirtualIndexBitFields = genClass.getAllEVirtualIndexBitFields(new ArrayList());
+ stringBuffer.append(TEXT_1171);
+ for (int i = 0; i < allEVirtualIndexBitFields.size(); i++) {
+ stringBuffer.append(TEXT_1172);
+ stringBuffer.append(i);
+ stringBuffer.append(TEXT_1173);
+ stringBuffer.append(allEVirtualIndexBitFields.get(i));
+ stringBuffer.append(TEXT_1174);
+ }
+ stringBuffer.append(TEXT_1175);
+ for (int i = 0; i < allEVirtualIndexBitFields.size(); i++) {
+ stringBuffer.append(TEXT_1176);
+ stringBuffer.append(i);
+ stringBuffer.append(TEXT_1177);
+ stringBuffer.append(allEVirtualIndexBitFields.get(i));
+ stringBuffer.append(TEXT_1178);
+ }
+ stringBuffer.append(TEXT_1179);
+ }
+ }
+ }
+ if (isImplementation && !genModel.isReflectiveDelegation() && !genClass.getToStringGenFeatures().isEmpty()) {
+ stringBuffer.append(TEXT_1180);
+ { boolean first = true;
+ for (Iterator i=genClass.getToStringGenFeatures().iterator(); i.hasNext(); ) { GenFeature genFeature = (GenFeature)i.next();
+ if (first) { first = false;
+ stringBuffer.append(TEXT_1181);
+ stringBuffer.append(genFeature.getName());
+ stringBuffer.append(TEXT_1182);
+ stringBuffer.append(genModel.getNonNLS());
+ } else {
+ stringBuffer.append(TEXT_1183);
+ stringBuffer.append(genFeature.getName());
+ stringBuffer.append(TEXT_1184);
+ stringBuffer.append(genModel.getNonNLS());
+ }
+ if (genFeature.isUnsettable() && !genFeature.isListType()) {
+ if (genModel.isVirtualDelegation() && !genFeature.isPrimitiveType()) {
+ stringBuffer.append(TEXT_1185);
+ stringBuffer.append(genFeature.getUpperName());
+ stringBuffer.append(TEXT_1186);
+ stringBuffer.append(genFeature.getUpperName());
+ stringBuffer.append(TEXT_1187);
+ stringBuffer.append(genModel.getNonNLS());
+ } else {
+ if (genClass.isFlag(genFeature)) {
+ stringBuffer.append(TEXT_1188);
+ if (genClass.isESetFlag(genFeature)) {
+ stringBuffer.append(TEXT_1189);
+ stringBuffer.append(genClass.getESetFlagsField(genFeature));
+ stringBuffer.append(TEXT_1190);
+ stringBuffer.append(genFeature.getUpperName());
+ stringBuffer.append(TEXT_1191);
+ } else {
+ stringBuffer.append(genFeature.getUncapName());
+ stringBuffer.append(TEXT_1192);
+ }
+ stringBuffer.append(TEXT_1193);
+ stringBuffer.append(genClass.getFlagsField(genFeature));
+ stringBuffer.append(TEXT_1194);
+ stringBuffer.append(genFeature.getUpperName());
+ stringBuffer.append(TEXT_1195);
+ stringBuffer.append(genModel.getNonNLS());
+ } else {
+ stringBuffer.append(TEXT_1196);
+ if (genClass.isESetFlag(genFeature)) {
+ stringBuffer.append(TEXT_1197);
+ stringBuffer.append(genClass.getESetFlagsField(genFeature));
+ stringBuffer.append(TEXT_1198);
+ stringBuffer.append(genFeature.getUpperName());
+ stringBuffer.append(TEXT_1199);
+ } else {
+ stringBuffer.append(genFeature.getUncapName());
+ stringBuffer.append(TEXT_1200);
+ }
+ stringBuffer.append(TEXT_1201);
+ stringBuffer.append(genFeature.getSafeName());
+ stringBuffer.append(TEXT_1202);
+ stringBuffer.append(genModel.getNonNLS());
+ }
+ }
+ } else {
+ if (genModel.isVirtualDelegation() && !genFeature.isPrimitiveType()) {
+ stringBuffer.append(TEXT_1203);
+ stringBuffer.append(genFeature.getUpperName());
+ if (!genFeature.isListType() && !genFeature.isReferenceType()){
+ stringBuffer.append(TEXT_1204);
+ stringBuffer.append(genFeature.getUpperName());
+ stringBuffer.append(TEXT_1205);
+ }
+ stringBuffer.append(TEXT_1206);
+ } else {
+ if (genClass.isFlag(genFeature)) {
+ stringBuffer.append(TEXT_1207);
+ stringBuffer.append(genClass.getFlagsField(genFeature));
+ stringBuffer.append(TEXT_1208);
+ stringBuffer.append(genFeature.getUpperName());
+ stringBuffer.append(TEXT_1209);
+ } else {
+ stringBuffer.append(TEXT_1210);
+ stringBuffer.append(genFeature.getSafeName());
+ stringBuffer.append(TEXT_1211);
+ }
+ }
+ }
+ }
+ }
+ stringBuffer.append(TEXT_1212);
+ }
+ if (isImplementation && genClass.isMapEntry()) { GenFeature keyFeature = genClass.getMapEntryKeyFeature(); GenFeature valueFeature = genClass.getMapEntryValueFeature();
+ stringBuffer.append(TEXT_1213);
+ if (keyFeature.isPrimitiveType()) {
+ stringBuffer.append(TEXT_1214);
+ stringBuffer.append(keyFeature.getObjectType());
+ stringBuffer.append(TEXT_1215);
+ } else {
+ stringBuffer.append(TEXT_1216);
+ }
+ stringBuffer.append(TEXT_1217);
+ if (keyFeature.isListType()) {
+ stringBuffer.append(TEXT_1218);
+ stringBuffer.append(genModel.getImportedName("java.util.Collection"));
+ stringBuffer.append(TEXT_1219);
+ } else if (keyFeature.isPrimitiveType()) {
+ stringBuffer.append(TEXT_1220);
+ stringBuffer.append(keyFeature.getObjectType());
+ stringBuffer.append(TEXT_1221);
+ stringBuffer.append(keyFeature.getPrimitiveValueFunction());
+ stringBuffer.append(TEXT_1222);
+ } else {
+ stringBuffer.append(TEXT_1223);
+ stringBuffer.append(keyFeature.getImportedType());
+ stringBuffer.append(TEXT_1224);
+ }
+ stringBuffer.append(TEXT_1225);
+ if (valueFeature.isPrimitiveType()) {
+ stringBuffer.append(TEXT_1226);
+ stringBuffer.append(valueFeature.getObjectType());
+ stringBuffer.append(TEXT_1227);
+ } else {
+ stringBuffer.append(TEXT_1228);
+ }
+ stringBuffer.append(TEXT_1229);
+ if (valueFeature.isListType()) {
+ stringBuffer.append(TEXT_1230);
+ stringBuffer.append(genModel.getImportedName("java.util.Collection"));
+ stringBuffer.append(TEXT_1231);
+ } else if (valueFeature.isPrimitiveType()) {
+ stringBuffer.append(TEXT_1232);
+ stringBuffer.append(valueFeature.getObjectType());
+ stringBuffer.append(TEXT_1233);
+ stringBuffer.append(valueFeature.getPrimitiveValueFunction());
+ stringBuffer.append(TEXT_1234);
+ } else {
+ stringBuffer.append(TEXT_1235);
+ stringBuffer.append(valueFeature.getImportedType());
+ stringBuffer.append(TEXT_1236);
+ }
+ stringBuffer.append(TEXT_1237);
+ stringBuffer.append(genModel.getImportedName("org.eclipse.emf.common.util.EMap"));
+ stringBuffer.append(TEXT_1238);
+ stringBuffer.append(genModel.getImportedName("org.eclipse.emf.ecore.EObject"));
+ stringBuffer.append(TEXT_1239);
+ stringBuffer.append(genModel.getImportedName("org.eclipse.emf.common.util.EMap"));
+ stringBuffer.append(TEXT_1240);
+ }
+ stringBuffer.append(TEXT_1241);
+ stringBuffer.append(isInterface ? " " + genClass.getInterfaceName() : genClass.getClassName());
+ // TODO fix the space above
+ genModel.emitSortedImports();
+ stringBuffer.append(TEXT_1242);
+ return stringBuffer.toString();
+ }
+}
diff --git a/branches/sdo-java-M2/sdo/tools/src/main/java/org/apache/tuscany/sdo/generate/templates/model/SDOFactoryClass.java b/branches/sdo-java-M2/sdo/tools/src/main/java/org/apache/tuscany/sdo/generate/templates/model/SDOFactoryClass.java
new file mode 100644
index 0000000000..1bcbcc4bc2
--- /dev/null
+++ b/branches/sdo-java-M2/sdo/tools/src/main/java/org/apache/tuscany/sdo/generate/templates/model/SDOFactoryClass.java
@@ -0,0 +1,1706 @@
+/**
+ *
+ * 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.generate.templates.model;
+
+import org.apache.tuscany.sdo.generate.util.*;
+import java.util.*;
+import org.eclipse.emf.codegen.ecore.genmodel.*;
+import org.eclipse.emf.ecore.*;
+import org.eclipse.emf.codegen.ecore.genmodel.impl.Literals;
+import org.eclipse.emf.ecore.util.*;
+
+public class SDOFactoryClass
+{
+ protected static String nl;
+ public static synchronized SDOFactoryClass create(String lineSeparator)
+ {
+ nl = lineSeparator;
+ SDOFactoryClass result = new SDOFactoryClass();
+ nl = null;
+ return result;
+ }
+
+ protected final String NL = nl == null ? (System.getProperties().getProperty("line.separator")) : nl;
+ protected final String TEXT_1 = "";
+ protected final String TEXT_2 = "/**" + NL + " * <copyright>" + NL + " * </copyright>" + NL + " *" + NL + " * ";
+ protected final String TEXT_3 = "Id";
+ protected final String TEXT_4 = NL + " */";
+ protected final String TEXT_5 = NL + "package ";
+ protected final String TEXT_6 = ";";
+ protected final String TEXT_7 = NL + "package ";
+ protected final String TEXT_8 = ";";
+ protected final String TEXT_9 = NL;
+ protected final String TEXT_10 = NL;
+ protected final String TEXT_11 = NL + "/**" + NL + " * <!-- begin-user-doc -->" + NL + " * The <b>Factory</b> for the model." + NL + " * It provides a create method for each non-abstract class of the model." + NL + " * <!-- end-user-doc -->";
+ protected final String TEXT_12 = NL + " * @see ";
+ protected final String TEXT_13 = NL + " * @generated" + NL + " */";
+ protected final String TEXT_14 = NL + "/**" + NL + " * <!-- begin-user-doc -->" + NL + " * An implementation of the model <b>Factory</b>." + NL + " * <!-- end-user-doc -->" + NL + " * @generated" + NL + " */";
+ protected final String TEXT_15 = NL + "public class ";
+ protected final String TEXT_16 = " extends ";
+ protected final String TEXT_17 = " implements ";
+ protected final String TEXT_18 = NL + "public interface ";
+ protected final String TEXT_19 = " extends ";
+ protected final String TEXT_20 = NL + "{";
+ protected final String TEXT_21 = NL + "\t/**" + NL + "\t * <!-- begin-user-doc -->" + NL + "\t * <!-- end-user-doc -->" + NL + "\t * @generated" + NL + "\t */" + NL + "\t";
+ protected final String TEXT_22 = " copyright = \"";
+ protected final String TEXT_23 = "\";";
+ protected final String TEXT_24 = NL;
+ protected final String TEXT_25 = NL;
+ protected final String TEXT_26 = NL + "\t/**" + NL + "\t * The singleton instance of the factory." + NL + "\t * <!-- begin-user-doc -->" + NL + "\t * <!-- end-user-doc -->" + NL + "\t * @generated" + NL + "\t */" + NL + "\t";
+ protected final String TEXT_27 = " INSTANCE = ";
+ protected final String TEXT_28 = ".init();" + NL;
+ protected final String TEXT_29 = NL + "\t/**" + NL + "\t * The singleton instance of the factory." + NL + "\t * <!-- begin-user-doc -->" + NL + "\t * <!-- end-user-doc -->" + NL + "\t * @generated" + NL + "\t */" + NL + "\t";
+ protected final String TEXT_30 = " eINSTANCE = ";
+ protected final String TEXT_31 = ".init();" + NL;
+ protected final String TEXT_32 = NL + "\t/**" + NL + "\t * The package namespace URI." + NL + "\t * <!-- begin-user-doc -->" + NL + "\t * <!-- end-user-doc -->" + NL + "\t * @generated" + NL + "\t */" + NL + "\t";
+ protected final String TEXT_33 = " NAMESPACE_URI = \"";
+ protected final String TEXT_34 = "\";";
+ protected final String TEXT_35 = NL + NL + "\t/**" + NL + "\t * The package namespace name." + NL + "\t * <!-- begin-user-doc -->" + NL + "\t * <!-- end-user-doc -->" + NL + "\t * @generated" + NL + "\t */" + NL + "\t";
+ protected final String TEXT_36 = " NAMESPACE_PREFIX = \"";
+ protected final String TEXT_37 = "\";";
+ protected final String TEXT_38 = "\t" + NL + "\t";
+ protected final String TEXT_39 = "int ";
+ protected final String TEXT_40 = " = ";
+ protected final String TEXT_41 = ";";
+ protected final String TEXT_42 = NL + "\t";
+ protected final String TEXT_43 = NL + "\t/**" + NL + "\t * Creates an instance of the factory." + NL + "\t * <!-- begin-user-doc -->" + NL + "\t * <!-- end-user-doc -->" + NL + "\t * @generated" + NL + "\t */" + NL + "\tpublic ";
+ protected final String TEXT_44 = "()" + NL + "\t{" + NL + "\t\tsuper(NAMESPACE_URI, NAMESPACE_PREFIX);" + NL + "\t}" + NL + "\t" + NL + "\t/**" + NL + "\t * <!-- begin-user-doc -->" + NL + "\t * <!-- end-user-doc -->" + NL + "\t * @generated" + NL + "\t */" + NL + "\tpublic ";
+ protected final String TEXT_45 = " create(int typeNumber)" + NL + "\t{" + NL + "\t\tswitch (typeNumber)" + NL + "\t\t{";
+ protected final String TEXT_46 = NL + "\t\t\tcase ";
+ protected final String TEXT_47 = ": return (";
+ protected final String TEXT_48 = ")create";
+ protected final String TEXT_49 = "();";
+ protected final String TEXT_50 = NL + "\t\t\tdefault:" + NL + "\t\t\t\treturn super.create(typeNumber);" + NL + "\t\t}" + NL + "\t}" + NL;
+ protected final String TEXT_51 = NL + "\t/**" + NL + "\t * <!-- begin-user-doc -->" + NL + "\t * <!-- end-user-doc -->" + NL + "\t * @generated" + NL + "\t */" + NL + "\tpublic Object createFromString(";
+ protected final String TEXT_52 = " type, String initialValue, int propertyValue)" + NL + "\t{" + NL + "\t\tswitch (propertyValue)" + NL + "\t\t{";
+ protected final String TEXT_53 = NL + "\t\t\tcase ";
+ protected final String TEXT_54 = ":" + NL + "\t\t\t\treturn create";
+ protected final String TEXT_55 = "FromString(type, initialValue);";
+ protected final String TEXT_56 = NL + "\t\t\tdefault:" + NL + "\t\t\t\tthrow new IllegalArgumentException(\"The datatype '\" + type.getName() + \"' is not a valid property value\");";
+ protected final String TEXT_57 = NL + "\t\t}" + NL + "\t}" + NL + "" + NL + "\t/**" + NL + "\t * <!-- begin-user-doc -->" + NL + "\t * <!-- end-user-doc -->" + NL + "\t * @generated" + NL + "\t */" + NL + "\tpublic String convertToString(";
+ protected final String TEXT_58 = " type, Object instanceValue, int propertyValue)" + NL + "\t{" + NL + "\t\tswitch (propertyValue)" + NL + "\t\t{";
+ protected final String TEXT_59 = NL + "\t\t\tcase ";
+ protected final String TEXT_60 = ":" + NL + "\t\t\t\treturn convert";
+ protected final String TEXT_61 = "ToString(type, instanceValue);";
+ protected final String TEXT_62 = NL + "\t\t\tdefault:" + NL + "\t\t\t\tthrow new IllegalArgumentException(\"The datatype '\" + type.getName() + \"' is not a valid property value\");";
+ protected final String TEXT_63 = NL + "\t\t}" + NL + "\t}";
+ protected final String TEXT_64 = NL + "\t/**" + NL + "\t * <!-- begin-user-doc -->" + NL + "\t * <!-- end-user-doc -->" + NL + "\t * @generated" + NL + "\t */" + NL + "\tpublic ";
+ protected final String TEXT_65 = " create";
+ protected final String TEXT_66 = "()" + NL + "\t{";
+ protected final String TEXT_67 = NL + "\t\t";
+ protected final String TEXT_68 = " ";
+ protected final String TEXT_69 = " = ";
+ protected final String TEXT_70 = "super.create(";
+ protected final String TEXT_71 = ");";
+ protected final String TEXT_72 = NL + "\t\t";
+ protected final String TEXT_73 = " ";
+ protected final String TEXT_74 = " = new ";
+ protected final String TEXT_75 = "()";
+ protected final String TEXT_76 = "{}";
+ protected final String TEXT_77 = ";";
+ protected final String TEXT_78 = NL + "\t\treturn ";
+ protected final String TEXT_79 = ";" + NL + "\t}";
+ protected final String TEXT_80 = NL + "\t" + NL + "\t// Following creates and initializes SDO metadata for the supported types.";
+ protected final String TEXT_81 = "\t";
+ protected final String TEXT_82 = "\t" + NL + "\tprotected ";
+ protected final String TEXT_83 = " ";
+ protected final String TEXT_84 = "Type = null;" + NL + "" + NL + "\tpublic ";
+ protected final String TEXT_85 = " get";
+ protected final String TEXT_86 = "()" + NL + "\t{" + NL + "\t\treturn ";
+ protected final String TEXT_87 = "Type;" + NL + "\t}" + NL;
+ protected final String TEXT_88 = "\t" + NL + "" + NL + "\tprivate static boolean isInited = false;" + NL + "" + NL + "\tpublic static ";
+ protected final String TEXT_89 = " init()" + NL + "\t{" + NL + "\t\tif (isInited) return (";
+ protected final String TEXT_90 = ")FactoryBase.getStaticFactory(";
+ protected final String TEXT_91 = ".NAMESPACE_URI);" + NL + "\t\t";
+ protected final String TEXT_92 = " the";
+ protected final String TEXT_93 = " = new ";
+ protected final String TEXT_94 = "();" + NL + "\t\tisInited = true;" + NL + "" + NL + "\t\t// Initialize simple dependencies" + NL + "\t\t";
+ protected final String TEXT_95 = ".registerStaticTypes(";
+ protected final String TEXT_96 = ".class);" + NL + "\t\t";
+ protected final String TEXT_97 = ".registerStaticTypes(";
+ protected final String TEXT_98 = ".class);" + NL + "" + NL + "\t\t// Create package meta-data objects" + NL + "\t\tthe";
+ protected final String TEXT_99 = ".createMetaData();" + NL + "" + NL + "\t\t// Initialize created meta-data" + NL + "\t\tthe";
+ protected final String TEXT_100 = ".initializeMetaData();" + NL + "" + NL + "\t\t// Mark meta-data to indicate it can't be changed" + NL + "\t\t//the";
+ protected final String TEXT_101 = ".freeze(); //FB do we need to freeze / should we freeze ????" + NL + "" + NL + "\t\treturn the";
+ protected final String TEXT_102 = ";" + NL + "\t}" + NL + " " + NL + "\tprivate boolean isCreated = false;" + NL + "" + NL + "\tpublic void createMetaData()" + NL + "\t{" + NL + "\t\tif (isCreated) return;" + NL + "\t\tisCreated = true;";
+ protected final String TEXT_103 = "\t";
+ protected final String TEXT_104 = NL;
+ protected final String TEXT_105 = NL + "\t\t";
+ protected final String TEXT_106 = "Type = createType(false, ";
+ protected final String TEXT_107 = ");";
+ protected final String TEXT_108 = NL + "\t\tcreateProperty(";
+ protected final String TEXT_109 = ", ";
+ protected final String TEXT_110 = "Type, ";
+ protected final String TEXT_111 = ".";
+ protected final String TEXT_112 = ");";
+ protected final String TEXT_113 = NL + "\t\t// Create enums" + NL + "\t\t// todo";
+ protected final String TEXT_114 = NL + "\t\t";
+ protected final String TEXT_115 = " = createEEnum(";
+ protected final String TEXT_116 = ");";
+ protected final String TEXT_117 = NL + "\t\t";
+ protected final String TEXT_118 = "Type = createType(true, ";
+ protected final String TEXT_119 = " );";
+ protected final String TEXT_120 = NL + "\t}" + NL + "\t" + NL + "\tprivate boolean isInitialized = false;" + NL + "" + NL + "\tpublic void initializeMetaData()" + NL + "\t{" + NL + "\t\tif (isInitialized) return;" + NL + "\t\tisInitialized = true;";
+ protected final String TEXT_121 = NL + NL + "\t\t// Obtain other dependent packages";
+ protected final String TEXT_122 = NL + "\t\t";
+ protected final String TEXT_123 = " ";
+ protected final String TEXT_124 = " = (";
+ protected final String TEXT_125 = ")FactoryBase.getStaticFactory(";
+ protected final String TEXT_126 = ".NAMESPACE_URI);";
+ protected final String TEXT_127 = NL + "\t\t";
+ protected final String TEXT_128 = " property = null;" + NL + "" + NL + "\t\t// Add supertypes to classes";
+ protected final String TEXT_129 = NL + "\t\taddSuperType(";
+ protected final String TEXT_130 = "Type, ";
+ protected final String TEXT_131 = "Type);";
+ protected final String TEXT_132 = NL + NL + "\t\t// Initialize classes and features; add operations and parameters";
+ protected final String TEXT_133 = NL + "\t\tinitializeType(";
+ protected final String TEXT_134 = "Type, ";
+ protected final String TEXT_135 = ".class, \"";
+ protected final String TEXT_136 = "\");";
+ protected final String TEXT_137 = NL + "\t\tsetInstanceProperty (";
+ protected final String TEXT_138 = "Type, \"";
+ protected final String TEXT_139 = "\", ";
+ protected final String TEXT_140 = ", ";
+ protected final String TEXT_141 = ");";
+ protected final String TEXT_142 = NL;
+ protected final String TEXT_143 = NL + "\t\tproperty = (";
+ protected final String TEXT_144 = ")";
+ protected final String TEXT_145 = "Type.getProperties().get(";
+ protected final String TEXT_146 = ".";
+ protected final String TEXT_147 = ");";
+ protected final String TEXT_148 = NL + "\t\tinitializeProperty(property, ";
+ protected final String TEXT_149 = ", \"";
+ protected final String TEXT_150 = "\", ";
+ protected final String TEXT_151 = ", ";
+ protected final String TEXT_152 = ", ";
+ protected final String TEXT_153 = ", ";
+ protected final String TEXT_154 = ", ";
+ protected final String TEXT_155 = ", ";
+ protected final String TEXT_156 = ", ";
+ protected final String TEXT_157 = ", ";
+ protected final String TEXT_158 = " , ";
+ protected final String TEXT_159 = ");";
+ protected final String TEXT_160 = NL + "\t\tinitializeProperty(property, ";
+ protected final String TEXT_161 = ", \"";
+ protected final String TEXT_162 = "\", ";
+ protected final String TEXT_163 = ", ";
+ protected final String TEXT_164 = ", ";
+ protected final String TEXT_165 = ", ";
+ protected final String TEXT_166 = ", ";
+ protected final String TEXT_167 = ", ";
+ protected final String TEXT_168 = ", ";
+ protected final String TEXT_169 = ");";
+ protected final String TEXT_170 = NL + "\t\tsetInstanceProperty (property, \"";
+ protected final String TEXT_171 = "\", ";
+ protected final String TEXT_172 = ", ";
+ protected final String TEXT_173 = ");";
+ protected final String TEXT_174 = NL;
+ protected final String TEXT_175 = NL + "\t\t// Initialize data types";
+ protected final String TEXT_176 = NL + "\t\tinitializeType(";
+ protected final String TEXT_177 = "Type, ";
+ protected final String TEXT_178 = ".class, \"";
+ protected final String TEXT_179 = "\", ";
+ protected final String TEXT_180 = ", ";
+ protected final String TEXT_181 = ");";
+ protected final String TEXT_182 = NL + "\t\tsetInstanceProperty (";
+ protected final String TEXT_183 = "Type, \"";
+ protected final String TEXT_184 = "\", ";
+ protected final String TEXT_185 = ", ";
+ protected final String TEXT_186 = ");";
+ protected final String TEXT_187 = NL;
+ protected final String TEXT_188 = NL + "\t\tcreateXSDMetaData(theModelPackageImpl);" + NL + "\t}" + NL + "\t " + NL + "\tprotected void createXSDMetaData(ModelFactoryImpl theModelPackageImpl)" + NL + "\t{" + NL + "\t\tsuper.createXSDMetaData();" + NL + "\t\t" + NL + "\t\t";
+ protected final String TEXT_189 = " property = null;" + NL + "\t\t";
+ protected final String TEXT_190 = NL + "\t\taddXSDMapping" + NL + "\t\t (new String[]" + NL + "\t\t\t {";
+ protected final String TEXT_191 = NL + "\t\t\t ";
+ protected final String TEXT_192 = ", ";
+ protected final String TEXT_193 = NL + "\t\t\t });" + NL;
+ protected final String TEXT_194 = NL + "\t\taddXSDMapping" + NL + "\t\t (";
+ protected final String TEXT_195 = "Type," + NL + "\t\t\t new String[] " + NL + "\t\t\t {";
+ protected final String TEXT_196 = NL + "\t\t\t ";
+ protected final String TEXT_197 = ", ";
+ protected final String TEXT_198 = NL + "\t\t\t });" + NL;
+ protected final String TEXT_199 = NL + "\t\tproperty = createGlobalProperty" + NL + "\t\t (\"";
+ protected final String TEXT_200 = "\"," + NL + "\t\t ";
+ protected final String TEXT_201 = ".get";
+ protected final String TEXT_202 = "()," + NL + "\t\t\t new String[]" + NL + "\t\t\t {";
+ protected final String TEXT_203 = NL + "\t\t\t ";
+ protected final String TEXT_204 = ", ";
+ protected final String TEXT_205 = NL + "\t\t\t }," + NL + "\t\t\t IS_ATTRIBUTE);";
+ protected final String TEXT_206 = NL + "\t\t\t });";
+ protected final String TEXT_207 = NL + " ";
+ protected final String TEXT_208 = NL + "\t\tsetInstanceProperty" + NL + "\t\t (property," + NL + "\t\t\t \"";
+ protected final String TEXT_209 = "\"," + NL + "\t\t\t ";
+ protected final String TEXT_210 = ", ";
+ protected final String TEXT_211 = ");";
+ protected final String TEXT_212 = NL + " ";
+ protected final String TEXT_213 = " ";
+ protected final String TEXT_214 = NL + "\t\taddXSDMapping" + NL + "\t\t ((";
+ protected final String TEXT_215 = ")";
+ protected final String TEXT_216 = "Type.getProperties().get(";
+ protected final String TEXT_217 = ".";
+ protected final String TEXT_218 = ")," + NL + "\t\t\t new String[]" + NL + "\t\t\t {";
+ protected final String TEXT_219 = NL + "\t\t\t ";
+ protected final String TEXT_220 = ", ";
+ protected final String TEXT_221 = NL + "\t\t\t });" + NL;
+ protected final String TEXT_222 = NL + " }" + NL + " ";
+ protected final String TEXT_223 = NL + "\t/**" + NL + "\t * <!-- begin-user-doc -->" + NL + "\t * <!-- end-user-doc -->" + NL + "\t * @generated" + NL + "\t */" + NL + "\tpublic ";
+ protected final String TEXT_224 = " create";
+ protected final String TEXT_225 = "(String literal)" + NL + "\t{";
+ protected final String TEXT_226 = NL + "\t\t";
+ protected final String TEXT_227 = " result = ";
+ protected final String TEXT_228 = ".get(literal);" + NL + "\t\tif (result == null) throw new IllegalArgumentException(\"The value '\" + literal + \"' is not a valid enumerator of '\" + ";
+ protected final String TEXT_229 = ".getName() + \"'\");";
+ protected final String TEXT_230 = NL + "\t\treturn result;";
+ protected final String TEXT_231 = NL + "\t\treturn new ";
+ protected final String TEXT_232 = "(create";
+ protected final String TEXT_233 = "(literal));";
+ protected final String TEXT_234 = NL + "\t\treturn create";
+ protected final String TEXT_235 = "(literal);";
+ protected final String TEXT_236 = NL + "\t\treturn new ";
+ protected final String TEXT_237 = "(";
+ protected final String TEXT_238 = ".create";
+ protected final String TEXT_239 = "(literal));";
+ protected final String TEXT_240 = NL + "\t\treturn ";
+ protected final String TEXT_241 = ".create";
+ protected final String TEXT_242 = "(literal);";
+ protected final String TEXT_243 = NL + "\t\treturn (";
+ protected final String TEXT_244 = ")";
+ protected final String TEXT_245 = ".createFromString(";
+ protected final String TEXT_246 = ", literal);";
+ protected final String TEXT_247 = NL + "\t\tif (literal == null) return null;" + NL + "\t\t";
+ protected final String TEXT_248 = " result = new ";
+ protected final String TEXT_249 = "();" + NL + "\t\tfor (";
+ protected final String TEXT_250 = " stringTokenizer = new ";
+ protected final String TEXT_251 = "(literal); stringTokenizer.hasMoreTokens(); )" + NL + "\t\t{" + NL + "\t\t\tString item = stringTokenizer.nextToken();";
+ protected final String TEXT_252 = NL + "\t\t\tresult.add(create";
+ protected final String TEXT_253 = "(item));";
+ protected final String TEXT_254 = NL + "\t\t\tresult.add(create";
+ protected final String TEXT_255 = "FromString(";
+ protected final String TEXT_256 = ", item));";
+ protected final String TEXT_257 = NL + "\t\t\tresult.add(";
+ protected final String TEXT_258 = ".create";
+ protected final String TEXT_259 = "(item));";
+ protected final String TEXT_260 = NL + "\t\t\tresult.add(";
+ protected final String TEXT_261 = ".createFromString(";
+ protected final String TEXT_262 = ", item));";
+ protected final String TEXT_263 = NL + "\t\t}" + NL + "\t\treturn result;";
+ protected final String TEXT_264 = NL + "\t\tif (literal == null) return ";
+ protected final String TEXT_265 = ";" + NL + "\t\t";
+ protected final String TEXT_266 = " result = ";
+ protected final String TEXT_267 = ";" + NL + "\t\tRuntimeException exception = null;";
+ protected final String TEXT_268 = NL + "\t\ttry" + NL + "\t\t{";
+ protected final String TEXT_269 = NL + "\t\t\tresult = create";
+ protected final String TEXT_270 = "(literal);";
+ protected final String TEXT_271 = NL + "\t\t\tresult = (";
+ protected final String TEXT_272 = ")create";
+ protected final String TEXT_273 = "FromString(";
+ protected final String TEXT_274 = ", literal);";
+ protected final String TEXT_275 = NL + "\t\t\tresult = ";
+ protected final String TEXT_276 = ".create";
+ protected final String TEXT_277 = "(literal);";
+ protected final String TEXT_278 = NL + "\t\t\tresult = (";
+ protected final String TEXT_279 = ")";
+ protected final String TEXT_280 = ".createFromString(";
+ protected final String TEXT_281 = ", literal);";
+ protected final String TEXT_282 = NL + "\t\t\tif (";
+ protected final String TEXT_283 = "result != null && ";
+ protected final String TEXT_284 = ".INSTANCE.validate(";
+ protected final String TEXT_285 = ", ";
+ protected final String TEXT_286 = "new ";
+ protected final String TEXT_287 = "(result)";
+ protected final String TEXT_288 = "result";
+ protected final String TEXT_289 = ", null, null))" + NL + "\t\t\t{" + NL + "\t\t\t\treturn result;" + NL + "\t\t\t}" + NL + "\t\t}" + NL + "\t\tcatch (RuntimeException e)" + NL + "\t\t{" + NL + "\t\t\texception = e;" + NL + "\t\t}";
+ protected final String TEXT_290 = NL + "\t\tif (";
+ protected final String TEXT_291 = "result != null || ";
+ protected final String TEXT_292 = "exception == null) return result;" + NL + " " + NL + "\t\tthrow exception;";
+ protected final String TEXT_293 = NL + "\t\t// TODO: implement this method" + NL + "\t\t// Ensure that you remove @generated or mark it @generated NOT" + NL + "\t\tthrow new ";
+ protected final String TEXT_294 = "();";
+ protected final String TEXT_295 = NL + "\t\treturn ((";
+ protected final String TEXT_296 = ")super.createFromString(";
+ protected final String TEXT_297 = ", literal)).";
+ protected final String TEXT_298 = "();";
+ protected final String TEXT_299 = NL + "\t\treturn (";
+ protected final String TEXT_300 = ")super.createFromString(";
+ protected final String TEXT_301 = ", literal);";
+ protected final String TEXT_302 = NL + "\t}" + NL;
+ protected final String TEXT_303 = NL + "\t/**" + NL + "\t * <!-- begin-user-doc -->" + NL + "\t * <!-- end-user-doc -->" + NL + "\t * @generated" + NL + "\t */" + NL + "\tpublic ";
+ protected final String TEXT_304 = " create";
+ protected final String TEXT_305 = "FromString(";
+ protected final String TEXT_306 = " type, String initialValue)" + NL + "\t{";
+ protected final String TEXT_307 = NL + "\t\treturn create";
+ protected final String TEXT_308 = "(initialValue);";
+ protected final String TEXT_309 = NL + "\t\t";
+ protected final String TEXT_310 = " result = ";
+ protected final String TEXT_311 = ".get(initialValue);" + NL + "\t\tif (result == null) throw new IllegalArgumentException(\"The value '\" + initialValue + \"' is not a valid enumerator of '\" + type.getName() + \"'\");";
+ protected final String TEXT_312 = NL + "\t\treturn result;";
+ protected final String TEXT_313 = NL + "\t\treturn (";
+ protected final String TEXT_314 = ")create";
+ protected final String TEXT_315 = "FromString(";
+ protected final String TEXT_316 = ", initialValue);";
+ protected final String TEXT_317 = NL + "\t\treturn (";
+ protected final String TEXT_318 = ")";
+ protected final String TEXT_319 = ".createFromString(";
+ protected final String TEXT_320 = ", initialValue);";
+ protected final String TEXT_321 = NL + "\t\treturn create";
+ protected final String TEXT_322 = "(initialValue);";
+ protected final String TEXT_323 = NL + "\t\tif (initialValue == null) return null;" + NL + "\t\t";
+ protected final String TEXT_324 = " result = new ";
+ protected final String TEXT_325 = "();" + NL + "\t\tfor (";
+ protected final String TEXT_326 = " stringTokenizer = new ";
+ protected final String TEXT_327 = "(initialValue); stringTokenizer.hasMoreTokens(); )" + NL + "\t\t{" + NL + "\t\t\tString item = stringTokenizer.nextToken();";
+ protected final String TEXT_328 = NL + "\t\t\tresult.add(create";
+ protected final String TEXT_329 = "FromString(";
+ protected final String TEXT_330 = ", item));";
+ protected final String TEXT_331 = NL + "\t\t\tresult.add(";
+ protected final String TEXT_332 = ".createFromString(";
+ protected final String TEXT_333 = ", item));";
+ protected final String TEXT_334 = NL + "\t\t}" + NL + "\t\treturn result;";
+ protected final String TEXT_335 = NL + "\t\treturn new ";
+ protected final String TEXT_336 = "(create";
+ protected final String TEXT_337 = "(initialValue));";
+ protected final String TEXT_338 = NL + "\t\treturn create";
+ protected final String TEXT_339 = "(initialValue);";
+ protected final String TEXT_340 = NL + "\t\tif (initialValue == null) return null;" + NL + "\t\t";
+ protected final String TEXT_341 = " result = null;" + NL + "\t\tRuntimeException exception = null;";
+ protected final String TEXT_342 = NL + "\t\ttry" + NL + "\t\t{";
+ protected final String TEXT_343 = NL + "\t\t\tresult = (";
+ protected final String TEXT_344 = ")create";
+ protected final String TEXT_345 = "FromString(";
+ protected final String TEXT_346 = ", initialValue);";
+ protected final String TEXT_347 = NL + "\t\t\tresult = (";
+ protected final String TEXT_348 = ")";
+ protected final String TEXT_349 = ".createFromString(";
+ protected final String TEXT_350 = ", initialValue);";
+ protected final String TEXT_351 = NL + "\t\t\tif (result != null && ";
+ protected final String TEXT_352 = ".INSTANCE.validate(type, result, null, null))" + NL + "\t\t\t{" + NL + "\t\t\t\treturn result;" + NL + "\t\t\t}" + NL + "\t\t}" + NL + "\t\tcatch (RuntimeException e)" + NL + "\t\t{" + NL + "\t\t\texception = e;" + NL + "\t\t}";
+ protected final String TEXT_353 = NL + "\t\tif (result != null || exception == null) return result;" + NL + " " + NL + "\t\tthrow exception;";
+ protected final String TEXT_354 = NL + "\t\t// TODO: implement this method" + NL + "\t\t// Ensure that you remove @generated or mark it @generated NOT" + NL + "\t\tthrow new ";
+ protected final String TEXT_355 = "();";
+ protected final String TEXT_356 = NL + "\t\treturn (";
+ protected final String TEXT_357 = ")super.createFromString(type, initialValue);";
+ protected final String TEXT_358 = NL + "\t}" + NL;
+ protected final String TEXT_359 = NL + "\t/**" + NL + "\t * <!-- begin-user-doc -->" + NL + "\t * <!-- end-user-doc -->" + NL + "\t * @generated" + NL + "\t */" + NL + "\tpublic String convert";
+ protected final String TEXT_360 = "(";
+ protected final String TEXT_361 = " instanceValue)" + NL + "\t{";
+ protected final String TEXT_362 = NL + "\t\treturn instanceValue == null ? null : instanceValue.toString();";
+ protected final String TEXT_363 = NL + "\t\treturn instanceValue == null ? null : convert";
+ protected final String TEXT_364 = "(instanceValue.";
+ protected final String TEXT_365 = "());";
+ protected final String TEXT_366 = NL + "\t\treturn convert";
+ protected final String TEXT_367 = "(instanceValue);";
+ protected final String TEXT_368 = NL + "\t\treturn ";
+ protected final String TEXT_369 = ".convert";
+ protected final String TEXT_370 = "(instanceValue);";
+ protected final String TEXT_371 = NL + "\t\treturn ";
+ protected final String TEXT_372 = ".convertToString(";
+ protected final String TEXT_373 = ", instanceValue);";
+ protected final String TEXT_374 = NL + "\t\tif (instanceValue == null) return null;" + NL + "\t\tif (instanceValue.isEmpty()) return \"\";" + NL + "\t\t";
+ protected final String TEXT_375 = " result = new ";
+ protected final String TEXT_376 = "();" + NL + "\t\tfor (";
+ protected final String TEXT_377 = " i = instanceValue.iterator(); i.hasNext(); )" + NL + "\t\t{";
+ protected final String TEXT_378 = NL + "\t\t\tresult.append(convert";
+ protected final String TEXT_379 = "((";
+ protected final String TEXT_380 = ")i.next()));";
+ protected final String TEXT_381 = NL + "\t\t\tresult.append(convert";
+ protected final String TEXT_382 = "ToString(";
+ protected final String TEXT_383 = ", i.next()));";
+ protected final String TEXT_384 = NL + "\t\t\tresult.append(";
+ protected final String TEXT_385 = ".convert";
+ protected final String TEXT_386 = "((";
+ protected final String TEXT_387 = ")i.next()));";
+ protected final String TEXT_388 = NL + "\t\t\tresult.append(";
+ protected final String TEXT_389 = ".convertToString(";
+ protected final String TEXT_390 = ", i.next()));";
+ protected final String TEXT_391 = NL + "\t\t\tresult.append(' ');" + NL + "\t\t}" + NL + "\t\treturn result.substring(0, result.length() - 1);";
+ protected final String TEXT_392 = NL + "\t\tif (instanceValue == null) return null;";
+ protected final String TEXT_393 = NL + "\t\tif (";
+ protected final String TEXT_394 = ".isInstance(instanceValue))" + NL + "\t\t{" + NL + "\t\t\ttry" + NL + "\t\t\t{";
+ protected final String TEXT_395 = NL + "\t\t\t\tString value = convert";
+ protected final String TEXT_396 = "(instanceValue);";
+ protected final String TEXT_397 = NL + "\t\t\t\tString value = convert";
+ protected final String TEXT_398 = "ToString(";
+ protected final String TEXT_399 = ", instanceValue);";
+ protected final String TEXT_400 = NL + "\t\t\t\tString value = ";
+ protected final String TEXT_401 = ".convert";
+ protected final String TEXT_402 = "((";
+ protected final String TEXT_403 = ")instanceValue);";
+ protected final String TEXT_404 = NL + "\t\t\t\tString value = ";
+ protected final String TEXT_405 = ".convertToString(";
+ protected final String TEXT_406 = ", instanceValue);";
+ protected final String TEXT_407 = NL + "\t\t\t\tif (value != null) return value;" + NL + "\t\t\t}" + NL + "\t\t\tcatch (Exception e)" + NL + "\t\t\t{" + NL + "\t\t\t}" + NL + "\t\t}";
+ protected final String TEXT_408 = NL + "\t\ttry" + NL + "\t\t{";
+ protected final String TEXT_409 = NL + "\t\t\tString value = convert";
+ protected final String TEXT_410 = "(instanceValue);";
+ protected final String TEXT_411 = NL + "\t\t\tString value = convert";
+ protected final String TEXT_412 = "ToString(";
+ protected final String TEXT_413 = ", new ";
+ protected final String TEXT_414 = "(instanceValue));";
+ protected final String TEXT_415 = NL + "\t\t\tString value = ";
+ protected final String TEXT_416 = ".convert";
+ protected final String TEXT_417 = "(instanceValue);";
+ protected final String TEXT_418 = NL + "\t\t\tString value = ";
+ protected final String TEXT_419 = ".convertToString(";
+ protected final String TEXT_420 = ", new ";
+ protected final String TEXT_421 = "(instanceValue));";
+ protected final String TEXT_422 = NL + "\t\t\tif (value != null) return value;" + NL + "\t\t}" + NL + "\t\tcatch (Exception e)" + NL + "\t\t{" + NL + "\t\t}";
+ protected final String TEXT_423 = NL + "\t\tthrow new IllegalArgumentException(\"Invalid value: '\"+instanceValue+\"' for datatype :\"+";
+ protected final String TEXT_424 = ".getName());";
+ protected final String TEXT_425 = NL + "\t\t// TODO: implement this method" + NL + "\t\t// Ensure that you remove @generated or mark it @generated NOT" + NL + "\t\tthrow new ";
+ protected final String TEXT_426 = "();";
+ protected final String TEXT_427 = NL + "\t\treturn super.convertToString(";
+ protected final String TEXT_428 = ", new ";
+ protected final String TEXT_429 = "(instanceValue));";
+ protected final String TEXT_430 = NL + "\t\treturn super.convertToString(";
+ protected final String TEXT_431 = ", instanceValue);";
+ protected final String TEXT_432 = NL + "\t}" + NL;
+ protected final String TEXT_433 = NL + "\t/**" + NL + "\t * <!-- begin-user-doc -->" + NL + "\t * <!-- end-user-doc -->" + NL + "\t * @generated" + NL + "\t */" + NL + "\tpublic String convert";
+ protected final String TEXT_434 = "ToString(";
+ protected final String TEXT_435 = " type, Object instanceValue)" + NL + "\t{";
+ protected final String TEXT_436 = NL + "\t\treturn instanceValue == null ? null : instanceValue.toString();";
+ protected final String TEXT_437 = NL + "\t\treturn convert";
+ protected final String TEXT_438 = "ToString(";
+ protected final String TEXT_439 = ", instanceValue);";
+ protected final String TEXT_440 = NL + "\t\treturn ";
+ protected final String TEXT_441 = ".convertToString(";
+ protected final String TEXT_442 = ", instanceValue);";
+ protected final String TEXT_443 = NL + "\t\treturn convert";
+ protected final String TEXT_444 = "((";
+ protected final String TEXT_445 = ")instanceValue);";
+ protected final String TEXT_446 = NL + "\t\tif (instanceValue == null) return null;" + NL + "\t\t";
+ protected final String TEXT_447 = " list = (";
+ protected final String TEXT_448 = ")instanceValue;" + NL + "\t\tif (list.isEmpty()) return \"\";" + NL + "\t\t";
+ protected final String TEXT_449 = " result = new ";
+ protected final String TEXT_450 = "();" + NL + "\t\tfor (";
+ protected final String TEXT_451 = " i = list.iterator(); i.hasNext(); )" + NL + "\t\t{";
+ protected final String TEXT_452 = NL + "\t\t\tresult.append(convert";
+ protected final String TEXT_453 = "ToString(";
+ protected final String TEXT_454 = ", i.next()));";
+ protected final String TEXT_455 = NL + "\t\t\tresult.append(";
+ protected final String TEXT_456 = ".convertToString(";
+ protected final String TEXT_457 = ", i.next()));";
+ protected final String TEXT_458 = NL + "\t\t\tresult.append(' ');" + NL + "\t\t}" + NL + "\t\treturn result.substring(0, result.length() - 1);";
+ protected final String TEXT_459 = NL + "\t\treturn instanceValue == null ? null : convert";
+ protected final String TEXT_460 = "(((";
+ protected final String TEXT_461 = ")instanceValue).";
+ protected final String TEXT_462 = "());";
+ protected final String TEXT_463 = NL + "\t\treturn convert";
+ protected final String TEXT_464 = "(instanceValue);";
+ protected final String TEXT_465 = NL + "\t\tif (instanceValue == null) return null;";
+ protected final String TEXT_466 = NL + "\t\tif (";
+ protected final String TEXT_467 = ".isInstance(instanceValue))" + NL + "\t\t{" + NL + "\t\t\ttry" + NL + "\t\t\t{";
+ protected final String TEXT_468 = NL + "\t\t\t\tString value = convert";
+ protected final String TEXT_469 = "ToString(";
+ protected final String TEXT_470 = ", instanceValue);";
+ protected final String TEXT_471 = NL + "\t\t\t\tString value = ";
+ protected final String TEXT_472 = ".convertToString(";
+ protected final String TEXT_473 = ", instanceValue);";
+ protected final String TEXT_474 = NL + "\t\t\t\tif (value != null) return value;" + NL + "\t\t\t}" + NL + "\t\t\tcatch (Exception e)" + NL + "\t\t\t{" + NL + "\t\t\t}" + NL + "\t\t}";
+ protected final String TEXT_475 = NL + "\t\tthrow new IllegalArgumentException(\"Invalid value: '\"+instanceValue+\"' for datatype :\"+type.getName());";
+ protected final String TEXT_476 = NL + "\t\t// TODO: implement this method" + NL + "\t\t// Ensure that you remove @generated or mark it @generated NOT" + NL + "\t\tthrow new ";
+ protected final String TEXT_477 = "();";
+ protected final String TEXT_478 = NL + "\t\treturn super.convertToString(type, instanceValue);";
+ protected final String TEXT_479 = NL + "\t}" + NL;
+ protected final String TEXT_480 = NL + "\t/**" + NL + "\t * Returns a new object of class '<em>";
+ protected final String TEXT_481 = "</em>'." + NL + "\t * <!-- begin-user-doc -->" + NL + "\t * <!-- end-user-doc -->" + NL + "\t * @return a new object of class '<em>";
+ protected final String TEXT_482 = "</em>'." + NL + "\t * @generated" + NL + "\t */" + NL + "\t";
+ protected final String TEXT_483 = " create";
+ protected final String TEXT_484 = "();" + NL;
+ protected final String TEXT_485 = NL + "\t/**" + NL + "\t * Returns an instance of data type '<em>";
+ protected final String TEXT_486 = "</em>' corresponding the given literal." + NL + "\t * <!-- begin-user-doc -->" + NL + "\t * <!-- end-user-doc -->" + NL + "\t * @param literal a literal of the data type." + NL + "\t * @return a new instance value of the data type." + NL + "\t * @generated" + NL + "\t */" + NL + "\t";
+ protected final String TEXT_487 = " create";
+ protected final String TEXT_488 = "(String literal);" + NL + "" + NL + "\t/**" + NL + "\t * Returns a literal representation of an instance of data type '<em>";
+ protected final String TEXT_489 = "</em>'." + NL + "\t * <!-- begin-user-doc -->" + NL + "\t * <!-- end-user-doc -->" + NL + "\t * @param instanceValue an instance value of the data type." + NL + "\t * @return a literal representation of the instance value." + NL + "\t * @generated" + NL + "\t */" + NL + "\tString convert";
+ protected final String TEXT_490 = "(";
+ protected final String TEXT_491 = " instanceValue);" + NL;
+ protected final String TEXT_492 = NL + "} //";
+ protected final String TEXT_493 = NL;
+
+ public String generate(Object argument)
+ {
+ final StringBuffer stringBuffer = new StringBuffer();
+
+
+ GenPackage genPackage = (GenPackage)((Object[])argument)[0]; GenModel genModel=genPackage.getGenModel();
+ boolean isInterface = Boolean.TRUE.equals(((Object[])argument)[1]); boolean isImplementation = Boolean.TRUE.equals(((Object[])argument)[2]);
+ String publicStaticFinalFlag = isImplementation ? "public static final " : "";
+ stringBuffer.append(TEXT_1);
+ stringBuffer.append(TEXT_2);
+ stringBuffer.append("$");
+ stringBuffer.append(TEXT_3);
+ stringBuffer.append("$");
+ stringBuffer.append(TEXT_4);
+ if (isInterface || genModel.isSuppressInterfaces()) {
+ stringBuffer.append(TEXT_5);
+ stringBuffer.append(genPackage.getReflectionPackageName());
+ stringBuffer.append(TEXT_6);
+ } else {
+ stringBuffer.append(TEXT_7);
+ stringBuffer.append(genPackage.getClassPackageName());
+ stringBuffer.append(TEXT_8);
+ }
+ stringBuffer.append(TEXT_9);
+ if (isImplementation) {
+ if (!genPackage.hasJavaLangConflict() && !genPackage.hasInterfaceImplConflict() && !genPackage.getClassPackageName().equals(genPackage.getInterfacePackageName())) genModel.addImport(genPackage.getInterfacePackageName() + ".*");
+ }
+ genModel.markImportLocation(stringBuffer);
+ stringBuffer.append(TEXT_10);
+ if (isInterface) {
+ stringBuffer.append(TEXT_11);
+ if (!genModel.isSuppressEMFMetaData()) {
+ stringBuffer.append(TEXT_12);
+ stringBuffer.append(genPackage.getQualifiedPackageInterfaceName());
+ }
+ stringBuffer.append(TEXT_13);
+ } else {
+ stringBuffer.append(TEXT_14);
+ }
+ if (isImplementation) {
+ stringBuffer.append(TEXT_15);
+ stringBuffer.append(genPackage.getFactoryClassName());
+ stringBuffer.append(TEXT_16);
+ stringBuffer.append(genModel.getImportedName("org.apache.tuscany.sdo.impl.FactoryBase"));
+ if (!genModel.isSuppressInterfaces()) {
+ stringBuffer.append(TEXT_17);
+ stringBuffer.append(genPackage.getImportedFactoryInterfaceName());
+ }
+ } else {
+ stringBuffer.append(TEXT_18);
+ stringBuffer.append(genPackage.getFactoryInterfaceName());
+ if (!genModel.isSuppressEMFMetaData()) {
+ stringBuffer.append(TEXT_19);
+ stringBuffer.append(genModel.getImportedName("org.eclipse.emf.ecore.EFactory"));
+ }
+ }
+ stringBuffer.append(TEXT_20);
+ if (genModel.getCopyrightText() != null) {
+ stringBuffer.append(TEXT_21);
+ stringBuffer.append(publicStaticFinalFlag);
+ stringBuffer.append(genModel.getImportedName("java.lang.String"));
+ stringBuffer.append(TEXT_22);
+ stringBuffer.append(genModel.getCopyrightText());
+ stringBuffer.append(TEXT_23);
+ stringBuffer.append(genModel.getNonNLS());
+ stringBuffer.append(TEXT_24);
+ }
+ stringBuffer.append(TEXT_25);
+ if (isInterface && genModel.isSuppressEMFMetaData()) {
+ stringBuffer.append(TEXT_26);
+ stringBuffer.append(publicStaticFinalFlag);
+ stringBuffer.append(genPackage.getFactoryInterfaceName());
+ stringBuffer.append(TEXT_27);
+ stringBuffer.append(genPackage.getQualifiedFactoryClassName());
+ stringBuffer.append(TEXT_28);
+ } else if (isInterface && !genModel.isSuppressInterfaces()) {
+ stringBuffer.append(TEXT_29);
+ stringBuffer.append(publicStaticFinalFlag);
+ stringBuffer.append(genPackage.getFactoryInterfaceName());
+ stringBuffer.append(TEXT_30);
+ stringBuffer.append(genPackage.getQualifiedFactoryClassName());
+ stringBuffer.append(TEXT_31);
+ }
+ if (isImplementation) {
+ stringBuffer.append(TEXT_32);
+ stringBuffer.append(publicStaticFinalFlag);
+ stringBuffer.append(genModel.getImportedName("java.lang.String"));
+ stringBuffer.append(TEXT_33);
+ stringBuffer.append(genPackage.getNSURI());
+ stringBuffer.append(TEXT_34);
+ stringBuffer.append(genModel.getNonNLS());
+ stringBuffer.append(TEXT_35);
+ stringBuffer.append(publicStaticFinalFlag);
+ stringBuffer.append(genModel.getImportedName("java.lang.String"));
+ stringBuffer.append(TEXT_36);
+ stringBuffer.append(genPackage.getNSName());
+ stringBuffer.append(TEXT_37);
+ stringBuffer.append(genModel.getNonNLS());
+ int genIndex = 1;
+for (Iterator i=genPackage.getOrderedGenClassifiers().iterator(); i.hasNext();) { GenClassifier genClassifier = (GenClassifier)i.next();
+ if (!genPackage.getClassifierID(genClassifier).equals("DOCUMENT_ROOT")) {
+ stringBuffer.append(TEXT_38);
+ stringBuffer.append(publicStaticFinalFlag);
+ stringBuffer.append(TEXT_39);
+ stringBuffer.append(genPackage.getClassifierID(genClassifier));
+ stringBuffer.append(TEXT_40);
+ stringBuffer.append(genIndex);
+ stringBuffer.append(TEXT_41);
+ genIndex++;
+ } }
+ stringBuffer.append(TEXT_42);
+ String factoryType = genModel.isSuppressEMFMetaData() ? genPackage.getFactoryClassName() : genPackage.getImportedFactoryInterfaceName();
+ stringBuffer.append(TEXT_43);
+ stringBuffer.append(genPackage.getFactoryClassName());
+ stringBuffer.append(TEXT_44);
+ stringBuffer.append(genModel.getImportedName("commonj.sdo.DataObject"));
+ stringBuffer.append(TEXT_45);
+ for (Iterator i=genPackage.getGenClasses().iterator(); i.hasNext();) { GenClass genClass = (GenClass)i.next();
+ if (!genClass.isAbstract() && !genClass.isDynamic()) {
+ stringBuffer.append(TEXT_46);
+ stringBuffer.append(genClass.getClassifierID());
+ stringBuffer.append(TEXT_47);
+ stringBuffer.append(genModel.getImportedName("commonj.sdo.DataObject"));
+ stringBuffer.append(TEXT_48);
+ stringBuffer.append(genClass.getName());
+ stringBuffer.append(TEXT_49);
+ }
+ }
+ stringBuffer.append(TEXT_50);
+ if (!genPackage.getAllGenDataTypes().isEmpty()) {
+ stringBuffer.append(TEXT_51);
+ stringBuffer.append(genModel.getImportedName("commonj.sdo.Type"));
+ stringBuffer.append(TEXT_52);
+ for (Iterator i=genPackage.getAllGenDataTypes().iterator(); i.hasNext();) { GenDataType genDataType = (GenDataType)i.next();
+ if (genDataType.isSerializable()) {
+ stringBuffer.append(TEXT_53);
+ stringBuffer.append(genDataType.getClassifierID());
+ stringBuffer.append(TEXT_54);
+ stringBuffer.append(genDataType.getName());
+ stringBuffer.append(TEXT_55);
+ }
+ }
+ stringBuffer.append(TEXT_56);
+ stringBuffer.append(genModel.getNonNLS());
+ stringBuffer.append(genModel.getNonNLS(2));
+ stringBuffer.append(TEXT_57);
+ stringBuffer.append(genModel.getImportedName("commonj.sdo.Type"));
+ stringBuffer.append(TEXT_58);
+ for (Iterator i=genPackage.getAllGenDataTypes().iterator(); i.hasNext();) { GenDataType genDataType = (GenDataType)i.next();
+ if (genDataType.isSerializable()) {
+ stringBuffer.append(TEXT_59);
+ stringBuffer.append(genDataType.getClassifierID());
+ stringBuffer.append(TEXT_60);
+ stringBuffer.append(genDataType.getName());
+ stringBuffer.append(TEXT_61);
+ }
+ }
+ stringBuffer.append(TEXT_62);
+ stringBuffer.append(genModel.getNonNLS());
+ stringBuffer.append(genModel.getNonNLS(2));
+ stringBuffer.append(TEXT_63);
+ }
+ for (Iterator i=genPackage.getGenClasses().iterator(); i.hasNext();) { GenClass genClass = (GenClass)i.next();
+ if (!genClass.isAbstract() && !genClass.isDynamic()) {
+ stringBuffer.append(TEXT_64);
+ stringBuffer.append(genClass.getImportedInterfaceName());
+ stringBuffer.append(TEXT_65);
+ stringBuffer.append(genClass.getName());
+ stringBuffer.append(TEXT_66);
+ if (genClass.isDynamic()) {
+ stringBuffer.append(TEXT_67);
+ stringBuffer.append(genClass.getImportedInterfaceName());
+ stringBuffer.append(TEXT_68);
+ stringBuffer.append(genClass.getSafeUncapName());
+ stringBuffer.append(TEXT_69);
+ stringBuffer.append(genClass.getCastFromEObject());
+ stringBuffer.append(TEXT_70);
+ stringBuffer.append(genClass.getQualifiedClassifierAccessor());
+ stringBuffer.append(TEXT_71);
+ } else {
+ stringBuffer.append(TEXT_72);
+ stringBuffer.append(genClass.getImportedClassName());
+ stringBuffer.append(TEXT_73);
+ stringBuffer.append(genClass.getSafeUncapName());
+ stringBuffer.append(TEXT_74);
+ stringBuffer.append(genClass.getImportedClassName());
+ stringBuffer.append(TEXT_75);
+ if (genModel.isSuppressInterfaces() && !genPackage.getReflectionPackageName().equals(genPackage.getInterfacePackageName())) {
+ stringBuffer.append(TEXT_76);
+ }
+ stringBuffer.append(TEXT_77);
+ }
+ stringBuffer.append(TEXT_78);
+ stringBuffer.append(genClass.getSafeUncapName());
+ stringBuffer.append(TEXT_79);
+ }
+ }
+ stringBuffer.append(TEXT_80);
+ for (Iterator i=genPackage.getOrderedGenClassifiers().iterator(); i.hasNext();) { GenClassifier genClassifier = (GenClassifier)i.next();
+ stringBuffer.append(TEXT_81);
+ if (!genPackage.getClassifierID(genClassifier).equals("DOCUMENT_ROOT")) {
+ stringBuffer.append(TEXT_82);
+ stringBuffer.append(genModel.getImportedName("commonj.sdo.Type"));
+ stringBuffer.append(TEXT_83);
+ stringBuffer.append(genClassifier.getSafeUncapName());
+ stringBuffer.append(TEXT_84);
+ stringBuffer.append(genModel.getImportedName("commonj.sdo.Type"));
+ stringBuffer.append(TEXT_85);
+ stringBuffer.append(genClassifier.getClassifierAccessorName());
+ stringBuffer.append(TEXT_86);
+ stringBuffer.append(genClassifier.getSafeUncapName());
+ stringBuffer.append(TEXT_87);
+ } }
+ stringBuffer.append(TEXT_88);
+ stringBuffer.append(factoryType);
+ stringBuffer.append(TEXT_89);
+ stringBuffer.append(factoryType);
+ stringBuffer.append(TEXT_90);
+ stringBuffer.append(factoryType);
+ stringBuffer.append(TEXT_91);
+ stringBuffer.append(factoryType);
+ stringBuffer.append(TEXT_92);
+ stringBuffer.append(factoryType);
+ stringBuffer.append(TEXT_93);
+ stringBuffer.append(factoryType);
+ stringBuffer.append(TEXT_94);
+ stringBuffer.append(genModel.getImportedName("org.apache.tuscany.sdo.util.SDOUtil"));
+ stringBuffer.append(TEXT_95);
+ stringBuffer.append(genModel.getImportedName("org.apache.tuscany.sdo.impl.SDOFactoryImpl"));
+ stringBuffer.append(TEXT_96);
+ stringBuffer.append(genModel.getImportedName("org.apache.tuscany.sdo.util.SDOUtil"));
+ stringBuffer.append(TEXT_97);
+ stringBuffer.append(genModel.getImportedName("org.apache.tuscany.sdo.model.impl.ModelPackageImpl"));
+ stringBuffer.append(TEXT_98);
+ stringBuffer.append(factoryType);
+ stringBuffer.append(TEXT_99);
+ stringBuffer.append(factoryType);
+ stringBuffer.append(TEXT_100);
+ stringBuffer.append(factoryType);
+ stringBuffer.append(TEXT_101);
+ stringBuffer.append(factoryType);
+ stringBuffer.append(TEXT_102);
+ if (!genPackage.getGenClasses().isEmpty()) {
+ stringBuffer.append(TEXT_103);
+ for (Iterator i=genPackage.getGenClasses().iterator(); i.hasNext();) { GenClass genClass = (GenClass)i.next();
+ stringBuffer.append(TEXT_104);
+ if (!genClass.isAbstract() && !genClass.isDynamic()) {
+ stringBuffer.append(TEXT_105);
+ stringBuffer.append(genClass.getSafeUncapName());
+ stringBuffer.append(TEXT_106);
+ stringBuffer.append(genPackage.getClassifierID(genClass));
+ stringBuffer.append(TEXT_107);
+ for (Iterator j=genClass.getGenFeatures().iterator(); j.hasNext();) { GenFeature genFeature = (GenFeature)j.next();
+ stringBuffer.append(TEXT_108);
+ stringBuffer.append(!genFeature.isReferenceType());
+ stringBuffer.append(TEXT_109);
+ stringBuffer.append(genClass.getSafeUncapName());
+ stringBuffer.append(TEXT_110);
+ stringBuffer.append(genClass.getClassName());
+ stringBuffer.append(TEXT_111);
+ stringBuffer.append(genFeature.getUpperName());
+ stringBuffer.append(TEXT_112);
+ }
+ }
+ }
+ }
+ if (!genPackage.getGenEnums().isEmpty()) {
+ stringBuffer.append(TEXT_113);
+ for (Iterator e=genPackage.getGenEnums().iterator(); e.hasNext();) { GenEnum genEnum = (GenEnum)e.next();
+ stringBuffer.append(TEXT_114);
+ stringBuffer.append(genEnum.getClassifierInstanceName());
+ stringBuffer.append(TEXT_115);
+ stringBuffer.append(genEnum.getClassifierID());
+ stringBuffer.append(TEXT_116);
+ }
+ }
+ if (!genPackage.getGenDataTypes().isEmpty()) {
+ for (Iterator d=genPackage.getGenDataTypes().iterator(); d.hasNext();) { GenDataType genDataType = (GenDataType)d.next();
+ stringBuffer.append(TEXT_117);
+ stringBuffer.append(genDataType.getSafeUncapName());
+ stringBuffer.append(TEXT_118);
+ stringBuffer.append(genPackage.getClassifierID(genDataType));
+ stringBuffer.append(TEXT_119);
+ }
+ }
+ stringBuffer.append(TEXT_120);
+ if (!genPackage.getPackageInitializationDependencies().isEmpty()) {
+ stringBuffer.append(TEXT_121);
+ for (Iterator p=genPackage.getPackageInitializationDependencies().iterator(); p.hasNext();) { GenPackage dep = (GenPackage)p.next();
+ stringBuffer.append(TEXT_122);
+ stringBuffer.append(dep.getImportedFactoryClassName());
+ stringBuffer.append(TEXT_123);
+ stringBuffer.append(genPackage.getPackageInstanceVariable(dep));
+ stringBuffer.append(TEXT_124);
+ stringBuffer.append(dep.getImportedFactoryClassName());
+ stringBuffer.append(TEXT_125);
+ stringBuffer.append(dep.getImportedFactoryClassName());
+ stringBuffer.append(TEXT_126);
+ }
+ }
+ List annotationSources = genPackage.getAnnotationSources();
+ annotationSources.remove(ExtendedMetaData.ANNOTATION_URI);
+ stringBuffer.append(TEXT_127);
+ stringBuffer.append(genModel.getImportedName("commonj.sdo.Property"));
+ stringBuffer.append(TEXT_128);
+ for (Iterator c=genPackage.getGenClasses().iterator(); c.hasNext();) { GenClass genClass = (GenClass)c.next();
+ for (Iterator b=genClass.getBaseGenClasses().iterator(); b.hasNext();) { GenClass baseGenClass = (GenClass)b.next();
+ stringBuffer.append(TEXT_129);
+ stringBuffer.append(genClass.getSafeUncapName());
+ stringBuffer.append(TEXT_130);
+ stringBuffer.append(baseGenClass.getSafeUncapName());
+ stringBuffer.append(TEXT_131);
+ }
+ }
+ stringBuffer.append(TEXT_132);
+ for (Iterator i=genPackage.getGenClasses().iterator(); i.hasNext();) { GenClass genClass = (GenClass)i.next();
+ if (!genClass.isAbstract() && !genClass.isDynamic()) {
+ stringBuffer.append(TEXT_133);
+ stringBuffer.append(genClass.getSafeUncapName());
+ stringBuffer.append(TEXT_134);
+ stringBuffer.append(genClass.getImportedInterfaceName());
+ stringBuffer.append(TEXT_135);
+ stringBuffer.append(genClass.getName());
+ stringBuffer.append(TEXT_136);
+ for (Iterator sources = annotationSources.iterator(); sources.hasNext();) { String annotationSource = (String)sources.next();
+ EAnnotation classAnnotation = genClass.getEcoreClassifier().getEAnnotation(annotationSource);
+ if (classAnnotation != null) {
+ for (Iterator k = classAnnotation.getDetails().iterator(); k.hasNext();) { Map.Entry detail = (Map.Entry)k.next(); String key = Literals.toStringLiteral((String)detail.getKey(), genModel); String value = Literals.toStringLiteral((String)detail.getValue(), genModel);
+ stringBuffer.append(TEXT_137);
+ stringBuffer.append(genClass.getSafeUncapName());
+ stringBuffer.append(TEXT_138);
+ stringBuffer.append(annotationSource);
+ stringBuffer.append(TEXT_139);
+ stringBuffer.append(key);
+ stringBuffer.append(TEXT_140);
+ stringBuffer.append(value);
+ stringBuffer.append(genModel.getNonNLS(key + value));
+ stringBuffer.append(TEXT_141);
+ }
+ }
+ }
+ stringBuffer.append(TEXT_142);
+ for (Iterator j=genClass.getGenFeatures().iterator(); j.hasNext();) {GenFeature genFeature = (GenFeature)j.next();
+ String type = genFeature.getType().equals("commonj.sdo.Sequence") ? "getSequence()" : genPackage.getPackageInstanceVariable(genFeature.getTypeGenPackage()) + ".get" + genFeature.getTypeClassifierAccessorName() + "()";
+ stringBuffer.append(TEXT_143);
+ stringBuffer.append(genModel.getImportedName("commonj.sdo.Property"));
+ stringBuffer.append(TEXT_144);
+ stringBuffer.append(genClass.getSafeUncapName());
+ stringBuffer.append(TEXT_145);
+ stringBuffer.append(genClass.getClassName());
+ stringBuffer.append(TEXT_146);
+ stringBuffer.append(genFeature.getUpperName());
+ stringBuffer.append(TEXT_147);
+ if (genFeature.isReferenceType()) { GenFeature reverseGenFeature = genFeature.getReverse();
+ String reverse = reverseGenFeature == null ? "null" : genPackage.getPackageInstanceVariable(reverseGenFeature.getGenPackage()) + ".get" + reverseGenFeature.getFeatureAccessorName() + "()";
+ stringBuffer.append(TEXT_148);
+ stringBuffer.append(type);
+ stringBuffer.append(TEXT_149);
+ stringBuffer.append(genFeature.getSafeName());
+ stringBuffer.append(TEXT_150);
+ stringBuffer.append(genFeature.getDefaultValue());
+ stringBuffer.append(TEXT_151);
+ stringBuffer.append(genFeature.getLowerBound());
+ stringBuffer.append(TEXT_152);
+ stringBuffer.append(genFeature.getUpperBound());
+ stringBuffer.append(TEXT_153);
+ stringBuffer.append(genFeature.getContainerClass());
+ stringBuffer.append(TEXT_154);
+ stringBuffer.append(genFeature.getChangeableFlag().equals("IS_CHANGEABLE") ? "false" : "true");
+ stringBuffer.append(TEXT_155);
+ stringBuffer.append(genFeature.getUnsettableFlag().equals("IS_UNSETTABLE") ? "true": "false");
+ stringBuffer.append(TEXT_156);
+ stringBuffer.append(genFeature.getDerivedFlag().equals("IS_DERIVED") ? "true" : "false");
+ stringBuffer.append(TEXT_157);
+ stringBuffer.append(genFeature.getContainmentFlag().equals("IS_COMPOSITE")? "true": "false");
+ stringBuffer.append(TEXT_158);
+ stringBuffer.append(reverse);
+ stringBuffer.append(TEXT_159);
+ }else{
+ stringBuffer.append(TEXT_160);
+ stringBuffer.append(type);
+ stringBuffer.append(TEXT_161);
+ stringBuffer.append(genFeature.getSafeName());
+ stringBuffer.append(TEXT_162);
+ stringBuffer.append(genFeature.getDefaultValue());
+ stringBuffer.append(TEXT_163);
+ stringBuffer.append(genFeature.getLowerBound());
+ stringBuffer.append(TEXT_164);
+ stringBuffer.append(genFeature.getUpperBound());
+ stringBuffer.append(TEXT_165);
+ stringBuffer.append(genFeature.getContainerClass());
+ stringBuffer.append(TEXT_166);
+ stringBuffer.append(genFeature.getChangeableFlag().equals("IS_CHANGEABLE") ? "false" : "true");
+ stringBuffer.append(TEXT_167);
+ stringBuffer.append(genFeature.getUnsettableFlag().equals("IS_UNSETTABLE") ? "true": "false");
+ stringBuffer.append(TEXT_168);
+ stringBuffer.append(genFeature.getDerivedFlag().equals("IS_DERIVED") ? "true" : "false");
+ stringBuffer.append(TEXT_169);
+ }
+ for (Iterator sources = annotationSources.iterator(); sources.hasNext();) { String annotationSource = (String)sources.next();
+ EAnnotation featureAnnotation = genFeature.getEcoreFeature().getEAnnotation(annotationSource);
+ if (featureAnnotation != null) {
+ for (Iterator k = featureAnnotation.getDetails().iterator(); k.hasNext();) { Map.Entry detail = (Map.Entry)k.next(); String key = Literals.toStringLiteral((String)detail.getKey(), genModel); String value = Literals.toStringLiteral((String)detail.getValue(), genModel);
+ stringBuffer.append(TEXT_170);
+ stringBuffer.append(annotationSource);
+ stringBuffer.append(TEXT_171);
+ stringBuffer.append(key);
+ stringBuffer.append(TEXT_172);
+ stringBuffer.append(value);
+ stringBuffer.append(genModel.getNonNLS(key + value));
+ stringBuffer.append(TEXT_173);
+ }
+ }
+ }
+ stringBuffer.append(TEXT_174);
+ }
+ }
+ }
+ if (!genPackage.getGenDataTypes().isEmpty()) {
+ stringBuffer.append(TEXT_175);
+ for (Iterator d=genPackage.getGenDataTypes().iterator(); d.hasNext();) { GenDataType genDataType = (GenDataType)d.next();
+ stringBuffer.append(TEXT_176);
+ stringBuffer.append(genDataType.getSafeUncapName());
+ stringBuffer.append(TEXT_177);
+ stringBuffer.append(genDataType.getImportedInstanceClassName());
+ stringBuffer.append(TEXT_178);
+ stringBuffer.append(genDataType.getName());
+ stringBuffer.append(TEXT_179);
+ stringBuffer.append(genDataType.getSerializableFlag().equals("IS_SERIALIZABLE") ? "true" : "false");
+ stringBuffer.append(TEXT_180);
+ stringBuffer.append(genDataType.getGeneratedInstanceClassFlag().equals("IS_GENERATED_INSTANCE_CLASS") ? "true" : "false" );
+ stringBuffer.append(TEXT_181);
+ stringBuffer.append(genModel.getNonNLS());
+ for (Iterator sources = annotationSources.iterator(); sources.hasNext();) { String annotationSource = (String)sources.next();
+ EAnnotation dataTypeAnnotation = genDataType.getEcoreDataType().getEAnnotation(annotationSource);
+ if (dataTypeAnnotation != null) {
+ for (Iterator k = dataTypeAnnotation.getDetails().iterator(); k.hasNext();) { Map.Entry detail = (Map.Entry)k.next(); String key = Literals.toStringLiteral((String)detail.getKey(), genModel); String value = Literals.toStringLiteral((String)detail.getValue(), genModel);
+ stringBuffer.append(TEXT_182);
+ stringBuffer.append(genDataType.getSafeUncapName());
+ stringBuffer.append(TEXT_183);
+ stringBuffer.append(annotationSource);
+ stringBuffer.append(TEXT_184);
+ stringBuffer.append(key);
+ stringBuffer.append(TEXT_185);
+ stringBuffer.append(value);
+ stringBuffer.append(genModel.getNonNLS(key + value));
+ stringBuffer.append(TEXT_186);
+ }
+ }
+ }
+ stringBuffer.append(TEXT_187);
+ }
+ }
+ stringBuffer.append(TEXT_188);
+ stringBuffer.append(genModel.getImportedName("commonj.sdo.Property"));
+ stringBuffer.append(TEXT_189);
+ String extendedMetaDataSource = ExtendedMetaData.ANNOTATION_URI;
+ EAnnotation packageAnnotation = genPackage.getEcorePackage().getEAnnotation(extendedMetaDataSource);
+ if (packageAnnotation != null){
+ stringBuffer.append(TEXT_190);
+ for (Iterator k = packageAnnotation.getDetails().iterator(); k.hasNext();) { Map.Entry detail = (Map.Entry)k.next(); String key = Literals.toStringLiteral((String)detail.getKey(), genModel); String value = Literals.toStringLiteral((String)detail.getValue(), genModel);
+ stringBuffer.append(TEXT_191);
+ stringBuffer.append(key);
+ stringBuffer.append(TEXT_192);
+ stringBuffer.append(value);
+ stringBuffer.append(k.hasNext() ? "," : "");
+ stringBuffer.append(genModel.getNonNLS(key + value));
+ }
+ stringBuffer.append(TEXT_193);
+ }
+ for (Iterator i=genPackage.getGenClassifiers().iterator(); i.hasNext();) { GenClassifier genClassifier = (GenClassifier)i.next(); EAnnotation classAnnotation = genClassifier.getEcoreClassifier().getEAnnotation(extendedMetaDataSource);
+ if (classAnnotation != null && !genClassifier.getName().equals("DocumentRoot")) {
+ stringBuffer.append(TEXT_194);
+ stringBuffer.append(genClassifier.getSafeUncapName());
+ stringBuffer.append(TEXT_195);
+ for (Iterator k = classAnnotation.getDetails().iterator(); k.hasNext();) { Map.Entry detail = (Map.Entry)k.next(); String key = Literals.toStringLiteral((String)detail.getKey(), genModel); String value = Literals.toStringLiteral((String)detail.getValue(), genModel);
+ stringBuffer.append(TEXT_196);
+ stringBuffer.append(key);
+ stringBuffer.append(TEXT_197);
+ stringBuffer.append(value);
+ stringBuffer.append(k.hasNext() ? "," : "");
+ stringBuffer.append(genModel.getNonNLS(key + value));
+ }
+ stringBuffer.append(TEXT_198);
+ }
+ if (genClassifier instanceof GenClass) { GenClass genClass = (GenClass) genClassifier;
+ for (Iterator j=genClass.getGenFeatures().iterator(); j.hasNext();) { GenFeature genFeature = (GenFeature)j.next();
+ EAnnotation featureAnnotation = genFeature.getEcoreFeature().getEAnnotation(extendedMetaDataSource);
+ if (genClass.getName().equals("DocumentRoot")) {
+ if (!(genFeature.getName().equals("mixed") || genFeature.getName().equals("xMLNSPrefixMap") || genFeature.getName().equals("xSISchemaLocation"))) {
+ stringBuffer.append(TEXT_199);
+ stringBuffer.append(genFeature.getName());
+ stringBuffer.append(TEXT_200);
+ stringBuffer.append(genPackage.getPackageInstanceVariable(genFeature.getTypeGenPackage()));
+ stringBuffer.append(TEXT_201);
+ stringBuffer.append(genFeature.getTypeClassifierAccessorName());
+ stringBuffer.append(TEXT_202);
+ for (Iterator k = featureAnnotation.getDetails().iterator(); k.hasNext();) { Map.Entry detail = (Map.Entry)k.next(); String key = Literals.toStringLiteral((String)detail.getKey(), genModel); String value = Literals.toStringLiteral((String)detail.getValue(), genModel);
+ stringBuffer.append(TEXT_203);
+ stringBuffer.append(key);
+ stringBuffer.append(TEXT_204);
+ stringBuffer.append(value);
+ stringBuffer.append(k.hasNext() ? "," : "");
+ stringBuffer.append(genModel.getNonNLS(key + value));
+ }
+ if (!genFeature.isReferenceType()) {
+ stringBuffer.append(TEXT_205);
+ } else {
+ stringBuffer.append(TEXT_206);
+ }
+ stringBuffer.append(TEXT_207);
+ for (Iterator sources = genPackage.getAnnotationSources().iterator(); sources.hasNext();) { String annotationSource = (String)sources.next();
+ if (!annotationSource.equals(extendedMetaDataSource)) {
+ EAnnotation globalAnnotation = genFeature.getEcoreFeature().getEAnnotation(annotationSource);
+ if (globalAnnotation != null) {
+ for (Iterator k = globalAnnotation.getDetails().iterator(); k.hasNext();) { Map.Entry detail = (Map.Entry)k.next(); String key = Literals.toStringLiteral((String)detail.getKey(), genModel); String value = Literals.toStringLiteral((String)detail.getValue(), genModel);
+ stringBuffer.append(TEXT_208);
+ stringBuffer.append(annotationSource);
+ stringBuffer.append(TEXT_209);
+ stringBuffer.append(key);
+ stringBuffer.append(TEXT_210);
+ stringBuffer.append(value);
+ stringBuffer.append(genModel.getNonNLS(key + value));
+ stringBuffer.append(TEXT_211);
+ }
+ stringBuffer.append(TEXT_212);
+ }
+ }
+ stringBuffer.append(TEXT_213);
+ }
+ }
+ } else {
+ stringBuffer.append(TEXT_214);
+ stringBuffer.append(genModel.getImportedName("commonj.sdo.Property"));
+ stringBuffer.append(TEXT_215);
+ stringBuffer.append(genClassifier.getSafeUncapName());
+ stringBuffer.append(TEXT_216);
+ stringBuffer.append(genClass.getClassName());
+ stringBuffer.append(TEXT_217);
+ stringBuffer.append(genFeature.getUpperName());
+ stringBuffer.append(TEXT_218);
+ for (Iterator k = featureAnnotation.getDetails().iterator(); k.hasNext();) { Map.Entry detail = (Map.Entry)k.next(); String key = Literals.toStringLiteral((String)detail.getKey(), genModel); String value = Literals.toStringLiteral((String)detail.getValue(), genModel);
+ stringBuffer.append(TEXT_219);
+ stringBuffer.append(key);
+ stringBuffer.append(TEXT_220);
+ stringBuffer.append(value);
+ stringBuffer.append(k.hasNext() ? "," : "");
+ stringBuffer.append(genModel.getNonNLS(key + value));
+ }
+ stringBuffer.append(TEXT_221);
+ }
+ }
+ }
+ }
+ stringBuffer.append(TEXT_222);
+ for (Iterator i=genPackage.getAllGenDataTypes().iterator(); i.hasNext();) { GenDataType genDataType = (GenDataType)i.next();
+ if (genDataType.isSerializable()) {
+ if (genPackage.isDataTypeConverters()) { String eDataType = genDataType.getQualifiedClassifierAccessor();
+ stringBuffer.append(TEXT_223);
+ stringBuffer.append(genDataType.getImportedInstanceClassName());
+ stringBuffer.append(TEXT_224);
+ stringBuffer.append(genDataType.getName());
+ stringBuffer.append(TEXT_225);
+ if (genDataType instanceof GenEnum) {
+ stringBuffer.append(TEXT_226);
+ stringBuffer.append(genDataType.getImportedInstanceClassName());
+ stringBuffer.append(TEXT_227);
+ stringBuffer.append(genDataType.getImportedInstanceClassName());
+ stringBuffer.append(TEXT_228);
+ stringBuffer.append(eDataType);
+ stringBuffer.append(TEXT_229);
+ stringBuffer.append(genModel.getNonNLS());
+ stringBuffer.append(genModel.getNonNLS(2));
+ stringBuffer.append(genModel.getNonNLS(3));
+ stringBuffer.append(TEXT_230);
+ } else if (genDataType.getBaseType() != null) { GenDataType genBaseType = genDataType.getBaseType(); boolean isPrimitiveConversion = !genDataType.isPrimitiveType() && genBaseType.isPrimitiveType();
+ if (genBaseType.getGenPackage() == genPackage) {
+ if (isPrimitiveConversion) {
+ stringBuffer.append(TEXT_231);
+ stringBuffer.append(genDataType.getObjectInstanceClassName());
+ stringBuffer.append(TEXT_232);
+ stringBuffer.append(genBaseType.getName());
+ stringBuffer.append(TEXT_233);
+ } else {
+ stringBuffer.append(TEXT_234);
+ stringBuffer.append(genBaseType.getName());
+ stringBuffer.append(TEXT_235);
+ }
+ } else if (genBaseType.getGenPackage().isDataTypeConverters()) {
+ if (isPrimitiveConversion) {
+ stringBuffer.append(TEXT_236);
+ stringBuffer.append(genDataType.getObjectInstanceClassName());
+ stringBuffer.append(TEXT_237);
+ stringBuffer.append(genBaseType.getGenPackage().getQualifiedEFactoryInternalInstanceAccessor());
+ stringBuffer.append(TEXT_238);
+ stringBuffer.append(genBaseType.getName());
+ stringBuffer.append(TEXT_239);
+ } else {
+ stringBuffer.append(TEXT_240);
+ stringBuffer.append(genBaseType.getGenPackage().getQualifiedEFactoryInternalInstanceAccessor());
+ stringBuffer.append(TEXT_241);
+ stringBuffer.append(genBaseType.getName());
+ stringBuffer.append(TEXT_242);
+ }
+ } else {
+ stringBuffer.append(TEXT_243);
+ stringBuffer.append(genDataType.getObjectInstanceClassName());
+ stringBuffer.append(TEXT_244);
+ stringBuffer.append(genBaseType.getGenPackage().getQualifiedEFactoryInternalInstanceAccessor());
+ stringBuffer.append(TEXT_245);
+ stringBuffer.append(genBaseType.getQualifiedClassifierAccessor());
+ stringBuffer.append(TEXT_246);
+ }
+ } else if (genDataType.getItemType() != null) { GenDataType genItemType = genDataType.getItemType();
+ stringBuffer.append(TEXT_247);
+ stringBuffer.append(genModel.getImportedName("java.util.List"));
+ stringBuffer.append(TEXT_248);
+ stringBuffer.append(genModel.getImportedName("java.util.ArrayList"));
+ stringBuffer.append(TEXT_249);
+ stringBuffer.append(genModel.getImportedName("java.util.StringTokenizer"));
+ stringBuffer.append(TEXT_250);
+ stringBuffer.append(genModel.getImportedName("java.util.StringTokenizer"));
+ stringBuffer.append(TEXT_251);
+ if (genItemType.getGenPackage() == genPackage) {
+ if (genPackage.isDataTypeConverters()) { genItemType = genItemType.getObjectType();
+ stringBuffer.append(TEXT_252);
+ stringBuffer.append(genItemType.getName());
+ stringBuffer.append(TEXT_253);
+ } else {
+ stringBuffer.append(TEXT_254);
+ stringBuffer.append(genItemType.getName());
+ stringBuffer.append(TEXT_255);
+ stringBuffer.append(genItemType.getQualifiedClassifierAccessor());
+ stringBuffer.append(TEXT_256);
+ }
+ } else {
+ if (genItemType.getGenPackage().isDataTypeConverters()) { genItemType = genItemType.getObjectType();
+ stringBuffer.append(TEXT_257);
+ stringBuffer.append(genItemType.getGenPackage().getQualifiedEFactoryInternalInstanceAccessor());
+ stringBuffer.append(TEXT_258);
+ stringBuffer.append(genItemType.getName());
+ stringBuffer.append(TEXT_259);
+ } else {
+ stringBuffer.append(TEXT_260);
+ stringBuffer.append(genItemType.getGenPackage().getQualifiedEFactoryInternalInstanceAccessor());
+ stringBuffer.append(TEXT_261);
+ stringBuffer.append(genItemType.getQualifiedClassifierAccessor());
+ stringBuffer.append(TEXT_262);
+ }
+ }
+ stringBuffer.append(TEXT_263);
+ } else if (!genDataType.getMemberTypes().isEmpty()) {
+ stringBuffer.append(TEXT_264);
+ stringBuffer.append(genDataType.getStaticValue(null));
+ stringBuffer.append(TEXT_265);
+ stringBuffer.append(genDataType.getImportedInstanceClassName());
+ stringBuffer.append(TEXT_266);
+ stringBuffer.append(genDataType.getStaticValue(null));
+ stringBuffer.append(TEXT_267);
+ for (Iterator j = genDataType.getMemberTypes().iterator(); j.hasNext(); ) { GenDataType genMemberType = (GenDataType)j.next();
+ stringBuffer.append(TEXT_268);
+ if (genMemberType.getGenPackage() == genPackage) {
+ if (genPackage.isDataTypeConverters()) { if (!genDataType.isPrimitiveType()) genMemberType = genMemberType.getObjectType();
+ stringBuffer.append(TEXT_269);
+ stringBuffer.append(genMemberType.getName());
+ stringBuffer.append(TEXT_270);
+ } else {
+ stringBuffer.append(TEXT_271);
+ stringBuffer.append(genDataType.getObjectInstanceClassName());
+ stringBuffer.append(TEXT_272);
+ stringBuffer.append(genMemberType.getName());
+ stringBuffer.append(TEXT_273);
+ stringBuffer.append(genMemberType.getQualifiedClassifierAccessor());
+ stringBuffer.append(TEXT_274);
+ }
+ } else {
+ if (genPackage.isDataTypeConverters()) { if (!genDataType.isPrimitiveType()) genMemberType = genMemberType.getObjectType();
+ stringBuffer.append(TEXT_275);
+ stringBuffer.append(genMemberType.getGenPackage().getQualifiedEFactoryInternalInstanceAccessor());
+ stringBuffer.append(TEXT_276);
+ stringBuffer.append(genMemberType.getName());
+ stringBuffer.append(TEXT_277);
+ } else {
+ stringBuffer.append(TEXT_278);
+ stringBuffer.append(genDataType.getObjectInstanceClassName());
+ stringBuffer.append(TEXT_279);
+ stringBuffer.append(genMemberType.getGenPackage().getQualifiedEFactoryInternalInstanceAccessor());
+ stringBuffer.append(TEXT_280);
+ stringBuffer.append(genMemberType.getQualifiedClassifierAccessor());
+ stringBuffer.append(TEXT_281);
+ }
+ }
+ stringBuffer.append(TEXT_282);
+ if (!genDataType.isPrimitiveType()) {
+ stringBuffer.append(TEXT_283);
+ }
+ stringBuffer.append(genModel.getImportedName("org.eclipse.emf.ecore.util.Diagnostician"));
+ stringBuffer.append(TEXT_284);
+ stringBuffer.append(eDataType);
+ stringBuffer.append(TEXT_285);
+ if (genDataType.isPrimitiveType()) {
+ stringBuffer.append(TEXT_286);
+ stringBuffer.append(genDataType.getObjectInstanceClassName());
+ stringBuffer.append(TEXT_287);
+ } else {
+ stringBuffer.append(TEXT_288);
+ }
+ stringBuffer.append(TEXT_289);
+ }
+ stringBuffer.append(TEXT_290);
+ if (!genDataType.isPrimitiveType()) {
+ stringBuffer.append(TEXT_291);
+ }
+ stringBuffer.append(TEXT_292);
+ } else if (genDataType.isArrayType()) {
+ stringBuffer.append(TEXT_293);
+ stringBuffer.append(genModel.getImportedName("java.lang.UnsupportedOperationException"));
+ stringBuffer.append(TEXT_294);
+ } else if (genDataType.isPrimitiveType()) {
+ stringBuffer.append(TEXT_295);
+ stringBuffer.append(genDataType.getObjectInstanceClassName());
+ stringBuffer.append(TEXT_296);
+ stringBuffer.append(eDataType);
+ stringBuffer.append(TEXT_297);
+ stringBuffer.append(genDataType.getPrimitiveValueFunction());
+ stringBuffer.append(TEXT_298);
+ } else {
+ stringBuffer.append(TEXT_299);
+ stringBuffer.append(genDataType.getObjectInstanceClassName());
+ stringBuffer.append(TEXT_300);
+ stringBuffer.append(eDataType);
+ stringBuffer.append(TEXT_301);
+ }
+ stringBuffer.append(TEXT_302);
+ }
+ stringBuffer.append(TEXT_303);
+ stringBuffer.append(genDataType.getObjectInstanceClassName());
+ stringBuffer.append(TEXT_304);
+ stringBuffer.append(genDataType.getName());
+ stringBuffer.append(TEXT_305);
+ stringBuffer.append(genModel.getImportedName("commonj.sdo.Type"));
+ stringBuffer.append(TEXT_306);
+ if (genDataType instanceof GenEnum) {
+ if (genPackage.isDataTypeConverters()) {
+ stringBuffer.append(TEXT_307);
+ stringBuffer.append(genDataType.getName());
+ stringBuffer.append(TEXT_308);
+ } else {
+ stringBuffer.append(TEXT_309);
+ stringBuffer.append(((GenEnum)genDataType).getImportedInstanceClassName());
+ stringBuffer.append(TEXT_310);
+ stringBuffer.append(((GenEnum)genDataType).getImportedInstanceClassName());
+ stringBuffer.append(TEXT_311);
+ stringBuffer.append(genModel.getNonNLS());
+ stringBuffer.append(genModel.getNonNLS(2));
+ stringBuffer.append(genModel.getNonNLS(3));
+ stringBuffer.append(TEXT_312);
+ }
+ } else if (genDataType.getBaseType() != null) { GenDataType genBaseType = genDataType.getBaseType();
+ if (genBaseType.getGenPackage() == genPackage) {
+ stringBuffer.append(TEXT_313);
+ stringBuffer.append(genDataType.getObjectInstanceClassName());
+ stringBuffer.append(TEXT_314);
+ stringBuffer.append(genBaseType.getName());
+ stringBuffer.append(TEXT_315);
+ stringBuffer.append(SDOGenUtil.getQualifiedTypeAccessor(genDataType));
+ stringBuffer.append(TEXT_316);
+ } else {
+ stringBuffer.append(TEXT_317);
+ stringBuffer.append(genDataType.getObjectInstanceClassName());
+ stringBuffer.append(TEXT_318);
+ stringBuffer.append(genBaseType.getGenPackage().getQualifiedEFactoryInternalInstanceAccessor());
+ stringBuffer.append(TEXT_319);
+ stringBuffer.append(genBaseType.getQualifiedClassifierAccessor());
+ stringBuffer.append(TEXT_320);
+ }
+ } else if (genDataType.getItemType() != null) { GenDataType genItemType = genDataType.getItemType();
+ if (genPackage.isDataTypeConverters()) {
+ stringBuffer.append(TEXT_321);
+ stringBuffer.append(genDataType.getName());
+ stringBuffer.append(TEXT_322);
+ } else {
+ stringBuffer.append(TEXT_323);
+ stringBuffer.append(genModel.getImportedName("java.util.List"));
+ stringBuffer.append(TEXT_324);
+ stringBuffer.append(genModel.getImportedName("java.util.ArrayList"));
+ stringBuffer.append(TEXT_325);
+ stringBuffer.append(genModel.getImportedName("java.util.StringTokenizer"));
+ stringBuffer.append(TEXT_326);
+ stringBuffer.append(genModel.getImportedName("java.util.StringTokenizer"));
+ stringBuffer.append(TEXT_327);
+ if (genItemType.getGenPackage() == genPackage) {
+ stringBuffer.append(TEXT_328);
+ stringBuffer.append(genItemType.getName());
+ stringBuffer.append(TEXT_329);
+ stringBuffer.append(genItemType.getQualifiedClassifierAccessor());
+ stringBuffer.append(TEXT_330);
+ } else {
+ stringBuffer.append(TEXT_331);
+ stringBuffer.append(genItemType.getGenPackage().getQualifiedEFactoryInternalInstanceAccessor());
+ stringBuffer.append(TEXT_332);
+ stringBuffer.append(genItemType.getQualifiedClassifierAccessor());
+ stringBuffer.append(TEXT_333);
+ }
+ stringBuffer.append(TEXT_334);
+ }
+ } else if (!genDataType.getMemberTypes().isEmpty()) {
+ if (genPackage.isDataTypeConverters()) {
+ if (genDataType.isPrimitiveType()) {
+ stringBuffer.append(TEXT_335);
+ stringBuffer.append(genDataType.getObjectInstanceClassName());
+ stringBuffer.append(TEXT_336);
+ stringBuffer.append(genDataType.getName());
+ stringBuffer.append(TEXT_337);
+ } else {
+ stringBuffer.append(TEXT_338);
+ stringBuffer.append(genDataType.getName());
+ stringBuffer.append(TEXT_339);
+ }
+ } else {
+ stringBuffer.append(TEXT_340);
+ stringBuffer.append(genDataType.getObjectInstanceClassName());
+ stringBuffer.append(TEXT_341);
+ for (Iterator j = genDataType.getMemberTypes().iterator(); j.hasNext(); ) { GenDataType genMemberType = (GenDataType)j.next();
+ stringBuffer.append(TEXT_342);
+ if (genMemberType.getGenPackage() == genPackage) {
+ stringBuffer.append(TEXT_343);
+ stringBuffer.append(genDataType.getObjectInstanceClassName());
+ stringBuffer.append(TEXT_344);
+ stringBuffer.append(genMemberType.getName());
+ stringBuffer.append(TEXT_345);
+ stringBuffer.append(genMemberType.getQualifiedClassifierAccessor());
+ stringBuffer.append(TEXT_346);
+ } else {
+ stringBuffer.append(TEXT_347);
+ stringBuffer.append(genDataType.getObjectInstanceClassName());
+ stringBuffer.append(TEXT_348);
+ stringBuffer.append(genMemberType.getGenPackage().getQualifiedEFactoryInternalInstanceAccessor());
+ stringBuffer.append(TEXT_349);
+ stringBuffer.append(genMemberType.getQualifiedClassifierAccessor());
+ stringBuffer.append(TEXT_350);
+ }
+ stringBuffer.append(TEXT_351);
+ stringBuffer.append(genModel.getImportedName("org.eclipse.emf.ecore.util.Diagnostician"));
+ stringBuffer.append(TEXT_352);
+ }
+ stringBuffer.append(TEXT_353);
+ }
+ } else if (genDataType.isArrayType()) {
+ stringBuffer.append(TEXT_354);
+ stringBuffer.append(genModel.getImportedName("java.lang.UnsupportedOperationException"));
+ stringBuffer.append(TEXT_355);
+ } else {
+ stringBuffer.append(TEXT_356);
+ stringBuffer.append(genDataType.getObjectInstanceClassName());
+ stringBuffer.append(TEXT_357);
+ }
+ stringBuffer.append(TEXT_358);
+ if (genPackage.isDataTypeConverters()) { String eDataType = genDataType.getQualifiedClassifierAccessor();
+ stringBuffer.append(TEXT_359);
+ stringBuffer.append(genDataType.getName());
+ stringBuffer.append(TEXT_360);
+ stringBuffer.append(genDataType.getImportedInstanceClassName());
+ stringBuffer.append(TEXT_361);
+ if (genDataType instanceof GenEnum) {
+ stringBuffer.append(TEXT_362);
+ } else if (genDataType.getBaseType() != null) { GenDataType genBaseType = genDataType.getBaseType(); boolean isPrimitiveConversion = !genDataType.isPrimitiveType() && genBaseType.isPrimitiveType();
+ if (genBaseType.getGenPackage() == genPackage) {
+ if (isPrimitiveConversion) {
+ stringBuffer.append(TEXT_363);
+ stringBuffer.append(genBaseType.getName());
+ stringBuffer.append(TEXT_364);
+ stringBuffer.append(genBaseType.getPrimitiveValueFunction());
+ stringBuffer.append(TEXT_365);
+ } else {
+ stringBuffer.append(TEXT_366);
+ stringBuffer.append(genBaseType.getName());
+ stringBuffer.append(TEXT_367);
+ }
+ } else if (genBaseType.getGenPackage().isDataTypeConverters()) {
+ stringBuffer.append(TEXT_368);
+ stringBuffer.append(genBaseType.getGenPackage().getQualifiedFactoryInstanceAccessor());
+ stringBuffer.append(TEXT_369);
+ stringBuffer.append(genBaseType.getName());
+ stringBuffer.append(TEXT_370);
+ } else {
+ stringBuffer.append(TEXT_371);
+ stringBuffer.append(genBaseType.getGenPackage().getQualifiedEFactoryInternalInstanceAccessor());
+ stringBuffer.append(TEXT_372);
+ stringBuffer.append(genBaseType.getQualifiedClassifierAccessor());
+ stringBuffer.append(TEXT_373);
+ }
+ } else if (genDataType.getItemType() != null) { GenDataType genItemType = genDataType.getItemType();
+ stringBuffer.append(TEXT_374);
+ stringBuffer.append(genModel.getImportedName("java.lang.StringBuffer"));
+ stringBuffer.append(TEXT_375);
+ stringBuffer.append(genModel.getImportedName("java.lang.StringBuffer"));
+ stringBuffer.append(TEXT_376);
+ stringBuffer.append(genModel.getImportedName("java.util.Iterator"));
+ stringBuffer.append(TEXT_377);
+ if (genItemType.getGenPackage() == genPackage) {
+ if (genPackage.isDataTypeConverters()) { genItemType = genItemType.getObjectType();
+ stringBuffer.append(TEXT_378);
+ stringBuffer.append(genItemType.getName());
+ stringBuffer.append(TEXT_379);
+ stringBuffer.append(genItemType.getObjectInstanceClassName());
+ stringBuffer.append(TEXT_380);
+ } else {
+ stringBuffer.append(TEXT_381);
+ stringBuffer.append(genItemType.getName());
+ stringBuffer.append(TEXT_382);
+ stringBuffer.append(genItemType.getQualifiedClassifierAccessor());
+ stringBuffer.append(TEXT_383);
+ }
+ } else {
+ if (genItemType.getGenPackage().isDataTypeConverters()) { genItemType = genItemType.getObjectType();
+ stringBuffer.append(TEXT_384);
+ stringBuffer.append(genItemType.getGenPackage().getQualifiedEFactoryInternalInstanceAccessor());
+ stringBuffer.append(TEXT_385);
+ stringBuffer.append(genItemType.getName());
+ stringBuffer.append(TEXT_386);
+ stringBuffer.append(genItemType.getObjectInstanceClassName());
+ stringBuffer.append(TEXT_387);
+ } else {
+ stringBuffer.append(TEXT_388);
+ stringBuffer.append(genItemType.getGenPackage().getQualifiedEFactoryInternalInstanceAccessor());
+ stringBuffer.append(TEXT_389);
+ stringBuffer.append(genItemType.getQualifiedClassifierAccessor());
+ stringBuffer.append(TEXT_390);
+ }
+ }
+ stringBuffer.append(TEXT_391);
+ } else if (!genDataType.getMemberTypes().isEmpty()) {
+ if (!genDataType.isPrimitiveType()) {
+ stringBuffer.append(TEXT_392);
+ for (Iterator j = genDataType.getMemberTypes().iterator(); j.hasNext(); ) { GenDataType genMemberType = (GenDataType)j.next();
+ stringBuffer.append(TEXT_393);
+ stringBuffer.append(genMemberType.getQualifiedClassifierAccessor());
+ stringBuffer.append(TEXT_394);
+ if (genMemberType.getGenPackage() == genPackage) {
+ if (genPackage.isDataTypeConverters()) {
+ stringBuffer.append(TEXT_395);
+ stringBuffer.append(genMemberType.getName());
+ stringBuffer.append(TEXT_396);
+ } else {
+ stringBuffer.append(TEXT_397);
+ stringBuffer.append(genMemberType.getName());
+ stringBuffer.append(TEXT_398);
+ stringBuffer.append(genMemberType.getQualifiedClassifierAccessor());
+ stringBuffer.append(TEXT_399);
+ }
+ } else {
+ if (genMemberType.getGenPackage().isDataTypeConverters()) { genMemberType = genMemberType.getObjectType();
+ stringBuffer.append(TEXT_400);
+ stringBuffer.append(genMemberType.getGenPackage().getQualifiedEFactoryInternalInstanceAccessor());
+ stringBuffer.append(TEXT_401);
+ stringBuffer.append(genMemberType.getName());
+ stringBuffer.append(TEXT_402);
+ stringBuffer.append(genMemberType.getObjectInstanceClassName());
+ stringBuffer.append(TEXT_403);
+ } else {
+ stringBuffer.append(TEXT_404);
+ stringBuffer.append(genMemberType.getGenPackage().getQualifiedEFactoryInternalInstanceAccessor());
+ stringBuffer.append(TEXT_405);
+ stringBuffer.append(genMemberType.getQualifiedClassifierAccessor());
+ stringBuffer.append(TEXT_406);
+ }
+ }
+ stringBuffer.append(TEXT_407);
+ }
+ } else {
+ for (Iterator j = genDataType.getMemberTypes().iterator(); j.hasNext(); ) { GenDataType genMemberType = (GenDataType)j.next();
+ stringBuffer.append(TEXT_408);
+ if (genMemberType.getGenPackage() == genPackage) {
+ if (genPackage.isDataTypeConverters()) {
+ stringBuffer.append(TEXT_409);
+ stringBuffer.append(genMemberType.getName());
+ stringBuffer.append(TEXT_410);
+ } else {
+ stringBuffer.append(TEXT_411);
+ stringBuffer.append(genMemberType.getName());
+ stringBuffer.append(TEXT_412);
+ stringBuffer.append(genMemberType.getQualifiedClassifierAccessor());
+ stringBuffer.append(TEXT_413);
+ stringBuffer.append(genMemberType.getObjectInstanceClassName());
+ stringBuffer.append(TEXT_414);
+ }
+ } else {
+ if (genMemberType.getGenPackage().isDataTypeConverters()) {
+ stringBuffer.append(TEXT_415);
+ stringBuffer.append(genMemberType.getGenPackage().getQualifiedEFactoryInternalInstanceAccessor());
+ stringBuffer.append(TEXT_416);
+ stringBuffer.append(genMemberType.getName());
+ stringBuffer.append(TEXT_417);
+ } else {
+ stringBuffer.append(TEXT_418);
+ stringBuffer.append(genMemberType.getGenPackage().getQualifiedEFactoryInternalInstanceAccessor());
+ stringBuffer.append(TEXT_419);
+ stringBuffer.append(genMemberType.getQualifiedClassifierAccessor());
+ stringBuffer.append(TEXT_420);
+ stringBuffer.append(genMemberType.getObjectInstanceClassName());
+ stringBuffer.append(TEXT_421);
+ }
+ }
+ stringBuffer.append(TEXT_422);
+ }
+ }
+ stringBuffer.append(TEXT_423);
+ stringBuffer.append(eDataType);
+ stringBuffer.append(TEXT_424);
+ } else if (genDataType.isArrayType()) {
+ stringBuffer.append(TEXT_425);
+ stringBuffer.append(genModel.getImportedName("java.lang.UnsupportedOperationException"));
+ stringBuffer.append(TEXT_426);
+ } else if (genDataType.isPrimitiveType()) {
+ stringBuffer.append(TEXT_427);
+ stringBuffer.append(eDataType);
+ stringBuffer.append(TEXT_428);
+ stringBuffer.append(genDataType.getObjectInstanceClassName());
+ stringBuffer.append(TEXT_429);
+ } else {
+ stringBuffer.append(TEXT_430);
+ stringBuffer.append(eDataType);
+ stringBuffer.append(TEXT_431);
+ }
+ stringBuffer.append(TEXT_432);
+ }
+ stringBuffer.append(TEXT_433);
+ stringBuffer.append(genDataType.getName());
+ stringBuffer.append(TEXT_434);
+ stringBuffer.append(genModel.getImportedName("commonj.sdo.Type"));
+ stringBuffer.append(TEXT_435);
+ if (genDataType instanceof GenEnum) {
+ stringBuffer.append(TEXT_436);
+ } else if (genDataType.getBaseType() != null) { GenDataType genBaseType = genDataType.getBaseType();
+ if (genBaseType.getGenPackage() == genPackage) {
+ stringBuffer.append(TEXT_437);
+ stringBuffer.append(genBaseType.getName());
+ stringBuffer.append(TEXT_438);
+ stringBuffer.append(SDOGenUtil.getQualifiedTypeAccessor(genBaseType));
+ stringBuffer.append(TEXT_439);
+ } else {
+ stringBuffer.append(TEXT_440);
+ stringBuffer.append(genBaseType.getGenPackage().getQualifiedEFactoryInternalInstanceAccessor());
+ stringBuffer.append(TEXT_441);
+ stringBuffer.append(genBaseType.getQualifiedClassifierAccessor());
+ stringBuffer.append(TEXT_442);
+ }
+ } else if (genDataType.getItemType() != null) { GenDataType genItemType = genDataType.getItemType();
+ if (genPackage.isDataTypeConverters()) {
+ stringBuffer.append(TEXT_443);
+ stringBuffer.append(genDataType.getName());
+ stringBuffer.append(TEXT_444);
+ stringBuffer.append(genModel.getImportedName("java.util.List"));
+ stringBuffer.append(TEXT_445);
+ } else {
+ stringBuffer.append(TEXT_446);
+ stringBuffer.append(genModel.getImportedName("java.util.List"));
+ stringBuffer.append(TEXT_447);
+ stringBuffer.append(genModel.getImportedName("java.util.List"));
+ stringBuffer.append(TEXT_448);
+ stringBuffer.append(genModel.getImportedName("java.lang.StringBuffer"));
+ stringBuffer.append(TEXT_449);
+ stringBuffer.append(genModel.getImportedName("java.lang.StringBuffer"));
+ stringBuffer.append(TEXT_450);
+ stringBuffer.append(genModel.getImportedName("java.util.Iterator"));
+ stringBuffer.append(TEXT_451);
+ if (genItemType.getGenPackage() == genPackage) {
+ stringBuffer.append(TEXT_452);
+ stringBuffer.append(genItemType.getName());
+ stringBuffer.append(TEXT_453);
+ stringBuffer.append(genItemType.getQualifiedClassifierAccessor());
+ stringBuffer.append(TEXT_454);
+ } else {
+ stringBuffer.append(TEXT_455);
+ stringBuffer.append(genItemType.getGenPackage().getQualifiedEFactoryInternalInstanceAccessor());
+ stringBuffer.append(TEXT_456);
+ stringBuffer.append(genItemType.getQualifiedClassifierAccessor());
+ stringBuffer.append(TEXT_457);
+ }
+ stringBuffer.append(TEXT_458);
+ }
+ } else if (!genDataType.getMemberTypes().isEmpty()) {
+ if (genPackage.isDataTypeConverters()) {
+ if (genDataType.isPrimitiveType()) {
+ stringBuffer.append(TEXT_459);
+ stringBuffer.append(genDataType.getName());
+ stringBuffer.append(TEXT_460);
+ stringBuffer.append(genDataType.getObjectInstanceClassName());
+ stringBuffer.append(TEXT_461);
+ stringBuffer.append(genDataType.getPrimitiveValueFunction());
+ stringBuffer.append(TEXT_462);
+ } else {
+ stringBuffer.append(TEXT_463);
+ stringBuffer.append(genDataType.getName());
+ stringBuffer.append(TEXT_464);
+ }
+ } else {
+ stringBuffer.append(TEXT_465);
+ for (Iterator j = genDataType.getMemberTypes().iterator(); j.hasNext(); ) { GenDataType genMemberType = (GenDataType)j.next();
+ stringBuffer.append(TEXT_466);
+ stringBuffer.append(genMemberType.getQualifiedClassifierAccessor());
+ stringBuffer.append(TEXT_467);
+ if (genMemberType.getGenPackage() == genPackage) {
+ stringBuffer.append(TEXT_468);
+ stringBuffer.append(genMemberType.getName());
+ stringBuffer.append(TEXT_469);
+ stringBuffer.append(genMemberType.getQualifiedClassifierAccessor());
+ stringBuffer.append(TEXT_470);
+ } else {
+ stringBuffer.append(TEXT_471);
+ stringBuffer.append(genMemberType.getGenPackage().getQualifiedEFactoryInternalInstanceAccessor());
+ stringBuffer.append(TEXT_472);
+ stringBuffer.append(genMemberType.getQualifiedClassifierAccessor());
+ stringBuffer.append(TEXT_473);
+ }
+ stringBuffer.append(TEXT_474);
+ }
+ stringBuffer.append(TEXT_475);
+ }
+ } else if (genDataType.isArrayType()) {
+ stringBuffer.append(TEXT_476);
+ stringBuffer.append(genModel.getImportedName("java.lang.UnsupportedOperationException"));
+ stringBuffer.append(TEXT_477);
+ } else {
+ stringBuffer.append(TEXT_478);
+ }
+ stringBuffer.append(TEXT_479);
+ }
+ }
+ } else {
+ for (Iterator i=genPackage.getGenClasses().iterator(); i.hasNext();) { GenClass genClass = (GenClass)i.next();
+ if (genClass.hasFactoryInterfaceCreateMethod()) {
+ stringBuffer.append(TEXT_480);
+ stringBuffer.append(genClass.getFormattedName());
+ stringBuffer.append(TEXT_481);
+ stringBuffer.append(genClass.getFormattedName());
+ stringBuffer.append(TEXT_482);
+ stringBuffer.append(genClass.getImportedInterfaceName());
+ stringBuffer.append(TEXT_483);
+ stringBuffer.append(genClass.getName());
+ stringBuffer.append(TEXT_484);
+ }
+ }
+ if (genPackage.isDataTypeConverters()) {
+ for (Iterator i=genPackage.getAllGenDataTypes().iterator(); i.hasNext();) { GenDataType genDataType = (GenDataType)i.next();
+ if (genDataType.isSerializable()) {
+ stringBuffer.append(TEXT_485);
+ stringBuffer.append(genDataType.getFormattedName());
+ stringBuffer.append(TEXT_486);
+ stringBuffer.append(genDataType.getImportedInstanceClassName());
+ stringBuffer.append(TEXT_487);
+ stringBuffer.append(genDataType.getName());
+ stringBuffer.append(TEXT_488);
+ stringBuffer.append(genDataType.getFormattedName());
+ stringBuffer.append(TEXT_489);
+ stringBuffer.append(genDataType.getName());
+ stringBuffer.append(TEXT_490);
+ stringBuffer.append(genDataType.getImportedInstanceClassName());
+ stringBuffer.append(TEXT_491);
+ }
+ }
+ }
+ }
+ stringBuffer.append(TEXT_492);
+ stringBuffer.append(isInterface ? genPackage.getFactoryInterfaceName() : genPackage.getFactoryClassName());
+ genModel.emitSortedImports();
+ stringBuffer.append(TEXT_493);
+ return stringBuffer.toString();
+ }
+}
diff --git a/branches/sdo-java-M2/sdo/tools/src/main/java/org/apache/tuscany/sdo/generate/util/SDOGenUtil.java b/branches/sdo-java-M2/sdo/tools/src/main/java/org/apache/tuscany/sdo/generate/util/SDOGenUtil.java
new file mode 100644
index 0000000000..83b57cc8da
--- /dev/null
+++ b/branches/sdo-java-M2/sdo/tools/src/main/java/org/apache/tuscany/sdo/generate/util/SDOGenUtil.java
@@ -0,0 +1,33 @@
+/**
+ *
+ * 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.generate.util;
+
+import org.eclipse.emf.codegen.ecore.genmodel.GenClassifier;
+import org.eclipse.emf.codegen.ecore.genmodel.GenPackage;
+
+public class SDOGenUtil {
+
+ public static String getQualifiedTypeAccessor(GenClassifier genClassifier){
+ GenPackage genPackage = genClassifier.getGenPackage();
+ return "((" + genPackage.getImportedFactoryClassName() + ")"
+ + genPackage.getImportedFactoryInterfaceName() + ".INSTANCE).get" + genClassifier.getClassifierAccessorName() + "()";
+ }
+
+}
diff --git a/branches/sdo-java-M2/sdo/tools/src/main/java/org/eclipse/jdt/core/formatter/CodeFormatter.java b/branches/sdo-java-M2/sdo/tools/src/main/java/org/eclipse/jdt/core/formatter/CodeFormatter.java
new file mode 100644
index 0000000000..1c1f37682f
--- /dev/null
+++ b/branches/sdo-java-M2/sdo/tools/src/main/java/org/eclipse/jdt/core/formatter/CodeFormatter.java
@@ -0,0 +1,27 @@
+/**
+ *
+ * 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.
+ */
+/*******************************************************************************
+ * TEMPORARY dummy file to work around EMF generator dependency problem.
+ * This file will be deleted as soon as the EMF generator is fixed.
+ *******************************************************************************/
+package org.eclipse.jdt.core.formatter;
+
+public abstract class CodeFormatter {
+}
diff --git a/branches/sdo-java-M2/sdo/tools/src/main/resources/META-INF/LICENSE.txt b/branches/sdo-java-M2/sdo/tools/src/main/resources/META-INF/LICENSE.txt
new file mode 100644
index 0000000000..25d78feeac
--- /dev/null
+++ b/branches/sdo-java-M2/sdo/tools/src/main/resources/META-INF/LICENSE.txt
@@ -0,0 +1,1277 @@
+
+ Apache License
+ Version 2.0, January 2004
+ http://www.apache.org/licenses/
+
+ TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION
+
+ 1. Definitions.
+
+ "License" shall mean the terms and conditions for use, reproduction,
+ and distribution as defined by Sections 1 through 9 of this document.
+
+ "Licensor" shall mean the copyright owner or entity authorized by
+ the copyright owner that is granting the License.
+
+ "Legal Entity" shall mean the union of the acting entity and all
+ other entities that control, are controlled by, or are under common
+ control with that entity. For the purposes of this definition,
+ "control" means (i) the power, direct or indirect, to cause the
+ direction or management of such entity, whether by contract or
+ otherwise, or (ii) ownership of fifty percent (50%) or more of the
+ outstanding shares, or (iii) beneficial ownership of such entity.
+
+ "You" (or "Your") shall mean an individual or Legal Entity
+ exercising permissions granted by this License.
+
+ "Source" form shall mean the preferred form for making modifications,
+ including but not limited to software source code, documentation
+ source, and configuration files.
+
+ "Object" form shall mean any form resulting from mechanical
+ transformation or translation of a Source form, including but
+ not limited to compiled object code, generated documentation,
+ and conversions to other media types.
+
+ "Work" shall mean the work of authorship, whether in Source or
+ Object form, made available under the License, as indicated by a
+ copyright notice that is included in or attached to the work
+ (an example is provided in the Appendix below).
+
+ "Derivative Works" shall mean any work, whether in Source or Object
+ form, that is based on (or derived from) the Work and for which the
+ editorial revisions, annotations, elaborations, or other modifications
+ represent, as a whole, an original work of authorship. For the purposes
+ of this License, Derivative Works shall not include works that remain
+ separable from, or merely link (or bind by name) to the interfaces of,
+ the Work and Derivative Works thereof.
+
+ "Contribution" shall mean any work of authorship, including
+ the original version of the Work and any modifications or additions
+ to that Work or Derivative Works thereof, that is intentionally
+ submitted to Licensor for inclusion in the Work by the copyright owner
+ or by an individual or Legal Entity authorized to submit on behalf of
+ the copyright owner. For the purposes of this definition, "submitted"
+ means any form of electronic, verbal, or written communication sent
+ to the Licensor or its representatives, including but not limited to
+ communication on electronic mailing lists, source code control systems,
+ and issue tracking systems that are managed by, or on behalf of, the
+ Licensor for the purpose of discussing and improving the Work, but
+ excluding communication that is conspicuously marked or otherwise
+ designated in writing by the copyright owner as "Not a Contribution."
+
+ "Contributor" shall mean Licensor and any individual or Legal Entity
+ on behalf of whom a Contribution has been received by Licensor and
+ subsequently incorporated within the Work.
+
+ 2. Grant of Copyright License. Subject to the terms and conditions of
+ this License, each Contributor hereby grants to You a perpetual,
+ worldwide, non-exclusive, no-charge, royalty-free, irrevocable
+ copyright license to reproduce, prepare Derivative Works of,
+ publicly display, publicly perform, sublicense, and distribute the
+ Work and such Derivative Works in Source or Object form.
+
+ 3. Grant of Patent License. Subject to the terms and conditions of
+ this License, each Contributor hereby grants to You a perpetual,
+ worldwide, non-exclusive, no-charge, royalty-free, irrevocable
+ (except as stated in this section) patent license to make, have made,
+ use, offer to sell, sell, import, and otherwise transfer the Work,
+ where such license applies only to those patent claims licensable
+ by such Contributor that are necessarily infringed by their
+ Contribution(s) alone or by combination of their Contribution(s)
+ with the Work to which such Contribution(s) was submitted. If You
+ institute patent litigation against any entity (including a
+ cross-claim or counterclaim in a lawsuit) alleging that the Work
+ or a Contribution incorporated within the Work constitutes direct
+ or contributory patent infringement, then any patent licenses
+ granted to You under this License for that Work shall terminate
+ as of the date such litigation is filed.
+
+ 4. Redistribution. You may reproduce and distribute copies of the
+ Work or Derivative Works thereof in any medium, with or without
+ modifications, and in Source or Object form, provided that You
+ meet the following conditions:
+
+ (a) You must give any other recipients of the Work or
+ Derivative Works a copy of this License; and
+
+ (b) You must cause any modified files to carry prominent notices
+ stating that You changed the files; and
+
+ (c) You must retain, in the Source form of any Derivative Works
+ that You distribute, all copyright, patent, trademark, and
+ attribution notices from the Source form of the Work,
+ excluding those notices that do not pertain to any part of
+ the Derivative Works; and
+
+ (d) If the Work includes a "NOTICE" text file as part of its
+ distribution, then any Derivative Works that You distribute must
+ include a readable copy of the attribution notices contained
+ within such NOTICE file, excluding those notices that do not
+ pertain to any part of the Derivative Works, in at least one
+ of the following places: within a NOTICE text file distributed
+ as part of the Derivative Works; within the Source form or
+ documentation, if provided along with the Derivative Works; or,
+ within a display generated by the Derivative Works, if and
+ wherever such third-party notices normally appear. The contents
+ of the NOTICE file are for informational purposes only and
+ do not modify the License. You may add Your own attribution
+ notices within Derivative Works that You distribute, alongside
+ or as an addendum to the NOTICE text from the Work, provided
+ that such additional attribution notices cannot be construed
+ as modifying the License.
+
+ You may add Your own copyright statement to Your modifications and
+ may provide additional or different license terms and conditions
+ for use, reproduction, or distribution of Your modifications, or
+ for any such Derivative Works as a whole, provided Your use,
+ reproduction, and distribution of the Work otherwise complies with
+ the conditions stated in this License.
+
+ 5. Submission of Contributions. Unless You explicitly state otherwise,
+ any Contribution intentionally submitted for inclusion in the Work
+ by You to the Licensor shall be under the terms and conditions of
+ this License, without any additional terms or conditions.
+ Notwithstanding the above, nothing herein shall supersede or modify
+ the terms of any separate license agreement you may have executed
+ with Licensor regarding such Contributions.
+
+ 6. Trademarks. This License does not grant permission to use the trade
+ names, trademarks, service marks, or product names of the Licensor,
+ except as required for reasonable and customary use in describing the
+ origin of the Work and reproducing the content of the NOTICE file.
+
+ 7. Disclaimer of Warranty. Unless required by applicable law or
+ agreed to in writing, Licensor provides the Work (and each
+ Contributor provides its Contributions) on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
+ implied, including, without limitation, any warranties or conditions
+ of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A
+ PARTICULAR PURPOSE. You are solely responsible for determining the
+ appropriateness of using or redistributing the Work and assume any
+ risks associated with Your exercise of permissions under this License.
+
+ 8. Limitation of Liability. In no event and under no legal theory,
+ whether in tort (including negligence), contract, or otherwise,
+ unless required by applicable law (such as deliberate and grossly
+ negligent acts) or agreed to in writing, shall any Contributor be
+ liable to You for damages, including any direct, indirect, special,
+ incidental, or consequential damages of any character arising as a
+ result of this License or out of the use or inability to use the
+ Work (including but not limited to damages for loss of goodwill,
+ work stoppage, computer failure or malfunction, or any and all
+ other commercial damages or losses), even if such Contributor
+ has been advised of the possibility of such damages.
+
+ 9. Accepting Warranty or Additional Liability. While redistributing
+ the Work or Derivative Works thereof, You may choose to offer,
+ and charge a fee for, acceptance of support, warranty, indemnity,
+ or other liability obligations and/or rights consistent with this
+ License. However, in accepting such obligations, You may act only
+ on Your own behalf and on Your sole responsibility, not on behalf
+ of any other Contributor, and only if You agree to indemnify,
+ defend, and hold each Contributor harmless for any liability
+ incurred by, or claims asserted against, such Contributor by reason
+ of your accepting any such warranty or additional liability.
+
+ END OF TERMS AND CONDITIONS
+
+ APPENDIX: How to apply the Apache License to your work.
+
+ To apply the Apache License to your work, attach the following
+ boilerplate notice, with the fields enclosed by brackets "[]"
+ replaced with your own identifying information. (Don't include
+ the brackets!) The text should be enclosed in the appropriate
+ comment syntax for the file format. We also recommend that a
+ file or class name and description of purpose be included on the
+ same "printed page" as the copyright notice for easier
+ identification within third-party archives.
+
+ Copyright [yyyy] [name of copyright owner]
+
+ Licensed 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.
+
+
+APACHE TUSCANY SUBCOMPONENTS:
+
+The Apache Tuscany distribution includes a number of subcomponents with
+separate copyright notices and license terms. Your use of the source
+code for the these subcomponents is subject to the terms and
+conditions of the following licenses.
+
+===============================================================================
+
+For the Eclipse Modeling Framework component and the Celtix binding:
+
+Eclipse Public License - v 1.0
+
+THE ACCOMPANYING PROGRAM IS PROVIDED UNDER THE TERMS OF THIS ECLIPSE
+PUBLIC LICENSE ("AGREEMENT"). ANY USE, REPRODUCTION OR DISTRIBUTION OF
+THE PROGRAM CONSTITUTES RECIPIENT'S ACCEPTANCE OF THIS AGREEMENT.
+
+1. DEFINITIONS
+
+"Contribution" means:
+
+a) in the case of the initial Contributor, the initial code and
+documentation distributed under this Agreement, and
+b) in the case of each subsequent Contributor:
+
+i) changes to the Program, and
+
+ii) additions to the Program;
+
+where such changes and/or additions to the Program originate from and
+are distributed by that particular Contributor. A Contribution
+'originates' from a Contributor if it was added to the Program by such
+Contributor itself or anyone acting on such Contributor's behalf.
+Contributions do not include additions to the Program which: (i) are
+separate modules of software distributed in conjunction with the
+Program under their own license agreement, and (ii) are not derivative
+works of the Program.
+
+"Contributor" means any person or entity that distributes the Program.
+
+"Licensed Patents " mean patent claims licensable by a Contributor
+which are necessarily infringed by the use or sale of its Contribution
+alone or when combined with the Program.
+
+"Program" means the Contributions distributed in accordance with this
+Agreement.
+
+"Recipient" means anyone who receives the Program under this
+Agreement, including all Contributors.
+
+2. GRANT OF RIGHTS
+
+a) Subject to the terms of this Agreement, each Contributor hereby
+grants Recipient a non-exclusive, worldwide, royalty-free copyright
+license to reproduce, prepare derivative works of, publicly display,
+publicly perform, distribute and sublicense the Contribution of such
+Contributor, if any, and such derivative works, in source code and
+object code form.
+
+b) Subject to the terms of this Agreement, each Contributor hereby
+grants Recipient a non-exclusive, worldwide, royalty-free patent
+license under Licensed Patents to make, use, sell, offer to sell,
+import and otherwise transfer the Contribution of such Contributor, if
+any, in source code and object code form. This patent license shall
+apply to the combination of the Contribution and the Program if, at
+the time the Contribution is added by the Contributor, such addition
+of the Contribution causes such combination to be covered by the
+Licensed Patents. The patent license shall not apply to any other
+combinations which include the Contribution. No hardware per se is
+licensed hereunder.
+
+c) Recipient understands that although each Contributor grants the
+licenses to its Contributions set forth herein, no assurances are
+provided by any Contributor that the Program does not infringe the
+patent or other intellectual property rights of any other entity. Each
+Contributor disclaims any liability to Recipient for claims brought by
+any other entity based on infringement of intellectual property rights
+or otherwise. As a condition to exercising the rights and licenses
+granted hereunder, each Recipient hereby assumes sole responsibility
+to secure any other intellectual property rights needed, if any. For
+example, if a third party patent license is required to allow
+Recipient to distribute the Program, it is Recipient's responsibility
+to acquire that license before distributing the Program.
+
+d) Each Contributor represents that to its knowledge it has sufficient
+copyright rights in its Contribution, if any, to grant the copyright
+license set forth in this Agreement.
+
+3. REQUIREMENTS
+
+A Contributor may choose to distribute the Program in object code form
+under its own license agreement, provided that:
+
+a) it complies with the terms and conditions of this Agreement; and
+
+b) its license agreement:
+
+i) effectively disclaims on behalf of all Contributors all warranties
+and conditions, express and implied, including warranties or
+conditions of title and non-infringement, and implied warranties or
+conditions of merchantability and fitness for a particular purpose;
+
+ii) effectively excludes on behalf of all Contributors all liability
+for damages, including direct, indirect, special, incidental and
+consequential damages, such as lost profits;
+
+iii) states that any provisions which differ from this Agreement are
+offered by that Contributor alone and not by any other party; and
+
+iv) states that source code for the Program is available from such
+Contributor, and informs licensees how to obtain it in a reasonable
+manner on or through a medium customarily used for software exchange.
+
+When the Program is made available in source code form:
+
+a) it must be made available under this Agreement; and
+
+b) a copy of this Agreement must be included with each copy of the
+Program.
+
+Contributors may not remove or alter any copyright notices contained
+within the Program.
+
+Each Contributor must identify itself as the originator of its
+Contribution, if any, in a manner that reasonably allows subsequent
+Recipients to identify the originator of the Contribution.
+
+4. COMMERCIAL DISTRIBUTION
+
+Commercial distributors of software may accept certain
+responsibilities with respect to end users, business partners and the
+like. While this license is intended to facilitate the commercial use
+of the Program, the Contributor who includes the Program in a
+commercial product offering should do so in a manner which does not
+create potential liability for other Contributors. Therefore, if a
+Contributor includes the Program in a commercial product offering,
+such Contributor ("Commercial Contributor") hereby agrees to defend
+and indemnify every other Contributor ("Indemnified Contributor")
+against any losses, damages and costs (collectively "Losses") arising
+from claims, lawsuits and other legal actions brought by a third party
+against the Indemnified Contributor to the extent caused by the acts
+or omissions of such Commercial Contributor in connection with its
+distribution of the Program in a commercial product offering. The
+obligations in this section do not apply to any claims or Losses
+relating to any actual or alleged intellectual property infringement.
+In order to qualify, an Indemnified Contributor must: a) promptly
+notify the Commercial Contributor in writing of such claim, and b)
+allow the Commercial Contributor to control, and cooperate with the
+Commercial Contributor in, the defense and any related settlement
+negotiations. The Indemnified Contributor may participate in any such
+claim at its own expense.
+
+For example, a Contributor might include the Program in a commercial
+product offering, Product X. That Contributor is then a Commercial
+Contributor. If that Commercial Contributor then makes performance
+claims, or offers warranties related to Product X, those performance
+claims and warranties are such Commercial Contributor's responsibility
+alone. Under this section, the Commercial Contributor would have to
+defend claims against the other Contributors related to those
+performance claims and warranties, and if a court requires any other
+Contributor to pay any damages as a result, the Commercial Contributor
+must pay those damages.
+
+5. NO WARRANTY
+
+EXCEPT AS EXPRESSLY SET FORTH IN THIS AGREEMENT, THE PROGRAM IS
+PROVIDED ON AN "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+KIND, EITHER EXPRESS OR IMPLIED INCLUDING, WITHOUT LIMITATION, ANY
+WARRANTIES OR CONDITIONS OF TITLE, NON-INFRINGEMENT, MERCHANTABILITY
+OR FITNESS FOR A PARTICULAR PURPOSE. Each Recipient is solely
+responsible for determining the appropriateness of using and
+distributing the Program and assumes all risks associated with its
+exercise of rights under this Agreement , including but not limited to
+the risks and costs of program errors, compliance with applicable
+laws, damage to or loss of data, programs or equipment, and
+unavailability or interruption of operations.
+
+6. DISCLAIMER OF LIABILITY
+
+EXCEPT AS EXPRESSLY SET FORTH IN THIS AGREEMENT, NEITHER RECIPIENT NOR
+ANY CONTRIBUTORS SHALL HAVE ANY LIABILITY FOR ANY DIRECT, INDIRECT,
+INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING
+WITHOUT LIMITATION LOST PROFITS), HOWEVER CAUSED AND ON ANY THEORY OF
+LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
+NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OR
+DISTRIBUTION OF THE PROGRAM OR THE EXERCISE OF ANY RIGHTS GRANTED
+HEREUNDER, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGES.
+
+7. GENERAL
+
+If any provision of this Agreement is invalid or unenforceable under
+applicable law, it shall not affect the validity or enforceability of
+the remainder of the terms of this Agreement, and without further
+action by the parties hereto, such provision shall be reformed to the
+minimum extent necessary to make such provision valid and enforceable.
+
+If Recipient institutes patent litigation against any entity
+(including a cross-claim or counterclaim in a lawsuit) alleging that
+the Program itself (excluding combinations of the Program with other
+software or hardware) infringes such Recipient's patent(s), then such
+Recipient's rights granted under Section 2(b) shall terminate as of
+the date such litigation is filed.
+
+All Recipient's rights under this Agreement shall terminate if it
+fails to comply with any of the material terms or conditions of this
+Agreement and does not cure such failure in a reasonable period of
+time after becoming aware of such noncompliance. If all Recipient's
+rights under this Agreement terminate, Recipient agrees to cease use
+and distribution of the Program as soon as reasonably practicable.
+However, Recipient's obligations under this Agreement and any licenses
+granted by Recipient relating to the Program shall continue and
+survive.
+
+Everyone is permitted to copy and distribute copies of this Agreement,
+but in order to avoid inconsistency the Agreement is copyrighted and
+may only be modified in the following manner. The Agreement Steward
+reserves the right to publish new versions (including revisions) of
+this Agreement from time to time. No one other than the Agreement
+Steward has the right to modify this Agreement. The Eclipse Foundation
+is the initial Agreement Steward. The Eclipse Foundation may assign
+the responsibility to serve as the Agreement Steward to a suitable
+separate entity. Each new version of the Agreement will be given a
+distinguishing version number. The Program (including Contributions)
+may always be distributed subject to the version of the Agreement
+under which it was received. In addition, after a new version of the
+Agreement is published, Contributor may elect to distribute the
+Program (including its Contributions) under the new version. Except as
+expressly stated in Sections 2(a) and 2(b) above, Recipient receives
+no rights or licenses to the intellectual property of any Contributor
+under this Agreement, whether expressly, by implication, estoppel or
+otherwise. All rights in the Program not expressly granted under this
+Agreement are reserved.
+
+This Agreement is governed by the laws of the State of New York and
+the intellectual property laws of the United States of America. No
+party to this Agreement will bring a legal action under this Agreement
+more than one year after the cause of action arose. Each party waives
+its rights to a jury trial in any resulting litigation.
+
+===============================================================================
+
+For the Rhino JavaScript container component:
+
+Mozilla Public License 1.1 (MPL 1.1)
+
+1. Definitions.
+
+ 1.0.1. "Commercial Use" means distribution or otherwise making the
+Covered Code available to a third party.
+
+ 1.1. "Contributor" means each entity that creates or contributes to
+the creation of Modifications.
+
+ 1.2. "Contributor Version" means the combination of the Original Code,
+prior Modifications used by a Contributor, and the Modifications made by that
+particular Contributor.
+
+ 1.3. "Covered Code" means the Original Code or Modifications or the
+combination of the Original Code and Modifications, in each case including
+portions thereof.
+
+ 1.4. "Electronic Distribution Mechanism" means a mechanism generally
+accepted in the software development community for the electronic transfer of
+data.
+
+ 1.5. "Executable" means Covered Code in any form other than Source
+Code.
+
+ 1.6. "Initial Developer" means the individual or entity identified as
+the Initial Developer in the Source Code notice required by Exhibit A.
+
+ 1.7. "Larger Work" means a work which combines Covered Code or
+portions thereof with code not governed by the terms of this License.
+
+ 1.8. "License" means this document.
+
+ 1.8.1. "Licensable" means having the right to grant, to the maximum
+extent possible, whether at the time of the initial grant or subsequently
+acquired, any and all of the rights conveyed herein.
+
+ 1.9. "Modifications" means any addition to or deletion from the
+substance or structure of either the Original Code or any previous
+Modifications. When Covered Code is released as a series of files, a
+Modification is:
+ A. Any addition to or deletion from the contents of a file
+containing Original Code or previous Modifications.
+
+ B. Any new file that contains any part of the Original Code or
+previous Modifications.
+
+ 1.10. "Original Code" means Source Code of computer software code
+which is described in the Source Code notice required by Exhibit A as Original
+Code, and which, at the time of its release under this License is not already
+Covered Code governed by this License.
+
+ 1.10.1. "Patent Claims" means any patent claim(s), now owned or
+hereafter acquired, including without limitation, method, process, and
+apparatus claims, in any patent Licensable by grantor.
+
+ 1.11. "Source Code" means the preferred form of the Covered Code for
+making modifications to it, including all modules it contains, plus any
+associated interface definition files, scripts used to control compilation and
+installation of an Executable, or source code differential comparisons against
+either the Original Code or another well known, available Covered Code of the
+Contributor's choice. The Source Code can be in a compressed or archival form,
+provided the appropriate decompression or de-archiving software is widely
+available for no charge.
+
+ 1.12. "You" (or "Your") means an individual or a legal entity
+exercising rights under, and complying with all of the terms of, this License
+or a future version of this License issued under Section 6.1. For legal
+entities, "You" includes any entity which controls, is controlled by, or is
+under common control with You. For purposes of this definition, "control"
+means (a) the power, direct or indirect, to cause the direction or management
+of such entity, whether by contract or otherwise, or (b) ownership of more
+than fifty percent (50%) of the outstanding shares or beneficial ownership of
+such entity.
+
+2. Source Code License.
+
+ 2.1. The Initial Developer Grant.
+ The Initial Developer hereby grants You a world-wide, royalty-free,
+non-exclusive license, subject to third party intellectual property claims:
+ (a) under intellectual property rights (other than patent or
+trademark) Licensable by Initial Developer to use, reproduce, modify, display,
+perform, sublicense and distribute the Original Code (or portions thereof)
+with or without Modifications, and/or as part of a Larger Work; and
+
+ (b) under Patents Claims infringed by the making, using or selling
+of Original Code, to make, have made, use, practice, sell, and offer for sale,
+and/or otherwise dispose of the Original Code (or portions thereof).
+ (c) the licenses granted in this Section 2.1(a) and
+(b) are effective on the date Initial Developer first distributes Original
+Code under the terms of this License.
+
+ (d) Notwithstanding Section 2.1(b) above, no patent license is
+granted: 1) for code that You delete from the Original Code; 2) separate from
+the Original Code; or 3) for infringements caused by: i) the modification of
+the Original Code or ii) the combination of the Original Code with other
+software or devices.
+
+ 2.2. Contributor Grant.
+ Subject to third party intellectual property claims, each Contributor
+hereby grants You a world-wide, royalty-free, non-exclusive license
+
+ (a) under intellectual property rights (other than patent or
+trademark) Licensable by Contributor, to use, reproduce, modify, display,
+perform, sublicense and distribute the Modifications created by such
+Contributor (or portions thereof) either on an unmodified basis, with other
+Modifications, as Covered Code and/or as part of a Larger Work; and
+
+ (b) under Patent Claims infringed by the making, using, or selling
+of Modifications made by that Contributor either alone and/or in combination
+with its Contributor Version (or portions of such combination), to make, use,
+sell, offer for sale, have made, and/or otherwise dispose of: 1) Modifications
+made by that Contributor (or portions thereof); and 2) the combination of
+Modifications made by that Contributor with its Contributor Version (or
+portions of such combination).
+
+ (c) the licenses granted in Sections 2.2(a) and 2.2(b) are
+effective on the date Contributor first makes Commercial Use of the Covered
+Code.
+
+ (d) Notwithstanding Section 2.2(b) above, no patent license is
+granted: 1) for any code that Contributor has deleted from the Contributor
+Version; 2) separate from the Contributor Version; 3) for infringements
+caused by: i) third party modifications of Contributor Version or ii) the
+combination of Modifications made by that Contributor with other software
+(except as part of the Contributor Version) or other devices; or 4) under
+Patent Claims infringed by Covered Code in the absence of Modifications made
+by that Contributor.
+
+
+3. Distribution Obligations.
+
+ 3.1. Application of License.
+ The Modifications which You create or to which You contribute are
+governed by the terms of this License, including without limitation Section
+2.2. The Source Code version of Covered Code may be distributed only under the
+terms of this License or a future version of this License released under
+Section 6.1, and You must include a copy of this License with every copy of
+the Source Code You distribute. You may not offer or impose any terms on any
+Source Code version that alters or restricts the applicable version of this
+License or the recipients' rights hereunder. However, You may include an
+additional document offering the additional rights described in Section 3.5.
+
+ 3.2. Availability of Source Code.
+ Any Modification which You create or to which You contribute must be
+made available in Source Code form under the terms of this License either on
+the same media as an Executable version or via an accepted Electronic
+Distribution Mechanism to anyone to whom you made an Executable version
+available; and if made available via Electronic Distribution Mechanism, must
+remain available for at least twelve (12) months after the date it initially
+became available, or at least six (6) months after a subsequent version of
+that particular Modification has been made available to such recipients. You
+are responsible for ensuring that the Source Code version remains available
+even if the Electronic Distribution Mechanism is maintained by a third party.
+
+ 3.3. Description of Modifications.
+ You must cause all Covered Code to which You contribute to contain a
+file documenting the changes You made to create that Covered Code and the date
+of any change. You must include a prominent statement that the Modification is
+derived, directly or indirectly, from Original Code provided by the Initial
+Developer and including the name of the Initial Developer in (a) the Source
+Code, and (b) in any notice in an Executable version or related documentation
+in which You describe the origin or ownership of the Covered Code.
+
+ 3.4. Intellectual Property Matters
+ (a) Third Party Claims.
+ If Contributor has knowledge that a license under a third party's
+intellectual property rights is required to exercise the rights granted by
+such Contributor under Sections 2.1 or 2.2, Contributor must include a text
+file with the Source Code distribution titled "LEGAL" which describes the
+claim and the party making the claim in sufficient detail that a recipient
+will know whom to contact. If Contributor obtains such knowledge after the
+Modification is made available as described in Section 3.2, Contributor shall
+promptly modify the LEGAL file in all copies Contributor makes available
+thereafter and shall take other steps (such as notifying appropriate mailing
+lists or newsgroups) reasonably calculated to inform those who received the
+Covered Code that new knowledge has been obtained.
+
+ (b) Contributor APIs.
+ If Contributor's Modifications include an application programming
+interface and Contributor has knowledge of patent licenses which are
+reasonably necessary to implement that API, Contributor must also include this
+information in the LEGAL file.
+
+ (c) Representations.
+ Contributor represents that, except as disclosed pursuant to
+Section 3.4(a) above, Contributor believes that Contributor's Modifications
+are Contributor's original creation(s) and/or Contributor has sufficient
+rights to grant the rights conveyed by this License.
+
+
+ 3.5. Required Notices.
+ You must duplicate the notice in Exhibit A in each file of the Source
+Code. If it is not possible to put such notice in a particular Source Code
+file due to its structure, then You must include such notice in a location
+(such as a relevant directory) where a user would be likely to look for such a
+notice. If You created one or more Modification(s) You may add your name as a
+Contributor to the notice described in Exhibit A. You must also duplicate
+this License in any documentation for the Source Code where You describe
+recipients' rights or ownership rights relating to Covered Code. You may
+choose to offer, and to charge a fee for, warranty, support, indemnity or
+liability obligations to one or more recipients of Covered Code. However, You
+may do so only on Your own behalf, and not on behalf of the Initial Developer
+or any Contributor. You must make it absolutely clear than any such warranty,
+support, indemnity or liability obligation is offered by You alone, and You
+hereby agree to indemnify the Initial Developer and every Contributor for any
+liability incurred by the Initial Developer or such Contributor as a result of
+warranty, support, indemnity or liability terms You offer.
+
+ 3.6. Distribution of Executable Versions.
+ You may distribute Covered Code in Executable form only if the
+requirements of Section 3.1-3.5 have been met for that Covered Code, and if
+You include a notice stating that the Source Code version of the Covered Code
+is available under the terms of this License, including a description of how
+and where You have fulfilled the obligations of Section 3.2. The notice must
+be conspicuously included in any notice in an Executable version, related
+documentation or collateral in which You describe recipients' rights relating
+to the Covered Code. You may distribute the Executable version of Covered Code
+or ownership rights under a license of Your choice, which may contain terms
+different from this License, provided that You are in compliance with the
+terms of this License and that the license for the Executable version does not
+attempt to limit or alter the recipient's rights in the Source Code version
+from the rights set forth in this License. If You distribute the Executable
+version under a different license You must make it absolutely clear that any
+terms which differ from this License are offered by You alone, not by the
+Initial Developer or any Contributor. You hereby agree to indemnify the
+Initial Developer and every Contributor for any liability incurred by the
+Initial Developer or such Contributor as a result of any such terms You offer.
+
+ 3.7. Larger Works.
+ You may create a Larger Work by combining Covered Code with other code
+not governed by the terms of this License and distribute the Larger Work as a
+single product. In such a case, You must make sure the requirements of this
+License are fulfilled for the Covered Code.
+
+4. Inability to Comply Due to Statute or Regulation.
+
+ If it is impossible for You to comply with any of the terms of this
+License with respect to some or all of the Covered Code due to statute,
+judicial order, or regulation then You must: (a) comply with the terms of this
+License to the maximum extent possible; and (b) describe the limitations and
+the code they affect. Such description must be included in the LEGAL file
+described in Section 3.4 and must be included with all distributions of the
+Source Code. Except to the extent prohibited by statute or regulation, such
+description must be sufficiently detailed for a recipient of ordinary skill to
+be able to understand it.
+
+5. Application of this License.
+
+ This License applies to code to which the Initial Developer has attached
+the notice in Exhibit A and to related Covered Code.
+
+6. Versions of the License.
+
+ 6.1. New Versions.
+ Netscape Communications Corporation ("Netscape") may publish revised
+and/or new versions of the License from time to time. Each version will be
+given a distinguishing version number.
+
+ 6.2. Effect of New Versions.
+ Once Covered Code has been published under a particular version of the
+License, You may always continue to use it under the terms of that version.
+You may also choose to use such Covered Code under the terms of any subsequent
+version of the License published by Netscape. No one other than Netscape has
+the right to modify the terms applicable to Covered Code created under this
+License.
+
+ 6.3. Derivative Works.
+ If You create or use a modified version of this License (which you may
+only do in order to apply it to code which is not already Covered Code
+governed by this License), You must (a) rename Your license so that the
+phrases "Mozilla", "MOZILLAPL", "MOZPL", "Netscape", "MPL", "NPL" or
+any confusingly similar phrase do not appear in your license (except to note
+that your license differs from this License) and (b) otherwise make it clear
+that Your version of the license contains terms which differ from the Mozilla
+Public License and Netscape Public License. (Filling in the name of the
+Initial Developer, Original Code or Contributor in the notice described in
+Exhibit A shall not of themselves be deemed to be modifications of this
+License.)
+
+7. DISCLAIMER OF WARRANTY.
+
+ COVERED CODE IS PROVIDED UNDER THIS LICENSE ON AN "AS IS" BASIS,
+WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, WITHOUT
+LIMITATION, WARRANTIES THAT THE COVERED CODE IS FREE OF DEFECTS, MERCHANTABLE,
+FIT FOR A PARTICULAR PURPOSE OR NON-INFRINGING. THE ENTIRE RISK AS TO THE
+QUALITY AND PERFORMANCE OF THE COVERED CODE IS WITH YOU. SHOULD ANY COVERED
+CODE PROVE DEFECTIVE IN ANY RESPECT, YOU (NOT THE INITIAL DEVELOPER OR ANY
+OTHER CONTRIBUTOR) ASSUME THE COST OF ANY NECESSARY SERVICING, REPAIR OR
+CORRECTION. THIS DISCLAIMER OF WARRANTY CONSTITUTES AN ESSENTIAL PART OF THIS
+LICENSE. NO USE OF ANY COVERED CODE IS AUTHORIZED HEREUNDER EXCEPT UNDER THIS
+DISCLAIMER.
+
+8. TERMINATION.
+
+ 8.1. This License and the rights granted hereunder will terminate
+automatically if You fail to comply with terms herein and fail to cure such
+breach within 30 days of becoming aware of the breach. All sublicenses to the
+Covered Code which are properly granted shall survive any termination of this
+License. Provisions which, by their nature, must remain in effect beyond the
+termination of this License shall survive.
+
+ 8.2. If You initiate litigation by asserting a patent infringement
+claim (excluding declatory judgment actions) against Initial Developer or a
+Contributor (the Initial Developer or Contributor against whom You file such
+action is referred to as "Participant") alleging that:
+
+ (a) such Participant's Contributor Version directly or indirectly
+infringes any patent, then any and all rights granted by such Participant to
+You under Sections 2.1 and/or 2.2 of this License shall, upon 60 days notice
+from Participant terminate prospectively, unless if within 60 days after
+receipt of notice You either: (i) agree in writing to pay Participant a
+mutually agreeable reasonable royalty for Your past and future use of
+Modifications made by such Participant, or (ii) withdraw Your litigation claim
+with respect to the Contributor Version against such Participant. If within
+60 days of notice, a reasonable royalty and payment arrangement are not
+mutually agreed upon in writing by the parties or the litigation claim is not
+withdrawn, the rights granted by Participant to You under Sections 2.1 and/or
+2.2 automatically terminate at the expiration of the 60 day notice period
+specified above.
+
+ (b) any software, hardware, or device, other than such Participant's
+Contributor Version, directly or indirectly infringes any patent, then any
+rights granted to You by such Participant under Sections 2.1(b) and 2.2(b) are
+revoked effective as of the date You first made, used, sold, distributed, or
+had made, Modifications made by that Participant.
+
+ 8.3. If You assert a patent infringement claim against Participant
+alleging that such Participant's Contributor Version directly or indirectly
+infringes any patent where such claim is resolved (such as by license or
+settlement) prior to the initiation of patent infringement litigation, then
+the reasonable value of the licenses granted by such Participant under
+Sections 2.1 or 2.2 shall be taken into account in determining the amount or
+value of any payment or license.
+
+ 8.4. In the event of termination under Sections 8.1 or 8.2 above, all
+end user license agreements (excluding distributors and resellers) which have
+been validly granted by You or any distributor hereunder prior to termination
+shall survive termination.
+
+9. LIMITATION OF LIABILITY.
+
+ UNDER NO CIRCUMSTANCES AND UNDER NO LEGAL THEORY, WHETHER TORT
+(INCLUDING NEGLIGENCE), CONTRACT, OR OTHERWISE, SHALL YOU, THE INITIAL
+DEVELOPER, ANY OTHER CONTRIBUTOR, OR ANY DISTRIBUTOR OF COVERED CODE, OR ANY
+SUPPLIER OF ANY OF SUCH PARTIES, BE LIABLE TO ANY PERSON FOR ANY INDIRECT,
+SPECIAL, INCIDENTAL, OR CONSEQUENTIAL DAMAGES OF ANY CHARACTER INCLUDING,
+WITHOUT LIMITATION, DAMAGES FOR LOSS OF GOODWILL, WORK STOPPAGE, COMPUTER
+FAILURE OR MALFUNCTION, OR ANY AND ALL OTHER COMMERCIAL DAMAGES OR LOSSES,
+EVEN IF SUCH PARTY SHALL HAVE BEEN INFORMED OF THE POSSIBILITY OF SUCH
+DAMAGES. THIS LIMITATION OF LIABILITY SHALL NOT APPLY TO LIABILITY FOR DEATH
+OR PERSONAL INJURY RESULTING FROM SUCH PARTY'S NEGLIGENCE TO THE EXTENT
+APPLICABLE LAW PROHIBITS SUCH LIMITATION. SOME JURISDICTIONS DO NOT ALLOW THE
+EXCLUSION OR LIMITATION OF INCIDENTAL OR CONSEQUENTIAL DAMAGES, SO THIS
+EXCLUSION AND LIMITATION MAY NOT APPLY TO YOU.
+
+10. U.S. GOVERNMENT END USERS.
+
+ The Covered Code is a "commercial item," as that term is defined in 48
+C.F.R. 2.101 (Oct. 1995), consisting of "commercial computer software" and
+"commercial computer software documentation," as such terms are used in 48
+C.F.R. 12.212 (Sept. 1995). Consistent with 48 C.F.R. 12.212 and 48 C.F.R.
+227.7202-1 through 227.7202-4 (June 1995), all U.S. Government End Users
+acquire Covered Code with only those rights set forth herein.
+
+11. MISCELLANEOUS.
+
+ This License represents the complete agreement concerning subject matter
+hereof. If any provision of this License is held to be unenforceable, such
+provision shall be reformed only to the extent necessary to make it
+enforceable. This License shall be governed by California law provisions
+(except to the extent applicable law, if any, provides otherwise), excluding
+its conflict-of-law provisions. With respect to disputes in which at least one
+party is a citizen of, or an entity chartered or registered to do business in
+the United States of America, any litigation relating to this License shall be
+subject to the jurisdiction of the Federal Courts of the Northern District of
+California, with venue lying in Santa Clara County, California, with the
+losing party responsible for costs, including without limitation, court costs
+and reasonable attorneys' fees and expenses. The application of the United
+Nations Convention on Contracts for the International Sale of Goods is
+expressly excluded. Any law or regulation which provides that the language of
+a contract shall be construed against the drafter shall not apply to this
+License.
+
+12. RESPONSIBILITY FOR CLAIMS.
+
+ As between Initial Developer and the Contributors, each party is
+responsible for claims and damages arising, directly or indirectly, out of its
+utilization of rights under this License and You agree to work with Initial
+Developer and Contributors to distribute such responsibility on an equitable
+basis. Nothing herein is intended or shall be deemed to constitute any
+admission of liability.
+
+13. MULTIPLE-LICENSED CODE.
+
+ Initial Developer may designate portions of the Covered Code as
+Multiple-Licensed. Multiple-Licensed means that the Initial Developer permits
+you to utilize portions of the Covered Code under Your choice of the MPL or
+the alternative licenses, if any, specified by the Initial Developer in the
+file described in Exhibit A.
+
+
+EXHIBIT A -Mozilla Public License.
+
+ ``The contents of this file are subject to the Mozilla Public License
+Version 1.1 (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.mozilla.org/MPL/
+
+ Software distributed under the License is distributed on an "AS IS"
+basis, WITHOUT WARRANTY OF
+ ANY KIND, either express or implied. See the License for the specific
+language governing rights and
+ limitations under the License.
+
+ The Original Code is ______________________________________.
+
+ The Initial Developer of the Original Code is ________________________.
+Portions created by
+ ______________________ are Copyright (C) ______
+_______________________. All Rights
+ Reserved.
+
+ Contributor(s): ______________________________________.
+
+ Alternatively, the contents of this file may be used under the terms of
+the _____ license (the [___] License), in which case the provisions of
+[______] License are applicable instead of those above. If you wish to allow
+use of your version of this file only under the terms of the [____] License
+and not to allow others to use your version of this file under the MPL,
+indicate your decision by deleting the provisions above and replace them
+with the notice and other provisions required by the [___] License. If you do
+not delete the provisions above, a recipient may use your version of this file
+under either the MPL or the [___] License."
+
+ [NOTE: The text of this Exhibit A may differ slightly from the text of
+the notices in the Source Code files of the Original Code. You should use the
+text of this Exhibit A rather than the text found in the Original Code Source
+Code for Your Modifications.]
+
+
+===============================================================================
+
+For the JAX-WS Reference Implementation component:
+
+COMMON DEVELOPMENT AND DISTRIBUTION LICENSE (CDDL) Version 1.0
+
+
+ 1. Definitions.
+
+ 1.1. "Contributor" means each individual or entity that
+ creates or contributes to the creation of Modifications.
+
+ 1.2. "Contributor Version" means the combination of the
+ Original Software, prior Modifications used by a
+ Contributor (if any), and the Modifications made by that
+ particular Contributor.
+
+ 1.3. "Covered Software" means (a) the Original Software, or
+ (b) Modifications, or (c) the combination of files
+ containing Original Software with files containing
+ Modifications, in each case including portions thereof.
+
+ 1.4. "Executable" means the Covered Software in any form
+ other than Source Code.
+
+ 1.5. "Initial Developer" means the individual or entity
+ that first makes Original Software available under this
+ License.
+
+ 1.6. "Larger Work" means a work which combines Covered
+ Software or portions thereof with code not governed by the
+ terms of this License.
+
+ 1.7. "License" means this document.
+
+ 1.8. "Licensable" means having the right to grant, to the
+ maximum extent possible, whether at the time of the initial
+ grant or subsequently acquired, any and all of the rights
+ conveyed herein.
+
+ 1.9. "Modifications" means the Source Code and Executable
+ form of any of the following:
+
+ A. Any file that results from an addition to,
+ deletion from or modification of the contents of a
+ file containing Original Software or previous
+ Modifications;
+
+ B. Any new file that contains any part of the
+ Original Software or previous Modification; or
+
+ C. Any new file that is contributed or otherwise made
+ available under the terms of this License.
+
+ 1.10. "Original Software" means the Source Code and
+ Executable form of computer software code that is
+ originally released under this License.
+
+ 1.11. "Patent Claims" means any patent claim(s), now owned
+ or hereafter acquired, including without limitation,
+ method, process, and apparatus claims, in any patent
+ Licensable by grantor.
+
+ 1.12. "Source Code" means (a) the common form of computer
+ software code in which modifications are made and (b)
+ associated documentation included in or with such code.
+
+ 1.13. "You" (or "Your") means an individual or a legal
+ entity exercising rights under, and complying with all of
+ the terms of, this License. For legal entities, "You"
+ includes any entity which controls, is controlled by, or is
+ under common control with You. For purposes of this
+ definition, "control" means (a) the power, direct or
+ indirect, to cause the direction or management of such
+ entity, whether by contract or otherwise, or (b) ownership
+ of more than fifty percent (50%) of the outstanding shares
+ or beneficial ownership of such entity.
+
+ 2. License Grants.
+
+ 2.1. The Initial Developer Grant.
+
+ Conditioned upon Your compliance with Section 3.1 below and
+ subject to third party intellectual property claims, the
+ Initial Developer hereby grants You a world-wide,
+ royalty-free, non-exclusive license:
+
+ (a) under intellectual property rights (other than
+ patent or trademark) Licensable by Initial Developer,
+ to use, reproduce, modify, display, perform,
+ sublicense and distribute the Original Software (or
+ portions thereof), with or without Modifications,
+ and/or as part of a Larger Work; and
+
+ (b) under Patent Claims infringed by the making,
+ using or selling of Original Software, to make, have
+ made, use, practice, sell, and offer for sale, and/or
+ otherwise dispose of the Original Software (or
+ portions thereof).
+
+ (c) The licenses granted in Sections 2.1(a) and (b)
+ are effective on the date Initial Developer first
+ distributes or otherwise makes the Original Software
+ available to a third party under the terms of this
+ License.
+
+ (d) Notwithstanding Section 2.1(b) above, no patent
+ license is granted: (1) for code that You delete from
+ the Original Software, or (2) for infringements
+ caused by: (i) the modification of the Original
+ Software, or (ii) the combination of the Original
+ Software with other software or devices.
+
+ 2.2. Contributor Grant.
+
+ Conditioned upon Your compliance with Section 3.1 below and
+ subject to third party intellectual property claims, each
+ Contributor hereby grants You a world-wide, royalty-free,
+ non-exclusive license:
+
+ (a) under intellectual property rights (other than
+ patent or trademark) Licensable by Contributor to
+ use, reproduce, modify, display, perform, sublicense
+ and distribute the Modifications created by such
+ Contributor (or portions thereof), either on an
+ unmodified basis, with other Modifications, as
+ Covered Software and/or as part of a Larger Work; and
+
+
+ (b) under Patent Claims infringed by the making,
+ using, or selling of Modifications made by that
+ Contributor either alone and/or in combination with
+ its Contributor Version (or portions of such
+ combination), to make, use, sell, offer for sale,
+ have made, and/or otherwise dispose of: (1)
+ Modifications made by that Contributor (or portions
+ thereof); and (2) the combination of Modifications
+ made by that Contributor with its Contributor Version
+ (or portions of such combination).
+
+ (c) The licenses granted in Sections 2.2(a) and
+ 2.2(b) are effective on the date Contributor first
+ distributes or otherwise makes the Modifications
+ available to a third party.
+
+ (d) Notwithstanding Section 2.2(b) above, no patent
+ license is granted: (1) for any code that Contributor
+ has deleted from the Contributor Version; (2) for
+ infringements caused by: (i) third party
+ modifications of Contributor Version, or (ii) the
+ combination of Modifications made by that Contributor
+ with other software (except as part of the
+ Contributor Version) or other devices; or (3) under
+ Patent Claims infringed by Covered Software in the
+ absence of Modifications made by that Contributor.
+
+ 3. Distribution Obligations.
+
+ 3.1. Availability of Source Code.
+
+ Any Covered Software that You distribute or otherwise make
+ available in Executable form must also be made available in
+ Source Code form and that Source Code form must be
+ distributed only under the terms of this License. You must
+ include a copy of this License with every copy of the
+ Source Code form of the Covered Software You distribute or
+ otherwise make available. You must inform recipients of any
+ such Covered Software in Executable form as to how they can
+ obtain such Covered Software in Source Code form in a
+ reasonable manner on or through a medium customarily used
+ for software exchange.
+
+ 3.2. Modifications.
+
+ The Modifications that You create or to which You
+ contribute are governed by the terms of this License. You
+ represent that You believe Your Modifications are Your
+ original creation(s) and/or You have sufficient rights to
+ grant the rights conveyed by this License.
+
+ 3.3. Required Notices.
+
+ You must include a notice in each of Your Modifications
+ that identifies You as the Contributor of the Modification.
+ You may not remove or alter any copyright, patent or
+ trademark notices contained within the Covered Software, or
+ any notices of licensing or any descriptive text giving
+ attribution to any Contributor or the Initial Developer.
+
+ 3.4. Application of Additional Terms.
+
+ You may not offer or impose any terms on any Covered
+ Software in Source Code form that alters or restricts the
+ applicable version of this License or the recipients'
+ rights hereunder. You may choose to offer, and to charge a
+ fee for, warranty, support, indemnity or liability
+ obligations to one or more recipients of Covered Software.
+ However, you may do so only on Your own behalf, and not on
+ behalf of the Initial Developer or any Contributor. You
+ must make it absolutely clear that any such warranty,
+ support, indemnity or liability obligation is offered by
+ You alone, and You hereby agree to indemnify the Initial
+ Developer and every Contributor for any liability incurred
+ by the Initial Developer or such Contributor as a result of
+ warranty, support, indemnity or liability terms You offer.
+
+
+ 3.5. Distribution of Executable Versions.
+
+ You may distribute the Executable form of the Covered
+ Software under the terms of this License or under the terms
+ of a license of Your choice, which may contain terms
+ different from this License, provided that You are in
+ compliance with the terms of this License and that the
+ license for the Executable form does not attempt to limit
+ or alter the recipient's rights in the Source Code form
+ from the rights set forth in this License. If You
+ distribute the Covered Software in Executable form under a
+ different license, You must make it absolutely clear that
+ any terms which differ from this License are offered by You
+ alone, not by the Initial Developer or Contributor. You
+ hereby agree to indemnify the Initial Developer and every
+ Contributor for any liability incurred by the Initial
+ Developer or such Contributor as a result of any such terms
+ You offer.
+
+ 3.6. Larger Works.
+
+ You may create a Larger Work by combining Covered Software
+ with other code not governed by the terms of this License
+ and distribute the Larger Work as a single product. In such
+ a case, You must make sure the requirements of this License
+ are fulfilled for the Covered Software.
+
+ 4. Versions of the License.
+
+ 4.1. New Versions.
+
+ Sun Microsystems, Inc. is the initial license steward and
+ may publish revised and/or new versions of this License
+ from time to time. Each version will be given a
+ distinguishing version number. Except as provided in
+ Section 4.3, no one other than the license steward has the
+ right to modify this License.
+
+ 4.2. Effect of New Versions.
+
+ You may always continue to use, distribute or otherwise
+ make the Covered Software available under the terms of the
+ version of the License under which You originally received
+ the Covered Software. If the Initial Developer includes a
+ notice in the Original Software prohibiting it from being
+ distributed or otherwise made available under any
+ subsequent version of the License, You must distribute and
+ make the Covered Software available under the terms of the
+ version of the License under which You originally received
+ the Covered Software. Otherwise, You may also choose to
+ use, distribute or otherwise make the Covered Software
+ available under the terms of any subsequent version of the
+ License published by the license steward.
+
+ 4.3. Modified Versions.
+
+ When You are an Initial Developer and You want to create a
+ new license for Your Original Software, You may create and
+ use a modified version of this License if You: (a) rename
+ the license and remove any references to the name of the
+ license steward (except to note that the license differs
+ from this License); and (b) otherwise make it clear that
+ the license contains terms which differ from this License.
+
+
+ 5. DISCLAIMER OF WARRANTY.
+
+ COVERED SOFTWARE IS PROVIDED UNDER THIS LICENSE ON AN "AS IS"
+ BASIS, WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED,
+ INCLUDING, WITHOUT LIMITATION, WARRANTIES THAT THE COVERED
+ SOFTWARE IS FREE OF DEFECTS, MERCHANTABLE, FIT FOR A PARTICULAR
+ PURPOSE OR NON-INFRINGING. THE ENTIRE RISK AS TO THE QUALITY AND
+ PERFORMANCE OF THE COVERED SOFTWARE IS WITH YOU. SHOULD ANY
+ COVERED SOFTWARE PROVE DEFECTIVE IN ANY RESPECT, YOU (NOT THE
+ INITIAL DEVELOPER OR ANY OTHER CONTRIBUTOR) ASSUME THE COST OF
+ ANY NECESSARY SERVICING, REPAIR OR CORRECTION. THIS DISCLAIMER OF
+ WARRANTY CONSTITUTES AN ESSENTIAL PART OF THIS LICENSE. NO USE OF
+ ANY COVERED SOFTWARE IS AUTHORIZED HEREUNDER EXCEPT UNDER THIS
+ DISCLAIMER.
+
+ 6. TERMINATION.
+
+ 6.1. This License and the rights granted hereunder will
+ terminate automatically if You fail to comply with terms
+ herein and fail to cure such breach within 30 days of
+ becoming aware of the breach. Provisions which, by their
+ nature, must remain in effect beyond the termination of
+ this License shall survive.
+
+ 6.2. If You assert a patent infringement claim (excluding
+ declaratory judgment actions) against Initial Developer or
+ a Contributor (the Initial Developer or Contributor against
+ whom You assert such claim is referred to as "Participant")
+ alleging that the Participant Software (meaning the
+ Contributor Version where the Participant is a Contributor
+ or the Original Software where the Participant is the
+ Initial Developer) directly or indirectly infringes any
+ patent, then any and all rights granted directly or
+ indirectly to You by such Participant, the Initial
+ Developer (if the Initial Developer is not the Participant)
+ and all Contributors under Sections 2.1 and/or 2.2 of this
+ License shall, upon 60 days notice from Participant
+ terminate prospectively and automatically at the expiration
+ of such 60 day notice period, unless if within such 60 day
+ period You withdraw Your claim with respect to the
+ Participant Software against such Participant either
+ unilaterally or pursuant to a written agreement with
+ Participant.
+
+ 6.3. In the event of termination under Sections 6.1 or 6.2
+ above, all end user licenses that have been validly granted
+ by You or any distributor hereunder prior to termination
+ (excluding licenses granted to You by any distributor)
+ shall survive termination.
+
+ 7. LIMITATION OF LIABILITY.
+
+ UNDER NO CIRCUMSTANCES AND UNDER NO LEGAL THEORY, WHETHER TORT
+ (INCLUDING NEGLIGENCE), CONTRACT, OR OTHERWISE, SHALL YOU, THE
+ INITIAL DEVELOPER, ANY OTHER CONTRIBUTOR, OR ANY DISTRIBUTOR OF
+ COVERED SOFTWARE, OR ANY SUPPLIER OF ANY OF SUCH PARTIES, BE
+ LIABLE TO ANY PERSON FOR ANY INDIRECT, SPECIAL, INCIDENTAL, OR
+ CONSEQUENTIAL DAMAGES OF ANY CHARACTER INCLUDING, WITHOUT
+ LIMITATION, DAMAGES FOR LOST PROFITS, LOSS OF GOODWILL, WORK
+ STOPPAGE, COMPUTER FAILURE OR MALFUNCTION, OR ANY AND ALL OTHER
+ COMMERCIAL DAMAGES OR LOSSES, EVEN IF SUCH PARTY SHALL HAVE BEEN
+ INFORMED OF THE POSSIBILITY OF SUCH DAMAGES. THIS LIMITATION OF
+ LIABILITY SHALL NOT APPLY TO LIABILITY FOR DEATH OR PERSONAL
+ INJURY RESULTING FROM SUCH PARTY'S NEGLIGENCE TO THE EXTENT
+ APPLICABLE LAW PROHIBITS SUCH LIMITATION. SOME JURISDICTIONS DO
+ NOT ALLOW THE EXCLUSION OR LIMITATION OF INCIDENTAL OR
+ CONSEQUENTIAL DAMAGES, SO THIS EXCLUSION AND LIMITATION MAY NOT
+ APPLY TO YOU.
+
+ 8. U.S. GOVERNMENT END USERS.
+
+ The Covered Software is a "commercial item," as that term is
+ defined in 48 C.F.R. 2.101 (Oct. 1995), consisting of "commercial
+ computer software" (as that term is defined at 48 C.F.R.
+ 252.227-7014(a)(1)) and "commercial computer software
+ documentation" as such terms are used in 48 C.F.R. 12.212 (Sept.
+ 1995). Consistent with 48 C.F.R. 12.212 and 48 C.F.R. 227.7202-1
+ through 227.7202-4 (June 1995), all U.S. Government End Users
+ acquire Covered Software with only those rights set forth herein.
+ This U.S. Government Rights clause is in lieu of, and supersedes,
+ any other FAR, DFAR, or other clause or provision that addresses
+ Government rights in computer software under this License.
+
+ 9. MISCELLANEOUS.
+
+ This License represents the complete agreement concerning subject
+ matter hereof. If any provision of this License is held to be
+ unenforceable, such provision shall be reformed only to the
+ extent necessary to make it enforceable. This License shall be
+ governed by the law of the jurisdiction specified in a notice
+ contained within the Original Software (except to the extent
+ applicable law, if any, provides otherwise), excluding such
+ jurisdiction's conflict-of-law provisions. Any litigation
+ relating to this License shall be subject to the jurisdiction of
+ the courts located in the jurisdiction and venue specified in a
+ notice contained within the Original Software, with the losing
+ party responsible for costs, including, without limitation, court
+ costs and reasonable attorneys' fees and expenses. The
+ application of the United Nations Convention on Contracts for the
+ International Sale of Goods is expressly excluded. Any law or
+ regulation which provides that the language of a contract shall
+ be construed against the drafter shall not apply to this License.
+ You agree that You alone are responsible for compliance with the
+ United States export administration regulations (and the export
+ control laws and regulation of any other countries) when You use,
+ distribute or otherwise make available any Covered Software.
+
+ 10. RESPONSIBILITY FOR CLAIMS.
+
+ As between Initial Developer and the Contributors, each party is
+ responsible for claims and damages arising, directly or
+ indirectly, out of its utilization of rights under this License
+ and You agree to work with Initial Developer and Contributors to
+ distribute such responsibility on an equitable basis. Nothing
+ herein is intended or shall be deemed to constitute any admission
+ of liability.
+
diff --git a/branches/sdo-java-M2/sdo/tools/src/main/resources/META-INF/NOTICE b/branches/sdo-java-M2/sdo/tools/src/main/resources/META-INF/NOTICE
new file mode 100644
index 0000000000..322cf40f9f
--- /dev/null
+++ b/branches/sdo-java-M2/sdo/tools/src/main/resources/META-INF/NOTICE
@@ -0,0 +1,29 @@
+Apache Tuscany SDO for Java
+Copyright 2006 The Apache Software Foundation
+
+This product includes software developed at
+The Apache Software Foundation (http://www.apache.org/).
+
+Apache Tuscany is an effort undergoing incubation at The Apache Software Foundation (ASF),
+sponsored by the Apache Web Services PMC. Incubation is required of all newly accepted
+projects until a further review indicates that the infrastructure, communications,
+and decision making process have stabilized in a manner consistent with other successful
+ASF projects. While incubation status is not necessarily a reflection of the completeness
+or stability of the code, it does indicate that the project has yet to be fully endorsed
+by the ASF.
+
+Unless otherwise indicated, all distribution made available by the Apache Software Foundation
+is provided to you under the terms and conditions of the Apache License Version 2.0 ("AL").
+A copy of the AL is provided with this distribution as the LICENSE.txt file present in the
+root directory, and is also available at http://www.apache.org/licenses/.
+
+The terms and conditions governing the distribution may refer to the AL or other license
+agreements, notices or terms and conditions. Some of these other license agreements may
+include (but are not limited to):
+
+ . Eclipse Public License Version 1.0 (available at http://www.eclipse.org/legal/epl-v10.html)
+ . Common Public License Version 1.0 (available at http://www.eclipse.org/legal/cpl-v10.html)
+
+It is your obligation to read and accept all such terms and conditions prior to use of the
+distribution. If term or condition is provided, please contact the Apache Software Foundation
+to determine what terms and conditions govern that particular distribution.
diff --git a/branches/sdo-java-M2/sdo/tools/src/main/resources/META-INF/README.txt b/branches/sdo-java-M2/sdo/tools/src/main/resources/META-INF/README.txt
new file mode 100644
index 0000000000..9b26d1690a
--- /dev/null
+++ b/branches/sdo-java-M2/sdo/tools/src/main/resources/META-INF/README.txt
@@ -0,0 +1,35 @@
+Apache Tuscany M1 build (May, 2006)
+===================================
+
+http://incubator.apache.org/tuscany/
+
+Tuscany is an effort undergoing incubation at the Apache Software Foundation
+(ASF), sponsored by the Web Services PMC.
+
+Incubation is required of all newly accepted projects until a further review
+indicates that the infrastructure, communications, and decision making process
+have stabilized in a manner consistent with other successful ASF projects.
+
+While incubation status is not necessarily a reflection of the completeness or
+stability of the code, it does indicate that the project has yet to be fully
+endorsed by the ASF.
+
+
+Support
+-------
+
+Any problem with this release can be reported to the Tuscany mailing list
+or in the JIRA issue tracker.
+
+Mailing list subscription:
+ tuscany-dev-subscribe@ws.apache.org
+
+Jira:
+ http://issues.apache.org/jira/browse/Tuscany
+
+
+Thank you for using Tuscany!
+
+
+The Tuscany Team.
+
diff --git a/branches/sdo-java-M2/sdo/tools/src/test/java/com/example/sequences/MixedQuote.java b/branches/sdo-java-M2/sdo/tools/src/test/java/com/example/sequences/MixedQuote.java
new file mode 100644
index 0000000000..9fe16b1eea
--- /dev/null
+++ b/branches/sdo-java-M2/sdo/tools/src/test/java/com/example/sequences/MixedQuote.java
@@ -0,0 +1,326 @@
+/**
+ *
+ * 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.sequences;
+
+import commonj.sdo.Sequence;
+
+import java.math.BigDecimal;
+
+import java.util.List;
+
+/**
+ * <!-- begin-user-doc -->
+ * A representation of the model object '<em><b>Mixed Quote</b></em>'.
+ * <!-- end-user-doc -->
+ *
+ * <p>
+ * The following features are supported:
+ * <ul>
+ * <li>{@link com.example.sequences.MixedQuote#getMixed <em>Mixed</em>}</li>
+ * <li>{@link com.example.sequences.MixedQuote#getSymbol <em>Symbol</em>}</li>
+ * <li>{@link com.example.sequences.MixedQuote#getCompanyName <em>Company Name</em>}</li>
+ * <li>{@link com.example.sequences.MixedQuote#getPrice <em>Price</em>}</li>
+ * <li>{@link com.example.sequences.MixedQuote#getOpen1 <em>Open1</em>}</li>
+ * <li>{@link com.example.sequences.MixedQuote#getHigh <em>High</em>}</li>
+ * <li>{@link com.example.sequences.MixedQuote#getLow <em>Low</em>}</li>
+ * <li>{@link com.example.sequences.MixedQuote#getVolume <em>Volume</em>}</li>
+ * <li>{@link com.example.sequences.MixedQuote#getChange1 <em>Change1</em>}</li>
+ * <li>{@link com.example.sequences.MixedQuote#getQuotes <em>Quotes</em>}</li>
+ * </ul>
+ * </p>
+ *
+ * @generated
+ */
+public interface MixedQuote
+{
+ /**
+ * Returns the value of the '<em><b>Mixed</b></em>' attribute list.
+ * <!-- begin-user-doc -->
+ * <p>
+ * If the meaning of the '<em>Mixed</em>' attribute list isn't clear,
+ * there really should be more of a description here...
+ * </p>
+ * <!-- end-user-doc -->
+ * @return the value of the '<em>Mixed</em>' attribute list.
+ * @generated
+ */
+ Sequence getMixed();
+
+ /**
+ * Returns the value of the '<em><b>Symbol</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <p>
+ * If the meaning of the '<em>Symbol</em>' attribute isn't clear,
+ * there really should be more of a description here...
+ * </p>
+ * <!-- end-user-doc -->
+ * @return the value of the '<em>Symbol</em>' attribute.
+ * @see #setSymbol(String)
+ * @generated
+ */
+ String getSymbol();
+
+ /**
+ * Sets the value of the '{@link com.example.sequences.MixedQuote#getSymbol <em>Symbol</em>}' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @param value the new value of the '<em>Symbol</em>' attribute.
+ * @see #getSymbol()
+ * @generated
+ */
+ void setSymbol(String value);
+
+ /**
+ * Returns the value of the '<em><b>Company Name</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <p>
+ * If the meaning of the '<em>Company Name</em>' attribute isn't clear,
+ * there really should be more of a description here...
+ * </p>
+ * <!-- end-user-doc -->
+ * @return the value of the '<em>Company Name</em>' attribute.
+ * @see #setCompanyName(String)
+ * @generated
+ */
+ String getCompanyName();
+
+ /**
+ * Sets the value of the '{@link com.example.sequences.MixedQuote#getCompanyName <em>Company Name</em>}' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @param value the new value of the '<em>Company Name</em>' attribute.
+ * @see #getCompanyName()
+ * @generated
+ */
+ void setCompanyName(String value);
+
+ /**
+ * Returns the value of the '<em><b>Price</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <p>
+ * If the meaning of the '<em>Price</em>' attribute isn't clear,
+ * there really should be more of a description here...
+ * </p>
+ * <!-- end-user-doc -->
+ * @return the value of the '<em>Price</em>' attribute.
+ * @see #setPrice(BigDecimal)
+ * @generated
+ */
+ BigDecimal getPrice();
+
+ /**
+ * Sets the value of the '{@link com.example.sequences.MixedQuote#getPrice <em>Price</em>}' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @param value the new value of the '<em>Price</em>' attribute.
+ * @see #getPrice()
+ * @generated
+ */
+ void setPrice(BigDecimal value);
+
+ /**
+ * Returns the value of the '<em><b>Open1</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <p>
+ * If the meaning of the '<em>Open1</em>' attribute isn't clear,
+ * there really should be more of a description here...
+ * </p>
+ * <!-- end-user-doc -->
+ * @return the value of the '<em>Open1</em>' attribute.
+ * @see #setOpen1(BigDecimal)
+ * @generated
+ */
+ BigDecimal getOpen1();
+
+ /**
+ * Sets the value of the '{@link com.example.sequences.MixedQuote#getOpen1 <em>Open1</em>}' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @param value the new value of the '<em>Open1</em>' attribute.
+ * @see #getOpen1()
+ * @generated
+ */
+ void setOpen1(BigDecimal value);
+
+ /**
+ * Returns the value of the '<em><b>High</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <p>
+ * If the meaning of the '<em>High</em>' attribute isn't clear,
+ * there really should be more of a description here...
+ * </p>
+ * <!-- end-user-doc -->
+ * @return the value of the '<em>High</em>' attribute.
+ * @see #setHigh(BigDecimal)
+ * @generated
+ */
+ BigDecimal getHigh();
+
+ /**
+ * Sets the value of the '{@link com.example.sequences.MixedQuote#getHigh <em>High</em>}' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @param value the new value of the '<em>High</em>' attribute.
+ * @see #getHigh()
+ * @generated
+ */
+ void setHigh(BigDecimal value);
+
+ /**
+ * Returns the value of the '<em><b>Low</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <p>
+ * If the meaning of the '<em>Low</em>' attribute isn't clear,
+ * there really should be more of a description here...
+ * </p>
+ * <!-- end-user-doc -->
+ * @return the value of the '<em>Low</em>' attribute.
+ * @see #setLow(BigDecimal)
+ * @generated
+ */
+ BigDecimal getLow();
+
+ /**
+ * Sets the value of the '{@link com.example.sequences.MixedQuote#getLow <em>Low</em>}' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @param value the new value of the '<em>Low</em>' attribute.
+ * @see #getLow()
+ * @generated
+ */
+ void setLow(BigDecimal value);
+
+ /**
+ * Returns the value of the '<em><b>Volume</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <p>
+ * If the meaning of the '<em>Volume</em>' attribute isn't clear,
+ * there really should be more of a description here...
+ * </p>
+ * <!-- end-user-doc -->
+ * @return the value of the '<em>Volume</em>' attribute.
+ * @see #isSetVolume()
+ * @see #unsetVolume()
+ * @see #setVolume(double)
+ * @generated
+ */
+ double getVolume();
+
+ /**
+ * Sets the value of the '{@link com.example.sequences.MixedQuote#getVolume <em>Volume</em>}' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @param value the new value of the '<em>Volume</em>' attribute.
+ * @see #isSetVolume()
+ * @see #unsetVolume()
+ * @see #getVolume()
+ * @generated
+ */
+ void setVolume(double value);
+
+ /**
+ * Unsets the value of the '{@link com.example.sequences.MixedQuote#getVolume <em>Volume</em>}' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #isSetVolume()
+ * @see #getVolume()
+ * @see #setVolume(double)
+ * @generated
+ */
+ void unsetVolume();
+
+ /**
+ * Returns whether the value of the '{@link com.example.sequences.MixedQuote#getVolume <em>Volume</em>}' attribute is set.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return whether the value of the '<em>Volume</em>' attribute is set.
+ * @see #unsetVolume()
+ * @see #getVolume()
+ * @see #setVolume(double)
+ * @generated
+ */
+ boolean isSetVolume();
+
+ /**
+ * Returns the value of the '<em><b>Change1</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <p>
+ * If the meaning of the '<em>Change1</em>' attribute isn't clear,
+ * there really should be more of a description here...
+ * </p>
+ * <!-- end-user-doc -->
+ * @return the value of the '<em>Change1</em>' attribute.
+ * @see #isSetChange1()
+ * @see #unsetChange1()
+ * @see #setChange1(double)
+ * @generated
+ */
+ double getChange1();
+
+ /**
+ * Sets the value of the '{@link com.example.sequences.MixedQuote#getChange1 <em>Change1</em>}' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @param value the new value of the '<em>Change1</em>' attribute.
+ * @see #isSetChange1()
+ * @see #unsetChange1()
+ * @see #getChange1()
+ * @generated
+ */
+ void setChange1(double value);
+
+ /**
+ * Unsets the value of the '{@link com.example.sequences.MixedQuote#getChange1 <em>Change1</em>}' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #isSetChange1()
+ * @see #getChange1()
+ * @see #setChange1(double)
+ * @generated
+ */
+ void unsetChange1();
+
+ /**
+ * Returns whether the value of the '{@link com.example.sequences.MixedQuote#getChange1 <em>Change1</em>}' attribute is set.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return whether the value of the '<em>Change1</em>' attribute is set.
+ * @see #unsetChange1()
+ * @see #getChange1()
+ * @see #setChange1(double)
+ * @generated
+ */
+ boolean isSetChange1();
+
+ /**
+ * Returns the value of the '<em><b>Quotes</b></em>' containment reference list.
+ * The list contents are of type {@link com.example.sequences.MixedQuote}.
+ * <!-- begin-user-doc -->
+ * <p>
+ * If the meaning of the '<em>Quotes</em>' containment reference list isn't clear,
+ * there really should be more of a description here...
+ * </p>
+ * <!-- end-user-doc -->
+ * @return the value of the '<em>Quotes</em>' containment reference list.
+ * @generated
+ */
+ List getQuotes();
+
+} // MixedQuote
diff --git a/branches/sdo-java-M2/sdo/tools/src/test/java/com/example/sequences/MixedRepeatingChoice.java b/branches/sdo-java-M2/sdo/tools/src/test/java/com/example/sequences/MixedRepeatingChoice.java
new file mode 100644
index 0000000000..6f20eba6e1
--- /dev/null
+++ b/branches/sdo-java-M2/sdo/tools/src/test/java/com/example/sequences/MixedRepeatingChoice.java
@@ -0,0 +1,99 @@
+/**
+ *
+ * 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.sequences;
+
+import commonj.sdo.Sequence;
+
+import java.util.List;
+
+/**
+ * <!-- begin-user-doc -->
+ * A representation of the model object '<em><b>Mixed Repeating Choice</b></em>'.
+ * <!-- end-user-doc -->
+ *
+ * <p>
+ * The following features are supported:
+ * <ul>
+ * <li>{@link com.example.sequences.MixedRepeatingChoice#getMixed <em>Mixed</em>}</li>
+ * <li>{@link com.example.sequences.MixedRepeatingChoice#getGroup <em>Group</em>}</li>
+ * <li>{@link com.example.sequences.MixedRepeatingChoice#getA <em>A</em>}</li>
+ * <li>{@link com.example.sequences.MixedRepeatingChoice#getB <em>B</em>}</li>
+ * </ul>
+ * </p>
+ *
+ * @generated
+ */
+public interface MixedRepeatingChoice
+{
+ /**
+ * Returns the value of the '<em><b>Mixed</b></em>' attribute list.
+ * <!-- begin-user-doc -->
+ * <p>
+ * If the meaning of the '<em>Mixed</em>' attribute list isn't clear,
+ * there really should be more of a description here...
+ * </p>
+ * <!-- end-user-doc -->
+ * @return the value of the '<em>Mixed</em>' attribute list.
+ * @generated
+ */
+ Sequence getMixed();
+
+ /**
+ * Returns the value of the '<em><b>Group</b></em>' attribute list.
+ * <!-- begin-user-doc -->
+ * <p>
+ * If the meaning of the '<em>Group</em>' attribute list isn't clear,
+ * there really should be more of a description here...
+ * </p>
+ * <!-- end-user-doc -->
+ * @return the value of the '<em>Group</em>' attribute list.
+ * @generated
+ */
+ Sequence getGroup();
+
+ /**
+ * Returns the value of the '<em><b>A</b></em>' attribute list.
+ * The list contents are of type {@link java.lang.String}.
+ * <!-- begin-user-doc -->
+ * <p>
+ * If the meaning of the '<em>A</em>' attribute list isn't clear,
+ * there really should be more of a description here...
+ * </p>
+ * <!-- end-user-doc -->
+ * @return the value of the '<em>A</em>' attribute list.
+ * @generated
+ */
+ List getA();
+
+ /**
+ * Returns the value of the '<em><b>B</b></em>' attribute list.
+ * The list contents are of type {@link java.lang.Integer}.
+ * <!-- begin-user-doc -->
+ * <p>
+ * If the meaning of the '<em>B</em>' attribute list isn't clear,
+ * there really should be more of a description here...
+ * </p>
+ * <!-- end-user-doc -->
+ * @return the value of the '<em>B</em>' attribute list.
+ * @generated
+ */
+ List getB();
+
+} // MixedRepeatingChoice
diff --git a/branches/sdo-java-M2/sdo/tools/src/test/java/com/example/sequences/RepeatingChoice.java b/branches/sdo-java-M2/sdo/tools/src/test/java/com/example/sequences/RepeatingChoice.java
new file mode 100644
index 0000000000..1ffff03539
--- /dev/null
+++ b/branches/sdo-java-M2/sdo/tools/src/test/java/com/example/sequences/RepeatingChoice.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 com.example.sequences;
+
+import commonj.sdo.Sequence;
+
+import java.util.List;
+
+/**
+ * <!-- begin-user-doc -->
+ * A representation of the model object '<em><b>Repeating Choice</b></em>'.
+ * <!-- end-user-doc -->
+ *
+ * <p>
+ * The following features are supported:
+ * <ul>
+ * <li>{@link com.example.sequences.RepeatingChoice#getGroup <em>Group</em>}</li>
+ * <li>{@link com.example.sequences.RepeatingChoice#getA <em>A</em>}</li>
+ * <li>{@link com.example.sequences.RepeatingChoice#getB <em>B</em>}</li>
+ * </ul>
+ * </p>
+ *
+ * @generated
+ */
+public interface RepeatingChoice
+{
+ /**
+ * Returns the value of the '<em><b>Group</b></em>' attribute list.
+ * <!-- begin-user-doc -->
+ * <p>
+ * If the meaning of the '<em>Group</em>' attribute list isn't clear,
+ * there really should be more of a description here...
+ * </p>
+ * <!-- end-user-doc -->
+ * @return the value of the '<em>Group</em>' attribute list.
+ * @generated
+ */
+ Sequence getGroup();
+
+ /**
+ * Returns the value of the '<em><b>A</b></em>' attribute list.
+ * The list contents are of type {@link java.lang.String}.
+ * <!-- begin-user-doc -->
+ * <p>
+ * If the meaning of the '<em>A</em>' attribute list isn't clear,
+ * there really should be more of a description here...
+ * </p>
+ * <!-- end-user-doc -->
+ * @return the value of the '<em>A</em>' attribute list.
+ * @generated
+ */
+ List getA();
+
+ /**
+ * Returns the value of the '<em><b>B</b></em>' attribute list.
+ * The list contents are of type {@link java.lang.Integer}.
+ * <!-- begin-user-doc -->
+ * <p>
+ * If the meaning of the '<em>B</em>' attribute list isn't clear,
+ * there really should be more of a description here...
+ * </p>
+ * <!-- end-user-doc -->
+ * @return the value of the '<em>B</em>' attribute list.
+ * @generated
+ */
+ List getB();
+
+} // RepeatingChoice
diff --git a/branches/sdo-java-M2/sdo/tools/src/test/java/com/example/sequences/SequencesFactory.java b/branches/sdo-java-M2/sdo/tools/src/test/java/com/example/sequences/SequencesFactory.java
new file mode 100644
index 0000000000..66eac414c6
--- /dev/null
+++ b/branches/sdo-java-M2/sdo/tools/src/test/java/com/example/sequences/SequencesFactory.java
@@ -0,0 +1,86 @@
+/**
+ *
+ * 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.sequences;
+
+
+/**
+ * <!-- begin-user-doc -->
+ * The <b>Factory</b> for the model.
+ * It provides a create method for each non-abstract class of the model.
+ * <!-- end-user-doc -->
+ * @generated
+ */
+public interface SequencesFactory
+{
+
+ /**
+ * The singleton instance of the factory.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ SequencesFactory INSTANCE = com.example.sequences.impl.SequencesFactoryImpl.init();
+
+ /**
+ * Returns a new object of class '<em>Mixed Quote</em>'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return a new object of class '<em>Mixed Quote</em>'.
+ * @generated
+ */
+ MixedQuote createMixedQuote();
+
+ /**
+ * Returns a new object of class '<em>Mixed Repeating Choice</em>'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return a new object of class '<em>Mixed Repeating Choice</em>'.
+ * @generated
+ */
+ MixedRepeatingChoice createMixedRepeatingChoice();
+
+ /**
+ * Returns a new object of class '<em>Repeating Choice</em>'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return a new object of class '<em>Repeating Choice</em>'.
+ * @generated
+ */
+ RepeatingChoice createRepeatingChoice();
+
+ /**
+ * Returns a new object of class '<em>Two RCs</em>'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return a new object of class '<em>Two RCs</em>'.
+ * @generated
+ */
+ TwoRCs createTwoRCs();
+
+ /**
+ * Returns a new object of class '<em>Two RCs Mixed</em>'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return a new object of class '<em>Two RCs Mixed</em>'.
+ * @generated
+ */
+ TwoRCsMixed createTwoRCsMixed();
+
+} //SequencesFactory
diff --git a/branches/sdo-java-M2/sdo/tools/src/test/java/com/example/sequences/TwoRCs.java b/branches/sdo-java-M2/sdo/tools/src/test/java/com/example/sequences/TwoRCs.java
new file mode 100644
index 0000000000..8ffc5a39af
--- /dev/null
+++ b/branches/sdo-java-M2/sdo/tools/src/test/java/com/example/sequences/TwoRCs.java
@@ -0,0 +1,154 @@
+/**
+ *
+ * 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.sequences;
+
+import commonj.sdo.Sequence;
+
+import java.util.List;
+
+/**
+ * <!-- begin-user-doc -->
+ * A representation of the model object '<em><b>Two RCs</b></em>'.
+ * <!-- end-user-doc -->
+ *
+ * <p>
+ * The following features are supported:
+ * <ul>
+ * <li>{@link com.example.sequences.TwoRCs#getGroup <em>Group</em>}</li>
+ * <li>{@link com.example.sequences.TwoRCs#getA <em>A</em>}</li>
+ * <li>{@link com.example.sequences.TwoRCs#getB <em>B</em>}</li>
+ * <li>{@link com.example.sequences.TwoRCs#getSplit <em>Split</em>}</li>
+ * <li>{@link com.example.sequences.TwoRCs#getGroup1 <em>Group1</em>}</li>
+ * <li>{@link com.example.sequences.TwoRCs#getY <em>Y</em>}</li>
+ * <li>{@link com.example.sequences.TwoRCs#getZ <em>Z</em>}</li>
+ * </ul>
+ * </p>
+ *
+ * @generated
+ */
+public interface TwoRCs
+{
+ /**
+ * Returns the value of the '<em><b>Group</b></em>' attribute list.
+ * <!-- begin-user-doc -->
+ * <p>
+ * If the meaning of the '<em>Group</em>' attribute list isn't clear,
+ * there really should be more of a description here...
+ * </p>
+ * <!-- end-user-doc -->
+ * @return the value of the '<em>Group</em>' attribute list.
+ * @generated
+ */
+ Sequence getGroup();
+
+ /**
+ * Returns the value of the '<em><b>A</b></em>' attribute list.
+ * The list contents are of type {@link java.lang.String}.
+ * <!-- begin-user-doc -->
+ * <p>
+ * If the meaning of the '<em>A</em>' attribute list isn't clear,
+ * there really should be more of a description here...
+ * </p>
+ * <!-- end-user-doc -->
+ * @return the value of the '<em>A</em>' attribute list.
+ * @generated
+ */
+ List getA();
+
+ /**
+ * Returns the value of the '<em><b>B</b></em>' attribute list.
+ * The list contents are of type {@link java.lang.Integer}.
+ * <!-- begin-user-doc -->
+ * <p>
+ * If the meaning of the '<em>B</em>' attribute list isn't clear,
+ * there really should be more of a description here...
+ * </p>
+ * <!-- end-user-doc -->
+ * @return the value of the '<em>B</em>' attribute list.
+ * @generated
+ */
+ List getB();
+
+ /**
+ * Returns the value of the '<em><b>Split</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <p>
+ * If the meaning of the '<em>Split</em>' attribute isn't clear,
+ * there really should be more of a description here...
+ * </p>
+ * <!-- end-user-doc -->
+ * @return the value of the '<em>Split</em>' attribute.
+ * @see #setSplit(String)
+ * @generated
+ */
+ String getSplit();
+
+ /**
+ * Sets the value of the '{@link com.example.sequences.TwoRCs#getSplit <em>Split</em>}' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @param value the new value of the '<em>Split</em>' attribute.
+ * @see #getSplit()
+ * @generated
+ */
+ void setSplit(String value);
+
+ /**
+ * Returns the value of the '<em><b>Group1</b></em>' attribute list.
+ * <!-- begin-user-doc -->
+ * <p>
+ * If the meaning of the '<em>Group1</em>' attribute list isn't clear,
+ * there really should be more of a description here...
+ * </p>
+ * <!-- end-user-doc -->
+ * @return the value of the '<em>Group1</em>' attribute list.
+ * @generated
+ */
+ Sequence getGroup1();
+
+ /**
+ * Returns the value of the '<em><b>Y</b></em>' attribute list.
+ * The list contents are of type {@link java.lang.String}.
+ * <!-- begin-user-doc -->
+ * <p>
+ * If the meaning of the '<em>Y</em>' attribute list isn't clear,
+ * there really should be more of a description here...
+ * </p>
+ * <!-- end-user-doc -->
+ * @return the value of the '<em>Y</em>' attribute list.
+ * @generated
+ */
+ List getY();
+
+ /**
+ * Returns the value of the '<em><b>Z</b></em>' attribute list.
+ * The list contents are of type {@link java.lang.Integer}.
+ * <!-- begin-user-doc -->
+ * <p>
+ * If the meaning of the '<em>Z</em>' attribute list isn't clear,
+ * there really should be more of a description here...
+ * </p>
+ * <!-- end-user-doc -->
+ * @return the value of the '<em>Z</em>' attribute list.
+ * @generated
+ */
+ List getZ();
+
+} // TwoRCs
diff --git a/branches/sdo-java-M2/sdo/tools/src/test/java/com/example/sequences/TwoRCsMixed.java b/branches/sdo-java-M2/sdo/tools/src/test/java/com/example/sequences/TwoRCsMixed.java
new file mode 100644
index 0000000000..ef2d776d90
--- /dev/null
+++ b/branches/sdo-java-M2/sdo/tools/src/test/java/com/example/sequences/TwoRCsMixed.java
@@ -0,0 +1,168 @@
+/**
+ *
+ * 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.sequences;
+
+import commonj.sdo.Sequence;
+
+import java.util.List;
+
+/**
+ * <!-- begin-user-doc -->
+ * A representation of the model object '<em><b>Two RCs Mixed</b></em>'.
+ * <!-- end-user-doc -->
+ *
+ * <p>
+ * The following features are supported:
+ * <ul>
+ * <li>{@link com.example.sequences.TwoRCsMixed#getMixed <em>Mixed</em>}</li>
+ * <li>{@link com.example.sequences.TwoRCsMixed#getGroup <em>Group</em>}</li>
+ * <li>{@link com.example.sequences.TwoRCsMixed#getA <em>A</em>}</li>
+ * <li>{@link com.example.sequences.TwoRCsMixed#getB <em>B</em>}</li>
+ * <li>{@link com.example.sequences.TwoRCsMixed#getSplit <em>Split</em>}</li>
+ * <li>{@link com.example.sequences.TwoRCsMixed#getGroup1 <em>Group1</em>}</li>
+ * <li>{@link com.example.sequences.TwoRCsMixed#getY <em>Y</em>}</li>
+ * <li>{@link com.example.sequences.TwoRCsMixed#getZ <em>Z</em>}</li>
+ * </ul>
+ * </p>
+ *
+ * @generated
+ */
+public interface TwoRCsMixed
+{
+ /**
+ * Returns the value of the '<em><b>Mixed</b></em>' attribute list.
+ * <!-- begin-user-doc -->
+ * <p>
+ * If the meaning of the '<em>Mixed</em>' attribute list isn't clear,
+ * there really should be more of a description here...
+ * </p>
+ * <!-- end-user-doc -->
+ * @return the value of the '<em>Mixed</em>' attribute list.
+ * @generated
+ */
+ Sequence getMixed();
+
+ /**
+ * Returns the value of the '<em><b>Group</b></em>' attribute list.
+ * <!-- begin-user-doc -->
+ * <p>
+ * If the meaning of the '<em>Group</em>' attribute list isn't clear,
+ * there really should be more of a description here...
+ * </p>
+ * <!-- end-user-doc -->
+ * @return the value of the '<em>Group</em>' attribute list.
+ * @generated
+ */
+ Sequence getGroup();
+
+ /**
+ * Returns the value of the '<em><b>A</b></em>' attribute list.
+ * The list contents are of type {@link java.lang.String}.
+ * <!-- begin-user-doc -->
+ * <p>
+ * If the meaning of the '<em>A</em>' attribute list isn't clear,
+ * there really should be more of a description here...
+ * </p>
+ * <!-- end-user-doc -->
+ * @return the value of the '<em>A</em>' attribute list.
+ * @generated
+ */
+ List getA();
+
+ /**
+ * Returns the value of the '<em><b>B</b></em>' attribute list.
+ * The list contents are of type {@link java.lang.Integer}.
+ * <!-- begin-user-doc -->
+ * <p>
+ * If the meaning of the '<em>B</em>' attribute list isn't clear,
+ * there really should be more of a description here...
+ * </p>
+ * <!-- end-user-doc -->
+ * @return the value of the '<em>B</em>' attribute list.
+ * @generated
+ */
+ List getB();
+
+ /**
+ * Returns the value of the '<em><b>Split</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <p>
+ * If the meaning of the '<em>Split</em>' attribute isn't clear,
+ * there really should be more of a description here...
+ * </p>
+ * <!-- end-user-doc -->
+ * @return the value of the '<em>Split</em>' attribute.
+ * @see #setSplit(String)
+ * @generated
+ */
+ String getSplit();
+
+ /**
+ * Sets the value of the '{@link com.example.sequences.TwoRCsMixed#getSplit <em>Split</em>}' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @param value the new value of the '<em>Split</em>' attribute.
+ * @see #getSplit()
+ * @generated
+ */
+ void setSplit(String value);
+
+ /**
+ * Returns the value of the '<em><b>Group1</b></em>' attribute list.
+ * <!-- begin-user-doc -->
+ * <p>
+ * If the meaning of the '<em>Group1</em>' attribute list isn't clear,
+ * there really should be more of a description here...
+ * </p>
+ * <!-- end-user-doc -->
+ * @return the value of the '<em>Group1</em>' attribute list.
+ * @generated
+ */
+ Sequence getGroup1();
+
+ /**
+ * Returns the value of the '<em><b>Y</b></em>' attribute list.
+ * The list contents are of type {@link java.lang.String}.
+ * <!-- begin-user-doc -->
+ * <p>
+ * If the meaning of the '<em>Y</em>' attribute list isn't clear,
+ * there really should be more of a description here...
+ * </p>
+ * <!-- end-user-doc -->
+ * @return the value of the '<em>Y</em>' attribute list.
+ * @generated
+ */
+ List getY();
+
+ /**
+ * Returns the value of the '<em><b>Z</b></em>' attribute list.
+ * The list contents are of type {@link java.lang.Integer}.
+ * <!-- begin-user-doc -->
+ * <p>
+ * If the meaning of the '<em>Z</em>' attribute list isn't clear,
+ * there really should be more of a description here...
+ * </p>
+ * <!-- end-user-doc -->
+ * @return the value of the '<em>Z</em>' attribute list.
+ * @generated
+ */
+ List getZ();
+
+} // TwoRCsMixed
diff --git a/branches/sdo-java-M2/sdo/tools/src/test/java/com/example/sequences/impl/MixedQuoteImpl.java b/branches/sdo-java-M2/sdo/tools/src/test/java/com/example/sequences/impl/MixedQuoteImpl.java
new file mode 100644
index 0000000000..be5915b1ce
--- /dev/null
+++ b/branches/sdo-java-M2/sdo/tools/src/test/java/com/example/sequences/impl/MixedQuoteImpl.java
@@ -0,0 +1,660 @@
+/**
+ *
+ * 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.sequences.impl;
+
+import com.example.sequences.MixedQuote;
+
+import commonj.sdo.Sequence;
+import commonj.sdo.Type;
+
+import commonj.sdo.helper.TypeHelper;
+
+import java.math.BigDecimal;
+
+import java.util.Collection;
+import java.util.List;
+
+import org.apache.tuscany.sdo.impl.DataObjectBase;
+
+import org.apache.tuscany.sdo.util.BasicSequence;
+
+/**
+ * <!-- begin-user-doc -->
+ * An implementation of the model object '<em><b>Mixed Quote</b></em>'.
+ * <!-- end-user-doc -->
+ * <p>
+ * The following features are implemented:
+ * <ul>
+ * <li>{@link com.example.sequences.impl.MixedQuoteImpl#getMixed <em>Mixed</em>}</li>
+ * <li>{@link com.example.sequences.impl.MixedQuoteImpl#getSymbol <em>Symbol</em>}</li>
+ * <li>{@link com.example.sequences.impl.MixedQuoteImpl#getCompanyName <em>Company Name</em>}</li>
+ * <li>{@link com.example.sequences.impl.MixedQuoteImpl#getPrice <em>Price</em>}</li>
+ * <li>{@link com.example.sequences.impl.MixedQuoteImpl#getOpen1 <em>Open1</em>}</li>
+ * <li>{@link com.example.sequences.impl.MixedQuoteImpl#getHigh <em>High</em>}</li>
+ * <li>{@link com.example.sequences.impl.MixedQuoteImpl#getLow <em>Low</em>}</li>
+ * <li>{@link com.example.sequences.impl.MixedQuoteImpl#getVolume <em>Volume</em>}</li>
+ * <li>{@link com.example.sequences.impl.MixedQuoteImpl#getChange1 <em>Change1</em>}</li>
+ * <li>{@link com.example.sequences.impl.MixedQuoteImpl#getQuotes <em>Quotes</em>}</li>
+ * </ul>
+ * </p>
+ *
+ * @generated
+ */
+public class MixedQuoteImpl extends DataObjectBase implements MixedQuote
+{
+ /**
+ * The feature id for the '<em><b>Mixed</b></em>' attribute list.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ public final static int MIXED = 0;
+
+ /**
+ * The cached value of the '{@link #getMixed() <em>Mixed</em>}' attribute list.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #getMixed()
+ * @generated
+ * @ordered
+ */
+
+ // How to get BasicSequence from Sequence?
+
+ protected BasicSequence mixed = null;
+
+ /**
+ * The feature id for the '<em><b>Symbol</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ public final static int SYMBOL = 1;
+
+ /**
+ * The default value of the '{@link #getSymbol() <em>Symbol</em>}' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #getSymbol()
+ * @generated
+ * @ordered
+ */
+ protected static final String SYMBOL_DEFAULT_ = null;
+
+ /**
+ * The feature id for the '<em><b>Company Name</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ public final static int COMPANY_NAME = 2;
+
+ /**
+ * The default value of the '{@link #getCompanyName() <em>Company Name</em>}' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #getCompanyName()
+ * @generated
+ * @ordered
+ */
+ protected static final String COMPANY_NAME_DEFAULT_ = null;
+
+ /**
+ * The feature id for the '<em><b>Price</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ public final static int PRICE = 3;
+
+ /**
+ * The default value of the '{@link #getPrice() <em>Price</em>}' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #getPrice()
+ * @generated
+ * @ordered
+ */
+ protected static final BigDecimal PRICE_DEFAULT_ = null;
+
+ /**
+ * The feature id for the '<em><b>Open1</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ public final static int OPEN1 = 4;
+
+ /**
+ * The default value of the '{@link #getOpen1() <em>Open1</em>}' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #getOpen1()
+ * @generated
+ * @ordered
+ */
+ protected static final BigDecimal OPEN1_DEFAULT_ = null;
+
+ /**
+ * The feature id for the '<em><b>High</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ public final static int HIGH = 5;
+
+ /**
+ * The default value of the '{@link #getHigh() <em>High</em>}' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #getHigh()
+ * @generated
+ * @ordered
+ */
+ protected static final BigDecimal HIGH_DEFAULT_ = null;
+
+ /**
+ * The feature id for the '<em><b>Low</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ public final static int LOW = 6;
+
+ /**
+ * The default value of the '{@link #getLow() <em>Low</em>}' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #getLow()
+ * @generated
+ * @ordered
+ */
+ protected static final BigDecimal LOW_DEFAULT_ = null;
+
+ /**
+ * The feature id for the '<em><b>Volume</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ public final static int VOLUME = 7;
+
+ /**
+ * The feature id for the '<em><b>Change1</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ public final static int CHANGE1 = 8;
+
+ /**
+ * The feature id for the '<em><b>Quotes</b></em>' containment reference list.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ public final static int QUOTES = 9;
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ protected MixedQuoteImpl()
+ {
+ super();
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public Type getType()
+ {
+ return TypeHelper.INSTANCE.getType(MixedQuote.class); //TBD Generate a more efficient implementation
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public Sequence getMixed()
+ {
+ if (mixed == null)
+ {
+ mixed = createSequence(MIXED);
+
+ }
+ return mixed;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public String getSymbol()
+ {
+ return (String)get(getMixed(), getType(), SYMBOL);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public void setSymbol(String newSymbol)
+ {
+ set(getMixed(), getType(), SYMBOL, newSymbol);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public String getCompanyName()
+ {
+ return (String)get(getMixed(), getType(), COMPANY_NAME);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public void setCompanyName(String newCompanyName)
+ {
+ set(getMixed(), getType(), COMPANY_NAME, newCompanyName);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public BigDecimal getPrice()
+ {
+ return (BigDecimal)get(getMixed(), getType(), PRICE);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public void setPrice(BigDecimal newPrice)
+ {
+ set(getMixed(), getType(), PRICE, newPrice);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public BigDecimal getOpen1()
+ {
+ return (BigDecimal)get(getMixed(), getType(), OPEN1);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public void setOpen1(BigDecimal newOpen1)
+ {
+ set(getMixed(), getType(), OPEN1, newOpen1);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public BigDecimal getHigh()
+ {
+ return (BigDecimal)get(getMixed(), getType(), HIGH);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public void setHigh(BigDecimal newHigh)
+ {
+ set(getMixed(), getType(), HIGH, newHigh);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public BigDecimal getLow()
+ {
+ return (BigDecimal)get(getMixed(), getType(), LOW);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public void setLow(BigDecimal newLow)
+ {
+ set(getMixed(), getType(), LOW, newLow);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public double getVolume()
+ {
+ return ((Double)get(getMixed(), getType(), VOLUME)).doubleValue();
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public void setVolume(double newVolume)
+ {
+ set(getMixed(), getType(), VOLUME, new Double(newVolume));
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public void unsetVolume()
+ {
+ unset(getMixed(), getType(), VOLUME);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public boolean isSetVolume()
+ {
+ return isSet(getMixed(), getType(), VOLUME);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public double getChange1()
+ {
+ return ((Double)get(getMixed(), getType(), CHANGE1)).doubleValue();
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public void setChange1(double newChange1)
+ {
+ set(getMixed(), getType(), CHANGE1, new Double(newChange1));
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public void unsetChange1()
+ {
+ unset(getMixed(), getType(), CHANGE1);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public boolean isSetChange1()
+ {
+ return isSet(getMixed(), getType(), CHANGE1);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public List getQuotes()
+ {
+ return getList(getMixed(), getType(), QUOTES);
+
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public ChangeContext inverseRemove(Object otherEnd, int propertyIndex, ChangeContext changeContext)
+ {
+ switch (propertyIndex)
+ {
+ case MIXED:
+ return removeFromSequence(getMixed(), otherEnd, changeContext);
+ case QUOTES:
+ return removeFromList(getQuotes(), otherEnd, changeContext);
+ }
+ return super.inverseRemove(otherEnd, propertyIndex, changeContext);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public Object get(int propertyIndex, boolean resolve)
+ {
+ switch (propertyIndex)
+ {
+ case MIXED:
+ // XXX query introduce coreType as an argument? -- semantic = if true -- coreType - return the core EMF object if value is a non-EMF wrapper/view
+ //if (coreType)
+ return getMixed();
+ case SYMBOL:
+ return getSymbol();
+ case COMPANY_NAME:
+ return getCompanyName();
+ case PRICE:
+ return getPrice();
+ case OPEN1:
+ return getOpen1();
+ case HIGH:
+ return getHigh();
+ case LOW:
+ return getLow();
+ case VOLUME:
+ return new Double(getVolume());
+ case CHANGE1:
+ return new Double(getChange1());
+ case QUOTES:
+ return getQuotes();
+ }
+ return super.get(propertyIndex, resolve);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public void set(int propertyIndex, Object newValue)
+ {
+ switch (propertyIndex)
+ {
+ case MIXED:
+ setSequence(getMixed(), newValue);
+ return;
+ case SYMBOL:
+ setSymbol((String)newValue);
+ return;
+ case COMPANY_NAME:
+ setCompanyName((String)newValue);
+ return;
+ case PRICE:
+ setPrice((BigDecimal)newValue);
+ return;
+ case OPEN1:
+ setOpen1((BigDecimal)newValue);
+ return;
+ case HIGH:
+ setHigh((BigDecimal)newValue);
+ return;
+ case LOW:
+ setLow((BigDecimal)newValue);
+ return;
+ case VOLUME:
+ setVolume(((Double)newValue).doubleValue());
+ return;
+ case CHANGE1:
+ setChange1(((Double)newValue).doubleValue());
+ return;
+ case QUOTES:
+ getQuotes().clear();
+ getQuotes().addAll((Collection)newValue);
+ return;
+ }
+ super.set(propertyIndex, newValue);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public void unset(int propertyIndex)
+ {
+ switch (propertyIndex)
+ {
+ case MIXED:
+ unsetSequence(getMixed());
+ return;
+ case SYMBOL:
+ setSymbol(SYMBOL_DEFAULT_);
+ return;
+ case COMPANY_NAME:
+ setCompanyName(COMPANY_NAME_DEFAULT_);
+ return;
+ case PRICE:
+ setPrice(PRICE_DEFAULT_);
+ return;
+ case OPEN1:
+ setOpen1(OPEN1_DEFAULT_);
+ return;
+ case HIGH:
+ setHigh(HIGH_DEFAULT_);
+ return;
+ case LOW:
+ setLow(LOW_DEFAULT_);
+ return;
+ case VOLUME:
+ unsetVolume();
+ return;
+ case CHANGE1:
+ unsetChange1();
+ return;
+ case QUOTES:
+ getQuotes().clear();
+ return;
+ }
+ super.unset(propertyIndex);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public boolean isSet(int propertyIndex)
+ {
+ switch (propertyIndex)
+ {
+ case MIXED:
+ // KDK - should this be !isSequenceEmpty?
+ return mixed != null && !isSequenceEmpty(getMixed());
+ case SYMBOL:
+ return SYMBOL_DEFAULT_ == null ? getSymbol() != null : !SYMBOL_DEFAULT_.equals(getSymbol());
+ case COMPANY_NAME:
+ return COMPANY_NAME_DEFAULT_ == null ? getCompanyName() != null : !COMPANY_NAME_DEFAULT_.equals(getCompanyName());
+ case PRICE:
+ return PRICE_DEFAULT_ == null ? getPrice() != null : !PRICE_DEFAULT_.equals(getPrice());
+ case OPEN1:
+ return OPEN1_DEFAULT_ == null ? getOpen1() != null : !OPEN1_DEFAULT_.equals(getOpen1());
+ case HIGH:
+ return HIGH_DEFAULT_ == null ? getHigh() != null : !HIGH_DEFAULT_.equals(getHigh());
+ case LOW:
+ return LOW_DEFAULT_ == null ? getLow() != null : !LOW_DEFAULT_.equals(getLow());
+ case VOLUME:
+ return isSetVolume();
+ case CHANGE1:
+ return isSetChange1();
+ case QUOTES:
+ return !getQuotes().isEmpty();
+ }
+ return super.isSet(propertyIndex);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public String toString()
+ {
+ if (isProxy()) return super.toString();
+
+ StringBuffer result = new StringBuffer(super.toString());
+ result.append(" (mixed: ");
+ result.append(mixed);
+ result.append(')');
+ return result.toString();
+ }
+
+} //MixedQuoteImpl
diff --git a/branches/sdo-java-M2/sdo/tools/src/test/java/com/example/sequences/impl/MixedRepeatingChoiceImpl.java b/branches/sdo-java-M2/sdo/tools/src/test/java/com/example/sequences/impl/MixedRepeatingChoiceImpl.java
new file mode 100644
index 0000000000..e2a49f12f2
--- /dev/null
+++ b/branches/sdo-java-M2/sdo/tools/src/test/java/com/example/sequences/impl/MixedRepeatingChoiceImpl.java
@@ -0,0 +1,302 @@
+/**
+ *
+ * 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.sequences.impl;
+
+import com.example.sequences.MixedRepeatingChoice;
+
+import commonj.sdo.Sequence;
+import commonj.sdo.Type;
+
+import commonj.sdo.helper.TypeHelper;
+
+import java.util.Collection;
+import java.util.List;
+
+import org.apache.tuscany.sdo.impl.DataObjectBase;
+
+import org.apache.tuscany.sdo.util.BasicSequence;
+
+/**
+ * <!-- begin-user-doc -->
+ * An implementation of the model object '<em><b>Mixed Repeating Choice</b></em>'.
+ * <!-- end-user-doc -->
+ * <p>
+ * The following features are implemented:
+ * <ul>
+ * <li>{@link com.example.sequences.impl.MixedRepeatingChoiceImpl#getMixed <em>Mixed</em>}</li>
+ * <li>{@link com.example.sequences.impl.MixedRepeatingChoiceImpl#getGroup <em>Group</em>}</li>
+ * <li>{@link com.example.sequences.impl.MixedRepeatingChoiceImpl#getA <em>A</em>}</li>
+ * <li>{@link com.example.sequences.impl.MixedRepeatingChoiceImpl#getB <em>B</em>}</li>
+ * </ul>
+ * </p>
+ *
+ * @generated
+ */
+public class MixedRepeatingChoiceImpl extends DataObjectBase implements MixedRepeatingChoice
+{
+ /**
+ * The feature id for the '<em><b>Mixed</b></em>' attribute list.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ public final static int MIXED = 0;
+
+ /**
+ * The cached value of the '{@link #getMixed() <em>Mixed</em>}' attribute list.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #getMixed()
+ * @generated
+ * @ordered
+ */
+
+ // How to get BasicSequence from Sequence?
+
+ protected BasicSequence mixed = null;
+
+ /**
+ * The feature id for the '<em><b>Group</b></em>' attribute list.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ public final static int GROUP = 1;
+
+ /**
+ * The feature id for the '<em><b>A</b></em>' attribute list.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ public final static int A = 2;
+
+ /**
+ * The feature id for the '<em><b>B</b></em>' attribute list.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ public final static int B = 3;
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ protected MixedRepeatingChoiceImpl()
+ {
+ super();
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public Type getType()
+ {
+ return TypeHelper.INSTANCE.getType(MixedRepeatingChoice.class); //TBD Generate a more efficient implementation
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public Sequence getMixed()
+ {
+ if (mixed == null)
+ {
+ mixed = createSequence(MIXED);
+
+ }
+ return mixed;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public Sequence getGroup()
+ {
+ return createSequence(getMixed(), getType(), GROUP);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public List getA()
+ {
+ return getList(getGroup(), getType(), A);
+
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public List getB()
+ {
+ return getList(getGroup(), getType(), B);
+
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public ChangeContext inverseRemove(Object otherEnd, int propertyIndex, ChangeContext changeContext)
+ {
+ switch (propertyIndex)
+ {
+ case MIXED:
+ return removeFromSequence(getMixed(), otherEnd, changeContext);
+ case GROUP:
+ return removeFromSequence(getGroup(), otherEnd, changeContext);
+ }
+ return super.inverseRemove(otherEnd, propertyIndex, changeContext);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public Object get(int propertyIndex, boolean resolve)
+ {
+ switch (propertyIndex)
+ {
+ case MIXED:
+ // XXX query introduce coreType as an argument? -- semantic = if true -- coreType - return the core EMF object if value is a non-EMF wrapper/view
+ //if (coreType)
+ return getMixed();
+ case GROUP:
+ // XXX query introduce coreType as an argument? -- semantic = if true -- coreType - return the core EMF object if value is a non-EMF wrapper/view
+ //if (coreType)
+ return getGroup();
+ case A:
+ return getA();
+ case B:
+ return getB();
+ }
+ return super.get(propertyIndex, resolve);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public void set(int propertyIndex, Object newValue)
+ {
+ switch (propertyIndex)
+ {
+ case MIXED:
+ setSequence(getMixed(), newValue);
+ return;
+ case GROUP:
+ setSequence(getGroup(), newValue);
+ return;
+ case A:
+ getA().clear();
+ getA().addAll((Collection)newValue);
+ return;
+ case B:
+ getB().clear();
+ getB().addAll((Collection)newValue);
+ return;
+ }
+ super.set(propertyIndex, newValue);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public void unset(int propertyIndex)
+ {
+ switch (propertyIndex)
+ {
+ case MIXED:
+ unsetSequence(getMixed());
+ return;
+ case GROUP:
+ unsetSequence(getGroup());
+ return;
+ case A:
+ getA().clear();
+ return;
+ case B:
+ getB().clear();
+ return;
+ }
+ super.unset(propertyIndex);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public boolean isSet(int propertyIndex)
+ {
+ switch (propertyIndex)
+ {
+ case MIXED:
+ // KDK - should this be !isSequenceEmpty?
+ return mixed != null && !isSequenceEmpty(getMixed());
+ case GROUP:
+ return !isSequenceEmpty(getGroup());
+ case A:
+ return !getA().isEmpty();
+ case B:
+ return !getB().isEmpty();
+ }
+ return super.isSet(propertyIndex);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public String toString()
+ {
+ if (isProxy()) return super.toString();
+
+ StringBuffer result = new StringBuffer(super.toString());
+ result.append(" (mixed: ");
+ result.append(mixed);
+ result.append(')');
+ return result.toString();
+ }
+
+} //MixedRepeatingChoiceImpl
diff --git a/branches/sdo-java-M2/sdo/tools/src/test/java/com/example/sequences/impl/RepeatingChoiceImpl.java b/branches/sdo-java-M2/sdo/tools/src/test/java/com/example/sequences/impl/RepeatingChoiceImpl.java
new file mode 100644
index 0000000000..addcb5b246
--- /dev/null
+++ b/branches/sdo-java-M2/sdo/tools/src/test/java/com/example/sequences/impl/RepeatingChoiceImpl.java
@@ -0,0 +1,268 @@
+/**
+ *
+ * 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.sequences.impl;
+
+import com.example.sequences.RepeatingChoice;
+
+import commonj.sdo.Sequence;
+import commonj.sdo.Type;
+
+import commonj.sdo.helper.TypeHelper;
+
+import java.util.Collection;
+import java.util.List;
+
+import org.apache.tuscany.sdo.impl.DataObjectBase;
+
+import org.apache.tuscany.sdo.util.BasicSequence;
+
+/**
+ * <!-- begin-user-doc -->
+ * An implementation of the model object '<em><b>Repeating Choice</b></em>'.
+ * <!-- end-user-doc -->
+ * <p>
+ * The following features are implemented:
+ * <ul>
+ * <li>{@link com.example.sequences.impl.RepeatingChoiceImpl#getGroup <em>Group</em>}</li>
+ * <li>{@link com.example.sequences.impl.RepeatingChoiceImpl#getA <em>A</em>}</li>
+ * <li>{@link com.example.sequences.impl.RepeatingChoiceImpl#getB <em>B</em>}</li>
+ * </ul>
+ * </p>
+ *
+ * @generated
+ */
+public class RepeatingChoiceImpl extends DataObjectBase implements RepeatingChoice
+{
+ /**
+ * The feature id for the '<em><b>Group</b></em>' attribute list.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ public final static int GROUP = 0;
+
+ /**
+ * The cached value of the '{@link #getGroup() <em>Group</em>}' attribute list.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #getGroup()
+ * @generated
+ * @ordered
+ */
+
+ // How to get BasicSequence from Sequence?
+
+ protected BasicSequence group = null;
+
+ /**
+ * The feature id for the '<em><b>A</b></em>' attribute list.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ public final static int A = 1;
+
+ /**
+ * The feature id for the '<em><b>B</b></em>' attribute list.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ public final static int B = 2;
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ protected RepeatingChoiceImpl()
+ {
+ super();
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public Type getType()
+ {
+ return TypeHelper.INSTANCE.getType(RepeatingChoice.class); //TBD Generate a more efficient implementation
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public Sequence getGroup()
+ {
+ if (group == null)
+ {
+ group = createSequence(GROUP);
+
+ }
+ return group;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public List getA()
+ {
+ return getList(getGroup(), getType(), A);
+
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public List getB()
+ {
+ return getList(getGroup(), getType(), B);
+
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public ChangeContext inverseRemove(Object otherEnd, int propertyIndex, ChangeContext changeContext)
+ {
+ switch (propertyIndex)
+ {
+ case GROUP:
+ return removeFromSequence(getGroup(), otherEnd, changeContext);
+ }
+ return super.inverseRemove(otherEnd, propertyIndex, changeContext);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public Object get(int propertyIndex, boolean resolve)
+ {
+ switch (propertyIndex)
+ {
+ case GROUP:
+ // XXX query introduce coreType as an argument? -- semantic = if true -- coreType - return the core EMF object if value is a non-EMF wrapper/view
+ //if (coreType)
+ return getGroup();
+ case A:
+ return getA();
+ case B:
+ return getB();
+ }
+ return super.get(propertyIndex, resolve);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public void set(int propertyIndex, Object newValue)
+ {
+ switch (propertyIndex)
+ {
+ case GROUP:
+ setSequence(getGroup(), newValue);
+ return;
+ case A:
+ getA().clear();
+ getA().addAll((Collection)newValue);
+ return;
+ case B:
+ getB().clear();
+ getB().addAll((Collection)newValue);
+ return;
+ }
+ super.set(propertyIndex, newValue);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public void unset(int propertyIndex)
+ {
+ switch (propertyIndex)
+ {
+ case GROUP:
+ unsetSequence(getGroup());
+ return;
+ case A:
+ getA().clear();
+ return;
+ case B:
+ getB().clear();
+ return;
+ }
+ super.unset(propertyIndex);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public boolean isSet(int propertyIndex)
+ {
+ switch (propertyIndex)
+ {
+ case GROUP:
+ // KDK - should this be !isSequenceEmpty?
+ return group != null && !isSequenceEmpty(getGroup());
+ case A:
+ return !getA().isEmpty();
+ case B:
+ return !getB().isEmpty();
+ }
+ return super.isSet(propertyIndex);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public String toString()
+ {
+ if (isProxy()) return super.toString();
+
+ StringBuffer result = new StringBuffer(super.toString());
+ result.append(" (group: ");
+ result.append(group);
+ result.append(')');
+ return result.toString();
+ }
+
+} //RepeatingChoiceImpl
diff --git a/branches/sdo-java-M2/sdo/tools/src/test/java/com/example/sequences/impl/SequencesFactoryImpl.java b/branches/sdo-java-M2/sdo/tools/src/test/java/com/example/sequences/impl/SequencesFactoryImpl.java
new file mode 100644
index 0000000000..f558c6d5c7
--- /dev/null
+++ b/branches/sdo-java-M2/sdo/tools/src/test/java/com/example/sequences/impl/SequencesFactoryImpl.java
@@ -0,0 +1,695 @@
+/**
+ *
+ * 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.sequences.impl;
+
+import org.apache.tuscany.sdo.impl.FactoryBase;
+import org.apache.tuscany.sdo.impl.SDOFactoryImpl;
+import org.apache.tuscany.sdo.model.impl.ModelFactoryImpl;
+import org.apache.tuscany.sdo.model.impl.ModelPackageImpl;
+import org.apache.tuscany.sdo.util.SDOUtil;
+
+import com.example.sequences.MixedQuote;
+import com.example.sequences.MixedRepeatingChoice;
+import com.example.sequences.RepeatingChoice;
+import com.example.sequences.SequencesFactory;
+import com.example.sequences.TwoRCs;
+import com.example.sequences.TwoRCsMixed;
+import commonj.sdo.DataObject;
+import commonj.sdo.Property;
+import commonj.sdo.Type;
+
+/**
+ * <!-- begin-user-doc -->
+ * An implementation of the model <b>Factory</b>.
+ * <!-- end-user-doc -->
+ * @generated
+ */
+public class SequencesFactoryImpl extends FactoryBase implements SequencesFactory
+{
+
+/**
+ * The package namespace URI.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+public static final String NAMESPACE_URI = "http://www.example.com/sequences";
+
+/**
+ * The package namespace name.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+public static final String NAMESPACE_PREFIX = "sequences";
+
+
+public static final int MIXED_QUOTE = 1;
+public static final int MIXED_REPEATING_CHOICE = 2;
+public static final int REPEATING_CHOICE = 3;
+public static final int TWO_RCS = 4;
+public static final int TWO_RCS_MIXED = 5;
+
+
+ /**
+ * Creates the default factory implementation.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+
+ /**
+ * Creates an instance of the factory.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public SequencesFactoryImpl()
+ {
+ super(NAMESPACE_URI, NAMESPACE_PREFIX);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public DataObject create(int typeNumber)
+ {
+ switch (typeNumber)
+ {
+ // TODO make sure we're supposed to ingore DOCUMENT_ROOT
+ case MIXED_QUOTE: return (DataObject)createMixedQuote();
+ // TODO make sure we're supposed to ingore DOCUMENT_ROOT
+ case MIXED_REPEATING_CHOICE: return (DataObject)createMixedRepeatingChoice();
+ // TODO make sure we're supposed to ingore DOCUMENT_ROOT
+ case REPEATING_CHOICE: return (DataObject)createRepeatingChoice();
+ // TODO make sure we're supposed to ingore DOCUMENT_ROOT
+ case TWO_RCS: return (DataObject)createTwoRCs();
+ // TODO make sure we're supposed to ingore DOCUMENT_ROOT
+ case TWO_RCS_MIXED: return (DataObject)createTwoRCsMixed();
+ default:
+ return super.create(typeNumber);
+ }
+ }
+
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public MixedQuote createMixedQuote()
+ {
+ MixedQuoteImpl mixedQuote = new MixedQuoteImpl();
+ return mixedQuote;
+ }
+
+ // Following creates and initializes SDO metadata for the supported types.
+ protected Type mixedQuoteType = null;
+
+ public Type getMixedQuote()
+ {
+ // TODO - kdk - verify how to generate quoteType...mixedQuoteType?
+ return mixedQuoteType;
+ }
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public MixedRepeatingChoice createMixedRepeatingChoice()
+ {
+ MixedRepeatingChoiceImpl mixedRepeatingChoice = new MixedRepeatingChoiceImpl();
+ return mixedRepeatingChoice;
+ }
+
+ // Following creates and initializes SDO metadata for the supported types.
+ protected Type mixedRepeatingChoiceType = null;
+
+ public Type getMixedRepeatingChoice()
+ {
+ // TODO - kdk - verify how to generate quoteType...mixedRepeatingChoiceType?
+ return mixedRepeatingChoiceType;
+ }
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public RepeatingChoice createRepeatingChoice()
+ {
+ RepeatingChoiceImpl repeatingChoice = new RepeatingChoiceImpl();
+ return repeatingChoice;
+ }
+
+ // Following creates and initializes SDO metadata for the supported types.
+ protected Type repeatingChoiceType = null;
+
+ public Type getRepeatingChoice()
+ {
+ // TODO - kdk - verify how to generate quoteType...repeatingChoiceType?
+ return repeatingChoiceType;
+ }
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public TwoRCs createTwoRCs()
+ {
+ TwoRCsImpl twoRCs = new TwoRCsImpl();
+ return twoRCs;
+ }
+
+ // Following creates and initializes SDO metadata for the supported types.
+ protected Type twoRCsType = null;
+
+ public Type getTwoRCs()
+ {
+ // TODO - kdk - verify how to generate quoteType...twoRCsType?
+ return twoRCsType;
+ }
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public TwoRCsMixed createTwoRCsMixed()
+ {
+ TwoRCsMixedImpl twoRCsMixed = new TwoRCsMixedImpl();
+ return twoRCsMixed;
+ }
+
+ // Following creates and initializes SDO metadata for the supported types.
+ protected Type twoRCsMixedType = null;
+
+ public Type getTwoRCsMixed()
+ {
+ // TODO - kdk - verify how to generate quoteType...twoRCsMixedType?
+ return twoRCsMixedType;
+ }
+
+ private static boolean isInited = false;
+
+ public static SequencesFactoryImpl init()
+ {
+ if (isInited) return (SequencesFactoryImpl)FactoryBase.getStaticFactory(SequencesFactoryImpl.NAMESPACE_URI);
+ SequencesFactoryImpl theSequencesFactoryImpl = new SequencesFactoryImpl();
+ isInited = true;
+
+ // Initialize simple dependencies
+ SDOUtil.registerStaticTypes(SDOFactoryImpl.class);
+ SDOUtil.registerStaticTypes(ModelPackageImpl.class);
+
+ // Create package meta-data objects
+ theSequencesFactoryImpl.createMetaData();
+
+ // Initialize created meta-data
+ theSequencesFactoryImpl.initializeMetaData();
+
+ // Mark meta-data to indicate it can't be changed
+ //theSequencesFactoryImpl.freeze(); //FB do we need to freeze / should we freeze ????
+
+ return theSequencesFactoryImpl;
+ }
+
+ private boolean isCreated = false;
+
+ public void createMetaData()
+ {
+ if (isCreated) return;
+ isCreated = true;
+
+
+ mixedQuoteType = createType(false, MIXED_QUOTE);
+ createProperty(true, mixedQuoteType, MixedQuoteImpl.MIXED);
+ createProperty(true, mixedQuoteType, MixedQuoteImpl.SYMBOL);
+ createProperty(true, mixedQuoteType, MixedQuoteImpl.COMPANY_NAME);
+ createProperty(true, mixedQuoteType, MixedQuoteImpl.PRICE);
+ createProperty(true, mixedQuoteType, MixedQuoteImpl.OPEN1);
+ createProperty(true, mixedQuoteType, MixedQuoteImpl.HIGH);
+ createProperty(true, mixedQuoteType, MixedQuoteImpl.LOW);
+ createProperty(true, mixedQuoteType, MixedQuoteImpl.VOLUME);
+ createProperty(true, mixedQuoteType, MixedQuoteImpl.CHANGE1);
+ createProperty(false, mixedQuoteType, MixedQuoteImpl.QUOTES);
+
+ mixedRepeatingChoiceType = createType(false, MIXED_REPEATING_CHOICE);
+ createProperty(true, mixedRepeatingChoiceType, MixedRepeatingChoiceImpl.MIXED);
+ createProperty(true, mixedRepeatingChoiceType, MixedRepeatingChoiceImpl.GROUP);
+ createProperty(true, mixedRepeatingChoiceType, MixedRepeatingChoiceImpl.A);
+ createProperty(true, mixedRepeatingChoiceType, MixedRepeatingChoiceImpl.B);
+
+ repeatingChoiceType = createType(false, REPEATING_CHOICE);
+ createProperty(true, repeatingChoiceType, RepeatingChoiceImpl.GROUP);
+ createProperty(true, repeatingChoiceType, RepeatingChoiceImpl.A);
+ createProperty(true, repeatingChoiceType, RepeatingChoiceImpl.B);
+
+ twoRCsType = createType(false, TWO_RCS);
+ createProperty(true, twoRCsType, TwoRCsImpl.GROUP);
+ createProperty(true, twoRCsType, TwoRCsImpl.A);
+ createProperty(true, twoRCsType, TwoRCsImpl.B);
+ createProperty(true, twoRCsType, TwoRCsImpl.SPLIT);
+ createProperty(true, twoRCsType, TwoRCsImpl.GROUP1);
+ createProperty(true, twoRCsType, TwoRCsImpl.Y);
+ createProperty(true, twoRCsType, TwoRCsImpl.Z);
+
+ twoRCsMixedType = createType(false, TWO_RCS_MIXED);
+ createProperty(true, twoRCsMixedType, TwoRCsMixedImpl.MIXED);
+ createProperty(true, twoRCsMixedType, TwoRCsMixedImpl.GROUP);
+ createProperty(true, twoRCsMixedType, TwoRCsMixedImpl.A);
+ createProperty(true, twoRCsMixedType, TwoRCsMixedImpl.B);
+ createProperty(true, twoRCsMixedType, TwoRCsMixedImpl.SPLIT);
+ createProperty(true, twoRCsMixedType, TwoRCsMixedImpl.GROUP1);
+ createProperty(true, twoRCsMixedType, TwoRCsMixedImpl.Y);
+ createProperty(true, twoRCsMixedType, TwoRCsMixedImpl.Z);
+ }
+ private boolean isInitialized = false;
+
+ public void initializeMetaData()
+ {
+ if (isInitialized) return;
+ isInitialized = true;
+
+ // Obtain other dependent packages
+ ModelFactoryImpl theModelPackageImpl = (ModelFactoryImpl)FactoryBase.getStaticFactory(ModelFactoryImpl.NAMESPACE_URI);
+
+ // Add supertypes to classes
+ // Initialize classes and features; add operations and parameters
+
+ initializeType(mixedQuoteType, MixedQuote.class, "MixedQuote");
+ initializeProperty((Property)mixedQuoteType.getProperties().get(MixedQuoteImpl.MIXED), getSequence(), "mixed", null, 0, -1, MixedQuote.class, false, false, false);
+ initializeProperty((Property)mixedQuoteType.getProperties().get(MixedQuoteImpl.SYMBOL), theModelPackageImpl.getString(), "symbol", null, 1, 1, MixedQuote.class, false, false, true);
+ initializeProperty((Property)mixedQuoteType.getProperties().get(MixedQuoteImpl.COMPANY_NAME), theModelPackageImpl.getString(), "companyName", null, 1, 1, MixedQuote.class, false, false, true);
+ initializeProperty((Property)mixedQuoteType.getProperties().get(MixedQuoteImpl.PRICE), theModelPackageImpl.getDecimal(), "price", null, 1, 1, MixedQuote.class, false, false, true);
+ initializeProperty((Property)mixedQuoteType.getProperties().get(MixedQuoteImpl.OPEN1), theModelPackageImpl.getDecimal(), "open1", null, 1, 1, MixedQuote.class, false, false, true);
+ initializeProperty((Property)mixedQuoteType.getProperties().get(MixedQuoteImpl.HIGH), theModelPackageImpl.getDecimal(), "high", null, 1, 1, MixedQuote.class, false, false, true);
+ initializeProperty((Property)mixedQuoteType.getProperties().get(MixedQuoteImpl.LOW), theModelPackageImpl.getDecimal(), "low", null, 1, 1, MixedQuote.class, false, false, true);
+ initializeProperty((Property)mixedQuoteType.getProperties().get(MixedQuoteImpl.VOLUME), theModelPackageImpl.getDouble(), "volume", null, 1, 1, MixedQuote.class, false, true, true);
+ initializeProperty((Property)mixedQuoteType.getProperties().get(MixedQuoteImpl.CHANGE1), theModelPackageImpl.getDouble(), "change1", null, 1, 1, MixedQuote.class, false, true, true);
+ initializeProperty((Property)mixedQuoteType.getProperties().get(MixedQuoteImpl.QUOTES), this.getMixedQuote(), "quotes", null, 0, -1, MixedQuote.class, false, false, true, true , null);
+
+ initializeType(mixedRepeatingChoiceType, MixedRepeatingChoice.class, "MixedRepeatingChoice");
+ initializeProperty((Property)mixedRepeatingChoiceType.getProperties().get(MixedRepeatingChoiceImpl.MIXED), getSequence(), "mixed", null, 0, -1, MixedRepeatingChoice.class, false, false, false);
+ initializeProperty((Property)mixedRepeatingChoiceType.getProperties().get(MixedRepeatingChoiceImpl.GROUP), getSequence(), "group", null, 0, -1, MixedRepeatingChoice.class, false, false, true);
+ initializeProperty((Property)mixedRepeatingChoiceType.getProperties().get(MixedRepeatingChoiceImpl.A), theModelPackageImpl.getString(), "a", null, 0, -1, MixedRepeatingChoice.class, false, false, true);
+ initializeProperty((Property)mixedRepeatingChoiceType.getProperties().get(MixedRepeatingChoiceImpl.B), theModelPackageImpl.getInt(), "b", null, 0, -1, MixedRepeatingChoice.class, false, false, true);
+
+ initializeType(repeatingChoiceType, RepeatingChoice.class, "RepeatingChoice");
+ initializeProperty((Property)repeatingChoiceType.getProperties().get(RepeatingChoiceImpl.GROUP), getSequence(), "group", null, 0, -1, RepeatingChoice.class, false, false, false);
+ initializeProperty((Property)repeatingChoiceType.getProperties().get(RepeatingChoiceImpl.A), theModelPackageImpl.getString(), "a", null, 0, -1, RepeatingChoice.class, false, false, true);
+ initializeProperty((Property)repeatingChoiceType.getProperties().get(RepeatingChoiceImpl.B), theModelPackageImpl.getInt(), "b", null, 0, -1, RepeatingChoice.class, false, false, true);
+
+ initializeType(twoRCsType, TwoRCs.class, "TwoRCs");
+ initializeProperty((Property)twoRCsType.getProperties().get(TwoRCsImpl.GROUP), getSequence(), "group", null, 0, -1, TwoRCs.class, false, false, false);
+ initializeProperty((Property)twoRCsType.getProperties().get(TwoRCsImpl.A), theModelPackageImpl.getString(), "a", null, 0, -1, TwoRCs.class, false, false, true);
+ initializeProperty((Property)twoRCsType.getProperties().get(TwoRCsImpl.B), theModelPackageImpl.getInt(), "b", null, 0, -1, TwoRCs.class, false, false, true);
+ initializeProperty((Property)twoRCsType.getProperties().get(TwoRCsImpl.SPLIT), theModelPackageImpl.getString(), "split", null, 1, 1, TwoRCs.class, false, false, false);
+ initializeProperty((Property)twoRCsType.getProperties().get(TwoRCsImpl.GROUP1), getSequence(), "group1", null, 0, -1, TwoRCs.class, false, false, false);
+ initializeProperty((Property)twoRCsType.getProperties().get(TwoRCsImpl.Y), theModelPackageImpl.getString(), "y", null, 0, -1, TwoRCs.class, false, false, true);
+ initializeProperty((Property)twoRCsType.getProperties().get(TwoRCsImpl.Z), theModelPackageImpl.getInt(), "z", null, 0, -1, TwoRCs.class, false, false, true);
+
+ initializeType(twoRCsMixedType, TwoRCsMixed.class, "TwoRCsMixed");
+ initializeProperty((Property)twoRCsMixedType.getProperties().get(TwoRCsMixedImpl.MIXED), getSequence(), "mixed", null, 0, -1, TwoRCsMixed.class, false, false, false);
+ initializeProperty((Property)twoRCsMixedType.getProperties().get(TwoRCsMixedImpl.GROUP), getSequence(), "group", null, 0, -1, TwoRCsMixed.class, false, false, true);
+ initializeProperty((Property)twoRCsMixedType.getProperties().get(TwoRCsMixedImpl.A), theModelPackageImpl.getString(), "a", null, 0, -1, TwoRCsMixed.class, false, false, true);
+ initializeProperty((Property)twoRCsMixedType.getProperties().get(TwoRCsMixedImpl.B), theModelPackageImpl.getInt(), "b", null, 0, -1, TwoRCsMixed.class, false, false, true);
+ initializeProperty((Property)twoRCsMixedType.getProperties().get(TwoRCsMixedImpl.SPLIT), theModelPackageImpl.getString(), "split", null, 1, 1, TwoRCsMixed.class, false, false, true);
+ initializeProperty((Property)twoRCsMixedType.getProperties().get(TwoRCsMixedImpl.GROUP1), getSequence(), "group1", null, 0, -1, TwoRCsMixed.class, false, false, true);
+ initializeProperty((Property)twoRCsMixedType.getProperties().get(TwoRCsMixedImpl.Y), theModelPackageImpl.getString(), "y", null, 0, -1, TwoRCsMixed.class, false, false, true);
+ initializeProperty((Property)twoRCsMixedType.getProperties().get(TwoRCsMixedImpl.Z), theModelPackageImpl.getInt(), "z", null, 0, -1, TwoRCsMixed.class, false, false, true);createXSDMetaData();
+ }
+
+ protected void createXSDMetaData()
+ {
+ super.createXSDMetaData();
+ // TODO - kdk - is the order right? should kind, elementOnly be first
+ addXSDMapping
+ (mixedQuoteType,
+ new String[]
+ {
+ "name", "MixedQuote",
+ "kind", "elementOnly"
+ });
+ addXSDMapping
+ ((Property)mixedQuoteType.getProperties().get(MixedQuoteImpl.MIXED),
+ new String[]
+ {
+ "kind", "element",
+ "name", "mixed"
+ });
+
+ addXSDMapping
+ ((Property)mixedQuoteType.getProperties().get(MixedQuoteImpl.SYMBOL),
+ new String[]
+ {
+ "kind", "element",
+ "name", "symbol"
+ });
+
+ addXSDMapping
+ ((Property)mixedQuoteType.getProperties().get(MixedQuoteImpl.COMPANY_NAME),
+ new String[]
+ {
+ "kind", "element",
+ "name", "companyName"
+ });
+
+ addXSDMapping
+ ((Property)mixedQuoteType.getProperties().get(MixedQuoteImpl.PRICE),
+ new String[]
+ {
+ "kind", "element",
+ "name", "price"
+ });
+
+ addXSDMapping
+ ((Property)mixedQuoteType.getProperties().get(MixedQuoteImpl.OPEN1),
+ new String[]
+ {
+ "kind", "element",
+ "name", "open1"
+ });
+
+ addXSDMapping
+ ((Property)mixedQuoteType.getProperties().get(MixedQuoteImpl.HIGH),
+ new String[]
+ {
+ "kind", "element",
+ "name", "high"
+ });
+
+ addXSDMapping
+ ((Property)mixedQuoteType.getProperties().get(MixedQuoteImpl.LOW),
+ new String[]
+ {
+ "kind", "element",
+ "name", "low"
+ });
+
+ addXSDMapping
+ ((Property)mixedQuoteType.getProperties().get(MixedQuoteImpl.VOLUME),
+ new String[]
+ {
+ "kind", "element",
+ "name", "volume"
+ });
+
+ addXSDMapping
+ ((Property)mixedQuoteType.getProperties().get(MixedQuoteImpl.CHANGE1),
+ new String[]
+ {
+ "kind", "element",
+ "name", "change1"
+ });
+
+ addXSDMapping
+ ((Property)mixedQuoteType.getProperties().get(MixedQuoteImpl.QUOTES),
+ new String[]
+ {
+ "kind", "element",
+ "name", "quotes"
+ });
+
+ // TODO - kdk - is the order right? should kind, elementOnly be first
+ addXSDMapping
+ (mixedRepeatingChoiceType,
+ new String[]
+ {
+ "name", "MixedRepeatingChoice",
+ "kind", "elementOnly"
+ });
+ addXSDMapping
+ ((Property)mixedRepeatingChoiceType.getProperties().get(MixedRepeatingChoiceImpl.MIXED),
+ new String[]
+ {
+ "kind", "element",
+ "name", "mixed"
+ });
+
+ addXSDMapping
+ ((Property)mixedRepeatingChoiceType.getProperties().get(MixedRepeatingChoiceImpl.GROUP),
+ new String[]
+ {
+ "kind", "element",
+ "name", "group"
+ });
+
+ addXSDMapping
+ ((Property)mixedRepeatingChoiceType.getProperties().get(MixedRepeatingChoiceImpl.A),
+ new String[]
+ {
+ "kind", "element",
+ "name", "a"
+ });
+
+ addXSDMapping
+ ((Property)mixedRepeatingChoiceType.getProperties().get(MixedRepeatingChoiceImpl.B),
+ new String[]
+ {
+ "kind", "element",
+ "name", "b"
+ });
+
+ // TODO - kdk - is the order right? should kind, elementOnly be first
+ addXSDMapping
+ (repeatingChoiceType,
+ new String[]
+ {
+ "name", "RepeatingChoice",
+ "kind", "elementOnly"
+ });
+ addXSDMapping
+ ((Property)repeatingChoiceType.getProperties().get(RepeatingChoiceImpl.GROUP),
+ new String[]
+ {
+ "kind", "element",
+ "name", "group"
+ });
+
+ addXSDMapping
+ ((Property)repeatingChoiceType.getProperties().get(RepeatingChoiceImpl.A),
+ new String[]
+ {
+ "kind", "element",
+ "name", "a"
+ });
+
+ addXSDMapping
+ ((Property)repeatingChoiceType.getProperties().get(RepeatingChoiceImpl.B),
+ new String[]
+ {
+ "kind", "element",
+ "name", "b"
+ });
+
+ // TODO - kdk - is the order right? should kind, elementOnly be first
+ addXSDMapping
+ (twoRCsType,
+ new String[]
+ {
+ "name", "TwoRCs",
+ "kind", "elementOnly"
+ });
+ addXSDMapping
+ ((Property)twoRCsType.getProperties().get(TwoRCsImpl.GROUP),
+ new String[]
+ {
+ "kind", "element",
+ "name", "group"
+ });
+
+ addXSDMapping
+ ((Property)twoRCsType.getProperties().get(TwoRCsImpl.A),
+ new String[]
+ {
+ "kind", "element",
+ "name", "a"
+ });
+
+ addXSDMapping
+ ((Property)twoRCsType.getProperties().get(TwoRCsImpl.B),
+ new String[]
+ {
+ "kind", "element",
+ "name", "b"
+ });
+
+ addXSDMapping
+ ((Property)twoRCsType.getProperties().get(TwoRCsImpl.SPLIT),
+ new String[]
+ {
+ "kind", "element",
+ "name", "split"
+ });
+
+ addXSDMapping
+ ((Property)twoRCsType.getProperties().get(TwoRCsImpl.GROUP1),
+ new String[]
+ {
+ "kind", "element",
+ "name", "group1"
+ });
+
+ addXSDMapping
+ ((Property)twoRCsType.getProperties().get(TwoRCsImpl.Y),
+ new String[]
+ {
+ "kind", "element",
+ "name", "y"
+ });
+
+ addXSDMapping
+ ((Property)twoRCsType.getProperties().get(TwoRCsImpl.Z),
+ new String[]
+ {
+ "kind", "element",
+ "name", "z"
+ });
+
+ // TODO - kdk - is the order right? should kind, elementOnly be first
+ addXSDMapping
+ (twoRCsMixedType,
+ new String[]
+ {
+ "name", "TwoRCsMixed",
+ "kind", "elementOnly"
+ });
+ addXSDMapping
+ ((Property)twoRCsMixedType.getProperties().get(TwoRCsMixedImpl.MIXED),
+ new String[]
+ {
+ "kind", "element",
+ "name", "mixed"
+ });
+
+ addXSDMapping
+ ((Property)twoRCsMixedType.getProperties().get(TwoRCsMixedImpl.GROUP),
+ new String[]
+ {
+ "kind", "element",
+ "name", "group"
+ });
+
+ addXSDMapping
+ ((Property)twoRCsMixedType.getProperties().get(TwoRCsMixedImpl.A),
+ new String[]
+ {
+ "kind", "element",
+ "name", "a"
+ });
+
+ addXSDMapping
+ ((Property)twoRCsMixedType.getProperties().get(TwoRCsMixedImpl.B),
+ new String[]
+ {
+ "kind", "element",
+ "name", "b"
+ });
+
+ addXSDMapping
+ ((Property)twoRCsMixedType.getProperties().get(TwoRCsMixedImpl.SPLIT),
+ new String[]
+ {
+ "kind", "element",
+ "name", "split"
+ });
+
+ addXSDMapping
+ ((Property)twoRCsMixedType.getProperties().get(TwoRCsMixedImpl.GROUP1),
+ new String[]
+ {
+ "kind", "element",
+ "name", "group1"
+ });
+
+ addXSDMapping
+ ((Property)twoRCsMixedType.getProperties().get(TwoRCsMixedImpl.Y),
+ new String[]
+ {
+ "kind", "element",
+ "name", "y"
+ });
+
+ addXSDMapping
+ ((Property)twoRCsMixedType.getProperties().get(TwoRCsMixedImpl.Z),
+ new String[]
+ {
+ "kind", "element",
+ "name", "z"
+ });
+
+
+ // TODO - kdk - how do I filter out mixed, xMLNSPrefixMap, and xSISchemaLocation without hardcoding it
+ // TODO - kdk - can I hardcode ##targetNamespace?
+
+ createGlobalProperty
+ ("mixedStockQuote",
+ this.getMixedQuote(),
+ new String[]
+ {
+ "kind", "element",
+ "name", "mixedStockQuote",
+ "namespace", "##targetNamespace"
+ });
+
+ createGlobalProperty
+ ("mrc",
+ this.getMixedRepeatingChoice(),
+ new String[]
+ {
+ "kind", "element",
+ "name", "mrc",
+ "namespace", "##targetNamespace"
+ });
+
+ createGlobalProperty
+ ("mrc2",
+ this.getTwoRCsMixed(),
+ new String[]
+ {
+ "kind", "element",
+ "name", "mrc2",
+ "namespace", "##targetNamespace"
+ });
+
+ createGlobalProperty
+ ("rc",
+ this.getRepeatingChoice(),
+ new String[]
+ {
+ "kind", "element",
+ "name", "rc",
+ "namespace", "##targetNamespace"
+ });
+
+ createGlobalProperty
+ ("rc2",
+ this.getTwoRCs(),
+ new String[]
+ {
+ "kind", "element",
+ "name", "rc2",
+ "namespace", "##targetNamespace"
+ });
+
+ }
+
+} //SequencesFactoryImpl
diff --git a/branches/sdo-java-M2/sdo/tools/src/test/java/com/example/sequences/impl/TwoRCsImpl.java b/branches/sdo-java-M2/sdo/tools/src/test/java/com/example/sequences/impl/TwoRCsImpl.java
new file mode 100644
index 0000000000..8ad414935c
--- /dev/null
+++ b/branches/sdo-java-M2/sdo/tools/src/test/java/com/example/sequences/impl/TwoRCsImpl.java
@@ -0,0 +1,452 @@
+/**
+ *
+ * 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.sequences.impl;
+
+import com.example.sequences.TwoRCs;
+
+import commonj.sdo.Sequence;
+import commonj.sdo.Type;
+
+import commonj.sdo.helper.TypeHelper;
+
+import java.util.Collection;
+import java.util.List;
+
+import org.apache.tuscany.sdo.impl.DataObjectBase;
+
+import org.apache.tuscany.sdo.util.BasicSequence;
+
+/**
+ * <!-- begin-user-doc -->
+ * An implementation of the model object '<em><b>Two RCs</b></em>'.
+ * <!-- end-user-doc -->
+ * <p>
+ * The following features are implemented:
+ * <ul>
+ * <li>{@link com.example.sequences.impl.TwoRCsImpl#getGroup <em>Group</em>}</li>
+ * <li>{@link com.example.sequences.impl.TwoRCsImpl#getA <em>A</em>}</li>
+ * <li>{@link com.example.sequences.impl.TwoRCsImpl#getB <em>B</em>}</li>
+ * <li>{@link com.example.sequences.impl.TwoRCsImpl#getSplit <em>Split</em>}</li>
+ * <li>{@link com.example.sequences.impl.TwoRCsImpl#getGroup1 <em>Group1</em>}</li>
+ * <li>{@link com.example.sequences.impl.TwoRCsImpl#getY <em>Y</em>}</li>
+ * <li>{@link com.example.sequences.impl.TwoRCsImpl#getZ <em>Z</em>}</li>
+ * </ul>
+ * </p>
+ *
+ * @generated
+ */
+public class TwoRCsImpl extends DataObjectBase implements TwoRCs
+{
+ /**
+ * The feature id for the '<em><b>Group</b></em>' attribute list.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ public final static int GROUP = 0;
+
+ /**
+ * The cached value of the '{@link #getGroup() <em>Group</em>}' attribute list.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #getGroup()
+ * @generated
+ * @ordered
+ */
+
+ // How to get BasicSequence from Sequence?
+
+ protected BasicSequence group = null;
+
+ /**
+ * The feature id for the '<em><b>A</b></em>' attribute list.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ public final static int A = 1;
+
+ /**
+ * The feature id for the '<em><b>B</b></em>' attribute list.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ public final static int B = 2;
+
+ /**
+ * The feature id for the '<em><b>Split</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ public final static int SPLIT = 3;
+
+ /**
+ * The default value of the '{@link #getSplit() <em>Split</em>}' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #getSplit()
+ * @generated
+ * @ordered
+ */
+ protected static final String SPLIT_DEFAULT_ = null;
+
+ /**
+ * The cached value of the '{@link #getSplit() <em>Split</em>}' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #getSplit()
+ * @generated
+ * @ordered
+ */
+ protected String split = SPLIT_DEFAULT_;
+
+ /**
+ * The feature id for the '<em><b>Group1</b></em>' attribute list.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ public final static int GROUP1 = 4;
+
+ /**
+ * The cached value of the '{@link #getGroup1() <em>Group1</em>}' attribute list.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #getGroup1()
+ * @generated
+ * @ordered
+ */
+
+ // How to get BasicSequence from Sequence?
+
+ protected BasicSequence group1 = null;
+
+ /**
+ * The feature id for the '<em><b>Y</b></em>' attribute list.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ public final static int Y = 5;
+
+ /**
+ * The feature id for the '<em><b>Z</b></em>' attribute list.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ public final static int Z = 6;
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ protected TwoRCsImpl()
+ {
+ super();
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public Type getType()
+ {
+ return TypeHelper.INSTANCE.getType(TwoRCs.class); //TBD Generate a more efficient implementation
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public Sequence getGroup()
+ {
+ if (group == null)
+ {
+ group = createSequence(GROUP);
+
+ }
+ return group;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public List getA()
+ {
+ return getList(getGroup(), getType(), A);
+
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public List getB()
+ {
+ return getList(getGroup(), getType(), B);
+
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public String getSplit()
+ {
+ return split;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public void setSplit(String newSplit)
+ {
+ String oldSplit = split;
+ split = newSplit;
+ if (isNotifying())
+ notify(ChangeKind.SET, SPLIT, oldSplit, split);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public Sequence getGroup1()
+ {
+ if (group1 == null)
+ {
+ group1 = createSequence(GROUP1);
+
+ }
+ return group1;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public List getY()
+ {
+ return getList(getGroup1(), getType(), Y);
+
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public List getZ()
+ {
+ return getList(getGroup1(), getType(), Z);
+
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public ChangeContext inverseRemove(Object otherEnd, int propertyIndex, ChangeContext changeContext)
+ {
+ switch (propertyIndex)
+ {
+ case GROUP:
+ return removeFromSequence(getGroup(), otherEnd, changeContext);
+ case GROUP1:
+ return removeFromSequence(getGroup1(), otherEnd, changeContext);
+ }
+ return super.inverseRemove(otherEnd, propertyIndex, changeContext);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public Object get(int propertyIndex, boolean resolve)
+ {
+ switch (propertyIndex)
+ {
+ case GROUP:
+ // XXX query introduce coreType as an argument? -- semantic = if true -- coreType - return the core EMF object if value is a non-EMF wrapper/view
+ //if (coreType)
+ return getGroup();
+ case A:
+ return getA();
+ case B:
+ return getB();
+ case SPLIT:
+ return getSplit();
+ case GROUP1:
+ // XXX query introduce coreType as an argument? -- semantic = if true -- coreType - return the core EMF object if value is a non-EMF wrapper/view
+ //if (coreType)
+ return getGroup1();
+ case Y:
+ return getY();
+ case Z:
+ return getZ();
+ }
+ return super.get(propertyIndex, resolve);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public void set(int propertyIndex, Object newValue)
+ {
+ switch (propertyIndex)
+ {
+ case GROUP:
+ setSequence(getGroup(), newValue);
+ return;
+ case A:
+ getA().clear();
+ getA().addAll((Collection)newValue);
+ return;
+ case B:
+ getB().clear();
+ getB().addAll((Collection)newValue);
+ return;
+ case SPLIT:
+ setSplit((String)newValue);
+ return;
+ case GROUP1:
+ setSequence(getGroup1(), newValue);
+ return;
+ case Y:
+ getY().clear();
+ getY().addAll((Collection)newValue);
+ return;
+ case Z:
+ getZ().clear();
+ getZ().addAll((Collection)newValue);
+ return;
+ }
+ super.set(propertyIndex, newValue);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public void unset(int propertyIndex)
+ {
+ switch (propertyIndex)
+ {
+ case GROUP:
+ unsetSequence(getGroup());
+ return;
+ case A:
+ getA().clear();
+ return;
+ case B:
+ getB().clear();
+ return;
+ case SPLIT:
+ setSplit(SPLIT_DEFAULT_);
+ return;
+ case GROUP1:
+ unsetSequence(getGroup1());
+ return;
+ case Y:
+ getY().clear();
+ return;
+ case Z:
+ getZ().clear();
+ return;
+ }
+ super.unset(propertyIndex);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public boolean isSet(int propertyIndex)
+ {
+ switch (propertyIndex)
+ {
+ case GROUP:
+ // KDK - should this be !isSequenceEmpty?
+ return group != null && !isSequenceEmpty(getGroup());
+ case A:
+ return !getA().isEmpty();
+ case B:
+ return !getB().isEmpty();
+ case SPLIT:
+ return SPLIT_DEFAULT_ == null ? split != null : !SPLIT_DEFAULT_.equals(split);
+ case GROUP1:
+ // KDK - should this be !isSequenceEmpty?
+ return group1 != null && !isSequenceEmpty(getGroup1());
+ case Y:
+ return !getY().isEmpty();
+ case Z:
+ return !getZ().isEmpty();
+ }
+ return super.isSet(propertyIndex);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public String toString()
+ {
+ if (isProxy()) return super.toString();
+
+ StringBuffer result = new StringBuffer(super.toString());
+ result.append(" (group: ");
+ result.append(group);
+ result.append(", split: ");
+ result.append(split);
+ result.append(", group1: ");
+ result.append(group1);
+ result.append(')');
+ return result.toString();
+ }
+
+} //TwoRCsImpl
diff --git a/branches/sdo-java-M2/sdo/tools/src/test/java/com/example/sequences/impl/TwoRCsMixedImpl.java b/branches/sdo-java-M2/sdo/tools/src/test/java/com/example/sequences/impl/TwoRCsMixedImpl.java
new file mode 100644
index 0000000000..05fa81d977
--- /dev/null
+++ b/branches/sdo-java-M2/sdo/tools/src/test/java/com/example/sequences/impl/TwoRCsMixedImpl.java
@@ -0,0 +1,450 @@
+/**
+ *
+ * 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.sequences.impl;
+
+import com.example.sequences.TwoRCsMixed;
+
+import commonj.sdo.Sequence;
+import commonj.sdo.Type;
+
+import commonj.sdo.helper.TypeHelper;
+
+import java.util.Collection;
+import java.util.List;
+
+import org.apache.tuscany.sdo.impl.DataObjectBase;
+
+import org.apache.tuscany.sdo.util.BasicSequence;
+
+/**
+ * <!-- begin-user-doc -->
+ * An implementation of the model object '<em><b>Two RCs Mixed</b></em>'.
+ * <!-- end-user-doc -->
+ * <p>
+ * The following features are implemented:
+ * <ul>
+ * <li>{@link com.example.sequences.impl.TwoRCsMixedImpl#getMixed <em>Mixed</em>}</li>
+ * <li>{@link com.example.sequences.impl.TwoRCsMixedImpl#getGroup <em>Group</em>}</li>
+ * <li>{@link com.example.sequences.impl.TwoRCsMixedImpl#getA <em>A</em>}</li>
+ * <li>{@link com.example.sequences.impl.TwoRCsMixedImpl#getB <em>B</em>}</li>
+ * <li>{@link com.example.sequences.impl.TwoRCsMixedImpl#getSplit <em>Split</em>}</li>
+ * <li>{@link com.example.sequences.impl.TwoRCsMixedImpl#getGroup1 <em>Group1</em>}</li>
+ * <li>{@link com.example.sequences.impl.TwoRCsMixedImpl#getY <em>Y</em>}</li>
+ * <li>{@link com.example.sequences.impl.TwoRCsMixedImpl#getZ <em>Z</em>}</li>
+ * </ul>
+ * </p>
+ *
+ * @generated
+ */
+public class TwoRCsMixedImpl extends DataObjectBase implements TwoRCsMixed
+{
+ /**
+ * The feature id for the '<em><b>Mixed</b></em>' attribute list.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ public final static int MIXED = 0;
+
+ /**
+ * The cached value of the '{@link #getMixed() <em>Mixed</em>}' attribute list.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #getMixed()
+ * @generated
+ * @ordered
+ */
+
+ // How to get BasicSequence from Sequence?
+
+ protected BasicSequence mixed = null;
+
+ /**
+ * The feature id for the '<em><b>Group</b></em>' attribute list.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ public final static int GROUP = 1;
+
+ /**
+ * The feature id for the '<em><b>A</b></em>' attribute list.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ public final static int A = 2;
+
+ /**
+ * The feature id for the '<em><b>B</b></em>' attribute list.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ public final static int B = 3;
+
+ /**
+ * The feature id for the '<em><b>Split</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ public final static int SPLIT = 4;
+
+ /**
+ * The default value of the '{@link #getSplit() <em>Split</em>}' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #getSplit()
+ * @generated
+ * @ordered
+ */
+ protected static final String SPLIT_DEFAULT_ = null;
+
+ /**
+ * The feature id for the '<em><b>Group1</b></em>' attribute list.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ public final static int GROUP1 = 5;
+
+ /**
+ * The feature id for the '<em><b>Y</b></em>' attribute list.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ public final static int Y = 6;
+
+ /**
+ * The feature id for the '<em><b>Z</b></em>' attribute list.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ public final static int Z = 7;
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ protected TwoRCsMixedImpl()
+ {
+ super();
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public Type getType()
+ {
+ return TypeHelper.INSTANCE.getType(TwoRCsMixed.class); //TBD Generate a more efficient implementation
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public Sequence getMixed()
+ {
+ if (mixed == null)
+ {
+ mixed = createSequence(MIXED);
+
+ }
+ return mixed;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public Sequence getGroup()
+ {
+ return createSequence(getMixed(), getType(), GROUP);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public List getA()
+ {
+ return getList(getGroup(), getType(), A);
+
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public List getB()
+ {
+ return getList(getGroup(), getType(), B);
+
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public String getSplit()
+ {
+ return (String)get(getMixed(), getType(), SPLIT);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public void setSplit(String newSplit)
+ {
+ set(getMixed(), getType(), SPLIT, newSplit);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public Sequence getGroup1()
+ {
+ return createSequence(getMixed(), getType(), GROUP1);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public List getY()
+ {
+ return getList(getGroup1(), getType(), Y);
+
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public List getZ()
+ {
+ return getList(getGroup1(), getType(), Z);
+
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public ChangeContext inverseRemove(Object otherEnd, int propertyIndex, ChangeContext changeContext)
+ {
+ switch (propertyIndex)
+ {
+ case MIXED:
+ return removeFromSequence(getMixed(), otherEnd, changeContext);
+ case GROUP:
+ return removeFromSequence(getGroup(), otherEnd, changeContext);
+ case GROUP1:
+ return removeFromSequence(getGroup1(), otherEnd, changeContext);
+ }
+ return super.inverseRemove(otherEnd, propertyIndex, changeContext);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public Object get(int propertyIndex, boolean resolve)
+ {
+ switch (propertyIndex)
+ {
+ case MIXED:
+ // XXX query introduce coreType as an argument? -- semantic = if true -- coreType - return the core EMF object if value is a non-EMF wrapper/view
+ //if (coreType)
+ return getMixed();
+ case GROUP:
+ // XXX query introduce coreType as an argument? -- semantic = if true -- coreType - return the core EMF object if value is a non-EMF wrapper/view
+ //if (coreType)
+ return getGroup();
+ case A:
+ return getA();
+ case B:
+ return getB();
+ case SPLIT:
+ return getSplit();
+ case GROUP1:
+ // XXX query introduce coreType as an argument? -- semantic = if true -- coreType - return the core EMF object if value is a non-EMF wrapper/view
+ //if (coreType)
+ return getGroup1();
+ case Y:
+ return getY();
+ case Z:
+ return getZ();
+ }
+ return super.get(propertyIndex, resolve);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public void set(int propertyIndex, Object newValue)
+ {
+ switch (propertyIndex)
+ {
+ case MIXED:
+ setSequence(getMixed(), newValue);
+ return;
+ case GROUP:
+ setSequence(getGroup(), newValue);
+ return;
+ case A:
+ getA().clear();
+ getA().addAll((Collection)newValue);
+ return;
+ case B:
+ getB().clear();
+ getB().addAll((Collection)newValue);
+ return;
+ case SPLIT:
+ setSplit((String)newValue);
+ return;
+ case GROUP1:
+ setSequence(getGroup1(), newValue);
+ return;
+ case Y:
+ getY().clear();
+ getY().addAll((Collection)newValue);
+ return;
+ case Z:
+ getZ().clear();
+ getZ().addAll((Collection)newValue);
+ return;
+ }
+ super.set(propertyIndex, newValue);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public void unset(int propertyIndex)
+ {
+ switch (propertyIndex)
+ {
+ case MIXED:
+ unsetSequence(getMixed());
+ return;
+ case GROUP:
+ unsetSequence(getGroup());
+ return;
+ case A:
+ getA().clear();
+ return;
+ case B:
+ getB().clear();
+ return;
+ case SPLIT:
+ setSplit(SPLIT_DEFAULT_);
+ return;
+ case GROUP1:
+ unsetSequence(getGroup1());
+ return;
+ case Y:
+ getY().clear();
+ return;
+ case Z:
+ getZ().clear();
+ return;
+ }
+ super.unset(propertyIndex);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public boolean isSet(int propertyIndex)
+ {
+ switch (propertyIndex)
+ {
+ case MIXED:
+ // KDK - should this be !isSequenceEmpty?
+ return mixed != null && !isSequenceEmpty(getMixed());
+ case GROUP:
+ return !isSequenceEmpty(getGroup());
+ case A:
+ return !getA().isEmpty();
+ case B:
+ return !getB().isEmpty();
+ case SPLIT:
+ return SPLIT_DEFAULT_ == null ? getSplit() != null : !SPLIT_DEFAULT_.equals(getSplit());
+ case GROUP1:
+ return !isSequenceEmpty(getGroup1());
+ case Y:
+ return !getY().isEmpty();
+ case Z:
+ return !getZ().isEmpty();
+ }
+ return super.isSet(propertyIndex);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public String toString()
+ {
+ if (isProxy()) return super.toString();
+
+ StringBuffer result = new StringBuffer(super.toString());
+ result.append(" (mixed: ");
+ result.append(mixed);
+ result.append(')');
+ return result.toString();
+ }
+
+} //TwoRCsMixedImpl
diff --git a/branches/sdo-java-M2/sdo/tools/src/test/java/com/example/simple/Quote.java b/branches/sdo-java-M2/sdo/tools/src/test/java/com/example/simple/Quote.java
new file mode 100644
index 0000000000..2855d2a67c
--- /dev/null
+++ b/branches/sdo-java-M2/sdo/tools/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;
+
+/**
+ * <!-- begin-user-doc -->
+ * A representation of the model object '<em><b>Quote</b></em>'.
+ * <!-- end-user-doc -->
+ *
+ * <p>
+ * The following features are supported:
+ * <ul>
+ * <li>{@link com.example.simple.Quote#getSymbol <em>Symbol</em>}</li>
+ * <li>{@link com.example.simple.Quote#getCompanyName <em>Company Name</em>}</li>
+ * <li>{@link com.example.simple.Quote#getPrice <em>Price</em>}</li>
+ * <li>{@link com.example.simple.Quote#getOpen1 <em>Open1</em>}</li>
+ * <li>{@link com.example.simple.Quote#getHigh <em>High</em>}</li>
+ * <li>{@link com.example.simple.Quote#getLow <em>Low</em>}</li>
+ * <li>{@link com.example.simple.Quote#getVolume <em>Volume</em>}</li>
+ * <li>{@link com.example.simple.Quote#getChange1 <em>Change1</em>}</li>
+ * <li>{@link com.example.simple.Quote#getQuotes <em>Quotes</em>}</li>
+ * </ul>
+ * </p>
+ *
+ * @generated
+ */
+public interface Quote
+{
+ /**
+ * Returns the value of the '<em><b>Symbol</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <p>
+ * If the meaning of the '<em>Symbol</em>' attribute isn't clear,
+ * there really should be more of a description here...
+ * </p>
+ * <!-- end-user-doc -->
+ * @return the value of the '<em>Symbol</em>' attribute.
+ * @see #setSymbol(String)
+ * @generated
+ */
+ String getSymbol();
+
+ /**
+ * Sets the value of the '{@link com.example.simple.Quote#getSymbol <em>Symbol</em>}' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @param value the new value of the '<em>Symbol</em>' attribute.
+ * @see #getSymbol()
+ * @generated
+ */
+ void setSymbol(String value);
+
+ /**
+ * Returns the value of the '<em><b>Company Name</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <p>
+ * If the meaning of the '<em>Company Name</em>' attribute isn't clear,
+ * there really should be more of a description here...
+ * </p>
+ * <!-- end-user-doc -->
+ * @return the value of the '<em>Company Name</em>' attribute.
+ * @see #setCompanyName(String)
+ * @generated
+ */
+ String getCompanyName();
+
+ /**
+ * Sets the value of the '{@link com.example.simple.Quote#getCompanyName <em>Company Name</em>}' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @param value the new value of the '<em>Company Name</em>' attribute.
+ * @see #getCompanyName()
+ * @generated
+ */
+ void setCompanyName(String value);
+
+ /**
+ * Returns the value of the '<em><b>Price</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <p>
+ * If the meaning of the '<em>Price</em>' attribute isn't clear,
+ * there really should be more of a description here...
+ * </p>
+ * <!-- end-user-doc -->
+ * @return the value of the '<em>Price</em>' attribute.
+ * @see #setPrice(BigDecimal)
+ * @generated
+ */
+ BigDecimal getPrice();
+
+ /**
+ * Sets the value of the '{@link com.example.simple.Quote#getPrice <em>Price</em>}' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @param value the new value of the '<em>Price</em>' attribute.
+ * @see #getPrice()
+ * @generated
+ */
+ void setPrice(BigDecimal value);
+
+ /**
+ * Returns the value of the '<em><b>Open1</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <p>
+ * If the meaning of the '<em>Open1</em>' attribute isn't clear,
+ * there really should be more of a description here...
+ * </p>
+ * <!-- end-user-doc -->
+ * @return the value of the '<em>Open1</em>' attribute.
+ * @see #setOpen1(BigDecimal)
+ * @generated
+ */
+ BigDecimal getOpen1();
+
+ /**
+ * Sets the value of the '{@link com.example.simple.Quote#getOpen1 <em>Open1</em>}' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @param value the new value of the '<em>Open1</em>' attribute.
+ * @see #getOpen1()
+ * @generated
+ */
+ void setOpen1(BigDecimal value);
+
+ /**
+ * Returns the value of the '<em><b>High</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <p>
+ * If the meaning of the '<em>High</em>' attribute isn't clear,
+ * there really should be more of a description here...
+ * </p>
+ * <!-- end-user-doc -->
+ * @return the value of the '<em>High</em>' attribute.
+ * @see #setHigh(BigDecimal)
+ * @generated
+ */
+ BigDecimal getHigh();
+
+ /**
+ * Sets the value of the '{@link com.example.simple.Quote#getHigh <em>High</em>}' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @param value the new value of the '<em>High</em>' attribute.
+ * @see #getHigh()
+ * @generated
+ */
+ void setHigh(BigDecimal value);
+
+ /**
+ * Returns the value of the '<em><b>Low</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <p>
+ * If the meaning of the '<em>Low</em>' attribute isn't clear,
+ * there really should be more of a description here...
+ * </p>
+ * <!-- end-user-doc -->
+ * @return the value of the '<em>Low</em>' attribute.
+ * @see #setLow(BigDecimal)
+ * @generated
+ */
+ BigDecimal getLow();
+
+ /**
+ * Sets the value of the '{@link com.example.simple.Quote#getLow <em>Low</em>}' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @param value the new value of the '<em>Low</em>' attribute.
+ * @see #getLow()
+ * @generated
+ */
+ void setLow(BigDecimal value);
+
+ /**
+ * Returns the value of the '<em><b>Volume</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <p>
+ * If the meaning of the '<em>Volume</em>' attribute isn't clear,
+ * there really should be more of a description here...
+ * </p>
+ * <!-- end-user-doc -->
+ * @return the value of the '<em>Volume</em>' attribute.
+ * @see #isSetVolume()
+ * @see #unsetVolume()
+ * @see #setVolume(double)
+ * @generated
+ */
+ double getVolume();
+
+ /**
+ * Sets the value of the '{@link com.example.simple.Quote#getVolume <em>Volume</em>}' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @param value the new value of the '<em>Volume</em>' attribute.
+ * @see #isSetVolume()
+ * @see #unsetVolume()
+ * @see #getVolume()
+ * @generated
+ */
+ void setVolume(double value);
+
+ /**
+ * Unsets the value of the '{@link com.example.simple.Quote#getVolume <em>Volume</em>}' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #isSetVolume()
+ * @see #getVolume()
+ * @see #setVolume(double)
+ * @generated
+ */
+ void unsetVolume();
+
+ /**
+ * Returns whether the value of the '{@link com.example.simple.Quote#getVolume <em>Volume</em>}' attribute is set.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return whether the value of the '<em>Volume</em>' attribute is set.
+ * @see #unsetVolume()
+ * @see #getVolume()
+ * @see #setVolume(double)
+ * @generated
+ */
+ boolean isSetVolume();
+
+ /**
+ * Returns the value of the '<em><b>Change1</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <p>
+ * If the meaning of the '<em>Change1</em>' attribute isn't clear,
+ * there really should be more of a description here...
+ * </p>
+ * <!-- end-user-doc -->
+ * @return the value of the '<em>Change1</em>' attribute.
+ * @see #isSetChange1()
+ * @see #unsetChange1()
+ * @see #setChange1(double)
+ * @generated
+ */
+ double getChange1();
+
+ /**
+ * Sets the value of the '{@link com.example.simple.Quote#getChange1 <em>Change1</em>}' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @param value the new value of the '<em>Change1</em>' attribute.
+ * @see #isSetChange1()
+ * @see #unsetChange1()
+ * @see #getChange1()
+ * @generated
+ */
+ void setChange1(double value);
+
+ /**
+ * Unsets the value of the '{@link com.example.simple.Quote#getChange1 <em>Change1</em>}' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #isSetChange1()
+ * @see #getChange1()
+ * @see #setChange1(double)
+ * @generated
+ */
+ void unsetChange1();
+
+ /**
+ * Returns whether the value of the '{@link com.example.simple.Quote#getChange1 <em>Change1</em>}' attribute is set.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return whether the value of the '<em>Change1</em>' attribute is set.
+ * @see #unsetChange1()
+ * @see #getChange1()
+ * @see #setChange1(double)
+ * @generated
+ */
+ boolean isSetChange1();
+
+ /**
+ * Returns the value of the '<em><b>Quotes</b></em>' containment reference list.
+ * The list contents are of type {@link com.example.simple.Quote}.
+ * <!-- begin-user-doc -->
+ * <p>
+ * If the meaning of the '<em>Quotes</em>' containment reference list isn't clear,
+ * there really should be more of a description here...
+ * </p>
+ * <!-- end-user-doc -->
+ * @return the value of the '<em>Quotes</em>' containment reference list.
+ * @generated
+ */
+ List getQuotes();
+
+} // Quote
diff --git a/branches/sdo-java-M2/sdo/tools/src/test/java/com/example/simple/SimpleFactory.java b/branches/sdo-java-M2/sdo/tools/src/test/java/com/example/simple/SimpleFactory.java
new file mode 100644
index 0000000000..4f33a3e19f
--- /dev/null
+++ b/branches/sdo-java-M2/sdo/tools/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;
+
+
+/**
+ * <!-- begin-user-doc -->
+ * The <b>Factory</b> for the model.
+ * It provides a create method for each non-abstract class of the model.
+ * <!-- end-user-doc -->
+ * @generated
+ */
+public interface SimpleFactory
+{
+ /**
+ * The singleton instance of the factory.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ SimpleFactory INSTANCE = com.example.simple.impl.SimpleFactoryImpl.eINSTANCE;
+
+ /**
+ * Returns a new object of class '<em>Quote</em>'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return a new object of class '<em>Quote</em>'.
+ * @generated
+ */
+ Quote createQuote();
+
+} //SimpleFactory
diff --git a/branches/sdo-java-M2/sdo/tools/src/test/java/com/example/simple/impl/QuoteImpl.java b/branches/sdo-java-M2/sdo/tools/src/test/java/com/example/simple/impl/QuoteImpl.java
new file mode 100644
index 0000000000..18c63894af
--- /dev/null
+++ b/branches/sdo-java-M2/sdo/tools/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;
+
+/**
+ * <!-- begin-user-doc -->
+ * An implementation of the model object '<em><b>Quote</b></em>'.
+ * <!-- end-user-doc -->
+ * <p>
+ * The following features are implemented:
+ * <ul>
+ * <li>{@link com.example.simple.impl.QuoteImpl#getSymbol <em>Symbol</em>}</li>
+ * <li>{@link com.example.simple.impl.QuoteImpl#getCompanyName <em>Company Name</em>}</li>
+ * <li>{@link com.example.simple.impl.QuoteImpl#getPrice <em>Price</em>}</li>
+ * <li>{@link com.example.simple.impl.QuoteImpl#getOpen1 <em>Open1</em>}</li>
+ * <li>{@link com.example.simple.impl.QuoteImpl#getHigh <em>High</em>}</li>
+ * <li>{@link com.example.simple.impl.QuoteImpl#getLow <em>Low</em>}</li>
+ * <li>{@link com.example.simple.impl.QuoteImpl#getVolume <em>Volume</em>}</li>
+ * <li>{@link com.example.simple.impl.QuoteImpl#getChange1 <em>Change1</em>}</li>
+ * <li>{@link com.example.simple.impl.QuoteImpl#getQuotes <em>Quotes</em>}</li>
+ * </ul>
+ * </p>
+ *
+ * @generated
+ */
+public class QuoteImpl extends DataObjectImpl implements Quote
+{
+ /**
+ * The default value of the '{@link #getSymbol() <em>Symbol</em>}' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #getSymbol()
+ * @generated
+ * @ordered
+ */
+ protected static final String SYMBOL_EDEFAULT = null;
+
+ /**
+ * The cached value of the '{@link #getSymbol() <em>Symbol</em>}' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #getSymbol()
+ * @generated
+ * @ordered
+ */
+ protected String symbol = SYMBOL_EDEFAULT;
+
+ /**
+ * The default value of the '{@link #getCompanyName() <em>Company Name</em>}' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #getCompanyName()
+ * @generated
+ * @ordered
+ */
+ protected static final String COMPANY_NAME_EDEFAULT = null;
+
+ /**
+ * The cached value of the '{@link #getCompanyName() <em>Company Name</em>}' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #getCompanyName()
+ * @generated
+ * @ordered
+ */
+ protected String companyName = COMPANY_NAME_EDEFAULT;
+
+ /**
+ * The default value of the '{@link #getPrice() <em>Price</em>}' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #getPrice()
+ * @generated
+ * @ordered
+ */
+ protected static final BigDecimal PRICE_EDEFAULT = null;
+
+ /**
+ * The cached value of the '{@link #getPrice() <em>Price</em>}' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #getPrice()
+ * @generated
+ * @ordered
+ */
+ protected BigDecimal price = PRICE_EDEFAULT;
+
+ /**
+ * The default value of the '{@link #getOpen1() <em>Open1</em>}' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #getOpen1()
+ * @generated
+ * @ordered
+ */
+ protected static final BigDecimal OPEN1_EDEFAULT = null;
+
+ /**
+ * The cached value of the '{@link #getOpen1() <em>Open1</em>}' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #getOpen1()
+ * @generated
+ * @ordered
+ */
+ protected BigDecimal open1 = OPEN1_EDEFAULT;
+
+ /**
+ * The default value of the '{@link #getHigh() <em>High</em>}' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #getHigh()
+ * @generated
+ * @ordered
+ */
+ protected static final BigDecimal HIGH_EDEFAULT = null;
+
+ /**
+ * The cached value of the '{@link #getHigh() <em>High</em>}' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #getHigh()
+ * @generated
+ * @ordered
+ */
+ protected BigDecimal high = HIGH_EDEFAULT;
+
+ /**
+ * The default value of the '{@link #getLow() <em>Low</em>}' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #getLow()
+ * @generated
+ * @ordered
+ */
+ protected static final BigDecimal LOW_EDEFAULT = null;
+
+ /**
+ * The cached value of the '{@link #getLow() <em>Low</em>}' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #getLow()
+ * @generated
+ * @ordered
+ */
+ protected BigDecimal low = LOW_EDEFAULT;
+
+ /**
+ * The default value of the '{@link #getVolume() <em>Volume</em>}' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #getVolume()
+ * @generated
+ * @ordered
+ */
+ protected static final double VOLUME_EDEFAULT = 0.0;
+
+ /**
+ * The cached value of the '{@link #getVolume() <em>Volume</em>}' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #getVolume()
+ * @generated
+ * @ordered
+ */
+ protected double volume = VOLUME_EDEFAULT;
+
+ /**
+ * This is true if the Volume attribute has been set.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ protected boolean volumeESet = false;
+
+ /**
+ * The default value of the '{@link #getChange1() <em>Change1</em>}' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #getChange1()
+ * @generated
+ * @ordered
+ */
+ protected static final double CHANGE1_EDEFAULT = 0.0;
+
+ /**
+ * The cached value of the '{@link #getChange1() <em>Change1</em>}' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #getChange1()
+ * @generated
+ * @ordered
+ */
+ protected double change1 = CHANGE1_EDEFAULT;
+
+ /**
+ * This is true if the Change1 attribute has been set.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ protected boolean change1ESet = false;
+
+ /**
+ * The cached value of the '{@link #getQuotes() <em>Quotes</em>}' containment reference list.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #getQuotes()
+ * @generated
+ * @ordered
+ */
+ protected EList quotes = null;
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ protected QuoteImpl()
+ {
+ super();
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ protected EClass eStaticClass()
+ {
+ return SimplePackageImpl.Literals.QUOTE;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public String getSymbol()
+ {
+ return symbol;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public void setSymbol(String newSymbol)
+ {
+ String oldSymbol = symbol;
+ symbol = newSymbol;
+ if (eNotificationRequired())
+ eNotify(new ENotificationImpl(this, Notification.SET, SimplePackageImpl.QUOTE__SYMBOL, oldSymbol, symbol));
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public String getCompanyName()
+ {
+ return companyName;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @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));
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public BigDecimal getPrice()
+ {
+ return price;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public void setPrice(BigDecimal newPrice)
+ {
+ BigDecimal oldPrice = price;
+ price = newPrice;
+ if (eNotificationRequired())
+ eNotify(new ENotificationImpl(this, Notification.SET, SimplePackageImpl.QUOTE__PRICE, oldPrice, price));
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public BigDecimal getOpen1()
+ {
+ return open1;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public void setOpen1(BigDecimal newOpen1)
+ {
+ BigDecimal oldOpen1 = open1;
+ open1 = newOpen1;
+ if (eNotificationRequired())
+ eNotify(new ENotificationImpl(this, Notification.SET, SimplePackageImpl.QUOTE__OPEN1, oldOpen1, open1));
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public BigDecimal getHigh()
+ {
+ return high;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public void setHigh(BigDecimal newHigh)
+ {
+ BigDecimal oldHigh = high;
+ high = newHigh;
+ if (eNotificationRequired())
+ eNotify(new ENotificationImpl(this, Notification.SET, SimplePackageImpl.QUOTE__HIGH, oldHigh, high));
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public BigDecimal getLow()
+ {
+ return low;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public void setLow(BigDecimal newLow)
+ {
+ BigDecimal oldLow = low;
+ low = newLow;
+ if (eNotificationRequired())
+ eNotify(new ENotificationImpl(this, Notification.SET, SimplePackageImpl.QUOTE__LOW, oldLow, low));
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public double getVolume()
+ {
+ return volume;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @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));
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @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));
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public boolean isSetVolume()
+ {
+ return volumeESet;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public double getChange1()
+ {
+ return change1;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @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));
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @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));
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public boolean isSetChange1()
+ {
+ return change1ESet;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public List getQuotes()
+ {
+ if (quotes == null)
+ {
+ quotes = new EObjectContainmentEList(Quote.class, this, SimplePackageImpl.QUOTE__QUOTES);
+ }
+ return quotes;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @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);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @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);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @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);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @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);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @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);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @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("<unset>");
+ result.append(", change1: ");
+ if (change1ESet) result.append(change1); else result.append("<unset>");
+ result.append(')');
+ return result.toString();
+ }
+
+} //QuoteImpl
diff --git a/branches/sdo-java-M2/sdo/tools/src/test/java/com/example/simple/impl/SimpleFactoryImpl.java b/branches/sdo-java-M2/sdo/tools/src/test/java/com/example/simple/impl/SimpleFactoryImpl.java
new file mode 100644
index 0000000000..5f275a94d4
--- /dev/null
+++ b/branches/sdo-java-M2/sdo/tools/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;
+
+/**
+ * <!-- begin-user-doc -->
+ * An implementation of the model <b>Factory</b>.
+ * <!-- end-user-doc -->
+ * @generated
+ */
+public class SimpleFactoryImpl extends EFactoryImpl implements SimpleFactory
+{
+ /**
+ * The singleton instance of the factory.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public static final SimpleFactoryImpl eINSTANCE = init();
+
+ /**
+ * Creates the default factory implementation.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @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.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public SimpleFactoryImpl()
+ {
+ super();
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @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");
+ }
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EObject createDocumentRoot()
+ {
+ EObject documentRoot = super.create(SimplePackageImpl.Literals.DOCUMENT_ROOT);
+ return documentRoot;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public Quote createQuote()
+ {
+ QuoteImpl quote = new QuoteImpl();
+ return quote;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public SimplePackageImpl getSimplePackageImpl()
+ {
+ return (SimplePackageImpl)getEPackage();
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @deprecated
+ * @generated
+ */
+ public static SimplePackageImpl getPackage()
+ {
+ return SimplePackageImpl.eINSTANCE;
+ }
+
+} //SimpleFactoryImpl
diff --git a/branches/sdo-java-M2/sdo/tools/src/test/java/com/example/simple/impl/SimplePackageImpl.java b/branches/sdo-java-M2/sdo/tools/src/test/java/com/example/simple/impl/SimplePackageImpl.java
new file mode 100644
index 0000000000..50ad614fd7
--- /dev/null
+++ b/branches/sdo-java-M2/sdo/tools/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;
+
+/**
+ * <!-- begin-user-doc -->
+ * The <b>Package</b> for the model.
+ * It contains accessors for the meta objects to represent
+ * <ul>
+ * <li>each class,</li>
+ * <li>each feature of each class,</li>
+ * <li>each enum,</li>
+ * <li>and each data type</li>
+ * </ul>
+ * <!-- end-user-doc -->
+ * @see com.example.simple.SimpleFactory
+ * @generated
+ */
+public class SimplePackageImpl extends EPackageImpl
+{
+ /**
+ * The package name.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public static final String eNAME = "simple";
+
+ /**
+ * The package namespace URI.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public static final String eNS_URI = "http://www.example.com/simple";
+
+ /**
+ * The package namespace name.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public static final String eNS_PREFIX = "simple";
+
+ /**
+ * The singleton instance of the package.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public static final SimplePackageImpl eINSTANCE = com.example.simple.impl.SimplePackageImpl.init();
+
+ /**
+ * The meta object id for the '{@link com.example.simple.impl.DocumentRootImpl <em>Document Root</em>}' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @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 '<em><b>Mixed</b></em>' attribute list.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ public static final int DOCUMENT_ROOT__MIXED = 0;
+
+ /**
+ * The feature id for the '<em><b>XMLNS Prefix Map</b></em>' map.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ public static final int DOCUMENT_ROOT__XMLNS_PREFIX_MAP = 1;
+
+ /**
+ * The feature id for the '<em><b>XSI Schema Location</b></em>' map.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ public static final int DOCUMENT_ROOT__XSI_SCHEMA_LOCATION = 2;
+
+ /**
+ * The feature id for the '<em><b>Stock Quote</b></em>' containment reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ public static final int DOCUMENT_ROOT__STOCK_QUOTE = 3;
+
+ /**
+ * The number of structural features of the '<em>Document Root</em>' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ public static final int DOCUMENT_ROOT_FEATURE_COUNT = 4;
+
+ /**
+ * The meta object id for the '{@link com.example.simple.impl.QuoteImpl <em>Quote</em>}' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @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 '<em><b>Symbol</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ public static final int QUOTE__SYMBOL = 0;
+
+ /**
+ * The feature id for the '<em><b>Company Name</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ public static final int QUOTE__COMPANY_NAME = 1;
+
+ /**
+ * The feature id for the '<em><b>Price</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ public static final int QUOTE__PRICE = 2;
+
+ /**
+ * The feature id for the '<em><b>Open1</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ public static final int QUOTE__OPEN1 = 3;
+
+ /**
+ * The feature id for the '<em><b>High</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ public static final int QUOTE__HIGH = 4;
+
+ /**
+ * The feature id for the '<em><b>Low</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ public static final int QUOTE__LOW = 5;
+
+ /**
+ * The feature id for the '<em><b>Volume</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ public static final int QUOTE__VOLUME = 6;
+
+ /**
+ * The feature id for the '<em><b>Change1</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ public static final int QUOTE__CHANGE1 = 7;
+
+ /**
+ * The feature id for the '<em><b>Quotes</b></em>' containment reference list.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ public static final int QUOTE__QUOTES = 8;
+
+ /**
+ * The number of structural features of the '<em>Quote</em>' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ public static final int QUOTE_FEATURE_COUNT = 9;
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ private EClass documentRootEClass = null;
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ private EClass quoteEClass = null;
+
+ /**
+ * Creates an instance of the model <b>Package</b>, registered with
+ * {@link org.eclipse.emf.ecore.EPackage.Registry EPackage.Registry} by the package
+ * package URI value.
+ * <p>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.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @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));
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ private static boolean isInited = false;
+
+ /**
+ * Creates, registers, and initializes the <b>Package</b> 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.
+ * <p>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.
+ * <p>Invocation of this method will not affect any packages that have
+ * already been initialized.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @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 <em>Document Root</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for class '<em>Document Root</em>'.
+ * @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 <em>Mixed</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for the attribute list '<em>Mixed</em>'.
+ * @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 <em>XMLNS Prefix Map</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for the map '<em>XMLNS Prefix Map</em>'.
+ * @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 <em>XSI Schema Location</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for the map '<em>XSI Schema Location</em>'.
+ * @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 <em>Stock Quote</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for the containment reference '<em>Stock Quote</em>'.
+ * @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 <em>Quote</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for class '<em>Quote</em>'.
+ * @see com.example.simple.Quote
+ * @generated
+ */
+ public EClass getQuote()
+ {
+ return quoteEClass;
+ }
+
+ /**
+ * Returns the meta object for the attribute '{@link com.example.simple.Quote#getSymbol <em>Symbol</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for the attribute '<em>Symbol</em>'.
+ * @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 <em>Company Name</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for the attribute '<em>Company Name</em>'.
+ * @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 <em>Price</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for the attribute '<em>Price</em>'.
+ * @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 <em>Open1</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for the attribute '<em>Open1</em>'.
+ * @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 <em>High</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for the attribute '<em>High</em>'.
+ * @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 <em>Low</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for the attribute '<em>Low</em>'.
+ * @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 <em>Volume</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for the attribute '<em>Volume</em>'.
+ * @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 <em>Change1</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for the attribute '<em>Change1</em>'.
+ * @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 <em>Quotes</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for the containment reference list '<em>Quotes</em>'.
+ * @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.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the factory that creates the instances of the model.
+ * @generated
+ */
+ public SimpleFactory getSimpleFactory()
+ {
+ return (SimpleFactory)getEFactoryInstance();
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @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.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @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);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @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.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @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 <b>http:///org/eclipse/emf/ecore/util/ExtendedMetaData</b>.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @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"
+ });
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * Defines literals for the meta objects that represent
+ * <ul>
+ * <li>each class,</li>
+ * <li>each feature of each class,</li>
+ * <li>each enum,</li>
+ * <li>and each data type</li>
+ * </ul>
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public interface Literals
+ {
+ /**
+ * The meta object literal for the '{@link com.example.simple.impl.DocumentRootImpl <em>Document Root</em>}' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @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 '<em><b>Mixed</b></em>' attribute list feature.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public static final EAttribute DOCUMENT_ROOT__MIXED = eINSTANCE.getDocumentRoot_Mixed();
+
+ /**
+ * The meta object literal for the '<em><b>XMLNS Prefix Map</b></em>' map feature.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public static final EReference DOCUMENT_ROOT__XMLNS_PREFIX_MAP = eINSTANCE.getDocumentRoot_XMLNSPrefixMap();
+
+ /**
+ * The meta object literal for the '<em><b>XSI Schema Location</b></em>' map feature.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public static final EReference DOCUMENT_ROOT__XSI_SCHEMA_LOCATION = eINSTANCE.getDocumentRoot_XSISchemaLocation();
+
+ /**
+ * The meta object literal for the '<em><b>Stock Quote</b></em>' containment reference feature.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public static final EReference DOCUMENT_ROOT__STOCK_QUOTE = eINSTANCE.getDocumentRoot_StockQuote();
+
+ /**
+ * The meta object literal for the '{@link com.example.simple.impl.QuoteImpl <em>Quote</em>}' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @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 '<em><b>Symbol</b></em>' attribute feature.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public static final EAttribute QUOTE__SYMBOL = eINSTANCE.getQuote_Symbol();
+
+ /**
+ * The meta object literal for the '<em><b>Company Name</b></em>' attribute feature.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public static final EAttribute QUOTE__COMPANY_NAME = eINSTANCE.getQuote_CompanyName();
+
+ /**
+ * The meta object literal for the '<em><b>Price</b></em>' attribute feature.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public static final EAttribute QUOTE__PRICE = eINSTANCE.getQuote_Price();
+
+ /**
+ * The meta object literal for the '<em><b>Open1</b></em>' attribute feature.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public static final EAttribute QUOTE__OPEN1 = eINSTANCE.getQuote_Open1();
+
+ /**
+ * The meta object literal for the '<em><b>High</b></em>' attribute feature.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public static final EAttribute QUOTE__HIGH = eINSTANCE.getQuote_High();
+
+ /**
+ * The meta object literal for the '<em><b>Low</b></em>' attribute feature.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public static final EAttribute QUOTE__LOW = eINSTANCE.getQuote_Low();
+
+ /**
+ * The meta object literal for the '<em><b>Volume</b></em>' attribute feature.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public static final EAttribute QUOTE__VOLUME = eINSTANCE.getQuote_Volume();
+
+ /**
+ * The meta object literal for the '<em><b>Change1</b></em>' attribute feature.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public static final EAttribute QUOTE__CHANGE1 = eINSTANCE.getQuote_Change1();
+
+ /**
+ * The meta object literal for the '<em><b>Quotes</b></em>' containment reference list feature.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public static final EReference QUOTE__QUOTES = eINSTANCE.getQuote_Quotes();
+
+ }
+
+} //SimplePackageImpl
diff --git a/branches/sdo-java-M2/sdo/tools/src/test/java/org/apache/tuscany/sdo/test/SimpleStaticTest.java b/branches/sdo-java-M2/sdo/tools/src/test/java/org/apache/tuscany/sdo/test/SimpleStaticTest.java
new file mode 100644
index 0000000000..b177373b5e
--- /dev/null
+++ b/branches/sdo-java-M2/sdo/tools/src/test/java/org/apache/tuscany/sdo/test/SimpleStaticTest.java
@@ -0,0 +1,67 @@
+/**
+ *
+ * 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 org.apache.tuscany.sdo.util.SDOUtil;
+
+import com.example.simple.Quote;
+import com.example.simple.SimpleFactory;
+import commonj.sdo.DataObject;
+import commonj.sdo.helper.XMLHelper;
+
+
+public class SimpleStaticTest
+{
+ /**
+ * Simple Static SDO 2 test.
+ */
+ public static void main(String[] args)
+ {
+ try
+ {
+ SDOUtil.registerStaticTypes(SimpleFactory.class);
+
+ //Quote quote = (Quote)DataFactory.INSTANCE.create(Quote.class);
+ Quote quote = SimpleFactory.INSTANCE.createQuote();
+
+ quote.setSymbol("fbnt");
+ quote.setCompanyName("FlyByNightTechnology");
+ quote.setPrice(new BigDecimal("1000.0"));
+ quote.setOpen1(new BigDecimal("1000.0"));
+ quote.setHigh(new BigDecimal("1000.0"));
+ quote.setLow(new BigDecimal("1000.0"));
+ quote.setVolume(1000);
+ quote.setChange1(1000);
+
+ //Quote child = (Quote)((DataObject)quote).createDataObject(8);
+ Quote child = SimpleFactory.INSTANCE.createQuote();
+ quote.getQuotes().add(child);
+ child.setPrice(new BigDecimal("2000.0"));
+
+ XMLHelper.INSTANCE.save((DataObject)quote, "http://www.example.com/simple", "stockQuote", System.out);
+ }
+ catch (Exception e)
+ {
+ e.printStackTrace();
+ }
+ }
+}
diff --git a/branches/sdo-java-M2/sdo/tools/src/test/java/org/apache/tuscany/sdo/test/StaticSequenceNoEmfTestCase.java b/branches/sdo-java-M2/sdo/tools/src/test/java/org/apache/tuscany/sdo/test/StaticSequenceNoEmfTestCase.java
new file mode 100644
index 0000000000..966e52cdba
--- /dev/null
+++ b/branches/sdo-java-M2/sdo/tools/src/test/java/org/apache/tuscany/sdo/test/StaticSequenceNoEmfTestCase.java
@@ -0,0 +1,252 @@
+/**
+ *
+ * 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.math.BigDecimal;
+import java.util.List;
+
+import junit.framework.TestCase;
+
+import org.apache.tuscany.sdo.util.SDOUtil;
+
+import com.example.sequences.MixedQuote;
+import com.example.sequences.MixedRepeatingChoice;
+import com.example.sequences.RepeatingChoice;
+import com.example.sequences.SequencesFactory;
+import com.example.sequences.TwoRCs;
+import com.example.sequences.TwoRCsMixed;
+import commonj.sdo.DataObject;
+import commonj.sdo.Sequence;
+import commonj.sdo.Type;
+import commonj.sdo.helper.XMLHelper;
+
+
+public class StaticSequenceNoEmfTestCase extends TestCase {
+ private final String TEST_NAMESPACE = "http://www.example.com/sequences";
+ private final String MQ_TEST_DATA = "/mixedStaticTestResult.xml";
+ private final String RC_TEST_DATA = "/repeatingChoiceTestResult.xml";
+ private final String MRC_TEST_DATA = "/mixedRepeatingChoiceTestResult.xml";
+ private final String RC2_TEST_DATA = "/twoRepeatingChoicesTestResult.xml";
+ private final String RC2M_TEST_DATA = "/twoRepeatingChoicesMixedTestResult.xml";
+
+ /**
+ * Sequenced type SDO 2 test.
+ */
+ public void testMixedQuoteType() throws IOException {
+ MixedQuote quote = SequencesFactory.INSTANCE.createMixedQuote();
+
+ Type t = ((DataObject)quote).getType();
+ List ps = t.getProperties();
+
+
+ Sequence sequence = quote.getMixed();
+
+ sequence.add("\n ");
+
+ quote.setSymbol("fbnt");
+
+ sequence.add("\n ");
+
+ quote.setCompanyName("FlyByNightTechnology");
+
+ sequence.add("\n some text\n ");
+
+ List quotes = quote.getQuotes();
+ MixedQuote child = SequencesFactory.INSTANCE.createMixedQuote();
+ quotes.add(child);
+
+ child.setPrice(new BigDecimal("2000.0"));
+
+ sequence.add("\n more text\n ");
+
+ sequence.add("price", new BigDecimal("1000.0"));
+
+ sequence.add("\n");
+
+ ByteArrayOutputStream baos = new ByteArrayOutputStream();
+ XMLHelper.INSTANCE.save((DataObject)quote, TEST_NAMESPACE, "mixedStockQuote", baos);
+ assertTrue(baos.toString(), TestUtil.equalXmlFiles(new ByteArrayInputStream(baos.toByteArray()), getClass().getResource(MQ_TEST_DATA)));
+ }
+
+ public void testRepeatingChoice() throws IOException
+ {
+ RepeatingChoice rc = SequencesFactory.INSTANCE.createRepeatingChoice();
+
+ List as = rc.getA();
+ List bs = rc.getB();
+
+ bs.add(new Integer(1));
+ as.add("foo");
+ as.add("bar");
+ bs.add(new Integer(2));
+
+
+
+
+ Sequence group = rc.getGroup();
+ assertEquals(group.size(), 4);
+ assertEquals(rc.getA().size(), 2);
+ assertEquals(rc.getB().size(),2);
+
+ assertEquals(group.getValue(0), new Integer(1));
+ assertEquals(group.getValue(1), "foo");
+ assertEquals(group.getValue(2), "bar");
+ assertEquals(group.getValue(3), new Integer(2));
+ ByteArrayOutputStream baos = new ByteArrayOutputStream();
+
+ XMLHelper.INSTANCE.save((DataObject)rc, TEST_NAMESPACE, "rc", baos);
+ assertTrue(baos.toString(), TestUtil.equalXmlFiles(new ByteArrayInputStream(baos.toByteArray()), getClass().getResource(RC_TEST_DATA)));
+ }
+
+ public void testMixedRepeatingChoice() throws Exception {
+ MixedRepeatingChoice mrc = SequencesFactory.INSTANCE.createMixedRepeatingChoice();
+
+ List as = mrc.getA();
+ List bs = mrc.getB();
+
+
+ bs.add(new Integer(1));
+ as.add("foo");
+ Sequence mixed = mrc.getMixed();
+ mixed.add("some mixed text");
+ as.add("bar");
+ bs.add(new Integer(2));
+
+ // FIXME reintroduce check
+ // assertEquals(4, mrc.getGroup().size());
+ assertEquals(5, mrc.getMixed().size());
+ assertEquals(2, mrc.getA().size());
+ assertEquals(2, mrc.getB().size(),2);
+
+
+
+ assertEquals(mixed.getValue(0), new Integer(1));
+ assertEquals(mixed.getValue(1), "foo");
+ assertEquals(mixed.getValue(3), "bar");
+ assertEquals(mixed.getValue(4), new Integer(2));
+
+ ByteArrayOutputStream baos = new ByteArrayOutputStream();
+
+
+ XMLHelper.INSTANCE.save((DataObject)mrc, TEST_NAMESPACE, "mrc", baos);
+ assertTrue(baos.toString(), TestUtil.equalXmlFiles(new ByteArrayInputStream(baos.toByteArray()), getClass().getResource(MRC_TEST_DATA)));
+ }
+
+ public void test2RepeatingChoices() throws Exception {
+ TwoRCs rc2 = SequencesFactory.INSTANCE.createTwoRCs();
+
+ List as = rc2.getA();
+ List bs = rc2.getB();
+ List ys = rc2.getY();
+ List zs = rc2.getZ();
+
+ zs.add(new Integer(99));
+ bs.add(new Integer(1));
+ ys.add("fred");
+ as.add("foo");
+ as.add("bar");
+ bs.add(new Integer(2));
+ rc2.setSplit("banana");
+
+
+ Sequence group = rc2.getGroup();
+ assertEquals(group.size(), 4);
+ assertEquals(rc2.getA().size(), 2);
+ assertEquals(rc2.getB().size(),2);
+
+ Sequence group1 = rc2.getGroup1();
+ assertEquals(group1.size(), 2);
+ assertEquals(rc2.getY().size(), 1);
+ assertEquals(rc2.getZ().size(),1);
+
+ assertEquals(group.getValue(0), new Integer(1));
+ assertEquals(group.getValue(1), "foo");
+ assertEquals(group.getValue(2), "bar");
+ assertEquals(group.getValue(3), new Integer(2));
+ assertEquals(group1.getValue(0), new Integer(99));
+ assertEquals(group1.getValue(1), "fred");
+ ByteArrayOutputStream baos = new ByteArrayOutputStream();
+
+
+ XMLHelper.INSTANCE.save((DataObject)rc2, TEST_NAMESPACE, "rc2", baos);
+ assertTrue(baos.toString(), TestUtil.equalXmlFiles(new ByteArrayInputStream(baos.toByteArray()), getClass().getResource(RC2_TEST_DATA)));
+ }
+
+ protected void setUp() throws Exception {
+ super.setUp();
+ SDOUtil.registerStaticTypes(SequencesFactory.class);
+ }
+
+ protected void tearDown() throws Exception {
+ super.tearDown();
+ }
+
+ public void test2RepeatingChoicesMixed() throws Exception {
+ TwoRCsMixed rc2m = SequencesFactory.INSTANCE.createTwoRCsMixed();
+
+ List as = rc2m.getA();
+ List bs = rc2m.getB();
+ List ys = rc2m.getY();
+ List zs = rc2m.getZ();
+ Sequence mixed = rc2m.getMixed();
+
+ bs.add(new Integer(1));
+ mixed.add("where will this appear?");
+ as.add("foo");
+ as.add("bar");
+ bs.add(new Integer(2));
+ rc2m.setSplit("pea");
+ zs.add(new Integer(99));
+ ys.add("fred");
+
+
+ assertEquals(8, mixed.size());
+
+ Sequence group = rc2m.getGroup();
+ // FIXME reintroduce test assertEquals(4, group.size());
+ assertEquals(rc2m.getA().size(), 2);
+ assertEquals(rc2m.getB().size(),2);
+
+ Sequence group1 = rc2m.getGroup1();
+ // FIXME ditto assertEquals(group1.size(), 2);
+ assertEquals(rc2m.getY().size(), 1);
+ assertEquals(rc2m.getZ().size(),1);
+
+ int i = 0;
+ assertEquals(mixed.getValue(i++), new Integer(1));
+ assertEquals(mixed.getValue(i++), "where will this appear?");
+ assertEquals(mixed.getValue(i++), "foo");
+ assertEquals(mixed.getValue(i++), "bar");
+ assertEquals(mixed.getValue(i++), new Integer(2));
+ assertEquals(mixed.getValue(i++), "pea");
+ assertEquals(mixed.getValue(i++), new Integer(99));
+ assertEquals(mixed.getValue(i++), "fred");
+ ByteArrayOutputStream baos = new ByteArrayOutputStream();
+
+ XMLHelper.INSTANCE.save((DataObject)rc2m, TEST_NAMESPACE, "rc2m", baos);
+ assertTrue(baos.toString(), TestUtil.equalXmlFiles(new ByteArrayInputStream(baos.toByteArray()), getClass().getResource(RC2M_TEST_DATA)));
+ }
+
+
+}
diff --git a/branches/sdo-java-M2/sdo/tools/src/test/java/org/apache/tuscany/sdo/test/TestUtil.java b/branches/sdo-java-M2/sdo/tools/src/test/java/org/apache/tuscany/sdo/test/TestUtil.java
new file mode 100644
index 0000000000..0ca49b6122
--- /dev/null
+++ b/branches/sdo-java-M2/sdo/tools/src/test/java/org/apache/tuscany/sdo/test/TestUtil.java
@@ -0,0 +1,288 @@
+/**
+ *
+ * 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<length; i++)
+ {
+ Node node = nodeList.item(i);
+ nodes.add(node);
+ getAllNodes(node.getChildNodes(), nodes);
+ } // for
+ }
+
+ private static boolean equalNamedNodeMap(NamedNodeMap mapA, NamedNodeMap mapB) {
+ if (mapA == null) {
+ if (mapB == null) {
+ return true;
+ }
+ return false;
+ }
+ if (mapA.getLength() != mapB.getLength()) {
+ return false;
+ }
+ for (int i = 0; i < mapA.getLength(); i++) {
+ Node trialNode = mapA.item(i);
+ if (trialNode == null) {
+ return false;
+ }
+ Node checkNode = mapB.getNamedItem(trialNode.getNodeName());
+ if (checkNode == null) {
+ return false;
+ }
+ if (!equalNode(trialNode, checkNode)) {
+ return false;
+ }
+ }
+ return true;
+ }
+
+ private static boolean equalNode(Node nodeA, Node nodeB) {
+ if (nodeA == null) {
+ if (nodeB == null) {
+ return true;
+ }
+ return false;
+ }
+ // following is intended to provide same function as 1.5 isEqualNode()
+ if (nodeA.getNodeType() != nodeB.getNodeType()) {
+ return false;
+ }
+ if (!equalString(nodeA.getNodeName(), nodeB.getNodeName())) {
+ return false;
+ }
+ if (!equalString(nodeA.getLocalName(), nodeB.getLocalName())) {
+ return false;
+ }
+ if (!equalString(nodeA.getNamespaceURI(), nodeB.getNamespaceURI())) {
+ return false;
+ }
+ if (!equalString(nodeA.getNamespaceURI(), nodeB.getNamespaceURI())) {
+ return false;
+ }
+ if (!equalString(nodeA.getPrefix(), nodeB.getPrefix())) {
+ return false;
+ }
+ if (!equalString(nodeA.getNodeValue(), nodeB.getNodeValue())) {
+ return false;
+ }
+ if (!equalNamedNodeMap(nodeA.getAttributes(), nodeB.getAttributes())) {
+ return false;
+ }
+ if (!equalNodeList(nodeA.getChildNodes(), nodeB.getChildNodes())) {
+ return false;
+ }
+ if (nodeA.getNodeType() == Node.DOCUMENT_TYPE_NODE) {
+ DocumentType documentTypeA = (DocumentType) nodeA;
+ DocumentType documentTypeB = (DocumentType) nodeB;
+ if (!equalString(documentTypeA.getPublicId(), documentTypeB.getPublicId())) {
+ return false;
+ }
+ if (!equalString(documentTypeA.getSystemId(), documentTypeB.getSystemId())) {
+ return false;
+ }
+ if (!equalString(documentTypeA.getInternalSubset(), documentTypeB.getInternalSubset())) {
+ return false;
+ }
+ if (!equalNamedNodeMap(documentTypeA.getEntities(), documentTypeB.getEntities())) {
+ return false;
+ }
+ if (!equalNamedNodeMap(documentTypeA.getNotations(), documentTypeB.getNotations())) {
+ return false;
+ }
+ }
+ return true;
+ }
+
+ private static boolean equalNodeList(NodeList nodeListA, NodeList nodeListB) {
+ if (nodeListA == null) {
+ if (nodeListB == null) {
+ return true;
+ }
+ return false;
+ }
+ return equalNodes(nodeListA, nodeListB);
+ }
+
+ private static boolean equalString(String stringA, String stringB) {
+ if (stringA == null) {
+ if (stringB == null) {
+ return true;
+ }
+ return false;
+ }
+ return stringA.equals(stringB);
+ }
+
+ private static boolean equalNodes(NodeList sourceNodeList, NodeList targetNodeList)
+ {
+ ArrayList sourceNodes = new ArrayList();
+ ArrayList targetNodes = new ArrayList();
+
+ getAllNodes(sourceNodeList, sourceNodes);
+ getAllNodes(targetNodeList, targetNodes);
+
+ int sourceLength = sourceNodes.size();
+ int targetLength = targetNodes.size();
+
+ if (sourceLength != targetLength)
+ {
+ return false;
+ }
+
+ for (int i=0; i<sourceLength; i++)
+ {
+ Node sourceNode = (Node)sourceNodes.get(i);
+ Node targetNode = (Node)targetNodes.get(i);
+
+ /* remove comment when migrated to Java 1.5
+ if (!sourceNode.isEqualNode(targetNode))
+ {
+ return false;
+ }
+ */
+ // following is intended as 1.4 equivalent of isEqualNode()
+ if (!equalNode(sourceNode, targetNode))
+ {
+ return false;
+ }
+ } // for
+
+ return true;
+ }
+
+ public static boolean equalXmlFiles(URL source, URL target)
+ {
+ try {
+ return equalXmlFiles(source.openStream(), target.openStream());
+ }
+ catch (IOException e)
+ {
+ return false;
+ }
+ }
+
+ public static boolean equalXmlFiles(InputStream sourceStream, URL target)
+ {
+ try {
+ return equalXmlFiles(sourceStream, target.openStream());
+ }
+ catch (IOException e)
+ {
+ return false;
+ }
+ }
+
+ public static boolean equalXmlFiles(URL source, InputStream targetStream)
+ {
+ try {
+ return equalXmlFiles(source.openStream(), targetStream);
+ }
+ catch (IOException e)
+ {
+ return false;
+ }
+ }
+
+ public static boolean equalXmlFiles(InputStream sourceStream, InputStream targetStream)
+ {
+ DocumentBuilder builder;
+ Document sourceDocument;
+ Document targetDocument;
+
+ try {
+ DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance();
+ factory.setIgnoringComments(true);
+ builder = factory.newDocumentBuilder();
+ //builder = DocumentBuilderFactory.newInstance().newDocumentBuilder();
+ sourceDocument = builder.parse(sourceStream);
+ targetDocument = builder.parse(targetStream);
+ }
+ catch (FactoryConfigurationError fce) {
+ return false;
+ }
+ catch (ParserConfigurationException ce) {
+ return false;
+ }
+ catch (SAXException se)
+ {
+ return false;
+ }
+ catch (IOException ie)
+ {
+ return false;
+ }
+
+ sourceDocument.normalize();
+ targetDocument.normalize();
+
+ /* remove comment when migrated to Java 1.5
+ if (!sourceDocument.getXmlVersion().equals(targetDocument.getXmlVersion()))
+ {
+ return false;
+ }
+
+ String sourceXmlEncoding = sourceDocument.getXmlEncoding();
+ String targetXmlEncoding = targetDocument.getXmlEncoding();
+
+ if (sourceXmlEncoding != null && targetXmlEncoding != null &&
+ sourceXmlEncoding.equalsIgnoreCase(targetXmlEncoding))
+ {
+ // continue
+ }
+ else
+ {
+ return false;
+ }
+ */
+
+ NodeList sourceNodes = sourceDocument.getChildNodes();
+ NodeList targetNodes = targetDocument.getChildNodes();
+
+ return equalNodes(sourceNodes, targetNodes);
+ }
+}
diff --git a/branches/sdo-java-M2/sdo/tools/src/test/resources/enum.xsd b/branches/sdo-java-M2/sdo/tools/src/test/resources/enum.xsd
new file mode 100644
index 0000000000..8be96d6896
--- /dev/null
+++ b/branches/sdo-java-M2/sdo/tools/src/test/resources/enum.xsd
@@ -0,0 +1,50 @@
+<?xml version="1.0" encoding="UTF-8"?>
+ <!--
+ Licensed to the Apache Software Foundation (ASF) under one
+ or more contributor license agreements. See the NOTICE file
+ distributed with this work for additional information
+ regarding copyright ownership. The ASF licenses this file
+ to you under the Apache License, Version 2.0 (the
+ "License"); you may not use this file except in compliance
+ with the License. You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing,
+ software distributed under the License is distributed on an
+ "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ KIND, either express or implied. See the License for the
+ specific language governing permissions and limitations
+ under the License.
+ -->
+<xsd:schema
+ targetNamespace="http://www.example.com/simple"
+ xmlns:xsd="http://www.w3.org/2001/XMLSchema"
+ xmlns:simple="http://www.example.com/simple">
+
+ <xsd:element name="stockQuote" type="simple:Quote"/>
+
+ <xsd:simpleType name="PriceClass">
+ <xsd:restriction base="xsd:string">
+ <xsd:enumeration value="Large"/>
+ <xsd:enumeration value="Medium"/>
+ <xsd:enumeration value="Small"/>
+ </xsd:restriction>
+ </xsd:simpleType>
+
+ <xsd:complexType name="Quote">
+ <xsd:sequence>
+ <xsd:element name="symbol" type="xsd:string"/>
+ <xsd:element name="companyName" type="xsd:string"/>
+ <xsd:element name="priceClass" type="simple:PriceClass"/>
+ <xsd:element name="price" type="xsd:decimal"/>
+ <xsd:element name="open1" type="xsd:decimal"/>
+ <xsd:element name="high" type="xsd:decimal"/>
+ <xsd:element name="low" type="xsd:decimal"/>
+ <xsd:element name="volume" type="xsd:double"/>
+ <xsd:element name="change1" type="xsd:double"/>
+ <xsd:element name="quotes" type="simple:Quote" minOccurs="0" maxOccurs="unbounded"/>
+ </xsd:sequence>
+ </xsd:complexType>
+
+</xsd:schema>
diff --git a/branches/sdo-java-M2/sdo/tools/src/test/resources/mixedRepeatingChoiceTestResult.xml b/branches/sdo-java-M2/sdo/tools/src/test/resources/mixedRepeatingChoiceTestResult.xml
new file mode 100644
index 0000000000..cefaf93fa3
--- /dev/null
+++ b/branches/sdo-java-M2/sdo/tools/src/test/resources/mixedRepeatingChoiceTestResult.xml
@@ -0,0 +1,25 @@
+<?xml version="1.0" encoding="ASCII"?>
+<!--
+ 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.
+ -->
+<sequences:mrc xmlns:sequences="http://www.example.com/sequences">
+ <b>1</b>
+ <a>foo</a>
+some mixed text <a>bar</a>
+ <b>2</b>
+</sequences:mrc>
diff --git a/branches/sdo-java-M2/sdo/tools/src/test/resources/mixedStaticTestResult.xml b/branches/sdo-java-M2/sdo/tools/src/test/resources/mixedStaticTestResult.xml
new file mode 100644
index 0000000000..01a20bd350
--- /dev/null
+++ b/branches/sdo-java-M2/sdo/tools/src/test/resources/mixedStaticTestResult.xml
@@ -0,0 +1,34 @@
+<?xml version="1.0" encoding="ASCII"?>
+<!--
+ 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.
+ -->
+<sequences:mixedStockQuote xmlns:sequences="http://www.example.com/sequences">
+
+ <symbol>fbnt</symbol>
+
+ <companyName>FlyByNightTechnology</companyName>
+
+ some text
+ <quotes>
+ <price>2000.0</price>
+ </quotes>
+
+ more text
+ <price>1000.0</price>
+
+</sequences:mixedStockQuote>
diff --git a/branches/sdo-java-M2/sdo/tools/src/test/resources/repeatingChoice.xsd b/branches/sdo-java-M2/sdo/tools/src/test/resources/repeatingChoice.xsd
new file mode 100644
index 0000000000..3650b634ab
--- /dev/null
+++ b/branches/sdo-java-M2/sdo/tools/src/test/resources/repeatingChoice.xsd
@@ -0,0 +1,33 @@
+<?xml version="1.0" encoding="UTF-8"?>
+ <!--
+ Licensed to the Apache Software Foundation (ASF) under one
+ or more contributor license agreements. See the NOTICE file
+ distributed with this work for additional information
+ regarding copyright ownership. The ASF licenses this file
+ to you under the Apache License, Version 2.0 (the
+ "License"); you may not use this file except in compliance
+ with the License. You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing,
+ software distributed under the License is distributed on an
+ "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ KIND, either express or implied. See the License for the
+ specific language governing permissions and limitations
+ under the License.
+ -->
+
+<xsd:schema xmlns:repchoice="http://www.example.com/repchoice" xmlns:xsd="http://www.w3.org/2001/XMLSchema" targetNamespace="http://www.example.com/repchoice">
+
+ <xsd:element name="rc" type="repchoice:RCType"/>
+
+ <xsd:complexType name="RCType">
+ <xsd:choice maxOccurs="unbounded" minOccurs="0">
+ <xsd:element name="s" type="xsd:string"/>
+ <xsd:element name="i" type="xsd:int"/>
+ <xsd:element name="f" type="xsd:float"/>
+ </xsd:choice>
+ </xsd:complexType>
+
+</xsd:schema>
diff --git a/branches/sdo-java-M2/sdo/tools/src/test/resources/repeatingChoiceTestResult.xml b/branches/sdo-java-M2/sdo/tools/src/test/resources/repeatingChoiceTestResult.xml
new file mode 100644
index 0000000000..2719457b6d
--- /dev/null
+++ b/branches/sdo-java-M2/sdo/tools/src/test/resources/repeatingChoiceTestResult.xml
@@ -0,0 +1,25 @@
+<?xml version="1.0" encoding="ASCII"?>
+<!--
+ 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.
+ -->
+<sequences:rc xmlns:sequences="http://www.example.com/sequences">
+ <b>1</b>
+ <a>foo</a>
+ <a>bar</a>
+ <b>2</b>
+</sequences:rc>
diff --git a/branches/sdo-java-M2/sdo/tools/src/test/resources/sequences.xsd b/branches/sdo-java-M2/sdo/tools/src/test/resources/sequences.xsd
new file mode 100644
index 0000000000..7d1d9e07ac
--- /dev/null
+++ b/branches/sdo-java-M2/sdo/tools/src/test/resources/sequences.xsd
@@ -0,0 +1,100 @@
+<?xml version="1.0" encoding="UTF-8"?>
+ <!--
+ Licensed to the Apache Software Foundation (ASF) under one
+ or more contributor license agreements. See the NOTICE file
+ distributed with this work for additional information
+ regarding copyright ownership. The ASF licenses this file
+ to you under the Apache License, Version 2.0 (the
+ "License"); you may not use this file except in compliance
+ with the License. You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing,
+ software distributed under the License is distributed on an
+ "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ KIND, either express or implied. See the License for the
+ specific language governing permissions and limitations
+ under the License.
+ -->
+<xsd:schema xmlns:seq="http://www.example.com/sequences"
+ xmlns:xsd="http://www.w3.org/2001/XMLSchema"
+ targetNamespace="http://www.example.com/sequences">
+
+ <xsd:element name="mixedStockQuote" type="seq:MixedQuote" />
+ <xsd:element name="rc" type="seq:RepeatingChoice" />
+ <xsd:element name="mrc" type="seq:MixedRepeatingChoice" />
+ <xsd:element name="rc2" type="seq:TwoRCs" />
+ <xsd:element name="mrc2" type="seq:TwoRCsMixed" />
+
+
+
+ <xsd:complexType mixed="true" name="MixedQuote">
+ <xsd:sequence>
+ <xsd:element name="symbol" type="xsd:string" />
+ <xsd:element name="companyName" type="xsd:string" />
+ <xsd:element name="price" type="xsd:decimal" />
+ <xsd:element name="open1" type="xsd:decimal" />
+ <xsd:element name="high" type="xsd:decimal" />
+ <xsd:element name="low" type="xsd:decimal" />
+ <xsd:element name="volume" type="xsd:double" />
+ <xsd:element name="change1" type="xsd:double" />
+ <xsd:element maxOccurs="unbounded" minOccurs="0"
+ name="quotes" type="seq:MixedQuote" />
+ </xsd:sequence>
+ </xsd:complexType>
+
+
+ <xsd:complexType name="RepeatingChoice">
+ <xsd:choice maxOccurs="unbounded" minOccurs="0">
+ <xsd:element name="a" type="xsd:string" />
+ <xsd:element name="b" type="xsd:int" />
+ </xsd:choice>
+ </xsd:complexType>
+
+
+ <xsd:complexType mixed="true" name="MixedRepeatingChoice">
+ <xsd:choice maxOccurs="unbounded" minOccurs="0">
+ <xsd:element name="a" type="xsd:string" />
+ <xsd:element name="b" type="xsd:int" />
+ </xsd:choice>
+ </xsd:complexType>
+
+
+ <xsd:complexType name="TwoRCs">
+ <xsd:sequence>
+
+ <xsd:choice maxOccurs="unbounded" minOccurs="0">
+ <xsd:element name="a" type="xsd:string" />
+ <xsd:element name="b" type="xsd:int" />
+ </xsd:choice>
+
+ <xsd:element name="split" type="xsd:string" />
+
+ <xsd:choice maxOccurs="unbounded" minOccurs="0">
+ <xsd:element name="y" type="xsd:string" />
+ <xsd:element name="z" type="xsd:int" />
+ </xsd:choice>
+
+ </xsd:sequence>
+ </xsd:complexType>
+
+ <xsd:complexType mixed="true" name="TwoRCsMixed">
+ <xsd:sequence>
+
+ <xsd:choice maxOccurs="unbounded" minOccurs="0">
+ <xsd:element name="a" type="xsd:string" />
+ <xsd:element name="b" type="xsd:int" />
+ </xsd:choice>
+
+ <xsd:element name="split" type="xsd:string" />
+
+ <xsd:choice maxOccurs="unbounded" minOccurs="0">
+ <xsd:element name="y" type="xsd:string" />
+ <xsd:element name="z" type="xsd:int" />
+ </xsd:choice>
+
+ </xsd:sequence>
+ </xsd:complexType>
+
+</xsd:schema>
diff --git a/branches/sdo-java-M2/sdo/tools/src/test/resources/simple.xsd b/branches/sdo-java-M2/sdo/tools/src/test/resources/simple.xsd
new file mode 100644
index 0000000000..4092113c42
--- /dev/null
+++ b/branches/sdo-java-M2/sdo/tools/src/test/resources/simple.xsd
@@ -0,0 +1,41 @@
+<?xml version="1.0" encoding="UTF-8"?>
+ <!--
+ Licensed to the Apache Software Foundation (ASF) under one
+ or more contributor license agreements. See the NOTICE file
+ distributed with this work for additional information
+ regarding copyright ownership. The ASF licenses this file
+ to you under the Apache License, Version 2.0 (the
+ "License"); you may not use this file except in compliance
+ with the License. You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing,
+ software distributed under the License is distributed on an
+ "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ KIND, either express or implied. See the License for the
+ specific language governing permissions and limitations
+ under the License.
+ -->
+<xsd:schema
+ targetNamespace="http://www.example.com/simple"
+ xmlns:xsd="http://www.w3.org/2001/XMLSchema"
+ xmlns:simple="http://www.example.com/simple">
+
+ <xsd:element name="stockQuote" type="simple:Quote"/>
+
+ <xsd:complexType name="Quote">
+ <xsd:sequence>
+ <xsd:element name="symbol" type="xsd:string"/>
+ <xsd:element name="companyName" type="xsd:string"/>
+ <xsd:element name="price" type="xsd:decimal"/>
+ <xsd:element name="open1" type="xsd:decimal"/>
+ <xsd:element name="high" type="xsd:decimal"/>
+ <xsd:element name="low" type="xsd:decimal"/>
+ <xsd:element name="volume" type="xsd:double"/>
+ <xsd:element name="change1" type="xsd:double"/>
+ <xsd:element name="quotes" type="simple:Quote" minOccurs="0" maxOccurs="unbounded"/>
+ </xsd:sequence>
+ </xsd:complexType>
+
+</xsd:schema>
diff --git a/branches/sdo-java-M2/sdo/tools/src/test/resources/twoRepeatingChoicesMixedTestResult.xml b/branches/sdo-java-M2/sdo/tools/src/test/resources/twoRepeatingChoicesMixedTestResult.xml
new file mode 100644
index 0000000000..cfc434c8e8
--- /dev/null
+++ b/branches/sdo-java-M2/sdo/tools/src/test/resources/twoRepeatingChoicesMixedTestResult.xml
@@ -0,0 +1,28 @@
+<?xml version="1.0" encoding="ASCII"?>
+<!--
+ 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.
+ -->
+<sequences:rc2m xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:sequences="http://www.example.com/sequences" xsi:type="sequences:TwoRCsMixed">
+ <b>1</b>
+where will this appear? <a>foo</a>
+ <a>bar</a>
+ <b>2</b>
+ <split>pea</split>
+ <z>99</z>
+ <y>fred</y>
+</sequences:rc2m>
diff --git a/branches/sdo-java-M2/sdo/tools/src/test/resources/twoRepeatingChoicesTestResult.xml b/branches/sdo-java-M2/sdo/tools/src/test/resources/twoRepeatingChoicesTestResult.xml
new file mode 100644
index 0000000000..3585ad00d3
--- /dev/null
+++ b/branches/sdo-java-M2/sdo/tools/src/test/resources/twoRepeatingChoicesTestResult.xml
@@ -0,0 +1,28 @@
+<?xml version="1.0" encoding="ASCII"?>
+<!--
+ 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.
+ -->
+<sequences:rc2 xmlns:sequences="http://www.example.com/sequences">
+ <b>1</b>
+ <a>foo</a>
+ <a>bar</a>
+ <b>2</b>
+ <split>banana</split>
+ <z>99</z>
+ <y>fred</y>
+</sequences:rc2>
diff --git a/branches/sdo-java-M2/sdo/tools/templates/Header.javajetinc b/branches/sdo-java-M2/sdo/tools/templates/Header.javajetinc
new file mode 100644
index 0000000000..27becf3645
--- /dev/null
+++ b/branches/sdo-java-M2/sdo/tools/templates/Header.javajetinc
@@ -0,0 +1,6 @@
+/**
+ * <copyright>
+ * </copyright>
+ *
+ * <%="$"%>Id<%="$"%>
+ */
diff --git a/branches/sdo-java-M2/sdo/tools/templates/models/SDOClass.javajet b/branches/sdo-java-M2/sdo/tools/templates/models/SDOClass.javajet
new file mode 100644
index 0000000000..8daf6a9904
--- /dev/null
+++ b/branches/sdo-java-M2/sdo/tools/templates/models/SDOClass.javajet
@@ -0,0 +1,1844 @@
+<%@ jet package="org.apache.tuscany.sdo.generate.templates.model" imports="org.eclipse.emf.codegen.util.* java.util.* org.eclipse.emf.codegen.ecore.genmodel.*" class="SDOClass" version="$Id: Class.javajet,v 1.41 2006/02/15 19:58:39 emerks Exp $" %>
+<%
+/**
+ *
+ * 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.
+ */
+%>
+<%GenClass genClass = (GenClass)((Object[])argument)[0]; GenPackage genPackage = genClass.getGenPackage(); GenModel genModel=genPackage.getGenModel();%>
+<%boolean isInterface = Boolean.TRUE.equals(((Object[])argument)[1]); boolean isImplementation = Boolean.TRUE.equals(((Object[])argument)[2]);%>
+<%String publicStaticFinalFlag = isImplementation ? "public static final " : "";%>
+<%@ include file="../Header.javajetinc"%>
+<%if (isInterface) {%>
+package <%=genPackage.getInterfacePackageName()%>;
+<%} else {%>
+package <%=genPackage.getClassPackageName()%>;
+<%}%>
+
+<%genModel.markImportLocation(stringBuffer, genPackage);%>
+
+<%if (isInterface) {%>
+/**
+ * <!-- begin-user-doc -->
+ * A representation of the model object '<em><b><%=genClass.getFormattedName()%></b></em>'.
+ * <!-- end-user-doc -->
+<%if (genClass.hasDocumentation()) {%>
+ *
+ * <!-- begin-model-doc -->
+ * <%=genClass.getDocumentation(genModel.getIndentation(stringBuffer))%>
+ * <!-- end-model-doc -->
+<%}%>
+ *
+<%if (!genClass.getGenFeatures().isEmpty()) {%>
+ * <p>
+ * The following features are supported:
+ * <ul>
+<%for (Iterator i=genClass.getGenFeatures().iterator(); i.hasNext();) { GenFeature genFeature = (GenFeature)i.next();%>
+ <%if (!genFeature.isSuppressedGetVisibility()) {%>
+ * <li>{@link <%=genClass.getQualifiedInterfaceName()%>#<%=genFeature.getGetAccessor()%> <em><%=genFeature.getFormattedName()%></em>}</li>
+ <%}%>
+<%}%>
+ * </ul>
+ * </p>
+<%}%>
+ *
+<%if (!genModel.isSuppressEMFMetaData()) {%>
+ * @see <%=genPackage.getQualifiedPackageInterfaceName()%>#get<%=genClass.getClassifierAccessorName()%>()
+<%}%>
+<%if (!genModel.isSuppressEMFModelTags()) { boolean first = true; for (StringTokenizer stringTokenizer = new StringTokenizer(genClass.getModelInfo(), "\n\r"); stringTokenizer.hasMoreTokens(); ) { String modelInfo = stringTokenizer.nextToken(); if (first) { first = false;%>
+ * @model <%=modelInfo%>
+<%} else {%>
+ * <%=modelInfo%>
+<%}} if (first) {%>
+ * @model
+<%}}%>
+<%if (genClass.needsRootExtendsInterfaceExtendsTag()) {%>
+ * @extends <%=genModel.getImportedName(genModel.getRootExtendsInterface())%>
+<%}%>
+ * @generated
+ */
+<%} else {%>
+/**
+ * <!-- begin-user-doc -->
+ * An implementation of the model object '<em><b><%=genClass.getFormattedName()%></b></em>'.
+ * <!-- end-user-doc -->
+ * <p>
+<%if (!genClass.getImplementedGenFeatures().isEmpty()) {%>
+ * The following features are implemented:
+ * <ul>
+<%for (Iterator i=genClass.getImplementedGenFeatures().iterator(); i.hasNext();) { GenFeature genFeature = (GenFeature)i.next();%>
+ * <li>{@link <%=genClass.getQualifiedClassName()%>#<%=genFeature.getGetAccessor()%> <em><%=genFeature.getFormattedName()%></em>}</li>
+<%}%>
+ * </ul>
+<%}%>
+ * </p>
+ *
+ * @generated
+ */
+<%}%>
+<%if (isImplementation) {%>
+public<%if (genClass.isAbstract()) {%> abstract<%}%> class <%=genClass.getClassName()%><%=genClass.getClassExtends()%><%=genClass.getClassImplements()%>
+<%} else {%>
+public interface <%=genClass.getInterfaceName()%><%=genClass.getInterfaceExtends()%>
+<%}%>
+{
+<%if (genModel.getCopyrightText() != null) {%>
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ <%=publicStaticFinalFlag%><%=genModel.getImportedName("java.lang.String")%> copyright = "<%=genModel.getCopyrightText()%>";<%=genModel.getNonNLS()%>
+
+<%}%>
+<%if (isImplementation && genModel.getDriverNumber() != null) {%>
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public static final <%=genModel.getImportedName("java.lang.String")%> mofDriverNumber = "<%=genModel.getDriverNumber()%>";<%=genModel.getNonNLS()%>
+
+<%}%>
+<%if (isImplementation && genClass.isJavaIOSerializable()) {%>
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ private static final long serialVersionUID = 1L;
+
+<%}%>
+<%if (isImplementation && genModel.isVirtualDelegation()) { String eVirtualValuesField = genClass.getEVirtualValuesField();%>
+ <%if (eVirtualValuesField != null) {%>
+ /**
+ * An array of objects representing the values of non-primitive features.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ protected Object[] <%=eVirtualValuesField%> = null;
+
+ <%}%>
+ <%{ List eVirtualIndexBitFields = genClass.getEVirtualIndexBitFields(new ArrayList());%>
+ <%if (!eVirtualIndexBitFields.isEmpty()) {%>
+ <%for (Iterator i = eVirtualIndexBitFields.iterator(); i.hasNext();) { String eVirtualIndexBitField = (String)i.next();%>
+ /**
+ * A bit field representing the indices of non-primitive feature values.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ protected int <%=eVirtualIndexBitField%> = 0;
+
+ <%}%>
+ <%}%>
+ <%}%>
+<%}%>
+<%if (isImplementation && genClass.isModelRoot() && genModel.isBooleanFlagsEnabled() && genModel.getBooleanFlagsReservedBits() == -1) {%>
+ /**
+ * A set of bit flags representing the values of boolean attributes and whether unsettable features have been set.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ protected int <%=genModel.getBooleanFlagsField()%> = 0;
+
+<%}%>
+<%if (isImplementation && !genModel.isReflectiveDelegation()) {%>
+ <%for (Iterator f=genClass.getAllGenFeatures().iterator(); f.hasNext();) { GenFeature genFeature = (GenFeature)f.next();%>
+ /**
+ * The feature id for the '<em><b><%=genFeature.getFormattedName()%></b></em>' <%=genFeature.getFeatureKind()%>.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ <%String featureValue = "";
+ List allFeatures = genClass.getAllGenFeatures();
+ int g = allFeatures.indexOf(genFeature);
+ GenClass base = genClass.getBaseGenClass();
+ if (base == null)
+ {
+ featureValue = Integer.toString(g);
+ } else {
+ int baseCount = base.getFeatureCount();
+ if (g < baseCount)
+ {
+ featureValue = base.getClassName() + "." + genFeature.getUpperName();
+ } else {
+ String baseCountID = base.getClassName() + "." + "SDO_PROPERTY_COUNT";
+ featureValue = baseCountID + " + " + Integer.toString(g - baseCount);
+ }
+ }%>
+ public final static int <%=genFeature.getUpperName()%> = <%=featureValue%>;
+
+ <%}%>
+ /**
+ * This represents the number of properties for this type.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ <%String featureCount = "";
+ GenClass base = genClass.getBaseGenClass();
+ if (base == null)
+ {
+ featureCount = Integer.toString(genClass.getFeatureCount());
+ }
+ else {
+ String baseCountID = base.getClassName() + "." + "SDO_PROPERTY_COUNT";
+ featureCount = baseCountID + " + " + Integer.toString(genClass.getFeatureCount() - base.getFeatureCount());
+ }%>
+ public final static int SDO_PROPERTY_COUNT = <%=featureCount%>;
+
+ <%for (Iterator i=genClass.getDeclaredFieldGenFeatures().iterator(); i.hasNext();) { GenFeature genFeature = (GenFeature)i.next();%>
+<%@ include file="Class/declaredFieldGenFeature.override.javajetinc" fail="alternative" %>
+<%@ start %>
+ <%if (genFeature.isListType() || genFeature.isReferenceType()) {%>
+ <%if (genClass.isField(genFeature)) {%>
+ /**
+ * The cached value of the '{@link #<%=genFeature.getGetAccessor()%>() <em><%=genFeature.getFormattedName()%></em>}' <%=genFeature.getFeatureKind()%>.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #<%=genFeature.getGetAccessor()%>()
+ * @generated
+ * @ordered
+ */
+
+ protected <%=genModel.getImportedName(genFeature.getType())%> <%=genFeature.getSafeName()%> = null;
+
+ <%}%>
+ <%if (genModel.isArrayAccessors() && !genFeature.isFeatureMapType() && !genFeature.isMapType()) {%>
+ /**
+ * The empty value for the '{@link #<%=genFeature.getGetArrayAccessor()%>() <em><%=genFeature.getFormattedName()%></em>}' array accessor.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #<%=genFeature.getGetArrayAccessor()%>()
+ * @generated
+ * @ordered
+ */
+ protected static final <%=genFeature.getListItemType()%>[] <%=genFeature.getUpperName()%>_EEMPTY_ARRAY = new <%=genFeature.getListItemType()%> [0];
+
+ <%}%>
+ <%} else {%>
+ <%if (!genFeature.isVolatile() || !genModel.isReflectiveDelegation() && (!genFeature.hasDelegateFeature() || !genFeature.isUnsettable())) {%>
+ /**
+ * The default value of the '{@link #<%=genFeature.getGetAccessor()%>() <em><%=genFeature.getFormattedName()%></em>}' <%=genFeature.getFeatureKind()%>.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #<%=genFeature.getGetAccessor()%>()
+ * @generated
+ * @ordered
+ */
+ protected static final <%=genFeature.getImportedType()%> <%=genFeature.getUpperName()%>_DEFAULT_ = <%=genFeature.getStaticDefaultValue()%>;<%=genModel.getNonNLS(genFeature.getStaticDefaultValue())%>
+
+ <%}%>
+ <%if (genClass.isField(genFeature)) {%>
+ <%if (genClass.isFlag(genFeature)) {%>
+ <%if (genClass.getFlagIndex(genFeature) > 31 && genClass.getFlagIndex(genFeature) % 32 == 0) {%>
+ /**
+ * An additional set of bit flags representing the values of boolean attributes and whether unsettable features have been set.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ protected int <%=genClass.getFlagsField(genFeature)%> = 0;
+
+ <%}%>
+ /**
+ * The flag representing the value of the '{@link #<%=genFeature.getGetAccessor()%>() <em><%=genFeature.getFormattedName()%></em>}' <%=genFeature.getFeatureKind()%>.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #<%=genFeature.getGetAccessor()%>()
+ * @generated
+ * @ordered
+ */
+ protected static final int <%=genFeature.getUpperName()%>_EFLAG = 1 <%="<< " + genClass.getFlagIndex(genFeature) % 32 %>;
+
+ <%} else {%>
+ /**
+ * The cached value of the '{@link #<%=genFeature.getGetAccessor()%>() <em><%=genFeature.getFormattedName()%></em>}' <%=genFeature.getFeatureKind()%>.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #<%=genFeature.getGetAccessor()%>()
+ * @generated
+ * @ordered
+ */
+ protected <%=genFeature.getImportedType()%> <%=genFeature.getSafeName()%> = <%=genFeature.getUpperName()%>_DEFAULT_;
+
+ <%}%>
+ <%}%>
+ <%}%>
+ <%if (genClass.isESetField(genFeature)) {%>
+ <%if (genClass.isESetFlag(genFeature)) {%>
+ <%if (genClass.getESetFlagIndex(genFeature) > 31 && genClass.getESetFlagIndex(genFeature) % 32 == 0) {%>
+ /**
+ * An additional set of bit flags representing the values of boolean attributes and whether unsettable features have been set.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ protected int <%=genClass.getESetFlagsField(genFeature)%> = 0;
+
+ <%}%>
+ /**
+ * The flag representing whether the <%=genFeature.getFormattedName()%> <%=genFeature.getFeatureKind()%> has been set.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ protected static final int <%=genFeature.getUpperName()%>_ESETFLAG = 1 <%="<< " + genClass.getESetFlagIndex(genFeature) % 32 %>;
+
+ <%} else {%>
+ /**
+ * This is true if the <%=genFeature.getFormattedName()%> <%=genFeature.getFeatureKind()%> has been set.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ protected boolean <%=genFeature.getUncapName()%>_set_ = false;
+
+ <%}%>
+ <%}%>
+ <%}%>
+<%@ include file="Class/declaredFieldGenFeature.insert.javajetinc" fail="silent" %>
+<%@ end %><%//Class/declaredFieldGenFeature.override.javajetinc%>
+<%}%>
+<%if (isImplementation) {%>
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ protected <%=genClass.getClassName()%>()
+ {
+ super();
+ <%for (Iterator i=genClass.getFlagGenFeatures("true").iterator(); i.hasNext();) { GenFeature genFeature = (GenFeature)i.next();%>
+ <%=genClass.getFlagsField(genFeature)%> |= <%=genFeature.getUpperName()%>_EFLAG;
+ <%}%>
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public <%=genModel.getImportedName("commonj.sdo.Type")%> getType()
+ {
+ return ((<%=genPackage.getImportedFactoryClassName()%>)<%=genPackage.getImportedFactoryInterfaceName()%>.INSTANCE).get<%=genClass.getClassifierAccessorName()%>();
+ }
+
+<%}%>
+<%for (Iterator i=(isImplementation ? genClass.getImplementedGenFeatures() : genClass.getDeclaredGenFeatures()).iterator(); i.hasNext();) { GenFeature genFeature = (GenFeature)i.next();%>
+<%@ include file="Class/genFeature.override.javajetinc" fail="alternative" %>
+<%@ start %>
+ <%if (genModel.isArrayAccessors() && genFeature.isListType() && !genFeature.isFeatureMapType() && !genFeature.isMapType()) {%>
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ <%if (!isImplementation) {%>
+ <%=genFeature.getListItemType()%>[] <%=genFeature.getGetArrayAccessor()%>();
+
+ <%} else {%>
+ public <%=genFeature.getListItemType()%>[] <%=genFeature.getGetArrayAccessor()%>()
+ {
+ <%if (genFeature.isVolatile()) {%>
+ <%=genModel.getImportedName("org.eclipse.emf.common.util.BasicEList")%> list = (<%=genModel.getImportedName("org.eclipse.emf.common.util.BasicEList")%>)<%=genFeature.getGetAccessor()%>();
+ if (list.isEmpty()) return <%=genFeature.getUpperName()%>_EEMPTY_ARRAY;
+ <%} else {%>
+ if (<%=genFeature.getSafeName()%> == null || <%=genFeature.getSafeName()%>.isEmpty()) return <%=genFeature.getUpperName()%>_EEMPTY_ARRAY;
+ <%=genModel.getImportedName("org.eclipse.emf.common.util.BasicEList")%> list = (<%=genModel.getImportedName("org.eclipse.emf.common.util.BasicEList")%>)<%=genFeature.getSafeName()%>;
+ <%}%>
+ list.shrink();
+ return (<%=genFeature.getListItemType()%>[])list.data();
+ }
+
+ <%}%>
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ <%if (!isImplementation) {%>
+ <%=genFeature.getListItemType()%> get<%=genFeature.getAccessorName()%>(int index);
+ <%} else {%>
+ public <%=genFeature.getListItemType()%> get<%=genFeature.getAccessorName()%>(int index)
+ {
+ return (<%=genFeature.getListItemType()%>)<%=genFeature.getGetAccessor()%>().get(index);
+ }
+ <%}%>
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ <%if (!isImplementation) {%>
+ int get<%=genFeature.getAccessorName()%>Length();
+
+ <%} else {%>
+ public int get<%=genFeature.getAccessorName()%>Length()
+ {
+ <%if (genFeature.isVolatile()) {%>
+ return <%=genFeature.getGetAccessor()%>().size();
+ <%} else {%>
+ return <%=genFeature.getSafeName()%> == null ? 0 : <%=genFeature.getSafeName()%>.size();
+ <%}%>
+ }
+
+ <%}%>
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ <%if (!isImplementation) {%>
+ void set<%=genFeature.getAccessorName()%>(<%=genFeature.getListItemType()%>[] new<%=genFeature.getCapName()%>);
+
+ <%} else {%>
+ public void set<%=genFeature.getAccessorName()%>(<%=genFeature.getListItemType()%>[] new<%=genFeature.getCapName()%>)
+ {
+ ((<%=genModel.getImportedName("org.eclipse.emf.common.util.BasicEList")%>)<%=genFeature.getGetAccessor()%>()).setData(new<%=genFeature.getCapName()%>.length, new<%=genFeature.getCapName()%>);
+ }
+
+ <%}%>
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ <%if (!isImplementation) {%>
+ void set<%=genFeature.getAccessorName()%>(int index, <%=genFeature.getListItemType()%> element);
+
+ <%} else {%>
+ public void set<%=genFeature.getAccessorName()%>(int index, <%=genFeature.getListItemType()%> element)
+ {
+ <%=genFeature.getGetAccessor()%>().set(index, element);
+ }
+
+ <%}%>
+ <%}%>
+ <%if (genFeature.isGet() && (isImplementation || !genFeature.isSuppressedGetVisibility())) {%>
+<%@ include file="Class/getGenFeature.override.javajetinc" fail="alternative" %>
+<%@ start %>
+<%if (isInterface) {%>
+ /**
+ * Returns the value of the '<em><b><%=genFeature.getFormattedName()%></b></em>' <%=genFeature.getFeatureKind()%>.
+ <%if (genFeature.isListType()) {%>
+ <%if (genFeature.isMapType()) { GenFeature keyFeature = genFeature.getMapEntryTypeGenClass().getMapEntryKeyFeature(); GenFeature valueFeature = genFeature.getMapEntryTypeGenClass().getMapEntryValueFeature(); %>
+ * The key is of type <%if (keyFeature.isListType()) {%>list of {@link <%=keyFeature.getQualifiedListItemType()%>}<%} else {%>{@link <%=keyFeature.getType()%>}<%}%>,
+ * and the value is of type <%if (valueFeature.isListType()) {%>list of {@link <%=valueFeature.getQualifiedListItemType()%>}<%} else {%>{@link <%=valueFeature.getType()%>}<%}%>,
+ <%} else if (!genFeature.isWrappedFeatureMapType() && !(genModel.isSuppressEMFMetaData() && "org.eclipse.emf.ecore.EObject".equals(genFeature.getQualifiedListItemType()))) {%>
+ * The list contents are of type {@link <%=genFeature.getQualifiedListItemType()%>}.
+ <%}%>
+ <%} else if (genFeature.isSetDefaultValue()) {%>
+ * The default value is <code><%=genFeature.getDefaultValue()%></code>.
+ <%}%>
+ <%if (genFeature.getTypeGenEnum() != null) {%>
+ * The literals are from the enumeration {@link <%=genFeature.getTypeGenEnum().getQualifiedName()%>}.
+ <%}%>
+ <%if (genFeature.isBidirectional() && !genFeature.getReverse().getGenClass().isMapEntry()) { GenFeature reverseGenFeature = genFeature.getReverse(); %>
+ <%if (!reverseGenFeature.isSuppressedGetVisibility()) {%>
+ * It is bidirectional and its opposite is '{@link <%=reverseGenFeature.getGenClass().getQualifiedInterfaceName()%>#<%=reverseGenFeature.getGetAccessor()%> <em><%=reverseGenFeature.getFormattedName()%></em>}'.
+ <%}%>
+ <%}%>
+ * <!-- begin-user-doc -->
+ <%if (!genFeature.hasDocumentation()) {%>
+ * <p>
+ * If the meaning of the '<em><%=genFeature.getFormattedName()%></em>' <%=genFeature.getFeatureKind()%> isn't clear,
+ * there really should be more of a description here...
+ * </p>
+ <%}%>
+ * <!-- end-user-doc -->
+ <%if (genFeature.hasDocumentation()) {%>
+ * <!-- begin-model-doc -->
+ * <%=genFeature.getDocumentation(genModel.getIndentation(stringBuffer))%>
+ * <!-- end-model-doc -->
+ <%}%>
+ * @return the value of the '<em><%=genFeature.getFormattedName()%></em>' <%=genFeature.getFeatureKind()%>.
+ <%if (genFeature.getTypeGenEnum() != null) {%>
+ * @see <%=genFeature.getTypeGenEnum().getQualifiedName()%>
+ <%}%>
+ <%if (genFeature.isUnsettable()) {%>
+ <%if (!genFeature.isSuppressedIsSetVisibility()) {%>
+ * @see #isSet<%=genFeature.getAccessorName()%>()
+ <%}%>
+ <%if (genFeature.isChangeable() && !genFeature.isSuppressedUnsetVisibility()) {%>
+ * @see #unset<%=genFeature.getAccessorName()%>()
+ <%}%>
+ <%}%>
+ <%if (genFeature.isChangeable() && !genFeature.isListType() && !genFeature.isSuppressedSetVisibility()) {%>
+ * @see #set<%=genFeature.getAccessorName()%>(<%=genFeature.getImportedType()%>)
+ <%}%>
+ <%if (!genModel.isSuppressEMFMetaData()) {%>
+ * @see <%=genPackage.getQualifiedPackageInterfaceName()%>#get<%=genFeature.getFeatureAccessorName()%>()
+ <%}%>
+ <%if (genFeature.isBidirectional() && !genFeature.getReverse().getGenClass().isMapEntry()) { GenFeature reverseGenFeature = genFeature.getReverse(); %>
+ <%if (!reverseGenFeature.isSuppressedGetVisibility()) {%>
+ * @see <%=reverseGenFeature.getGenClass().getQualifiedInterfaceName()%>#<%=reverseGenFeature.getGetAccessor()%>
+ <%}%>
+ <%}%>
+ <%if (!genModel.isSuppressEMFModelTags()) { boolean first = true; for (StringTokenizer stringTokenizer = new StringTokenizer(genFeature.getModelInfo(), "\n\r"); stringTokenizer.hasMoreTokens(); ) { String modelInfo = stringTokenizer.nextToken(); if (first) { first = false;%>
+ * @model <%=modelInfo%>
+ <%} else {%>
+ * <%=modelInfo%>
+ <%}} if (first) {%>
+ * @model
+ <%}}%>
+ * @generated
+ */
+<%} else {%>
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+<%}%>
+<%if (!isImplementation) {%>
+ <%=genFeature.getImportedType()%> <%=genFeature.getGetAccessor()%>();
+
+<%} else {%>
+ public <%=genFeature.getImportedType()%> <%=genFeature.getGetAccessor()%>()
+ {
+<%@ include file="Class/getGenFeature.pre.insert.javajetinc" fail="silent" %>
+ <%if (genModel.isReflectiveDelegation()) {%>
+ return <%if (genFeature.isPrimitiveType()) {%>(<%}%>(<%=genFeature.getObjectType()%>)get(<%=genFeature.getQualifiedFeatureAccessor()%>, true)<%if (genFeature.isPrimitiveType()) {%>).<%=genFeature.getPrimitiveValueFunction()%>()<%}%>;
+ <%} else if (!genFeature.isVolatile()) {%>
+ <%if (genFeature.isListType()) {%>
+ <%if (genModel.isVirtualDelegation()) {%>
+ <%=genFeature.getImportedType()%> <%=genFeature.getSafeName()%> = (<%=genFeature.getImportedType()%>)eVirtualGet(<%=genFeature.getUpperName()%>);
+ <%}%>
+ if (<%=genFeature.getSafeName()%> == null)
+ {
+ <%if (genModel.isVirtualDelegation()) {%>
+ eVirtualSet(<%=genFeature.getUpperName()%>, <%=genFeature.getSafeName()%> = new <%=genClass.getListConstructor(genFeature)%>);
+ <%} else {
+ if (genFeature.getType().equals("commonj.sdo.Sequence")){%>
+ <%=genFeature.getSafeName()%> = createSequence(<%=genFeature.getUpperName()%>);<%} else {%>
+ <%=genFeature.getSafeName()%> = createPropertyList(ListKind.CONTAINMENT, <%=genFeature.getListItemType()%>.class, <%=genFeature.getUpperName()%>);<%}}%>
+ }
+ return <%=genFeature.getSafeName()%><%=genFeature.isMapType() && genFeature.isEffectiveSuppressEMFTypes() ? ".map()" : ""%>;
+ <%} else if (genFeature.isContainer()) {%>
+ if (eContainerFeatureID != <%=genFeature.getUpperName()%>) return null;
+ return (<%=genFeature.getImportedType()%>)eContainer();
+ <%} else {%>
+ <%if (genFeature.isResolveProxies()) {%>
+ <%if (genModel.isVirtualDelegation()) {%>
+ <%=genFeature.getImportedType()%> <%=genFeature.getSafeName()%> = (<%=genFeature.getImportedType()%>)eVirtualGet(<%=genFeature.getUpperName()%><%if (!genFeature.isReferenceType()) {%>, <%=genFeature.getUpperName()%>_DEFAULT_<%}%>);
+ <%}%>
+ if (<%=genFeature.getSafeName()%> != null && <%=genFeature.getSafeNameAsEObject()%>.isProxy())
+ {
+ <%=genModel.getImportedName("org.eclipse.emf.ecore.InternalEObject")%> old<%=genFeature.getCapName()%> = (<%=genModel.getImportedName("org.eclipse.emf.ecore.InternalEObject")%>)<%=genFeature.getSafeName()%>;
+ <%=genFeature.getSafeName()%> = <%=genFeature.getNonEObjectInternalTypeCast()%>eResolveProxy(old<%=genFeature.getCapName()%>);
+ if (<%=genFeature.getSafeName()%> != old<%=genFeature.getCapName()%>)
+ {
+ <%if (genFeature.isEffectiveContains()) {%>
+ <%=genModel.getImportedName("org.eclipse.emf.ecore.InternalEObject")%> new<%=genFeature.getCapName()%> = (<%=genModel.getImportedName("org.eclipse.emf.ecore.InternalEObject")%>)<%=genFeature.getSafeName()%>;
+ <%if (!genFeature.isBidirectional()) {%>
+ ChangeContext changeContext = old<%=genFeature.getCapName()%>.inverseRemove(this, EOPPOSITE_FEATURE_BASE - <%=genFeature.getUpperName()%>, null, null);
+ <%} else { GenFeature reverseFeature = genFeature.getReverse(); GenClass targetClass = reverseFeature.getGenClass();%>
+ <%=genModel.getImportedName("org.eclipse.emf.common.notify.ChangeContext")%> changeContext = old<%=genFeature.getCapName()%>.inverseRemove(this, <%=targetClass.getQualifiedFeatureID(reverseFeature)%>, <%=targetClass.getImportedInterfaceName()%>.class, null);
+ <%}%>
+ if (new<%=genFeature.getCapName()%>.eInternalContainer() == null)
+ {
+ <%if (!genFeature.isBidirectional()) {%>
+ changeContext = new<%=genFeature.getCapName()%>.eInverseAdd(this, EOPPOSITE_FEATURE_BASE - <%=genFeature.getUpperName()%>, null, changeContext);
+ <%} else { GenFeature reverseFeature = genFeature.getReverse(); GenClass targetClass = reverseFeature.getGenClass();%>
+ changeContext = new<%=genFeature.getCapName()%>.eInverseAdd(this, <%=targetClass.getQualifiedFeatureID(reverseFeature)%>, <%=targetClass.getImportedInterfaceName()%>.class, changeContext);
+ <%}%>
+ }
+ if (changeContext != null) dispatch(changeContext);
+ <%} else if (genModel.isVirtualDelegation()) {%>
+ eVirtualSet(<%=genFeature.getUpperName()%>, <%=genFeature.getSafeName()%>);
+ <%}%>
+ <%if (!genModel.isSuppressNotification()) {%>
+ if (isNotifying())
+ notify(ChangeKind.RESOLVE, <%=genFeature.getUpperName()%>, old<%=genFeature.getCapName()%>, <%=genFeature.getSafeName()%>);
+ <%}%>
+ }
+ }
+ <%}%>
+ <%if (!genFeature.isResolveProxies() && genModel.isVirtualDelegation() && !genFeature.isPrimitiveType()) {%>
+ return (<%=genFeature.getImportedType()%>)eVirtualGet(<%=genFeature.getUpperName()%><%if (!genFeature.isReferenceType()) {%>, <%=genFeature.getUpperName()%>_DEFAULT_<%}%>);
+ <%} else if (genClass.isFlag(genFeature)) {%>
+ return (<%=genClass.getFlagsField(genFeature)%> & <%=genFeature.getUpperName()%>_EFLAG) != 0;
+ <%} else {%>
+ return <%=genFeature.getSafeName()%>;
+ <%}%>
+ <%}%>
+ <%} else {//volatile%>
+ <%if (genFeature.isResolveProxies() && !genFeature.isListType()) {%>
+ <%=genFeature.getImportedType()%> <%=genFeature.getSafeName()%> = basicGet<%=genFeature.getAccessorName()%>();
+ return <%=genFeature.getSafeName()%> != null && <%=genFeature.getSafeName()%>.isProxy() ? <%=genFeature.getNonEObjectInternalTypeCast()%>eResolveProxy((<%=genModel.getImportedName("org.eclipse.emf.ecore.InternalEObject")%>)<%=genFeature.getSafeName()%>) : <%=genFeature.getSafeName()%>;
+ <%} else if (genFeature.hasDelegateFeature()) { GenFeature delegateFeature = genFeature.getDelegateFeature();%>
+ <%if (genFeature.isFeatureMapType()) {%>
+ <%if (delegateFeature.isWrappedFeatureMapType()) {%>
+ return create<%=genFeature.getImportedType()%>(get<%=delegateFeature.getAccessorName()%>(), getType(), <%=genFeature.getUpperName()%>);
+ <%} else {%>
+ return (<%=genModel.getImportedName("org.eclipse.emf.ecore.util.FeatureMap")%>)((<%=genModel.getImportedName("org.eclipse.emf.ecore.util.FeatureMap")%>)get<%=delegateFeature.getAccessorName()%>()).list(<%=genFeature.getQualifiedFeatureAccessor()%>);
+ <%}%>
+ <%} else if (genFeature.isListType()) {%>
+ <%if (delegateFeature.isWrappedFeatureMapType()) {%>
+ return get<%=genFeature.getImportedType()%>(get<%=delegateFeature.getAccessorName()%>(), getType(), <%=genFeature.getUpperName()%>);
+
+ <%} else {%>
+ return ((<%=genModel.getImportedName("org.eclipse.emf.ecore.util.FeatureMap")%>)get<%=delegateFeature.getAccessorName()%>()).list(<%=genFeature.getQualifiedFeatureAccessor()%>);
+ <%}%>
+ <%} else {%>
+ <%if (delegateFeature.isWrappedFeatureMapType()) {%>
+ return <%if (genFeature.isPrimitiveType()) {%>(<%}%>(<%=genFeature.getObjectType()%>)get(get<%=delegateFeature.getAccessorName()%>(), getType(), <%=genFeature.getUpperName()%>)<%if (genFeature.isPrimitiveType()) {%>).<%=genFeature.getPrimitiveValueFunction()%>()<%}%>;
+ <%} else {%>
+ return <%if (genFeature.isPrimitiveType()) {%>(<%}%>(<%=genFeature.getObjectType()%>)get(get<%=delegateFeature.getAccessorName()%>(), getType(), <%=genFeature.getUpperName()%>);<%if (genFeature.isPrimitiveType()) {%>).<%=genFeature.getPrimitiveValueFunction()%>()<%}%>;
+ <%}%>
+ <%}%>
+ <%} else {%>
+<%@ include file="Class/getGenFeature.TODO.override.javajetinc" fail="alternative" %>
+<%@ start %>
+ // TODO: implement this method to return the '<%=genFeature.getFormattedName()%>' <%=genFeature.getFeatureKind()%>
+ // Ensure that you remove @generated or mark it @generated NOT
+ throw new UnsupportedOperationException();
+<%@ end %><%//Class/getGenFeature.todo.override.javajetinc%>
+ <%}%>
+ <%}%>
+ }
+<%}%>
+<%@ end %><%//Class/getGenFeature.override.javajetinc%>
+ <%}%>
+ <%if (isImplementation && !genModel.isReflectiveDelegation() && genFeature.isBasicGet()) {%>
+<%@ include file="Class/basicGetGenFeature.override.javajetinc" fail="alternative" %>
+<%@ start %>
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public <%=genFeature.getImportedType()%> basicGet<%=genFeature.getAccessorName()%>()
+ {
+<%@ include file="Class/basicGetGenFeature.pre.insert.javajetinc" fail="silent" %>
+ <%if (genFeature.isContainer()) {%>
+ if (eContainerFeatureID != <%=genFeature.getUpperName()%>) return null;
+ return (<%=genFeature.getImportedType()%>)eInternalContainer();
+ <%} else if (!genFeature.isVolatile()) {%>
+ <%if (genModel.isVirtualDelegation()) {%>
+ return (<%=genFeature.getImportedType()%>)eVirtualGet(<%=genFeature.getUpperName()%>);
+ <%} else {%>
+ return <%=genFeature.getSafeName()%>;
+ <%}%>
+ <%} else if (genFeature.hasDelegateFeature()) { GenFeature delegateFeature = genFeature.getDelegateFeature();%>
+ <%if (delegateFeature.isWrappedFeatureMapType()) {%>
+ return (<%=genFeature.getImportedType()%>)get(get<%=delegateFeature.getAccessorName()%>(), getType(), <%=genFeature.getUpperName()%>);
+ <%} else {%>
+ return (<%=genFeature.getImportedType()%>)get<%=delegateFeature.getAccessorName()%>().get(<%=genFeature.getQualifiedFeatureAccessor()%>, false);
+ <%}%>
+ <%} else {%>
+<%@ include file="Class/basicGetGenFeature.TODO.override.javajetinc" fail="alternative" %>
+<%@ start %>
+ // TODO: implement this method to return the '<%=genFeature.getFormattedName()%>' <%=genFeature.getFeatureKind()%>
+ // -> do not perform proxy resolution
+ // Ensure that you remove @generated or mark it @generated NOT
+ throw new UnsupportedOperationException();
+<%@ end %><%//Class/basicGetGenFeature.todo.override.javajetinc%>
+ <%}%>
+ }
+
+<%@ end %><%//Class/basicGetGenFeature.override.javajetinc%>
+ <%}%>
+ <%if (isImplementation && !genModel.isReflectiveDelegation() && genFeature.isBasicSet()) {%>
+<%@ include file="Class/basicSetGenFeature.override.javajetinc" fail="alternative" %>
+<%@ start %>
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public ChangeContext basicSet<%=genFeature.getAccessorName()%>(<%=genFeature.getImportedInternalType()%> new<%=genFeature.getCapName()%>, ChangeContext changeContext)
+ {
+ <%if (!genFeature.isVolatile()) {%>
+<%@ include file="Class/basicSetGenFeature.pre.insert.javajetinc" fail="silent" %>
+ <%if (genModel.isVirtualDelegation()) {%>
+ Object old<%=genFeature.getCapName()%> = eVirtualSet(<%=genFeature.getUpperName()%>, new<%=genFeature.getCapName()%>);
+ <%} else {%>
+ <%=genFeature.getImportedType()%> old<%=genFeature.getCapName()%> = <%=genFeature.getSafeName()%>;
+ <%=genFeature.getSafeName()%> = new<%=genFeature.getCapName()%>;
+ <%}%>
+ <%if (genFeature.isUnsettable()) {%>
+ <%if (genModel.isVirtualDelegation()) {%>
+ boolean isSetChange = old<%=genFeature.getCapName()%> == EVIRTUAL_NO_VALUE;
+ <%} else if (genClass.isESetFlag(genFeature)) {%>
+ boolean old<%=genFeature.getCapName()%>_set_ = (<%=genClass.getESetFlagsField(genFeature)%> & <%=genFeature.getUpperName()%>_ESETFLAG) != 0;
+ <%=genClass.getESetFlagsField(genFeature)%> |= <%=genFeature.getUpperName()%>_ESETFLAG;
+ <%} else {%>
+ boolean old<%=genFeature.getCapName()%>_set_ = <%=genFeature.getUncapName()%>_set_;
+ <%=genFeature.getUncapName()%>_set_ = true;
+ <%}%>
+ <%}%>
+ <%if (!genModel.isSuppressNotification()) {%>
+ if (isNotifying())
+ {
+ <%if (genFeature.isUnsettable()) {%>
+ addNotification(this, ChangeKind.SET, <%=genFeature.getUpperName()%>, <%if (genModel.isVirtualDelegation()) {%>isSetChange ? null : old<%=genFeature.getCapName()%><%} else {%>old<%=genFeature.getCapName()%><%}%>, new<%=genFeature.getCapName()%>, <%if (genModel.isVirtualDelegation()) {%>isSetChange<%} else {%>!old<%=genFeature.getCapName()%>_set_<%}%>, changeContext);
+ <%} else {%>
+ addNotification(this, ChangeKind.SET, <%=genFeature.getUpperName()%>, <%if (genModel.isVirtualDelegation()) {%>old<%=genFeature.getCapName()%> == EVIRTUAL_NO_VALUE ? null : old<%=genFeature.getCapName()%><%} else {%>old<%=genFeature.getCapName()%><%}%>, new<%=genFeature.getCapName()%>, changeContext);
+ <%}%>
+ }
+ <%}%>
+<%@ include file="Class/basicSetGenFeature.post.insert.javajetinc" fail="silent" %>
+ return changeContext;
+ <%} else if (genFeature.hasDelegateFeature()) { GenFeature delegateFeature = genFeature.getDelegateFeature();%>
+ <%if (delegateFeature.isWrappedFeatureMapType()) {%>
+ return basicAdd(get<%=delegateFeature.getAccessorName()%>(), getType(), <%=genFeature.getUpperName()%>, new<%=genFeature.getCapName()%>, changeContext);
+ <%} else {%>
+ return basicAdd(get<%=delegateFeature.getAccessorName()%>(), getType(), <%=genFeature.getUpperName()%>, new<%=genFeature.getCapName()%>, changeContext);
+ <%}%>
+ <%} else {%>
+<%@ include file="Class/basicSetGenFeature.TODO.override.javajetinc" fail="alternative" %>
+<%@ start %>
+ // TODO: implement this method to set the contained '<%=genFeature.getFormattedName()%>' <%=genFeature.getFeatureKind()%>
+ // -> this method is automatically invoked to keep the containment relationship in synch
+ // -> do not modify other features
+ // -> return changeContext, after adding any generated Notification to it (if it is null, a NotificationChain object must be created first)
+ // Ensure that you remove @generated or mark it @generated NOT
+ throw new UnsupportedOperationException();
+<%@ end %><%//Class/basicSetGenFeature.todo.override.javajetinc%>
+ <%}%>
+ }
+
+<%@ end %><%//Class/basicSetGenFeature.override.javajetinc%>
+ <%}%>
+ <%if (genFeature.isSet() && (isImplementation || !genFeature.isSuppressedSetVisibility())) {%>
+<%@ include file="Class/setGenFeature.override.javajetinc" fail="alternative" %>
+<%@ start %>
+<%if (isInterface) { %>
+ /**
+ * Sets the value of the '{@link <%=genClass.getQualifiedInterfaceName()%>#<%=genFeature.getGetAccessor()%> <em><%=genFeature.getFormattedName()%></em>}' <%=genFeature.getFeatureKind()%>.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @param value the new value of the '<em><%=genFeature.getFormattedName()%></em>' <%=genFeature.getFeatureKind()%>.
+ <%if (genFeature.isEnumType()) {%>
+ * @see <%=genFeature.getTypeGenEnum().getQualifiedName()%>
+ <%}%>
+ <%if (genFeature.isUnsettable()) {%>
+ <%if (!genFeature.isSuppressedIsSetVisibility()) {%>
+ * @see #isSet<%=genFeature.getAccessorName()%>()
+ <%}%>
+ <%if (!genFeature.isSuppressedUnsetVisibility()) {%>
+ * @see #unset<%=genFeature.getAccessorName()%>()
+ <%}%>
+ <%}%>
+ * @see #<%=genFeature.getGetAccessor()%>()
+ * @generated
+ */
+<%} else {%>
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+<%}%>
+<%if (!isImplementation) { %>
+ void set<%=genFeature.getAccessorName()%>(<%=genFeature.getImportedType()%> value);
+
+<%} else {%>
+ public void set<%=genFeature.getAccessorName()%>(<%=genFeature.getImportedType()%> new<%=genFeature.getCapName()%>)
+ {
+<%@ include file="Class/setGenFeature.pre.insert.javajetinc" fail="alternative" %>
+ <%if (genModel.isReflectiveDelegation()) {%>
+ _set_(<%=genFeature.getQualifiedFeatureAccessor()%>, <%if (genFeature.isPrimitiveType()) {%>new <%=genFeature.getObjectType()%>(<%}%>new<%=genFeature.getCapName()%><%if (genFeature.isPrimitiveType()) {%>)<%}%>);
+ <%} else if (!genFeature.isVolatile()) {%>
+ <%if (genFeature.isContainer()) { GenFeature reverseFeature = genFeature.getReverse(); GenClass targetClass = reverseFeature.getGenClass();%>
+ if (new<%=genFeature.getCapName()%> != eInternalContainer() || (eContainerFeatureID != <%=genFeature.getUpperName()%> && new<%=genFeature.getCapName()%> != null))
+ {
+ if (<%=genModel.getImportedName("org.eclipse.emf.ecore.util.EcoreUtil")%>.isAncestor(this, <%=genFeature.getEObjectCast()%>new<%=genFeature.getCapName()%>))
+ throw new <%=genModel.getImportedName("java.lang.IllegalArgumentException")%>("Recursive containment not allowed for " + toString());<%=genModel.getNonNLS()%>
+ ChangeContext changeContext = null;
+ if (eInternalContainer() != null)
+ changeContext = eBasicRemoveFromContainer(changeContext);
+ if (new<%=genFeature.getCapName()%> != null)
+ changeContext = ((<%=genModel.getImportedName("org.eclipse.emf.ecore.InternalEObject")%>)new<%=genFeature.getCapName()%>).eInverseAdd(this, <%=targetClass.getQualifiedFeatureID(reverseFeature)%>, <%=targetClass.getImportedInterfaceName()%>.class, changeContext);
+ changeContext = eBasicSetContainer((<%=genModel.getImportedName("org.eclipse.emf.ecore.InternalEObject")%>)new<%=genFeature.getCapName()%>, <%=genFeature.getUpperName()%>, changeContext);
+ if (changeContext != null) dispatch(changeContext);
+ }
+ <%if (!genModel.isSuppressNotification()) {%>
+ else if (isNotifying())
+ notify(ChangeKind.SET, <%=genFeature.getUpperName()%>, new<%=genFeature.getCapName()%>, new<%=genFeature.getCapName()%>);
+ <%}%>
+ <%} else if (genFeature.isBidirectional() || genFeature.isEffectiveContains()) {%>
+ <%if (genModel.isVirtualDelegation()) {%>
+ <%=genFeature.getImportedType()%> <%=genFeature.getSafeName()%> = (<%=genFeature.getImportedType()%>)eVirtualGet(<%=genFeature.getUpperName()%>);
+ <%}%>
+ if (new<%=genFeature.getCapName()%> != <%=genFeature.getSafeName()%>)
+ {
+ ChangeContext changeContext = null;
+ if (<%=genFeature.getSafeName()%> != null)
+ <%if (!genFeature.isBidirectional()) {%>
+ changeContext = inverseRemove(<%=genFeature.getSafeName()%>, this, OPPOSITE_FEATURE_BASE - <%=genFeature.getUpperName()%>, null, changeContext);
+ if (new<%=genFeature.getCapName()%> != null)
+ changeContext = inverseAdd(new<%=genFeature.getCapName()%>, this, OPPOSITE_FEATURE_BASE - <%=genFeature.getUpperName()%>, null, changeContext);
+ <%} else { GenFeature reverseFeature = genFeature.getReverse(); GenClass targetClass = reverseFeature.getGenClass();%>
+ changeContext = inverseRemove(<%=genFeature.getSafeName()%>, this, <%=targetClass.getQualifiedFeatureID(reverseFeature)%>, <%=targetClass.getImportedInterfaceName()%>.class, changeContext);
+ if (new<%=genFeature.getCapName()%> != null)
+ changeContext = inverseAdd(new<%=genFeature.getCapName()%>, this, <%=targetClass.getQualifiedFeatureID(reverseFeature)%>, <%=targetClass.getImportedInterfaceName()%>.class, changeContext);
+ <%}%>
+ changeContext = basicSet<%=genFeature.getAccessorName()%>(<%=genFeature.getInternalTypeCast()%>new<%=genFeature.getCapName()%>, changeContext);
+ if (changeContext != null) dispatch(changeContext);
+ }
+ <%if (genFeature.isUnsettable()) {%>
+ else
+ {
+ <%if (genModel.isVirtualDelegation()) {%>
+ boolean old<%=genFeature.getCapName()%>_set_ = eVirtualIsSet(<%=genFeature.getUpperName()%>);
+ <%} else if (genClass.isESetFlag(genFeature)) {%>
+ <%if (!genModel.isSuppressNotification()) {%>
+ boolean old<%=genFeature.getCapName()%>_set_ = (<%=genClass.getESetFlagsField(genFeature)%> & <%=genFeature.getUpperName()%>_ESETFLAG) != 0;
+ <%}%>
+ <%=genClass.getESetFlagsField(genFeature)%> |= <%=genFeature.getUpperName()%>_ESETFLAG;
+ <%} else {%>
+ <%if (!genModel.isSuppressNotification()) {%>
+ boolean old<%=genFeature.getCapName()%>_set_ = <%=genFeature.getUncapName()%>_set_;
+ <%}%>
+ <%=genFeature.getUncapName()%>_set_ = true;
+ <%}%>
+ <%if (!genModel.isSuppressNotification()) {%>
+ if (isNotifying())
+ notify(ChangeKind.SET, <%=genFeature.getUpperName()%>, new<%=genFeature.getCapName()%>, new<%=genFeature.getCapName()%>, !old<%=genFeature.getCapName()%>_set_);
+ <%}%>
+ }
+ <%} else {%>
+ <%if (!genModel.isSuppressNotification()) {%>
+ else if (isNotifying())
+ notify(ChangeKind.SET, <%=genFeature.getUpperName()%>, new<%=genFeature.getCapName()%>, new<%=genFeature.getCapName()%>);
+ <%}%>
+ <%}%>
+ <%} else {%>
+ <%if (genClass.isFlag(genFeature)) {%>
+ <%if (!genModel.isSuppressNotification()) {%>
+ <%=genFeature.getImportedType()%> old<%=genFeature.getCapName()%> = (<%=genClass.getFlagsField(genFeature)%> & <%=genFeature.getUpperName()%>_EFLAG) != 0;
+ <%}%>
+ if (new<%=genFeature.getCapName()%>) <%=genClass.getFlagsField(genFeature)%> |= <%=genFeature.getUpperName()%>_EFLAG; else <%=genClass.getFlagsField(genFeature)%> &= ~<%=genFeature.getUpperName()%>_EFLAG;
+ <%} else {%>
+ <%if (!genModel.isVirtualDelegation() || genFeature.isPrimitiveType()) {%>
+ <%if (!genModel.isSuppressNotification()) {%>
+ <%=genFeature.getImportedType()%> old<%=genFeature.getCapName()%> = <%=genFeature.getSafeName()%>;
+ <%}%>
+ <%}%>
+ <%if (genFeature.isEnumType()) {%>
+ <%if (genModel.isVirtualDelegation()) {%>
+ <%=genFeature.getImportedType()%> <%=genFeature.getSafeName()%> = new<%=genFeature.getCapName()%> == null ? <%=genFeature.getUpperName()%>_DEFAULT_ : new<%=genFeature.getCapName()%>;
+ <%} else {%>
+ <%=genFeature.getSafeName()%> = new<%=genFeature.getCapName()%> == null ? <%=genFeature.getUpperName()%>_DEFAULT_ : new<%=genFeature.getCapName()%>;
+ <%}%>
+ <%} else {%>
+ <%if (genModel.isVirtualDelegation() && !genFeature.isPrimitiveType()) {%>
+ <%=genFeature.getImportedType()%> <%=genFeature.getSafeName()%> = <%=genFeature.getInternalTypeCast()%>new<%=genFeature.getCapName()%>;
+ <%} else {%>
+ <%=genFeature.getSafeName()%> = <%=genFeature.getInternalTypeCast()%>new<%=genFeature.getCapName()%>;
+ <%}%>
+ <%}%>
+ <%if (genModel.isVirtualDelegation() && !genFeature.isPrimitiveType()) {%>
+ Object old<%=genFeature.getCapName()%> = eVirtualSet(<%=genFeature.getUpperName()%>, <%=genFeature.getSafeName()%>);
+ <%}%>
+ <%}%>
+ <%if (genFeature.isUnsettable()) {%>
+ <%if (genModel.isVirtualDelegation() && !genFeature.isPrimitiveType()) {%>
+ boolean isSetChange = old<%=genFeature.getCapName()%> == EVIRTUAL_NO_VALUE;
+ <%} else if (genClass.isESetFlag(genFeature)) {%>
+ <%if (!genModel.isSuppressNotification()) {%>
+ boolean old<%=genFeature.getCapName()%>_set_ = (<%=genClass.getESetFlagsField(genFeature)%> & <%=genFeature.getUpperName()%>_ESETFLAG) != 0;
+ <%}%>
+ <%=genClass.getESetFlagsField(genFeature)%> |= <%=genFeature.getUpperName()%>_ESETFLAG;
+ <%} else {%>
+ <%if (!genModel.isSuppressNotification()) {%>
+ boolean old<%=genFeature.getCapName()%>_set_ = <%=genFeature.getUncapName()%>_set_;
+ <%}%>
+ <%=genFeature.getUncapName()%>_set_ = true;
+ <%}%>
+ <%if (!genModel.isSuppressNotification()) {%>
+ if (isNotifying())
+ notify(ChangeKind.SET, <%=genFeature.getUpperName()%>, <%if (genModel.isVirtualDelegation() && !genFeature.isPrimitiveType()) {%>isSetChange ? <%if (genFeature.isReferenceType()) {%>null<%} else {%><%=genFeature.getUpperName()%>_DEFAULT_<%}%> : old<%=genFeature.getCapName()%><%} else {%>old<%=genFeature.getCapName()%><%}%>, <%if (genClass.isFlag(genFeature)) {%>new<%=genFeature.getCapName()%><%} else {%><%=genFeature.getSafeName()%><%}%>, <%if (genModel.isVirtualDelegation() && !genFeature.isPrimitiveType()) {%>isSetChange<%} else {%>!old<%=genFeature.getCapName()%>_set_<%}%>);
+ <%}%>
+ <%} else {%>
+ <%if (!genModel.isSuppressNotification()) {%>
+ if (isNotifying())
+ notify(ChangeKind.SET, <%=genFeature.getUpperName()%>, <%if (genModel.isVirtualDelegation() && !genFeature.isPrimitiveType()) {%>old<%=genFeature.getCapName()%> == EVIRTUAL_NO_VALUE ? <%if (genFeature.isReferenceType()) {%>null<%} else {%><%=genFeature.getUpperName()%>_DEFAULT_<%}%> : old<%=genFeature.getCapName()%><%} else {%>old<%=genFeature.getCapName()%><%}%>, <%if (genClass.isFlag(genFeature)) {%>new<%=genFeature.getCapName()%><%} else {%><%=genFeature.getSafeName()%><%}%>);
+ <%}%>
+ <%}%>
+ <%}%>
+<%@ include file="Class/setGenFeature.post.insert.javajetinc" fail="silent" %>
+ <%} else if (genFeature.hasDelegateFeature()) { GenFeature delegateFeature = genFeature.getDelegateFeature();%>
+ <%if (delegateFeature.isWrappedFeatureMapType()) {%>
+ set(get<%=delegateFeature.getAccessorName()%>(), getType(), <%=genFeature.getUpperName()%>, <%if (genFeature.isPrimitiveType()){%> new <%=genFeature.getObjectType()%>(<%}%>new<%=genFeature.getCapName()%><%if (genFeature.isPrimitiveType()){%>)<%}%>);
+ <%} else {%>
+ ((<%=genModel.getImportedName("org.eclipse.emf.ecore.util.FeatureMap")%>.Internal)get<%=delegateFeature.getAccessorName()%>()).set(<%=genFeature.getQualifiedFeatureAccessor()%>, <%if (genFeature.isPrimitiveType()) {%>new <%=genFeature.getObjectType()%>(<%}%>new<%=genFeature.getCapName()%><%if (genFeature.isPrimitiveType()){%>)<%}%>);
+ <%}%>
+ <%} else {%>
+<%@ include file="Class/setGenFeature.TODO.override.javajetinc" fail="alternative" %>
+<%@ start %>
+ // TODO: implement this method to set the '<%=genFeature.getFormattedName()%>' <%=genFeature.getFeatureKind()%>
+ // Ensure that you remove @generated or mark it @generated NOT
+ throw new UnsupportedOperationException();
+<%@ end %><%//Class/setGenFeature.todo.override.javajetinc%>
+ <%}%>
+ }
+
+<%}%>
+<%@ end %><%//Class/setGenFeature.override.javajetinc%>
+ <%}%>
+ <%if (isImplementation && !genModel.isReflectiveDelegation() && genFeature.isBasicUnset()) {%>
+<%@ include file="Class/basicUnsetGenFeature.override.javajetinc" fail="alternative" %>
+<%@ start %>
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public ChangeContext basicUnset<%=genFeature.getAccessorName()%>(ChangeContext changeContext)
+ {
+ <%if (!genFeature.isVolatile()) {%>
+ <%if (genModel.isVirtualDelegation()) {%>
+ Object old<%=genFeature.getCapName()%> = eVirtualUnset(<%=genFeature.getUpperName()%>);
+ <%} else {%>
+ <%=genFeature.getImportedType()%> old<%=genFeature.getCapName()%> = <%=genFeature.getSafeName()%>;
+ <%=genFeature.getSafeName()%> = null;
+ <%}%>
+ <%if (genModel.isVirtualDelegation()) {%>
+ boolean isSetChange = old<%=genFeature.getCapName()%> != EVIRTUAL_NO_VALUE;
+ <%} else if (genClass.isESetFlag(genFeature)) {%>
+ boolean old<%=genFeature.getCapName()%>_set_ = (<%=genClass.getESetFlagsField(genFeature)%> & <%=genFeature.getUpperName()%>_ESETFLAG) != 0;
+ <%=genClass.getESetFlagsField(genFeature)%> &= ~<%=genFeature.getUpperName()%>_ESETFLAG;
+ <%} else {%>
+ boolean old<%=genFeature.getCapName()%>_set_ = <%=genFeature.getUncapName()%>_set_;
+ <%=genFeature.getUncapName()%>_set_ = false;
+ <%}%>
+ <%if (!genModel.isSuppressNotification()) {%>
+ if (isNotifying())
+ {
+ <%=genModel.getImportedName("org.eclipse.emf.ecore.impl.ENotificationImpl")%> notification = new <%=genModel.getImportedName("org.eclipse.emf.ecore.impl.ENotificationImpl")%>(this, <%=genModel.getImportedName("org.eclipse.emf.common.notify.Notification")%>.UNSET, <%=genFeature.getUpperName()%>, <%if (genModel.isVirtualDelegation()) {%>isSetChange ? old<%=genFeature.getCapName()%> : null<%} else {%>old<%=genFeature.getCapName()%><%}%>, null, <%if (genModel.isVirtualDelegation()) {%>isSetChange<%} else {%>old<%=genFeature.getCapName()%>_set_<%}%>);
+ if (changeContext == null) changeContext = notification; else changeContext.add(notification);
+ }
+ return changeContext;
+ <%}%>
+ <%} else {%>
+<%@ include file="Class/basicUnsetGenFeature.TODO.override.javajetinc" fail="alternative" %>
+<%@ start %>
+ // TODO: implement this method to unset the contained '<%=genFeature.getFormattedName()%>' <%=genFeature.getFeatureKind()%>
+ // -> this method is automatically invoked to keep the containment relationship in synch
+ // -> do not modify other features
+ // -> return changeContext, after adding any generated Notification to it (if it is null, a NotificationChain object must be created first)
+ // Ensure that you remove @generated or mark it @generated NOT
+ throw new UnsupportedOperationException();
+<%@ end %><%//Class/basicUnsetGenFeature.todo.override.javajetinc%>
+ <%}%>
+ }
+
+<%@ end %><%//Class.basicUnsetGenFeature.override.javajetinc%>
+ <%}%>
+ <%if (genFeature.isUnset() && (isImplementation || !genFeature.isSuppressedUnsetVisibility())) {%>
+<%@ include file="Class/unsetGenFeature.override.javajetinc" fail="alternative" %>
+<%@ start %>
+<%if (isInterface) {%>
+ /**
+ * Unsets the value of the '{@link <%=genClass.getQualifiedInterfaceName()%>#<%=genFeature.getGetAccessor()%> <em><%=genFeature.getFormattedName()%></em>}' <%=genFeature.getFeatureKind()%>.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ <%if (!genFeature.isSuppressedIsSetVisibility()) {%>
+ * @see #isSet<%=genFeature.getAccessorName()%>()
+ <%}%>
+ * @see #<%=genFeature.getGetAccessor()%>()
+ <%if (!genFeature.isListType() && !genFeature.isSuppressedSetVisibility()) {%>
+ * @see #set<%=genFeature.getAccessorName()%>(<%=genFeature.getImportedType()%>)
+ <%}%>
+ * @generated
+ */
+<%} else {%>
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+<%}%>
+<%if (!isImplementation) {%>
+ void unset<%=genFeature.getAccessorName()%>();
+
+<%} else {%>
+ public void unset<%=genFeature.getAccessorName()%>()
+ {
+ <%if (genModel.isReflectiveDelegation()) {%>
+ unset(<%=genFeature.getQualifiedFeatureAccessor()%>);
+ <%} else if (!genFeature.isVolatile()) {%>
+ <%if (genFeature.isListType()) {%>
+ ((<%=genModel.getImportedName("org.eclipse.emf.ecore.util.InternalEList")%>.Unsettable)get<%=genFeature.getAccessorName()%>()).unset();
+ <%} else if (genFeature.isBidirectional() || genFeature.isEffectiveContains()) {%>
+ <%if (genModel.isVirtualDelegation()) {%>
+ <%=genFeature.getImportedType()%> <%=genFeature.getSafeName()%> = (<%=genFeature.getImportedType()%>)eVirtualGet(<%=genFeature.getUpperName()%>);
+ <%}%>
+ if (<%=genFeature.getSafeName()%> != null)
+ {
+ ChangeContext changeContext = null;
+ <%if (!genFeature.isBidirectional()) {%>
+ changeContext = ((<%=genModel.getImportedName("org.eclipse.emf.ecore.InternalEObject")%>)<%=genFeature.getSafeName()%>).inverseRemove(this, EOPPOSITE_FEATURE_BASE - <%=genFeature.getUpperName()%>, null, changeContext);
+ <%} else { GenFeature reverseFeature = genFeature.getReverse(); GenClass targetClass = reverseFeature.getGenClass();%>
+ changeContext = ((<%=genModel.getImportedName("org.eclipse.emf.ecore.InternalEObject")%>)<%=genFeature.getSafeName()%>).inverseRemove(this, <%=targetClass.getQualifiedFeatureID(reverseFeature)%>, <%=targetClass.getImportedInterfaceName()%>.class, changeContext);
+ <%}%>
+ changeContext = basicUnset<%=genFeature.getAccessorName()%>(changeContext);
+ if (changeContext != null) dispatch(changeContext);
+ }
+ else
+ {
+ <%if (genModel.isVirtualDelegation()) {%>
+ boolean old<%=genFeature.getCapName()%>_set_ = eVirtualIsSet(<%=genFeature.getUpperName()%>);
+ <%} else if (genClass.isESetFlag(genFeature)) {%>
+ <%if (!genModel.isSuppressNotification()) {%>
+ boolean old<%=genFeature.getCapName()%>_set_ = (<%=genClass.getESetFlagsField(genFeature)%> & <%=genFeature.getUpperName()%>_ESETFLAG) != 0;
+ <%}%>
+ <%=genClass.getESetFlagsField(genFeature)%> &= ~<%=genFeature.getUpperName()%>_ESETFLAG;
+ <%} else {%>
+ <%if (!genModel.isSuppressNotification()) {%>
+ boolean old<%=genFeature.getCapName()%>_set_ = <%=genFeature.getUncapName()%>_set_;
+ <%}%>
+ <%=genFeature.getUncapName()%>_set_ = false;
+ <%}%>
+ <%if (!genModel.isSuppressNotification()) {%>
+ if (isNotifying())
+ notify(ChangeKind.UNSET, <%=genFeature.getUpperName()%>, null, null, old<%=genFeature.getCapName()%>_set_);
+ <%}%>
+ }
+ <%} else {%>
+ <%if (genClass.isFlag(genFeature)) {%>
+ <%if (!genModel.isSuppressNotification()) {%>
+ <%=genFeature.getImportedType()%> old<%=genFeature.getCapName()%> = (<%=genClass.getFlagsField(genFeature)%> & <%=genFeature.getUpperName()%>_EFLAG) != 0;
+ <%}%>
+ <%} else if (genModel.isVirtualDelegation() && !genFeature.isPrimitiveType()) {%>
+ Object old<%=genFeature.getCapName()%> = eVirtualUnset(<%=genFeature.getUpperName()%>);
+ <%} else {%>
+ <%if (!genModel.isSuppressNotification()) {%>
+ <%=genFeature.getImportedType()%> old<%=genFeature.getCapName()%> = <%=genFeature.getSafeName()%>;
+ <%}%>
+ <%}%>
+ <%if (genModel.isVirtualDelegation() && !genFeature.isPrimitiveType()) {%>
+ boolean isSetChange = old<%=genFeature.getCapName()%> != EVIRTUAL_NO_VALUE;
+ <%} else if (genClass.isESetFlag(genFeature)) {%>
+ boolean old<%=genFeature.getCapName()%>_set_ = (<%=genClass.getESetFlagsField(genFeature)%> & <%=genFeature.getUpperName()%>_ESETFLAG) != 0;
+ <%} else {%>
+ <%if (!genModel.isSuppressNotification()) {%>
+ boolean old<%=genFeature.getCapName()%>_set_ = <%=genFeature.getUncapName()%>_set_;
+ <%}%>
+ <%}%>
+ <%if (genFeature.isReferenceType()) {%>
+ <%=genFeature.getSafeName()%> = null;
+ <%if (!genModel.isVirtualDelegation()) {%>
+ <%if (genClass.isESetFlag(genFeature)) {%>
+ <%=genClass.getESetFlagsField(genFeature)%> &= ~<%=genFeature.getUpperName()%>_ESETFLAG;
+ <%} else {%>
+ <%=genFeature.getUncapName()%>_set_ = false;
+ <%}%>
+ <%}%>
+ <%if (!genModel.isSuppressNotification()) {%>
+ if (isNotifying())
+ notify(ChangeKind.UNSET, <%=genFeature.getUpperName()%>, <%if (genModel.isVirtualDelegation()) {%>isSetChange ? old<%=genFeature.getCapName()%> : null<%} else {%>old<%=genFeature.getCapName()%><%}%>, null, <%if (genModel.isVirtualDelegation()) {%>isSetChange<%} else {%>old<%=genFeature.getCapName()%>_set_<%}%>);
+ <%}%>
+ <%} else {%>
+ <%if (genClass.isFlag(genFeature)) {%>
+ if (<%=genFeature.getUpperName()%>_DEFAULT_) <%=genClass.getFlagsField(genFeature)%> |= <%=genFeature.getUpperName()%>_EFLAG; else <%=genClass.getFlagsField(genFeature)%> &= ~<%=genFeature.getUpperName()%>_EFLAG;
+ <%} else if (!genModel.isVirtualDelegation() || genFeature.isPrimitiveType()) {%>
+ <%=genFeature.getSafeName()%> = <%=genFeature.getUpperName()%>_DEFAULT_;
+ <%}%>
+ <%if (!genModel.isVirtualDelegation() || genFeature.isPrimitiveType()) {%>
+ <%if (genClass.isESetFlag(genFeature)) {%>
+ <%=genClass.getESetFlagsField(genFeature)%> &= ~<%=genFeature.getUpperName()%>_ESETFLAG;
+ <%} else {%>
+ <%=genFeature.getUncapName()%>_set_ = false;
+ <%}%>
+ <%}%>
+ <%if (!genModel.isSuppressNotification()) {%>
+ if (isNotifying())
+ notify(ChangeKind.UNSET, <%=genFeature.getUpperName()%>, <%if (genModel.isVirtualDelegation() && !genFeature.isPrimitiveType()) {%>isSetChange ? old<%=genFeature.getCapName()%> : <%=genFeature.getUpperName()%>_DEFAULT_<%} else {%>old<%=genFeature.getCapName()%><%}%>, <%=genFeature.getUpperName()%>_DEFAULT_, <%if (genModel.isVirtualDelegation() && !genFeature.isPrimitiveType()) {%>isSetChange<%} else {%>old<%=genFeature.getCapName()%>_set_<%}%>);
+ <%}%>
+ <%}%>
+ <%}%>
+ <%} else if (genFeature.hasDelegateFeature()) { GenFeature delegateFeature = genFeature.getDelegateFeature();%>
+ <%if (delegateFeature.isWrappedFeatureMapType()) {%>
+ unset(get<%=delegateFeature.getAccessorName()%>(), getType(), <%=genFeature.getUpperName()%>);
+ <%} else {%>
+ unset<%=genFeature.getImportedType()%>(get<%=delegateFeature.getAccessorName()%>());
+ <%}%>
+ <%} else {%>
+<%@ include file="Class/unsetGenFeature.TODO.override.javajetinc" fail="alternative" %>
+<%@ start %>
+ // TODO: implement this method to unset the '<%=genFeature.getFormattedName()%>' <%=genFeature.getFeatureKind()%>
+ // Ensure that you remove @generated or mark it @generated NOT
+ throw new UnsupportedOperationException();
+<%@ end %><%//Class/unsetGenFeature.todo.override.javajetinc%>
+ <%}%>
+ }
+
+<%}%>
+<%@ end %><%//Class/unsetGenFeature.override.javajetinc%>
+ <%}%>
+ <%if (genFeature.isIsSet() && (isImplementation || !genFeature.isSuppressedIsSetVisibility())) {%>
+<%@ include file="Class/isSetGenFeature.override.javajetinc" fail="alternative" %>
+<%@ start %>
+<%if (isInterface) {%>
+ /**
+ * Returns whether the value of the '{@link <%=genClass.getQualifiedInterfaceName()%>#<%=genFeature.getGetAccessor()%> <em><%=genFeature.getFormattedName()%></em>}' <%=genFeature.getFeatureKind()%> is set.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return whether the value of the '<em><%=genFeature.getFormattedName()%></em>' <%=genFeature.getFeatureKind()%> is set.
+ <%if (genFeature.isChangeable() && !genFeature.isSuppressedUnsetVisibility()) {%>
+ * @see #unset<%=genFeature.getAccessorName()%>()
+ <%}%>
+ * @see #<%=genFeature.getGetAccessor()%>()
+ <%if (!genFeature.isListType() && genFeature.isChangeable() && !genFeature.isSuppressedSetVisibility()) {%>
+ * @see #set<%=genFeature.getAccessorName()%>(<%=genFeature.getImportedType()%>)
+ <%}%>
+ * @generated
+ */
+<%} else {%>
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+<%}%>
+<%if (!isImplementation) {%>
+ boolean isSet<%=genFeature.getAccessorName()%>();
+
+<%} else {%>
+ public boolean isSet<%=genFeature.getAccessorName()%>()
+ {
+ <%if (genModel.isReflectiveDelegation()) {%>
+ return isSet(<%=genFeature.getQualifiedFeatureAccessor()%>);
+ <%} else if (!genFeature.isVolatile()) {%>
+ <%if (genFeature.isListType()) {%>
+ <%if (genModel.isVirtualDelegation()) {%>
+ <%=genFeature.getImportedType()%> <%=genFeature.getSafeName()%> = (<%=genFeature.getImportedType()%>)eVirtualGet(<%=genFeature.getUpperName()%>);
+ <%}%>
+ return <%=genFeature.getSafeName()%> != null && ((<%=genModel.getImportedName("org.eclipse.emf.ecore.util.InternalEList")%>.Unsettable)<%=genFeature.getSafeName()%>).isSet();
+ <%} else {%>
+ <%if (genModel.isVirtualDelegation() && !genFeature.isPrimitiveType()) {%>
+ return eVirtualIsSet(<%=genFeature.getUpperName()%>);
+ <%} else if (genClass.isESetFlag(genFeature)) {%>
+ return (<%=genClass.getESetFlagsField(genFeature)%> & <%=genFeature.getUpperName()%>_ESETFLAG) != 0;
+ <%} else {%>
+ return <%=genFeature.getUncapName()%>_set_;
+ <%}%>
+ <%}%>
+ <%} else if (genFeature.hasDelegateFeature()) { GenFeature delegateFeature = genFeature.getDelegateFeature();%>
+ <%if (delegateFeature.isWrappedFeatureMapType()) {%>
+ return isSet(get<%=delegateFeature.getAccessorName()%>(), getType(), <%=genFeature.getUpperName()%>);
+ <%} else {%>
+ return !((<%=genModel.getImportedName("org.eclipse.emf.ecore.util.FeatureMap")%>.Internal)get<%=delegateFeature.getAccessorName()%>()).isEmpty(<%=genFeature.getQualifiedFeatureAccessor()%>);
+ <%}%>
+ <%} else {%>
+<%@ include file="Class/isSetGenFeature.TODO.override.javajetinc" fail="alternative" %>
+<%@ start %>
+ // TODO: implement this method to return whether the '<%=genFeature.getFormattedName()%>' <%=genFeature.getFeatureKind()%> is set
+ // Ensure that you remove @generated or mark it @generated NOT
+ throw new UnsupportedOperationException();
+<%@ end %><%//Class/isSetGenFeature.todo.override.javajetinc%>
+ <%}%>
+ }
+
+<%}%>
+<%@ end %><%//Class/isSetGenFeature.override.javajetinc%>
+ <%}%>
+<%@ include file="Class/genFeature.insert.javajetinc" fail="silent" %>
+<%@ end %><%//Class/genFeature.override.javajetinc%>
+<%}//for%>
+<%for (Iterator i= (isImplementation ? genClass.getImplementedGenOperations() : genClass.getDeclaredGenOperations()).iterator(); i.hasNext();) { GenOperation genOperation = (GenOperation)i.next();%>
+<%@ include file="Class/genOperation.override.javajetinc" fail="alternative" %>
+<%@ start %>
+<%if (isInterface) {%>
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ <%if (genOperation.hasDocumentation()) {%>
+ * <!-- begin-model-doc -->
+ * <%=genOperation.getDocumentation(genModel.getIndentation(stringBuffer))%>
+ * <!-- end-model-doc -->
+ <%}%>
+ <%if (!genModel.isSuppressEMFModelTags()) { boolean first = true; for (StringTokenizer stringTokenizer = new StringTokenizer(genOperation.getModelInfo(), "\n\r"); stringTokenizer.hasMoreTokens(); ) { String modelInfo = stringTokenizer.nextToken(); if (first) { first = false;%>
+ * @model <%=modelInfo%>
+ <%} else {%>
+ * <%=modelInfo%>
+ <%}} if (first) {%>
+ * @model
+ <%}}%>
+ * @generated
+ */
+<%} else {%>
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+<%}%>
+<%if (!isImplementation) {%>
+ <%=genOperation.getImportedType()%> <%=genOperation.getName()%>(<%=genOperation.getParameters()%>)<%=genOperation.getThrows()%>;
+
+<%} else {%>
+ public <%=genOperation.getImportedType()%> <%=genOperation.getName()%>(<%=genOperation.getParameters()%>)<%=genOperation.getThrows()%>
+ {
+ <%if (genOperation.hasBody()) {%>
+ <%=genOperation.getBody(genModel.getIndentation(stringBuffer))%>
+ <%} else if (genOperation.isInvariant()) {GenClass opClass = genOperation.getGenClass(); String diagnostics = ((GenParameter)genOperation.getGenParameters().get(0)).getName(); String context = ((GenParameter)genOperation.getGenParameters().get(1)).getName();%>
+ // TODO: implement this method
+ // -> specify the condition that violates the invariant
+ // -> verify the details of the diagnostic, including severity and message
+ // Ensure that you remove @generated or mark it @generated NOT
+ if (false)
+ {
+ if (<%=diagnostics%> != null)
+ {
+ <%=diagnostics%>.add
+ (new <%=genModel.getImportedName("org.eclipse.emf.common.util.BasicDiagnostic")%>
+ (<%=genModel.getImportedName("org.eclipse.emf.common.util.Diagnostic")%>.ERROR,
+ <%=opClass.getGenPackage().getImportedValidatorClassName()%>.DIAGNOSTIC_SOURCE,
+ <%=opClass.getGenPackage().getImportedValidatorClassName()%>.<%=opClass.getOperationID(genOperation)%>,
+ <%=genModel.getImportedName("org.eclipse.emf.ecore.plugin.EcorePlugin")%>.INSTANCE.getString("_UI_GenericInvariant_diagnostic", new Object[] { "<%=genOperation.getName()%>", <%=genModel.getImportedName("org.eclipse.emf.ecore.util.EObjectValidator")%>.getObjectLabel(this, <%=context%>) }),<%=genModel.getNonNLS()%><%=genModel.getNonNLS(2)%>
+ new Object [] { this }));
+ }
+ return false;
+ }
+ return true;
+ <%} else {%>
+<%@ include file="Class/implementedGenOperation.TODO.override.javajetinc" fail="alternative" %>
+<%@ start %>
+ // TODO: implement this method
+ // Ensure that you remove @generated or mark it @generated NOT
+ throw new UnsupportedOperationException();
+<%@ end %><%//Class/implementedGenOperation.todo.override.javajetinc%>
+ <%}%>
+ }
+
+<%}%>
+<%@ include file="Class/genOperation.insert.javajetinc" fail="silent" %>
+<%@ end %><%//Class/implementedGenOperation.override.javajetinc%>
+<%}//for%>
+<%if (isImplementation && !genModel.isReflectiveDelegation() && genClass.implementsAny(genClass.getEInverseAddGenFeatures())) {%>
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public ChangeContext eInverseAdd(<%=genModel.getImportedName("org.eclipse.emf.ecore.InternalEObject")%> otherEnd, int propertyIndex, ChangeContext changeContext)
+ {
+ switch (propertyIndex)
+ {
+<%for (Iterator i=genClass.getEInverseAddGenFeatures().iterator(); i.hasNext();) { GenFeature genFeature = (GenFeature)i.next();%>
+ <%if (!genModel.isMinimalReflectiveMethods() || genClass.getImplementedGenFeatures().contains(genFeature)) {%>
+ case <%=genFeature.getUpperName()%>:
+ <%if (genFeature.isListType()) {%>
+ <%if (genFeature.isMapType() && genFeature.isEffectiveSuppressEMFTypes()) {%>
+ return ((<%=genModel.getImportedName("org.eclipse.emf.ecore.util.InternalEList")%>)((<%=genModel.getImportedName("org.eclipse.emf.common.util.EMap")%>.InternalMapView)<%=genFeature.getGetAccessor()%>()).eMap()).basicAdd(otherEnd, changeContext);
+ <%} else {%>
+ return ((<%=genModel.getImportedName("org.eclipse.emf.ecore.util.InternalEList")%>)<%=genFeature.getGetAccessor()%>()).basicAdd(otherEnd, changeContext);
+ <%}%>
+ <%} else if (genFeature.isContainer()) {%>
+ if (eInternalContainer() != null)
+ changeContext = eBasicRemoveFromContainer(changeContext);
+ return eBasicSetContainer(otherEnd, <%=genFeature.getUpperName()%>, changeContext);
+ <%} else {%>
+ <%if (genClass.getImplementingGenModel(genFeature).isVirtualDelegation()) {%>
+ <%=genFeature.getImportedType()%> <%=genFeature.getSafeName()%> = (<%=genFeature.getImportedType()%>)eVirtualGet(<%=genFeature.getUpperName()%>);
+ <%}%>
+ if (<%=genFeature.getSafeName()%> != null)
+ <%if (genFeature.isEffectiveContains()) {%>
+ changeContext = ((<%=genModel.getImportedName("org.eclipse.emf.ecore.InternalEObject")%>)<%=genFeature.getSafeName()%>).inverseRemove(this, EOPPOSITE_FEATURE_BASE - <%=genFeature.getUpperName()%>, null, changeContext);
+ <%} else { GenFeature reverseFeature = genFeature.getReverse(); GenClass targetClass = reverseFeature.getGenClass();%>
+ changeContext = ((<%=genModel.getImportedName("org.eclipse.emf.ecore.InternalEObject")%>)<%=genFeature.getSafeName()%>).inverseRemove(this, <%=targetClass.getQualifiedFeatureID(reverseFeature)%>, <%=targetClass.getImportedInterfaceName()%>.class, changeContext);
+ <%}%>
+ return basicSet<%=genFeature.getAccessorName()%>((<%=genFeature.getImportedType()%>)otherEnd, changeContext);
+ <%}%>
+ <%}%>
+<%}%>
+ }
+<%if (genModel.isMinimalReflectiveMethods()) {%>
+ return super.eInverseAdd(otherEnd, propertyIndex, changeContext);
+<%} else {%>
+ return eDynamicInverseAdd(otherEnd, propertyIndex, changeContext);
+<%}%>
+ }
+
+<%}%>
+<%if (isImplementation && !genModel.isReflectiveDelegation() && genClass.implementsAny(genClass.getEInverseRemoveGenFeatures())) {%>
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public ChangeContext inverseRemove(<%=genModel.getImportedName("java.lang.Object")%> otherEnd, int propertyIndex, ChangeContext changeContext)
+ {
+ switch (propertyIndex)
+ {
+<%for (Iterator i=genClass.getEInverseRemoveGenFeatures().iterator(); i.hasNext();) { GenFeature genFeature = (GenFeature)i.next();%>
+ <%if (!genModel.isMinimalReflectiveMethods() || genClass.getImplementedGenFeatures().contains(genFeature)) {%>
+ case <%=genFeature.getUpperName()%>:
+ <%if (genFeature.isListType()) {%>
+ <%if (genFeature.isMapType() && genFeature.isEffectiveSuppressEMFTypes()) {%>
+ return ((<%=genModel.getImportedName("org.eclipse.emf.ecore.util.InternalEList")%>)((<%=genModel.getImportedName("org.eclipse.emf.common.util.EMap")%>.InternalMapView)<%=genFeature.getGetAccessor()%>()).eMap()).basicRemove(otherEnd, changeContext);
+ <%} else if (genFeature.isWrappedFeatureMapType()) {%>
+ return removeFrom<%=genFeature.getImportedType()%>(<%=genFeature.getGetAccessor()%>(), otherEnd, changeContext);
+ <%} else {%>
+ return removeFromList(<%=genFeature.getGetAccessor()%>(), otherEnd, changeContext);
+ <%}%>
+ <%} else if (genFeature.isContainer()) {%>
+ return eBasicSetContainer(null, <%=genFeature.getUpperName()%>, changeContext);
+ <%} else if (genFeature.isUnsettable()) {%>
+ return basicUnset<%=genFeature.getAccessorName()%>(changeContext);
+ <%} else {%>
+ return basicSet<%=genFeature.getAccessorName()%>(null, changeContext);
+ <%}%>
+ <%}%>
+<%}%>
+ }
+<%if (genModel.isMinimalReflectiveMethods()) {%>
+ return super.inverseRemove(otherEnd, propertyIndex, changeContext);
+<%} else {%>
+ return eDynamicInverseRemove(otherEnd, propertyIndex, changeContext);
+<%}%>
+ }
+
+<%}%>
+<%if (isImplementation && !genModel.isReflectiveDelegation() && genClass.implementsAny(genClass.getEBasicRemoveFromContainerGenFeatures())) {%>
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public ChangeContext eBasicRemoveFromContainerFeature(ChangeContext changeContext)
+ {
+ switch (eContainerFeatureID)
+ {
+<%for (Iterator i=genClass.getEBasicRemoveFromContainerGenFeatures().iterator(); i.hasNext();) { GenFeature genFeature = (GenFeature)i.next();%>
+ <%GenFeature reverseFeature = genFeature.getReverse(); GenClass targetClass = reverseFeature.getGenClass();%>
+ <%if (!genModel.isMinimalReflectiveMethods() || genClass.getImplementedGenFeatures().contains(genFeature)) {%>
+ case <%=genFeature.getUpperName()%>:
+ return eInternalContainer().inverseRemove(this, <%=targetClass.getQualifiedFeatureID(reverseFeature)%>, <%=targetClass.getImportedInterfaceName()%>.class, changeContext);
+ <%}%>
+<%}%>
+ }
+<%if (genModel.isMinimalReflectiveMethods()) {%>
+ return super.eBasicRemoveFromContainerFeature(changeContext);
+<%} else {%>
+ return eDynamicBasicRemoveFromContainer(changeContext);
+<%}%>
+ }
+
+<%}%>
+<%if (isImplementation && !genModel.isReflectiveDelegation() && !genClass.getImplementedGenFeatures().isEmpty()) {%>
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public Object get(int propertyIndex, boolean resolve)
+ {
+ switch (propertyIndex)
+ {
+<%for (Iterator i=genClass.getAllGenFeatures().iterator(); i.hasNext();) { GenFeature genFeature = (GenFeature)i.next();%>
+ <%if (!genModel.isMinimalReflectiveMethods() || genClass.getImplementedGenFeatures().contains(genFeature)) {%>
+ case <%=genFeature.getUpperName()%>:
+ <%if (genFeature.isPrimitiveType()) {%>
+ <%if (genFeature.isBooleanType()) {%>
+ return <%=genFeature.getGetAccessor()%>() ? Boolean.TRUE : Boolean.FALSE;
+ <%} else {%>
+ return new <%=genFeature.getObjectType()%>(<%=genFeature.getGetAccessor()%>());
+ <%}%>
+ <%} else if (genFeature.isResolveProxies() && !genFeature.isListType()) {%>
+ if (resolve) return <%=genFeature.getGetAccessor()%>();
+ return basicGet<%=genFeature.getAccessorName()%>();
+ <%} else if (genFeature.isMapType()) {%>
+ <%if (genFeature.isEffectiveSuppressEMFTypes()) {%>
+ if (coreType) return ((<%=genModel.getImportedName("org.eclipse.emf.common.util.EMap")%>.InternalMapView)<%=genFeature.getGetAccessor()%>()).eMap();
+ else return <%=genFeature.getGetAccessor()%>();
+ <%} else {%>
+ if (coreType) return <%=genFeature.getGetAccessor()%>();
+ else return <%=genFeature.getGetAccessor()%>().map();
+ <%}%>
+ <%} else if (genFeature.isWrappedFeatureMapType()) {%>
+ // XXX query introduce coreType as an argument? -- semantic = if true -- coreType - return the core EMF object if value is a non-EMF wrapper/view
+ //if (coreType)
+ return <%=genFeature.getGetAccessor()%>();
+ <%} else if (genFeature.isFeatureMapType()) {%>
+ if (coreType) return <%=genFeature.getGetAccessor()%>();
+ return ((<%=genModel.getImportedName("org.eclipse.emf.ecore.util.FeatureMap")%>.Internal)<%=genFeature.getGetAccessor()%>()).getWrapper();
+ <%} else {%>
+ return <%=genFeature.getGetAccessor()%>();
+ <%}%>
+ <%}%>
+<%}%>
+ }
+<%if (genModel.isMinimalReflectiveMethods()) {%>
+ return super.get(propertyIndex, resolve);
+<%} else {%>
+ return eDynamicGet(propertyIndex, resolve, coreType);
+<%}%>
+ }
+
+<%}%>
+<%if (isImplementation && !genModel.isReflectiveDelegation() && genClass.implementsAny(genClass.getESetGenFeatures())) {%>
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public void set(int propertyIndex, Object newValue)
+ {
+ switch (propertyIndex)
+ {
+<%for (Iterator i=genClass.getESetGenFeatures().iterator(); i.hasNext();) { GenFeature genFeature = (GenFeature)i.next();%>
+ <%if (!genModel.isMinimalReflectiveMethods() || genClass.getImplementedGenFeatures().contains(genFeature)) {%>
+ case <%=genFeature.getUpperName()%>:
+ <%if (genFeature.isListType()) {%>
+ <%if (genFeature.isWrappedFeatureMapType()) {%>
+ set<%=genFeature.getImportedType()%>(<%=genFeature.getGetAccessor()%>(), newValue);
+ <%} else if (genFeature.isFeatureMapType()) {%>
+ ((<%=genModel.getImportedName("org.eclipse.emf.ecore.util.FeatureMap")%>.Internal)<%=genFeature.getGetAccessor()%>()).set(newValue);
+ <%} else if (genFeature.isMapType()) {%>
+ <%if (genFeature.isEffectiveSuppressEMFTypes()) {%>
+ ((<%=genModel.getImportedName("org.eclipse.emf.ecore.EStructuralFeature")%>.Setting)((<%=genModel.getImportedName("org.eclipse.emf.common.util.EMap")%>.InternalMapView)<%=genFeature.getGetAccessor()%>()).eMap()).set(newValue);
+ <%} else {%>
+ ((<%=genModel.getImportedName("org.eclipse.emf.ecore.EStructuralFeature")%>.Setting)<%=genFeature.getGetAccessor()%>()).set(newValue);
+ <%}%>
+ <%} else {%>
+ <%=genFeature.getGetAccessor()%>().clear();
+ <%=genFeature.getGetAccessor()%>().addAll((<%=genModel.getImportedName("java.util.Collection")%>)newValue);
+ <%}%>
+ <%} else if (genFeature.isPrimitiveType()) {%>
+ set<%=genFeature.getAccessorName()%>(((<%=genFeature.getObjectType()%>)newValue).<%=genFeature.getPrimitiveValueFunction()%>());
+ <%} else {%>
+ set<%=genFeature.getAccessorName()%>((<%=genFeature.getImportedType()%>)newValue);
+ <%}%>
+ return;
+ <%}%>
+<%}%>
+ }
+<%if (genModel.isMinimalReflectiveMethods()) {%>
+ super.set(propertyIndex, newValue);
+<%} else {%>
+ eDynamicSet(propertyIndex, newValue);
+<%}%>
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public void unset(int propertyIndex)
+ {
+ switch (propertyIndex)
+ {
+<%for (Iterator i=genClass.getESetGenFeatures().iterator(); i.hasNext();) { GenFeature genFeature = (GenFeature)i.next();%>
+ <%if (!genModel.isMinimalReflectiveMethods() || genClass.getImplementedGenFeatures().contains(genFeature)) {%>
+ case <%=genFeature.getUpperName()%>:
+ <%if (genFeature.isListType() && !genFeature.isUnsettable()) {%>
+ <%if (genFeature.isWrappedFeatureMapType()) {%>
+ unset<%=genFeature.getImportedType()%>(<%=genFeature.getGetAccessor()%>());
+ <%} else {%>
+ <%=genFeature.getGetAccessor()%>().clear();
+ <%}%>
+ <%} else if (genFeature.isUnsettable()) {%>
+ unset<%=genFeature.getAccessorName()%>();
+ <%} else if (genFeature.isReferenceType()) {%>
+ set<%=genFeature.getAccessorName()%>((<%=genFeature.getImportedType()%>)null);
+ <%} else {%>
+ set<%=genFeature.getAccessorName()%>(<%=genFeature.getUpperName()%>_DEFAULT_);
+ <%}%>
+ return;
+ <%}%>
+<%}%>
+ }
+<%if (genModel.isMinimalReflectiveMethods()) {%>
+ super.unset(propertyIndex);
+<%} else {%>
+ eDynamicUnset(propertyIndex);
+<%}%>
+ }
+
+<%}%>
+<%if (isImplementation && !genModel.isReflectiveDelegation() && !genClass.getImplementedGenFeatures().isEmpty()) {%>
+<%@ include file="Class/eIsSet.override.javajetinc" fail="alternative" %>
+<%@ start %>
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public boolean isSet(int propertyIndex)
+ {
+ switch (propertyIndex)
+ {
+<%for (Iterator i=genClass.getAllGenFeatures().iterator(); i.hasNext();) { GenFeature genFeature = (GenFeature)i.next();%>
+ <%if (!genModel.isMinimalReflectiveMethods() || genClass.getImplementedGenFeatures().contains(genFeature)) {%>
+ case <%=genFeature.getUpperName()%>:
+ <%if (genFeature.isListType() && !genFeature.isUnsettable()) {%>
+ <%if (genFeature.isWrappedFeatureMapType()) {%>
+ <%if (genFeature.isVolatile()) {%>
+ return !is<%=genFeature.getImportedType()%>Empty(<%=genFeature.getGetAccessor()%>());
+ <%} else {%>
+ return <%=genFeature.getSafeName()%> != null && !is<%=genFeature.getImportedType()%>Empty(<%=genFeature.getGetAccessor()%>());
+ <%}%>
+ <%} else {%>
+ <%if (genClass.isField(genFeature)) {%>
+ return <%=genFeature.getSafeName()%> != null && !<%=genFeature.getSafeName()%>.isEmpty();
+ <%} else {%>
+ <%if (genFeature.isField() && genClass.getImplementingGenModel(genFeature).isVirtualDelegation()) {%>
+ <%=genFeature.getImportedType()%> <%=genFeature.getSafeName()%> = (<%=genFeature.getImportedType()%>)eVirtualGet(<%=genFeature.getUpperName()%>);
+ return <%=genFeature.getSafeName()%> != null && !<%=genFeature.getSafeName()%>.isEmpty();
+ <%} else {%>
+ return !<%=genFeature.getGetAccessor()%>().isEmpty();
+ <%}%>
+ <%}%>
+ <%}%>
+ <%} else if (genFeature.isUnsettable()) {%>
+ return isSet<%=genFeature.getAccessorName()%>();
+ <%} else if (genFeature.isResolveProxies()) {%>
+ <%if (genClass.isField(genFeature)) {%>
+ return <%=genFeature.getSafeName()%> != null;
+ <%} else {%>
+ <%if (genFeature.isField() && genClass.getImplementingGenModel(genFeature).isVirtualDelegation()) {%>
+ return eVirtualGet(<%=genFeature.getUpperName()%>) != null;
+ <%} else {%>
+ return basicGet<%=genFeature.getAccessorName()%>() != null;
+ <%}%>
+ <%}%>
+ <%} else if (genFeature.isReferenceType()) {%>
+ <%if (genClass.isField(genFeature)) {%>
+ return <%=genFeature.getSafeName()%> != null;
+ <%} else {%>
+ <%if (genFeature.isField() && genClass.getImplementingGenModel(genFeature).isVirtualDelegation()) {%>
+ return eVirtualGet(<%=genFeature.getUpperName()%>) != null;
+ <%} else {%>
+ return <%=genFeature.getGetAccessor()%>() != null;
+ <%}%>
+ <%}%>
+ <%} else if (genFeature.isPrimitiveType() || genFeature.isEnumType()) {%>
+ <%if (genClass.isField(genFeature)) {%>
+ <%if (genClass.isFlag(genFeature)) {%>
+ return ((<%=genClass.getFlagsField(genFeature)%> & <%=genFeature.getUpperName()%>_EFLAG) != 0) != <%=genFeature.getUpperName()%>_DEFAULT_;
+ <%} else {%>
+ return <%=genFeature.getSafeName()%> != <%=genFeature.getUpperName()%>_DEFAULT_;
+ <%}%>
+ <%} else {%>
+ <%if (genFeature.isEnumType() && genFeature.isField() && genClass.getImplementingGenModel(genFeature).isVirtualDelegation()) {%>
+ return eVirtualGet(<%=genFeature.getUpperName()%>, <%=genFeature.getUpperName()%>_DEFAULT_) != <%=genFeature.getUpperName()%>_DEFAULT_;
+ <%} else {%>
+ return <%=genFeature.getGetAccessor()%>() != <%=genFeature.getUpperName()%>_DEFAULT_;
+ <%}%>
+ <%}%>
+ <%} else {//datatype%>
+ <%if (genClass.isField(genFeature)) {%>
+ return <%=genFeature.getUpperName()%>_DEFAULT_ == null ? <%=genFeature.getSafeName()%> != null : !<%=genFeature.getUpperName()%>_DEFAULT_.equals(<%=genFeature.getSafeName()%>);
+ <%} else {%>
+ <%if (genFeature.isField() && genClass.getImplementingGenModel(genFeature).isVirtualDelegation()) {%>
+ <%=genFeature.getImportedType()%> <%=genFeature.getSafeName()%> = (<%=genFeature.getImportedType()%>)eVirtualGet(<%=genFeature.getUpperName()%>, <%=genFeature.getUpperName()%>_DEFAULT_);
+ return <%=genFeature.getUpperName()%>_DEFAULT_ == null ? <%=genFeature.getSafeName()%> != null : !<%=genFeature.getUpperName()%>_DEFAULT_.equals(<%=genFeature.getSafeName()%>);
+ <%} else {%>
+ return <%=genFeature.getUpperName()%>_DEFAULT_ == null ? <%=genFeature.getGetAccessor()%>() != null : !<%=genFeature.getUpperName()%>_DEFAULT_.equals(<%=genFeature.getGetAccessor()%>());
+ <%}%>
+ <%}%>
+ <%}%>
+ <%}%>
+<%}%>
+ }
+<%if (genModel.isMinimalReflectiveMethods()) {%>
+ return super.isSet(propertyIndex);
+<%} else {%>
+ return eDynamicIsSet(propertyIndex);
+<%}%>
+ }
+
+<%@ end %><%//Class/eIsSet.override.javajetinc%>
+<%}%>
+<%if (isImplementation && !genClass.getMixinGenFeatures().isEmpty()) {%>
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public int eBaseStructuralFeatureID(int derivedFeatureID, Class baseClass)
+ {
+ <%for (Iterator m=genClass.getMixinGenClasses().iterator(); m.hasNext();) { GenClass mixinGenClass = (GenClass)m.next(); %>
+ if (baseClass == <%=mixinGenClass.getImportedInterfaceName()%>.class)
+ {
+ switch (derivedFeatureID)
+ {
+ <%for (Iterator f=mixinGenClass.getGenFeatures().iterator(); f.hasNext();) { GenFeature genFeature = (GenFeature)f.next(); %>
+ case <%=genFeature.getUpperName()%>: return <%=mixinGenClass.getQualifiedFeatureID(genFeature)%>;
+ <%}%>
+ default: return -1;
+ }
+ }
+ <%}%>
+ return super.eBaseStructuralFeatureID(derivedFeatureID, baseClass);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public int eDerivedStructuralFeatureID(int baseFeatureID, Class baseClass)
+ {
+ <%for (Iterator m=genClass.getMixinGenClasses().iterator(); m.hasNext();) { GenClass mixinGenClass = (GenClass)m.next(); %>
+ if (baseClass == <%=mixinGenClass.getImportedInterfaceName()%>.class)
+ {
+ switch (baseFeatureID)
+ {
+ <%for (Iterator f=mixinGenClass.getGenFeatures().iterator(); f.hasNext();) { GenFeature genFeature = (GenFeature)f.next(); %>
+ case <%=mixinGenClass.getQualifiedFeatureID(genFeature)%>: return <%=genFeature.getUpperName()%>;
+ <%}%>
+ default: return -1;
+ }
+ }
+ <%}%>
+ return super.eDerivedStructuralFeatureID(baseFeatureID, baseClass);
+ }
+
+<%}%>
+<%if (isImplementation && genModel.isVirtualDelegation()) { String eVirtualValuesField = genClass.getEVirtualValuesField();%>
+ <%if (eVirtualValuesField != null) {%>
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ protected Object[] eVirtualValues()
+ {
+ return <%=eVirtualValuesField%>;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ protected void setVirtualValues(Object[] newValues)
+ {
+ <%=eVirtualValuesField%> = newValues;
+ }
+
+ <%}%>
+ <%{ List eVirtualIndexBitFields = genClass.getEVirtualIndexBitFields(new ArrayList());%>
+ <%if (!eVirtualIndexBitFields.isEmpty()) { List allEVirtualIndexBitFields = genClass.getAllEVirtualIndexBitFields(new ArrayList());%>
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ protected int eVirtualIndexBits(int offset)
+ {
+ switch (offset)
+ {
+ <%for (int i = 0; i < allEVirtualIndexBitFields.size(); i++) {%>
+ case <%=i%> :
+ return <%=allEVirtualIndexBitFields.get(i)%>;
+ <%}%>
+ default :
+ throw new IndexOutOfBoundsException();
+ }
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ protected void setVirtualIndexBits(int offset, int newIndexBits)
+ {
+ switch (offset)
+ {
+ <%for (int i = 0; i < allEVirtualIndexBitFields.size(); i++) {%>
+ case <%=i%> :
+ <%=allEVirtualIndexBitFields.get(i)%> = newIndexBits;
+ break;
+ <%}%>
+ default :
+ throw new IndexOutOfBoundsException();
+ }
+ }
+
+ <%}%>
+ <%}%>
+<%}%>
+<%if (isImplementation && !genModel.isReflectiveDelegation() && !genClass.getToStringGenFeatures().isEmpty()) {%>
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public String toString()
+ {
+ if (isProxy()) return super.toString();
+
+ StringBuffer result = new StringBuffer(super.toString());
+ <%{ boolean first = true;%>
+ <%for (Iterator i=genClass.getToStringGenFeatures().iterator(); i.hasNext(); ) { GenFeature genFeature = (GenFeature)i.next();%>
+ <%if (first) { first = false;%>
+ result.append(" (<%=genFeature.getName()%>: ");<%=genModel.getNonNLS()%>
+ <%} else {%>
+ result.append(", <%=genFeature.getName()%>: ");<%=genModel.getNonNLS()%>
+ <%}%>
+ <%if (genFeature.isUnsettable() && !genFeature.isListType()) {%>
+ <%if (genModel.isVirtualDelegation() && !genFeature.isPrimitiveType()) {%>
+ if (eVirtualIsSet(<%=genFeature.getUpperName()%>)) result.append(eVirtualGet(<%=genFeature.getUpperName()%>)); else result.append("<unset>");<%=genModel.getNonNLS()%>
+ <%} else {%>
+ <%if (genClass.isFlag(genFeature)) {%>
+ if (<%if (genClass.isESetFlag(genFeature)) {%>(<%=genClass.getESetFlagsField(genFeature)%> & <%=genFeature.getUpperName()%>_ESETFLAG) != 0<%} else {%><%=genFeature.getUncapName()%>_set_<%}%>) result.append((<%=genClass.getFlagsField(genFeature)%> & <%=genFeature.getUpperName()%>_EFLAG) != 0); else result.append("<unset>");<%=genModel.getNonNLS()%>
+ <%} else {%>
+ if (<%if (genClass.isESetFlag(genFeature)) {%>(<%=genClass.getESetFlagsField(genFeature)%> & <%=genFeature.getUpperName()%>_ESETFLAG) != 0<%} else {%><%=genFeature.getUncapName()%>_set_<%}%>) result.append(<%=genFeature.getSafeName()%>); else result.append("<unset>");<%=genModel.getNonNLS()%>
+ <%}%>
+ <%}%>
+ <%} else {%>
+ <%if (genModel.isVirtualDelegation() && !genFeature.isPrimitiveType()) {%>
+ result.append(eVirtualGet(<%=genFeature.getUpperName()%><%if (!genFeature.isListType() && !genFeature.isReferenceType()){%>, <%=genFeature.getUpperName()%>_DEFAULT_<%}%>));
+ <%} else {%>
+ <%if (genClass.isFlag(genFeature)) {%>
+ result.append((<%=genClass.getFlagsField(genFeature)%> & <%=genFeature.getUpperName()%>_EFLAG) != 0);
+ <%} else {%>
+ result.append(<%=genFeature.getSafeName()%>);
+ <%}%>
+ <%}%>
+ <%}%>
+ <%}%>
+ <%}%>
+ result.append(')');
+ return result.toString();
+ }
+
+<%}%>
+<%if (isImplementation && genClass.isMapEntry()) { GenFeature keyFeature = genClass.getMapEntryKeyFeature(); GenFeature valueFeature = genClass.getMapEntryValueFeature();%>
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ protected int hash = -1;
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public int getHash()
+ {
+ if (hash == -1)
+ {
+ Object theKey = getKey();
+ hash = (theKey == null ? 0 : theKey.hashCode());
+ }
+ return hash;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public void setHash(int hash)
+ {
+ this.hash = hash;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public Object getKey()
+ {
+ <%if (keyFeature.isPrimitiveType()) {%>
+ return new <%=keyFeature.getObjectType()%>(getTypedKey());
+ <%} else {%>
+ return getTypedKey();
+ <%}%>
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public void setKey(Object key)
+ {
+ <%if (keyFeature.isListType()) {%>
+ getTypedKey().addAll((<%=genModel.getImportedName("java.util.Collection")%>)key);
+ <%} else if (keyFeature.isPrimitiveType()) {%>
+ setTypedKey(((<%=keyFeature.getObjectType()%>)key).<%=keyFeature.getPrimitiveValueFunction()%>());
+ <%} else {%>
+ setTypedKey((<%=keyFeature.getImportedType()%>)key);
+ <%}%>
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public Object getValue()
+ {
+ <%if (valueFeature.isPrimitiveType()) {%>
+ return new <%=valueFeature.getObjectType()%>(getTypedValue());
+ <%} else {%>
+ return getTypedValue();
+ <%}%>
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public Object setValue(Object value)
+ {
+ Object oldValue = getValue();
+ <%if (valueFeature.isListType()) {%>
+ getTypedValue().clear();
+ getTypedValue().addAll((<%=genModel.getImportedName("java.util.Collection")%>)value);
+ <%} else if (valueFeature.isPrimitiveType()) {%>
+ setTypedValue(((<%=valueFeature.getObjectType()%>)value).<%=valueFeature.getPrimitiveValueFunction()%>());
+ <%} else {%>
+ setTypedValue((<%=valueFeature.getImportedType()%>)value);
+ <%}%>
+ return oldValue;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public <%=genModel.getImportedName("org.eclipse.emf.common.util.EMap")%> getEMap()
+ {
+ <%=genModel.getImportedName("org.eclipse.emf.ecore.EObject")%> container = eContainer();
+ return container == null ? null : (<%=genModel.getImportedName("org.eclipse.emf.common.util.EMap")%>)container.get(eContainmentFeature());
+ }
+<%}%>
+<%@ include file="Class/insert.javajetinc" fail="silent" %>
+} //<%=isInterface ? " " + genClass.getInterfaceName() : genClass.getClassName()%>
+<%// TODO fix the space above%>
+<%genModel.emitSortedImports();%>
diff --git a/branches/sdo-java-M2/sdo/tools/templates/models/SDOFactoryClass.javajet b/branches/sdo-java-M2/sdo/tools/templates/models/SDOFactoryClass.javajet
new file mode 100644
index 0000000000..5d2609b9c3
--- /dev/null
+++ b/branches/sdo-java-M2/sdo/tools/templates/models/SDOFactoryClass.javajet
@@ -0,0 +1,830 @@
+<%@ jet package="org.apache.tuscany.sdo.generate.templates.model" imports="org.apache.tuscany.sdo.generate.util.* java.util.* org.eclipse.emf.codegen.ecore.genmodel.* org.eclipse.emf.ecore.* org.eclipse.emf.codegen.ecore.genmodel.impl.Literals org.eclipse.emf.ecore.util.*" class="SDOFactoryClass" version="$Id: SDOFactoryClass.javajet,v 1.23 2005/12/10 13:31:02 emerks Exp $" %>
+<%
+/**
+ *
+ * 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.
+ */
+%>
+<%GenPackage genPackage = (GenPackage)((Object[])argument)[0]; GenModel genModel=genPackage.getGenModel();%>
+<%boolean isInterface = Boolean.TRUE.equals(((Object[])argument)[1]); boolean isImplementation = Boolean.TRUE.equals(((Object[])argument)[2]);%>
+<%String publicStaticFinalFlag = isImplementation ? "public static final " : "";%>
+<%@ include file="../Header.javajetinc"%>
+<%if (isInterface || genModel.isSuppressInterfaces()) {%>
+package <%=genPackage.getReflectionPackageName()%>;
+<%} else {%>
+package <%=genPackage.getClassPackageName()%>;
+<%}%>
+
+<%if (isImplementation) {%>
+<%if (!genPackage.hasJavaLangConflict() && !genPackage.hasInterfaceImplConflict() && !genPackage.getClassPackageName().equals(genPackage.getInterfacePackageName())) genModel.addImport(genPackage.getInterfacePackageName() + ".*");%>
+<%}%>
+<%genModel.markImportLocation(stringBuffer);%>
+
+<%if (isInterface) {%>
+/**
+ * <!-- begin-user-doc -->
+ * The <b>Factory</b> for the model.
+ * It provides a create method for each non-abstract class of the model.
+ * <!-- end-user-doc -->
+<%if (!genModel.isSuppressEMFMetaData()) {%>
+ * @see <%=genPackage.getQualifiedPackageInterfaceName()%>
+<%}%>
+ * @generated
+ */
+<%} else {%>
+/**
+ * <!-- begin-user-doc -->
+ * An implementation of the model <b>Factory</b>.
+ * <!-- end-user-doc -->
+ * @generated
+ */
+<%}%>
+<%if (isImplementation) {%>
+public class <%=genPackage.getFactoryClassName()%> extends <%=genModel.getImportedName("org.apache.tuscany.sdo.impl.FactoryBase")%><%if (!genModel.isSuppressInterfaces()) {%> implements <%=genPackage.getImportedFactoryInterfaceName()%><%}%>
+<%} else {%>
+public interface <%=genPackage.getFactoryInterfaceName()%><%if (!genModel.isSuppressEMFMetaData()) {%> extends <%=genModel.getImportedName("org.eclipse.emf.ecore.EFactory")%><%}%>
+<%}%>
+{
+<%if (genModel.getCopyrightText() != null) {%>
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ <%=publicStaticFinalFlag%><%=genModel.getImportedName("java.lang.String")%> copyright = "<%=genModel.getCopyrightText()%>";<%=genModel.getNonNLS()%>
+
+<%}%>
+
+<%if (isInterface && genModel.isSuppressEMFMetaData()) {%>
+ /**
+ * The singleton instance of the factory.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ <%=publicStaticFinalFlag%><%=genPackage.getFactoryInterfaceName()%> INSTANCE = <%=genPackage.getQualifiedFactoryClassName()%>.init();
+
+<%} else if (isInterface && !genModel.isSuppressInterfaces()) {%>
+ /**
+ * The singleton instance of the factory.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ <%=publicStaticFinalFlag%><%=genPackage.getFactoryInterfaceName()%> eINSTANCE = <%=genPackage.getQualifiedFactoryClassName()%>.init();
+
+<%}%>
+<%if (isImplementation) {%>
+ /**
+ * The package namespace URI.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ <%=publicStaticFinalFlag%><%=genModel.getImportedName("java.lang.String")%> NAMESPACE_URI = "<%=genPackage.getNSURI()%>";<%=genModel.getNonNLS()%>
+
+ /**
+ * The package namespace name.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ <%=publicStaticFinalFlag%><%=genModel.getImportedName("java.lang.String")%> NAMESPACE_PREFIX = "<%=genPackage.getNSName()%>";<%=genModel.getNonNLS()%>
+<%int genIndex = 1;
+for (Iterator i=genPackage.getOrderedGenClassifiers().iterator(); i.hasNext();) { GenClassifier genClassifier = (GenClassifier)i.next();%>
+ <%if (!genPackage.getClassifierID(genClassifier).equals("DOCUMENT_ROOT")) { %>
+ <%=publicStaticFinalFlag%>int <%=genPackage.getClassifierID(genClassifier)%> = <%=genIndex%>;
+<%genIndex++;%>
+<% } }%>
+
+<%String factoryType = genModel.isSuppressEMFMetaData() ? genPackage.getFactoryClassName() : genPackage.getImportedFactoryInterfaceName();%>
+ /**
+ * Creates an instance of the factory.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public <%=genPackage.getFactoryClassName()%>()
+ {
+ super(NAMESPACE_URI, NAMESPACE_PREFIX);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public <%=genModel.getImportedName("commonj.sdo.DataObject")%> create(int typeNumber)
+ {
+ switch (typeNumber)
+ {
+<%for (Iterator i=genPackage.getGenClasses().iterator(); i.hasNext();) { GenClass genClass = (GenClass)i.next();%>
+<%if (!genClass.isAbstract() && !genClass.isDynamic()) {%>
+ case <%=genClass.getClassifierID()%>: return (<%=genModel.getImportedName("commonj.sdo.DataObject")%>)create<%=genClass.getName()%>();
+<%}%>
+<%}%>
+ default:
+ return super.create(typeNumber);
+ }
+ }
+
+<%if (!genPackage.getAllGenDataTypes().isEmpty()) {%>
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public Object createFromString(<%=genModel.getImportedName("commonj.sdo.Type")%> type, String initialValue, int propertyValue)
+ {
+ switch (propertyValue)
+ {
+<%for (Iterator i=genPackage.getAllGenDataTypes().iterator(); i.hasNext();) { GenDataType genDataType = (GenDataType)i.next();%>
+ <%if (genDataType.isSerializable()) {%>
+ case <%=genDataType.getClassifierID()%>:
+ return create<%=genDataType.getName()%>FromString(type, initialValue);
+ <%}%>
+<%}%>
+ default:
+ throw new IllegalArgumentException("The datatype '" + type.getName() + "' is not a valid property value");<%=genModel.getNonNLS()%><%=genModel.getNonNLS(2)%>
+ }
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public String convertToString(<%=genModel.getImportedName("commonj.sdo.Type")%> type, Object instanceValue, int propertyValue)
+ {
+ switch (propertyValue)
+ {
+<%for (Iterator i=genPackage.getAllGenDataTypes().iterator(); i.hasNext();) { GenDataType genDataType = (GenDataType)i.next();%>
+ <%if (genDataType.isSerializable()) {%>
+ case <%=genDataType.getClassifierID()%>:
+ return convert<%=genDataType.getName()%>ToString(type, instanceValue);
+ <%}%>
+<%}%>
+ default:
+ throw new IllegalArgumentException("The datatype '" + type.getName() + "' is not a valid property value");<%=genModel.getNonNLS()%><%=genModel.getNonNLS(2)%>
+ }
+ }
+<%}%>
+<%for (Iterator i=genPackage.getGenClasses().iterator(); i.hasNext();) { GenClass genClass = (GenClass)i.next();%>
+ <%if (!genClass.isAbstract() && !genClass.isDynamic()) {%>
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public <%=genClass.getImportedInterfaceName()%> create<%=genClass.getName()%>()
+ {
+ <%if (genClass.isDynamic()) {%>
+ <%=genClass.getImportedInterfaceName()%> <%=genClass.getSafeUncapName()%> = <%=genClass.getCastFromEObject()%>super.create(<%=genClass.getQualifiedClassifierAccessor()%>);
+ <%} else {%>
+ <%=genClass.getImportedClassName()%> <%=genClass.getSafeUncapName()%> = new <%=genClass.getImportedClassName()%>()<%if (genModel.isSuppressInterfaces() && !genPackage.getReflectionPackageName().equals(genPackage.getInterfacePackageName())) {%>{}<%}%>;
+ <%}%>
+ return <%=genClass.getSafeUncapName()%>;
+ }
+ <%}%>
+<%}%>
+
+ // Following creates and initializes SDO metadata for the supported types.
+<%for (Iterator i=genPackage.getOrderedGenClassifiers().iterator(); i.hasNext();) { GenClassifier genClassifier = (GenClassifier)i.next();%>
+ <%if (!genPackage.getClassifierID(genClassifier).equals("DOCUMENT_ROOT")) { %>
+ protected <%=genModel.getImportedName("commonj.sdo.Type")%> <%=genClassifier.getSafeUncapName()%>Type = null;
+
+ public <%=genModel.getImportedName("commonj.sdo.Type")%> get<%=genClassifier.getClassifierAccessorName()%>()
+ {
+ return <%=genClassifier.getSafeUncapName()%>Type;
+ }
+
+<%} }%>
+
+ private static boolean isInited = false;
+
+ public static <%=factoryType%> init()
+ {
+ if (isInited) return (<%=factoryType%>)FactoryBase.getStaticFactory(<%=factoryType%>.NAMESPACE_URI);
+ <%=factoryType%> the<%=factoryType%> = new <%=factoryType%>();
+ isInited = true;
+
+ // Initialize simple dependencies
+ <%=genModel.getImportedName("org.apache.tuscany.sdo.util.SDOUtil")%>.registerStaticTypes(<%=genModel.getImportedName("org.apache.tuscany.sdo.impl.SDOFactoryImpl")%>.class);
+ <%=genModel.getImportedName("org.apache.tuscany.sdo.util.SDOUtil")%>.registerStaticTypes(<%=genModel.getImportedName("org.apache.tuscany.sdo.model.impl.ModelPackageImpl")%>.class);
+
+ // Create package meta-data objects
+ the<%=factoryType%>.createMetaData();
+
+ // Initialize created meta-data
+ the<%=factoryType%>.initializeMetaData();
+
+ // Mark meta-data to indicate it can't be changed
+ //the<%=factoryType%>.freeze(); //FB do we need to freeze / should we freeze ????
+
+ return the<%=factoryType%>;
+ }
+
+ private boolean isCreated = false;
+
+ public void createMetaData()
+ {
+ if (isCreated) return;
+ isCreated = true;
+ <%if (!genPackage.getGenClasses().isEmpty()) {%>
+ <%for (Iterator i=genPackage.getGenClasses().iterator(); i.hasNext();) { GenClass genClass = (GenClass)i.next();%>
+
+ <%if (!genClass.isAbstract() && !genClass.isDynamic()) {%>
+ <%=genClass.getSafeUncapName()%>Type = createType(false, <%=genPackage.getClassifierID(genClass)%>);
+ <%for (Iterator j=genClass.getGenFeatures().iterator(); j.hasNext();) { GenFeature genFeature = (GenFeature)j.next();%>
+ createProperty(<%=!genFeature.isReferenceType()%>, <%=genClass.getSafeUncapName()%>Type, <%=genClass.getClassName()%>.<%=genFeature.getUpperName()%>);
+ <%}%>
+ <%}%>
+ <%}%>
+ <%}%>
+ <%if (!genPackage.getGenEnums().isEmpty()) {%>
+ // Create enums
+ // todo
+ <%for (Iterator e=genPackage.getGenEnums().iterator(); e.hasNext();) { GenEnum genEnum = (GenEnum)e.next();%>
+ <%=genEnum.getClassifierInstanceName()%> = createEEnum(<%=genEnum.getClassifierID()%>);
+ <%}%>
+ <%}%>
+ <%if (!genPackage.getGenDataTypes().isEmpty()) {%>
+ <%for (Iterator d=genPackage.getGenDataTypes().iterator(); d.hasNext();) { GenDataType genDataType = (GenDataType)d.next();%>
+ <%=genDataType.getSafeUncapName()%>Type = createType(true, <%=genPackage.getClassifierID(genDataType)%> );
+ <%}%>
+ <%}%>
+ }
+
+ private boolean isInitialized = false;
+
+ public void initializeMetaData()
+ {
+ if (isInitialized) return;
+ isInitialized = true;
+ <%if (!genPackage.getPackageInitializationDependencies().isEmpty()) {%>
+
+ // Obtain other dependent packages
+ <%for (Iterator p=genPackage.getPackageInitializationDependencies().iterator(); p.hasNext();) { GenPackage dep = (GenPackage)p.next();%>
+ <%=dep.getImportedFactoryClassName()%> <%=genPackage.getPackageInstanceVariable(dep)%> = (<%=dep.getImportedFactoryClassName()%>)FactoryBase.getStaticFactory(<%=dep.getImportedFactoryClassName()%>.NAMESPACE_URI);
+ <%}%>
+ <%}%>
+ <%List annotationSources = genPackage.getAnnotationSources();%>
+ <%annotationSources.remove(ExtendedMetaData.ANNOTATION_URI);%>
+ <%=genModel.getImportedName("commonj.sdo.Property")%> property = null;
+
+ // Add supertypes to classes
+ <%for (Iterator c=genPackage.getGenClasses().iterator(); c.hasNext();) { GenClass genClass = (GenClass)c.next();%>
+ <%for (Iterator b=genClass.getBaseGenClasses().iterator(); b.hasNext();) { GenClass baseGenClass = (GenClass)b.next();%>
+ addSuperType(<%=genClass.getSafeUncapName()%>Type, <%=baseGenClass.getSafeUncapName()%>Type);
+ <%}%>
+ <%}%>
+
+ // Initialize classes and features; add operations and parameters
+ <%for (Iterator i=genPackage.getGenClasses().iterator(); i.hasNext();) { GenClass genClass = (GenClass)i.next();%>
+ <%if (!genClass.isAbstract() && !genClass.isDynamic()) {%>
+ initializeType(<%=genClass.getSafeUncapName()%>Type, <%=genClass.getImportedInterfaceName()%>.class, "<%=genClass.getName()%>");
+ <%for (Iterator sources = annotationSources.iterator(); sources.hasNext();) { String annotationSource = (String)sources.next();%>
+ <%EAnnotation classAnnotation = genClass.getEcoreClassifier().getEAnnotation(annotationSource);%>
+ <%if (classAnnotation != null) { %>
+ <%for (Iterator k = classAnnotation.getDetails().iterator(); k.hasNext();) { Map.Entry detail = (Map.Entry)k.next(); String key = Literals.toStringLiteral((String)detail.getKey(), genModel); String value = Literals.toStringLiteral((String)detail.getValue(), genModel);%>
+ setInstanceProperty (<%=genClass.getSafeUncapName()%>Type, "<%=annotationSource%>", <%=key%>, <%=value%><%=genModel.getNonNLS(key + value)%>);
+ <%}%>
+ <%}%>
+ <%}%>
+
+ <%for (Iterator j=genClass.getGenFeatures().iterator(); j.hasNext();) {GenFeature genFeature = (GenFeature)j.next();%>
+ <%String type = genFeature.getType().equals("commonj.sdo.Sequence") ? "getSequence()" : genPackage.getPackageInstanceVariable(genFeature.getTypeGenPackage()) + ".get" + genFeature.getTypeClassifierAccessorName() + "()";%>
+ property = (<%=genModel.getImportedName("commonj.sdo.Property")%>)<%=genClass.getSafeUncapName()%>Type.getProperties().get(<%=genClass.getClassName()%>.<%=genFeature.getUpperName()%>);
+ <%if (genFeature.isReferenceType()) { GenFeature reverseGenFeature = genFeature.getReverse();%>
+ <%String reverse = reverseGenFeature == null ? "null" : genPackage.getPackageInstanceVariable(reverseGenFeature.getGenPackage()) + ".get" + reverseGenFeature.getFeatureAccessorName() + "()";%>
+ initializeProperty(property, <%=type%>, "<%=genFeature.getSafeName()%>", <%=genFeature.getDefaultValue()%>, <%=genFeature.getLowerBound()%>, <%=genFeature.getUpperBound()%>, <%=genFeature.getContainerClass()%>, <%=genFeature.getChangeableFlag().equals("IS_CHANGEABLE") ? "false" : "true"%>, <%=genFeature.getUnsettableFlag().equals("IS_UNSETTABLE") ? "true": "false"%>, <%=genFeature.getDerivedFlag().equals("IS_DERIVED") ? "true" : "false"%>, <%=genFeature.getContainmentFlag().equals("IS_COMPOSITE")? "true": "false"%> , <%=reverse%>);
+ <%}else{%>
+ initializeProperty(property, <%=type%>, "<%=genFeature.getSafeName()%>", <%=genFeature.getDefaultValue()%>, <%=genFeature.getLowerBound()%>, <%=genFeature.getUpperBound()%>, <%=genFeature.getContainerClass()%>, <%=genFeature.getChangeableFlag().equals("IS_CHANGEABLE") ? "false" : "true"%>, <%=genFeature.getUnsettableFlag().equals("IS_UNSETTABLE") ? "true": "false"%>, <%=genFeature.getDerivedFlag().equals("IS_DERIVED") ? "true" : "false"%>);
+ <%}%>
+ <%for (Iterator sources = annotationSources.iterator(); sources.hasNext();) { String annotationSource = (String)sources.next();%>
+ <%EAnnotation featureAnnotation = genFeature.getEcoreFeature().getEAnnotation(annotationSource);%>
+ <%if (featureAnnotation != null) { %>
+ <%for (Iterator k = featureAnnotation.getDetails().iterator(); k.hasNext();) { Map.Entry detail = (Map.Entry)k.next(); String key = Literals.toStringLiteral((String)detail.getKey(), genModel); String value = Literals.toStringLiteral((String)detail.getValue(), genModel);%>
+ setInstanceProperty (property, "<%=annotationSource%>", <%=key%>, <%=value%><%=genModel.getNonNLS(key + value)%>);
+ <%}%>
+ <%}%>
+ <%}%>
+
+ <%}%>
+ <%}%>
+ <%}%>
+ <%if (!genPackage.getGenDataTypes().isEmpty()) {%>
+ // Initialize data types
+ <%for (Iterator d=genPackage.getGenDataTypes().iterator(); d.hasNext();) { GenDataType genDataType = (GenDataType)d.next();%>
+ initializeType(<%=genDataType.getSafeUncapName()%>Type, <%=genDataType.getImportedInstanceClassName()%>.class, "<%=genDataType.getName()%>", <%=genDataType.getSerializableFlag().equals("IS_SERIALIZABLE") ? "true" : "false"%>, <%=genDataType.getGeneratedInstanceClassFlag().equals("IS_GENERATED_INSTANCE_CLASS") ? "true" : "false" %>);<%=genModel.getNonNLS()%>
+ <%for (Iterator sources = annotationSources.iterator(); sources.hasNext();) { String annotationSource = (String)sources.next();%>
+ <%EAnnotation dataTypeAnnotation = genDataType.getEcoreDataType().getEAnnotation(annotationSource);%>
+ <%if (dataTypeAnnotation != null) { %>
+ <%for (Iterator k = dataTypeAnnotation.getDetails().iterator(); k.hasNext();) { Map.Entry detail = (Map.Entry)k.next(); String key = Literals.toStringLiteral((String)detail.getKey(), genModel); String value = Literals.toStringLiteral((String)detail.getValue(), genModel);%>
+ setInstanceProperty (<%=genDataType.getSafeUncapName()%>Type, "<%=annotationSource%>", <%=key%>, <%=value%><%=genModel.getNonNLS(key + value)%>);
+ <%}%>
+ <%}%>
+ <%}%>
+
+ <%}%>
+ <%}%>
+ createXSDMetaData(theModelPackageImpl);
+ }
+
+ protected void createXSDMetaData(ModelFactoryImpl theModelPackageImpl)
+ {
+ super.createXSDMetaData();
+
+ <%=genModel.getImportedName("commonj.sdo.Property")%> property = null;
+
+ <%String extendedMetaDataSource = ExtendedMetaData.ANNOTATION_URI;%>
+ <%EAnnotation packageAnnotation = genPackage.getEcorePackage().getEAnnotation(extendedMetaDataSource);%>
+ <%if (packageAnnotation != null){ %>
+ addXSDMapping
+ (new String[]
+ {
+ <%for (Iterator k = packageAnnotation.getDetails().iterator(); k.hasNext();) { Map.Entry detail = (Map.Entry)k.next(); String key = Literals.toStringLiteral((String)detail.getKey(), genModel); String value = Literals.toStringLiteral((String)detail.getValue(), genModel);%>
+ <%=key%>, <%=value%><%=k.hasNext() ? "," : ""%><%=genModel.getNonNLS(key + value)%>
+ <%}%>
+ });
+
+ <%}%>
+ <%for (Iterator i=genPackage.getGenClassifiers().iterator(); i.hasNext();) { GenClassifier genClassifier = (GenClassifier)i.next(); EAnnotation classAnnotation = genClassifier.getEcoreClassifier().getEAnnotation(extendedMetaDataSource);%>
+ <%if (classAnnotation != null && !genClassifier.getName().equals("DocumentRoot")) {%>
+ addXSDMapping
+ (<%=genClassifier.getSafeUncapName()%>Type,
+ new String[]
+ {
+ <%for (Iterator k = classAnnotation.getDetails().iterator(); k.hasNext();) { Map.Entry detail = (Map.Entry)k.next(); String key = Literals.toStringLiteral((String)detail.getKey(), genModel); String value = Literals.toStringLiteral((String)detail.getValue(), genModel);%>
+ <%=key%>, <%=value%><%=k.hasNext() ? "," : ""%><%=genModel.getNonNLS(key + value)%>
+ <%}%>
+ });
+
+ <%}%>
+ <%if (genClassifier instanceof GenClass) { GenClass genClass = (GenClass) genClassifier;%>
+ <%for (Iterator j=genClass.getGenFeatures().iterator(); j.hasNext();) { GenFeature genFeature = (GenFeature)j.next(); %>
+ <%EAnnotation featureAnnotation = genFeature.getEcoreFeature().getEAnnotation(extendedMetaDataSource);%>
+ <%if (genClass.getName().equals("DocumentRoot")) { %>
+ <%if (!(genFeature.getName().equals("mixed") || genFeature.getName().equals("xMLNSPrefixMap") || genFeature.getName().equals("xSISchemaLocation"))) { %>
+ property = createGlobalProperty
+ ("<%=genFeature.getName()%>",
+ <%=genPackage.getPackageInstanceVariable(genFeature.getTypeGenPackage())%>.get<%=genFeature.getTypeClassifierAccessorName()%>(),
+ new String[]
+ {
+ <%for (Iterator k = featureAnnotation.getDetails().iterator(); k.hasNext();) { Map.Entry detail = (Map.Entry)k.next(); String key = Literals.toStringLiteral((String)detail.getKey(), genModel); String value = Literals.toStringLiteral((String)detail.getValue(), genModel);%>
+ <%=key%>, <%=value%><%=k.hasNext() ? "," : ""%><%=genModel.getNonNLS(key + value)%>
+ <%}%>
+ <%if (!genFeature.isReferenceType()) {%>
+ },
+ IS_ATTRIBUTE);
+ <%} else {%>
+ });
+ <%}%>
+
+ <%for (Iterator sources = genPackage.getAnnotationSources().iterator(); sources.hasNext();) { String annotationSource = (String)sources.next(); %>
+ <%if (!annotationSource.equals(extendedMetaDataSource)) {%>
+ <%EAnnotation globalAnnotation = genFeature.getEcoreFeature().getEAnnotation(annotationSource);%>
+ <%if (globalAnnotation != null) {%>
+ <%for (Iterator k = globalAnnotation.getDetails().iterator(); k.hasNext();) { Map.Entry detail = (Map.Entry)k.next(); String key = Literals.toStringLiteral((String)detail.getKey(), genModel); String value = Literals.toStringLiteral((String)detail.getValue(), genModel);%>
+ setInstanceProperty
+ (property,
+ "<%=annotationSource%>",
+ <%=key%>, <%=value%><%=genModel.getNonNLS(key + value)%>);
+ <%}%>
+
+ <%}%>
+ <%}%>
+ <%}%>
+ <%}%>
+ <%} else {%>
+ addXSDMapping
+ ((<%=genModel.getImportedName("commonj.sdo.Property")%>)<%=genClassifier.getSafeUncapName()%>Type.getProperties().get(<%=genClass.getClassName()%>.<%=genFeature.getUpperName()%>),
+ new String[]
+ {
+ <%for (Iterator k = featureAnnotation.getDetails().iterator(); k.hasNext();) { Map.Entry detail = (Map.Entry)k.next(); String key = Literals.toStringLiteral((String)detail.getKey(), genModel); String value = Literals.toStringLiteral((String)detail.getValue(), genModel);%>
+ <%=key%>, <%=value%><%=k.hasNext() ? "," : ""%><%=genModel.getNonNLS(key + value)%>
+ <%}%>
+ });
+
+ <%}%>
+ <%}%>
+ <%}%>
+ <%}%>
+ }
+
+<%for (Iterator i=genPackage.getAllGenDataTypes().iterator(); i.hasNext();) { GenDataType genDataType = (GenDataType)i.next();%>
+ <%if (genDataType.isSerializable()) {%>
+<%if (genPackage.isDataTypeConverters()) { String eDataType = genDataType.getQualifiedClassifierAccessor();%>
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public <%=genDataType.getImportedInstanceClassName()%> create<%=genDataType.getName()%>(String literal)
+ {
+ <%if (genDataType instanceof GenEnum) {%>
+ <%=genDataType.getImportedInstanceClassName()%> result = <%=genDataType.getImportedInstanceClassName()%>.get(literal);
+ if (result == null) throw new IllegalArgumentException("The value '" + literal + "' is not a valid enumerator of '" + <%=eDataType%>.getName() + "'");<%=genModel.getNonNLS()%><%=genModel.getNonNLS(2)%><%=genModel.getNonNLS(3)%>
+ return result;
+ <%} else if (genDataType.getBaseType() != null) { GenDataType genBaseType = genDataType.getBaseType(); boolean isPrimitiveConversion = !genDataType.isPrimitiveType() && genBaseType.isPrimitiveType();%>
+ <%if (genBaseType.getGenPackage() == genPackage) {%>
+ <%if (isPrimitiveConversion) {%>
+ return new <%=genDataType.getObjectInstanceClassName()%>(create<%=genBaseType.getName()%>(literal));
+ <%} else {%>
+ return create<%=genBaseType.getName()%>(literal);
+ <%}%>
+ <%} else if (genBaseType.getGenPackage().isDataTypeConverters()) {%>
+ <%if (isPrimitiveConversion) {%>
+ return new <%=genDataType.getObjectInstanceClassName()%>(<%=genBaseType.getGenPackage().getQualifiedEFactoryInternalInstanceAccessor()%>.create<%=genBaseType.getName()%>(literal));
+ <%} else {%>
+ return <%=genBaseType.getGenPackage().getQualifiedEFactoryInternalInstanceAccessor()%>.create<%=genBaseType.getName()%>(literal);
+ <%}%>
+ <%} else {%>
+ return (<%=genDataType.getObjectInstanceClassName()%>)<%=genBaseType.getGenPackage().getQualifiedEFactoryInternalInstanceAccessor()%>.createFromString(<%=genBaseType.getQualifiedClassifierAccessor()%>, literal);
+ <%}%>
+ <%} else if (genDataType.getItemType() != null) { GenDataType genItemType = genDataType.getItemType(); %>
+ if (literal == null) return null;
+ <%=genModel.getImportedName("java.util.List")%> result = new <%=genModel.getImportedName("java.util.ArrayList")%>();
+ for (<%=genModel.getImportedName("java.util.StringTokenizer")%> stringTokenizer = new <%=genModel.getImportedName("java.util.StringTokenizer")%>(literal); stringTokenizer.hasMoreTokens(); )
+ {
+ String item = stringTokenizer.nextToken();
+ <%if (genItemType.getGenPackage() == genPackage) {%>
+ <%if (genPackage.isDataTypeConverters()) { genItemType = genItemType.getObjectType();%>
+ result.add(create<%=genItemType.getName()%>(item));
+ <%} else {%>
+ result.add(create<%=genItemType.getName()%>FromString(<%=genItemType.getQualifiedClassifierAccessor()%>, item));
+ <%}%>
+ <%} else {%>
+ <%if (genItemType.getGenPackage().isDataTypeConverters()) { genItemType = genItemType.getObjectType();%>
+ result.add(<%=genItemType.getGenPackage().getQualifiedEFactoryInternalInstanceAccessor()%>.create<%=genItemType.getName()%>(item));
+ <%} else {%>
+ result.add(<%=genItemType.getGenPackage().getQualifiedEFactoryInternalInstanceAccessor()%>.createFromString(<%=genItemType.getQualifiedClassifierAccessor()%>, item));
+ <%}%>
+ <%}%>
+ }
+ return result;
+ <%} else if (!genDataType.getMemberTypes().isEmpty()) {%>
+ if (literal == null) return <%=genDataType.getStaticValue(null)%>;
+ <%=genDataType.getImportedInstanceClassName()%> result = <%=genDataType.getStaticValue(null)%>;
+ RuntimeException exception = null;
+ <%for (Iterator j = genDataType.getMemberTypes().iterator(); j.hasNext(); ) { GenDataType genMemberType = (GenDataType)j.next();%>
+ try
+ {
+ <%if (genMemberType.getGenPackage() == genPackage) {%>
+ <%if (genPackage.isDataTypeConverters()) { if (!genDataType.isPrimitiveType()) genMemberType = genMemberType.getObjectType();%>
+ result = create<%=genMemberType.getName()%>(literal);
+ <%} else {%>
+ result = (<%=genDataType.getObjectInstanceClassName()%>)create<%=genMemberType.getName()%>FromString(<%=genMemberType.getQualifiedClassifierAccessor()%>, literal);
+ <%}%>
+ <%} else {%>
+ <%if (genPackage.isDataTypeConverters()) { if (!genDataType.isPrimitiveType()) genMemberType = genMemberType.getObjectType();%>
+ result = <%=genMemberType.getGenPackage().getQualifiedEFactoryInternalInstanceAccessor()%>.create<%=genMemberType.getName()%>(literal);
+ <%} else {%>
+ result = (<%=genDataType.getObjectInstanceClassName()%>)<%=genMemberType.getGenPackage().getQualifiedEFactoryInternalInstanceAccessor()%>.createFromString(<%=genMemberType.getQualifiedClassifierAccessor()%>, literal);
+ <%}%>
+ <%}%>
+ if (<%if (!genDataType.isPrimitiveType()) {%>result != null && <%}%><%=genModel.getImportedName("org.eclipse.emf.ecore.util.Diagnostician")%>.INSTANCE.validate(<%=eDataType%>, <%if (genDataType.isPrimitiveType()) {%>new <%=genDataType.getObjectInstanceClassName()%>(result)<%} else {%>result<%}%>, null, null))
+ {
+ return result;
+ }
+ }
+ catch (RuntimeException e)
+ {
+ exception = e;
+ }
+ <%}%>
+ if (<%if (!genDataType.isPrimitiveType()) {%>result != null || <%}%>exception == null) return result;
+
+ throw exception;
+ <%} else if (genDataType.isArrayType()) {%>
+ // TODO: implement this method
+ // Ensure that you remove @generated or mark it @generated NOT
+ throw new <%=genModel.getImportedName("java.lang.UnsupportedOperationException")%>();
+ <%} else if (genDataType.isPrimitiveType()) {%>
+ return ((<%=genDataType.getObjectInstanceClassName()%>)super.createFromString(<%=eDataType%>, literal)).<%=genDataType.getPrimitiveValueFunction()%>();
+ <%} else {%>
+ return (<%=genDataType.getObjectInstanceClassName()%>)super.createFromString(<%=eDataType%>, literal);
+ <%}%>
+ }
+
+<%}%>
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public <%=genDataType.getObjectInstanceClassName()%> create<%=genDataType.getName()%>FromString(<%=genModel.getImportedName("commonj.sdo.Type")%> type, String initialValue)
+ {
+ <%if (genDataType instanceof GenEnum) {%>
+ <%if (genPackage.isDataTypeConverters()) {%>
+ return create<%=genDataType.getName()%>(initialValue);
+ <%} else {%>
+ <%=((GenEnum)genDataType).getImportedInstanceClassName()%> result = <%=((GenEnum)genDataType).getImportedInstanceClassName()%>.get(initialValue);
+ if (result == null) throw new IllegalArgumentException("The value '" + initialValue + "' is not a valid enumerator of '" + type.getName() + "'");<%=genModel.getNonNLS()%><%=genModel.getNonNLS(2)%><%=genModel.getNonNLS(3)%>
+ return result;
+ <%}%>
+ <%} else if (genDataType.getBaseType() != null) { GenDataType genBaseType = genDataType.getBaseType(); %>
+ <%if (genBaseType.getGenPackage() == genPackage) {%>
+ return (<%=genDataType.getObjectInstanceClassName()%>)create<%=genBaseType.getName()%>FromString(<%=SDOGenUtil.getQualifiedTypeAccessor(genDataType)%>, initialValue);
+ <%} else {%>
+ return (<%=genDataType.getObjectInstanceClassName()%>)<%=genBaseType.getGenPackage().getQualifiedEFactoryInternalInstanceAccessor()%>.createFromString(<%=genBaseType.getQualifiedClassifierAccessor()%>, initialValue);
+ <%}%>
+ <%} else if (genDataType.getItemType() != null) { GenDataType genItemType = genDataType.getItemType(); %>
+ <%if (genPackage.isDataTypeConverters()) {%>
+ return create<%=genDataType.getName()%>(initialValue);
+ <%} else {%>
+ if (initialValue == null) return null;
+ <%=genModel.getImportedName("java.util.List")%> result = new <%=genModel.getImportedName("java.util.ArrayList")%>();
+ for (<%=genModel.getImportedName("java.util.StringTokenizer")%> stringTokenizer = new <%=genModel.getImportedName("java.util.StringTokenizer")%>(initialValue); stringTokenizer.hasMoreTokens(); )
+ {
+ String item = stringTokenizer.nextToken();
+ <%if (genItemType.getGenPackage() == genPackage) {%>
+ result.add(create<%=genItemType.getName()%>FromString(<%=genItemType.getQualifiedClassifierAccessor()%>, item));
+ <%} else {%>
+ result.add(<%=genItemType.getGenPackage().getQualifiedEFactoryInternalInstanceAccessor()%>.createFromString(<%=genItemType.getQualifiedClassifierAccessor()%>, item));
+ <%}%>
+ }
+ return result;
+ <%}%>
+ <%} else if (!genDataType.getMemberTypes().isEmpty()) {%>
+ <%if (genPackage.isDataTypeConverters()) {%>
+ <%if (genDataType.isPrimitiveType()) {%>
+ return new <%=genDataType.getObjectInstanceClassName()%>(create<%=genDataType.getName()%>(initialValue));
+ <%} else {%>
+ return create<%=genDataType.getName()%>(initialValue);
+ <%}%>
+ <%} else {%>
+ if (initialValue == null) return null;
+ <%=genDataType.getObjectInstanceClassName()%> result = null;
+ RuntimeException exception = null;
+ <%for (Iterator j = genDataType.getMemberTypes().iterator(); j.hasNext(); ) { GenDataType genMemberType = (GenDataType)j.next();%>
+ try
+ {
+ <%if (genMemberType.getGenPackage() == genPackage) {%>
+ result = (<%=genDataType.getObjectInstanceClassName()%>)create<%=genMemberType.getName()%>FromString(<%=genMemberType.getQualifiedClassifierAccessor()%>, initialValue);
+ <%} else {%>
+ result = (<%=genDataType.getObjectInstanceClassName()%>)<%=genMemberType.getGenPackage().getQualifiedEFactoryInternalInstanceAccessor()%>.createFromString(<%=genMemberType.getQualifiedClassifierAccessor()%>, initialValue);
+ <%}%>
+ if (result != null && <%=genModel.getImportedName("org.eclipse.emf.ecore.util.Diagnostician")%>.INSTANCE.validate(type, result, null, null))
+ {
+ return result;
+ }
+ }
+ catch (RuntimeException e)
+ {
+ exception = e;
+ }
+ <%}%>
+ if (result != null || exception == null) return result;
+
+ throw exception;
+ <%}%>
+ <%} else if (genDataType.isArrayType()) {%>
+ // TODO: implement this method
+ // Ensure that you remove @generated or mark it @generated NOT
+ throw new <%=genModel.getImportedName("java.lang.UnsupportedOperationException")%>();
+ <%} else {%>
+ return (<%=genDataType.getObjectInstanceClassName()%>)super.createFromString(type, initialValue);
+ <%}%>
+ }
+
+<%if (genPackage.isDataTypeConverters()) { String eDataType = genDataType.getQualifiedClassifierAccessor();%>
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public String convert<%=genDataType.getName()%>(<%=genDataType.getImportedInstanceClassName()%> instanceValue)
+ {
+ <%if (genDataType instanceof GenEnum) {%>
+ return instanceValue == null ? null : instanceValue.toString();
+ <%} else if (genDataType.getBaseType() != null) { GenDataType genBaseType = genDataType.getBaseType(); boolean isPrimitiveConversion = !genDataType.isPrimitiveType() && genBaseType.isPrimitiveType();%>
+ <%if (genBaseType.getGenPackage() == genPackage) {%>
+ <%if (isPrimitiveConversion) {%>
+ return instanceValue == null ? null : convert<%=genBaseType.getName()%>(instanceValue.<%=genBaseType.getPrimitiveValueFunction()%>());
+ <%} else {%>
+ return convert<%=genBaseType.getName()%>(instanceValue);
+ <%}%>
+ <%} else if (genBaseType.getGenPackage().isDataTypeConverters()) {%>
+ return <%=genBaseType.getGenPackage().getQualifiedFactoryInstanceAccessor()%>.convert<%=genBaseType.getName()%>(instanceValue);
+ <%} else {%>
+ return <%=genBaseType.getGenPackage().getQualifiedEFactoryInternalInstanceAccessor()%>.convertToString(<%=genBaseType.getQualifiedClassifierAccessor()%>, instanceValue);
+ <%}%>
+ <%} else if (genDataType.getItemType() != null) { GenDataType genItemType = genDataType.getItemType(); %>
+ if (instanceValue == null) return null;
+ if (instanceValue.isEmpty()) return "";
+ <%=genModel.getImportedName("java.lang.StringBuffer")%> result = new <%=genModel.getImportedName("java.lang.StringBuffer")%>();
+ for (<%=genModel.getImportedName("java.util.Iterator")%> i = instanceValue.iterator(); i.hasNext(); )
+ {
+ <%if (genItemType.getGenPackage() == genPackage) {%>
+ <%if (genPackage.isDataTypeConverters()) { genItemType = genItemType.getObjectType();%>
+ result.append(convert<%=genItemType.getName()%>((<%=genItemType.getObjectInstanceClassName()%>)i.next()));
+ <%} else {%>
+ result.append(convert<%=genItemType.getName()%>ToString(<%=genItemType.getQualifiedClassifierAccessor()%>, i.next()));
+ <%}%>
+ <%} else {%>
+ <%if (genItemType.getGenPackage().isDataTypeConverters()) { genItemType = genItemType.getObjectType();%>
+ result.append(<%=genItemType.getGenPackage().getQualifiedEFactoryInternalInstanceAccessor()%>.convert<%=genItemType.getName()%>((<%=genItemType.getObjectInstanceClassName()%>)i.next()));
+ <%} else {%>
+ result.append(<%=genItemType.getGenPackage().getQualifiedEFactoryInternalInstanceAccessor()%>.convertToString(<%=genItemType.getQualifiedClassifierAccessor()%>, i.next()));
+ <%}%>
+ <%}%>
+ result.append(' ');
+ }
+ return result.substring(0, result.length() - 1);
+ <%} else if (!genDataType.getMemberTypes().isEmpty()) {%>
+ <%if (!genDataType.isPrimitiveType()) {%>
+ if (instanceValue == null) return null;
+ <%for (Iterator j = genDataType.getMemberTypes().iterator(); j.hasNext(); ) { GenDataType genMemberType = (GenDataType)j.next();%>
+ if (<%=genMemberType.getQualifiedClassifierAccessor()%>.isInstance(instanceValue))
+ {
+ try
+ {
+ <%if (genMemberType.getGenPackage() == genPackage) {%>
+ <%if (genPackage.isDataTypeConverters()) {%>
+ String value = convert<%=genMemberType.getName()%>(instanceValue);
+ <%} else {%>
+ String value = convert<%=genMemberType.getName()%>ToString(<%=genMemberType.getQualifiedClassifierAccessor()%>, instanceValue);
+ <%}%>
+ <%} else {%>
+ <%if (genMemberType.getGenPackage().isDataTypeConverters()) { genMemberType = genMemberType.getObjectType();%>
+ String value = <%=genMemberType.getGenPackage().getQualifiedEFactoryInternalInstanceAccessor()%>.convert<%=genMemberType.getName()%>((<%=genMemberType.getObjectInstanceClassName()%>)instanceValue);
+ <%} else {%>
+ String value = <%=genMemberType.getGenPackage().getQualifiedEFactoryInternalInstanceAccessor()%>.convertToString(<%=genMemberType.getQualifiedClassifierAccessor()%>, instanceValue);
+ <%}%>
+ <%}%>
+ if (value != null) return value;
+ }
+ catch (Exception e)
+ {
+ }
+ }
+ <%}%>
+ <%} else {%>
+ <%for (Iterator j = genDataType.getMemberTypes().iterator(); j.hasNext(); ) { GenDataType genMemberType = (GenDataType)j.next();%>
+ try
+ {
+ <%if (genMemberType.getGenPackage() == genPackage) {%>
+ <%if (genPackage.isDataTypeConverters()) {%>
+ String value = convert<%=genMemberType.getName()%>(instanceValue);
+ <%} else {%>
+ String value = convert<%=genMemberType.getName()%>ToString(<%=genMemberType.getQualifiedClassifierAccessor()%>, new <%=genMemberType.getObjectInstanceClassName()%>(instanceValue));
+ <%}%>
+ <%} else {%>
+ <%if (genMemberType.getGenPackage().isDataTypeConverters()) {%>
+ String value = <%=genMemberType.getGenPackage().getQualifiedEFactoryInternalInstanceAccessor()%>.convert<%=genMemberType.getName()%>(instanceValue);
+ <%} else {%>
+ String value = <%=genMemberType.getGenPackage().getQualifiedEFactoryInternalInstanceAccessor()%>.convertToString(<%=genMemberType.getQualifiedClassifierAccessor()%>, new <%=genMemberType.getObjectInstanceClassName()%>(instanceValue));
+ <%}%>
+ <%}%>
+ if (value != null) return value;
+ }
+ catch (Exception e)
+ {
+ }
+ <%}%>
+ <%}%>
+ throw new IllegalArgumentException("Invalid value: '"+instanceValue+"' for datatype :"+<%=eDataType%>.getName());
+ <%} else if (genDataType.isArrayType()) {%>
+ // TODO: implement this method
+ // Ensure that you remove @generated or mark it @generated NOT
+ throw new <%=genModel.getImportedName("java.lang.UnsupportedOperationException")%>();
+ <%} else if (genDataType.isPrimitiveType()) {%>
+ return super.convertToString(<%=eDataType%>, new <%=genDataType.getObjectInstanceClassName()%>(instanceValue));
+ <%} else {%>
+ return super.convertToString(<%=eDataType%>, instanceValue);
+ <%}%>
+ }
+
+<%}%>
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public String convert<%=genDataType.getName()%>ToString(<%=genModel.getImportedName("commonj.sdo.Type")%> type, Object instanceValue)
+ {
+ <%if (genDataType instanceof GenEnum) {%>
+ return instanceValue == null ? null : instanceValue.toString();
+ <%} else if (genDataType.getBaseType() != null) { GenDataType genBaseType = genDataType.getBaseType(); %>
+ <%if (genBaseType.getGenPackage() == genPackage) {%>
+ return convert<%=genBaseType.getName()%>ToString(<%=SDOGenUtil.getQualifiedTypeAccessor(genBaseType)%>, instanceValue);
+ <%} else {%>
+ return <%=genBaseType.getGenPackage().getQualifiedEFactoryInternalInstanceAccessor()%>.convertToString(<%=genBaseType.getQualifiedClassifierAccessor()%>, instanceValue);
+ <%}%>
+ <%} else if (genDataType.getItemType() != null) { GenDataType genItemType = genDataType.getItemType(); %>
+ <%if (genPackage.isDataTypeConverters()) {%>
+ return convert<%=genDataType.getName()%>((<%=genModel.getImportedName("java.util.List")%>)instanceValue);
+ <%} else {%>
+ if (instanceValue == null) return null;
+ <%=genModel.getImportedName("java.util.List")%> list = (<%=genModel.getImportedName("java.util.List")%>)instanceValue;
+ if (list.isEmpty()) return "";
+ <%=genModel.getImportedName("java.lang.StringBuffer")%> result = new <%=genModel.getImportedName("java.lang.StringBuffer")%>();
+ for (<%=genModel.getImportedName("java.util.Iterator")%> i = list.iterator(); i.hasNext(); )
+ {
+ <%if (genItemType.getGenPackage() == genPackage) {%>
+ result.append(convert<%=genItemType.getName()%>ToString(<%=genItemType.getQualifiedClassifierAccessor()%>, i.next()));
+ <%} else {%>
+ result.append(<%=genItemType.getGenPackage().getQualifiedEFactoryInternalInstanceAccessor()%>.convertToString(<%=genItemType.getQualifiedClassifierAccessor()%>, i.next()));
+ <%}%>
+ result.append(' ');
+ }
+ return result.substring(0, result.length() - 1);
+ <%}%>
+ <%} else if (!genDataType.getMemberTypes().isEmpty()) {%>
+ <%if (genPackage.isDataTypeConverters()) {%>
+ <%if (genDataType.isPrimitiveType()) {%>
+ return instanceValue == null ? null : convert<%=genDataType.getName()%>(((<%=genDataType.getObjectInstanceClassName()%>)instanceValue).<%=genDataType.getPrimitiveValueFunction()%>());
+ <%} else {%>
+ return convert<%=genDataType.getName()%>(instanceValue);
+ <%}%>
+ <%} else {%>
+ if (instanceValue == null) return null;
+ <%for (Iterator j = genDataType.getMemberTypes().iterator(); j.hasNext(); ) { GenDataType genMemberType = (GenDataType)j.next();%>
+ if (<%=genMemberType.getQualifiedClassifierAccessor()%>.isInstance(instanceValue))
+ {
+ try
+ {
+ <%if (genMemberType.getGenPackage() == genPackage) {%>
+ String value = convert<%=genMemberType.getName()%>ToString(<%=genMemberType.getQualifiedClassifierAccessor()%>, instanceValue);
+ <%} else {%>
+ String value = <%=genMemberType.getGenPackage().getQualifiedEFactoryInternalInstanceAccessor()%>.convertToString(<%=genMemberType.getQualifiedClassifierAccessor()%>, instanceValue);
+ <%}%>
+ if (value != null) return value;
+ }
+ catch (Exception e)
+ {
+ }
+ }
+ <%}%>
+ throw new IllegalArgumentException("Invalid value: '"+instanceValue+"' for datatype :"+type.getName());
+ <%}%>
+ <%} else if (genDataType.isArrayType()) {%>
+ // TODO: implement this method
+ // Ensure that you remove @generated or mark it @generated NOT
+ throw new <%=genModel.getImportedName("java.lang.UnsupportedOperationException")%>();
+ <%} else {%>
+ return super.convertToString(type, instanceValue);
+ <%}%>
+ }
+
+ <%}%>
+<%}%>
+<%} else {%>
+ <%for (Iterator i=genPackage.getGenClasses().iterator(); i.hasNext();) { GenClass genClass = (GenClass)i.next();%>
+ <%if (genClass.hasFactoryInterfaceCreateMethod()) {%>
+ /**
+ * Returns a new object of class '<em><%=genClass.getFormattedName()%></em>'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return a new object of class '<em><%=genClass.getFormattedName()%></em>'.
+ * @generated
+ */
+ <%=genClass.getImportedInterfaceName()%> create<%=genClass.getName()%>();
+
+ <%}%>
+ <%}%>
+ <%if (genPackage.isDataTypeConverters()) {%>
+ <%for (Iterator i=genPackage.getAllGenDataTypes().iterator(); i.hasNext();) { GenDataType genDataType = (GenDataType)i.next();%>
+ <%if (genDataType.isSerializable()) {%>
+ /**
+ * Returns an instance of data type '<em><%=genDataType.getFormattedName()%></em>' corresponding the given literal.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @param literal a literal of the data type.
+ * @return a new instance value of the data type.
+ * @generated
+ */
+ <%=genDataType.getImportedInstanceClassName()%> create<%=genDataType.getName()%>(String literal);
+
+ /**
+ * Returns a literal representation of an instance of data type '<em><%=genDataType.getFormattedName()%></em>'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @param instanceValue an instance value of the data type.
+ * @return a literal representation of the instance value.
+ * @generated
+ */
+ String convert<%=genDataType.getName()%>(<%=genDataType.getImportedInstanceClassName()%> instanceValue);
+
+ <%}%>
+ <%}%>
+ <%}%>
+<%}%>
+} //<%=isInterface ? genPackage.getFactoryInterfaceName() : genPackage.getFactoryClassName()%>
+<%genModel.emitSortedImports();%>