From 9833a542bb75c2008c71809e4fdfebc41e67fb46 Mon Sep 17 00:00:00 2001 From: lresende Date: Tue, 10 Nov 2009 19:18:51 +0000 Subject: Move the SDO folder as new trunk for SDO sub project git-svn-id: http://svn.us.apache.org/repos/asf/tuscany@834610 13f79535-47bb-0310-9956-ffa450edef68 --- sdo-java/trunk/BUILDING | 34 + sdo-java/trunk/LICENSE | 280 + sdo-java/trunk/NOTICE | 11 + sdo-java/trunk/README | 16 + sdo-java/trunk/RELEASE_NOTES | 34 + sdo-java/trunk/distribution/pom.xml | 137 + .../trunk/distribution/src/main/assembly/bin.xml | 124 + .../trunk/distribution/src/main/assembly/src.xml | 80 + .../distribution/src/main/release/bin/INSTALL | 4 + .../distribution/src/main/release/bin/LICENSE | 420 ++ .../trunk/distribution/src/main/release/bin/NOTICE | 17 + .../trunk/distribution/src/main/release/bin/README | 23 + .../src/main/release/bin/samples/README | 11 + .../src/main/release/bin/samples/runsamples.bat | 26 + .../src/main/release/bin/samples/runsamples.sh | 27 + .../release/bin/samples/sampleProgramContents.html | 244 + sdo-java/trunk/impl/model/SDO.ecore | 982 +++ sdo-java/trunk/impl/model/SDO.genmodel | 583 ++ sdo-java/trunk/impl/model/SDO.mdl | 7670 ++++++++++++++++++++ sdo-java/trunk/impl/pom.xml | 189 + .../org/apache/tuscany/sdo/AnyTypeDataObject.java | 37 + .../apache/tuscany/sdo/SDOExtendedMetaData.java | 39 + .../java/org/apache/tuscany/sdo/SDOFactory.java | 185 + .../java/org/apache/tuscany/sdo/SDOPackage.java | 1657 +++++ .../org/apache/tuscany/sdo/SDOTypeVisitor.java | 49 + .../tuscany/sdo/SimpleAnyTypeDataObject.java | 35 + .../sdo/codegen/BytecodeInterfaceGenerator.java | 98 + .../tuscany/sdo/codegen/GenerationException.java | 42 + .../sdo/codegen/JavaInterfaceGenerator.java | 179 + .../sdo/codegen/NoJavaImplementationException.java | 61 + .../sdo/helper/BaseSDOExtendedMetaDataImpl.java | 167 + .../tuscany/sdo/helper/BaseSDOXSDEcoreBuilder.java | 1771 +++++ .../apache/tuscany/sdo/helper/CopyHelperImpl.java | 115 + .../sdo/helper/CrossScopeCopyHelperImpl.java | 255 + .../apache/tuscany/sdo/helper/DataFactoryImpl.java | 59 + .../apache/tuscany/sdo/helper/DataHelperImpl.java | 615 ++ .../sdo/helper/DefaultHelperContextImpl.java | 72 + .../tuscany/sdo/helper/EqualityHelperImpl.java | 96 + .../tuscany/sdo/helper/HelperContextImpl.java | 193 + .../tuscany/sdo/helper/HelperProviderImpl.java | 50 + .../apache/tuscany/sdo/helper/SDOAnnotations.java | 51 + .../sdo/helper/SDOExtendedMetaDataImpl.java | 305 + .../apache/tuscany/sdo/helper/SDOHelperImpl.java | 530 ++ .../tuscany/sdo/helper/SDOSimpleDateFormat.java | 92 + .../tuscany/sdo/helper/SDOXSDEcoreBuilder.java | 789 ++ .../apache/tuscany/sdo/helper/SchemaBuilder.java | 786 ++ .../apache/tuscany/sdo/helper/TypeHelperImpl.java | 317 + .../org/apache/tuscany/sdo/helper/TypeTable.java | 254 + .../apache/tuscany/sdo/helper/XMLDocumentImpl.java | 574 ++ .../apache/tuscany/sdo/helper/XMLHelperImpl.java | 193 + .../apache/tuscany/sdo/helper/XMLStreamHelper.java | 26 + .../tuscany/sdo/helper/XMLStreamHelperImpl.java | 151 + .../apache/tuscany/sdo/helper/XSDHelperImpl.java | 327 + .../tuscany/sdo/impl/AnyTypeDataObjectImpl.java | 299 + .../org/apache/tuscany/sdo/impl/AttributeImpl.java | 836 +++ .../apache/tuscany/sdo/impl/ChangeSummaryImpl.java | 876 +++ .../tuscany/sdo/impl/ChangeSummarySettingImpl.java | 113 + .../org/apache/tuscany/sdo/impl/ClassImpl.java | 1127 +++ .../org/apache/tuscany/sdo/impl/DataGraphImpl.java | 852 +++ .../apache/tuscany/sdo/impl/DataObjectBase.java | 536 ++ .../apache/tuscany/sdo/impl/DataObjectImpl.java | 1562 ++++ .../org/apache/tuscany/sdo/impl/DataTypeImpl.java | 781 ++ .../tuscany/sdo/impl/DynamicDataObjectImpl.java | 216 + .../sdo/impl/DynamicStoreDataObjectImpl.java | 91 + .../java/org/apache/tuscany/sdo/impl/EnumImpl.java | 183 + .../org/apache/tuscany/sdo/impl/EventImpl.java | 78 + .../tuscany/sdo/impl/ExtensibleDataObjectImpl.java | 267 + .../org/apache/tuscany/sdo/impl/FactoryBase.java | 368 + .../org/apache/tuscany/sdo/impl/ListenerBase.java | 33 + .../org/apache/tuscany/sdo/impl/ReferenceImpl.java | 785 ++ .../apache/tuscany/sdo/impl/SDOFactoryImpl.java | 337 + .../apache/tuscany/sdo/impl/SDOPackageImpl.java | 2207 ++++++ .../sdo/impl/SimpleAnyTypeDataObjectImpl.java | 333 + .../tuscany/sdo/impl/StoreDataObjectImpl.java | 314 + .../tuscany/sdo/model/BaseDataGraphType.java | 213 + .../apache/tuscany/sdo/model/DataGraphType.java | 53 + .../org/apache/tuscany/sdo/model/DataObject.java | 35 + .../org/apache/tuscany/sdo/model/ModelFactory.java | 106 + .../org/apache/tuscany/sdo/model/ModelsType.java | 62 + .../org/apache/tuscany/sdo/model/Property.java | 503 ++ .../org/apache/tuscany/sdo/model/TextType.java | 57 + .../java/org/apache/tuscany/sdo/model/Type.java | 431 ++ .../java/org/apache/tuscany/sdo/model/Types.java | 59 + .../java/org/apache/tuscany/sdo/model/XSDType.java | 62 + .../sdo/model/impl/BaseDataGraphTypeImpl.java | 625 ++ .../tuscany/sdo/model/impl/DataGraphTypeImpl.java | 258 + .../tuscany/sdo/model/impl/DataObjectImpl.java | 84 + .../tuscany/sdo/model/impl/ModelFactoryImpl.java | 2401 ++++++ .../tuscany/sdo/model/impl/ModelsTypeImpl.java | 220 + .../tuscany/sdo/model/impl/PropertyImpl.java | 1170 +++ .../tuscany/sdo/model/impl/TextTypeImpl.java | 206 + .../apache/tuscany/sdo/model/impl/TypeImpl.java | 1068 +++ .../apache/tuscany/sdo/model/impl/TypesImpl.java | 210 + .../apache/tuscany/sdo/model/impl/XSDTypeImpl.java | 220 + .../sdo/model/internal/InternalFactory.java | 52 + .../model/internal/impl/InternalFactoryImpl.java | 296 + .../apache/tuscany/sdo/model/java/JavaFactory.java | 61 + .../apache/tuscany/sdo/model/java/JavaInfo.java | 92 + .../sdo/model/java/impl/JavaFactoryImpl.java | 659 ++ .../tuscany/sdo/model/java/impl/JavaInfoImpl.java | 256 + .../apache/tuscany/sdo/model/xml/XMLFactory.java | 61 + .../org/apache/tuscany/sdo/model/xml/XMLInfo.java | 92 + .../tuscany/sdo/model/xml/impl/XMLFactoryImpl.java | 341 + .../tuscany/sdo/model/xml/impl/XMLInfoImpl.java | 256 + .../tuscany/sdo/osgi/SdoBundleActivator.java | 41 + .../org/apache/tuscany/sdo/util/BasicSequence.java | 176 + .../sdo/util/DataGraphResourceFactoryImpl.java | 711 ++ .../apache/tuscany/sdo/util/DataObjectUtil.java | 3035 ++++++++ .../java/org/apache/tuscany/sdo/util/SDOUtil.java | 593 ++ .../apache/tuscany/sdo/util/StAX2SAXAdapter.java | 250 + .../tuscany/sdo/util/StreamDeserializer.java | 92 + .../apache/tuscany/sdo/util/VirtualSequence.java | 780 ++ .../tuscany/sdo/util/metadata/JavaMetaData.java | 90 + .../tuscany/sdo/util/metadata/MetadataFactory.java | 77 + .../sdo/util/metadata/SDOMetaDataGroup.java | 87 + .../tuscany/sdo/util/metadata/TypeMetaData.java | 65 + .../tuscany/sdo/util/metadata/XSDMetaData.java | 66 + .../sdo/util/metadata/impl/JavaMetaDataImpl.java | 267 + .../util/metadata/impl/MetadataFactoryImpl.java | 367 + .../util/metadata/impl/SDOMetaDataGroupImpl.java | 285 + .../sdo/util/metadata/impl/TypeMetaDataImpl.java | 203 + .../sdo/util/metadata/impl/XSDMetaDataImpl.java | 203 + .../resource/ChangeSummaryStreamDeserializer.java | 663 ++ .../resource/ChangeSummaryStreamSerializer.java | 690 ++ .../util/resource/DataObjectXMLStreamReader.java | 1579 ++++ .../resource/RecordedEventXMLStreamReader.java | 868 +++ .../tuscany/sdo/util/resource/SDODeserializer.java | 340 + .../sdo/util/resource/SDOURIConverterImpl.java | 60 + .../util/resource/SDOXMLResourceFactoryImpl.java | 47 + .../sdo/util/resource/SDOXMLResourceImpl.java | 1009 +++ .../sdo/util/resource/XMLDocumentStreamReader.java | 438 ++ .../sdo/util/resource/XMLFragmentStreamReader.java | 44 + .../sdo/util/resource/XMLStreamSerializer.java | 414 ++ .../impl/src/main/resources/META-INF/DISCLAIMER | 7 + .../impl/src/main/resources/META-INF/LICENSE.txt | 207 + .../impl/src/main/resources/META-INF/MANIFEST.MF | 29 + .../trunk/impl/src/main/resources/META-INF/NOTICE | 7 + .../impl/src/main/resources/META-INF/README.txt | 23 + .../services/commonj.sdo.impl.HelperProvider | 1 + .../trunk/impl/src/main/resources/sdo-metadata.xsd | 45 + .../impl/src/main/resources/xml/sdoInternal.xsd | 33 + .../main/resources/xml/sdoModelChangeSummary.xsd | 28 + .../ExpectedExceptionFactory.java | 70 + .../ExpectedException/ExpectedExceptionType.java | 786 ++ .../ExpectedException/SequenceReadOnlyType.java | 158 + .../impl/ExpectedExceptionFactoryImpl.java | 579 ++ .../impl/ExpectedExceptionTypeImpl.java | 1682 +++++ .../impl/SequenceReadOnlyTypeImpl.java | 354 + .../src/test/java/com/example/simple/Quote.java | 475 ++ .../java/com/example/simple/SimpleFactory.java | 61 + .../java/com/example/simple/impl/QuoteImpl.java | 1045 +++ .../com/example/simple/impl/SimpleFactoryImpl.java | 330 + .../test/Containment/ContainmentFactory.java | 61 + .../example/test/Containment/ContainmentTest.java | 177 + .../Containment/impl/ContainmentFactoryImpl.java | 270 + .../test/Containment/impl/ContainmentTestImpl.java | 409 ++ .../test/java/org/apache/tuscany/sdo/AllTests.java | 41 + .../org/apache/tuscany/sdo/codegen/AllTests.java | 47 + .../java/org/apache/tuscany/sdo/codegen/Bar1.java | 26 + .../java/org/apache/tuscany/sdo/codegen/Bar2.java | 26 + .../BytecodeInterfaceGeneratorTestCase.java | 167 + .../java/org/apache/tuscany/sdo/codegen/Foo.java | 26 + .../codegen/JavaInterfaceGeneratorTestCase.java | 129 + .../apache/tuscany/sdo/codegen/MockProperty.java | 94 + .../org/apache/tuscany/sdo/codegen/MockType.java | 104 + .../java/org/apache/tuscany/sdo/test/AllTests.java | 87 + .../org/apache/tuscany/sdo/test/AnyTypeTest.java | 112 + .../apache/tuscany/sdo/test/BoundsTestCase.java | 79 + .../test/ChangeSummaryOnDataObjectTestCase.java | 216 + .../sdo/test/ChangeSummaryPropertyTestCase.java | 219 + .../tuscany/sdo/test/ChangeSummaryTestCase.java | 92 + .../tuscany/sdo/test/ContainmentCycleTestCase.java | 866 +++ .../tuscany/sdo/test/ContainmentTypeUtil.java | 86 + .../tuscany/sdo/test/CrossScopeCopyTestCase.java | 474 ++ .../apache/tuscany/sdo/test/DataGraphTestCase.java | 270 + .../sdo/test/DataObjectGetListTestCase.java | 129 + .../tuscany/sdo/test/DataTypeBaseTypeTestCase.java | 68 + .../tuscany/sdo/test/DateConversionTestCase.java | 380 + .../test/DefineOpenContentPropertyTestCase.java | 133 + .../tuscany/sdo/test/DefineTypeTestCase.java | 704 ++ .../sdo/test/DeserializationNoSchemaTestCase.java | 124 + .../org/apache/tuscany/sdo/test/DotNameTest.java | 78 + .../tuscany/sdo/test/DupElementTestCase.java | 99 + .../sdo/test/DynamicTypesComparisonTestCase.java | 256 + .../sdo/test/ExpectedExceptionsTestCase.java | 1878 +++++ .../org/apache/tuscany/sdo/test/FormTestCase.java | 112 + .../tuscany/sdo/test/HelperContextTestCase.java | 75 + .../tuscany/sdo/test/ImplSpecificTestCase.java | 74 + .../apache/tuscany/sdo/test/IsManyTestCase.java | 65 + .../sdo/test/JavaSerializeDeserializeTestCase.java | 297 + .../org/apache/tuscany/sdo/test/JiraTestCases.java | 184 + .../test/MetadataInstancePropertiesTestCase.java | 243 + .../apache/tuscany/sdo/test/MixedTypeTestCase.java | 89 + .../sdo/test/NeverStaleChangeSummaryTestCase.java | 76 + .../tuscany/sdo/test/NotificationTestCase.java | 186 + .../apache/tuscany/sdo/test/OpenTypeTestCase.java | 139 + .../tuscany/sdo/test/SchemaLocationTestCase.java | 48 + .../apache/tuscany/sdo/test/SequenceTestCase.java | 100 + .../tuscany/sdo/test/SerializeTypesTestCase.java | 190 + .../tuscany/sdo/test/SimpleCopyTestCase.java | 71 + .../tuscany/sdo/test/SimpleDynamicTestCase.java | 123 + .../tuscany/sdo/test/SimpleEqualityTestCase.java | 91 + .../sdo/test/SubstitutionValuesTestCase.java | 83 + .../java/org/apache/tuscany/sdo/test/TestUtil.java | 285 + .../tuscany/sdo/test/TypeConversionTestCase.java | 1007 +++ .../tuscany/sdo/test/TypeHelperTestCase.java | 45 + .../tuscany/sdo/test/TypeRoundTripTestCase.java | 147 + .../tuscany/sdo/test/XMLDocumentTestCase.java | 110 + .../apache/tuscany/sdo/test/XMLHelperTestCase.java | 314 + .../tuscany/sdo/test/XMLLoadOptionsTestCase.java | 192 + .../sdo/test/XMLLoadUnknownFeatureTestCase.java | 51 + .../tuscany/sdo/test/XMLSaveOptionsTestCase.java | 147 + .../test/XMLStreamHelperPerformanceTestCase.java | 91 + .../tuscany/sdo/test/XMLStreamHelperTestCase.java | 195 + .../sdo/test/XMLUnknownPropertiesTestCase.java | 132 + .../org/apache/tuscany/sdo/test/XPathTestCase.java | 125 + .../apache/tuscany/sdo/test/XSDHelperTestCase.java | 224 + .../apache/tuscany/sdo/test/XSDQNameTestCase.java | 123 + .../tuscany/sdo/test/osgi/ClassLoaderTestCase.java | 192 + .../apache/tuscany/sdo/test/osgi/OSGiTestCase.java | 354 + .../tuscany/sdo/test/osgi/TestBundleActivator.java | 66 + .../src/test/resources/SchemaLocationTestCase.xml | 33 + .../src/test/resources/SequenceChangeSummary.xsd | 48 + .../impl/src/test/resources/SubstitutionValues.xsd | 31 + .../test/resources/TypePropertyMetadataInfo.xsd | 97 + .../XMLDocumentNoNamespaceSchemaLocation.xsd | 31 + .../test/resources/XMLDocumentSchemaLocation.xsd | 35 + .../src/test/resources/XMLDocumentTestCase.xml | 32 + .../impl/src/test/resources/XMLStreamHelper.xsd | 41 + sdo-java/trunk/impl/src/test/resources/anytype.xsd | 36 + .../trunk/impl/src/test/resources/api_test.xsd | 46 + sdo-java/trunk/impl/src/test/resources/bank.xsd | 78 + sdo-java/trunk/impl/src/test/resources/bounds.xsd | 45 + sdo-java/trunk/impl/src/test/resources/comment.xsd | 32 + sdo-java/trunk/impl/src/test/resources/company.xsd | 44 + .../impl/src/test/resources/containmenttest.xsd | 31 + .../trunk/impl/src/test/resources/customer1.xml | 8 + .../trunk/impl/src/test/resources/customer2.xml | 8 + .../trunk/impl/src/test/resources/datatype.xsd | 34 + .../trunk/impl/src/test/resources/dotNames.xsd | 30 + .../trunk/impl/src/test/resources/dupelement.xsd | 39 + .../impl/src/test/resources/expectedExceptions.xsd | 67 + sdo-java/trunk/impl/src/test/resources/foo-ext.xml | 27 + sdo-java/trunk/impl/src/test/resources/foo-ext.xsd | 44 + sdo-java/trunk/impl/src/test/resources/foo.xsd | 232 + sdo-java/trunk/impl/src/test/resources/ipo.xsd | 136 + sdo-java/trunk/impl/src/test/resources/mixed.xml | 9 + sdo-java/trunk/impl/src/test/resources/mixed.xsd | 41 + sdo-java/trunk/impl/src/test/resources/mixed2.xml | 12 + .../impl/src/test/resources/mixedChangeSummary.xml | 11 + .../test/resources/mixedChangeSummaryUndone.xml | 2 + .../trunk/impl/src/test/resources/mixedopen.xml | 13 + sdo-java/trunk/impl/src/test/resources/names.xsd | 33 + sdo-java/trunk/impl/src/test/resources/open.xml | 8 + sdo-java/trunk/impl/src/test/resources/open.xsd | 51 + .../trunk/impl/src/test/resources/open1any.xsd | 44 + sdo-java/trunk/impl/src/test/resources/open2.xml | 9 + .../impl/src/test/resources/openChangeSummary.xml | 24 + .../src/test/resources/openChangeSummaryUndone.xml | 17 + .../src/test/resources/openContentProperty.xml | 12 + .../trunk/impl/src/test/resources/osgi/sdo.impl.mf | 44 + .../impl/src/test/resources/osgi/sdo.osgi.test.mf | 40 + sdo-java/trunk/impl/src/test/resources/po.xsd | 80 + sdo-java/trunk/impl/src/test/resources/prefix.xsd | 24 + sdo-java/trunk/impl/src/test/resources/quote.xml | 14 + .../trunk/impl/src/test/resources/quoteInSOAP.xml | 37 + .../trunk/impl/src/test/resources/sdoModel.xsd | 28 + .../impl/src/test/resources/sdoannotations.xsd | 60 + .../trunk/impl/src/test/resources/sdotypes.xsd | 71 + .../trunk/impl/src/test/resources/shallowquote.xml | 11 + .../impl/src/test/resources/shallowquote1.xml | 29 + sdo-java/trunk/impl/src/test/resources/simple.xsd | 41 + sdo-java/trunk/impl/src/test/resources/simple2.xsd | 41 + sdo-java/trunk/impl/src/test/resources/simple3.xsd | 34 + .../src/test/resources/simpleWithChangeSummary.xml | 28 + .../src/test/resources/simpleWithChangeSummary.xsd | 49 + .../resources/simpleWithChangeSummaryUndone.xml | 19 + .../src/test/resources/simplechangesummary.xml | 33 + .../src/test/resources/substitutionValues1.xml | 23 + .../src/test/resources/substitutionValues2.xml | 23 + sdo-java/trunk/impl/src/test/resources/xpath.xml | 51 + sdo-java/trunk/impl/src/test/resources/xpath.xsd | 75 + .../trunk/impl/src/test/resources/xsdCorners.xsd | 34 + sdo-java/trunk/java5tools/pom.xml | 98 + .../sdo/generate/Interface2JavaGenerator.java | 244 + .../src/main/resources/META-INF/DISCLAIMER | 7 + .../src/main/resources/META-INF/LICENSE.txt | 207 + .../java5tools/src/main/resources/META-INF/NOTICE | 14 + .../src/main/resources/META-INF/README.txt | 23 + sdo-java/trunk/lib/pom.xml | 99 + .../java/org/apache/tuscany/sdo/api/Event.java | 63 + .../org/apache/tuscany/sdo/api/EventListener.java | 33 + .../java/org/apache/tuscany/sdo/api/SDOHelper.java | 452 ++ .../java/org/apache/tuscany/sdo/api/SDOUtil.java | 445 ++ .../apache/tuscany/sdo/api/XMLStreamHelper.java | 125 + .../java/org/apache/tuscany/sdo/api/overview.html | 38 + .../tuscany/sdo/lib/SDOObjectInputStream.java | 49 + .../tuscany/sdo/lib/SDOObjectOutputStream.java | 49 + .../tuscany/sdo/lib/UnknownPropertyList.java | 70 + .../apache/tuscany/sdo/spi/HelperProviderBase.java | 246 + .../org/apache/tuscany/sdo/spi/SDOHelperBase.java | 176 + .../lib/src/main/resources/META-INF/DISCLAIMER | 7 + .../lib/src/main/resources/META-INF/LICENSE.txt | 207 + .../lib/src/main/resources/META-INF/MANIFEST.MF | 19 + .../trunk/lib/src/main/resources/META-INF/NOTICE | 8 + .../lib/src/main/resources/META-INF/README.txt | 23 + sdo-java/trunk/plugin/pom.xml | 106 + .../apache/tuscany/sdo/plugin/GeneratorMojo.java | 322 + .../tuscany/sdo/plugin/SchemaFileOption.java | 208 + .../plugin/src/main/resources/META-INF/DISCLAIMER | 7 + .../plugin/src/main/resources/META-INF/LICENSE.txt | 207 + .../plugin/src/main/resources/META-INF/NOTICE | 7 + .../plugin/src/main/resources/META-INF/README.txt | 23 + sdo-java/trunk/pom.xml | 210 + sdo-java/trunk/sample/pom.xml | 112 + .../apache/tuscany/samples/sdo/ExecuteSamples.java | 100 + .../org/apache/tuscany/samples/sdo/SampleBase.java | 192 + .../samples/sdo/advanced/MedicalScenario.java | 424 ++ .../MedicalScenarioWithChangeMonitoring.java | 449 ++ .../sdo/advanced/ObtainingDataGraphFromXml.java | 201 + .../samples/sdo/advanced/PrintDataGraph.java | 498 ++ .../tuscany/samples/sdo/advanced/package.html | 31 + .../basic/AccessDataObjectPropertiesByName.java | 99 + .../sdo/basic/AccessingTheContentsOfASequence.java | 115 + .../tuscany/samples/sdo/basic/CreateCompany.java | 151 + .../samples/sdo/basic/CreatePurchaseOrder.java | 159 + .../samples/sdo/basic/ReadPurchaseOrder.java | 147 + .../apache/tuscany/samples/sdo/basic/package.html | 31 + .../AccessDataObjectUsingValidXPath.java | 129 + .../AccessingDataObjectsViaPropertyIndex.java | 164 + .../sdo/intermediate/CreateCompanyTuscanyAPI.java | 114 + .../CreateDataObjectFromXmlString.java | 133 + .../intermediate/DynamicCustomerTypeSample.java | 193 + .../samples/sdo/intermediate/OppositeProperty.java | 89 + .../SerializingDeserializingADataObject.java | 137 + .../tuscany/samples/sdo/intermediate/package.html | 30 + .../samples/sdo/internal/DocumentSamples.java | 218 + .../samples/sdo/internal/SampleInfrastructure.java | 330 + .../org/apache/tuscany/samples/sdo/overview.html | 127 + .../org/apache/tuscany/samples/sdo/package.html | 33 + .../tuscany/samples/sdo/sampleProgramContents.html | 243 + .../sample/src/main/resources/META-INF/LICENSE.txt | 207 + .../sample/src/main/resources/META-INF/NOTICE | 8 + .../sample/src/main/resources/META-INF/README.txt | 23 + .../sample/src/main/resources/MedicalTest.xsd | 57 + .../sample/src/main/resources/MedicalTest_CS.xsd | 58 + .../trunk/sample/src/main/resources/People.xsd | 70 + .../trunk/sample/src/main/resources/company.xsd | 45 + .../main/resources/companyCompleteDataGraph.xml | 69 + .../sample/src/main/resources/companyDataGraph.xml | 31 + .../main/resources/companyDataGraphGenerated.xml | 30 + .../sample/src/main/resources/companyGenerated.xml | 27 + .../src/main/resources/doc-files/cmdPrompt.GIF | Bin 0 -> 9431 bytes .../trunk/sample/src/main/resources/letter.xml | 21 + .../trunk/sample/src/main/resources/letter.xsd | 32 + sdo-java/trunk/sample/src/main/resources/po.xml | 57 + sdo-java/trunk/sample/src/main/resources/po.xsd | 81 + .../trunk/sample/src/main/resources/sports.xml | 43 + .../trunk/sample/src/main/resources/sports.xsd | 54 + sdo-java/trunk/sdo-api/pom.xml | 145 + .../src/main/java/commonj/sdo/ChangeSummary.java | 207 + .../src/main/java/commonj/sdo/DataGraph.java | 76 + .../src/main/java/commonj/sdo/DataObject.java | 1121 +++ .../src/main/java/commonj/sdo/Property.java | 115 + .../src/main/java/commonj/sdo/Sequence.java | 140 + .../sdo-api/src/main/java/commonj/sdo/Type.java | 166 + .../main/java/commonj/sdo/helper/CopyHelper.java | 85 + .../main/java/commonj/sdo/helper/DataFactory.java | 64 + .../main/java/commonj/sdo/helper/DataHelper.java | 215 + .../java/commonj/sdo/helper/EqualityHelper.java | 92 + .../java/commonj/sdo/helper/HelperContext.java | 67 + .../main/java/commonj/sdo/helper/TypeHelper.java | 96 + .../main/java/commonj/sdo/helper/XMLDocument.java | 155 + .../main/java/commonj/sdo/helper/XMLHelper.java | 201 + .../main/java/commonj/sdo/helper/XSDHelper.java | 196 + .../commonj/sdo/impl/ExternalizableDelegator.java | 90 + .../main/java/commonj/sdo/impl/HelperProvider.java | 411 ++ .../sdo/impl/NoHelperProviderException.java | 58 + .../sdo-api/src/main/resources/META-INF/DISCLAIMER | 7 + .../sdo-api/src/main/resources/META-INF/LICENSE | 284 + .../sdo-api/src/main/resources/META-INF/NOTICE | 10 + .../sdo-api/src/main/resources/META-INF/README.txt | 23 + .../sdo-api/src/main/resources/xml/datagraph.xsd | 88 + .../sdo-api/src/main/resources/xml/sdoJava.xml | 53 + .../sdo-api/src/main/resources/xml/sdoJava.xsd | 88 + .../sdo-api/src/main/resources/xml/sdoModel.xml | 92 + .../sdo-api/src/main/resources/xml/sdoModel.xsd | 221 + .../sdo-api/src/main/resources/xml/sdoXML.xml | 40 + .../sdo-api/src/main/resources/xml/sdoXML.xsd | 56 + .../commonj/sdo/impl/HelperProviderTestCase.java | 93 + .../src/test/java/test/DefaultHelperProvider.java | 71 + .../src/test/java/test/TCCL1HelperProvider.java | 71 + .../services/commonj.sdo.impl.HelperProvider | 3 + .../services/commonj.sdo.impl.HelperProvider | 1 + sdo-java/trunk/tools-test/pom.xml | 264 + .../src/main/resources/CustomerAccount.xsd | 41 + .../src/main/resources/InternalInElement.xsd | 31 + .../trunk/tools-test/src/main/resources/Open.xsd | 33 + .../src/main/resources/extensible/customer.xsd | 47 + .../src/main/resources/extensible/customers.xml | 39 + .../src/main/resources/extensible/infostreet.xml | 24 + .../src/main/resources/extensible/infostreet.xsd | 36 + .../src/main/resources/extensible/infozipcode.xml | 24 + .../src/main/resources/extensible/infozipcode.xsd | 36 + .../src/main/resources/extensible/nonamespace.xsd | 25 + .../tools-test/src/main/resources/listAccess.xsd | 53 + .../src/main/resources/mixedTypesStatic.xsd | 41 + .../trunk/tools-test/src/main/resources/simple.xsd | 41 + .../tools-test/src/main/resources/simpleNoIF.xsd | 41 + .../tools-test/src/main/resources/simpleNoTns.xsd | 37 + .../src/main/resources/simpleWithChangeSummary.xsd | 49 + .../tools-test/src/main/resources/subgroup.xsd | 48 + .../tools-test/src/main/resources/subgroup1.xml | 23 + .../resources/substitutionWithExtensionValues.xsd | 105 + .../resources/substitutionWithExtensionValues1.xml | 48 + .../resources/substitutionWithExtensionValues2.xsd | 62 + .../src/main/resources/xsdImportOnly.wsdl | 55 + .../src/main/resources/xsdImportOnly_1.xsd | 37 + .../tools-test/src/main/resources/xsdlistitem.xsd | 50 + .../java/org/apache/tuscany/sdo/test/AllTests.java | 57 + .../tuscany/sdo/test/ChangeSummaryGenTestCase.java | 131 + .../sdo/test/DataObjectGetListTestCase.java | 99 + .../tuscany/sdo/test/ExtensibleTestCase.java | 96 + .../tuscany/sdo/test/GenPatternsTestCase.java | 115 + .../tuscany/sdo/test/InheritanceTestCase.java | 102 + .../sdo/test/InternalInElementTestCase.java | 63 + .../tuscany/sdo/test/ListWithDefaultTestCase.java | 53 + .../tuscany/sdo/test/MixedTypesTestCase.java | 86 + .../tuscany/sdo/test/OpenContentTestCase.java | 75 + .../tuscany/sdo/test/SimpleStaticTestCase.java | 110 + .../SubstitutionWithExtensionValuesTestCase.java | 155 + .../src/test/resources/mixedTypesDynamic.xsd | 50 + .../tools-test/src/test/resources/stockquote.xml | 32 + sdo-java/trunk/tools/pom.xml | 163 + sdo-java/trunk/tools/readme.htm | 44 + .../apache/tuscany/sdo/generate/JavaGenerator.java | 739 ++ .../tuscany/sdo/generate/XSD2JavaGenerator.java | 500 ++ .../adapter/SDOGenClassGeneratorAdapter.java | 53 + .../adapter/SDOGenModelGeneratorAdapter.java | 38 + .../SDOGenModelGeneratorAdapterFactory.java | 63 + .../adapter/SDOGenPackageGeneratorAdapter.java | 59 + .../sdo/generate/templates/model/SDOClass.java | 4288 +++++++++++ .../generate/templates/model/SDOFactoryClass.java | 1132 +++ .../tuscany/sdo/generate/util/SDOGenUtil.java | 326 + .../eclipse/jdt/core/formatter/CodeFormatter.java | 27 + .../tools/src/main/resources/META-INF/DISCLAIMER | 7 + .../tools/src/main/resources/META-INF/LICENSE.txt | 207 + .../tools/src/main/resources/META-INF/MANIFEST.MF | 21 + .../trunk/tools/src/main/resources/META-INF/NOTICE | 7 + .../tools/src/main/resources/META-INF/README.txt | 23 + .../test/java/com/example/repchoice/RCType.java | 103 + .../com/example/repchoice/RepchoiceFactory.java | 61 + .../com/example/repchoice/impl/RCTypeImpl.java | 332 + .../repchoice/impl/RepchoiceFactoryImpl.java | 269 + .../java/com/example/sequences/MixedQuote.java | 491 ++ .../example/sequences/MixedRepeatingChoice.java | 102 + .../com/example/sequences/RepeatingChoice.java | 88 + .../com/example/sequences/SequencesFactory.java | 97 + .../test/java/com/example/sequences/TwoRCs.java | 184 + .../java/com/example/sequences/TwoRCsMixed.java | 198 + .../com/example/sequences/impl/MixedQuoteImpl.java | 766 ++ .../sequences/impl/MixedRepeatingChoiceImpl.java | 335 + .../sequences/impl/RepeatingChoiceImpl.java | 299 + .../sequences/impl/SequencesFactoryImpl.java | 770 ++ .../com/example/sequences/impl/TwoRCsImpl.java | 521 ++ .../example/sequences/impl/TwoRCsMixedImpl.java | 499 ++ .../java/org/apache/tuscany/sdo/test/AllTests.java | 48 + .../sdo/test/GeneratedPackagesTestCase.java | 70 + .../trunk/tools/src/test/resources/TUSCANY1050.xsd | 44 + sdo-java/trunk/tools/src/test/resources/enum.xsd | 50 + .../resources/mixedRepeatingChoiceTestResult.xml | 20 + .../src/test/resources/mixedStaticTestResult.xml | 27 + .../tools/src/test/resources/repeatingChoice.xsd | 33 + .../test/resources/repeatingChoiceTestResult.xml | 25 + .../trunk/tools/src/test/resources/sdoModel.xsd | 28 + .../trunk/tools/src/test/resources/sequences.xsd | 100 + .../twoRepeatingChoicesMixedTestResult.xml | 20 + .../resources/twoRepeatingChoicesTestResult.xml | 28 + sdo-java/trunk/tools/templates/Header.javajetinc | 6 + .../trunk/tools/templates/models/SDOClass.javajet | 1968 +++++ .../tools/templates/models/SDOFactoryClass.javajet | 645 ++ .../tools/templates/models/generator.skeleton | 25 + 482 files changed, 112096 insertions(+) create mode 100644 sdo-java/trunk/BUILDING create mode 100644 sdo-java/trunk/LICENSE create mode 100644 sdo-java/trunk/NOTICE create mode 100644 sdo-java/trunk/README create mode 100644 sdo-java/trunk/RELEASE_NOTES create mode 100644 sdo-java/trunk/distribution/pom.xml create mode 100644 sdo-java/trunk/distribution/src/main/assembly/bin.xml create mode 100644 sdo-java/trunk/distribution/src/main/assembly/src.xml create mode 100644 sdo-java/trunk/distribution/src/main/release/bin/INSTALL create mode 100644 sdo-java/trunk/distribution/src/main/release/bin/LICENSE create mode 100644 sdo-java/trunk/distribution/src/main/release/bin/NOTICE create mode 100644 sdo-java/trunk/distribution/src/main/release/bin/README create mode 100644 sdo-java/trunk/distribution/src/main/release/bin/samples/README create mode 100644 sdo-java/trunk/distribution/src/main/release/bin/samples/runsamples.bat create mode 100644 sdo-java/trunk/distribution/src/main/release/bin/samples/runsamples.sh create mode 100644 sdo-java/trunk/distribution/src/main/release/bin/samples/sampleProgramContents.html create mode 100644 sdo-java/trunk/impl/model/SDO.ecore create mode 100644 sdo-java/trunk/impl/model/SDO.genmodel create mode 100644 sdo-java/trunk/impl/model/SDO.mdl create mode 100644 sdo-java/trunk/impl/pom.xml create mode 100644 sdo-java/trunk/impl/src/main/java/org/apache/tuscany/sdo/AnyTypeDataObject.java create mode 100644 sdo-java/trunk/impl/src/main/java/org/apache/tuscany/sdo/SDOExtendedMetaData.java create mode 100644 sdo-java/trunk/impl/src/main/java/org/apache/tuscany/sdo/SDOFactory.java create mode 100644 sdo-java/trunk/impl/src/main/java/org/apache/tuscany/sdo/SDOPackage.java create mode 100644 sdo-java/trunk/impl/src/main/java/org/apache/tuscany/sdo/SDOTypeVisitor.java create mode 100644 sdo-java/trunk/impl/src/main/java/org/apache/tuscany/sdo/SimpleAnyTypeDataObject.java create mode 100644 sdo-java/trunk/impl/src/main/java/org/apache/tuscany/sdo/codegen/BytecodeInterfaceGenerator.java create mode 100644 sdo-java/trunk/impl/src/main/java/org/apache/tuscany/sdo/codegen/GenerationException.java create mode 100644 sdo-java/trunk/impl/src/main/java/org/apache/tuscany/sdo/codegen/JavaInterfaceGenerator.java create mode 100644 sdo-java/trunk/impl/src/main/java/org/apache/tuscany/sdo/codegen/NoJavaImplementationException.java create mode 100644 sdo-java/trunk/impl/src/main/java/org/apache/tuscany/sdo/helper/BaseSDOExtendedMetaDataImpl.java create mode 100644 sdo-java/trunk/impl/src/main/java/org/apache/tuscany/sdo/helper/BaseSDOXSDEcoreBuilder.java create mode 100644 sdo-java/trunk/impl/src/main/java/org/apache/tuscany/sdo/helper/CopyHelperImpl.java create mode 100644 sdo-java/trunk/impl/src/main/java/org/apache/tuscany/sdo/helper/CrossScopeCopyHelperImpl.java create mode 100644 sdo-java/trunk/impl/src/main/java/org/apache/tuscany/sdo/helper/DataFactoryImpl.java create mode 100644 sdo-java/trunk/impl/src/main/java/org/apache/tuscany/sdo/helper/DataHelperImpl.java create mode 100644 sdo-java/trunk/impl/src/main/java/org/apache/tuscany/sdo/helper/DefaultHelperContextImpl.java create mode 100644 sdo-java/trunk/impl/src/main/java/org/apache/tuscany/sdo/helper/EqualityHelperImpl.java create mode 100644 sdo-java/trunk/impl/src/main/java/org/apache/tuscany/sdo/helper/HelperContextImpl.java create mode 100644 sdo-java/trunk/impl/src/main/java/org/apache/tuscany/sdo/helper/HelperProviderImpl.java create mode 100644 sdo-java/trunk/impl/src/main/java/org/apache/tuscany/sdo/helper/SDOAnnotations.java create mode 100644 sdo-java/trunk/impl/src/main/java/org/apache/tuscany/sdo/helper/SDOExtendedMetaDataImpl.java create mode 100644 sdo-java/trunk/impl/src/main/java/org/apache/tuscany/sdo/helper/SDOHelperImpl.java create mode 100644 sdo-java/trunk/impl/src/main/java/org/apache/tuscany/sdo/helper/SDOSimpleDateFormat.java create mode 100644 sdo-java/trunk/impl/src/main/java/org/apache/tuscany/sdo/helper/SDOXSDEcoreBuilder.java create mode 100644 sdo-java/trunk/impl/src/main/java/org/apache/tuscany/sdo/helper/SchemaBuilder.java create mode 100644 sdo-java/trunk/impl/src/main/java/org/apache/tuscany/sdo/helper/TypeHelperImpl.java create mode 100644 sdo-java/trunk/impl/src/main/java/org/apache/tuscany/sdo/helper/TypeTable.java create mode 100644 sdo-java/trunk/impl/src/main/java/org/apache/tuscany/sdo/helper/XMLDocumentImpl.java create mode 100644 sdo-java/trunk/impl/src/main/java/org/apache/tuscany/sdo/helper/XMLHelperImpl.java create mode 100644 sdo-java/trunk/impl/src/main/java/org/apache/tuscany/sdo/helper/XMLStreamHelper.java create mode 100644 sdo-java/trunk/impl/src/main/java/org/apache/tuscany/sdo/helper/XMLStreamHelperImpl.java create mode 100644 sdo-java/trunk/impl/src/main/java/org/apache/tuscany/sdo/helper/XSDHelperImpl.java create mode 100644 sdo-java/trunk/impl/src/main/java/org/apache/tuscany/sdo/impl/AnyTypeDataObjectImpl.java create mode 100644 sdo-java/trunk/impl/src/main/java/org/apache/tuscany/sdo/impl/AttributeImpl.java create mode 100644 sdo-java/trunk/impl/src/main/java/org/apache/tuscany/sdo/impl/ChangeSummaryImpl.java create mode 100644 sdo-java/trunk/impl/src/main/java/org/apache/tuscany/sdo/impl/ChangeSummarySettingImpl.java create mode 100644 sdo-java/trunk/impl/src/main/java/org/apache/tuscany/sdo/impl/ClassImpl.java create mode 100644 sdo-java/trunk/impl/src/main/java/org/apache/tuscany/sdo/impl/DataGraphImpl.java create mode 100644 sdo-java/trunk/impl/src/main/java/org/apache/tuscany/sdo/impl/DataObjectBase.java create mode 100644 sdo-java/trunk/impl/src/main/java/org/apache/tuscany/sdo/impl/DataObjectImpl.java create mode 100644 sdo-java/trunk/impl/src/main/java/org/apache/tuscany/sdo/impl/DataTypeImpl.java create mode 100644 sdo-java/trunk/impl/src/main/java/org/apache/tuscany/sdo/impl/DynamicDataObjectImpl.java create mode 100644 sdo-java/trunk/impl/src/main/java/org/apache/tuscany/sdo/impl/DynamicStoreDataObjectImpl.java create mode 100644 sdo-java/trunk/impl/src/main/java/org/apache/tuscany/sdo/impl/EnumImpl.java create mode 100644 sdo-java/trunk/impl/src/main/java/org/apache/tuscany/sdo/impl/EventImpl.java create mode 100644 sdo-java/trunk/impl/src/main/java/org/apache/tuscany/sdo/impl/ExtensibleDataObjectImpl.java create mode 100644 sdo-java/trunk/impl/src/main/java/org/apache/tuscany/sdo/impl/FactoryBase.java create mode 100644 sdo-java/trunk/impl/src/main/java/org/apache/tuscany/sdo/impl/ListenerBase.java create mode 100644 sdo-java/trunk/impl/src/main/java/org/apache/tuscany/sdo/impl/ReferenceImpl.java create mode 100644 sdo-java/trunk/impl/src/main/java/org/apache/tuscany/sdo/impl/SDOFactoryImpl.java create mode 100644 sdo-java/trunk/impl/src/main/java/org/apache/tuscany/sdo/impl/SDOPackageImpl.java create mode 100644 sdo-java/trunk/impl/src/main/java/org/apache/tuscany/sdo/impl/SimpleAnyTypeDataObjectImpl.java create mode 100644 sdo-java/trunk/impl/src/main/java/org/apache/tuscany/sdo/impl/StoreDataObjectImpl.java create mode 100644 sdo-java/trunk/impl/src/main/java/org/apache/tuscany/sdo/model/BaseDataGraphType.java create mode 100644 sdo-java/trunk/impl/src/main/java/org/apache/tuscany/sdo/model/DataGraphType.java create mode 100644 sdo-java/trunk/impl/src/main/java/org/apache/tuscany/sdo/model/DataObject.java create mode 100644 sdo-java/trunk/impl/src/main/java/org/apache/tuscany/sdo/model/ModelFactory.java create mode 100644 sdo-java/trunk/impl/src/main/java/org/apache/tuscany/sdo/model/ModelsType.java create mode 100644 sdo-java/trunk/impl/src/main/java/org/apache/tuscany/sdo/model/Property.java create mode 100644 sdo-java/trunk/impl/src/main/java/org/apache/tuscany/sdo/model/TextType.java create mode 100644 sdo-java/trunk/impl/src/main/java/org/apache/tuscany/sdo/model/Type.java create mode 100644 sdo-java/trunk/impl/src/main/java/org/apache/tuscany/sdo/model/Types.java create mode 100644 sdo-java/trunk/impl/src/main/java/org/apache/tuscany/sdo/model/XSDType.java create mode 100644 sdo-java/trunk/impl/src/main/java/org/apache/tuscany/sdo/model/impl/BaseDataGraphTypeImpl.java create mode 100644 sdo-java/trunk/impl/src/main/java/org/apache/tuscany/sdo/model/impl/DataGraphTypeImpl.java create mode 100644 sdo-java/trunk/impl/src/main/java/org/apache/tuscany/sdo/model/impl/DataObjectImpl.java create mode 100644 sdo-java/trunk/impl/src/main/java/org/apache/tuscany/sdo/model/impl/ModelFactoryImpl.java create mode 100644 sdo-java/trunk/impl/src/main/java/org/apache/tuscany/sdo/model/impl/ModelsTypeImpl.java create mode 100644 sdo-java/trunk/impl/src/main/java/org/apache/tuscany/sdo/model/impl/PropertyImpl.java create mode 100644 sdo-java/trunk/impl/src/main/java/org/apache/tuscany/sdo/model/impl/TextTypeImpl.java create mode 100644 sdo-java/trunk/impl/src/main/java/org/apache/tuscany/sdo/model/impl/TypeImpl.java create mode 100644 sdo-java/trunk/impl/src/main/java/org/apache/tuscany/sdo/model/impl/TypesImpl.java create mode 100644 sdo-java/trunk/impl/src/main/java/org/apache/tuscany/sdo/model/impl/XSDTypeImpl.java create mode 100644 sdo-java/trunk/impl/src/main/java/org/apache/tuscany/sdo/model/internal/InternalFactory.java create mode 100644 sdo-java/trunk/impl/src/main/java/org/apache/tuscany/sdo/model/internal/impl/InternalFactoryImpl.java create mode 100644 sdo-java/trunk/impl/src/main/java/org/apache/tuscany/sdo/model/java/JavaFactory.java create mode 100644 sdo-java/trunk/impl/src/main/java/org/apache/tuscany/sdo/model/java/JavaInfo.java create mode 100644 sdo-java/trunk/impl/src/main/java/org/apache/tuscany/sdo/model/java/impl/JavaFactoryImpl.java create mode 100644 sdo-java/trunk/impl/src/main/java/org/apache/tuscany/sdo/model/java/impl/JavaInfoImpl.java create mode 100644 sdo-java/trunk/impl/src/main/java/org/apache/tuscany/sdo/model/xml/XMLFactory.java create mode 100644 sdo-java/trunk/impl/src/main/java/org/apache/tuscany/sdo/model/xml/XMLInfo.java create mode 100644 sdo-java/trunk/impl/src/main/java/org/apache/tuscany/sdo/model/xml/impl/XMLFactoryImpl.java create mode 100644 sdo-java/trunk/impl/src/main/java/org/apache/tuscany/sdo/model/xml/impl/XMLInfoImpl.java create mode 100644 sdo-java/trunk/impl/src/main/java/org/apache/tuscany/sdo/osgi/SdoBundleActivator.java create mode 100644 sdo-java/trunk/impl/src/main/java/org/apache/tuscany/sdo/util/BasicSequence.java create mode 100644 sdo-java/trunk/impl/src/main/java/org/apache/tuscany/sdo/util/DataGraphResourceFactoryImpl.java create mode 100644 sdo-java/trunk/impl/src/main/java/org/apache/tuscany/sdo/util/DataObjectUtil.java create mode 100644 sdo-java/trunk/impl/src/main/java/org/apache/tuscany/sdo/util/SDOUtil.java create mode 100644 sdo-java/trunk/impl/src/main/java/org/apache/tuscany/sdo/util/StAX2SAXAdapter.java create mode 100644 sdo-java/trunk/impl/src/main/java/org/apache/tuscany/sdo/util/StreamDeserializer.java create mode 100644 sdo-java/trunk/impl/src/main/java/org/apache/tuscany/sdo/util/VirtualSequence.java create mode 100644 sdo-java/trunk/impl/src/main/java/org/apache/tuscany/sdo/util/metadata/JavaMetaData.java create mode 100644 sdo-java/trunk/impl/src/main/java/org/apache/tuscany/sdo/util/metadata/MetadataFactory.java create mode 100644 sdo-java/trunk/impl/src/main/java/org/apache/tuscany/sdo/util/metadata/SDOMetaDataGroup.java create mode 100644 sdo-java/trunk/impl/src/main/java/org/apache/tuscany/sdo/util/metadata/TypeMetaData.java create mode 100644 sdo-java/trunk/impl/src/main/java/org/apache/tuscany/sdo/util/metadata/XSDMetaData.java create mode 100644 sdo-java/trunk/impl/src/main/java/org/apache/tuscany/sdo/util/metadata/impl/JavaMetaDataImpl.java create mode 100644 sdo-java/trunk/impl/src/main/java/org/apache/tuscany/sdo/util/metadata/impl/MetadataFactoryImpl.java create mode 100644 sdo-java/trunk/impl/src/main/java/org/apache/tuscany/sdo/util/metadata/impl/SDOMetaDataGroupImpl.java create mode 100644 sdo-java/trunk/impl/src/main/java/org/apache/tuscany/sdo/util/metadata/impl/TypeMetaDataImpl.java create mode 100644 sdo-java/trunk/impl/src/main/java/org/apache/tuscany/sdo/util/metadata/impl/XSDMetaDataImpl.java create mode 100644 sdo-java/trunk/impl/src/main/java/org/apache/tuscany/sdo/util/resource/ChangeSummaryStreamDeserializer.java create mode 100644 sdo-java/trunk/impl/src/main/java/org/apache/tuscany/sdo/util/resource/ChangeSummaryStreamSerializer.java create mode 100644 sdo-java/trunk/impl/src/main/java/org/apache/tuscany/sdo/util/resource/DataObjectXMLStreamReader.java create mode 100644 sdo-java/trunk/impl/src/main/java/org/apache/tuscany/sdo/util/resource/RecordedEventXMLStreamReader.java create mode 100644 sdo-java/trunk/impl/src/main/java/org/apache/tuscany/sdo/util/resource/SDODeserializer.java create mode 100644 sdo-java/trunk/impl/src/main/java/org/apache/tuscany/sdo/util/resource/SDOURIConverterImpl.java create mode 100644 sdo-java/trunk/impl/src/main/java/org/apache/tuscany/sdo/util/resource/SDOXMLResourceFactoryImpl.java create mode 100644 sdo-java/trunk/impl/src/main/java/org/apache/tuscany/sdo/util/resource/SDOXMLResourceImpl.java create mode 100644 sdo-java/trunk/impl/src/main/java/org/apache/tuscany/sdo/util/resource/XMLDocumentStreamReader.java create mode 100644 sdo-java/trunk/impl/src/main/java/org/apache/tuscany/sdo/util/resource/XMLFragmentStreamReader.java create mode 100644 sdo-java/trunk/impl/src/main/java/org/apache/tuscany/sdo/util/resource/XMLStreamSerializer.java create mode 100644 sdo-java/trunk/impl/src/main/resources/META-INF/DISCLAIMER create mode 100644 sdo-java/trunk/impl/src/main/resources/META-INF/LICENSE.txt create mode 100644 sdo-java/trunk/impl/src/main/resources/META-INF/MANIFEST.MF create mode 100644 sdo-java/trunk/impl/src/main/resources/META-INF/NOTICE create mode 100644 sdo-java/trunk/impl/src/main/resources/META-INF/README.txt create mode 100644 sdo-java/trunk/impl/src/main/resources/META-INF/services/commonj.sdo.impl.HelperProvider create mode 100644 sdo-java/trunk/impl/src/main/resources/sdo-metadata.xsd create mode 100644 sdo-java/trunk/impl/src/main/resources/xml/sdoInternal.xsd create mode 100644 sdo-java/trunk/impl/src/main/resources/xml/sdoModelChangeSummary.xsd create mode 100644 sdo-java/trunk/impl/src/test/java/com/example/ExpectedException/ExpectedExceptionFactory.java create mode 100644 sdo-java/trunk/impl/src/test/java/com/example/ExpectedException/ExpectedExceptionType.java create mode 100644 sdo-java/trunk/impl/src/test/java/com/example/ExpectedException/SequenceReadOnlyType.java create mode 100644 sdo-java/trunk/impl/src/test/java/com/example/ExpectedException/impl/ExpectedExceptionFactoryImpl.java create mode 100644 sdo-java/trunk/impl/src/test/java/com/example/ExpectedException/impl/ExpectedExceptionTypeImpl.java create mode 100644 sdo-java/trunk/impl/src/test/java/com/example/ExpectedException/impl/SequenceReadOnlyTypeImpl.java create mode 100644 sdo-java/trunk/impl/src/test/java/com/example/simple/Quote.java create mode 100644 sdo-java/trunk/impl/src/test/java/com/example/simple/SimpleFactory.java create mode 100644 sdo-java/trunk/impl/src/test/java/com/example/simple/impl/QuoteImpl.java create mode 100644 sdo-java/trunk/impl/src/test/java/com/example/simple/impl/SimpleFactoryImpl.java create mode 100644 sdo-java/trunk/impl/src/test/java/com/example/test/Containment/ContainmentFactory.java create mode 100644 sdo-java/trunk/impl/src/test/java/com/example/test/Containment/ContainmentTest.java create mode 100644 sdo-java/trunk/impl/src/test/java/com/example/test/Containment/impl/ContainmentFactoryImpl.java create mode 100644 sdo-java/trunk/impl/src/test/java/com/example/test/Containment/impl/ContainmentTestImpl.java create mode 100644 sdo-java/trunk/impl/src/test/java/org/apache/tuscany/sdo/AllTests.java create mode 100644 sdo-java/trunk/impl/src/test/java/org/apache/tuscany/sdo/codegen/AllTests.java create mode 100644 sdo-java/trunk/impl/src/test/java/org/apache/tuscany/sdo/codegen/Bar1.java create mode 100644 sdo-java/trunk/impl/src/test/java/org/apache/tuscany/sdo/codegen/Bar2.java create mode 100644 sdo-java/trunk/impl/src/test/java/org/apache/tuscany/sdo/codegen/BytecodeInterfaceGeneratorTestCase.java create mode 100644 sdo-java/trunk/impl/src/test/java/org/apache/tuscany/sdo/codegen/Foo.java create mode 100644 sdo-java/trunk/impl/src/test/java/org/apache/tuscany/sdo/codegen/JavaInterfaceGeneratorTestCase.java create mode 100644 sdo-java/trunk/impl/src/test/java/org/apache/tuscany/sdo/codegen/MockProperty.java create mode 100644 sdo-java/trunk/impl/src/test/java/org/apache/tuscany/sdo/codegen/MockType.java create mode 100644 sdo-java/trunk/impl/src/test/java/org/apache/tuscany/sdo/test/AllTests.java create mode 100644 sdo-java/trunk/impl/src/test/java/org/apache/tuscany/sdo/test/AnyTypeTest.java create mode 100644 sdo-java/trunk/impl/src/test/java/org/apache/tuscany/sdo/test/BoundsTestCase.java create mode 100644 sdo-java/trunk/impl/src/test/java/org/apache/tuscany/sdo/test/ChangeSummaryOnDataObjectTestCase.java create mode 100644 sdo-java/trunk/impl/src/test/java/org/apache/tuscany/sdo/test/ChangeSummaryPropertyTestCase.java create mode 100644 sdo-java/trunk/impl/src/test/java/org/apache/tuscany/sdo/test/ChangeSummaryTestCase.java create mode 100644 sdo-java/trunk/impl/src/test/java/org/apache/tuscany/sdo/test/ContainmentCycleTestCase.java create mode 100644 sdo-java/trunk/impl/src/test/java/org/apache/tuscany/sdo/test/ContainmentTypeUtil.java create mode 100644 sdo-java/trunk/impl/src/test/java/org/apache/tuscany/sdo/test/CrossScopeCopyTestCase.java create mode 100644 sdo-java/trunk/impl/src/test/java/org/apache/tuscany/sdo/test/DataGraphTestCase.java create mode 100644 sdo-java/trunk/impl/src/test/java/org/apache/tuscany/sdo/test/DataObjectGetListTestCase.java create mode 100644 sdo-java/trunk/impl/src/test/java/org/apache/tuscany/sdo/test/DataTypeBaseTypeTestCase.java create mode 100644 sdo-java/trunk/impl/src/test/java/org/apache/tuscany/sdo/test/DateConversionTestCase.java create mode 100644 sdo-java/trunk/impl/src/test/java/org/apache/tuscany/sdo/test/DefineOpenContentPropertyTestCase.java create mode 100644 sdo-java/trunk/impl/src/test/java/org/apache/tuscany/sdo/test/DefineTypeTestCase.java create mode 100644 sdo-java/trunk/impl/src/test/java/org/apache/tuscany/sdo/test/DeserializationNoSchemaTestCase.java create mode 100644 sdo-java/trunk/impl/src/test/java/org/apache/tuscany/sdo/test/DotNameTest.java create mode 100644 sdo-java/trunk/impl/src/test/java/org/apache/tuscany/sdo/test/DupElementTestCase.java create mode 100644 sdo-java/trunk/impl/src/test/java/org/apache/tuscany/sdo/test/DynamicTypesComparisonTestCase.java create mode 100644 sdo-java/trunk/impl/src/test/java/org/apache/tuscany/sdo/test/ExpectedExceptionsTestCase.java create mode 100644 sdo-java/trunk/impl/src/test/java/org/apache/tuscany/sdo/test/FormTestCase.java create mode 100644 sdo-java/trunk/impl/src/test/java/org/apache/tuscany/sdo/test/HelperContextTestCase.java create mode 100644 sdo-java/trunk/impl/src/test/java/org/apache/tuscany/sdo/test/ImplSpecificTestCase.java create mode 100644 sdo-java/trunk/impl/src/test/java/org/apache/tuscany/sdo/test/IsManyTestCase.java create mode 100644 sdo-java/trunk/impl/src/test/java/org/apache/tuscany/sdo/test/JavaSerializeDeserializeTestCase.java create mode 100644 sdo-java/trunk/impl/src/test/java/org/apache/tuscany/sdo/test/JiraTestCases.java create mode 100644 sdo-java/trunk/impl/src/test/java/org/apache/tuscany/sdo/test/MetadataInstancePropertiesTestCase.java create mode 100644 sdo-java/trunk/impl/src/test/java/org/apache/tuscany/sdo/test/MixedTypeTestCase.java create mode 100644 sdo-java/trunk/impl/src/test/java/org/apache/tuscany/sdo/test/NeverStaleChangeSummaryTestCase.java create mode 100644 sdo-java/trunk/impl/src/test/java/org/apache/tuscany/sdo/test/NotificationTestCase.java create mode 100644 sdo-java/trunk/impl/src/test/java/org/apache/tuscany/sdo/test/OpenTypeTestCase.java create mode 100644 sdo-java/trunk/impl/src/test/java/org/apache/tuscany/sdo/test/SchemaLocationTestCase.java create mode 100644 sdo-java/trunk/impl/src/test/java/org/apache/tuscany/sdo/test/SequenceTestCase.java create mode 100644 sdo-java/trunk/impl/src/test/java/org/apache/tuscany/sdo/test/SerializeTypesTestCase.java create mode 100644 sdo-java/trunk/impl/src/test/java/org/apache/tuscany/sdo/test/SimpleCopyTestCase.java create mode 100644 sdo-java/trunk/impl/src/test/java/org/apache/tuscany/sdo/test/SimpleDynamicTestCase.java create mode 100644 sdo-java/trunk/impl/src/test/java/org/apache/tuscany/sdo/test/SimpleEqualityTestCase.java create mode 100644 sdo-java/trunk/impl/src/test/java/org/apache/tuscany/sdo/test/SubstitutionValuesTestCase.java create mode 100644 sdo-java/trunk/impl/src/test/java/org/apache/tuscany/sdo/test/TestUtil.java create mode 100644 sdo-java/trunk/impl/src/test/java/org/apache/tuscany/sdo/test/TypeConversionTestCase.java create mode 100644 sdo-java/trunk/impl/src/test/java/org/apache/tuscany/sdo/test/TypeHelperTestCase.java create mode 100644 sdo-java/trunk/impl/src/test/java/org/apache/tuscany/sdo/test/TypeRoundTripTestCase.java create mode 100644 sdo-java/trunk/impl/src/test/java/org/apache/tuscany/sdo/test/XMLDocumentTestCase.java create mode 100644 sdo-java/trunk/impl/src/test/java/org/apache/tuscany/sdo/test/XMLHelperTestCase.java create mode 100644 sdo-java/trunk/impl/src/test/java/org/apache/tuscany/sdo/test/XMLLoadOptionsTestCase.java create mode 100644 sdo-java/trunk/impl/src/test/java/org/apache/tuscany/sdo/test/XMLLoadUnknownFeatureTestCase.java create mode 100644 sdo-java/trunk/impl/src/test/java/org/apache/tuscany/sdo/test/XMLSaveOptionsTestCase.java create mode 100644 sdo-java/trunk/impl/src/test/java/org/apache/tuscany/sdo/test/XMLStreamHelperPerformanceTestCase.java create mode 100644 sdo-java/trunk/impl/src/test/java/org/apache/tuscany/sdo/test/XMLStreamHelperTestCase.java create mode 100644 sdo-java/trunk/impl/src/test/java/org/apache/tuscany/sdo/test/XMLUnknownPropertiesTestCase.java create mode 100644 sdo-java/trunk/impl/src/test/java/org/apache/tuscany/sdo/test/XPathTestCase.java create mode 100644 sdo-java/trunk/impl/src/test/java/org/apache/tuscany/sdo/test/XSDHelperTestCase.java create mode 100644 sdo-java/trunk/impl/src/test/java/org/apache/tuscany/sdo/test/XSDQNameTestCase.java create mode 100644 sdo-java/trunk/impl/src/test/java/org/apache/tuscany/sdo/test/osgi/ClassLoaderTestCase.java create mode 100644 sdo-java/trunk/impl/src/test/java/org/apache/tuscany/sdo/test/osgi/OSGiTestCase.java create mode 100644 sdo-java/trunk/impl/src/test/java/org/apache/tuscany/sdo/test/osgi/TestBundleActivator.java create mode 100644 sdo-java/trunk/impl/src/test/resources/SchemaLocationTestCase.xml create mode 100644 sdo-java/trunk/impl/src/test/resources/SequenceChangeSummary.xsd create mode 100644 sdo-java/trunk/impl/src/test/resources/SubstitutionValues.xsd create mode 100644 sdo-java/trunk/impl/src/test/resources/TypePropertyMetadataInfo.xsd create mode 100644 sdo-java/trunk/impl/src/test/resources/XMLDocumentNoNamespaceSchemaLocation.xsd create mode 100644 sdo-java/trunk/impl/src/test/resources/XMLDocumentSchemaLocation.xsd create mode 100644 sdo-java/trunk/impl/src/test/resources/XMLDocumentTestCase.xml create mode 100644 sdo-java/trunk/impl/src/test/resources/XMLStreamHelper.xsd create mode 100644 sdo-java/trunk/impl/src/test/resources/anytype.xsd create mode 100644 sdo-java/trunk/impl/src/test/resources/api_test.xsd create mode 100644 sdo-java/trunk/impl/src/test/resources/bank.xsd create mode 100644 sdo-java/trunk/impl/src/test/resources/bounds.xsd create mode 100644 sdo-java/trunk/impl/src/test/resources/comment.xsd create mode 100644 sdo-java/trunk/impl/src/test/resources/company.xsd create mode 100644 sdo-java/trunk/impl/src/test/resources/containmenttest.xsd create mode 100644 sdo-java/trunk/impl/src/test/resources/customer1.xml create mode 100644 sdo-java/trunk/impl/src/test/resources/customer2.xml create mode 100644 sdo-java/trunk/impl/src/test/resources/datatype.xsd create mode 100644 sdo-java/trunk/impl/src/test/resources/dotNames.xsd create mode 100644 sdo-java/trunk/impl/src/test/resources/dupelement.xsd create mode 100644 sdo-java/trunk/impl/src/test/resources/expectedExceptions.xsd create mode 100644 sdo-java/trunk/impl/src/test/resources/foo-ext.xml create mode 100644 sdo-java/trunk/impl/src/test/resources/foo-ext.xsd create mode 100644 sdo-java/trunk/impl/src/test/resources/foo.xsd create mode 100644 sdo-java/trunk/impl/src/test/resources/ipo.xsd create mode 100644 sdo-java/trunk/impl/src/test/resources/mixed.xml create mode 100644 sdo-java/trunk/impl/src/test/resources/mixed.xsd create mode 100644 sdo-java/trunk/impl/src/test/resources/mixed2.xml create mode 100644 sdo-java/trunk/impl/src/test/resources/mixedChangeSummary.xml create mode 100644 sdo-java/trunk/impl/src/test/resources/mixedChangeSummaryUndone.xml create mode 100644 sdo-java/trunk/impl/src/test/resources/mixedopen.xml create mode 100644 sdo-java/trunk/impl/src/test/resources/names.xsd create mode 100644 sdo-java/trunk/impl/src/test/resources/open.xml create mode 100644 sdo-java/trunk/impl/src/test/resources/open.xsd create mode 100644 sdo-java/trunk/impl/src/test/resources/open1any.xsd create mode 100644 sdo-java/trunk/impl/src/test/resources/open2.xml create mode 100644 sdo-java/trunk/impl/src/test/resources/openChangeSummary.xml create mode 100644 sdo-java/trunk/impl/src/test/resources/openChangeSummaryUndone.xml create mode 100644 sdo-java/trunk/impl/src/test/resources/openContentProperty.xml create mode 100644 sdo-java/trunk/impl/src/test/resources/osgi/sdo.impl.mf create mode 100644 sdo-java/trunk/impl/src/test/resources/osgi/sdo.osgi.test.mf create mode 100644 sdo-java/trunk/impl/src/test/resources/po.xsd create mode 100644 sdo-java/trunk/impl/src/test/resources/prefix.xsd create mode 100644 sdo-java/trunk/impl/src/test/resources/quote.xml create mode 100644 sdo-java/trunk/impl/src/test/resources/quoteInSOAP.xml create mode 100644 sdo-java/trunk/impl/src/test/resources/sdoModel.xsd create mode 100644 sdo-java/trunk/impl/src/test/resources/sdoannotations.xsd create mode 100644 sdo-java/trunk/impl/src/test/resources/sdotypes.xsd create mode 100644 sdo-java/trunk/impl/src/test/resources/shallowquote.xml create mode 100644 sdo-java/trunk/impl/src/test/resources/shallowquote1.xml create mode 100644 sdo-java/trunk/impl/src/test/resources/simple.xsd create mode 100644 sdo-java/trunk/impl/src/test/resources/simple2.xsd create mode 100644 sdo-java/trunk/impl/src/test/resources/simple3.xsd create mode 100644 sdo-java/trunk/impl/src/test/resources/simpleWithChangeSummary.xml create mode 100644 sdo-java/trunk/impl/src/test/resources/simpleWithChangeSummary.xsd create mode 100644 sdo-java/trunk/impl/src/test/resources/simpleWithChangeSummaryUndone.xml create mode 100644 sdo-java/trunk/impl/src/test/resources/simplechangesummary.xml create mode 100644 sdo-java/trunk/impl/src/test/resources/substitutionValues1.xml create mode 100644 sdo-java/trunk/impl/src/test/resources/substitutionValues2.xml create mode 100644 sdo-java/trunk/impl/src/test/resources/xpath.xml create mode 100644 sdo-java/trunk/impl/src/test/resources/xpath.xsd create mode 100644 sdo-java/trunk/impl/src/test/resources/xsdCorners.xsd create mode 100644 sdo-java/trunk/java5tools/pom.xml create mode 100644 sdo-java/trunk/java5tools/src/main/java/org/apache/tuscany/sdo/generate/Interface2JavaGenerator.java create mode 100644 sdo-java/trunk/java5tools/src/main/resources/META-INF/DISCLAIMER create mode 100644 sdo-java/trunk/java5tools/src/main/resources/META-INF/LICENSE.txt create mode 100644 sdo-java/trunk/java5tools/src/main/resources/META-INF/NOTICE create mode 100644 sdo-java/trunk/java5tools/src/main/resources/META-INF/README.txt create mode 100644 sdo-java/trunk/lib/pom.xml create mode 100644 sdo-java/trunk/lib/src/main/java/org/apache/tuscany/sdo/api/Event.java create mode 100644 sdo-java/trunk/lib/src/main/java/org/apache/tuscany/sdo/api/EventListener.java create mode 100644 sdo-java/trunk/lib/src/main/java/org/apache/tuscany/sdo/api/SDOHelper.java create mode 100644 sdo-java/trunk/lib/src/main/java/org/apache/tuscany/sdo/api/SDOUtil.java create mode 100644 sdo-java/trunk/lib/src/main/java/org/apache/tuscany/sdo/api/XMLStreamHelper.java create mode 100644 sdo-java/trunk/lib/src/main/java/org/apache/tuscany/sdo/api/overview.html create mode 100644 sdo-java/trunk/lib/src/main/java/org/apache/tuscany/sdo/lib/SDOObjectInputStream.java create mode 100644 sdo-java/trunk/lib/src/main/java/org/apache/tuscany/sdo/lib/SDOObjectOutputStream.java create mode 100644 sdo-java/trunk/lib/src/main/java/org/apache/tuscany/sdo/lib/UnknownPropertyList.java create mode 100644 sdo-java/trunk/lib/src/main/java/org/apache/tuscany/sdo/spi/HelperProviderBase.java create mode 100644 sdo-java/trunk/lib/src/main/java/org/apache/tuscany/sdo/spi/SDOHelperBase.java create mode 100644 sdo-java/trunk/lib/src/main/resources/META-INF/DISCLAIMER create mode 100644 sdo-java/trunk/lib/src/main/resources/META-INF/LICENSE.txt create mode 100644 sdo-java/trunk/lib/src/main/resources/META-INF/MANIFEST.MF create mode 100644 sdo-java/trunk/lib/src/main/resources/META-INF/NOTICE create mode 100644 sdo-java/trunk/lib/src/main/resources/META-INF/README.txt create mode 100644 sdo-java/trunk/plugin/pom.xml create mode 100644 sdo-java/trunk/plugin/src/main/java/org/apache/tuscany/sdo/plugin/GeneratorMojo.java create mode 100644 sdo-java/trunk/plugin/src/main/java/org/apache/tuscany/sdo/plugin/SchemaFileOption.java create mode 100644 sdo-java/trunk/plugin/src/main/resources/META-INF/DISCLAIMER create mode 100644 sdo-java/trunk/plugin/src/main/resources/META-INF/LICENSE.txt create mode 100644 sdo-java/trunk/plugin/src/main/resources/META-INF/NOTICE create mode 100644 sdo-java/trunk/plugin/src/main/resources/META-INF/README.txt create mode 100644 sdo-java/trunk/pom.xml create mode 100644 sdo-java/trunk/sample/pom.xml create mode 100644 sdo-java/trunk/sample/src/main/java/org/apache/tuscany/samples/sdo/ExecuteSamples.java create mode 100644 sdo-java/trunk/sample/src/main/java/org/apache/tuscany/samples/sdo/SampleBase.java create mode 100644 sdo-java/trunk/sample/src/main/java/org/apache/tuscany/samples/sdo/advanced/MedicalScenario.java create mode 100644 sdo-java/trunk/sample/src/main/java/org/apache/tuscany/samples/sdo/advanced/MedicalScenarioWithChangeMonitoring.java create mode 100644 sdo-java/trunk/sample/src/main/java/org/apache/tuscany/samples/sdo/advanced/ObtainingDataGraphFromXml.java create mode 100644 sdo-java/trunk/sample/src/main/java/org/apache/tuscany/samples/sdo/advanced/PrintDataGraph.java create mode 100644 sdo-java/trunk/sample/src/main/java/org/apache/tuscany/samples/sdo/advanced/package.html create mode 100644 sdo-java/trunk/sample/src/main/java/org/apache/tuscany/samples/sdo/basic/AccessDataObjectPropertiesByName.java create mode 100644 sdo-java/trunk/sample/src/main/java/org/apache/tuscany/samples/sdo/basic/AccessingTheContentsOfASequence.java create mode 100644 sdo-java/trunk/sample/src/main/java/org/apache/tuscany/samples/sdo/basic/CreateCompany.java create mode 100644 sdo-java/trunk/sample/src/main/java/org/apache/tuscany/samples/sdo/basic/CreatePurchaseOrder.java create mode 100644 sdo-java/trunk/sample/src/main/java/org/apache/tuscany/samples/sdo/basic/ReadPurchaseOrder.java create mode 100644 sdo-java/trunk/sample/src/main/java/org/apache/tuscany/samples/sdo/basic/package.html create mode 100644 sdo-java/trunk/sample/src/main/java/org/apache/tuscany/samples/sdo/intermediate/AccessDataObjectUsingValidXPath.java create mode 100644 sdo-java/trunk/sample/src/main/java/org/apache/tuscany/samples/sdo/intermediate/AccessingDataObjectsViaPropertyIndex.java create mode 100644 sdo-java/trunk/sample/src/main/java/org/apache/tuscany/samples/sdo/intermediate/CreateCompanyTuscanyAPI.java create mode 100644 sdo-java/trunk/sample/src/main/java/org/apache/tuscany/samples/sdo/intermediate/CreateDataObjectFromXmlString.java create mode 100644 sdo-java/trunk/sample/src/main/java/org/apache/tuscany/samples/sdo/intermediate/DynamicCustomerTypeSample.java create mode 100644 sdo-java/trunk/sample/src/main/java/org/apache/tuscany/samples/sdo/intermediate/OppositeProperty.java create mode 100644 sdo-java/trunk/sample/src/main/java/org/apache/tuscany/samples/sdo/intermediate/SerializingDeserializingADataObject.java create mode 100644 sdo-java/trunk/sample/src/main/java/org/apache/tuscany/samples/sdo/intermediate/package.html create mode 100644 sdo-java/trunk/sample/src/main/java/org/apache/tuscany/samples/sdo/internal/DocumentSamples.java create mode 100644 sdo-java/trunk/sample/src/main/java/org/apache/tuscany/samples/sdo/internal/SampleInfrastructure.java create mode 100644 sdo-java/trunk/sample/src/main/java/org/apache/tuscany/samples/sdo/overview.html create mode 100644 sdo-java/trunk/sample/src/main/java/org/apache/tuscany/samples/sdo/package.html create mode 100644 sdo-java/trunk/sample/src/main/java/org/apache/tuscany/samples/sdo/sampleProgramContents.html create mode 100644 sdo-java/trunk/sample/src/main/resources/META-INF/LICENSE.txt create mode 100644 sdo-java/trunk/sample/src/main/resources/META-INF/NOTICE create mode 100644 sdo-java/trunk/sample/src/main/resources/META-INF/README.txt create mode 100644 sdo-java/trunk/sample/src/main/resources/MedicalTest.xsd create mode 100644 sdo-java/trunk/sample/src/main/resources/MedicalTest_CS.xsd create mode 100644 sdo-java/trunk/sample/src/main/resources/People.xsd create mode 100644 sdo-java/trunk/sample/src/main/resources/company.xsd create mode 100644 sdo-java/trunk/sample/src/main/resources/companyCompleteDataGraph.xml create mode 100644 sdo-java/trunk/sample/src/main/resources/companyDataGraph.xml create mode 100644 sdo-java/trunk/sample/src/main/resources/companyDataGraphGenerated.xml create mode 100644 sdo-java/trunk/sample/src/main/resources/companyGenerated.xml create mode 100644 sdo-java/trunk/sample/src/main/resources/doc-files/cmdPrompt.GIF create mode 100644 sdo-java/trunk/sample/src/main/resources/letter.xml create mode 100644 sdo-java/trunk/sample/src/main/resources/letter.xsd create mode 100644 sdo-java/trunk/sample/src/main/resources/po.xml create mode 100644 sdo-java/trunk/sample/src/main/resources/po.xsd create mode 100644 sdo-java/trunk/sample/src/main/resources/sports.xml create mode 100644 sdo-java/trunk/sample/src/main/resources/sports.xsd create mode 100644 sdo-java/trunk/sdo-api/pom.xml create mode 100644 sdo-java/trunk/sdo-api/src/main/java/commonj/sdo/ChangeSummary.java create mode 100644 sdo-java/trunk/sdo-api/src/main/java/commonj/sdo/DataGraph.java create mode 100644 sdo-java/trunk/sdo-api/src/main/java/commonj/sdo/DataObject.java create mode 100644 sdo-java/trunk/sdo-api/src/main/java/commonj/sdo/Property.java create mode 100644 sdo-java/trunk/sdo-api/src/main/java/commonj/sdo/Sequence.java create mode 100644 sdo-java/trunk/sdo-api/src/main/java/commonj/sdo/Type.java create mode 100644 sdo-java/trunk/sdo-api/src/main/java/commonj/sdo/helper/CopyHelper.java create mode 100644 sdo-java/trunk/sdo-api/src/main/java/commonj/sdo/helper/DataFactory.java create mode 100644 sdo-java/trunk/sdo-api/src/main/java/commonj/sdo/helper/DataHelper.java create mode 100644 sdo-java/trunk/sdo-api/src/main/java/commonj/sdo/helper/EqualityHelper.java create mode 100644 sdo-java/trunk/sdo-api/src/main/java/commonj/sdo/helper/HelperContext.java create mode 100644 sdo-java/trunk/sdo-api/src/main/java/commonj/sdo/helper/TypeHelper.java create mode 100644 sdo-java/trunk/sdo-api/src/main/java/commonj/sdo/helper/XMLDocument.java create mode 100644 sdo-java/trunk/sdo-api/src/main/java/commonj/sdo/helper/XMLHelper.java create mode 100644 sdo-java/trunk/sdo-api/src/main/java/commonj/sdo/helper/XSDHelper.java create mode 100644 sdo-java/trunk/sdo-api/src/main/java/commonj/sdo/impl/ExternalizableDelegator.java create mode 100644 sdo-java/trunk/sdo-api/src/main/java/commonj/sdo/impl/HelperProvider.java create mode 100644 sdo-java/trunk/sdo-api/src/main/java/commonj/sdo/impl/NoHelperProviderException.java create mode 100644 sdo-java/trunk/sdo-api/src/main/resources/META-INF/DISCLAIMER create mode 100644 sdo-java/trunk/sdo-api/src/main/resources/META-INF/LICENSE create mode 100644 sdo-java/trunk/sdo-api/src/main/resources/META-INF/NOTICE create mode 100644 sdo-java/trunk/sdo-api/src/main/resources/META-INF/README.txt create mode 100644 sdo-java/trunk/sdo-api/src/main/resources/xml/datagraph.xsd create mode 100644 sdo-java/trunk/sdo-api/src/main/resources/xml/sdoJava.xml create mode 100644 sdo-java/trunk/sdo-api/src/main/resources/xml/sdoJava.xsd create mode 100644 sdo-java/trunk/sdo-api/src/main/resources/xml/sdoModel.xml create mode 100644 sdo-java/trunk/sdo-api/src/main/resources/xml/sdoModel.xsd create mode 100644 sdo-java/trunk/sdo-api/src/main/resources/xml/sdoXML.xml create mode 100644 sdo-java/trunk/sdo-api/src/main/resources/xml/sdoXML.xsd create mode 100644 sdo-java/trunk/sdo-api/src/test/java/commonj/sdo/impl/HelperProviderTestCase.java create mode 100644 sdo-java/trunk/sdo-api/src/test/java/test/DefaultHelperProvider.java create mode 100644 sdo-java/trunk/sdo-api/src/test/java/test/TCCL1HelperProvider.java create mode 100644 sdo-java/trunk/sdo-api/src/test/resources/default/META-INF/services/commonj.sdo.impl.HelperProvider create mode 100644 sdo-java/trunk/sdo-api/src/test/resources/tccl1/META-INF/services/commonj.sdo.impl.HelperProvider create mode 100644 sdo-java/trunk/tools-test/pom.xml create mode 100644 sdo-java/trunk/tools-test/src/main/resources/CustomerAccount.xsd create mode 100644 sdo-java/trunk/tools-test/src/main/resources/InternalInElement.xsd create mode 100644 sdo-java/trunk/tools-test/src/main/resources/Open.xsd create mode 100644 sdo-java/trunk/tools-test/src/main/resources/extensible/customer.xsd create mode 100644 sdo-java/trunk/tools-test/src/main/resources/extensible/customers.xml create mode 100644 sdo-java/trunk/tools-test/src/main/resources/extensible/infostreet.xml create mode 100644 sdo-java/trunk/tools-test/src/main/resources/extensible/infostreet.xsd create mode 100644 sdo-java/trunk/tools-test/src/main/resources/extensible/infozipcode.xml create mode 100644 sdo-java/trunk/tools-test/src/main/resources/extensible/infozipcode.xsd create mode 100644 sdo-java/trunk/tools-test/src/main/resources/extensible/nonamespace.xsd create mode 100644 sdo-java/trunk/tools-test/src/main/resources/listAccess.xsd create mode 100644 sdo-java/trunk/tools-test/src/main/resources/mixedTypesStatic.xsd create mode 100644 sdo-java/trunk/tools-test/src/main/resources/simple.xsd create mode 100644 sdo-java/trunk/tools-test/src/main/resources/simpleNoIF.xsd create mode 100644 sdo-java/trunk/tools-test/src/main/resources/simpleNoTns.xsd create mode 100644 sdo-java/trunk/tools-test/src/main/resources/simpleWithChangeSummary.xsd create mode 100644 sdo-java/trunk/tools-test/src/main/resources/subgroup.xsd create mode 100644 sdo-java/trunk/tools-test/src/main/resources/subgroup1.xml create mode 100644 sdo-java/trunk/tools-test/src/main/resources/substitutionWithExtensionValues.xsd create mode 100644 sdo-java/trunk/tools-test/src/main/resources/substitutionWithExtensionValues1.xml create mode 100644 sdo-java/trunk/tools-test/src/main/resources/substitutionWithExtensionValues2.xsd create mode 100644 sdo-java/trunk/tools-test/src/main/resources/xsdImportOnly.wsdl create mode 100644 sdo-java/trunk/tools-test/src/main/resources/xsdImportOnly_1.xsd create mode 100644 sdo-java/trunk/tools-test/src/main/resources/xsdlistitem.xsd create mode 100644 sdo-java/trunk/tools-test/src/test/java/org/apache/tuscany/sdo/test/AllTests.java create mode 100644 sdo-java/trunk/tools-test/src/test/java/org/apache/tuscany/sdo/test/ChangeSummaryGenTestCase.java create mode 100644 sdo-java/trunk/tools-test/src/test/java/org/apache/tuscany/sdo/test/DataObjectGetListTestCase.java create mode 100644 sdo-java/trunk/tools-test/src/test/java/org/apache/tuscany/sdo/test/ExtensibleTestCase.java create mode 100644 sdo-java/trunk/tools-test/src/test/java/org/apache/tuscany/sdo/test/GenPatternsTestCase.java create mode 100644 sdo-java/trunk/tools-test/src/test/java/org/apache/tuscany/sdo/test/InheritanceTestCase.java create mode 100644 sdo-java/trunk/tools-test/src/test/java/org/apache/tuscany/sdo/test/InternalInElementTestCase.java create mode 100644 sdo-java/trunk/tools-test/src/test/java/org/apache/tuscany/sdo/test/ListWithDefaultTestCase.java create mode 100644 sdo-java/trunk/tools-test/src/test/java/org/apache/tuscany/sdo/test/MixedTypesTestCase.java create mode 100644 sdo-java/trunk/tools-test/src/test/java/org/apache/tuscany/sdo/test/OpenContentTestCase.java create mode 100644 sdo-java/trunk/tools-test/src/test/java/org/apache/tuscany/sdo/test/SimpleStaticTestCase.java create mode 100644 sdo-java/trunk/tools-test/src/test/java/org/apache/tuscany/sdo/test/SubstitutionWithExtensionValuesTestCase.java create mode 100644 sdo-java/trunk/tools-test/src/test/resources/mixedTypesDynamic.xsd create mode 100644 sdo-java/trunk/tools-test/src/test/resources/stockquote.xml create mode 100644 sdo-java/trunk/tools/pom.xml create mode 100644 sdo-java/trunk/tools/readme.htm create mode 100644 sdo-java/trunk/tools/src/main/java/org/apache/tuscany/sdo/generate/JavaGenerator.java create mode 100644 sdo-java/trunk/tools/src/main/java/org/apache/tuscany/sdo/generate/XSD2JavaGenerator.java create mode 100644 sdo-java/trunk/tools/src/main/java/org/apache/tuscany/sdo/generate/adapter/SDOGenClassGeneratorAdapter.java create mode 100644 sdo-java/trunk/tools/src/main/java/org/apache/tuscany/sdo/generate/adapter/SDOGenModelGeneratorAdapter.java create mode 100644 sdo-java/trunk/tools/src/main/java/org/apache/tuscany/sdo/generate/adapter/SDOGenModelGeneratorAdapterFactory.java create mode 100644 sdo-java/trunk/tools/src/main/java/org/apache/tuscany/sdo/generate/adapter/SDOGenPackageGeneratorAdapter.java create mode 100644 sdo-java/trunk/tools/src/main/java/org/apache/tuscany/sdo/generate/templates/model/SDOClass.java create mode 100644 sdo-java/trunk/tools/src/main/java/org/apache/tuscany/sdo/generate/templates/model/SDOFactoryClass.java create mode 100644 sdo-java/trunk/tools/src/main/java/org/apache/tuscany/sdo/generate/util/SDOGenUtil.java create mode 100644 sdo-java/trunk/tools/src/main/java/org/eclipse/jdt/core/formatter/CodeFormatter.java create mode 100644 sdo-java/trunk/tools/src/main/resources/META-INF/DISCLAIMER create mode 100644 sdo-java/trunk/tools/src/main/resources/META-INF/LICENSE.txt create mode 100644 sdo-java/trunk/tools/src/main/resources/META-INF/MANIFEST.MF create mode 100644 sdo-java/trunk/tools/src/main/resources/META-INF/NOTICE create mode 100644 sdo-java/trunk/tools/src/main/resources/META-INF/README.txt create mode 100644 sdo-java/trunk/tools/src/test/java/com/example/repchoice/RCType.java create mode 100644 sdo-java/trunk/tools/src/test/java/com/example/repchoice/RepchoiceFactory.java create mode 100644 sdo-java/trunk/tools/src/test/java/com/example/repchoice/impl/RCTypeImpl.java create mode 100644 sdo-java/trunk/tools/src/test/java/com/example/repchoice/impl/RepchoiceFactoryImpl.java create mode 100644 sdo-java/trunk/tools/src/test/java/com/example/sequences/MixedQuote.java create mode 100644 sdo-java/trunk/tools/src/test/java/com/example/sequences/MixedRepeatingChoice.java create mode 100644 sdo-java/trunk/tools/src/test/java/com/example/sequences/RepeatingChoice.java create mode 100644 sdo-java/trunk/tools/src/test/java/com/example/sequences/SequencesFactory.java create mode 100644 sdo-java/trunk/tools/src/test/java/com/example/sequences/TwoRCs.java create mode 100644 sdo-java/trunk/tools/src/test/java/com/example/sequences/TwoRCsMixed.java create mode 100644 sdo-java/trunk/tools/src/test/java/com/example/sequences/impl/MixedQuoteImpl.java create mode 100644 sdo-java/trunk/tools/src/test/java/com/example/sequences/impl/MixedRepeatingChoiceImpl.java create mode 100644 sdo-java/trunk/tools/src/test/java/com/example/sequences/impl/RepeatingChoiceImpl.java create mode 100644 sdo-java/trunk/tools/src/test/java/com/example/sequences/impl/SequencesFactoryImpl.java create mode 100644 sdo-java/trunk/tools/src/test/java/com/example/sequences/impl/TwoRCsImpl.java create mode 100644 sdo-java/trunk/tools/src/test/java/com/example/sequences/impl/TwoRCsMixedImpl.java create mode 100644 sdo-java/trunk/tools/src/test/java/org/apache/tuscany/sdo/test/AllTests.java create mode 100644 sdo-java/trunk/tools/src/test/java/org/apache/tuscany/sdo/test/GeneratedPackagesTestCase.java create mode 100644 sdo-java/trunk/tools/src/test/resources/TUSCANY1050.xsd create mode 100644 sdo-java/trunk/tools/src/test/resources/enum.xsd create mode 100644 sdo-java/trunk/tools/src/test/resources/mixedRepeatingChoiceTestResult.xml create mode 100644 sdo-java/trunk/tools/src/test/resources/mixedStaticTestResult.xml create mode 100644 sdo-java/trunk/tools/src/test/resources/repeatingChoice.xsd create mode 100644 sdo-java/trunk/tools/src/test/resources/repeatingChoiceTestResult.xml create mode 100644 sdo-java/trunk/tools/src/test/resources/sdoModel.xsd create mode 100644 sdo-java/trunk/tools/src/test/resources/sequences.xsd create mode 100644 sdo-java/trunk/tools/src/test/resources/twoRepeatingChoicesMixedTestResult.xml create mode 100644 sdo-java/trunk/tools/src/test/resources/twoRepeatingChoicesTestResult.xml create mode 100644 sdo-java/trunk/tools/templates/Header.javajetinc create mode 100644 sdo-java/trunk/tools/templates/models/SDOClass.javajet create mode 100644 sdo-java/trunk/tools/templates/models/SDOFactoryClass.javajet create mode 100644 sdo-java/trunk/tools/templates/models/generator.skeleton (limited to 'sdo-java') diff --git a/sdo-java/trunk/BUILDING b/sdo-java/trunk/BUILDING new file mode 100644 index 0000000000..ff5e3a29f9 --- /dev/null +++ b/sdo-java/trunk/BUILDING @@ -0,0 +1,34 @@ +Building the SDO Release from a 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/developing-sdo-java.html + + +Initial Setup +------------- + +1) Install J2SE JDK 1.4.2 or above +2) Install Maven: Download Maven 2.0.7 (download from http://maven.apache.org/download.html) Follow the maven instructions for +configuring the JAVA_HOME environment variable, and ensuring that the "mvn" command is on your execution PATH. + +Building +-------- + +1) If you have chosen to install a JDK at version 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 do mvn -Pjava_1_4_maven, as this profile option excludes the JDK5 dependent features. +2) In a command window/shell, change to the top level directory of the Tuscany SDO Java source distribution. +3) Execute: mvn + This will install the sdo implementation and tools jars in your local maven repository +4) If you wish to rebuild the Tuscany SDO Java binary dstribution change directory to "distribution" and run mvn + This will create archives of the binary and source distributions in the target subdirectory of the distribution 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 builds without trying to access updated build dependencies (offline mode) and is much faster. + + diff --git a/sdo-java/trunk/LICENSE b/sdo-java/trunk/LICENSE new file mode 100644 index 0000000000..e05521b589 --- /dev/null +++ b/sdo-java/trunk/LICENSE @@ -0,0 +1,280 @@ + + 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 SDO for Java Subcomponents +=========================================: + +The Tuscany SDO for Java release 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. + +These files being ... +commonj/sdo/ChangeSummary.java +commonj/sdo/DataGraph.java +commonj/sdo/DataObject.java +commonj/sdo/helper/CopyHelper.java +commonj/sdo/helper/DataFactory.java +commonj/sdo/helper/DataHelper.java +commonj/sdo/helper/EqualityHelper.java +commonj/sdo/helper/HelperContext.java +commonj/sdo/helper/TypeHelper.java +commonj/sdo/helper/XMLDocument.java +commonj/sdo/helper/XMLHelper.java +commonj/sdo/helper/XSDHelper.java +commonj/sdo/impl/ExternalizableDelegator.java +commonj/sdo/Property.java +commonj/sdo/Sequence.java +commonj/sdo/Type.java +xml/datagraph.xsd +xml/sdoJava.xml +xml/sdoJava.xsd +xml/sdoModel.xml +xml/sdoModel.xsd +xml/sdoXML.xml +xml/sdoXML.xsd + + +License for the Service Data Objects JavaDoc, Interface Definition files +and XSD files. + +The Service Data Objects JavaDoc, Interface Definition files and XSD files +are being provided by the copyright holders under the following license. +By using and/or copying this work, you agree that you have read, +understood and will comply with the following terms and conditions: + +Permission to copy, display, make derivative works of and distribute +the Service Data Objects JavaDoc, Interface Definition files and XSD files +(the "Artifacts") in any medium without fee or royalty is hereby granted, +provided that you include the following on ALL copies of the Artifacts, +or portions thereof, that you make: + +1. A link or URL to the Artifacts at this location: +http://www.osoa.org/display/Main/Service+Data+Objects+Specifications + +2. The full text of this copyright notice as shown in the Artifacts. + + + +THE ARTIFACTS ARE PROVIDED "AS IS" AND THE AUTHORS MAKE NO +REPRESENTATIONS OR WARRANTIES, EXPRESS OR IMPLIED, REGARDING THE +ARTIFACTS 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 ARTIFACTS. + +The name and trademarks of the Authors may NOT be used in any manner, +including advertising or publicity pertaining to the Service Data +Objects Specification or its contents without specific, written prior +permission. Title to copyright in the Service Data Objects +Specification will at all times remain with the Authors. + +No other rights are granted by implication, estoppel or otherwise. + +Revision level 1.11, last updated on 2007/12/21 +================================================================================================================= diff --git a/sdo-java/trunk/NOTICE b/sdo-java/trunk/NOTICE new file mode 100644 index 0000000000..1df9707552 --- /dev/null +++ b/sdo-java/trunk/NOTICE @@ -0,0 +1,11 @@ +Apache Tuscany +Copyright (c) 2005 - 2008 The Apache Software Foundation + +This product includes software developed at +The Apache Software Foundation (http://www.apache.org/). + +This product also includes software developed by the Open Service Oriented Architecture organisation +(http://osoa.org). + +Please see the LICENSE file present in the root directory of this +distribution. diff --git a/sdo-java/trunk/README b/sdo-java/trunk/README new file mode 100644 index 0000000000..d8178f7a37 --- /dev/null +++ b/sdo-java/trunk/README @@ -0,0 +1,16 @@ +Tuscany SDO for ${sdo.version} Source Distribution Readme File + +See the LICENSE, DISCLAIMER and NOTICE files for legal information concerning this distribution. + +See the RELEASE_NOTES file for a summary of what's new with this release. + +See the BUILDING file for instructions on how to build Tuscany SDO Java from this source distribution. + +Documentation + +For general documentation about the Tuscany project and the SDO for Java, see the Tuscany website +http://incubator.apache.org/tuscany + + + + diff --git a/sdo-java/trunk/RELEASE_NOTES b/sdo-java/trunk/RELEASE_NOTES new file mode 100644 index 0000000000..4d409118c3 --- /dev/null +++ b/sdo-java/trunk/RELEASE_NOTES @@ -0,0 +1,34 @@ +Trunk version -- edit this as appropriate in the branch / tag of a release + +What's New in SDO Java XXXX + +Apache Tuscany's SDO Java Release *********** is + +For previous revision history, take a look at +http://svn.apache.org/viewvc/tuscany/tags/java/sdo/*******/RELEASE_NOTES + +SDO Java ************** is a superset of previous SDO xxxxxxxxxxxx release. +Anything in xxxxxxxxxxxxxxxxx is also in *********, but ********** contains +features and bugfixes not present in xxxxxxxxxxxx release. + +Downloading +=========== + +Please visit http://tuscany.apache.org/sdo-java-releases.html + + + +New Features and Fixes +====================== + +For more detail on these fixes and features please see ... +https://issues.apache.org/jira + +New Feature +..... +Improvement +..... +Bug +..... +Wish +..... diff --git a/sdo-java/trunk/distribution/pom.xml b/sdo-java/trunk/distribution/pom.xml new file mode 100644 index 0000000000..cc8df2d3ee --- /dev/null +++ b/sdo-java/trunk/distribution/pom.xml @@ -0,0 +1,137 @@ + + + + 4.0.0 + + org.apache.tuscany.sdo + tuscany-sdo + 1.2-SNAPSHOT + ../pom.xml + + + tuscany-sdo-distribution + Apache Tuscany SDO Distribution + pom + + + true + ${pom.version} + 1.1.1 + + + + + + + org.apache.tuscany.sdo + tuscany-sdo-lib + ${pom.version} + + + org.apache.tuscany.sdo + tuscany-sdo-impl + ${pom.version} + + + org.apache.tuscany.sdo + tuscany-sdo-tools + ${pom.version} + + + org.apache.tuscany.sdo + sample-sdo + ${pom.version} + + + + + + + org.apache.maven.plugins + maven-dependency-plugin + + + + unpack-javadoc + package + + unpack + + + + + org.apache.tuscany.sdo + tuscany-sdo-api-r${specVersion} + javadoc + ${pom.version} + ${project.build.directory}/javadoc/sdo + + + org.apache.tuscany.sdo + tuscany-sdo-lib + javadoc + ${pom.version} + ${project.build.directory}/javadoc/tuscany-sdo + + + org.apache.tuscany.sdo + sample-sdo + javadoc + ${pom.version} + ${project.build.directory}/javadoc/sdo-samples + + + + + + + + + org.apache.maven.plugins + maven-assembly-plugin + + + distribution-package + package + + single + + + + src/main/assembly/bin.xml + src/main/assembly/src.xml + + gnu + apache-tuscany-sdo-${pom.version} + + + + + + + diff --git a/sdo-java/trunk/distribution/src/main/assembly/bin.xml b/sdo-java/trunk/distribution/src/main/assembly/bin.xml new file mode 100644 index 0000000000..08c1d66839 --- /dev/null +++ b/sdo-java/trunk/distribution/src/main/assembly/bin.xml @@ -0,0 +1,124 @@ + + + + + + false + + tar.gz + zip + + + + + + + src/main/release/bin + tuscany-sdo-${sdo.version} + + INSTALL + NOTICE + + + + src/main/release/bin/samples + tuscany-sdo-${sdo.version}/docs/javadoc/sdo-samples + + sampleProgramContents.html + + + + + + target/javadoc + tuscany-sdo-${sdo.version}/docs/javadoc + + **/* + + + + + + + + ../sample + tuscany-sdo-${sdo.version}/samples + + **/* + + + pom.xml + */.classpath + */.project + */target/classes + */target/classes/**/* + */target/test-classes + */target/test-classes/**/* + */target/surefire-reports + */target/surefire-reports/**/* + + + + + + + ../RELEASE_NOTES + tuscany-sdo-${sdo.version} + true + + + src/main/release/bin/samples/runsamples.bat + tuscany-sdo-${sdo.version}/samples + true + + + src/main/release/bin/samples/runsamples.sh + tuscany-sdo-${sdo.version}/samples + true + 0755 + + + src/main/release/bin/samples/README + tuscany-sdo-${sdo.version}/samples + true + + + src/main/release/bin/LICENSE + tuscany-sdo-${sdo.version} + true + + + + + + tuscany-sdo-${sdo.version}/lib + + org.apache.tuscany.sdo:tuscany-sdo-api-r2.1 + org.apache.tuscany.sdo:tuscany-sdo-lib + org.apache.tuscany.sdo:tuscany-sdo-impl + org.apache.tuscany.sdo:tuscany-sdo-tools + org.apache.tuscany.sdo:sample-sdo + + 0644 + + + + + diff --git a/sdo-java/trunk/distribution/src/main/assembly/src.xml b/sdo-java/trunk/distribution/src/main/assembly/src.xml new file mode 100644 index 0000000000..37a0d02caf --- /dev/null +++ b/sdo-java/trunk/distribution/src/main/assembly/src.xml @@ -0,0 +1,80 @@ + + + + + src + false + + tar.gz + zip + + + + + .. + tuscany-sdo-${tuscany.version}-src + + **/* + + + + **/target + **/target/**/* + **/build + **/build/**/* + **/.settings + **/.classpath + **/.project + **/.wtpmodules + **/surefire* + **/cobertura.ser + bin + bin/* + **/var/journal + **/build.out* + impl/.felix + impl/.felix/**/* + + + + + + ../README + tuscany-sdo-${sdo.version}-src + true + + + ../LICENSE + tuscany-sdo-${sdo.version}-src + true + + + ../NOTICE + tuscany-sdo-${sdo.version}-src + true + + + ../RELEASE_NOTES + tuscany-sdo-${sdo.version}-src + true + + + + diff --git a/sdo-java/trunk/distribution/src/main/release/bin/INSTALL b/sdo-java/trunk/distribution/src/main/release/bin/INSTALL new file mode 100644 index 0000000000..7e704a9b15 --- /dev/null +++ b/sdo-java/trunk/distribution/src/main/release/bin/INSTALL @@ -0,0 +1,4 @@ +Tuscany Java SDO Installation + +Unpack the binary archive into a location of your choice and add each of the jar files in the +lib directory to your CLASSPATH variable. diff --git a/sdo-java/trunk/distribution/src/main/release/bin/LICENSE b/sdo-java/trunk/distribution/src/main/release/bin/LICENSE new file mode 100644 index 0000000000..579e226b67 --- /dev/null +++ b/sdo-java/trunk/distribution/src/main/release/bin/LICENSE @@ -0,0 +1,420 @@ + + 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 SDO for Java Subcomponents +=========================================: + +The Tuscany SDO for Java release 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. + + + +License for the Service Data Objects JavaDoc and Interface Definition files. (tuscany-sdo-api-r2.1-${sdo.version}.jar) + +These files being ... +commonj/sdo/ChangeSummary$Setting.class +commonj/sdo/ChangeSummary.class +commonj/sdo/DataGraph.class +commonj/sdo/DataObject.class +commonj/sdo/helper/CopyHelper.class +commonj/sdo/helper/DataFactory.class +commonj/sdo/helper/DataHelper.class +commonj/sdo/helper/EqualityHelper.class +commonj/sdo/helper/HelperContext.class +commonj/sdo/helper/TypeHelper.class +commonj/sdo/helper/XMLDocument.class +commonj/sdo/helper/XMLHelper.class +commonj/sdo/helper/XSDHelper.class +commonj/sdo/impl/ExternalizableDelegator$Resolvable.class +commonj/sdo/impl/ExternalizableDelegator.class +commonj/sdo/Property.class +commonj/sdo/Sequence.class +commonj/sdo/Type.class +xml/datagraph.xsd +xml/sdoJava.xml +xml/sdoJava.xsd +xml/sdoModel.xml +xml/sdoModel.xsd +xml/sdoXML.xml +xml/sdoXML.xsd + + +License for the Service Data Objects JavaDoc, Interface Definition files +and XSD files. + +The Service Data Objects JavaDoc, Interface Definition files and XSD files +are being provided by the copyright holders under the following license. +By using and/or copying this work, you agree that you have read, +understood and will comply with the following terms and conditions: + +Permission to copy, display, make derivative works of and distribute +the Service Data Objects JavaDoc, Interface Definition files and XSD files +(the "Artifacts") in any medium without fee or royalty is hereby granted, +provided that you include the following on ALL copies of the Artifacts, +or portions thereof, that you make: + +1. A link or URL to the Artifacts at this location: +http://www.osoa.org/display/Main/Service+Data+Objects+Specifications + +2. The full text of this copyright notice as shown in the Artifacts. + + + +THE ARTIFACTS ARE PROVIDED "AS IS" AND THE AUTHORS MAKE NO +REPRESENTATIONS OR WARRANTIES, EXPRESS OR IMPLIED, REGARDING THE +ARTIFACTS 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 ARTIFACTS. + +The name and trademarks of the Authors may NOT be used in any manner, +including advertising or publicity pertaining to the Service Data +Objects Specification or its contents without specific, written prior +permission. Title to copyright in the Service Data Objects +Specification will at all times remain with the Authors. + +No other rights are granted by implication, estoppel or otherwise. + +Revision level 1.11, last updated on 2007/12/21 + + +================================================================================================================= +Note that the remaining files in the jar tuscany-sdo-api-r2.1-${sdo.version}.jar .... +commonj/sdo/impl/HelperProvider$1.class +commonj/sdo/impl/HelperProvider$2.class +commonj/sdo/impl/HelperProvider$DefaultHelperContext.class +commonj/sdo/impl/HelperProvider.class +commonj/sdo/impl/NoHelperProviderException.class + +are licensed by the Apache License Version 2.0, January 2004 as laid out above + + +================================================================================================================= + +For the Eclipse EMF components +(codegen-2.2.3.jar +codegen-ecore-2.2.3.jar +common-2.2.3.jar +ecore-2.2.3.jar +ecore-change-2.2.3.jar +ecore-xmi-2.2.3.jar +xsd-2.2.3.jar) + + +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 StAX components (stax-api-1.0.1.jar and wstx-asl-3.2.1.jar) + +These components are covered by the Apache License Version 2.0, January 2004, as above. + +======================================================================================================================== + +For the backport-util-concurrent-3.0.jar library + +Creative Commons Public Domain Dedication + +Copyright-Only Dedication (based on United States law) or Public Domain Certification + +The person or persons who have associated work with this document (the "Dedicator" or "Certifier") hereby either (a) certifies that, to the best of his knowledge, the work of authorship identified is in the public domain of the country from which the work is published, or (b) hereby dedicates whatever copyright the dedicators holds in the work of authorship identified below (the "Work") to the public domain. A certifier, moreover, dedicates any copyright interest he may have in the associated work, and for these purposes, is described as a "dedicator" below. + +A certifier has taken reasonable steps to verify the copyright status of this work. Certifier recognizes that his good faith efforts may not shield him from liability if in fact the work certified is not in the public domain. + +Dedicator makes this dedication for the benefit of the public at large and to the detriment of the Dedicator's heirs and successors. Dedicator intends this dedication to be an overt act of relinquishment in perpetuity of all present and future rights under copyright law, whether vested or contingent, in the Work. Dedicator understands that such relinquishment of all rights includes the relinquishment of all rights to enforce (by lawsuit or otherwise) those copyrights in the Work. + +Dedicator recognizes that, once placed in the public domain, the Work may be freely reproduced, distributed, transmitted, used, modified, built upon, or otherwise exploited by anyone for any purpose, commercial or non-commercial, and in any way, including by methods that have not yet been invented or conceived. + + diff --git a/sdo-java/trunk/distribution/src/main/release/bin/NOTICE b/sdo-java/trunk/distribution/src/main/release/bin/NOTICE new file mode 100644 index 0000000000..dc3c1281f6 --- /dev/null +++ b/sdo-java/trunk/distribution/src/main/release/bin/NOTICE @@ -0,0 +1,17 @@ +Apache Tuscany +Copyright (c) 2005 - 2008 The Apache Software Foundation + +This product includes software developed at +The Apache Software Foundation (http://www.apache.org/). + +This product also includes software developed by the Eclipse Modeling Framework project +(http://www.eclipse.org/emf/) + +This product also includes software developed by the Open Service Oriented Architecture organisation +(http://osoa.org). + +This product also includes software developed by the Codehaus Opensource Software Community +http://codehaus.org/ + +Please see the LICENSE file present in the root directory of this +distribution. diff --git a/sdo-java/trunk/distribution/src/main/release/bin/README b/sdo-java/trunk/distribution/src/main/release/bin/README new file mode 100644 index 0000000000..adf9ee9c2d --- /dev/null +++ b/sdo-java/trunk/distribution/src/main/release/bin/README @@ -0,0 +1,23 @@ +Tuscany SDO for ${sdo.version} Binary Distribution Readme File + +See the LICENSE, DISCLAIMER and NOTICE files for legal information concerning this distribution. + +See the RELEASE_NOTES file for a summary of what's new with this release. + +See the INSTALL file for instructions on how to use Tuscany SDO Java provided in this binary distribution. + +See the docs/javadoc/sdo-samples/index.html file for instructions on how to run the sample programs. + +Documentation + +For general documentation about the Tuscany project and the SDO for Java, see the Tuscany website +http://incubator.apache.org/tuscany + +This distribution contains javadoc for the SDO 2.1 API, the Tuscany SDO extensions API, and the Tuscany SDO samples. + +Samples + +Sample source code is included with this binary distribution. + + + diff --git a/sdo-java/trunk/distribution/src/main/release/bin/samples/README b/sdo-java/trunk/distribution/src/main/release/bin/samples/README new file mode 100644 index 0000000000..a19704ccd2 --- /dev/null +++ b/sdo-java/trunk/distribution/src/main/release/bin/samples/README @@ -0,0 +1,11 @@ +Apache Tuscany SDO Java Sample Programs + +Documentation for these samples may be found in the docs/javadoc/sdo-samples directory +of this distribution. + +The runsamples.sh and runsamples.bat scripts in their unedited form +provide a way to run all of the samples sequentially. If you run these scripts +from within the directory they are found in, they will run correctly. +If you run them from elsewhere you will need to edit the scripts and set the +BINARY_BASE variable to the path in your filesystem where you unpacked the +SDO distribution. diff --git a/sdo-java/trunk/distribution/src/main/release/bin/samples/runsamples.bat b/sdo-java/trunk/distribution/src/main/release/bin/samples/runsamples.bat new file mode 100644 index 0000000000..a2e81eafec --- /dev/null +++ b/sdo-java/trunk/distribution/src/main/release/bin/samples/runsamples.bat @@ -0,0 +1,26 @@ +REM Licensed to the Apache Software Foundation (ASF) under one +REM or more contributor license agreements. See the NOTICE file +REM distributed with this work for additional information +REM regarding copyright ownership. The ASF licenses this file +REM to you under the Apache License, Version 2.0 (the +REM "License"); you may not use this file except in compliance +REM with the License. You may obtain a copy of the License at +REM +REM http://www.apache.org/licenses/LICENSE-2.0 +REM +REM Unless required by applicable law or agreed to in writing, +REM software distributed under the License is distributed on an +REM "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY +REM KIND, either express or implied. See the License for the +REM specific language governing permissions and limitations +REM under the License. +@echo off +set BINARY_BASE=.. +set RELEASE=${sdo.version} +echo SDO Sample Programs. Running with BINARY_BASE set to %BINARY_BASE% +echo If this script fails with ClassDefNotFound errors you probably need to +echo edit the BINARY_BASE variable in the script to point to the location +echo where you unpacked the Tuscany SDO binary distribution +set LIB=%BINARY_BASE%\lib +set CLASSPATH=%LIB%\sample-sdo-%RELEASE%.jar;%LIB%\sdo-api-r2.1-%RELEASE%.jar;%LIB%\tuscany-sdo-lib-%RELEASE%.jar;%LIB%\tuscany-sdo-impl-%RELEASE%.jar;%LIB%\tuscany-sdo-tools-%RELEASE%.jar;%LIB%\codegen-ecore-2.2.3.jar;%LIB%\codegen-2.2.3.jar;%LIB%\ecore-2.2.3.jar;%LIB%\ecore-change-2.2.3.jar;%LIB%\ecore-xmi-2.2.3.jar;%LIB%\common-2.2.3.jar;%LIB%\xsd-2.2.3.jar;%LIB%\stax-api-1.0.1.jar;%LIB%\wstx-asl-3.2.1.jar +java org.apache.tuscany.samples.sdo.ExecuteSamples \ No newline at end of file diff --git a/sdo-java/trunk/distribution/src/main/release/bin/samples/runsamples.sh b/sdo-java/trunk/distribution/src/main/release/bin/samples/runsamples.sh new file mode 100644 index 0000000000..e7a627d34e --- /dev/null +++ b/sdo-java/trunk/distribution/src/main/release/bin/samples/runsamples.sh @@ -0,0 +1,27 @@ +#!/bin/sh +# Licensed to the Apache Software Foundation (ASF) under one +# or more contributor license agreements. See the NOTICE file +# distributed with this work for additional information +# regarding copyright ownership. The ASF licenses this file +# to you under the Apache License, Version 2.0 (the +# "License"); you may not use this file except in compliance +# with the License. You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, +# software distributed under the License is distributed on an +# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY +# KIND, either express or implied. See the License for the +# specific language governing permissions and limitations +# under the License. +echo SDO Sample Programs. Running with BINARY_BASE set to $BINARY_BASE +echo If this script fails with ClassDefNotFound errors you probably need to +echo edit the BINARY_BASE variable in the script to point to the location +echo where you unpacked the Tuscany SDO binary distribution +export BINARY_BASE=.. +export RELEASE=${sdo.version} +export LIB=$BINARY_BASE/lib +export CLASSPATH=$LIB/sample-sdo-$RELEASE.jar:$LIB/tuscany-sdo-api-r2.1-$RELEASE.jar:$LIB/tuscany-sdo-lib-$RELEASE.jar:$LIB/tuscany-sdo-impl-$RELEASE.jar:$LIB/tuscany-sdo-tools-$RELEASE.jar:$LIB/codegen-ecore-2.2.3.jar:$LIB/codegen-2.2.3.jar:$LIB/ecore-2.2.3.jar:$LIB/ecore-change-2.2.3.jar:$LIB/ecore-xmi-2.2.3.jar:$LIB/common-2.2.3.jar:$LIB/xsd-2.2.3.jar:$LIB/stax-api-1.0.1.jar:$LIB/wstx-asl-3.2.1.jar +echo $CLASSPATH +java org.apache.tuscany.samples.sdo.ExecuteSamples diff --git a/sdo-java/trunk/distribution/src/main/release/bin/samples/sampleProgramContents.html b/sdo-java/trunk/distribution/src/main/release/bin/samples/sampleProgramContents.html new file mode 100644 index 0000000000..01edf84c69 --- /dev/null +++ b/sdo-java/trunk/distribution/src/main/release/bin/samples/sampleProgramContents.html @@ -0,0 +1,244 @@ + + + + +SDO Samples +

SDO Samples

+

+The samples provided in the Tuscany SDO distribution cover many areas of +the SDO API. Here we provide two indexes into the samples. The first lists +each sample in sequence and details the central theme(s) of the sample. +It also mentions if the sample significantly demonstrates other areas in passing. +The second index lists all the themes that are covered by these samples, and +indicates which of the samples has that subject area as a central theme or as +demonstrates the subject area significant as an incidental part of the sample.

Index by Sample Program Name

+

Sample Program CreateCompany

+Core function:
+Set Properties of DataObject by name
+

Sample Program ReadPurchaseOrder

+Core function:
+Loading data from XML
+Saving data to XML
+
Also demonstrates:
+Get Properties of DataObject by name
+

Sample Program CreatePurchaseOrder

+Core function:
+Loading data from XML
+Saving data to XML
+

Sample Program AccessDataObjectPropertiesByName

+Core function:
+Get Properties of DataObject by name
+

Sample Program AccessingTheContentsOfASequence

+Core function:
+Accessing values in a Sequence
+

Sample Program AccessDataObjectUsingValidXPath

+Core function:
+Get/Set Properties of DataObject by Xpath
+

Sample Program DynamicCustomerTypeSample

+Core function:
+Create Types using the SDO API
+
Also demonstrates:
+Set Properties of DataObject by name
+Using Built-in Types
+Saving data to XML
+

Sample Program CreateCompanyTuscanyAPI

+Core function:
+Set Properties of DataObject by name
+

Sample Program CreateDataObjectFromXmlString

+Core function:
+Using Built-in Types
+Loading data from XML
+

Sample Program SerializingDeserializingADataObject

+Core function:
+Java Serialization of data graph
+
Also demonstrates:
+Testing for Graph Equality
+

Sample Program AccessingDataObjectsViaPropertyIndex

+Core function:
+Get/Set Properties of DataObject by index
+

Sample Program ObtainingDataGraphFromXml

+Core function:
+Wrapping data graph in a DataGraph instance
+
Also demonstrates:
+Using Built-in Types
+

Sample Program PrintDataGraph

+Core function:
+Generic data graph traversal
+
Also demonstrates:
+Get/Set Properties by Instance Properties
+isMany Properties
+Create Types using the SDO API
+Accessing values in a Sequence
+Non-Containment
+

Sample Program MedicalScenario

+Core function:
+Containment
+Create Types using the SDO API
+Create Types using XML Schema
+Open Content
+Non-Containment
+
Also demonstrates:
+Create DataObjects by name
+isMany Properties
+Generic data graph traversal
+Saving data to XML
+

Sample Program MedicalScenarioWithChangeMonitoring

+Core function:
+Containment
+Create Types using the SDO API
+Create Types using XML Schema
+Open Content
+Non-Containment
+Change Monitoring using a ChangeSummary Property on a DataObject
+
Also demonstrates:
+Create DataObjects by name
+isMany Properties
+Generic data graph traversal
+Saving data to XML
+

Index by function

+ +

+
+

Get Properties of DataObject by name

+Samples which demonstrate this as their core function
+AccessDataObjectPropertiesByName
+Samples which demonstrate this in addition to their core function
+ReadPurchaseOrder
+
+

Set Properties of DataObject by name

+Samples which demonstrate this as their core function
+CreateCompany
+CreateCompanyTuscanyAPI
+Samples which demonstrate this in addition to their core function
+DynamicCustomerTypeSample
+
+

Create DataObjects by name

+Samples which demonstrate this in addition to their core function
+MedicalScenarioWithChangeMonitoring
+MedicalScenario
+
+

Get/Set Properties of DataObject by index

+Samples which demonstrate this as their core function
+AccessingDataObjectsViaPropertyIndex
+
+

Get/Set Properties by Instance Properties

+Samples which demonstrate this in addition to their core function
+PrintDataGraph
+
+

Get/Set Properties of DataObject by Xpath

+Samples which demonstrate this as their core function
+AccessDataObjectUsingValidXPath
+
+

isMany Properties

+Samples which demonstrate this in addition to their core function
+PrintDataGraph
+MedicalScenarioWithChangeMonitoring
+MedicalScenario
+
+

Containment

+Samples which demonstrate this as their core function
+MedicalScenarioWithChangeMonitoring
+MedicalScenario
+
+

Create Types using the SDO API

+Samples which demonstrate this as their core function
+MedicalScenarioWithChangeMonitoring
+DynamicCustomerTypeSample
+MedicalScenario
+Samples which demonstrate this in addition to their core function
+PrintDataGraph
+
+

Create Types using XML Schema

+Samples which demonstrate this as their core function
+MedicalScenarioWithChangeMonitoring
+MedicalScenario
+
+

Create Types using the Tuscany API

+
+

Using Built-in Types

+Samples which demonstrate this as their core function
+CreateDataObjectFromXmlString
+Samples which demonstrate this in addition to their core function
+DynamicCustomerTypeSample
+ObtainingDataGraphFromXml
+
+

Accessing values in a Sequence

+Samples which demonstrate this as their core function
+AccessingTheContentsOfASequence
+Samples which demonstrate this in addition to their core function
+PrintDataGraph
+
+

Generic data graph traversal

+Samples which demonstrate this as their core function
+PrintDataGraph
+Samples which demonstrate this in addition to their core function
+MedicalScenarioWithChangeMonitoring
+MedicalScenario
+
+

Loading data from XML

+Samples which demonstrate this as their core function
+CreateDataObjectFromXmlString
+ReadPurchaseOrder
+CreatePurchaseOrder
+
+

Saving data to XML

+Samples which demonstrate this as their core function
+ReadPurchaseOrder
+CreatePurchaseOrder
+Samples which demonstrate this in addition to their core function
+MedicalScenarioWithChangeMonitoring
+DynamicCustomerTypeSample
+MedicalScenario
+
+

Change Monitoring using a DataGraph

+
+

Change Monitoring using a ChangeSummary Property on a DataObject

+Samples which demonstrate this as their core function
+MedicalScenarioWithChangeMonitoring
+
+

Wrapping data graph in a DataGraph instance

+Samples which demonstrate this as their core function
+ObtainingDataGraphFromXml
+
+

Open Content

+Samples which demonstrate this as their core function
+MedicalScenarioWithChangeMonitoring
+MedicalScenario
+
+

Non-Containment

+Samples which demonstrate this as their core function
+MedicalScenarioWithChangeMonitoring
+MedicalScenario
+Samples which demonstrate this in addition to their core function
+PrintDataGraph
+
+

Create XML Schema from Types

+
+

Java Serialization of data graph

+Samples which demonstrate this as their core function
+SerializingDeserializingADataObject
+
+

Testing for Graph Equality

+Samples which demonstrate this in addition to their core function
+SerializingDeserializingADataObject
+ + diff --git a/sdo-java/trunk/impl/model/SDO.ecore b/sdo-java/trunk/impl/model/SDO.ecore new file mode 100644 index 0000000000..0dff575474 --- /dev/null +++ b/sdo-java/trunk/impl/model/SDO.ecore @@ -0,0 +1,982 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + + + + +
+ + + + + + +
+ + + + + +
+ + + + + +
+ + + + + +
+ + + + + + +
+ + + + + +
+ + + + + +
+ + + + + +
+ + + + + + +
+ + + + + +
+ + + + + +
+ + + + +
+ + + + +
+ + + + +
+ + + + +
+ + + + + +
+ + + + + +
+ + + + + +
+ + + + + +
+ + + + + +
+ + + + + +
+ + + + + +
+ + + + + +
+ + + + + +
+ + + + + +
+ + + + + +
+ + + + + +
+ + + + + +
+ + + + + +
+ + + + + +
+ + + + + +
+ + + + + + +
+ + + + + + +
+ + + + + + +
+ + + + + + +
+ + + + + + +
+ + + + + + +
+ + + + + + +
+ + + + + + +
+ + + + + + +
+ + + + + + +
+ + + + + + +
+ + + + + + +
+ + + + + + +
+ + + + + + +
+ + + + + + +
+ + + + + +
+ + + + + +
+ + + + + +
+ + + + + +
+ + + + + +
+ + + + + +
+ + + + + +
+ + + + + +
+ + + + + +
+ + + + + +
+ + + + + +
+ + + + + +
+ + + + + +
+ + + + + +
+ + + + + +
+ + + + + +
+ + + + + + +
+ + + + + + +
+ + + + + + +
+ + + + + + +
+ + + + + + +
+ + + + + + +
+ + + + + + +
+ + + + + + +
+ + + + + + +
+ + + + + + +
+ + + + + + +
+ + + + + + +
+ + + + + + +
+ + + + + + +
+ + + + + + +
+ + + + + +
+ + + + + +
+ + + + + +
+ + + + + +
+ + + + + +
+ + + + + +
+ + + + + +
+ + + + + +
+ + + + + +
+ + + + + +
+ + + + + +
+ + + + + +
+ + + + + +
+ + + + + +
+ + + + + +
+ + + + + +
+ + + + + + +
+ + + + + + +
+ + + + + + +
+ + + + + + +
+ + + + + + +
+ + + + + + +
+ + + + + + +
+ + + + + + +
+ + + + + + +
+ + + + + + +
+ + + + + + +
+ + + + + + +
+ + + + + + +
+ + + + + + +
+ + + + + + +
+ + + + + +
+ + + + + +
+ + + + + +
+ + + + + + + +
+ + + + + + + +
+ + + + + + +
+ + + + +
+ + + + +
+ + + + +
+ + + + + +
+ + + + +
+ + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + + + +
+ + + + + + + + + + + + diff --git a/sdo-java/trunk/impl/model/SDO.genmodel b/sdo-java/trunk/impl/model/SDO.genmodel new file mode 100644 index 0000000000..2005e8f042 --- /dev/null +++ b/sdo-java/trunk/impl/model/SDO.genmodel @@ -0,0 +1,583 @@ + + + + SDO.mdl + VABASE_PLUGINS_PATH + ../.. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/sdo-java/trunk/impl/model/SDO.mdl b/sdo-java/trunk/impl/model/SDO.mdl new file mode 100644 index 0000000000..2288766bab --- /dev/null +++ b/sdo-java/trunk/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 "<>") + 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 "<>") + 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 "<>") + 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" + "<> + 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)" + "<> + 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 + "<> + 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 + "<> + 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 "<>") + 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 + "<> + 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 "<>") + 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 + "<> + 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 + "<> + 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 "<>") + 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 "<>") + 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 "<>" + 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 "<>" + 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 + "<> + 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/sdo-java/trunk/impl/pom.xml b/sdo-java/trunk/impl/pom.xml new file mode 100644 index 0000000000..736bcb6e64 --- /dev/null +++ b/sdo-java/trunk/impl/pom.xml @@ -0,0 +1,189 @@ + + + + + org.apache.tuscany.sdo + tuscany-sdo + 1.2-SNAPSHOT + + 4.0.0 + tuscany-sdo-impl + Tuscany SDO Implementation + Tuscany implementation of SDO API. + + + + codehaus + Codehaus maven repository + http://repository.codehaus.org/ + + + + + + org.apache.tuscany.sdo + tuscany-sdo-lib + ${sdo.version} + compile + + + + org.eclipse.emf + common + ${emfVersion} + compile + + + org.eclipse.emf + ecore + ${emfVersion} + compile + + + org.eclipse.emf + ecore-change + ${emfVersion} + compile + + + org.eclipse.emf + ecore-xmi + ${emfVersion} + compile + + + org.eclipse.xsd + xsd + ${emfVersion} + compile + + + + backport-util-concurrent + backport-util-concurrent + 3.0 + + + + + asm + asm + 2.2 + provided + true + + + + + stax + stax-api + 1.0.1 + + + + org.codehaus.woodstox + wstx-asl + 3.2.1 + + + + + org.apache.felix + org.apache.felix.main + 1.0.1 + provided + + + + + junit + junit + 4.3.1 + test + + + + + + + + maven-jar-plugin + + + + org.apache + ${version} + 1.4 + 1.4 + + + + + + org.apache.maven.plugins + maven-jar-plugin + 2.1 + + + + ${project.artifactId} + ${project.name} + ${project.organization.name} + ${version} + ${project.artifactId} + ${project.organization.name} + org.apache + ${project.version} + + 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 + 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 + + + + + + org.apache.maven.plugins + maven-javadoc-plugin + 2.2 + + ${basedir}/src/main/java/org/apache/tuscany/sdo/overview.html + 2.0 + 1.4 + + + + + + + diff --git a/sdo-java/trunk/impl/src/main/java/org/apache/tuscany/sdo/AnyTypeDataObject.java b/sdo-java/trunk/impl/src/main/java/org/apache/tuscany/sdo/AnyTypeDataObject.java new file mode 100644 index 0000000000..79deec6d29 --- /dev/null +++ b/sdo-java/trunk/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; + +/** + * + * A representation of the model object 'Any Type Data Object'. + * + * + * + * @see org.apache.tuscany.sdo.SDOPackage#getAnyTypeDataObject() + * @model extendedMetaData="kind='mixed'" + * @generated + */ +public interface AnyTypeDataObject extends DataObject, AnyType { +} // AnyTypeDataObject diff --git a/sdo-java/trunk/impl/src/main/java/org/apache/tuscany/sdo/SDOExtendedMetaData.java b/sdo-java/trunk/impl/src/main/java/org/apache/tuscany/sdo/SDOExtendedMetaData.java new file mode 100644 index 0000000000..ad546cc614 --- /dev/null +++ b/sdo-java/trunk/impl/src/main/java/org/apache/tuscany/sdo/SDOExtendedMetaData.java @@ -0,0 +1,39 @@ +/** + * + * Licensed to the Apache Software Foundation (ASF) under one + * or more contributor license agreements. See the NOTICE file + * distributed with this work for additional information + * regarding copyright ownership. The ASF licenses this file + * to you under the Apache License, Version 2.0 (the + * "License"); you may not use this file except in compliance + * with the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, + * software distributed under the License is distributed on an + * "AS IS" BASIS, WITHOUT 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); + + void setFeatureNamespaceMatchingLax(boolean featureNamespaceMatchingLax); +} diff --git a/sdo-java/trunk/impl/src/main/java/org/apache/tuscany/sdo/SDOFactory.java b/sdo-java/trunk/impl/src/main/java/org/apache/tuscany/sdo/SDOFactory.java new file mode 100644 index 0000000000..04ef0d714a --- /dev/null +++ b/sdo-java/trunk/impl/src/main/java/org/apache/tuscany/sdo/SDOFactory.java @@ -0,0 +1,185 @@ +/** + * + * Licensed to the Apache Software Foundation (ASF) under one + * or more contributor license agreements. See the NOTICE file + * distributed with this work for additional information + * regarding copyright ownership. The ASF licenses this file + * to you under the Apache License, Version 2.0 (the + * "License"); you may not use this file except in compliance + * with the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, + * software distributed under the License is distributed on an + * "AS IS" BASIS, WITHOUT 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; + +/** + * + * The Factory for the model. + * It provides a create method for each non-abstract class of the model. + * + * @see org.apache.tuscany.sdo.SDOPackage + * @generated + */ +public interface SDOFactory extends EFactory{ + /** + * The singleton instance of the factory. + * + * + * @generated + */ + SDOFactory eINSTANCE = org.apache.tuscany.sdo.impl.SDOFactoryImpl.init(); + + /** + * Returns a new object of class 'Change Summary'. + * + * + * @return a new object of class 'Change Summary'. + * @generated + */ + ChangeSummary createChangeSummary(); + + /** + * Returns a new object of class 'Change Summary Setting'. + * + * + * @return a new object of class 'Change Summary Setting'. + * @generated + */ + ChangeSummary.Setting createChangeSummarySetting(); + + /** + * Returns a new object of class 'Data Graph'. + * + * + * @return a new object of class 'Data Graph'. + * @generated + */ + DataGraph createDataGraph(); + + /** + * Returns a new object of class 'Any Type Data Object'. + * + * + * @return a new object of class 'Any Type Data Object'. + * @generated + */ + AnyTypeDataObject createAnyTypeDataObject(); + + /** + * Returns a new object of class 'Simple Any Type Data Object'. + * + * + * @return a new object of class 'Simple Any Type Data Object'. + * @generated + */ + SimpleAnyTypeDataObject createSimpleAnyTypeDataObject(); + + /** + * Returns a new object of class 'Class'. + * + * + * @return a new object of class 'Class'. + * @generated + */ + Type createClass(); + + /** + * Returns a new object of class 'Data Type'. + * + * + * @return a new object of class 'Data Type'. + * @generated + */ + Type createDataType(); + + /** + * Returns a new object of class 'Attribute'. + * + * + * @return a new object of class 'Attribute'. + * @generated + */ + Property createAttribute(); + + /** + * Returns a new object of class 'Reference'. + * + * + * @return a new object of class 'Reference'. + * @generated + */ + Property createReference(); + + /** + * Returns a new object of class 'Enum'. + * + * + * @return a new object of class 'Enum'. + * @generated + */ + Type createEnum(); + + /** + * Returns a new object of class 'Dynamic Data Object'. + * + * + * @return a new object of class 'Dynamic Data Object'. + * @generated + */ + DataObject createDynamicDataObject(); + + /** + * Returns a new object of class 'Store Data Object'. + * + * + * @return a new object of class 'Store Data Object'. + * @generated + */ + DataObject createStoreDataObject(); + + /** + * Returns a new object of class 'Dynamic Store Data Object'. + * + * + * @return a new object of class 'Dynamic Store Data Object'. + * @generated + */ + DataObject createDynamicStoreDataObject(); + + /** + * Returns a new object of class 'Extensible Data Object'. + * + * + * @return a new object of class 'Extensible Data Object'. + * @generated + */ + DataObject createExtensibleDataObject(); + + /** + * Returns the package supported by this factory. + * + * + * @return the package supported by this factory. + * @generated + */ + SDOPackage getSDOPackage(); + + ChangeSummary.Setting createChangeSummarySetting(EStructuralFeature eStructuralFeature, Object value, boolean isSet); + +} //SDOFactory diff --git a/sdo-java/trunk/impl/src/main/java/org/apache/tuscany/sdo/SDOPackage.java b/sdo-java/trunk/impl/src/main/java/org/apache/tuscany/sdo/SDOPackage.java new file mode 100644 index 0000000000..a21f2308ab --- /dev/null +++ b/sdo-java/trunk/impl/src/main/java/org/apache/tuscany/sdo/SDOPackage.java @@ -0,0 +1,1657 @@ +/** + * + * Licensed to the Apache Software Foundation (ASF) under one + * or more contributor license agreements. See the NOTICE file + * distributed with this work for additional information + * regarding copyright ownership. The ASF licenses this file + * to you under the Apache License, Version 2.0 (the + * "License"); you may not use this file except in compliance + * with the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, + * software distributed under the License is distributed on an + * "AS IS" BASIS, WITHOUT 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; + +/** + * + * The Package for the model. + * It contains accessors for the meta objects to represent + *
    + *
  • each class,
  • + *
  • each feature of each class,
  • + *
  • each enum,
  • + *
  • and each data type
  • + *
+ * + * @see org.apache.tuscany.sdo.SDOFactory + * @model kind="package" + * @generated + */ +public interface SDOPackage extends EPackage{ + /** + * The package name. + * + * + * @generated + */ + String eNAME = "sdo"; + + /** + * The package namespace URI. + * + * + * @generated + */ + String eNS_URI = "http://www.apache.org/tuscany/2005/SDO"; + + /** + * The package namespace name. + * + * + * @generated + */ + String eNS_PREFIX = "sdo"; + + /** + * The singleton instance of the package. + * + * + * @generated + */ + SDOPackage eINSTANCE = org.apache.tuscany.sdo.impl.SDOPackageImpl.init(); + + /** + * The meta object id for the '{@link org.apache.tuscany.sdo.impl.DataGraphImpl Data Graph}' class. + * + * + * @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 Change Summary}' class. + * + * + * @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 'Object Changes' map. + * + * + * @generated + * @ordered + */ + int CHANGE_SUMMARY__OBJECT_CHANGES = ChangePackage.CHANGE_DESCRIPTION__OBJECT_CHANGES; + + /** + * The feature id for the 'Objects To Detach' reference list. + * + * + * @generated + * @ordered + */ + int CHANGE_SUMMARY__OBJECTS_TO_DETACH = ChangePackage.CHANGE_DESCRIPTION__OBJECTS_TO_DETACH; + + /** + * The feature id for the 'Objects To Attach' containment reference list. + * + * + * @generated + * @ordered + */ + int CHANGE_SUMMARY__OBJECTS_TO_ATTACH = ChangePackage.CHANGE_DESCRIPTION__OBJECTS_TO_ATTACH; + + /** + * The feature id for the 'Resource Changes' containment reference list. + * + * + * @generated + * @ordered + */ + int CHANGE_SUMMARY__RESOURCE_CHANGES = ChangePackage.CHANGE_DESCRIPTION__RESOURCE_CHANGES; + + /** + * The feature id for the 'EData Graph' reference. + * + * + * @generated + * @ordered + */ + int CHANGE_SUMMARY__EDATA_GRAPH = ChangePackage.CHANGE_DESCRIPTION_FEATURE_COUNT + 0; + +//TODO T-153 +// /** +// * The feature id for the 'EData Graph' reference. +// * +// * +// * *handcrafted but could be generated +// * @ordered +// */ +// int CHANGE_SUMMARY__EDATA_OBJECT = ChangePackage.CHANGE_DESCRIPTION_FEATURE_COUNT + 1; + + /** + * The number of structural features of the 'Change Summary' class. + * + * + * @generated NOT + * @ordered + */ +//TODO T-153 + int CHANGE_SUMMARY_FEATURE_COUNT = ChangePackage.CHANGE_DESCRIPTION_FEATURE_COUNT + 1; + //int CHANGE_SUMMARY_FEATURE_COUNT = ChangePackage.CHANGE_DESCRIPTION_FEATURE_COUNT + 2; + + /** + * The meta object id for the '{@link org.apache.tuscany.sdo.impl.ChangeSummarySettingImpl Change Summary Setting}' class. + * + * + * @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 'Feature Name' attribute. + * + * + * @generated + * @ordered + */ + int CHANGE_SUMMARY_SETTING__FEATURE_NAME = ChangePackage.FEATURE_CHANGE__FEATURE_NAME; + + /** + * The feature id for the 'Data Value' attribute. + * + * + * @generated + * @ordered + */ + int CHANGE_SUMMARY_SETTING__DATA_VALUE = ChangePackage.FEATURE_CHANGE__DATA_VALUE; + + /** + * The feature id for the 'Set' attribute. + * + * + * @generated + * @ordered + */ + int CHANGE_SUMMARY_SETTING__SET = ChangePackage.FEATURE_CHANGE__SET; + + /** + * The feature id for the 'Value' attribute. + * + * + * @generated + * @ordered + */ + int CHANGE_SUMMARY_SETTING__VALUE = ChangePackage.FEATURE_CHANGE__VALUE; + + /** + * The feature id for the 'Feature' reference. + * + * + * @generated + * @ordered + */ + int CHANGE_SUMMARY_SETTING__FEATURE = ChangePackage.FEATURE_CHANGE__FEATURE; + + /** + * The feature id for the 'Reference Value' reference. + * + * + * @generated + * @ordered + */ + int CHANGE_SUMMARY_SETTING__REFERENCE_VALUE = ChangePackage.FEATURE_CHANGE__REFERENCE_VALUE; + + /** + * The feature id for the 'List Changes' containment reference list. + * + * + * @generated + * @ordered + */ + int CHANGE_SUMMARY_SETTING__LIST_CHANGES = ChangePackage.FEATURE_CHANGE__LIST_CHANGES; + + /** + * The number of structural features of the 'Change Summary Setting' class. + * + * + * @generated + * @ordered + */ + int CHANGE_SUMMARY_SETTING_FEATURE_COUNT = ChangePackage.FEATURE_CHANGE_FEATURE_COUNT + 0; + + /** + * The feature id for the 'Resource Set' attribute. + * + * + * @generated + * @ordered + */ + int DATA_GRAPH__RESOURCE_SET = EcorePackage.EOBJECT_FEATURE_COUNT + 0; + + /** + * The feature id for the 'Root Resource' attribute. + * + * + * @generated + * @ordered + */ + int DATA_GRAPH__ROOT_RESOURCE = EcorePackage.EOBJECT_FEATURE_COUNT + 1; + + /** + * The feature id for the 'EChange Summary' reference. + * + * + * @generated + * @ordered + */ + int DATA_GRAPH__ECHANGE_SUMMARY = EcorePackage.EOBJECT_FEATURE_COUNT + 2; + + /** + * The feature id for the 'ERoot Object' reference. + * + * + * @generated + * @ordered + */ + int DATA_GRAPH__EROOT_OBJECT = EcorePackage.EOBJECT_FEATURE_COUNT + 3; + + /** + * The number of structural features of the 'Data Graph' class. + * + * + * @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 Data Object}' class. + * + * + * @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 Property}' class. + * + * + * @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 Sequence}' class. + * + * + * @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 Type}' class. + * + * + * @see commonj.sdo.Type + * @see org.apache.tuscany.sdo.impl.SDOPackageImpl#getType() + * @generated + */ + int TYPE = 6; + + /** + * The number of structural features of the 'Data Object' class. + * + * + * @generated + * @ordered + */ + int DATA_OBJECT_FEATURE_COUNT = 0; + + /** + * The number of structural features of the 'Property' class. + * + * + * @generated + * @ordered + */ + int PROPERTY_FEATURE_COUNT = 0; + + /** + * The number of structural features of the 'Sequence' class. + * + * + * @generated + * @ordered + */ + int SEQUENCE_FEATURE_COUNT = 0; + + /** + * The number of structural features of the 'Type' class. + * + * + * @generated + * @ordered + */ + int TYPE_FEATURE_COUNT = 0; + + /** + * The meta object id for the '{@link org.apache.tuscany.sdo.impl.AnyTypeDataObjectImpl Any Type Data Object}' class. + * + * + * @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 'Mixed' attribute list. + * + * + * @generated + * @ordered + */ + int ANY_TYPE_DATA_OBJECT__MIXED = DATA_OBJECT_FEATURE_COUNT + 0; + + /** + * The feature id for the 'Any' attribute list. + * + * + * @generated + * @ordered + */ + int ANY_TYPE_DATA_OBJECT__ANY = DATA_OBJECT_FEATURE_COUNT + 1; + + /** + * The feature id for the 'Any Attribute' attribute list. + * + * + * @generated + * @ordered + */ + int ANY_TYPE_DATA_OBJECT__ANY_ATTRIBUTE = DATA_OBJECT_FEATURE_COUNT + 2; + + /** + * The number of structural features of the 'Any Type Data Object' class. + * + * + * @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 Simple Any Type Data Object}' class. + * + * + * @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 'Mixed' attribute list. + * + * + * @generated + * @ordered + */ + int SIMPLE_ANY_TYPE_DATA_OBJECT__MIXED = ANY_TYPE_DATA_OBJECT__MIXED; + + /** + * The feature id for the 'Any' attribute list. + * + * + * @generated + * @ordered + */ + int SIMPLE_ANY_TYPE_DATA_OBJECT__ANY = ANY_TYPE_DATA_OBJECT__ANY; + + /** + * The feature id for the 'Any Attribute' attribute list. + * + * + * @generated + * @ordered + */ + int SIMPLE_ANY_TYPE_DATA_OBJECT__ANY_ATTRIBUTE = ANY_TYPE_DATA_OBJECT__ANY_ATTRIBUTE; + + /** + * The feature id for the 'Raw Value' attribute. + * + * + * @generated + * @ordered + */ + int SIMPLE_ANY_TYPE_DATA_OBJECT__RAW_VALUE = ANY_TYPE_DATA_OBJECT_FEATURE_COUNT + 0; + + /** + * The feature id for the 'Value' attribute. + * + * + * @generated + * @ordered + */ + int SIMPLE_ANY_TYPE_DATA_OBJECT__VALUE = ANY_TYPE_DATA_OBJECT_FEATURE_COUNT + 1; + + /** + * The feature id for the 'Instance Type' reference. + * + * + * @generated + * @ordered + */ + int SIMPLE_ANY_TYPE_DATA_OBJECT__INSTANCE_TYPE = ANY_TYPE_DATA_OBJECT_FEATURE_COUNT + 2; + + /** + * The number of structural features of the 'Simple Any Type Data Object' class. + * + * + * @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 Class}' class. + * + * + * @see org.apache.tuscany.sdo.impl.ClassImpl + * @see org.apache.tuscany.sdo.impl.SDOPackageImpl#getClass_() + * @generated + */ + int CLASS = 9; + + /** + * The feature id for the 'EAnnotations' containment reference list. + * + * + * @generated + * @ordered + */ + int CLASS__EANNOTATIONS = EcorePackage.ECLASS__EANNOTATIONS; + + /** + * The feature id for the 'Name' attribute. + * + * + * @generated + * @ordered + */ + int CLASS__NAME = EcorePackage.ECLASS__NAME; + + /** + * The feature id for the 'Instance Class Name' attribute. + * + * + * @generated + * @ordered + */ + int CLASS__INSTANCE_CLASS_NAME = EcorePackage.ECLASS__INSTANCE_CLASS_NAME; + + /** + * The feature id for the 'Instance Class' attribute. + * + * + * @generated + * @ordered + */ + int CLASS__INSTANCE_CLASS = EcorePackage.ECLASS__INSTANCE_CLASS; + + /** + * The feature id for the 'Default Value' attribute. + * + * + * @generated + * @ordered + */ + int CLASS__DEFAULT_VALUE = EcorePackage.ECLASS__DEFAULT_VALUE; + + /** + * The feature id for the 'EPackage' container reference. + * + * + * @generated + * @ordered + */ + int CLASS__EPACKAGE = EcorePackage.ECLASS__EPACKAGE; + + /** + * The feature id for the 'Abstract' attribute. + * + * + * @generated + * @ordered + */ + int CLASS__ABSTRACT = EcorePackage.ECLASS__ABSTRACT; + + /** + * The feature id for the 'Interface' attribute. + * + * + * @generated + * @ordered + */ + int CLASS__INTERFACE = EcorePackage.ECLASS__INTERFACE; + + /** + * The feature id for the 'ESuper Types' reference list. + * + * + * @generated + * @ordered + */ + int CLASS__ESUPER_TYPES = EcorePackage.ECLASS__ESUPER_TYPES; + + /** + * The feature id for the 'EOperations' containment reference list. + * + * + * @generated + * @ordered + */ + int CLASS__EOPERATIONS = EcorePackage.ECLASS__EOPERATIONS; + + /** + * The feature id for the 'EAll Attributes' reference list. + * + * + * @generated + * @ordered + */ + int CLASS__EALL_ATTRIBUTES = EcorePackage.ECLASS__EALL_ATTRIBUTES; + + /** + * The feature id for the 'EAll References' reference list. + * + * + * @generated + * @ordered + */ + int CLASS__EALL_REFERENCES = EcorePackage.ECLASS__EALL_REFERENCES; + + /** + * The feature id for the 'EReferences' reference list. + * + * + * @generated + * @ordered + */ + int CLASS__EREFERENCES = EcorePackage.ECLASS__EREFERENCES; + + /** + * The feature id for the 'EAttributes' reference list. + * + * + * @generated + * @ordered + */ + int CLASS__EATTRIBUTES = EcorePackage.ECLASS__EATTRIBUTES; + + /** + * The feature id for the 'EAll Containments' reference list. + * + * + * @generated + * @ordered + */ + int CLASS__EALL_CONTAINMENTS = EcorePackage.ECLASS__EALL_CONTAINMENTS; + + /** + * The feature id for the 'EAll Operations' reference list. + * + * + * @generated + * @ordered + */ + int CLASS__EALL_OPERATIONS = EcorePackage.ECLASS__EALL_OPERATIONS; + + /** + * The feature id for the 'EAll Structural Features' reference list. + * + * + * @generated + * @ordered + */ + int CLASS__EALL_STRUCTURAL_FEATURES = EcorePackage.ECLASS__EALL_STRUCTURAL_FEATURES; + + /** + * The feature id for the 'EAll Super Types' reference list. + * + * + * @generated + * @ordered + */ + int CLASS__EALL_SUPER_TYPES = EcorePackage.ECLASS__EALL_SUPER_TYPES; + + /** + * The feature id for the 'EID Attribute' reference. + * + * + * @generated + * @ordered + */ + int CLASS__EID_ATTRIBUTE = EcorePackage.ECLASS__EID_ATTRIBUTE; + + /** + * The feature id for the 'EStructural Features' containment reference list. + * + * + * @generated + * @ordered + */ + int CLASS__ESTRUCTURAL_FEATURES = EcorePackage.ECLASS__ESTRUCTURAL_FEATURES; + + /** + * The number of structural features of the 'Class' class. + * + * + * @generated + * @ordered + */ + int CLASS_FEATURE_COUNT = EcorePackage.ECLASS_FEATURE_COUNT + 0; + + /** + * The meta object id for the '{@link org.apache.tuscany.sdo.impl.DataTypeImpl Data Type}' class. + * + * + * @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 'EAnnotations' containment reference list. + * + * + * @generated + * @ordered + */ + int DATA_TYPE__EANNOTATIONS = EcorePackage.EDATA_TYPE__EANNOTATIONS; + + /** + * The feature id for the 'Name' attribute. + * + * + * @generated + * @ordered + */ + int DATA_TYPE__NAME = EcorePackage.EDATA_TYPE__NAME; + + /** + * The feature id for the 'Instance Class Name' attribute. + * + * + * @generated + * @ordered + */ + int DATA_TYPE__INSTANCE_CLASS_NAME = EcorePackage.EDATA_TYPE__INSTANCE_CLASS_NAME; + + /** + * The feature id for the 'Instance Class' attribute. + * + * + * @generated + * @ordered + */ + int DATA_TYPE__INSTANCE_CLASS = EcorePackage.EDATA_TYPE__INSTANCE_CLASS; + + /** + * The feature id for the 'Default Value' attribute. + * + * + * @generated + * @ordered + */ + int DATA_TYPE__DEFAULT_VALUE = EcorePackage.EDATA_TYPE__DEFAULT_VALUE; + + /** + * The feature id for the 'EPackage' container reference. + * + * + * @generated + * @ordered + */ + int DATA_TYPE__EPACKAGE = EcorePackage.EDATA_TYPE__EPACKAGE; + + /** + * The feature id for the 'Serializable' attribute. + * + * + * @generated + * @ordered + */ + int DATA_TYPE__SERIALIZABLE = EcorePackage.EDATA_TYPE__SERIALIZABLE; + + /** + * The number of structural features of the 'Data Type' class. + * + * + * @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 Attribute}' class. + * + * + * @see org.apache.tuscany.sdo.impl.AttributeImpl + * @see org.apache.tuscany.sdo.impl.SDOPackageImpl#getAttribute() + * @generated + */ + int ATTRIBUTE = 11; + + /** + * The feature id for the 'EAnnotations' containment reference list. + * + * + * @generated + * @ordered + */ + int ATTRIBUTE__EANNOTATIONS = EcorePackage.EATTRIBUTE__EANNOTATIONS; + + /** + * The feature id for the 'Name' attribute. + * + * + * @generated + * @ordered + */ + int ATTRIBUTE__NAME = EcorePackage.EATTRIBUTE__NAME; + + /** + * The feature id for the 'Ordered' attribute. + * + * + * @generated + * @ordered + */ + int ATTRIBUTE__ORDERED = EcorePackage.EATTRIBUTE__ORDERED; + + /** + * The feature id for the 'Unique' attribute. + * + * + * @generated + * @ordered + */ + int ATTRIBUTE__UNIQUE = EcorePackage.EATTRIBUTE__UNIQUE; + + /** + * The feature id for the 'Lower Bound' attribute. + * + * + * @generated + * @ordered + */ + int ATTRIBUTE__LOWER_BOUND = EcorePackage.EATTRIBUTE__LOWER_BOUND; + + /** + * The feature id for the 'Upper Bound' attribute. + * + * + * @generated + * @ordered + */ + int ATTRIBUTE__UPPER_BOUND = EcorePackage.EATTRIBUTE__UPPER_BOUND; + + /** + * The feature id for the 'Many' attribute. + * + * + * @generated + * @ordered + */ + int ATTRIBUTE__MANY = EcorePackage.EATTRIBUTE__MANY; + + /** + * The feature id for the 'Required' attribute. + * + * + * @generated + * @ordered + */ + int ATTRIBUTE__REQUIRED = EcorePackage.EATTRIBUTE__REQUIRED; + + /** + * The feature id for the 'EType' reference. + * + * + * @generated + * @ordered + */ + int ATTRIBUTE__ETYPE = EcorePackage.EATTRIBUTE__ETYPE; + + /** + * The feature id for the 'Changeable' attribute. + * + * + * @generated + * @ordered + */ + int ATTRIBUTE__CHANGEABLE = EcorePackage.EATTRIBUTE__CHANGEABLE; + + /** + * The feature id for the 'Volatile' attribute. + * + * + * @generated + * @ordered + */ + int ATTRIBUTE__VOLATILE = EcorePackage.EATTRIBUTE__VOLATILE; + + /** + * The feature id for the 'Transient' attribute. + * + * + * @generated + * @ordered + */ + int ATTRIBUTE__TRANSIENT = EcorePackage.EATTRIBUTE__TRANSIENT; + + /** + * The feature id for the 'Default Value Literal' attribute. + * + * + * @generated + * @ordered + */ + int ATTRIBUTE__DEFAULT_VALUE_LITERAL = EcorePackage.EATTRIBUTE__DEFAULT_VALUE_LITERAL; + + /** + * The feature id for the 'Default Value' attribute. + * + * + * @generated + * @ordered + */ + int ATTRIBUTE__DEFAULT_VALUE = EcorePackage.EATTRIBUTE__DEFAULT_VALUE; + + /** + * The feature id for the 'Unsettable' attribute. + * + * + * @generated + * @ordered + */ + int ATTRIBUTE__UNSETTABLE = EcorePackage.EATTRIBUTE__UNSETTABLE; + + /** + * The feature id for the 'Derived' attribute. + * + * + * @generated + * @ordered + */ + int ATTRIBUTE__DERIVED = EcorePackage.EATTRIBUTE__DERIVED; + + /** + * The feature id for the 'EContaining Class' container reference. + * + * + * @generated + * @ordered + */ + int ATTRIBUTE__ECONTAINING_CLASS = EcorePackage.EATTRIBUTE__ECONTAINING_CLASS; + + /** + * The feature id for the 'ID' attribute. + * + * + * @generated + * @ordered + */ + int ATTRIBUTE__ID = EcorePackage.EATTRIBUTE__ID; + + /** + * The feature id for the 'EAttribute Type' reference. + * + * + * @generated + * @ordered + */ + int ATTRIBUTE__EATTRIBUTE_TYPE = EcorePackage.EATTRIBUTE__EATTRIBUTE_TYPE; + + /** + * The number of structural features of the 'Attribute' class. + * + * + * @generated + * @ordered + */ + int ATTRIBUTE_FEATURE_COUNT = EcorePackage.EATTRIBUTE_FEATURE_COUNT + 0; + + /** + * The meta object id for the '{@link org.apache.tuscany.sdo.impl.ReferenceImpl Reference}' class. + * + * + * @see org.apache.tuscany.sdo.impl.ReferenceImpl + * @see org.apache.tuscany.sdo.impl.SDOPackageImpl#getReference() + * @generated + */ + int REFERENCE = 12; + + /** + * The feature id for the 'EAnnotations' containment reference list. + * + * + * @generated + * @ordered + */ + int REFERENCE__EANNOTATIONS = EcorePackage.EREFERENCE__EANNOTATIONS; + + /** + * The feature id for the 'Name' attribute. + * + * + * @generated + * @ordered + */ + int REFERENCE__NAME = EcorePackage.EREFERENCE__NAME; + + /** + * The feature id for the 'Ordered' attribute. + * + * + * @generated + * @ordered + */ + int REFERENCE__ORDERED = EcorePackage.EREFERENCE__ORDERED; + + /** + * The feature id for the 'Unique' attribute. + * + * + * @generated + * @ordered + */ + int REFERENCE__UNIQUE = EcorePackage.EREFERENCE__UNIQUE; + + /** + * The feature id for the 'Lower Bound' attribute. + * + * + * @generated + * @ordered + */ + int REFERENCE__LOWER_BOUND = EcorePackage.EREFERENCE__LOWER_BOUND; + + /** + * The feature id for the 'Upper Bound' attribute. + * + * + * @generated + * @ordered + */ + int REFERENCE__UPPER_BOUND = EcorePackage.EREFERENCE__UPPER_BOUND; + + /** + * The feature id for the 'Many' attribute. + * + * + * @generated + * @ordered + */ + int REFERENCE__MANY = EcorePackage.EREFERENCE__MANY; + + /** + * The feature id for the 'Required' attribute. + * + * + * @generated + * @ordered + */ + int REFERENCE__REQUIRED = EcorePackage.EREFERENCE__REQUIRED; + + /** + * The feature id for the 'EType' reference. + * + * + * @generated + * @ordered + */ + int REFERENCE__ETYPE = EcorePackage.EREFERENCE__ETYPE; + + /** + * The feature id for the 'Changeable' attribute. + * + * + * @generated + * @ordered + */ + int REFERENCE__CHANGEABLE = EcorePackage.EREFERENCE__CHANGEABLE; + + /** + * The feature id for the 'Volatile' attribute. + * + * + * @generated + * @ordered + */ + int REFERENCE__VOLATILE = EcorePackage.EREFERENCE__VOLATILE; + + /** + * The feature id for the 'Transient' attribute. + * + * + * @generated + * @ordered + */ + int REFERENCE__TRANSIENT = EcorePackage.EREFERENCE__TRANSIENT; + + /** + * The feature id for the 'Default Value Literal' attribute. + * + * + * @generated + * @ordered + */ + int REFERENCE__DEFAULT_VALUE_LITERAL = EcorePackage.EREFERENCE__DEFAULT_VALUE_LITERAL; + + /** + * The feature id for the 'Default Value' attribute. + * + * + * @generated + * @ordered + */ + int REFERENCE__DEFAULT_VALUE = EcorePackage.EREFERENCE__DEFAULT_VALUE; + + /** + * The feature id for the 'Unsettable' attribute. + * + * + * @generated + * @ordered + */ + int REFERENCE__UNSETTABLE = EcorePackage.EREFERENCE__UNSETTABLE; + + /** + * The feature id for the 'Derived' attribute. + * + * + * @generated + * @ordered + */ + int REFERENCE__DERIVED = EcorePackage.EREFERENCE__DERIVED; + + /** + * The feature id for the 'EContaining Class' container reference. + * + * + * @generated + * @ordered + */ + int REFERENCE__ECONTAINING_CLASS = EcorePackage.EREFERENCE__ECONTAINING_CLASS; + + /** + * The feature id for the 'Containment' attribute. + * + * + * @generated + * @ordered + */ + int REFERENCE__CONTAINMENT = EcorePackage.EREFERENCE__CONTAINMENT; + + /** + * The feature id for the 'Container' attribute. + * + * + * @generated + * @ordered + */ + int REFERENCE__CONTAINER = EcorePackage.EREFERENCE__CONTAINER; + + /** + * The feature id for the 'Resolve Proxies' attribute. + * + * + * @generated + * @ordered + */ + int REFERENCE__RESOLVE_PROXIES = EcorePackage.EREFERENCE__RESOLVE_PROXIES; + + /** + * The feature id for the 'EOpposite' reference. + * + * + * @generated + * @ordered + */ + int REFERENCE__EOPPOSITE = EcorePackage.EREFERENCE__EOPPOSITE; + + /** + * The feature id for the 'EReference Type' reference. + * + * + * @generated + * @ordered + */ + int REFERENCE__EREFERENCE_TYPE = EcorePackage.EREFERENCE__EREFERENCE_TYPE; + + /** + * The number of structural features of the 'Reference' class. + * + * + * @generated + * @ordered + */ + int REFERENCE_FEATURE_COUNT = EcorePackage.EREFERENCE_FEATURE_COUNT + 0; + + /** + * The meta object id for the '{@link org.apache.tuscany.sdo.impl.EnumImpl Enum}' class. + * + * + * @see org.apache.tuscany.sdo.impl.EnumImpl + * @see org.apache.tuscany.sdo.impl.SDOPackageImpl#getEnum() + * @generated + */ + int ENUM = 13; + + /** + * The feature id for the 'EAnnotations' containment reference list. + * + * + * @generated + * @ordered + */ + int ENUM__EANNOTATIONS = EcorePackage.EENUM__EANNOTATIONS; + + /** + * The feature id for the 'Name' attribute. + * + * + * @generated + * @ordered + */ + int ENUM__NAME = EcorePackage.EENUM__NAME; + + /** + * The feature id for the 'Instance Class Name' attribute. + * + * + * @generated + * @ordered + */ + int ENUM__INSTANCE_CLASS_NAME = EcorePackage.EENUM__INSTANCE_CLASS_NAME; + + /** + * The feature id for the 'Instance Class' attribute. + * + * + * @generated + * @ordered + */ + int ENUM__INSTANCE_CLASS = EcorePackage.EENUM__INSTANCE_CLASS; + + /** + * The feature id for the 'Default Value' attribute. + * + * + * @generated + * @ordered + */ + int ENUM__DEFAULT_VALUE = EcorePackage.EENUM__DEFAULT_VALUE; + + /** + * The feature id for the 'EPackage' container reference. + * + * + * @generated + * @ordered + */ + int ENUM__EPACKAGE = EcorePackage.EENUM__EPACKAGE; + + /** + * The feature id for the 'Serializable' attribute. + * + * + * @generated + * @ordered + */ + int ENUM__SERIALIZABLE = EcorePackage.EENUM__SERIALIZABLE; + + /** + * The feature id for the 'ELiterals' containment reference list. + * + * + * @generated + * @ordered + */ + int ENUM__ELITERALS = EcorePackage.EENUM__ELITERALS; + + /** + * The number of structural features of the 'Enum' class. + * + * + * @generated + * @ordered + */ + int ENUM_FEATURE_COUNT = EcorePackage.EENUM_FEATURE_COUNT + 0; + + /** + * The meta object id for the '{@link org.apache.tuscany.sdo.impl.DynamicDataObjectImpl Dynamic Data Object}' class. + * + * + * @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 'Dynamic Data Object' class. + * + * + * @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 Store Data Object}' class. + * + * + * @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 'Store Data Object' class. + * + * + * @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 Dynamic Store Data Object}' class. + * + * + * @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 'Dynamic Store Data Object' class. + * + * + * @generated + * @ordered + */ + int DYNAMIC_STORE_DATA_OBJECT_FEATURE_COUNT = STORE_DATA_OBJECT_FEATURE_COUNT + 0; + + /** + * The meta object id for the '{@link org.apache.tuscany.sdo.impl.ExtensibleDataObjectImpl Extensible Data Object}' class. + * + * + * @see org.apache.tuscany.sdo.impl.ExtensibleDataObjectImpl + * @see org.apache.tuscany.sdo.impl.SDOPackageImpl#getExtensibleDataObject() + * @generated + */ + int EXTENSIBLE_DATA_OBJECT = 17; + + /** + * The number of structural features of the 'Extensible Data Object' class. + * + * + * @generated + * @ordered + */ + int EXTENSIBLE_DATA_OBJECT_FEATURE_COUNT = DATA_OBJECT_FEATURE_COUNT + 0; + + /** + * The meta object id for the 'EJava List' data type. + * + * + * @see java.util.List + * @see org.apache.tuscany.sdo.impl.SDOPackageImpl#getEJavaList() + * @generated + */ + int EJAVA_LIST = 18; + + /** + * The meta object id for the 'EObject Stream Exception' data type. + * + * + * @see java.io.ObjectStreamException + * @see org.apache.tuscany.sdo.impl.SDOPackageImpl#getEObjectStreamException() + * @generated + */ + int EOBJECT_STREAM_EXCEPTION = 19; + + + /** + * Returns the meta object for class '{@link commonj.sdo.ChangeSummary Change Summary}'. + * + * + * @return the meta object for class 'Change Summary'. + * @see commonj.sdo.ChangeSummary + * @model instanceClass="commonj.sdo.ChangeSummary" + * @generated + */ + EClass getChangeSummary(); + + /** + * Returns the meta object for the reference '{@link commonj.sdo.ChangeSummary#getEDataGraph EData Graph}'. + * + * + * @return the meta object for the reference 'EData Graph'. + * @see commonj.sdo.ChangeSummary#getEDataGraph() + * @see #getChangeSummary() + * @generated + */ + EReference getChangeSummary_EDataGraph(); + +// TODO T-153 +// /** +// * Returns the meta object for the reference '{@link commonj.sdo.ChangeSummary#getEDataGraph EData Graph}'. +// * +// * +// * @return the meta object for the reference 'EData Graph'. +// * @see commonj.sdo.ChangeSummary#getEDataGraph() +// * @see #getChangeSummary() +// * *handcrafted but could be generated +// */ +// EReference getChangeSummary_EDataObject(); + + + /** + * Returns the meta object for class '{@link commonj.sdo.ChangeSummary.Setting Change Summary Setting}'. + * + * + * @return the meta object for class 'Change Summary Setting'. + * @see commonj.sdo.ChangeSummary.Setting + * @model instanceClass="commonj.sdo.ChangeSummary$Setting" + * @generated + */ + EClass getChangeSummarySetting(); + + /** + * Returns the meta object for class '{@link commonj.sdo.DataGraph Data Graph}'. + * + * + * @return the meta object for class 'Data Graph'. + * @see commonj.sdo.DataGraph + * @model instanceClass="commonj.sdo.DataGraph" + * @generated + */ + EClass getDataGraph(); + + /** + * Returns the meta object for the attribute '{@link commonj.sdo.DataGraph#getResourceSet Resource Set}'. + * + * + * @return the meta object for the attribute 'Resource Set'. + * @see commonj.sdo.DataGraph#getResourceSet() + * @see #getDataGraph() + * @generated + */ + EAttribute getDataGraph_ResourceSet(); + + /** + * Returns the meta object for the attribute '{@link commonj.sdo.DataGraph#getRootResource Root Resource}'. + * + * + * @return the meta object for the attribute 'Root Resource'. + * @see commonj.sdo.DataGraph#getRootResource() + * @see #getDataGraph() + * @generated + */ + EAttribute getDataGraph_RootResource(); + + /** + * Returns the meta object for the reference '{@link commonj.sdo.DataGraph#getEChangeSummary EChange Summary}'. + * + * + * @return the meta object for the reference 'EChange Summary'. + * @see commonj.sdo.DataGraph#getEChangeSummary() + * @see #getDataGraph() + * @generated + */ + EReference getDataGraph_EChangeSummary(); + + /** + * Returns the meta object for the reference '{@link commonj.sdo.DataGraph#getERootObject ERoot Object}'. + * + * + * @return the meta object for the reference 'ERoot Object'. + * @see commonj.sdo.DataGraph#getERootObject() + * @see #getDataGraph() + * @generated + */ + EReference getDataGraph_ERootObject(); + + /** + * Returns the meta object for class '{@link commonj.sdo.DataObject Data Object}'. + * + * + * @return the meta object for class 'Data Object'. + * @see commonj.sdo.DataObject + * @model instanceClass="commonj.sdo.DataObject" + * @generated + */ + EClass getDataObject(); + + /** + * Returns the meta object for class '{@link commonj.sdo.Property Property}'. + * + * + * @return the meta object for class 'Property'. + * @see commonj.sdo.Property + * @model instanceClass="commonj.sdo.Property" + * @generated + */ + EClass getProperty(); + + /** + * Returns the meta object for class '{@link commonj.sdo.Sequence Sequence}'. + * + * + * @return the meta object for class 'Sequence'. + * @see commonj.sdo.Sequence + * @model instanceClass="commonj.sdo.Sequence" + * @generated + */ + EClass getSequence(); + + /** + * Returns the meta object for class '{@link commonj.sdo.Type Type}'. + * + * + * @return the meta object for class 'Type'. + * @see commonj.sdo.Type + * @model instanceClass="commonj.sdo.Type" + * @generated + */ + EClass getType(); + + /** + * Returns the meta object for class '{@link org.apache.tuscany.sdo.AnyTypeDataObject Any Type Data Object}'. + * + * + * @return the meta object for class 'Any Type Data Object'. + * @see org.apache.tuscany.sdo.AnyTypeDataObject + * @generated + */ + EClass getAnyTypeDataObject(); + + /** + * Returns the meta object for class '{@link org.apache.tuscany.sdo.SimpleAnyTypeDataObject Simple Any Type Data Object}'. + * + * + * @return the meta object for class 'Simple Any Type Data Object'. + * @see org.apache.tuscany.sdo.SimpleAnyTypeDataObject + * @generated + */ + EClass getSimpleAnyTypeDataObject(); + + /** + * Returns the meta object for class '{@link commonj.sdo.Type Class}'. + * + * + * @return the meta object for class 'Class'. + * @see commonj.sdo.Type + * @model instanceClass="commonj.sdo.Type" + * @generated + */ + EClass getClass_(); + + /** + * Returns the meta object for class '{@link commonj.sdo.Type Data Type}'. + * + * + * @return the meta object for class 'Data Type'. + * @see commonj.sdo.Type + * @model instanceClass="commonj.sdo.Type" + * @generated + */ + EClass getDataType(); + + /** + * Returns the meta object for class '{@link commonj.sdo.Property Attribute}'. + * + * + * @return the meta object for class 'Attribute'. + * @see commonj.sdo.Property + * @model instanceClass="commonj.sdo.Property" + * @generated + */ + EClass getAttribute(); + + /** + * Returns the meta object for class '{@link commonj.sdo.Property Reference}'. + * + * + * @return the meta object for class 'Reference'. + * @see commonj.sdo.Property + * @model instanceClass="commonj.sdo.Property" + * @generated + */ + EClass getReference(); + + /** + * Returns the meta object for class '{@link commonj.sdo.Type Enum}'. + * + * + * @return the meta object for class 'Enum'. + * @see commonj.sdo.Type + * @model instanceClass="commonj.sdo.Type" + * @generated + */ + EClass getEnum(); + + /** + * Returns the meta object for class '{@link commonj.sdo.DataObject Dynamic Data Object}'. + * + * + * @return the meta object for class 'Dynamic Data Object'. + * @see commonj.sdo.DataObject + * @model instanceClass="commonj.sdo.DataObject" + * @generated + */ + EClass getDynamicDataObject(); + + /** + * Returns the meta object for class '{@link commonj.sdo.DataObject Store Data Object}'. + * + * + * @return the meta object for class 'Store Data Object'. + * @see commonj.sdo.DataObject + * @model instanceClass="commonj.sdo.DataObject" + * @generated + */ + EClass getStoreDataObject(); + + /** + * Returns the meta object for class '{@link commonj.sdo.DataObject Dynamic Store Data Object}'. + * + * + * @return the meta object for class 'Dynamic Store Data Object'. + * @see commonj.sdo.DataObject + * @model instanceClass="commonj.sdo.DataObject" + * @generated + */ + EClass getDynamicStoreDataObject(); + + /** + * Returns the meta object for class '{@link commonj.sdo.DataObject Extensible Data Object}'. + * + * + * @return the meta object for class 'Extensible Data Object'. + * @see commonj.sdo.DataObject + * @model instanceClass="commonj.sdo.DataObject" + * @generated + */ + EClass getExtensibleDataObject(); + + /** + * Returns the meta object for data type '{@link java.util.List EJava List}'. + * + * + * @return the meta object for data type 'EJava List'. + * @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 EObject Stream Exception}'. + * + * + * @return the meta object for data type 'EObject Stream Exception'. + * @see java.io.ObjectStreamException + * @model instanceClass="java.io.ObjectStreamException" serializable="false" + * @generated + */ + EDataType getEObjectStreamException(); + + /** + * Returns the factory that creates the instances of the model. + * + * + * @return the factory that creates the instances of the model. + * @generated + */ + SDOFactory getSDOFactory(); + +} //SDOPackage diff --git a/sdo-java/trunk/impl/src/main/java/org/apache/tuscany/sdo/SDOTypeVisitor.java b/sdo-java/trunk/impl/src/main/java/org/apache/tuscany/sdo/SDOTypeVisitor.java new file mode 100644 index 0000000000..5d3640100c --- /dev/null +++ b/sdo-java/trunk/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/sdo-java/trunk/impl/src/main/java/org/apache/tuscany/sdo/SimpleAnyTypeDataObject.java b/sdo-java/trunk/impl/src/main/java/org/apache/tuscany/sdo/SimpleAnyTypeDataObject.java new file mode 100644 index 0000000000..93ff2ebf14 --- /dev/null +++ b/sdo-java/trunk/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; + +/** + * + * A representation of the model object 'Simple Any Type Data Object'. + * + * + * + * @see org.apache.tuscany.sdo.SDOPackage#getSimpleAnyTypeDataObject() + * @model extendedMetaData="kind='simple'" + * @generated + */ +public interface SimpleAnyTypeDataObject extends AnyTypeDataObject, SimpleAnyType { +} // SimpleAnyTypeDataObject diff --git a/sdo-java/trunk/impl/src/main/java/org/apache/tuscany/sdo/codegen/BytecodeInterfaceGenerator.java b/sdo-java/trunk/impl/src/main/java/org/apache/tuscany/sdo/codegen/BytecodeInterfaceGenerator.java new file mode 100644 index 0000000000..3fe2cd952e --- /dev/null +++ b/sdo-java/trunk/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/sdo-java/trunk/impl/src/main/java/org/apache/tuscany/sdo/codegen/GenerationException.java b/sdo-java/trunk/impl/src/main/java/org/apache/tuscany/sdo/codegen/GenerationException.java new file mode 100644 index 0000000000..3d645be1da --- /dev/null +++ b/sdo-java/trunk/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/sdo-java/trunk/impl/src/main/java/org/apache/tuscany/sdo/codegen/JavaInterfaceGenerator.java b/sdo-java/trunk/impl/src/main/java/org/apache/tuscany/sdo/codegen/JavaInterfaceGenerator.java new file mode 100644 index 0000000000..dc88a0d60d --- /dev/null +++ b/sdo-java/trunk/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 1)) + { + if (groupName == null) + { + groupName = name + "Group"; + } + eStructuralFeature = + createFeature + (eClass, + groupName, + ecorePackage.getEFeatureMapEntry(), + xsdParticle, + effectiveOccurrence.minOccurs, + effectiveOccurrence.maxOccurs); + + eStructuralFeature.setChangeable(true); + + extendedMetaData.setFeatureKind(eStructuralFeature, ExtendedMetaData.GROUP_FEATURE); + extendedMetaData.setName(eStructuralFeature, xsdElementDeclaration.getName() + ":group"); + + if (group != null) + { + extendedMetaData.setGroup(eStructuralFeature, group); + eStructuralFeature.setDerived(true); + eStructuralFeature.setTransient(true); + eStructuralFeature.setVolatile(true); + } + else if (isMixed) + { + eStructuralFeature.setDerived(true); + eStructuralFeature.setTransient(true); + eStructuralFeature.setVolatile(true); + } + else if (globalGroup != null) + { + extendedMetaData.setGroup(eStructuralFeature, globalGroup); + eStructuralFeature.setDerived(true); + eStructuralFeature.setTransient(true); + eStructuralFeature.setVolatile(true); + } + + group = eStructuralFeature; + } + + eStructuralFeature = + createFeature(eClass, xsdElementDeclaration, name, xsdParticle, effectiveOccurrence.minOccurs, effectiveOccurrence.maxOccurs); + // 51210 + // particleMap.put(xsdParticle, eStructuralFeature); + + // If the group is turned off, we better make the feature changeable. + // + if (!eStructuralFeature.isChangeable() && group == null && getEcoreAttribute(xsdParticle, xsdElementDeclaration, "changeable") == null) + { + eStructuralFeature.setChangeable(true); + } + } + } + + if (eStructuralFeature != null) + { + if (group != null) + { + extendedMetaData.setGroup(eStructuralFeature, group); + eStructuralFeature.setDerived(true); + eStructuralFeature.setTransient(true); + eStructuralFeature.setVolatile(true); + } + else if (isMixed) + { + eStructuralFeature.setDerived(true); + eStructuralFeature.setTransient(true); + eStructuralFeature.setVolatile(true); + } + else if (globalGroup != null) + { + extendedMetaData.setGroup(eStructuralFeature, globalGroup); + eStructuralFeature.setDerived(true); + eStructuralFeature.setTransient(true); + eStructuralFeature.setVolatile(true); + } + } + } + + // 51210 + // contentParticle = computeParticleConstraints(eClass, particleMap, (XSDParticle)xsdComplexTypeDefinition.getContent()); + } + } + + // 51210 + // EAnnotation attributeParticle = null; + // if (isRestriction) + // { + // attributeParticle = ecoreFactory.createEAnnotation(); + // attributeParticle.setSource("attributes"); + // } + + XSDWildcard baseXSDWildcard = null; + Collection baseAttributeUses = Collections.EMPTY_LIST; + Map baseAttributeURIs = new HashMap(); + if (baseTypeDefinition instanceof XSDComplexTypeDefinition) + { + XSDComplexTypeDefinition complexBaseTypeDefinition = (XSDComplexTypeDefinition)baseTypeDefinition; + baseXSDWildcard = complexBaseTypeDefinition.getAttributeWildcard(); + baseAttributeUses = complexBaseTypeDefinition.getAttributeUses(); + for (Iterator i = baseAttributeUses.iterator(); i.hasNext(); ) + { + XSDAttributeUse xsdAttributeUse = (XSDAttributeUse)i.next(); + baseAttributeURIs.put(xsdAttributeUse.getAttributeDeclaration().getURI(), xsdAttributeUse); + } + } + + for (Iterator i = getAttributeUses(xsdComplexTypeDefinition).iterator(); i.hasNext(); ) + { + XSDAttributeUse xsdAttributeUse = (XSDAttributeUse)i.next(); + XSDAttributeDeclaration xsdAttributeDeclaration = xsdAttributeUse.getAttributeDeclaration(); + if (baseAttributeURIs.remove(xsdAttributeDeclaration.getURI()) == null) + { + String name = getEcoreAttribute(xsdAttributeUse, "name"); + if (name == null) + { + name = getEcoreAttribute(xsdAttributeDeclaration, "name"); + } + if (name == null) + { + name = validName(xsdAttributeDeclaration.getName(), true); + } + + EStructuralFeature eStructuralFeature = + createFeature(eClass, xsdAttributeDeclaration, name, xsdAttributeUse, xsdAttributeUse.isRequired()); + + if (isRestriction) + { + EStructuralFeature attributeWildcardEStructuralFeature = + extendedMetaData.getAttributeWildcardAffiliation + (baseClass, xsdAttributeDeclaration.getTargetNamespace(), xsdAttributeDeclaration.getName()); + if (attributeWildcardEStructuralFeature != null) + { + extendedMetaData.setGroup(eStructuralFeature, attributeWildcardEStructuralFeature); + eStructuralFeature.setDerived(true); + eStructuralFeature.setTransient(true); + eStructuralFeature.setVolatile(true); + } + } + } + /* 51210 + else if (isRestriction && !baseAttributeUses.contains(xsdAttributeUse)) + { + EStructuralFeature eStructuralFeature = + extendedMetaData.getAttribute(eClass, xsdAttributeDeclaration.getTargetNamespace(), xsdAttributeDeclaration.getName()); + if (eStructuralFeature != null) + { + EAnnotation attributeEAnnotation = ecoreFactory.createEAnnotation(); + if (xsdAttributeUse.isRequired()) + { + attributeEAnnotation.getDetails().put("minOccurs", "1"); + } + attributeEAnnotation.getReferences().add(eStructuralFeature); + + if (xsdAttributeDeclaration.getTypeDefinition() != null) + { + EClassifier type = getEClassifier(xsdAttributeDeclaration.getTypeDefinition()); + if (type != eStructuralFeature.getEType() && type != null) + { + attributeEAnnotation.getReferences().add(type); + } + } + + attributeParticle.getContents().add(attributeEAnnotation); + } + } + */ + } + + /* 51210 + if (isRestriction && !baseAttributeURIs.isEmpty()) + { + for (Iterator i = baseAttributeURIs.values().iterator(); i.hasNext(); ) + { + XSDAttributeUse xsdAttributeUse = (XSDAttributeUse)i.next(); + XSDAttributeDeclaration xsdAttributeDeclaration = xsdAttributeUse.getAttributeDeclaration(); + EStructuralFeature eStructuralFeature = + extendedMetaData.getAttribute(eClass, xsdAttributeDeclaration.getTargetNamespace(), xsdAttributeDeclaration.getName()); + if (eStructuralFeature != null) + { + EAnnotation attributeEAnnotation = ecoreFactory.createEAnnotation(); + attributeEAnnotation.getReferences().add(eStructuralFeature); + attributeEAnnotation.getDetails().put("maxOccurs", "0"); + attributeParticle.getContents().add(attributeEAnnotation); + } + } + } + */ + + XSDWildcard xsdWildcard = xsdComplexTypeDefinition.getAttributeWildcard(); + if (xsdWildcard != null && baseXSDWildcard != xsdWildcard || XSDConstants.isURType(xsdComplexTypeDefinition)) + { + if (isRestriction && !XSDConstants.isURType(xsdComplexTypeDefinition)) + { + // 51210 + // attributeParticle.getDetails().put + // ("wildcard", BasicExtendedMetaData.getEncodedWildcards(xsdComplexTypeDefinition.getTargetNamespace(), getWildcards(xsdWildcard))); + } + else + { + String name = getEcoreAttribute(xsdWildcard, "name"); + if (name == null) + { + name = "anyAttribute"; + } + createFeature + (eClass, + name, + ecorePackage.getEFeatureMapEntry(), + xsdWildcard, + 0, + -1); + } + } + + if (isRestriction) + { + // 51210 + // EAnnotation restrictionParticle = ecoreFactory.createEAnnotation(); + // restrictionParticle.setSource("restriction"); + // if (contentParticle != null) + // { + // restrictionParticle.getContents().add(contentParticle); + // } + // if (!attributeParticle.getContents().isEmpty() || !attributeParticle.getDetails().isEmpty()) + // { + // restrictionParticle.getContents().add(attributeParticle); + // } + // contentParticle = restrictionParticle; + + int baseContentKind = extendedMetaData.getContentKind((EClass)eClass.getESuperTypes().get(0)); + if (baseContentKind == ExtendedMetaData.MIXED_CONTENT && + xsdComplexTypeDefinition.getContentTypeCategory() == XSDContentTypeCategory.SIMPLE_LITERAL) + { + extendedMetaData.setContentKind(eClass, ExtendedMetaData.SIMPLE_CONTENT); + EStructuralFeature eStructuralFeature = + createFeature + (eClass, + "rawValue", + getBuiltInEClassifier(xsdComplexTypeDefinition.getSchema().getSchemaForSchemaNamespace(), "string"), + null, + 0, + 1); + eStructuralFeature.setDerived(true); + eStructuralFeature.setTransient(true); + eStructuralFeature.setVolatile(true); + + eStructuralFeature = + createFeature + (eClass, + "value", + getBuiltInEClassifier(xsdComplexTypeDefinition.getSchema().getSchemaForSchemaNamespace(), "anySimpleType"), + null, + 0, + 1); + eStructuralFeature.setDerived(true); + eStructuralFeature.setTransient(true); + eStructuralFeature.setVolatile(true); + + if ("SimpleAnyType".equals(eClass.getName()) && XMLTypePackage.eNS_URI.equals(eClass.getEPackage().getNsURI())) + { + eStructuralFeature = + createFeature + (eClass, + "instanceType", + ecorePackage.getEDataType(), + null, + 1, + 1); + + ((EReference)eStructuralFeature).setResolveProxies(false); + } + } + else + { + extendedMetaData.setContentKind(eClass, baseContentKind); + } + } + + // 51210 + // extendedMetaData.setContent(eClass, contentParticle); + + XSDAnnotation xsdAnnotation = xsdComplexTypeDefinition.getAnnotation(); + if (xsdAnnotation != null) + { + List applicationInformationList = xsdAnnotation.getApplicationInformation(EcorePackage.eNS_URI); + for (Iterator i = applicationInformationList.iterator(); i.hasNext(); ) + { + Element applicationInformation = (Element)i.next(); + if ("operations".equals(applicationInformation.getAttributeNS(EcorePackage.eNS_URI, "key"))) + { + for (Iterator j = getElements(applicationInformation, "operation").iterator(); j.hasNext(); ) + { + EOperation eOperation = ecoreFactory.createEOperation(); + Element operation = (Element)j.next(); + String operationName = operation.getAttributeNS(null, "name"); + eOperation.setName(operationName); + XSDTypeDefinition returnType = getEcoreTypeQNameAttribute(xsdComplexTypeDefinition, operation, null, "type"); + if (returnType != null) + { + EClassifier returnEType = getEClassifier(returnType); + eOperation.setEType(returnEType); + } + + List exceptions = getEcoreTypeQNamesAttribute(xsdComplexTypeDefinition, operation, null, "exceptions"); + for (Iterator k = exceptions.iterator(); k.hasNext(); ) + { + XSDTypeDefinition exceptionTypeDefinition = (XSDTypeDefinition)k.next(); + eOperation.getEExceptions().add(getEClassifier(exceptionTypeDefinition)); + } + + for (Iterator k = getElements(operation, "parameter").iterator(); k.hasNext(); ) + { + EParameter eParameter = ecoreFactory.createEParameter(); + Element parameter = (Element)k.next(); + String paramaterName = parameter.getAttributeNS(null, "name"); + XSDTypeDefinition parameterType = getEcoreTypeQNameAttribute(xsdComplexTypeDefinition, parameter, null, "type"); + EClassifier parameterEType = getEClassifier(parameterType); + eParameter.setName(paramaterName); + eParameter.setEType(parameterEType); + + populateETypedElement(eParameter, parameter); + eOperation.getEParameters().add(eParameter); + } + + List body = getElements(operation, "body"); + if (!body.isEmpty()) + { + EcoreUtil.setAnnotation(eOperation, "http://www.eclipse.org/emf/2002/GenModel", "body", getText((Element)body.get(0))); + } + + populateETypedElement(eOperation, operation); + eClass.getEOperations().add(eOperation); + } + } + } + } + return eClass; + } + + private String getText(Element element) + { + StringBuffer text = new StringBuffer(); + for (Node node = element.getFirstChild(); node != null; node = node.getNextSibling()) + { + switch (node.getNodeType()) + { + case Node.TEXT_NODE: + case Node.CDATA_SECTION_NODE: + { + text.append(node.getNodeValue()); + } + } + } + return text.toString(); + } + + private List getElements(Element element, String localName) + { + List result = new ArrayList(); + for (Node node = element.getFirstChild(); node != null; node = node.getNextSibling()) + { + if (node.getNodeType() == Node.ELEMENT_NODE) + { + Element child = (Element)node; + if (localName.equals(child.getLocalName()) && child.getNamespaceURI() == null) + { + result.add(child); + } + } + } + return result; + } + + protected EStructuralFeature createFeature + (EClass eClass, String name, EClassifier type, XSDComponent xsdComponent, int minOccurs, int maxOccurs) + { + if (xsdComponent != null) + { + XSDSchema containingXSDSchema = xsdComponent.getSchema(); + if (containingXSDSchema != null && !xsdSchemas.contains(containingXSDSchema)) + { + xsdSchemas.add(containingXSDSchema); + addInput(containingXSDSchema); + validate(containingXSDSchema); + } + } + else if (extendedMetaData.getContentKind(eClass) == ExtendedMetaData.MIXED_CONTENT) + { + if (type == ecorePackage.getEFeatureMapEntry()) + { + EAttribute eAttribute = ecoreFactory.createEAttribute(); + setAnnotations(eAttribute, xsdComponent); + eAttribute.setName(Character.toLowerCase(name.charAt(0)) + name.substring(1)); + eAttribute.setUnique(false); + eAttribute.setEType(type); + eAttribute.setLowerBound(minOccurs); + eAttribute.setUpperBound(maxOccurs); + eClass.getEStructuralFeatures().add(eAttribute); + extendedMetaData.setFeatureKind(eAttribute, ExtendedMetaData.ELEMENT_WILDCARD_FEATURE); + extendedMetaData.setName(eAttribute, ":" + eAttribute.getName()); + return eAttribute; + } + else + { + EReference eReference = ecoreFactory.createEReference(); + setAnnotations(eReference, xsdComponent); + eReference.setName(name); + eReference.setEType(ecorePackage.getEStringToStringMapEntry()); + eReference.setLowerBound(0); + eReference.setUpperBound(-1); + eReference.setContainment(true); + eReference.setResolveProxies(false); + eReference.setTransient(true); + eClass.getEStructuralFeatures().add(eReference); + extendedMetaData.setFeatureKind(eReference, ExtendedMetaData.ATTRIBUTE_FEATURE); + return eReference; + } + } + + if (type instanceof EClass) + { + EReference eReference = ecoreFactory.createEReference(); + setAnnotations(eReference, xsdComponent); + eReference.setName(Character.toLowerCase(name.charAt(0)) + name.substring(1)); + eReference.setEType(type); + eReference.setLowerBound(minOccurs); + eReference.setUpperBound(maxOccurs); + + eClass.getEStructuralFeatures().add(eReference); + if (xsdComponent == null || xsdComponent instanceof XSDSimpleTypeDefinition) + { + extendedMetaData.setName(eReference, ":" + eClass.getEAllStructuralFeatures().indexOf(eReference)); + extendedMetaData.setFeatureKind(eReference, ExtendedMetaData.SIMPLE_FEATURE); + eReference.setResolveProxies(!isLocalReferenceType((XSDSimpleTypeDefinition)xsdComponent)); + } + else + { + map(xsdComponent, eReference); + if (xsdComponent instanceof XSDParticle) + { + eReference.setContainment(true); + eReference.setResolveProxies(false); + + XSDParticle xsdParticle = (XSDParticle)xsdComponent; + + XSDTerm xsdTerm = ((XSDParticle)xsdComponent).getTerm(); + if (xsdTerm instanceof XSDElementDeclaration) + { + XSDElementDeclaration xsdElementDeclaration = (XSDElementDeclaration)xsdTerm; + extendedMetaData.setFeatureKind(eReference, ExtendedMetaData.ELEMENT_FEATURE); + extendedMetaData.setName(eReference, xsdElementDeclaration.getName()); + extendedMetaData.setNamespace(eReference, xsdElementDeclaration.getTargetNamespace()); + + XSDTypeDefinition xsdType = getEffectiveTypeDefinition(xsdParticle, xsdElementDeclaration); + if (xsdType instanceof XSDSimpleTypeDefinition) + { + eReference.setContainment(false); + eReference.setResolveProxies(!isLocalReferenceType((XSDSimpleTypeDefinition)xsdType)); + } + + if (maxOccurs == 1 && xsdElementDeclaration.isNillable()) + { + eReference.setUnsettable(true); + } + + if (xsdElementDeclaration.isAbstract()) + { + eReference.setChangeable(false); + } + + String opposite = getEcoreAttribute(xsdParticle, "opposite"); + if (opposite != null) + { + eReferenceToOppositeNameMap.put(eReference, opposite); + } + } + else if (xsdTerm instanceof XSDWildcard) + { + // EATM shouldn't happen + XSDWildcard xsdWildcard = (XSDWildcard)xsdTerm; + extendedMetaData.setFeatureKind(eReference, ExtendedMetaData.ELEMENT_WILDCARD_FEATURE); + extendedMetaData.setWildcards(eReference, getWildcards(xsdWildcard)); + extendedMetaData.setProcessingKind(eReference, xsdWildcard.getProcessContents().getValue() + 1); + extendedMetaData.setName(eReference, ":" + eClass.getEAllStructuralFeatures().indexOf(eReference)); + } + else + { + extendedMetaData.setFeatureKind(eReference, ExtendedMetaData.GROUP_FEATURE); + extendedMetaData.setName(eReference, ":" + eClass.getEAllStructuralFeatures().indexOf(eReference)); + } + } + else if (xsdComponent instanceof XSDElementDeclaration) + { + XSDElementDeclaration xsdElementDeclaration = (XSDElementDeclaration)xsdComponent; + eReference.setContainment(true); + eReference.setResolveProxies(false); + extendedMetaData.setFeatureKind(eReference, ExtendedMetaData.ELEMENT_FEATURE); + extendedMetaData.setName(eReference, xsdElementDeclaration.getName()); + extendedMetaData.setNamespace(eReference, xsdElementDeclaration.getTargetNamespace()); + + XSDElementDeclaration substitutionGroupAffiliation = xsdElementDeclaration.getSubstitutionGroupAffiliation(); + if (substitutionGroupAffiliation != null) + { + EStructuralFeature affiliation = getEStructuralFeature(substitutionGroupAffiliation); + extendedMetaData.setAffiliation(eReference, affiliation); + } + XSDTypeDefinition xsdType = getEffectiveTypeDefinition(null, xsdElementDeclaration); + if (xsdType instanceof XSDSimpleTypeDefinition) + { + eReference.setResolveProxies(!isLocalReferenceType((XSDSimpleTypeDefinition)xsdType)); + } + + if (maxOccurs == 1 && xsdElementDeclaration.isNillable()) + { + eReference.setUnsettable(true); + } + + if (xsdElementDeclaration.isAbstract()) + { + eReference.setChangeable(false); + } + } + else if (xsdComponent instanceof XSDAttributeUse) + { + String opposite = getEcoreAttribute(xsdComponent, "opposite"); + if (opposite != null) + { + eReferenceToOppositeNameMap.put(eReference, opposite); + } + + XSDAttributeUse xsdAttributeUse = (XSDAttributeUse)xsdComponent; + XSDAttributeDeclaration xsdAttributeDeclaration = xsdAttributeUse.getAttributeDeclaration(); + extendedMetaData.setFeatureKind(eReference, ExtendedMetaData.ATTRIBUTE_FEATURE); + extendedMetaData.setName(eReference, xsdAttributeDeclaration.getName()); + extendedMetaData.setNamespace(eReference, xsdAttributeDeclaration.getTargetNamespace()); + eReference.setResolveProxies + (!isLocalReferenceType((XSDSimpleTypeDefinition)getEffectiveTypeDefinition(xsdAttributeUse, xsdAttributeDeclaration))); + } + else if (xsdComponent instanceof XSDAttributeDeclaration) + { + XSDAttributeDeclaration xsdAttributeDeclaration = (XSDAttributeDeclaration)xsdComponent; + extendedMetaData.setFeatureKind(eReference, ExtendedMetaData.ATTRIBUTE_FEATURE); + extendedMetaData.setName(eReference, xsdAttributeDeclaration.getName()); + extendedMetaData.setNamespace(eReference, xsdAttributeDeclaration.getTargetNamespace()); + eReference.setResolveProxies + (!isLocalReferenceType((XSDSimpleTypeDefinition)getEffectiveTypeDefinition(null, xsdAttributeDeclaration))); + } + } + + return eReference; + } + else + { + EAttribute eAttribute = ecoreFactory.createEAttribute(); + setAnnotations(eAttribute, xsdComponent); + eAttribute.setName(Character.toLowerCase(name.charAt(0)) + name.substring(1)); + eAttribute.setUnique(false); + eAttribute.setEType(type); + eAttribute.setLowerBound(minOccurs); + eAttribute.setUpperBound(maxOccurs); + eClass.getEStructuralFeatures().add(eAttribute); + + if (xsdComponent == null || xsdComponent instanceof XSDSimpleTypeDefinition) + { + extendedMetaData.setName(eAttribute, ":" + eClass.getEAllStructuralFeatures().indexOf(eAttribute)); + extendedMetaData.setFeatureKind(eAttribute, ExtendedMetaData.SIMPLE_FEATURE); + } + else + { + map(xsdComponent, eAttribute); + if (xsdComponent instanceof XSDAttributeUse) + { + XSDAttributeUse xsdAttributeUse = (XSDAttributeUse)xsdComponent; + XSDAttributeDeclaration xsdAttributeDeclaration = xsdAttributeUse.getAttributeDeclaration(); + extendedMetaData.setFeatureKind(eAttribute, ExtendedMetaData.ATTRIBUTE_FEATURE); + extendedMetaData.setName(eAttribute, xsdAttributeDeclaration.getName()); + extendedMetaData.setNamespace(eAttribute, xsdAttributeDeclaration.getTargetNamespace()); + + String defaultValue = getEcoreAttribute(xsdComponent, "default"); + if (defaultValue == null) + { + defaultValue = xsdAttributeUse.getLexicalValue(); + } + eAttribute.setDefaultValueLiteral(defaultValue); + initialize(eAttribute, (XSDSimpleTypeDefinition)getEffectiveTypeDefinition(xsdAttributeUse, xsdAttributeDeclaration)); + } + else if (xsdComponent instanceof XSDAttributeDeclaration) + { + XSDAttributeDeclaration xsdAttributeDeclaration = (XSDAttributeDeclaration)xsdComponent; + extendedMetaData.setFeatureKind(eAttribute, ExtendedMetaData.ATTRIBUTE_FEATURE); + extendedMetaData.setName(eAttribute, xsdAttributeDeclaration.getName()); + extendedMetaData.setNamespace(eAttribute, xsdAttributeDeclaration.getTargetNamespace()); + + eAttribute.setDefaultValueLiteral(xsdAttributeDeclaration.getLexicalValue()); + initialize(eAttribute, (XSDSimpleTypeDefinition)getEffectiveTypeDefinition(null, xsdAttributeDeclaration)); + } + else if (xsdComponent instanceof XSDParticle) + { + XSDTerm xsdTerm = ((XSDParticle)xsdComponent).getTerm(); + if (xsdTerm instanceof XSDElementDeclaration) + { + XSDElementDeclaration xsdElementDeclaration = (XSDElementDeclaration)xsdTerm; + extendedMetaData.setFeatureKind(eAttribute, ExtendedMetaData.ELEMENT_FEATURE); + extendedMetaData.setName(eAttribute, xsdElementDeclaration.getName()); + extendedMetaData.setNamespace(eAttribute, xsdElementDeclaration.getTargetNamespace()); + + eAttribute.setDefaultValueLiteral(xsdElementDeclaration.getLexicalValue()); + XSDTypeDefinition xsdType = getEffectiveTypeDefinition(xsdComponent, xsdElementDeclaration); + if (xsdType instanceof XSDSimpleTypeDefinition) + { + initialize(eAttribute, (XSDSimpleTypeDefinition)xsdType); + } + + if (xsdElementDeclaration.isNillable()) + { + if (!canSupportNull((EDataType)type)) + { + eAttribute.setEType(type = (EDataType)typeToTypeObjectMap.get(type)); + } + if (maxOccurs == 1) + { + eAttribute.setUnsettable(true); + } + } + + if (xsdElementDeclaration.isAbstract()) + { + eAttribute.setChangeable(false); + } + } + else if (xsdTerm instanceof XSDWildcard) + { + XSDWildcard xsdWildcard = (XSDWildcard)xsdTerm; + extendedMetaData.setFeatureKind(eAttribute, ExtendedMetaData.ELEMENT_WILDCARD_FEATURE); + extendedMetaData.setWildcards(eAttribute, getWildcards(xsdWildcard)); + extendedMetaData.setProcessingKind(eAttribute, xsdWildcard.getProcessContents().getValue() + 1); + extendedMetaData.setName(eAttribute, ":" + eClass.getEAllStructuralFeatures().indexOf(eAttribute)); + } + else + { + extendedMetaData.setFeatureKind(eAttribute, ExtendedMetaData.GROUP_FEATURE); + } + } + else if (xsdComponent instanceof XSDWildcard) + { + XSDWildcard xsdWildcard = (XSDWildcard)xsdComponent; + extendedMetaData.setFeatureKind(eAttribute, ExtendedMetaData.ATTRIBUTE_WILDCARD_FEATURE); + extendedMetaData.setWildcards(eAttribute, getWildcards(xsdWildcard)); + extendedMetaData.setProcessingKind(eAttribute, xsdWildcard.getProcessContents().getValue() + 1); + extendedMetaData.setName(eAttribute, ":" + eClass.getEAllStructuralFeatures().indexOf(eAttribute)); + } + else if (xsdComponent instanceof XSDElementDeclaration) + { + XSDElementDeclaration xsdElementDeclaration = (XSDElementDeclaration)xsdComponent; + extendedMetaData.setFeatureKind(eAttribute, ExtendedMetaData.ELEMENT_FEATURE); + extendedMetaData.setName(eAttribute, xsdElementDeclaration.getName()); + extendedMetaData.setNamespace(eAttribute, xsdElementDeclaration.getTargetNamespace()); + + eAttribute.setDefaultValueLiteral(xsdElementDeclaration.getLexicalValue()); + XSDTypeDefinition xsdType = getEffectiveTypeDefinition(null, xsdElementDeclaration); + if (xsdType instanceof XSDSimpleTypeDefinition) + { + initialize(eAttribute, (XSDSimpleTypeDefinition)xsdType); + } + + XSDElementDeclaration substitutionGroupAffiliation = xsdElementDeclaration.getSubstitutionGroupAffiliation(); + if (substitutionGroupAffiliation != null) + { + EStructuralFeature affiliation = getEStructuralFeature(substitutionGroupAffiliation); + extendedMetaData.setAffiliation(eAttribute, affiliation); + } + + if (xsdElementDeclaration.isNillable() && !canSupportNull((EDataType)type)) + { + eAttribute.setEType(type = (EDataType)typeToTypeObjectMap.get(type)); + if (maxOccurs == 1) + { + eAttribute.setUnsettable(true); + } + } + + if (xsdElementDeclaration.isAbstract()) + { + eAttribute.setChangeable(false); + } + } + } + + if (maxOccurs == 1 && (type.getDefaultValue() != null || eAttribute.getDefaultValueLiteral() != null)) + { + eAttribute.setUnsettable(true); + } + + return eAttribute; + } + } + + protected XSDTypeDefinition getEffectiveTypeDefinition(XSDComponent xsdComponent, XSDFeature xsdFeature) + { + return xsdFeature == null ? + ((XSDComplexTypeDefinition)xsdComponent.eContainer()).getSimpleType() : xsdFeature.getType(); + } + + protected EStructuralFeature createFeature + (EClass eClass, XSDElementDeclaration xsdElementDeclaration, String name, XSDComponent xsdComponent, int minOccurs, int maxOccurs) + { + XSDTypeDefinition elementTypeDefinition = getEffectiveTypeDefinition(xsdComponent, xsdElementDeclaration); + EClassifier eClassifier = getEClassifier(elementTypeDefinition); + + XSDTypeDefinition referenceType = getEcoreTypeQNameAttribute(xsdComponent, "reference"); + if (referenceType == null) + { + referenceType = getEcoreTypeQNameAttribute(xsdElementDeclaration, "reference"); + } + if (referenceType != null) + { + EClassifier referenceClassifier = getEClassifier(referenceType); + boolean needsHolder = false; + if (elementTypeDefinition instanceof XSDSimpleTypeDefinition) + { + XSDSimpleTypeDefinition xsdSimpleTypeDefinition = (XSDSimpleTypeDefinition)elementTypeDefinition; + if (xsdSimpleTypeDefinition.getVariety() == XSDVariety.LIST_LITERAL) + { + needsHolder = true; + + EPackage holderPackage = getEPackage(xsdElementDeclaration); + String holderName = xsdElementDeclaration.getName() + ":holder"; + EClass holderClass = (EClass)extendedMetaData.getType(holderPackage, holderName); + if (holderClass == null) + { + // Create a holder class like an anonymous complex type. + // + holderClass = ecoreFactory.createEClass(); + setAnnotations(holderClass, xsdElementDeclaration); + holderClass.setName(validName(holderName, true)); + extendedMetaData.setName(holderClass, holderName); + extendedMetaData.setContentKind(holderClass, ExtendedMetaData.SIMPLE_CONTENT); + + addToSortedList(holderPackage.getEClassifiers(), holderClass); + + EReference holderReference = + (EReference)createFeature + (holderClass, + "value", + referenceClassifier, + null, + 0, + -1); + + holderReference.setResolveProxies(!isLocalReferenceType(xsdSimpleTypeDefinition)); + } + referenceClassifier = holderClass; + } + } + EStructuralFeature result = + createFeature + (eClass, + name, + referenceClassifier, + xsdComponent, + minOccurs, + maxOccurs); + ((EReference)result).setContainment(needsHolder); + if (needsHolder) + { + ((EReference)result).setUnsettable(false); + ((EReference)result).setResolveProxies(false); + } + initialize(result, xsdElementDeclaration, xsdComponent); + return result; + } + else + { + EStructuralFeature result = + createFeature + (eClass, + name, + eClassifier, + xsdComponent, + minOccurs, + maxOccurs); + initialize(result, xsdElementDeclaration, xsdComponent); + return result; + } + } + + protected EStructuralFeature createFeature + (EClass eClass, XSDAttributeDeclaration xsdAttributeDeclaration, String name, XSDComponent xsdComponent, boolean isRequired) + { + XSDSimpleTypeDefinition attributeTypeDefinition = (XSDSimpleTypeDefinition)getEffectiveTypeDefinition(xsdComponent, xsdAttributeDeclaration); + if (attributeTypeDefinition == null) + { + attributeTypeDefinition = xsdComponent.getSchema().getSchemaForSchema().resolveSimpleTypeDefinition("anySimpleType"); + } + + XSDTypeDefinition referenceType = getEcoreTypeQNameAttribute(xsdComponent, "reference"); + if (referenceType == null && xsdAttributeDeclaration != null) + { + referenceType = getEcoreTypeQNameAttribute(xsdAttributeDeclaration, "reference"); + } + if (referenceType != null) + { + int lowerBound = isRequired ? 1 : 0; + int upperBound = 1; + if (attributeTypeDefinition.getVariety() == XSDVariety.LIST_LITERAL) + { + XSDLengthFacet xsdLengthFacet = attributeTypeDefinition.getEffectiveLengthFacet(); + if (isRequired) + { + if (xsdLengthFacet != null) + { + lowerBound = xsdLengthFacet.getValue(); + } + else + { + XSDMinLengthFacet xsdMinLengthFacet = attributeTypeDefinition.getEffectiveMinLengthFacet(); + if (xsdMinLengthFacet != null) + { + lowerBound = xsdMinLengthFacet.getValue(); + } + } + } + if (xsdLengthFacet != null) + { + upperBound = xsdLengthFacet.getValue(); + } + else + { + XSDMaxLengthFacet xsdMaxLengthFacet = attributeTypeDefinition.getEffectiveMaxLengthFacet(); + if (xsdMaxLengthFacet != null) + { + upperBound = xsdMaxLengthFacet.getValue(); + } + else + { + upperBound = -1; + } + } + } + + EClassifier referenceClassifier = getEClassifier(referenceType); + EStructuralFeature result = + createFeature + (eClass, + name, + referenceClassifier, + xsdComponent, + lowerBound, + upperBound); + initialize(result, xsdAttributeDeclaration, xsdComponent); + return result; + } + else + { + boolean isMany = + attributeTypeDefinition.getVariety() == XSDVariety.LIST_LITERAL && + xsdComponent instanceof XSDAttributeUse && + "true".equals(getEcoreAttribute(xsdComponent, "many")); + if (isMany) + { + EDataType eDataType = getEDataType(attributeTypeDefinition.getItemTypeDefinition()); + XSDLengthFacet xsdLengthFacet = attributeTypeDefinition.getEffectiveLengthFacet(); + int lowerBound = isRequired ? 1 : 0; + int upperBound = -1; + if (isRequired) + { + if (xsdLengthFacet != null) + { + lowerBound = xsdLengthFacet.getValue(); + } + else + { + XSDMinLengthFacet xsdMinLengthFacet = attributeTypeDefinition.getEffectiveMinLengthFacet(); + if (xsdMinLengthFacet != null) + { + lowerBound = xsdMinLengthFacet.getValue(); + } + } + } + if (xsdLengthFacet != null) + { + upperBound = xsdLengthFacet.getValue(); + } + else + { + XSDMaxLengthFacet xsdMaxLengthFacet = attributeTypeDefinition.getEffectiveMaxLengthFacet(); + if (xsdMaxLengthFacet != null) + { + upperBound = xsdMaxLengthFacet.getValue(); + } + } + EStructuralFeature result = + createFeature + (eClass, + name, + eDataType, + xsdComponent, + lowerBound, + upperBound); + initialize(result, xsdAttributeDeclaration, xsdComponent); + return result; + } + else + { + EDataType eDataType = getEDataType(attributeTypeDefinition); + EStructuralFeature result = + createFeature + (eClass, + name, + eDataType, + xsdComponent, + isRequired ? 1 : 0, + 1); + initialize(result, xsdAttributeDeclaration, xsdComponent); + return result; + } + } + } + + public EStructuralFeature getEStructuralFeature(XSDFeature xsdFeature) + { + if ("true".equals(getEcoreAttribute(xsdFeature, "ignore"))) return null; + EStructuralFeature eStructuralFeature = (EStructuralFeature)xsdComponentToEModelElementMap.get(xsdFeature); + if (eStructuralFeature == null) + { + EPackage ePackage = getEPackage(xsdFeature); + EClass documentEClass = extendedMetaData.getDocumentRoot(ePackage); + if (documentEClass == null) + { + createDocumentRoot(xsdFeature.getSchema(), ePackage); + } + + String name = getEcoreAttribute(xsdFeature, "name"); + if (name == null) + { + name= validName(xsdFeature.getName(), true); + } + + if (xsdFeature instanceof XSDElementDeclaration) + { + // Mark the bound as unspecified so that it won't be considered many + // but can nevertheless be recognized as being unspecified and perhaps still be treat as many. + // + EStructuralFeature result = + createFeature(documentEClass, (XSDElementDeclaration)xsdFeature, name, xsdFeature, 0, ETypedElement.UNSPECIFIED_MULTIPLICITY); + + result.setDerived(true); + result.setTransient(true); + result.setVolatile(true); + return result; + } + else + { + EStructuralFeature result = + createFeature(documentEClass, (XSDAttributeDeclaration)xsdFeature, name, xsdFeature, false); + return result; + } + } + + return eStructuralFeature; + } + + public void generate(XSDSchema xsdSchema) + { + this.rootSchema = xsdSchema; + if (xsdSchemas.add(xsdSchema)) + { + addInput(xsdSchema); + validate(xsdSchema); + } + + Collection visitedElementDeclarations = new ArrayList(); + Collection elementDeclarations = new ArrayList(xsdSchema.getElementDeclarations()); + + Collection visitedAttributeDeclarations = new ArrayList(); + Collection attributeDeclarations = new ArrayList(xsdSchema.getAttributeDeclarations()); + + Collection visitedTypeDefinitions = new ArrayList(); + Collection typeDefinitions = new ArrayList(xsdSchema.getTypeDefinitions()); + + while (!elementDeclarations.isEmpty() || !attributeDeclarations.isEmpty() || !typeDefinitions.isEmpty()) + { + for (Iterator i = elementDeclarations.iterator(); i.hasNext(); ) + { + XSDElementDeclaration xsdElementDeclaration = (XSDElementDeclaration)i.next(); + getEStructuralFeature(xsdElementDeclaration); + } + visitedElementDeclarations.addAll(elementDeclarations); + elementDeclarations = new ArrayList(xsdSchema.getElementDeclarations()); + elementDeclarations.removeAll(visitedElementDeclarations); + + for (Iterator i = attributeDeclarations.iterator(); i.hasNext(); ) + { + XSDAttributeDeclaration xsdAttributeDeclaration = (XSDAttributeDeclaration)i.next(); + if (!XSDConstants.isSchemaInstanceNamespace(xsdAttributeDeclaration.getTargetNamespace())) + { + getEStructuralFeature(xsdAttributeDeclaration); + } + } + visitedAttributeDeclarations.addAll(attributeDeclarations); + attributeDeclarations = new ArrayList(xsdSchema.getAttributeDeclarations()); + attributeDeclarations.removeAll(visitedAttributeDeclarations); + + for (Iterator i = typeDefinitions.iterator(); i.hasNext(); ) + { + XSDTypeDefinition xsdTypeDefinition = (XSDTypeDefinition)i.next(); + getEClassifier(xsdTypeDefinition); + } + visitedTypeDefinitions.addAll(typeDefinitions); + typeDefinitions = new ArrayList(xsdSchema.getTypeDefinitions()); + typeDefinitions.removeAll(visitedTypeDefinitions); + } + + resolveNameConflicts(); + + for (Iterator i = xsdSchemas.iterator(); i.hasNext(); ) + { + XSDSchema generatedXSDSchema = (XSDSchema)i.next(); + EPackage ePackage = (EPackage)targetNamespaceToEPackageMap.get(generatedXSDSchema.getTargetNamespace()); + if (ePackage != null) + { + String packageName= getEcoreAttribute(generatedXSDSchema, "package"); + if (packageName != null) + { + ePackage.setName(packageName); + } + String packageNsPrefix= getEcoreAttribute(generatedXSDSchema, "nsPrefix"); + if (packageNsPrefix != null) + { + ePackage.setNsPrefix(packageNsPrefix); + } + } + } + + for (Iterator i = eReferenceToOppositeNameMap.entrySet().iterator(); i.hasNext(); ) + { + Map.Entry entry = (Map.Entry)i.next(); + EReference eReference = (EReference)entry.getKey(); + String opposite = (String)entry.getValue(); + EClass oppositeEClass = eReference.getEReferenceType(); + if (eReference.getEOpposite() == null) + { + EStructuralFeature eOppositeFeature = oppositeEClass.getEStructuralFeature(opposite); + + // Match by XML name if this fails. + if (eOppositeFeature == null) + { + for (Iterator j = oppositeEClass.getEAllStructuralFeatures().iterator(); j.hasNext(); ) + { + EStructuralFeature feature = (EStructuralFeature)j.next(); + if (opposite.equals(extendedMetaData.getName(feature))) + { + eOppositeFeature = feature; + break; + } + } + } + + if (eOppositeFeature instanceof EReference) + { + EReference eOpposite = (EReference)eOppositeFeature; + eOpposite.setEOpposite(eReference); + eReference.setEOpposite(eOpposite); + } + } + + if (eReference.getEOpposite() == null && eReference.isContainment()) + { + EReference eOpposite = ecoreFactory.createEReference(); + eOpposite.setName(opposite); + eOpposite.setEType(eReference.getEContainingClass()); + eOpposite.setLowerBound(0); + eOpposite.setEOpposite(eReference); + eReference.setEOpposite(eOpposite); + eOpposite.setTransient(true); + oppositeEClass.getEStructuralFeatures().add(eOpposite); + } + } + + eReferenceToOppositeNameMap.clear(); + } + +} diff --git a/sdo-java/trunk/impl/src/main/java/org/apache/tuscany/sdo/helper/CopyHelperImpl.java b/sdo-java/trunk/impl/src/main/java/org/apache/tuscany/sdo/helper/CopyHelperImpl.java new file mode 100644 index 0000000000..b4d3b257b0 --- /dev/null +++ b/sdo-java/trunk/impl/src/main/java/org/apache/tuscany/sdo/helper/CopyHelperImpl.java @@ -0,0 +1,115 @@ +/** + * + * Licensed to the Apache Software Foundation (ASF) under one + * or more contributor license agreements. See the NOTICE file + * distributed with this work for additional information + * regarding copyright ownership. The ASF licenses this file + * to you under the Apache License, Version 2.0 (the + * "License"); you may not use this file except in compliance + * with the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, + * software distributed under the License is distributed on an + * "AS IS" BASIS, WITHOUT 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.eclipse.emf.ecore.EAttribute; +import org.eclipse.emf.ecore.EObject; +import org.eclipse.emf.ecore.EReference; +import org.eclipse.emf.ecore.util.EcoreUtil.Copier; + +import commonj.sdo.ChangeSummary; +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 SDOCopier() + { + protected void copyContainment(EReference eReference, EObject eObject, EObject copyEObject) + { + } + + + }; + return (DataObject)copier.copy((EObject)dataObject); + } + + public DataObject copy(DataObject dataObject) + { + Copier copier = new SDOCopier(){ + + protected void copyAttribute(EAttribute eAttribute, EObject eObject, EObject copyEObject) { + if(("ChangeSummaryType".equals(eAttribute.getEType().getName()) && "commonj.sdo".equals(eAttribute.getEType().getEPackage().getNsURI()))) { + throw new UnsupportedOperationException("Copying of change summary yet to be done"); + } else { + super.copyAttribute(eAttribute, eObject, copyEObject); + } + } + }; + + return (DataObject)copier.copy((EObject)dataObject); + } + + +} + + +class SDOCopier extends Copier { + + List csToTurnOn = new ArrayList(); + List csToTurnOff = new ArrayList(); + + public EObject copy(EObject object) { + + EObject result = super.copy(object); + copyReferences(); + + for (Iterator csit = csToTurnOn.iterator(); csit.hasNext();) { + ChangeSummary cs = (ChangeSummary) csit.next(); + if(!cs.isLogging()) { cs.beginLogging(); } + } + for (Iterator csit = csToTurnOff.iterator(); csit.hasNext();) { + ChangeSummary cs = (ChangeSummary) csit.next(); + if(cs.isLogging()) { cs.endLogging(); } + } + + return result; + } + + + + protected void copyAttribute(EAttribute eAttribute, EObject eObject, EObject copyEObject) { + + if(("ChangeSummaryType".equals(eAttribute.getEType().getName()) && "commonj.sdo".equals(eAttribute.getEType().getEPackage().getNsURI()))) { + if (((ChangeSummary)eObject.eGet(eAttribute)).isLogging()) { + csToTurnOn.add(((DataObject)copyEObject).getChangeSummary()); + } else { + csToTurnOff.add(((DataObject)copyEObject).getChangeSummary()); + } + ChangeSummary copyCS = (ChangeSummary)copyEObject.eGet(eAttribute); + if(copyCS.isLogging()) copyCS.endLogging(); + + } else { + super.copyAttribute(eAttribute, eObject, copyEObject); + } + } + +} \ No newline at end of file diff --git a/sdo-java/trunk/impl/src/main/java/org/apache/tuscany/sdo/helper/CrossScopeCopyHelperImpl.java b/sdo-java/trunk/impl/src/main/java/org/apache/tuscany/sdo/helper/CrossScopeCopyHelperImpl.java new file mode 100644 index 0000000000..3f51876035 --- /dev/null +++ b/sdo-java/trunk/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/sdo-java/trunk/impl/src/main/java/org/apache/tuscany/sdo/helper/DataFactoryImpl.java b/sdo-java/trunk/impl/src/main/java/org/apache/tuscany/sdo/helper/DataFactoryImpl.java new file mode 100644 index 0000000000..774d296eae --- /dev/null +++ b/sdo-java/trunk/impl/src/main/java/org/apache/tuscany/sdo/helper/DataFactoryImpl.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.helper; + +import org.apache.tuscany.sdo.util.DataObjectUtil; + +import commonj.sdo.DataObject; +import commonj.sdo.Type; +import commonj.sdo.helper.DataFactory; +import commonj.sdo.helper.HelperContext; + +/** + * A Factory for creating DataObjects. The created DataObjects are not connected + * to any other DataObjects. + */ +public class DataFactoryImpl implements DataFactory { + protected HelperContext helperContext; + + public DataFactoryImpl(HelperContext hc) { + this.helperContext = hc; + } + + public DataObject create(String uri, String typeName) { + Type type = helperContext.getTypeHelper().getType(uri, typeName); + return create(type); + } + + public DataObject create(Class interfaceClass) { + // TODO more efficient implementation ... this is a really bad one! + Type type = helperContext.getTypeHelper().getType(interfaceClass); + return create(type); + } + + public DataObject create(Type type) { + return DataObjectUtil.create(type); + } + + public HelperContext getHelperContext() { + return helperContext; + } + +} diff --git a/sdo-java/trunk/impl/src/main/java/org/apache/tuscany/sdo/helper/DataHelperImpl.java b/sdo-java/trunk/impl/src/main/java/org/apache/tuscany/sdo/helper/DataHelperImpl.java new file mode 100644 index 0000000000..d30da1cc4a --- /dev/null +++ b/sdo-java/trunk/impl/src/main/java/org/apache/tuscany/sdo/helper/DataHelperImpl.java @@ -0,0 +1,615 @@ +/** + * + * Licensed to the Apache Software Foundation (ASF) under one + * or more contributor license agreements. See the NOTICE file + * distributed with this work for additional information + * regarding copyright ownership. The ASF licenses this file + * to you under the Apache License, Version 2.0 (the + * "License"); you may not use this file except in compliance + * with the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, + * software distributed under the License is distributed on an + * "AS IS" BASIS, WITHOUT 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.math.BigDecimal; +import java.math.BigInteger; +import java.text.ParseException; +import java.util.ArrayList; +import java.util.Calendar; +import java.util.Date; +import java.util.GregorianCalendar; +import java.util.Iterator; +import java.util.List; +import java.util.Locale; +import java.util.TimeZone; + +import org.apache.tuscany.sdo.util.DataObjectUtil; + +import commonj.sdo.Property; +import commonj.sdo.Type; +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) + { + if (dateString == null) + { + return null; + } + + SDOSimpleDateFormat format; + Date result = null; + boolean negative = false; + String formatString; + dateString = dateString.trim(); + + // 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")) + { + if (dateString.indexOf('.') != -1) + formatString = new String("yyyy-MM-dd'T'HH:mm:ss'.'S'Z'"); + else + formatString = new String ("yyyy-MM-dd'T'HH:mm:ss'Z'"); + + format = new SDOSimpleDateFormat(formatString); + format.setTimeZone(TimeZone.getTimeZone("UTC")); + + result = checkFormat(dateString, format); + + // 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(" ", ""); + + // Build the formatString based on the contents of dateString + + formatString = obtainDurationFormats(durationString); + format = new SDOSimpleDateFormat(formatString); + result = checkFormat(durationString, format); + if (result != null) + { + if (negative) + return handleNegative(result); + else + return result; + } + } + + formatString = obtainSpecificFormat(dateString); + + if (formatString != null) + { + format = new SDOSimpleDateFormat(formatString); + result = checkFormat(dateString, format); + + if (result != null) + { + if (negative) + return handleBCE(result); + else + return result; + } + } + + return null; + } + + private synchronized Date checkFormat(String dateString, SDOSimpleDateFormat format) + { + String formatPattern = format.toPattern(); + StringBuffer addedFields = new StringBuffer(); + String fieldsString, parseString; + SDOSimpleDateFormat compositeFormat; + Date dateValue; + + // For certain permissable input strings (e.g. those resulting from toYear + // toDay, toTime), there are fields missing which when converted to Date have + // default values. (e.g. Year -> 1970). Because of this, there can be great + // variation in how daylight savings time is accounted for. (e.g. In 1970 Britain + // was on DST year round, and during the summer of 1944 was on double daylight time.) + // Because these possible variations exist, it is assumed that the user would prefer + // the current handling of daylight savings time. As such, the year, month and day + // will default to their current values when absent. (The user should not be checking + // for Year=1970 (etc.) as evidence of taking the default, as explicitly setting a + // year to 1970 is valid and would then not be an instance of a default taken.) + + if (!(formatPattern.startsWith("P"))) + { + if (formatPattern.indexOf('y') == -1) + addedFields.append("yyyy "); + + if (formatPattern.indexOf('M') == -1) + addedFields.append("MM "); + + if (formatPattern.indexOf('d') == -1) + addedFields.append("dd "); + } + + fieldsString = addedFields.toString(); + + if (fieldsString.length() == 0) + { + parseString = dateString; + compositeFormat = format; + } + + else + { + compositeFormat = new SDOSimpleDateFormat(fieldsString); + dateValue = new Date(System.currentTimeMillis()); + parseString = compositeFormat.format(dateValue) + dateString; + compositeFormat.applyPattern(fieldsString + formatPattern); + } + + try + { + return compositeFormat.parse(parseString); + } + + catch (ParseException parseException) + { + } + + return null; + } + + public synchronized String obtainSpecificFormat(String dateString) + { + StringBuffer formatBuffer = new StringBuffer(); + int colonIndex = dateString.indexOf(':'); + int hyphenIndex = dateString.indexOf('-'); + + if (dateString.startsWith("--")) + { + if (dateString.charAt(2) == '-') // starts with --- + formatBuffer.append("'---'dd"); + else if (dateString.substring(2).indexOf('-') == -1) + formatBuffer.append("'--'MM"); + else + formatBuffer.append("'--'MM'-'dd"); + } + + else if (colonIndex == 1 || colonIndex == 2) + { + if (dateString.indexOf('.') != -1) + formatBuffer.append("HH:mm:ss'.'S"); + else if (dateString.substring(colonIndex + 1).indexOf(':') != -1) + formatBuffer.append("HH:mm:ss"); + else + formatBuffer.append("HH:mm"); + } + + else if (hyphenIndex != -1) + { + if (dateString.substring(hyphenIndex + 1).indexOf('-') == -1) + formatBuffer.append("yyyy-MM"); + else if (colonIndex != -1) + { + if (dateString.indexOf('.') != -1) + formatBuffer.append("yyyy-MM-dd'T'HH:mm:ss'.'S"); + else if (dateString.substring(colonIndex + 1).indexOf(':') != -1) + formatBuffer.append("yyyy-MM-dd'T'HH:mm:ss"); + else + formatBuffer.append("yyyy-MM-dd'T'HH:mm"); + } + else + formatBuffer.append ("yyyy-MM-dd"); + } + else if (colonIndex == -1) // indexOf('-') == -1 + { + formatBuffer.append("yyyy"); + } + else + return null; + + // Determine if a Time Zone is included and needs to be parsed. + // --------------------------------- + // The only letter allowed in the above formats is 'T'. + // All times zones include at least one letter other than 'T'. + + int i = 0; + boolean letterFound = false; + char currentChar; + while (i < dateString.length() && !letterFound) + { + currentChar = dateString.charAt(i); + if (Character.isLetter(currentChar) && currentChar != 'T') + letterFound = true;; + i++; + } + + if (letterFound) + formatBuffer.append(" z"); + + return formatBuffer.toString(); + } + + public synchronized String obtainDurationFormats(String dateString) + { + String firstPart, secondPart; + StringBuffer formatBuffer = 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) + { + firstPart = dateString.substring(0, time_index + 1); + secondPart = dateString.substring(time_index); + } + else + { + firstPart = dateString; + secondPart = null; + } + + if (firstPart.indexOf('Y') != -1) + formatBuffer.append("yyyy'Y'"); + if (firstPart.indexOf('M') != -1) + formatBuffer.append("MM'M'"); + if (firstPart.indexOf('D') != -1) + formatBuffer.append("dd'D'"); + if (time_index != -1) + { + formatBuffer.append("'T'"); + + if (secondPart.indexOf('H') != -1) + formatBuffer.append("HH'H'"); + if (secondPart.indexOf('M') != -1) + formatBuffer.append("mm'M'"); + if (secondPart.indexOf("S.") != -1) + formatBuffer.append("ss'S'.S"); + else if (secondPart.indexOf('S') != -1) + formatBuffer.append("ss'S'"); + } + + return formatBuffer.toString().replaceAll("''", ""); + } + + // 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) + { + return toCalendar(dateString, null); + } + + public synchronized Calendar toCalendar(String dateString, Locale locale) + { + if (dateString == null) + { + return null; + } + + Date date = toDate(dateString); + if (date == null) + { + return null; + } + + Calendar calendar = locale != null ? new GregorianCalendar(locale) : new GregorianCalendar(); + calendar.setTime(date); + return calendar; + } + + public synchronized String toDateTime(Date date) + { + if (date == null) + { + return null; + } + + SDOSimpleDateFormat f = new SDOSimpleDateFormat("yyyy-MM-dd'T'HH:mm:ss'.'SSS'Z'"); + f.setTimeZone(TimeZone.getTimeZone("UTC")); + + return f.format(date); + } + + public synchronized String toDuration(Date date) + { + if (date == null) + { + return null; + } + + SDOSimpleDateFormat f = new SDOSimpleDateFormat("'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; + } + + SDOSimpleDateFormat f = new SDOSimpleDateFormat("HH:mm:ss'.'SSS zz"); + + return f.format(date); + } + + public synchronized String toDay(Date date) + { + if (date == null) + { + return null; + } + + SDOSimpleDateFormat f = new SDOSimpleDateFormat("---dd zz"); + + return f.format(date); + } + + public synchronized String toMonth(Date date) + { + if (date == null) + { + return null; + } + + SDOSimpleDateFormat f = new SDOSimpleDateFormat("--MM zz"); + + return f.format(date); + } + + public synchronized String toMonthDay(Date date) + { + if (date == null) + { + return null; + } + + SDOSimpleDateFormat f = new SDOSimpleDateFormat("--MM-dd zz"); + + return f.format(date); + } + + public synchronized String toYear(Date date) + { + if (date == null) + { + return null; + } + + SDOSimpleDateFormat f = new SDOSimpleDateFormat("yyyy zz"); + + return f.format(date); + } + + public synchronized String toYearMonth(Date date) + { + if (date == null) + { + return null; + } + + SDOSimpleDateFormat f = new SDOSimpleDateFormat("yyyy-MM zz"); + + return f.format(date); + } + + public synchronized String toYearMonthDay(Date date) + { + if (date == null) + { + return null; + } + + SDOSimpleDateFormat f = new SDOSimpleDateFormat("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()); + } + + public Object convert(Type type, Object value) + { + Class typeClass = type.getInstanceClass(); + if (typeClass.isInstance(value)) + return value; + + if (typeClass == BigDecimal.class) { + return DataObjectUtil.getBigDecimal(value); + } + else if (typeClass == BigInteger.class) { + return DataObjectUtil.getBigInteger(value); + } + else if (typeClass == boolean.class || typeClass == Boolean.class) { + return new Boolean(DataObjectUtil.getBoolean(value)); + } + else if (typeClass == byte.class || typeClass == Byte.class) { + return new Byte(DataObjectUtil.getByte(value)); + } + else if (typeClass == byte[].class) { + return DataObjectUtil.getBytes(value); + } + else if (typeClass == char.class || typeClass == Character.class) { + return new Character(DataObjectUtil.getChar(value)); + } + else if (typeClass == Date.class) { + return DataObjectUtil.getDate(value); + } + else if (typeClass == double.class || typeClass == Double.class) { + return new Double(DataObjectUtil.getDouble(value)); + } + else if (typeClass == float.class || typeClass == Float.class) { + return new Float(DataObjectUtil.getFloat(value)); + } + else if (typeClass == int.class || typeClass == Integer.class) { + return new Integer(DataObjectUtil.getInt(value)); + } + else if (typeClass == long.class || typeClass == Long.class) { + return new Long(DataObjectUtil.getLong(value)); + } + else if (typeClass == short.class || typeClass == Short.class) { + return new Short(DataObjectUtil.getShort(value)); + } + else if (typeClass == String.class) { + return DataObjectUtil.getString(value); + } + + throw new IllegalArgumentException(); + } + + public Object convert(Property property, Object value) + { + Type type = property.getType(); + if (!property.isMany()) + { + return convert(type, value); + } + else + { + List listValue = (List)value; + List listResult = new ArrayList(); + for (Iterator iter = listValue.iterator(); iter.hasNext(); ) { + listResult.add(convert(type, iter.next())); + } + return listResult; + } + } + +} diff --git a/sdo-java/trunk/impl/src/main/java/org/apache/tuscany/sdo/helper/DefaultHelperContextImpl.java b/sdo-java/trunk/impl/src/main/java/org/apache/tuscany/sdo/helper/DefaultHelperContextImpl.java new file mode 100644 index 0000000000..f7ac22632a --- /dev/null +++ b/sdo-java/trunk/impl/src/main/java/org/apache/tuscany/sdo/helper/DefaultHelperContextImpl.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.sdo.helper; + +import java.util.Map; +import java.util.WeakHashMap; + +import org.eclipse.emf.ecore.EPackage; +import org.eclipse.emf.ecore.impl.EPackageRegistryImpl; + +public class DefaultHelperContextImpl extends HelperContextImpl { + public DefaultHelperContextImpl(final boolean extensibleNamespaces) { + super(new SDOExtendedMetaDataImpl(new SDOPackageRegistryDelegator()), extensibleNamespaces); + } + + public DefaultHelperContextImpl(final boolean extensibleNamespaces, final Map options) { + super(new SDOExtendedMetaDataImpl(new SDOPackageRegistryDelegator()), extensibleNamespaces, options); + } + + protected static class SDOPackageRegistryDelegator extends EPackageRegistryImpl.Delegator { + /** + * A map from class loader to its associated registry. + */ + protected Map classLoaderToRegistryMap = new WeakHashMap(); + + /** + * Returns the package registry associated with the given class loader. + * @param classLoader the class loader. + * @return the package registry associated with the given class loader. + */ + public synchronized EPackage.Registry getRegistry(final ClassLoader classLoader) + { + EPackage.Registry result = (EPackage.Registry)classLoaderToRegistryMap.get(classLoader); + if (result == null) + { + if (classLoader == null) + { + result = HelperContextImpl.getBuiltInModelRegistry(); + } + else + { + result = new EPackageRegistryImpl(getRegistry(classLoader.getParent())); + classLoaderToRegistryMap.put(classLoader, result); + } + } + return result; + } + + protected EPackage.Registry delegateRegistry(final ClassLoader classLoader) + { + return getRegistry(classLoader); + } + } +} diff --git a/sdo-java/trunk/impl/src/main/java/org/apache/tuscany/sdo/helper/EqualityHelperImpl.java b/sdo-java/trunk/impl/src/main/java/org/apache/tuscany/sdo/helper/EqualityHelperImpl.java new file mode 100644 index 0000000000..0d3d8ee5b7 --- /dev/null +++ b/sdo-java/trunk/impl/src/main/java/org/apache/tuscany/sdo/helper/EqualityHelperImpl.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.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) + { + if(!("ChangeSummaryType".equals(feature.getEType().getName()) && "commonj.sdo".equals(feature.getEType().getEPackage().getNsURI()))) { + 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) + { + EcoreUtil.EqualityHelper equalityHelper = new EcoreUtil.EqualityHelper() + { + protected boolean haveEqualAttribute(EObject eObject1, EObject eObject2, EAttribute attribute) { + if(("ChangeSummaryType".equals(attribute.getEType().getName()) && "commonj.sdo".equals(attribute.getEType().getEPackage().getNsURI()))) { + throw new UnsupportedOperationException("This will be implemented when change summary serialzation/deserialization is in place"); + } + else if( "Bytes".equals(attribute.getEType().getName()) ) { + try + { + byte [] value1 = (byte [])eObject1.eGet(attribute); + byte [] value2 = (byte [])eObject2.eGet(attribute); + + return( java.util.Arrays.equals(value1,value2) ); + } + catch(Exception ex) + { + // if any exception is thrown, assumption is they are not equal + return false; + } + } + else { + return super.haveEqualAttribute(eObject1, eObject2, attribute); + } + } + }; + return equalityHelper.equals((EObject)dataObject1, (EObject)dataObject2); } +} diff --git a/sdo-java/trunk/impl/src/main/java/org/apache/tuscany/sdo/helper/HelperContextImpl.java b/sdo-java/trunk/impl/src/main/java/org/apache/tuscany/sdo/helper/HelperContextImpl.java new file mode 100644 index 0000000000..64ee628693 --- /dev/null +++ b/sdo-java/trunk/impl/src/main/java/org/apache/tuscany/sdo/helper/HelperContextImpl.java @@ -0,0 +1,193 @@ +/** + * + * Licensed to the Apache Software Foundation (ASF) under one + * or more contributor license agreements. See the NOTICE file + * distributed with this work for additional information + * regarding copyright ownership. The ASF licenses this file + * to you under the Apache License, Version 2.0 (the + * "License"); you may not use this file except in compliance + * with the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, + * software distributed under the License is distributed on an + * "AS IS" BASIS, WITHOUT 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.HashMap; +import java.util.Iterator; +import java.util.Map; + +import org.eclipse.emf.ecore.EPackage; +import org.eclipse.emf.ecore.EcorePackage; +import org.eclipse.emf.ecore.change.ChangePackage; +import org.eclipse.emf.ecore.impl.EPackageRegistryImpl; +import org.eclipse.emf.ecore.util.ExtendedMetaData; +import org.eclipse.emf.ecore.xml.namespace.XMLNamespacePackage; +import org.eclipse.emf.ecore.xml.type.XMLTypePackage; + +import commonj.sdo.helper.CopyHelper; +import commonj.sdo.helper.DataFactory; +import commonj.sdo.helper.DataHelper; +import commonj.sdo.helper.EqualityHelper; +import commonj.sdo.helper.HelperContext; +import commonj.sdo.helper.TypeHelper; +import commonj.sdo.helper.XMLHelper; +import commonj.sdo.helper.XSDHelper; + +import org.apache.tuscany.sdo.SDOPackage; +import org.apache.tuscany.sdo.api.XMLStreamHelper; + +public class HelperContextImpl implements HelperContext { + /* + * Relationship: HelperContext*Impl* ---1:1---> ExtendedMetaData ---1:1---> + * Map (:defaultOption) <---1:1---> TypeHelper <---1:1---> XMLHelper + * <---1:1---> XMLStreamHelper <---1:1---> XSDHelper <---1:1---> DataFactory + */ + + protected ExtendedMetaData extendedMetaData; + protected DataFactory dataFactory; + protected TypeHelper typeHelper; + protected XMLHelper xmlHelper; + protected XSDHelper xsdHelper; + protected XMLStreamHelper xmlStreamHelper; + protected Map defaultOptions = null; + + public HelperContextImpl(ExtendedMetaData extendedMetaData, boolean extensibleNamespaces) { + this.defaultOptions = null; + this.extendedMetaData = extendedMetaData; + typeHelper = new TypeHelperImpl(this); + dataFactory = new DataFactoryImpl(this); + xmlHelper = new XMLHelperImpl(this); + xsdHelper = new XSDHelperImpl(this, null, extensibleNamespaces); + xmlStreamHelper = new XMLStreamHelperImpl(this); + } + + + public HelperContextImpl(ExtendedMetaData extendedMetaData, boolean extensibleNamespaces, Map options) { + this.defaultOptions = options; + this.extendedMetaData = extendedMetaData; + typeHelper = new TypeHelperImpl(this); + dataFactory = new DataFactoryImpl(this); + xmlHelper = new XMLHelperImpl(this); + xsdHelper = new XSDHelperImpl(this, null, extensibleNamespaces); + xmlStreamHelper = new XMLStreamHelperImpl(this); + } + + // many places this is called in existing code + // This is used for supporting the deprecated util - + // org.apache.tuscany.sdo.util.SDOUtil + // Once we conpletely remove this deprecated util, we can remove the below + // constructor + public HelperContextImpl(TypeHelper scope) { + this(scope, null); + } + + + public HelperContextImpl(TypeHelper scope, Map options) { + this.defaultOptions = options; + typeHelper = scope; + this.extendedMetaData = ((TypeHelperImpl)scope).getExtendedMetaData(); + dataFactory = new DataFactoryImpl(this); + xmlHelper = new XMLHelperImpl(this); + xsdHelper = new XSDHelperImpl(this); + xmlStreamHelper = new XMLStreamHelperImpl(this); + } + + public HelperContextImpl(boolean extensibleNamespaces) { + this(new SDOExtendedMetaDataImpl(new EPackageRegistryImpl(getBuiltInModelRegistry())), extensibleNamespaces); + } + + + public HelperContextImpl(boolean extensibleNamespaces, Map options) { + this(new SDOExtendedMetaDataImpl(new EPackageRegistryImpl(getBuiltInModelRegistry())), extensibleNamespaces, + options); + } + + static protected EPackage.Registry builtInModelRegistry = null; + + static public EPackage.Registry getBuiltInModelRegistry() { + if (builtInModelRegistry == null) { + EPackageRegistryImpl registry = new EPackageRegistryImpl(); + for (Iterator iter = TypeHelperImpl.getBuiltInModels().iterator(); iter.hasNext();) { + EPackage ePackage = (EPackage)iter.next(); + registry.put(ePackage.getNsURI(), ePackage); + } + + registry.put(EcorePackage.eNS_URI, EcorePackage.eINSTANCE); + registry.put(XMLTypePackage.eNS_URI, XMLTypePackage.eINSTANCE); + registry.put(ChangePackage.eNS_URI, ChangePackage.eINSTANCE); + registry.put(XMLNamespacePackage.eNS_URI, XMLNamespacePackage.eINSTANCE); + registry.put(SDOPackage.eNS_URI, SDOPackage.eINSTANCE); + + builtInModelRegistry = registry; + } + return builtInModelRegistry; + } + + public CopyHelper getCopyHelper() { + return CopyHelper.INSTANCE; + } + + public DataFactory getDataFactory() { + return dataFactory; + } + + public DataHelper getDataHelper() { + return DataHelper.INSTANCE; + } + + public EqualityHelper getEqualityHelper() { + return EqualityHelper.INSTANCE; + } + + public TypeHelper getTypeHelper() { + return typeHelper; + } + + public XMLHelper getXMLHelper() { + return xmlHelper; + } + + public XMLStreamHelper getXMLStreamHelper() { + return xmlStreamHelper; + } + + public XSDHelper getXSDHelper() { + return xsdHelper; + } + + public void setOptions(Map options) { + this.defaultOptions = options; + } + + public Map getOptions() { + return this.defaultOptions; + } + + public Map getMergedOption(Map options) { + Map mergedOptions = null;// copy to be used for merge + + if (defaultOptions == null) { + return options; + } + + mergedOptions = new HashMap(defaultOptions); + if (options == null) { + return mergedOptions; + } + mergedOptions.putAll(options); + + return mergedOptions; + } + + public ExtendedMetaData getExtendedMetaData() { + return extendedMetaData; + } +} diff --git a/sdo-java/trunk/impl/src/main/java/org/apache/tuscany/sdo/helper/HelperProviderImpl.java b/sdo-java/trunk/impl/src/main/java/org/apache/tuscany/sdo/helper/HelperProviderImpl.java new file mode 100644 index 0000000000..360617bd20 --- /dev/null +++ b/sdo-java/trunk/impl/src/main/java/org/apache/tuscany/sdo/helper/HelperProviderImpl.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.helper; + + +import org.apache.tuscany.sdo.spi.HelperProviderBase; + +import commonj.sdo.helper.HelperContext; + +/** + * Create and manage all the default helper INSTANCEs + */ +public class HelperProviderImpl extends HelperProviderBase +{ + public HelperContext createDefaultHelpers() + { + //FB HelperContext hc = SDOUtil.createHelperContext(); + //FB The defulat HelperContext must use EMF's ClassLoader-delegating EPackage.Registry.INSTANCE, until we provide + //FB another way to get (ClassLoader scope) support for HelperContext. + HelperContext hc = new DefaultHelperContextImpl(false); + typeHelper = hc.getTypeHelper(); + dataFactory = hc.getDataFactory(); + xmlHelper = hc.getXMLHelper(); + xsdHelper = hc.getXSDHelper(); + copyHelper = new CopyHelperImpl(); + equalityHelper = new EqualityHelperImpl(); + dataHelper = new DataHelperImpl(); + sdoHelper = new SDOHelperImpl(); + xmlStreamHelper = ((HelperContextImpl)hc).getXMLStreamHelper(); + + return hc; + } +} diff --git a/sdo-java/trunk/impl/src/main/java/org/apache/tuscany/sdo/helper/SDOAnnotations.java b/sdo-java/trunk/impl/src/main/java/org/apache/tuscany/sdo/helper/SDOAnnotations.java new file mode 100644 index 0000000000..816fb3bf9f --- /dev/null +++ b/sdo-java/trunk/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/sdo-java/trunk/impl/src/main/java/org/apache/tuscany/sdo/helper/SDOExtendedMetaDataImpl.java b/sdo-java/trunk/impl/src/main/java/org/apache/tuscany/sdo/helper/SDOExtendedMetaDataImpl.java new file mode 100644 index 0000000000..ba632a0523 --- /dev/null +++ b/sdo-java/trunk/impl/src/main/java/org/apache/tuscany/sdo/helper/SDOExtendedMetaDataImpl.java @@ -0,0 +1,305 @@ +/** + * + * Licensed to the Apache Software Foundation (ASF) under one + * or more contributor license agreements. See the NOTICE file + * distributed with this work for additional information + * regarding copyright ownership. The ASF licenses this file + * to you under the Apache License, Version 2.0 (the + * "License"); you may not use this file except in compliance + * with the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, + * software distributed under the License is distributed on an + * "AS IS" BASIS, WITHOUT 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 java.util.StringTokenizer; + +import org.apache.tuscany.sdo.SDOExtendedMetaData; +import org.apache.tuscany.sdo.impl.SDOFactoryImpl.SDOEcoreFactory; +import org.apache.tuscany.sdo.model.ModelFactory; +import org.apache.tuscany.sdo.model.impl.ModelFactoryImpl; +import org.eclipse.emf.ecore.EAnnotation; +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.EPackage.Registry; + +/** + * TODO make demand() methods synchronous? + */ +public class SDOExtendedMetaDataImpl + extends BaseSDOExtendedMetaDataImpl + implements SDOExtendedMetaData +{ + + public SDOExtendedMetaDataImpl() { + this(HelperContextImpl.getBuiltInModelRegistry()); + } + + public SDOExtendedMetaDataImpl(Registry registry) { + super(registry); + ecoreFactory = new SDOEcoreFactory(); + demandMetaData = new SDODemandMetaData(); + } + + public static class SDODemandMetaData extends DemandMetaData { + EClassifier getEObject() { return (EClassifier)((ModelFactoryImpl)ModelFactory.INSTANCE).getDataObject(); } + EClassifier getAnySimpleType() { return (EClassifier)((ModelFactoryImpl)ModelFactory.INSTANCE).getObject(); } + } + + public EPackage getPackage(String namespace) + { + if ("".equals(namespace)) namespace = null; //FB + EPackage result = registry.getEPackage(namespace); + return result == null ? super.getPackage(namespace) : result; + } + + /** + * 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); + } + + public EPackage.Registry getRegistry() + { + return registry; + } + + boolean featureNamespaceMatchingLax = true; + + public void setFeatureNamespaceMatchingLax(boolean b) { + featureNamespaceMatchingLax = b; + } + + protected boolean isFeatureNamespaceMatchingLax() { + return featureNamespaceMatchingLax; + } + + /* + * (non-Javadoc) + * + * Eagerly pre-cache the "holder"s for static packages. + * + * @see org.eclipse.emf.ecore.util.BasicExtendedMetaData#putPackage(java.lang.String, + * org.eclipse.emf.ecore.EPackage) + */ + public void putPackage(String namespace, EPackage ePackage) { + for (Iterator iterator = ePackage.eAllContents(); iterator.hasNext();) { + Object object = iterator.next(); + if (object instanceof EClassifier) { + this.getName((EClassifier) object); + } else if (object instanceof EStructuralFeature) { + this.getName((EStructuralFeature) object); + } + } + super.putPackage(namespace, ePackage); + } + + /****************************************************************************************************** + * Following methods, getLocalAttribute & getLocalElement, ARE TEMPORARY COPIES FROM THE BASE CLASS. + * One line (the last line)in each method is changed to support lax namespace matching. + * DO NOT EDIT THESE METHODS. THEY WILL BE REMOVED WHEN WE MOVE TO EMF 2.3, WHICH FIXES THE PROBLEM. + ******************************************************************************************************/ + + public EStructuralFeature getLocalAttribute(EClass eClass, String namespace, String name) + { + EStructuralFeature result = null; + if (isFeatureKindSpecific()) + { + List allAttributes = getAllAttributes(eClass); + for (int i = 0, size = allAttributes.size(); i < size; ++i) + { + EStructuralFeature eStructuralFeature = (EStructuralFeature) allAttributes.get(i); + if (name.equals(getName(eStructuralFeature))) + { + String featureNamespace = getNamespace(eStructuralFeature); + if (namespace == null) + { + if (featureNamespace == null) + { + return eStructuralFeature; + } + else if (result == null) + { + result = eStructuralFeature; + } + } + else if (namespace.equals(featureNamespace)) + { + return eStructuralFeature; + } + else if (featureNamespace == null && result == null) + { + result = eStructuralFeature; + } + } + } + } + else + { + for (int i = 0, size = eClass.getFeatureCount(); i < size; ++i) + { + EStructuralFeature eStructuralFeature = eClass.getEStructuralFeature(i); + switch (getFeatureKind(eStructuralFeature)) + { + case UNSPECIFIED_FEATURE: + case ATTRIBUTE_FEATURE: + { + if (name.equals(getName(eStructuralFeature))) + { + String featureNamespace = getNamespace(eStructuralFeature); + if (namespace == null) + { + if (featureNamespace == null) + { + return eStructuralFeature; + } + else if (result == null) + { + result = eStructuralFeature; + } + } + else if (namespace.equals(featureNamespace)) + { + return eStructuralFeature; + } + else if (featureNamespace == null && result == null) + { + result = eStructuralFeature; + } + } + break; + } + } + } + } + + return isFeatureNamespaceMatchingLax() ? result : null; + } + + protected EStructuralFeature getLocalElement(EClass eClass, String namespace, String name) + { + EStructuralFeature result = null; + if (isFeatureKindSpecific()) + { + List allElements = getAllElements(eClass); + for (int i = 0, size = allElements.size(); i < size; ++i) + { + EStructuralFeature eStructuralFeature = (EStructuralFeature) allElements.get(i); + if (name.equals(getName(eStructuralFeature))) + { + String featureNamespace = getNamespace(eStructuralFeature); + if (namespace == null) + { + if (featureNamespace == null) + { + return eStructuralFeature; + } + else if (result == null) + { + result = eStructuralFeature; + } + } + else if (namespace.equals(featureNamespace)) + { + return eStructuralFeature; + } + else if (featureNamespace == null && result == null) + { + result = eStructuralFeature; + } + } + } + } + else + { + for (int i = 0, size = eClass.getFeatureCount(); i < size; ++i) + { + EStructuralFeature eStructuralFeature = eClass.getEStructuralFeature(i); + switch (getFeatureKind(eStructuralFeature)) + { + case UNSPECIFIED_FEATURE: + case ELEMENT_FEATURE: + { + if (name.equals(getName(eStructuralFeature))) + { + String featureNamespace = getNamespace(eStructuralFeature); + if (namespace == null) + { + if (featureNamespace == null) + { + return eStructuralFeature; + } + else if (result == null) + { + result = eStructuralFeature; + } + } + else if (namespace.equals(featureNamespace)) + { + return eStructuralFeature; + } + else if (featureNamespace == null && result == null) + { + result = eStructuralFeature; + } + } + break; + } + } + } + } + + return isFeatureNamespaceMatchingLax() ? result : null; + } +} diff --git a/sdo-java/trunk/impl/src/main/java/org/apache/tuscany/sdo/helper/SDOHelperImpl.java b/sdo-java/trunk/impl/src/main/java/org/apache/tuscany/sdo/helper/SDOHelperImpl.java new file mode 100644 index 0000000000..922f092845 --- /dev/null +++ b/sdo-java/trunk/impl/src/main/java/org/apache/tuscany/sdo/helper/SDOHelperImpl.java @@ -0,0 +1,530 @@ +/** + * + * Licensed to the Apache Software Foundation (ASF) under one + * or more contributor license agreements. See the NOTICE file + * distributed with this work for additional information + * regarding copyright ownership. The ASF licenses this file + * to you under the Apache License, Version 2.0 (the + * "License"); you may not use this file except in compliance + * with the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, + * software distributed under the License is distributed on an + * "AS IS" BASIS, WITHOUT 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.util.ArrayList; +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.SDOExtendedMetaData; +import org.apache.tuscany.sdo.SDOFactory; +import org.apache.tuscany.sdo.SimpleAnyTypeDataObject; +import org.apache.tuscany.sdo.api.SDOHelper; +import org.apache.tuscany.sdo.api.XMLStreamHelper; +import org.apache.tuscany.sdo.api.EventListener; +import org.apache.tuscany.sdo.impl.ClassImpl; +import org.apache.tuscany.sdo.impl.DataGraphImpl; +import org.apache.tuscany.sdo.impl.DynamicDataObjectImpl; +import org.apache.tuscany.sdo.model.ModelFactory; +import org.apache.tuscany.sdo.model.impl.ModelFactoryImpl; +import org.apache.tuscany.sdo.spi.SDOHelperBase; +import org.apache.tuscany.sdo.util.DataObjectUtil; +import org.eclipse.emf.common.notify.Adapter; +import org.eclipse.emf.common.notify.Notifier; +import org.eclipse.emf.common.util.URI; +import org.eclipse.emf.common.util.UniqueEList; +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.EModelElement; +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.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.xmi.XMLResource; + +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.HelperContext; +import commonj.sdo.helper.TypeHelper; +import commonj.sdo.impl.HelperProvider; + +public class SDOHelperImpl extends SDOHelperBase implements SDOHelper, SDOHelper.MetaDataBuilder { + + public DataObject createDataTypeWrapper(Type dataType, Object value) { + SimpleAnyTypeDataObject simpleAnyType = SDOFactory.eINSTANCE.createSimpleAnyTypeDataObject(); + simpleAnyType.setInstanceType((EDataType)dataType); + simpleAnyType.setValue(value); + return simpleAnyType; + } + + public Object createFromString(Type dataType, String literal) { + return EcoreUtil.createFromString((EDataType)dataType, literal); + } + + public String convertToString(Type dataType, Object value) { + return EcoreUtil.convertToString((EDataType)dataType, value); + } + + public Type getXSDSDOType(String xsdType) { + Type type = null; + String name = (String)xsdToSdoMappings.get(xsdType); + if (name != null) + type = (Type)((ModelFactoryImpl)ModelFactory.INSTANCE).getEClassifier(name); + return type; + } + + public 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(); + } + + public Type getJavaSDOType(Class javaClass) { + String name = (String)javaToSdoMappings.get(javaClass); + if (name != null) { + return (Type)((ModelFactoryImpl)ModelFactory.INSTANCE).getEClassifier(name); + } + return null; + } + + public boolean isRequired(Property property) { + return ((EStructuralFeature)property).isRequired(); + } + + public int getUpperBound(Property property) { + return ((EStructuralFeature)property).getUpperBound(); + } + + public int getLowerBound(Property property) { + return ((EStructuralFeature)property).getLowerBound(); + } + + public List getEnumerationFacet(Type type) { + List instProps = type.getInstanceProperties(); + String propertyName = "enumeration"; + Property enumProperty = null; + + for (int i = 0; i < instProps.size(); i++) + { + Property prop = (Property)instProps.get(i); + if (propertyName.equals(prop.getName())) + enumProperty = prop; + } + + return (List)DataObjectUtil.getMetaObjectInstanceProperty((EModelElement)type, enumProperty); + } + + public List getPatternFacet(Type type) { + List instProps = type.getInstanceProperties(); + String propertyName = "pattern"; + Property patternProperty = null; + + for (int i = 0; i < instProps.size(); i++) + { + Property prop = (Property)instProps.get(i); + if (propertyName.equals(prop.getName())) + patternProperty = prop; + } + + return (List)DataObjectUtil.getMetaObjectInstanceProperty((EModelElement)type, patternProperty); + } + + public boolean isMany(Property property, DataObject context) { + return FeatureMapUtil.isMany((EObject)context, (EStructuralFeature)property); + } + + public DataGraph createDataGraph() { + return SDOFactory.eINSTANCE.createDataGraph(); + } + + public void setRootObject(DataGraph dataGraph, DataObject rootObject) { + ((DataGraphImpl)dataGraph).setERootObject((EObject)rootObject); + } + + 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); + } + + static final Object LOADING_SCOPE = XMLResource.OPTION_EXTENDED_META_DATA; + + protected void registerLoadingScope(Map options, TypeHelper scope) { + Object extendedMetaData = ((TypeHelperImpl)scope).getExtendedMetaData(); + options.put(LOADING_SCOPE, extendedMetaData); + } + + public DataGraph loadDataGraph(InputStream inputStream, Map options, HelperContext scope) throws IOException { + if (scope == null) { + scope = HelperProvider.getDefaultContext(); + } + TypeHelper th = scope.getTypeHelper(); + DataGraph result = null; + if (th == null || th == TypeHelper.INSTANCE) { + result = loadDataGraph(inputStream, options); + } else if (options == null) { + options = new HashMap(); + registerLoadingScope(options, th); + result = loadDataGraph(inputStream, options); + } else if (options.containsKey(LOADING_SCOPE)) { + Object restore = options.get(LOADING_SCOPE); + registerLoadingScope(options, th); + try { + result = loadDataGraph(inputStream, options); + } finally { + options.put(LOADING_SCOPE, restore); + } + } else { + registerLoadingScope(options, th); + try { + result = loadDataGraph(inputStream, options); + } finally { + options.remove(LOADING_SCOPE); + } + } + return result; + } + + public void saveDataGraph(DataGraph dataGraph, OutputStream outputStream, Map options) throws IOException { + ((DataGraphImpl)dataGraph).getDataGraphResource().save(outputStream, options); + } + + public 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); + } + } + + public HelperContext createHelperContext() { + return new HelperContextImpl(false, null); + } + + public HelperContext createHelperContext(boolean extensibleNamespaces) { + return new HelperContextImpl(extensibleNamespaces); + } + + public HelperContext createHelperContext(Map options) { + return new HelperContextImpl(false, options); + } + + public HelperContext createHelperContext(boolean extensibleNamespaces, Map options) { + return new HelperContextImpl(extensibleNamespaces, options); + } + + + public CopyHelper createCrossScopeCopyHelper(HelperContext hc) { + return new CrossScopeCopyHelperImpl(hc.getTypeHelper()); + } + + + public XMLStreamHelper createXMLStreamHelper(HelperContext hc) { + return ((HelperContextImpl)hc).getXMLStreamHelper(); + } + + + public List getTypes(HelperContext hc, String uri) { + + EPackage ePackage = ((HelperContextImpl)hc).getExtendedMetaData().getPackage(uri); + if (ePackage != null) { + return new ArrayList(ePackage.getEClassifiers()); + } + return null; + } + + public List getOpenContentProperties(DataObject dataObject) { + List result = new UniqueEList(); + ((ClassImpl)dataObject.getType()).addOpenProperties((EObject)dataObject, result); + return result; + } + + public boolean isDocumentRoot(Type type) { + return "".equals(SDOExtendedMetaData.INSTANCE.getName((EClassifier)type)); + } + + + public Type createType(HelperContext hc, String uri, String name, boolean isDataType) { + ExtendedMetaData extendedMetaData = ((HelperContextImpl)hc).getExtendedMetaData(); + if ("".equals(uri)) + uri = null; // FB + + EPackage ePackage = extendedMetaData.getPackage(uri); + if (ePackage == null) { + ePackage = EcoreFactory.eINSTANCE.createEPackage(); + ePackage.setEFactoryInstance(new DynamicDataObjectImpl.FactoryImpl()); + ePackage.setNsURI(uri); + String packagePrefix = uri != null ? URI.createURI(uri).trimFileExtension().lastSegment() : ""; // FB + 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 void addBaseType(Type type, Type baseType) { + ((EClass)type).getESuperTypes().add(baseType); + } + + public void addAliasName(Type type, String aliasName) { + throw new UnsupportedOperationException(); // TODO: implement this + // method properly + // type.getAliasNames().add(aliasName); + } + + public void setOpen(Type type, boolean isOpen) { + if (isOpen == type.isOpen()) + return; + + if (isOpen) { + EAttribute eAttribute = (EAttribute)SDOFactory.eINSTANCE.createAttribute(); + ((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 (ExtendedMetaData.INSTANCE.getMixedFeature((EClass)type) != null) { + 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 void setSequenced(Type type, boolean isSequenced) { + // 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() != "DocumentRoot") // document root is a + // special case + throw new IllegalArgumentException(); + } + + if (isSequenced) { + EClass eClass = (EClass)type; + ExtendedMetaData.INSTANCE.setContentKind(eClass, ExtendedMetaData.MIXED_CONTENT); + EAttribute mixedFeature = (EAttribute)SDOFactory.eINSTANCE.createAttribute(); + mixedFeature.setName("mixed"); + mixedFeature.setUnique(false); + mixedFeature.setEType(EcorePackage.eINSTANCE.getEFeatureMapEntry()); + mixedFeature.setLowerBound(0); + mixedFeature.setUpperBound(-1); + // eClass.getEStructuralFeatures().add(mixedFeature); + ((ClassImpl)eClass).setSequenceFeature(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 void setAbstract(Type type, boolean isAbstract) { + ((EClass)type).setAbstract(isAbstract); + } + + public void setJavaClassName(Type type, String javaClassName) { + ((EClassifier)type).setInstanceClassName(javaClassName); + } + + public 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 ("".equals(ExtendedMetaData.INSTANCE.getName((EClass)containingType))) // DocumentRoot + // containingType? + { + ExtendedMetaData.INSTANCE.setNamespace(eStructuralFeature, containingType.getURI()); + //FB???eStructuralFeature.setUnique(false); + //FB???eStructuralFeature.setUpperBound(ETypedElement.UNSPECIFIED_MULTIPLICITY); + } + + if (ExtendedMetaData.INSTANCE.getMixedFeature((EClass)containingType) != null) { + eStructuralFeature.setDerived(true); + eStructuralFeature.setTransient(true); + eStructuralFeature.setVolatile(true); + ExtendedMetaData.INSTANCE.setFeatureKind(eStructuralFeature, ExtendedMetaData.ELEMENT_FEATURE); + } else { + // By default, a SDO property is an XSD element + ExtendedMetaData.INSTANCE.setFeatureKind(eStructuralFeature, ExtendedMetaData.ELEMENT_FEATURE); + } + + return (Property)eStructuralFeature; + } + + public void setPropertyXMLKind(Property property, boolean isXmlElement) { + if (isXmlElement) { + ExtendedMetaData.INSTANCE.setFeatureKind((EStructuralFeature)property, ExtendedMetaData.ELEMENT_FEATURE); + } + else { + ExtendedMetaData.INSTANCE.setFeatureKind((EStructuralFeature)property, ExtendedMetaData.ATTRIBUTE_FEATURE); + } + } + + + public Property createOpenContentProperty(HelperContext hc, String uri, String name, Type type) + { + ExtendedMetaData extendedMetaData = ((HelperContextImpl)hc).getExtendedMetaData(); + + // get/create document root + EPackage ePackage = extendedMetaData.getPackage(uri); + Type documentRoot = ePackage != null ? (Type)extendedMetaData.getType(ePackage, "") : null; + if (documentRoot == null) { + documentRoot = createType(hc, uri, null, false); + } + + // Determine if property already exists + Property newProperty = documentRoot.getProperty(name); + if (newProperty == null) { + // Create the new property 'under' the document root..... + newProperty = createProperty(documentRoot, name, type); + } else { + // if property already exists, validate the expected type + if (!newProperty.getType().equals(type)) + throw new IllegalArgumentException(); + } + return newProperty; + } + + + public void addAliasName(Property property, String aliasName) { + throw new UnsupportedOperationException(); // TODO: implement this + // method properly + // property.getAliasNames().add(aliasName); + } + + public void setMany(Property property, boolean isMany) { + ((EStructuralFeature)property).setUpperBound(isMany ? EStructuralFeature.UNBOUNDED_MULTIPLICITY : 1); + } + + public void setContainment(Property property, boolean isContainment) { + ((EReference)property).setContainment(isContainment); + } + + public void setDefault(Property property, String defaultValue) { + ((EStructuralFeature)property).setDefaultValueLiteral(defaultValue); + } + + public void setReadOnly(Property property, boolean isReadOnly) { + ((EStructuralFeature)property).setChangeable(!isReadOnly); + } + + public void setOpposite(Property property, Property opposite) { + ((EReference)property).setEOpposite((EReference)opposite); + } + + public void addTypeInstanceProperty(Type definedType, Property instanceProperty, Object value) { + addInstanceProperty((EModelElement)definedType, instanceProperty, value); + } + + public void addPropertyInstanceProperty(Property definedProperty, Property instanceProperty, Object value) { + addInstanceProperty((EModelElement)definedProperty, instanceProperty, value); + } + + protected void addInstanceProperty(EModelElement metaObject, Property property, Object value) { + String uri = property.getContainingType().getURI(); + EAnnotation eAnnotation = metaObject.getEAnnotation(uri); + if (eAnnotation == null) { + eAnnotation = EcoreFactory.eINSTANCE.createEAnnotation(); + eAnnotation.setSource(uri); + metaObject.getEAnnotations().add(eAnnotation); + } + // TODO if (property.isMany()) ... // convert list of values + String stringValue = convertToString(property.getType(), value); + eAnnotation.getDetails().put(property.getName(), stringValue); + } + + + public void addChangeListener(DataObject dob, EventListener listener) { + // Adapter l = (Adapter)listener; + ((Notifier)dob).eAdapters().add(listener); + } + + public void removeChangeListener(DataObject dob, EventListener listener) { + ((Notifier)dob).eAdapters().remove(listener); + } + + +} diff --git a/sdo-java/trunk/impl/src/main/java/org/apache/tuscany/sdo/helper/SDOSimpleDateFormat.java b/sdo-java/trunk/impl/src/main/java/org/apache/tuscany/sdo/helper/SDOSimpleDateFormat.java new file mode 100644 index 0000000000..9d14a264d8 --- /dev/null +++ b/sdo-java/trunk/impl/src/main/java/org/apache/tuscany/sdo/helper/SDOSimpleDateFormat.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 java.text.DateFormatSymbols; +import java.text.SimpleDateFormat; +import java.util.Locale; +import java.util.TimeZone; + +/** + * Fixes the bug reported at JIRA TUSCANY-1659 + * This class ensures the time zone will be formatted as the abbreviation format. + */ +public class SDOSimpleDateFormat extends SimpleDateFormat { + + private static final long serialVersionUID = 2519728288048681529L; + + public SDOSimpleDateFormat() { + super(); + setTimeZone(getTimeZone()); + + } + + public SDOSimpleDateFormat(String pattern) { + super(pattern); + setTimeZone(getTimeZone()); + + } + + public SDOSimpleDateFormat(String pattern, Locale locale) { + super(pattern, locale); + setTimeZone(getTimeZone()); + + } + + public SDOSimpleDateFormat(String pattern, DateFormatSymbols formatSymbols) { + super(pattern, formatSymbols); + setTimeZone(getTimeZone()); + + } + + /** + * Overrides the SimpleDateFormat.setTimeZone(TimeZone) method. + * It checks if the TimeZone to be set is in the abbreviation format. + * If not, it looks for its abbreviation format and set it. + * + * @param timeZone the time zone to be set + * + */ + public void setTimeZone(TimeZone timeZone) { + + if (timeZone.getID().length() != 3) { + String[] timeZoneNames = TimeZone.getAvailableIDs(timeZone.getRawOffset()); + + for (int i = 0 ; i < timeZoneNames.length ; i++ ) { + String actualTimeZoneName = timeZoneNames[i].trim(); + + // if the time zone name has 3 letters and ends with a T character, + // it's considered to be the abbreviation format + if (actualTimeZoneName.length() == 3 && actualTimeZoneName.charAt(actualTimeZoneName.length() - 1) == 'T') { + timeZone = TimeZone.getTimeZone(timeZoneNames[i]); + break; + + } + + } + + } + + super.setTimeZone(timeZone); + + } + +} diff --git a/sdo-java/trunk/impl/src/main/java/org/apache/tuscany/sdo/helper/SDOXSDEcoreBuilder.java b/sdo-java/trunk/impl/src/main/java/org/apache/tuscany/sdo/helper/SDOXSDEcoreBuilder.java new file mode 100644 index 0000000000..7a3a409479 --- /dev/null +++ b/sdo-java/trunk/impl/src/main/java/org/apache/tuscany/sdo/helper/SDOXSDEcoreBuilder.java @@ -0,0 +1,789 @@ +/** + * + * Licensed to the Apache Software Foundation (ASF) under one + * or more contributor license agreements. See the NOTICE file + * distributed with this work for additional information + * regarding copyright ownership. The ASF licenses this file + * to you under the Apache License, Version 2.0 (the + * "License"); you may not use this file except in compliance + * with the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, + * software distributed under the License is distributed on an + * "AS IS" BASIS, WITHOUT 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.Collection; +import java.util.Collections; +import java.util.Iterator; +import java.util.List; +import java.util.Map; +import java.util.Map.Entry; + +import javax.xml.XMLConstants; + +import org.apache.tuscany.sdo.SDOExtendedMetaData; +import org.apache.tuscany.sdo.api.SDOUtil; +import org.apache.tuscany.sdo.impl.AttributeImpl; +import org.apache.tuscany.sdo.impl.SDOFactoryImpl.SDOEcoreFactory; +import org.apache.tuscany.sdo.model.ModelFactory; +import org.eclipse.emf.common.notify.Adapter; +import org.eclipse.emf.common.notify.Notifier; +import org.eclipse.emf.common.notify.impl.AdapterFactoryImpl; +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.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.EPackageRegistryImpl; +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.EcoreUtil.UsageCrossReferencer; +import org.eclipse.xsd.XSDComplexTypeDefinition; +import org.eclipse.xsd.XSDComponent; +import org.eclipse.xsd.XSDConcreteComponent; +import org.eclipse.xsd.XSDElementDeclaration; +import org.eclipse.xsd.XSDFeature; +import org.eclipse.xsd.XSDNamedComponent; +import org.eclipse.xsd.XSDParticle; +import org.eclipse.xsd.XSDSchema; +import org.eclipse.xsd.XSDSimpleTypeDefinition; +import org.eclipse.xsd.XSDTerm; +import org.eclipse.xsd.XSDTypeDefinition; +import org.eclipse.xsd.ecore.EcoreSchemaBuilder; +import org.eclipse.xsd.util.XSDResourceFactoryImpl; +import org.eclipse.xsd.util.XSDResourceImpl; +import org.eclipse.xsd.util.XSDSchemaLocator; +import org.w3c.dom.Element; +import org.w3c.dom.NamedNodeMap; +import org.w3c.dom.Node; + +public class SDOXSDEcoreBuilder extends BaseSDOXSDEcoreBuilder +{ + protected boolean replaceConflictingTypes = false; + + public SDOXSDEcoreBuilder(ExtendedMetaData extendedMetaData, boolean replaceConflictingTypes) + { + super(extendedMetaData); + ecoreFactory = new SDOEcoreFactory(); + this.replaceConflictingTypes = replaceConflictingTypes; + populateTypeToTypeObjectMap((EPackage)ModelFactory.INSTANCE); + } + + /** + * 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; + } + + /* + * Required for Java 1.4.2 support + * Node#lookupPrefix is only available since DOM Level 3 (Java 5) + * and it doesn't return rebound prefix. + * XSDConstants.lookupQualifier isn't supposed to return rebound prefix either. + * This lookupPrefix returns any bound prefix no matter rebound to other NameSpace or not, for {@link #getEPackage}. + */ + static protected String lookupPrefix(Node element, String namespaceURI) { + String prefix = element.getPrefix(); + if (prefix != null && namespaceURI != null && namespaceURI.equals(element.getNamespaceURI())) + return prefix; + NamedNodeMap attributes = element.getAttributes(); + if (attributes != null) + for (int index = attributes.getLength(); index != 0;) { + Node attribute = attributes.item(--index); + if (XMLConstants.XMLNS_ATTRIBUTE_NS_URI.equals(attribute.getNamespaceURI()) && attribute.getNodeValue().equals(namespaceURI) + && XMLConstants.XMLNS_ATTRIBUTE.equals(attribute.getPrefix())) + return attribute.getLocalName(); + } + for (Node parent; (parent = element.getParentNode()) != null; element = parent) + if (parent.getNodeType() == Node.ELEMENT_NODE) + return lookupPrefix(parent, namespaceURI); + return null; + } + + public EPackage getEPackage(XSDNamedComponent xsdNamedComponent) { + XSDSchema containingXSDSchema = xsdNamedComponent.getSchema(); + String targetNamespace = containingXSDSchema == null ? + xsdNamedComponent.getTargetNamespace() : containingXSDSchema.getTargetNamespace(); + EPackage ePackage = (EPackage) targetNamespaceToEPackageMap.get(targetNamespace); + if (ePackage != null) + return ePackage; + ePackage = super.getEPackage(xsdNamedComponent); + String nsPrefix = lookupPrefix(xsdNamedComponent.getElement(), targetNamespace); + if (nsPrefix != null) + ePackage.setNsPrefix(nsPrefix); + return ePackage; + } + + public EClassifier getEClassifier(XSDTypeDefinition xsdTypeDefinition) { + EClassifier eClassifier = null; + if (xsdTypeDefinition != null) + { + if (rootSchema.getSchemaForSchemaNamespace().equals(xsdTypeDefinition.getTargetNamespace())) { + eClassifier = + getBuiltInEClassifier(xsdTypeDefinition.getURI(), xsdTypeDefinition.getName()); + } + else if (xsdTypeDefinition.getContainer() == null) { + EPackage pkg = extendedMetaData.getPackage(xsdTypeDefinition.getTargetNamespace()); + if(pkg != null) { + eClassifier = pkg.getEClassifier(xsdTypeDefinition.getName()); + } + } + } + if (eClassifier == null) { + eClassifier = super.getEClassifier(xsdTypeDefinition); + } + return eClassifier; + } + + public EDataType getEDataType(XSDSimpleTypeDefinition xsdSimpleTypeDefinition) { + EDataType eClassifier = null; + if (xsdSimpleTypeDefinition != null && rootSchema.getSchemaForSchemaNamespace().equals(xsdSimpleTypeDefinition.getTargetNamespace())) { + eClassifier = + (EDataType)getBuiltInEClassifier( + xsdSimpleTypeDefinition.getURI(), + xsdSimpleTypeDefinition.getName()); + } else { + eClassifier = super.getEDataType(xsdSimpleTypeDefinition); + } + return (EDataType)eClassifier; + } + + + /* (non-Javadoc) + * @see org.eclipse.xsd.ecore.XSDEcoreBuilder#createResourceSet() + */ + protected ResourceSet createResourceSet() { + ResourceSet result = super.createResourceSet(); + result.getResourceFactoryRegistry().getExtensionToFactoryMap().put("*", new XSDResourceFactoryImpl()); + result.getAdapterFactories().add(new XSDSchemaAdapterFactoryImpl()); + result.setPackageRegistry(new EPackageRegistryImpl(HelperContextImpl.getBuiltInModelRegistry())); + + return result; + } + + protected EClassifier getBuiltInEClassifier(String namespace, String name) + { + EClassifier eClassifier = null; + if ("base64Binary".equals(name)) { + eClassifier = (EClassifier)AttributeImpl.INTERNAL_BASE64_BYTES; + } + else if ("QName".equals(name)) { + eClassifier = (EClassifier)AttributeImpl.INTERNAL_QNAME; + } + else { + eClassifier = (EClassifier)SDOUtil.getXSDSDOType(name); + } + + if (eClassifier == null) + eClassifier = super.getBuiltInEClassifier(namespace, name); + return eClassifier; + } + + private void updateReferences(EObject oldEObject, EObject newEObject) + { + Collection usages = UsageCrossReferencer.find(oldEObject, targetNamespaceToEPackageMap.values()); + for (Iterator iter = usages.iterator(); iter.hasNext(); ) + { + EStructuralFeature.Setting setting = (EStructuralFeature.Setting)iter.next(); + EObject referencingEObject = setting.getEObject(); + EStructuralFeature eStructuralFeature = setting.getEStructuralFeature(); + if (eStructuralFeature.isChangeable()) + { + if (eStructuralFeature.isMany()) + { + List refList = (List)referencingEObject.eGet(eStructuralFeature); + int refIndex = refList.indexOf(oldEObject); + if (refIndex != -1) refList.set(refIndex, newEObject); + } + else + { + referencingEObject.eSet(eStructuralFeature, newEObject); + } + } + } + } + + private XSDTypeDefinition getXSDTypeDefinition(EClassifier eClassifier) + { + //TODO Maybe we should create a reverse (eModelElementToXSDComponentMap) for better performance. + // Use a HashMap subclass for xsdComponentToEModelElementMap that overrides put() to also add the + // reverse mapping in eModelElementToXSDComponentMap + XSDTypeDefinition xsdTypeDefinition = null; + for (Iterator i = xsdComponentToEModelElementMap.entrySet().iterator(); i.hasNext(); ) + { + Entry e = (Entry) i.next(); + if (eClassifier == e.getValue()) + { + xsdTypeDefinition = (XSDTypeDefinition)e.getKey(); + break; + } + } + return xsdTypeDefinition; + } + + private boolean sameType(XSDTypeDefinition t1, XSDTypeDefinition t2) + { + XSDConcreteComponent n1 = t1, n2 = t2; + while (n1 != null && n2 != null) + { + if (n1.eClass() != n2.eClass()) break; + if (n1 instanceof XSDNamedComponent /*&& n2 instanceof XSDNamedComponent*/) + { + String s1 = ((XSDNamedComponent)n1).getName(); + String s2 = ((XSDNamedComponent)n2).getName(); + if (s1 == null ? s1 != s2 : !s1.equals(s2)) break; + } + n1 = n1.getContainer(); + n2 = n2.getContainer(); + } + return n1 == null && n2 == null; + } + + protected void removeDuplicateEClassifier(EClassifier eClassifier, XSDTypeDefinition xsdTypeDefinition) + { + EPackage ePackage = eClassifier.getEPackage(); + List eClassifiers = ePackage.getEClassifiers(); + String name = eClassifier.getName(); + int size = eClassifiers.size(); + for (int index = eClassifiers.indexOf(eClassifier); ++index < size; ) + { + EClassifier nextEClassifier = (EClassifier)eClassifiers.get(index); + if (!name.equals(nextEClassifier.getName())) break; + if (extendedMetaData.getName(eClassifier).equals(extendedMetaData.getName(nextEClassifier))) + { + XSDTypeDefinition nextXSDTypeDefinition = getXSDTypeDefinition(nextEClassifier); + if (!sameType(nextXSDTypeDefinition, xsdTypeDefinition)) + { + //System.out.println("###EClassifier mismatch: "); + //System.out.println(" old: " + extendedMetaData.getName(nextEClassifier)); + //System.out.println(" new: " + extendedMetaData.getName(eClassifier)); + continue; + } + eClassifiers.remove(index); + updateReferences(nextEClassifier, eClassifier); + break; + } + } + } + + protected void removeDuplicateDocumentRootFeature(EClass eClass, EStructuralFeature eStructuralFeature) + { + List eStructuralFeatures = eClass.getEStructuralFeatures(); + int last = eStructuralFeatures.size() - 1; + String name = extendedMetaData.getName(eStructuralFeature); + for (int index = 0; index < last; index++) + { + EStructuralFeature otherEStructuralFeature = (EStructuralFeature)eStructuralFeatures.get(index); + if (name.equals(extendedMetaData.getName(otherEStructuralFeature))) + { + if (otherEStructuralFeature.eClass() != eStructuralFeature.eClass()) + { + //System.out.println("###EStructuralFeature mismatch: "); + //System.out.println(" old: " + extendedMetaData.getName(otherEStructuralFeature)); + //System.out.println(" new: " + extendedMetaData.getName(eStructuralFeature)); + continue; + } + eStructuralFeatures.remove(index); + updateReferences(otherEStructuralFeature, eStructuralFeature); + break; + } + } + } + + public EClass computeEClass(XSDComplexTypeDefinition xsdComplexTypeDefinition) { + if (xsdComplexTypeDefinition == null) return super.computeEClass(xsdComplexTypeDefinition); + EPackage ePackage = (EPackage)targetNamespaceToEPackageMap.get(xsdComplexTypeDefinition.getTargetNamespace()); + if (ePackage != null && TypeHelperImpl.getBuiltInModels().contains(ePackage)) { + EClassifier eclassifier = ePackage.getEClassifier(xsdComplexTypeDefinition.getName()); + if (eclassifier != null) return (EClass)eclassifier; + } + EClass eClass = super.computeEClass(xsdComplexTypeDefinition); + if (replaceConflictingTypes) removeDuplicateEClassifier(eClass, xsdComplexTypeDefinition); + String aliasNames = getEcoreAttribute(xsdComplexTypeDefinition.getElement(), "aliasName"); + if (aliasNames != null) { + SDOExtendedMetaData.INSTANCE.setAliasNames(eClass, aliasNames); + } + return eClass; + } + + protected EClassifier computeEClassifier(XSDTypeDefinition xsdTypeDefinition) { + if (xsdTypeDefinition == null) return super.computeEClassifier(xsdTypeDefinition); + EPackage ePackage = (EPackage)targetNamespaceToEPackageMap.get(xsdTypeDefinition.getTargetNamespace()); + if (ePackage != null && TypeHelperImpl.getBuiltInModels().contains(ePackage)) { + EClassifier eclassifier = ePackage.getEClassifier(xsdTypeDefinition.getName()); + if (eclassifier != null) return eclassifier; + } + 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) { + if (xsdSimpleTypeDefinition == null) return super.computeEDataType(xsdSimpleTypeDefinition); + EPackage ePackage = (EPackage)targetNamespaceToEPackageMap.get(xsdSimpleTypeDefinition.getTargetNamespace()); + if (ePackage != null && TypeHelperImpl.getBuiltInModels().contains(ePackage)) { + EClassifier eclassifier = ePackage.getEClassifier(xsdSimpleTypeDefinition.getName()); + if (eclassifier != null) return (EDataType)eclassifier; + } + EDataType eDataType = super.computeEDataType(xsdSimpleTypeDefinition); + if (replaceConflictingTypes) removeDuplicateEClassifier(eDataType, 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); + + if (xsdComponent instanceof XSDParticle) { + XSDTerm xsdTerm = ((XSDParticle)xsdComponent).getTerm(); + if (xsdTerm instanceof XSDElementDeclaration && ((XSDElementDeclaration)xsdTerm).isNillable()) + EcoreUtil.setAnnotation(feature, ExtendedMetaData.ANNOTATION_URI, "nillable", "true"); + } + + //FB What is the following for? + if (feature instanceof EReference) + { + EReference eReference = (EReference)feature; + if (xsdComponent != null && xsdComponent instanceof XSDParticle) + { + XSDTerm xsdTerm = ((XSDParticle)xsdComponent).getTerm(); + if (xsdTerm instanceof XSDElementDeclaration) + { + XSDTypeDefinition elementTypeDefinition = getEffectiveTypeDefinition(xsdComponent, (XSDElementDeclaration)xsdTerm); + EClassifier eClassifier = getEClassifier(elementTypeDefinition); + if (elementTypeDefinition instanceof XSDSimpleTypeDefinition && eClassifier instanceof EClass) + { + eReference.setContainment(true); + } + } + } + } + + feature.setName(name); // this is needed because super.createFeature() does EMF name mangling (toLower) + + if (replaceConflictingTypes && "".equals(extendedMetaData.getName(eClass))) + removeDuplicateDocumentRootFeature(eClass, feature); + + 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); + if (container instanceof XSDTypeDefinition) + { + result = "_" + result; + } + } + + } + return result; + } + + protected XSDTypeDefinition getEffectiveTypeDefinition(XSDComponent xsdComponent, XSDFeature xsdFeature) + { + if (xsdFeature == null) + { + return super.getEffectiveTypeDefinition(xsdComponent, 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. + } + + private XSDSchema loadEPackage(EPackage ePackage) + { + XSDSchema ePackageXSDSchema = null; + XSDEcoreSchemaBuilder schemaBuilder = new XSDEcoreSchemaBuilder(extendedMetaData); + ePackageXSDSchema = schemaBuilder.getSchema(ePackage); + xsdComponentToEModelElementMap.putAll(schemaBuilder.getXSDComponentToEModelElementMap()); + targetNamespaceToEPackageMap.put(ePackage.getNsURI(), ePackage); + populateTypeToTypeObjectMap(ePackage); + xsdSchemas.add(ePackageXSDSchema); + return ePackageXSDSchema; + } + + private static class XSDEcoreSchemaBuilder extends EcoreSchemaBuilder + { + public XSDEcoreSchemaBuilder(ExtendedMetaData extendedMetaData) + { + super(extendedMetaData); + } + + public Map getXSDComponentToEModelElementMap() + { + return xsdComponentToEModelElementMap; + } + } + + class XSDSchemaAdapterFactoryImpl extends AdapterFactoryImpl + { + protected SchemaLocator schemaLocator = new SchemaLocator(); + + public boolean isFactoryForType(Object type) + { + return type == XSDSchemaLocator.class; + } + + public Adapter adaptNew(Notifier target, Object type) + { + return schemaLocator; + } + + class SchemaLocator extends XSDResourceImpl.SchemaLocator + { + public XSDSchema locateSchema(XSDSchema xsdSchema, String namespaceURI, + String rawSchemaLocationURI, String resolvedSchemaLocation) + { + if (targetNamespaceToEPackageMap.containsKey(namespaceURI)) + { + for (Iterator iter = xsdSchemas.iterator(); iter.hasNext();) { + XSDSchema schema = (XSDSchema)iter.next(); + String targetNamespace = schema.getTargetNamespace(); + if (targetNamespace != null && targetNamespace.equals(namespaceURI)) + { + return schema; + } + } + } + if (namespaceURI != null && !namespaceURI.equals(xsdSchema.getTargetNamespace())) + { + EPackage ePackage = extendedMetaData.getPackage(namespaceURI); + if (ePackage != null) + { + XSDSchema schema = loadEPackage(ePackage); + return schema; + } + } + return super.locateSchema(xsdSchema, namespaceURI, rawSchemaLocationURI, resolvedSchemaLocation); + } + } + } + +} diff --git a/sdo-java/trunk/impl/src/main/java/org/apache/tuscany/sdo/helper/SchemaBuilder.java b/sdo-java/trunk/impl/src/main/java/org/apache/tuscany/sdo/helper/SchemaBuilder.java new file mode 100644 index 0000000000..8ff7769041 --- /dev/null +++ b/sdo-java/trunk/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 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.createHelperContext().getXSDHelper(); + + 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/sdo-java/trunk/impl/src/main/java/org/apache/tuscany/sdo/helper/TypeHelperImpl.java b/sdo-java/trunk/impl/src/main/java/org/apache/tuscany/sdo/helper/TypeHelperImpl.java new file mode 100644 index 0000000000..1aa2ae466b --- /dev/null +++ b/sdo-java/trunk/impl/src/main/java/org/apache/tuscany/sdo/helper/TypeHelperImpl.java @@ -0,0 +1,317 @@ +/** + * + * Licensed to the Apache Software Foundation (ASF) under one + * or more contributor license agreements. See the NOTICE file + * distributed with this work for additional information + * regarding copyright ownership. The ASF licenses this file + * to you under the Apache License, Version 2.0 (the + * "License"); you may not use this file except in compliance + * with the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, + * software distributed under the License is distributed on an + * "AS IS" BASIS, WITHOUT 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.lang.reflect.Method; +import java.util.ArrayList; +import java.util.HashSet; +import java.util.Iterator; +import java.util.List; +import java.util.Set; + +import org.apache.tuscany.sdo.api.SDOUtil; +import org.apache.tuscany.sdo.model.ModelFactory; +import org.apache.tuscany.sdo.model.internal.InternalFactory; +import org.apache.tuscany.sdo.model.java.JavaFactory; +import org.apache.tuscany.sdo.model.xml.XMLFactory; +import org.apache.tuscany.sdo.model.xml.impl.XMLFactoryImpl; +import org.apache.tuscany.sdo.util.DataObjectUtil; +import org.eclipse.emf.ecore.EClass; +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.Sequence; +import commonj.sdo.Type; +import commonj.sdo.helper.HelperContext; +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 HelperContext helperContext; + private ExtendedMetaData extendedMetaData; + + static protected Set builtInModels = null; + + static public Set getBuiltInModels() { + if (builtInModels == null) { + builtInModels = new HashSet(); + builtInModels.add(ModelFactory.INSTANCE); + builtInModels.add(JavaFactory.INSTANCE); + builtInModels.add(XMLFactory.INSTANCE); + builtInModels.add(InternalFactory.INSTANCE); + } + return TypeHelperImpl.builtInModels; + } + + public ExtendedMetaData getExtendedMetaData() { + return extendedMetaData; + } + + // JIRA-helperContext + public TypeHelperImpl(HelperContext hc) { + this.helperContext = hc; + this.extendedMetaData = ((HelperContextImpl)hc).extendedMetaData; + + // Register the standard (predefined) SDO types + getBuiltInModels(); // Simply accessing EMF packages causes auto + // registration in global registry + + // MetadataFactoryImpl.init(); //FB do we want to preregister this? + } + + + 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; + } + + private Method getGetStaticTypeMethod(Class classObj) { + try { + Method method = classObj.getMethod("getStaticType", null); + return method; + } + catch (Exception e) { + return null; + } + } + + public Type getType(Class interfaceClass) { + Type type = SDOUtil.getJavaSDOType(interfaceClass); + if (type != null) { + return type; + } + + Class sdoTypeImplClass = interfaceClass; + Method getStaticTypeMethod = getGetStaticTypeMethod(interfaceClass); + if (getStaticTypeMethod == null) { + String sdoTypeImplClassName = interfaceClass.getName(); + if (sdoTypeImplClassName.endsWith("Impl") == false) { + sdoTypeImplClass = DataObjectUtil.getImplementationClass(interfaceClass, false); + if (sdoTypeImplClass == null) { + return null; + } + + getStaticTypeMethod = getGetStaticTypeMethod(sdoTypeImplClass); + if (getStaticTypeMethod == null) { + return null; + } + } + else { + return null; + } + } + + try { + Object implInstance = sdoTypeImplClass.newInstance(); + return (Type)getStaticTypeMethod.invoke(implInstance, null); + } + catch (Exception e) { + 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(helperContext, modeledType.getUri(), modeledType.getName(), isDataType); + if (definedType == null) { + // If type already defined, return 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); + + initializeProperty(definedProperty, modeledProperty); + } + + // define a global property to accompany the type definition + if (!SDOUtil.isDocumentRoot(definedType)) { + String propertyName = definedType.getName(); + if (!Character.isLowerCase(propertyName.charAt(0))) { + propertyName = propertyName.substring(0, 1).toLowerCase() + propertyName.substring(1); + } + Property globalProperty = + SDOUtil.createOpenContentProperty(helperContext, definedType.getURI(), propertyName, definedType); + SDOUtil.setContainment(globalProperty, true); + } + } // if (!isDataType) + + addTypeInstanceProperties(definedType, (DataObject)modeledType); + + return definedType; + } + + protected void addTypeInstanceProperties(Type definedType, DataObject modeledType) { + List instanceProperties = SDOUtil.getOpenContentProperties(modeledType); + for (Iterator iter = instanceProperties.iterator(); iter.hasNext();) { + Property property = (Property)iter.next(); + SDOUtil.addTypeInstanceProperty(definedType, property, modeledType.get(property)); + } + } + + protected void addPropertyInstanceProperties(Property definedProperty, DataObject modeledProperty) { + List instanceProperties = SDOUtil.getOpenContentProperties(modeledProperty); + for (Iterator iter = instanceProperties.iterator(); iter.hasNext();) { + Property property = (Property)iter.next(); + SDOUtil.addPropertyInstanceProperty(definedProperty, property, modeledProperty.get(property)); + } + } + + 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); + } + } + + protected void initializeProperty(Property newProperty, org.apache.tuscany.sdo.model.Property modeledProperty) { + 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 (newProperty.getType().isDataType()) { + // Setting xmlElement to FALSE only makes sense here + Boolean isXmlElement = Boolean.TRUE; // By default, a SDO property is an XSD element + Sequence anyAttr = modeledProperty.getAnyAttribute(); + for (int i=0; i + * + * + * created from this XML Schema fragment: + * + * + * + * + * 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 + { + save(outputStream, null, options); + } + + 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 save(Node node, Object options) throws IOException + { + save(null, (Document)node, options); + } + + protected void save(OutputStream outputStream, Document document, Object options) throws IOException + { + EObject oldContainer = null; + Resource oldResource = null; + EReference oldContainmentReference = null; + int oldContainmentIndex = -1; + + if (documentRoot != null) + { + oldContainer = rootObject.eContainer(); + if (oldContainer != null) + oldContainmentReference = rootObject.eContainmentFeature(); + else + oldResource = rootObject.eResource(); + if (oldContainer != documentRoot || oldContainmentReference != rootElement) + { + if (oldResource != null) + { + oldContainmentIndex = oldResource.getContents().indexOf(rootObject); + oldResource.getContents().remove(oldContainmentIndex); + } + else if (oldContainmentReference != null && FeatureMapUtil.isMany(oldContainer, oldContainmentReference)) + oldContainmentIndex = ((List)oldContainer.eGet(oldContainmentReference)).indexOf(rootObject); + + Object rootValue = + rootElement instanceof EAttribute && rootObject instanceof SimpleAnyTypeDataObject ? + ((SimpleAnyTypeDataObject)rootObject).getValue() : rootObject; + + documentRoot.eSet(rootElement, rootValue); + } + } + + if (outputStream != null) + resource.save(outputStream, (Map)options); + else // if (document != null) + resource.save(document, (Map)options, null); + + if (oldResource != null) + { + oldResource.getContents().add(oldContainmentIndex, rootObject); + } + if (rootElement instanceof EReference) + { + if (oldContainer != null) + { + if (oldContainer != documentRoot || oldContainmentReference != rootElement) + { + if (FeatureMapUtil.isMany(oldContainer, oldContainmentReference)) + ((List)oldContainer.eGet(oldContainmentReference)).add(oldContainmentIndex, rootObject); + else + oldContainer.eSet(oldContainmentReference, rootObject); + } + } + else if (documentRoot != null) + { + documentRoot.eSet(rootElement, null); + } + } + } + + 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 final void load(Node node, Object options) throws IOException { + resource.load(node, (Map)options); + initLoadedRoot(); + } + + protected final void load(XMLStreamReader reader, Map options) throws IOException + { + ((SDOXMLResourceImpl)resource).load(reader, options); + 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(); + } + + /** + * @return a Map object with key-value pair where key is the DataObject and value contains the info + * about the unknown properties for the DataObject + */ + public Map getUnknownProperties(){ + return resource.getEObjectToExtensionMap(); + } + + 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 + if (rootObject == null) + rootObject = ((SDOXMLResourceImpl) resource).root; + } + 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/sdo-java/trunk/impl/src/main/java/org/apache/tuscany/sdo/helper/XMLHelperImpl.java b/sdo-java/trunk/impl/src/main/java/org/apache/tuscany/sdo/helper/XMLHelperImpl.java new file mode 100644 index 0000000000..4d0f3d7de8 --- /dev/null +++ b/sdo-java/trunk/impl/src/main/java/org/apache/tuscany/sdo/helper/XMLHelperImpl.java @@ -0,0 +1,193 @@ +/** + * + * Licensed to the Apache Software Foundation (ASF) under one + * or more contributor license agreements. See the NOTICE file + * distributed with this work for additional information + * regarding copyright ownership. The ASF licenses this file + * to you under the Apache License, Version 2.0 (the + * "License"); you may not use this file except in compliance + * with the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, + * software distributed under the License is distributed on an + * "AS IS" BASIS, WITHOUT 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 java.util.Map; + +import javax.xml.transform.Result; +import javax.xml.transform.Source; +import javax.xml.transform.dom.DOMResult; +import javax.xml.transform.dom.DOMSource; +import javax.xml.transform.sax.SAXResult; +import javax.xml.transform.sax.SAXSource; +import javax.xml.transform.stream.StreamResult; +import javax.xml.transform.stream.StreamSource; + +import org.eclipse.emf.ecore.util.ExtendedMetaData; +import org.xml.sax.InputSource; + +import commonj.sdo.DataObject; +import commonj.sdo.helper.HelperContext; +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 { + protected HelperContext helperContext; + private ExtendedMetaData extendedMetaData; + + + public XMLHelperImpl(HelperContext hc) { + this.helperContext = hc; + this.extendedMetaData = ((HelperContextImpl)hc).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(String inputString, Object options) { + try { + return load(new StringReader(inputString), null, options); + } catch (IOException e) { + throw new RuntimeException(e); // should never happen + } + } + + public XMLDocument load(InputStream inputStream) throws IOException { + return load(inputStream, null, null); + } + + private Object checkSetOptions(Object options) throws IOException { + if (options != null && !(options instanceof Map)) { + throw new IOException("Invalid load options!"); + } + + if (helperContext != null) { + return ((HelperContextImpl)helperContext).getMergedOption((Map)options); + } else {// null is acceptable as it will be ignored + return options; + } + } + + public XMLDocument load(InputStream inputStream, String locationURI, Object options) throws IOException { + options = checkSetOptions(options); + 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); + options = checkSetOptions(options); + document.load(inputReader, locationURI, options); + return document; + } + + public XMLDocument load(Source source, String locationURI, Object options) throws IOException { + options = checkSetOptions(options); + if (source instanceof DOMSource) { + DOMSource domSource = (DOMSource)source; + XMLDocumentImpl document = new XMLDocumentImpl(extendedMetaData, options); + document.load(domSource.getNode(), options); + return document; + } else if (source instanceof SAXSource) { + XMLDocumentImpl document = new XMLDocumentImpl(extendedMetaData, options); + InputSource inputSource = SAXSource.sourceToInputSource(source); + document.load(inputSource, locationURI, options); + return document; + } else if (source instanceof StreamSource) { + return load(((StreamSource)source).getInputStream(), locationURI, options); + } else { + throw new UnsupportedOperationException(); + } + } + + 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 String save(DataObject dataObject, String rootElementURI, String rootElementName, Object options) { + StringWriter stringWriter = new StringWriter(); + try { + save(createDocument(dataObject, rootElementURI, rootElementName), stringWriter, options); + 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(DataObject dataObject, + String rootElementURI, + String rootElementName, + OutputStream outputStream, + Object options) throws IOException { + save(createDocument(dataObject, rootElementURI, rootElementName), outputStream, null); + } + + public void save(XMLDocument xmlDocument, OutputStream outputStream, Object options) throws IOException { + options = checkSetOptions(options); + ((XMLDocumentImpl)xmlDocument).save(outputStream, options); + } + + public void save(XMLDocument xmlDocument, Writer outputWriter, Object options) throws IOException { + options = checkSetOptions(options); + ((XMLDocumentImpl)xmlDocument).save(outputWriter, options); + } + + public void save(XMLDocument xmlDocument, Result outputResult, Object options) throws IOException { + options = checkSetOptions(options); + if (outputResult instanceof DOMResult) { + ((XMLDocumentImpl)xmlDocument).save(((DOMResult)outputResult).getNode(), options); + } else if (outputResult instanceof SAXResult) { + throw new UnsupportedOperationException(); + } else if (outputResult instanceof StreamResult) { + save(xmlDocument, ((StreamResult)outputResult).getOutputStream(), options); + } else { + throw new UnsupportedOperationException(); + } + } + + public XMLDocument createDocument(DataObject dataObject, String rootElementURI, String rootElementName) { + XMLDocument xmlDocument = new XMLDocumentImpl(extendedMetaData, dataObject, rootElementURI, rootElementName); + xmlDocument.setEncoding("UTF-8"); + return xmlDocument; + } + + public HelperContext getHelperContext() { + return helperContext; + } +} diff --git a/sdo-java/trunk/impl/src/main/java/org/apache/tuscany/sdo/helper/XMLStreamHelper.java b/sdo-java/trunk/impl/src/main/java/org/apache/tuscany/sdo/helper/XMLStreamHelper.java new file mode 100644 index 0000000000..851c7d93dd --- /dev/null +++ b/sdo-java/trunk/impl/src/main/java/org/apache/tuscany/sdo/helper/XMLStreamHelper.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.helper; + +/** + * @deprecated + */ +public interface XMLStreamHelper extends org.apache.tuscany.sdo.api.XMLStreamHelper { +} diff --git a/sdo-java/trunk/impl/src/main/java/org/apache/tuscany/sdo/helper/XMLStreamHelperImpl.java b/sdo-java/trunk/impl/src/main/java/org/apache/tuscany/sdo/helper/XMLStreamHelperImpl.java new file mode 100644 index 0000000000..a07b9b6a71 --- /dev/null +++ b/sdo-java/trunk/impl/src/main/java/org/apache/tuscany/sdo/helper/XMLStreamHelperImpl.java @@ -0,0 +1,151 @@ +/** + * + * Licensed to the Apache Software Foundation (ASF) under one + * or more contributor license agreements. See the NOTICE file + * distributed with this work for additional information + * regarding copyright ownership. The ASF licenses this file + * to you under the Apache License, Version 2.0 (the + * "License"); you may not use this file except in compliance + * with the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, + * software distributed under the License is distributed on an + * "AS IS" BASIS, WITHOUT 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.Map; + +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.HelperContext; +import commonj.sdo.helper.XMLDocument; + +/** + * @version $Rev$ $Date$ + */ +public class XMLStreamHelperImpl implements XMLStreamHelper { + protected HelperContext helperContext; + + public XMLStreamHelperImpl(HelperContext hc) { + this.helperContext = hc; + } + + private Map checkSetOptions(Map options) { + if (helperContext != null) { + return ((HelperContextImpl)helperContext).getMergedOption(options); + } else {// null is acceptable as it will be ignored + return options; + } + } + + public XMLDocument load(XMLStreamReader reader) throws XMLStreamException, IllegalStateException { + if (reader.getEventType() != XMLStreamConstants.START_DOCUMENT) + throw new IllegalStateException(); + + return loadDocument(reader, null); + } + + public void save(XMLDocument document, XMLStreamWriter writer) throws XMLStreamException { + XMLStreamReader reader = createXMLStreamReader(document); + new XMLStreamSerializer().serialize(reader, writer); + } + + public void save(XMLDocument document, XMLStreamWriter writer, Map options) throws XMLStreamException { + XMLStreamReader reader = createXMLStreamReader(document); + options = checkSetOptions(options); + new XMLStreamSerializer().serialize(reader, writer, options); + } + + public XMLStreamReader createXMLStreamReader(XMLDocument document) throws XMLStreamException { + XMLStreamReader reader = + new DataObjectXMLStreamReader(document.getRootObject(), document.getRootElementURI(), document + .getRootElementName(), helperContext.getTypeHelper()); + // Wrap the reader so that its position will be START_ELEMENT + return new XMLDocumentStreamReader(reader); + + } + + public final DataObject loadObject(XMLStreamReader reader, Map options) 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, options).getRootObject(); + } + + public DataObject loadObject(XMLStreamReader reader) throws XMLStreamException, IllegalStateException { + return loadObject(reader, null); + } + + public void saveObject(DataObject sdo, XMLStreamWriter writer) throws XMLStreamException { + XMLStreamReader reader = createXMLStreamReader(sdo); + new XMLStreamSerializer().serialize(new XMLDocumentStreamReader(reader), writer); + } + + public void saveObject(DataObject sdo, XMLStreamWriter writer, Map options) throws XMLStreamException { + XMLStreamReader reader = createXMLStreamReader(sdo); + options = checkSetOptions(options); + new XMLStreamSerializer().serialize(new XMLDocumentStreamReader(reader), writer, options); + } + + public XMLStreamReader createXMLStreamReader(DataObject dataObject) { + if (dataObject == null) { + return null; + } + 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, helperContext.getTypeHelper()); + } + + protected XMLDocument loadDocument(XMLStreamReader reader, Map options) throws XMLStreamException { + try { + XMLDocumentImpl document = new XMLDocumentImpl(((HelperContextImpl)helperContext).extendedMetaData, null); + options = checkSetOptions(options); + document.load(reader, options); + 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); // ???? + } + } + + public HelperContext getHelperContext() { + return helperContext; + } +} diff --git a/sdo-java/trunk/impl/src/main/java/org/apache/tuscany/sdo/helper/XSDHelperImpl.java b/sdo-java/trunk/impl/src/main/java/org/apache/tuscany/sdo/helper/XSDHelperImpl.java new file mode 100644 index 0000000000..829acd38f4 --- /dev/null +++ b/sdo-java/trunk/impl/src/main/java/org/apache/tuscany/sdo/helper/XSDHelperImpl.java @@ -0,0 +1,327 @@ +/** + * + * Licensed to the Apache Software Foundation (ASF) under one + * or more contributor license agreements. See the NOTICE file + * distributed with this work for additional information + * regarding copyright ownership. The ASF licenses this file + * to you under the Apache License, Version 2.0 (the + * "License"); you may not use this file except in compliance + * with the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, + * software distributed under the License is distributed on an + * "AS IS" BASIS, WITHOUT 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.HashMap; +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.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.xsd.XSDSchema; +import org.eclipse.xsd.ecore.XSDEcoreBuilder; +import org.eclipse.xsd.util.XSDResourceFactoryImpl; +import org.eclipse.xsd.util.XSDResourceImpl; +import org.xml.sax.InputSource; + +import commonj.sdo.Property; +import commonj.sdo.Type; +import commonj.sdo.helper.HelperContext; +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 { + protected boolean extensibleNamespaces = false; + protected HelperContext helperContext; + protected SDOXSDEcoreBuilder nondelegatingEcoreBuilder = null; + protected HashMap tcclToEcoreBuilderMap = null; + private ExtendedMetaData extendedMetaData; + + public XSDHelperImpl(HelperContext hc, String redefineBuiltIn, boolean extensibleNamespaces) { + this.helperContext = hc; + this.extensibleNamespaces = extensibleNamespaces; + extendedMetaData = ((HelperContextImpl)helperContext).extendedMetaData; + + SDOXSDEcoreBuilder ecoreBuilder = createEcoreBuilder(); + + if (extendedMetaData instanceof SDOExtendedMetaDataImpl && ((SDOExtendedMetaDataImpl)extendedMetaData) + .getRegistry() instanceof EPackageRegistryImpl.Delegator) { + tcclToEcoreBuilderMap = new HashMap(); + putTCCLEcoreBuilder(ecoreBuilder); + } else { + nondelegatingEcoreBuilder = ecoreBuilder; + } + + if (redefineBuiltIn != null) { // Redefining/regenerating this built-in + // model + ecoreBuilder.getTargetNamespaceToEPackageMap().remove(redefineBuiltIn); + } + } + + public XSDHelperImpl(HelperContext hc) { + this(hc, null, false); + } + + /** + * Redefine/regenerating the built-in model + * @param redefineBuiltIn + */ + public void setRedefineBuiltIn(String redefineBuiltIn) { + if (redefineBuiltIn != null) { + getEcoreBuilder().getTargetNamespaceToEPackageMap().remove(redefineBuiltIn); + } + } + + public void setExtensibleNamespaces(boolean extensibleNamespaces) { + this.extensibleNamespaces = extensibleNamespaces; + } + + protected SDOXSDEcoreBuilder createEcoreBuilder() { + SDOXSDEcoreBuilder ecoreBuilder = new SDOXSDEcoreBuilder(extendedMetaData, extensibleNamespaces); + + // Add the built-in models to the targetNamespaceToEPackageMap so they + // can't be (re)defined/overridden + for (Iterator iter = TypeHelperImpl.getBuiltInModels().iterator(); iter.hasNext();) { + EPackage ePackage = (EPackage)iter.next(); + ecoreBuilder.getTargetNamespaceToEPackageMap().put(ePackage.getNsURI(), ePackage); + } + + return ecoreBuilder; + } + + protected void putTCCLEcoreBuilder(XSDEcoreBuilder ecoreBuilder) { + ClassLoader tccl = Thread.currentThread().getContextClassLoader(); + if (tcclToEcoreBuilderMap.get(tccl) == null) { + tcclToEcoreBuilderMap.put(tccl, ecoreBuilder); + } + } + + protected SDOXSDEcoreBuilder getEcoreBuilder() { + if (nondelegatingEcoreBuilder != null) + return nondelegatingEcoreBuilder; + + SDOXSDEcoreBuilder result = null; + try { + for (ClassLoader tccl = Thread.currentThread().getContextClassLoader(); tccl != null; tccl = + tccl.getParent()) { + result = (SDOXSDEcoreBuilder)tcclToEcoreBuilderMap.get(tccl); + if (result != null) + return result; + } // for + } catch (SecurityException exception) { + // exception.printStackTrace(); + } + + result = createEcoreBuilder(); + putTCCLEcoreBuilder(result); + + return result; + } + + 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 { + SDOXSDEcoreBuilder ecoreBuilder = getEcoreBuilder(); + ResourceSet resourceSet = ecoreBuilder.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(); + + String targetNamespace = schema.getTargetNamespace(); + EPackage ePackage = extendedMetaData.getPackage(targetNamespace); + if (extensibleNamespaces || ePackage == null || TypeHelperImpl.getBuiltInModels().contains(ePackage)) { + Map targetNamespaceToEPackageMap = ecoreBuilder.getTargetNamespaceToEPackageMap(); + targetNamespaceToEPackageMap.remove(targetNamespace); + + Collection originalEPackages = new HashSet(targetNamespaceToEPackageMap.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 ""; + } + } + + public HelperContext getHelperContext() { + return helperContext; + } +} diff --git a/sdo-java/trunk/impl/src/main/java/org/apache/tuscany/sdo/impl/AnyTypeDataObjectImpl.java b/sdo-java/trunk/impl/src/main/java/org/apache/tuscany/sdo/impl/AnyTypeDataObjectImpl.java new file mode 100644 index 0000000000..b7d22c3be0 --- /dev/null +++ b/sdo-java/trunk/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; + +/** + * + * An implementation of the model object 'EData Object Any Type'. + * + *

+ * The following features are implemented: + *

    + *
  • {@link org.apache.tuscany.sdo.impl.AnyTypeDataObjectImpl#getMixed Mixed}
  • + *
  • {@link org.apache.tuscany.sdo.impl.AnyTypeDataObjectImpl#getAny Any}
  • + *
  • {@link org.apache.tuscany.sdo.impl.AnyTypeDataObjectImpl#getAnyAttribute Any Attribute}
  • + *
+ *

+ * + * @generated + */ +public class AnyTypeDataObjectImpl extends DataObjectImpl implements AnyTypeDataObject +{ + /** + * The cached value of the '{@link #getMixed() Mixed}' attribute list. + * + * + * @see #getMixed() + * @generated + * @ordered + */ + protected FeatureMap mixed = null; + + /** + * The cached value of the '{@link #getAnyAttribute() Any Attribute}' attribute list. + * + * + * @see #getAnyAttribute() + * @generated + * @ordered + */ + protected FeatureMap anyAttribute = null; + + /** + * + * + * @generated + */ + protected AnyTypeDataObjectImpl() + { + super(); + } + + /** + * + * + * @generated + */ + protected EClass eStaticClass() + { + return SDOPackage.eINSTANCE.getAnyTypeDataObject(); + } + + /** + * + * + * @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; + } + + /** + * + * + * @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(); + } + + /** + * + * + * @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; + } + + /** + * + * + * @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); + } + + /** + * + * + * @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); + } + + /** + * + * + * @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); + } + + /** + * + * + * @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); + } + + /** + * + * + * @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); + } + + /** + * + * + * @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); + } + + /** + * + * + * @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); + } + + /** + * + * + * @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/sdo-java/trunk/impl/src/main/java/org/apache/tuscany/sdo/impl/AttributeImpl.java b/sdo-java/trunk/impl/src/main/java/org/apache/tuscany/sdo/impl/AttributeImpl.java new file mode 100644 index 0000000000..e02977e0e8 --- /dev/null +++ b/sdo-java/trunk/impl/src/main/java/org/apache/tuscany/sdo/impl/AttributeImpl.java @@ -0,0 +1,836 @@ +/** + * + * Licensed to the Apache Software Foundation (ASF) under one + * or more contributor license agreements. See the NOTICE file + * distributed with this work for additional information + * regarding copyright ownership. The ASF licenses this file + * to you under the Apache License, Version 2.0 (the + * "License"); you may not use this file except in compliance + * with the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, + * software distributed under the License is distributed on an + * "AS IS" BASIS, WITHOUT 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.SDOPackage; +import org.apache.tuscany.sdo.model.ModelFactory; +import org.apache.tuscany.sdo.model.impl.ModelFactoryImpl; +import org.apache.tuscany.sdo.model.internal.InternalFactory; +import org.apache.tuscany.sdo.model.internal.impl.InternalFactoryImpl; +import org.apache.tuscany.sdo.util.BasicSequence; +import org.apache.tuscany.sdo.util.DataObjectUtil; +import org.apache.tuscany.sdo.util.SDOUtil; +import org.eclipse.emf.ecore.EClass; +import org.eclipse.emf.ecore.EClassifier; +import org.eclipse.emf.ecore.EStructuralFeature; +import org.eclipse.emf.ecore.InternalEObject; +import org.eclipse.emf.ecore.impl.EAttributeImpl; +import org.eclipse.emf.ecore.util.EcoreUtil; +import org.eclipse.emf.ecore.util.ExtendedMetaData; +import org.eclipse.emf.ecore.util.FeatureMap; + +import commonj.sdo.Property; +import commonj.sdo.Sequence; +import commonj.sdo.Type; + +/** + * + * An implementation of the model object 'Attribute'. + * + *

+ *

+ * + * @generated + */ +public class AttributeImpl extends EAttributeImpl implements Property, org.apache.tuscany.sdo.model.Property/*, DataObject*/ +{ + /** + * + * + * @generated + */ + protected AttributeImpl() + { + super(); + } + + /** + * + * + * @generated NOT + */ + protected EClass eStaticClass() + { + return SDOPackage.eINSTANCE.getAttribute(); + } + + /** + * + * + * @generated NOT + */ + public Object getDefault() + { + return getDefaultValue(); + } + + /** + * + * + * @generated NOT + */ + public boolean isReadOnly() + { + //return "true".equals(EcoreUtil.getAnnotation(this, "commonj.sdo", "readOnly")); + return !isChangeable(); //TODO semantics don't exactly match? + } + + /** + * Single-valued SDO properties behave as EMF unsettable, multi-valued properties as EMF !unsettable + */ + public boolean isUnsettable() + { + return !isMany(); + } + + public boolean isUnique() + { + return false; + } + + protected List aliasNames = null; + + /** + * + * + * @generated NOT + */ + public List getAliasNames() + { + if (aliasNames == null) + { + aliasNames = DataObjectUtil.getAliasNames(this); + } + return aliasNames; + } + + public static Type INTERNAL_BASE64_BYTES = ((InternalFactoryImpl)InternalFactory.INSTANCE).getBase64Bytes(); + public static Type INTERNAL_QNAME = ((InternalFactoryImpl)InternalFactory.INSTANCE).getQName(); + + /** + * + * + * @generated NOT + */ + public Type getType() + { + EClassifier eType = getEType(); + if (eType == INTERNAL_BASE64_BYTES) + return ((ModelFactoryImpl)ModelFactory.INSTANCE).getBytes(); + else if (eType == INTERNAL_QNAME) + return ((ModelFactoryImpl)ModelFactory.INSTANCE).getURI(); + return (Type)eType; + } + + /** + * + * + * @generated NOT + */ + public Type getContainingType() + { + return (Type)getEContainingClass(); + } + + /** + * + * + * @generated NOT + */ + public Property getOpposite() + { + return null; + } + + /** + * + * + * @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; + } + } + + public boolean isNullable() + { + String isNillable = EcoreUtil.getAnnotation(this, ExtendedMetaData.ANNOTATION_URI, "nillable"); + return isNillable != null && "true".equals(isNillable); + } + + public boolean isOpenContent() + { + return SDOUtil.isDocumentRoot(getContainingType()); + } + + public List getInstanceProperties() { + return DataObjectUtil.getMetaObjectInstanceProperties(this); + } + + public Object get(Property property) { + return DataObjectUtil.getMetaObjectInstanceProperty(this, property); + } + + ///////////////////////////////////////////////////////////////////////////////////////////////////////// + // 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(); + } + + public void setNullable(boolean value) { + throw new UnsupportedOperationException("Property is frozen and cannot be modified"); + } + + public void unsetNullable() { + throw new UnsupportedOperationException("Property is frozen and cannot be modified"); + } + + public boolean isSetNullable() { + return isUnsettable(); + } + + public void unsetName() + { + throw new UnsupportedOperationException("Property is frozen and cannot be modified"); + } + + public boolean isSetName() + { + return true; + } + + public void unsetOpposite() + { + throw new UnsupportedOperationException("Property is frozen and cannot be modified"); + } + + public boolean isSetOpposite() + { + return getOpposite() != null; + } + + public void unsetType() + { + throw new UnsupportedOperationException("Property is frozen and cannot be modified"); + } + + public boolean isSetType() + { + return true; + } + + public void unsetDefault() + { + throw new UnsupportedOperationException("Property is frozen and cannot be modified"); + } + + public boolean isSetDefault() + { + return getDefault() != null; + } + + + ///////////////////////////////////////////////////////////////////////////////////////////////////////// + // 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/sdo-java/trunk/impl/src/main/java/org/apache/tuscany/sdo/impl/ChangeSummaryImpl.java b/sdo-java/trunk/impl/src/main/java/org/apache/tuscany/sdo/impl/ChangeSummaryImpl.java new file mode 100644 index 0000000000..55f3d5449d --- /dev/null +++ b/sdo-java/trunk/impl/src/main/java/org/apache/tuscany/sdo/impl/ChangeSummaryImpl.java @@ -0,0 +1,876 @@ +/** + * + * Licensed to the Apache Software Foundation (ASF) under one + * or more contributor license agreements. See the NOTICE file + * distributed with this work for additional information + * regarding copyright ownership. The ASF licenses this file + * to you under the Apache License, Version 2.0 (the + * "License"); you may not use this file except in compliance + * with the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, + * software distributed under the License is distributed on an + * "AS IS" BASIS, WITHOUT 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.EReference; +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.FeatureMap; +import org.eclipse.emf.ecore.util.FeatureMapUtil; +import org.eclipse.emf.ecore.util.InternalEList; + +import commonj.sdo.ChangeSummary; +import commonj.sdo.DataGraph; +import commonj.sdo.DataObject; +import commonj.sdo.Property; +import commonj.sdo.Sequence; + + +/** + * + * An implementation of the model object 'EChange Summary'. + * + *

+ * The following features are implemented: + *

    + *
  • {@link org.apache.tuscany.sdo.impl.ChangeSummaryImpl#getEDataGraph EData Graph}
  • + *
+ *

+ * + * @generated + */ +public class ChangeSummaryImpl extends ChangeDescriptionImpl implements ChangeSummary +{ + /** + * The cached value of the '{@link #getEDataGraph() EData Graph}' reference. + * + * + * @see #getEDataGraph() + * @generated + * @ordered + */ + protected DataGraph eDataGraph = null; + + protected DataObject dataObject = null; + protected SDOChangeRecorder changeRecorder = null; + + protected Set cachedDeletedObjects = null; + protected List cachedCreatedObjects = null; + protected Map cachedSDOObjectChanges = null; + protected boolean isStale = false; + + /** + * + * + * @generated + */ + protected ChangeSummaryImpl() + { + super(); + cachedSDOObjectChanges = createThreadSafeMap(); + } + + /** + * + * + * @generated + */ + protected EClass eStaticClass() + { + return SDOPackage.eINSTANCE.getChangeSummary(); + } + + /** + * + * + * @generated NOT + */ + public boolean isLogging() + { + return changeRecorder != null; + } + + /** + * + * + * @generated + */ + public DataGraph getEDataGraph() + { + return eDataGraph; + } + + /** + * + * + * @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; + } + + /** + * + * + * @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)); + } + + public DataObject getDataObject() + { + return dataObject; + } + + public void setDataObject(DataObject newDataObject) + { + dataObject = newDataObject; + } + + /** + * + * + * @generated NOT + */ + public void beginLogging() + { + if (isLogging()) + { + throw new IllegalStateException("Already logging"); + } + + getObjectsToAttach().clear(); + getObjectChanges().clear(); + getResourceChanges().clear(); + oldContainmentInformation = null; + + beginRecording(); +// if (eNotificationRequired()) +// eNotify(new ENotificationImpl(this, Notification.SET, SDOPackage.ECHANGE_SUMMARY__LOGGING, false, true)); + } + + /** + * + */ + private void beginRecording() { + changeRecorder = new SDOChangeRecorder(); + if (eDataGraph != null) + { + changeRecorder.beginRecording(Collections.singleton(((DataGraphImpl)eDataGraph).getRootResource())); + } + else if (dataObject != null) + { + changeRecorder.beginRecording(Collections.singleton(dataObject)); + } + else + { + throw new IllegalStateException("ChangeSummary not attached to any data objects"); + } + } + + /** + * + * + * @generated NOT + */ + public void resumeLogging() + { + if (isLogging()) + { + throw new IllegalStateException("Already logging"); + } + + oldContainmentInformation = null; + + beginRecording(); +// if (eNotificationRequired()) +// eNotify(new ENotificationImpl(this, Notification.SET, SDOPackage.ECHANGE_SUMMARY__LOGGING, false, true)); + } + + /** + * + * + * @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); + } + + /** + * + * + * @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); + } + + /** + * + * + * @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(); +// case SDOPackage.CHANGE_SUMMARY__EDATA_OBJECT: +// return getEDataObject(); + } + return eDynamicGet(featureID, resolve, coreType); + } + + /** + * + * + * @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); + } + + /** + * + * + * @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); + } + + /** + * + * + * @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 void uncache() + { + cachedDeletedObjects = null; + cachedCreatedObjects = null; + cachedSDOObjectChanges.clear(); + } + + protected class SDOChangeRecorder extends ChangeRecorder + { + public SDOChangeRecorder() + { + super(); + } + + public void beginRecording(ChangeDescription changeDescription, Collection rootObjects) + { + uncache(); + 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() + { + uncache(); + isStale = false; + + // TODO remove this fixup when https://bugs.eclipse.org/bugs/show_bug.cgi?id=177235 is + // available to us (i.e. we update to EMF 2.3) -- see Tuscany-1164 + boolean isUncontainedRoot = dataObject != null + && ((EObject)dataObject).eContainer() == null + && ((EObject)dataObject).eResource() == null; + + super.consolidateChanges(); + + if(isUncontainedRoot && changeDescription.getObjectsToAttach().contains(dataObject)) { + changeDescription.getObjectsToAttach().remove(dataObject); + } + + } + + protected void addAdapter(Notifier notifier) + { + if (!loadingTargets) return; // Optimize ChangeSummary to not record changes in newly created DOs + + 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); + } + + public void notifyChanged(Notification notification) + { + super.notifyChanged(notification); + + Object notifier = notification.getNotifier(); + if (notifier instanceof EObject) + { + cachedSDOObjectChanges.remove(notifier); + Object feature = notification.getFeature(); + if (feature instanceof Property && ((Property)feature).isContainment()) + { + cachedCreatedObjects = null; + cachedDeletedObjects = null; + oldContainmentInformation = null; + } + isStale = true; + } + } + + } + + /** + * + * + * @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)); + } + + /** + * + * + * @generated NOT + */ + public boolean isCreated(DataObject dataObject) + { + return getCachedCreatedObjects().contains(dataObject); + } + + /** + * + * + * @generated NOT + */ + public boolean isDeleted(DataObject dataObject) + { + return getCachedDeletedObjects().contains(dataObject); + } + + protected Set getCachedDeletedObjects() + { + if (cachedDeletedObjects == null) + { + if (isStale()) changeRecorder.consolidateChanges(); + cachedDeletedObjects = new HashSet(); + for (Iterator i = EcoreUtil.getAllContents(getObjectsToAttach()); i.hasNext(); ) + { + cachedDeletedObjects.add(i.next()); + } + } + return cachedDeletedObjects; + } + + protected List getCachedCreatedObjects() + { + if (cachedCreatedObjects == null) + { + if (isStale()) changeRecorder.consolidateChanges(); + cachedCreatedObjects = super.getObjectsToDetach(); + } + return cachedCreatedObjects; + } + + /** + * + * + * @generated NOT + */ + public List getChangedDataObjects() + { + EList result = new UniqueEList.FastCompare(getCachedDeletedObjects()); + result.addAll(getCachedCreatedObjects()); + for (Iterator i = getObjectChanges().iterator(); i.hasNext(); ) + { + Map.Entry entry = (Map.Entry)i.next(); + result.add(entry.getKey()); + } + return result; + } + + /** + * + * + * @generated NOT + */ + public List getOldValues(DataObject dataObject) + { + List sdoSettings = (List)cachedSDOObjectChanges.get(dataObject); + if (sdoSettings != null) + { + return sdoSettings; + } + + if (isStale()) changeRecorder.consolidateChanges(); + 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; + } + + /** + * + * + * @generated NOT + */ + public boolean isModified(DataObject dataObject) + { + return getObjectChanges().containsKey(dataObject) && !isDeleted(dataObject) && !isCreated(dataObject); + } + + /** + * + * + * @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); + } + + /** + * + * + * @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; + } + + /** + * + * + * @generated NOT + */ + public void undoChanges() + { + if (isLogging()) + { + changeRecorder.summarize(); + } + else + { + uncache(); + } + apply(); + } + + /** + * + * + * @generated NOT + */ + public DataGraph getDataGraph() + { + return getEDataGraph(); + } + + protected Map getOldContainmentInformation() + { + if (oldContainmentInformation == null) + { + if (isStale()) changeRecorder.consolidateChanges(); + super.getOldContainmentInformation(); + } + return oldContainmentInformation; + } + + protected boolean isStale() + { + return isLogging() && isStale; + } + + /** + * + * + * @generated NOT + */ + public DataObject getRootObject() + { + if (eDataGraph != null) + { + return eDataGraph.getRootObject(); + } + if (dataObject != null) + { + return dataObject; + } + return null; + } + + static protected boolean isContainmentReference(Object feature) + { + return feature instanceof EReference && ((EReference) feature).isContainment(); + } + + public DataObject getOldDataObject(DataObject dataObject) + { + //TODO: Fix this method. Currently, it has the side effect of undoing the unset of contained children references + // of root deleted objects - i.e., when featureChange.apply(oldDataObject) is called. + // + List changes = (List) getObjectChanges().get(dataObject); + if (changes == null) + return dataObject; + EObject oldDataObject = EcoreUtil.copy((EObject)dataObject); + for (Iterator fIter = changes.iterator(); fIter.hasNext(); ) + { + FeatureChange featureChange = (FeatureChange)fIter.next(); + featureChange.apply(oldDataObject); + EStructuralFeature feature = featureChange.getFeature(); + if (FeatureMapUtil.isFeatureMap(feature)) + { + FeatureMap featureMap = (FeatureMap) oldDataObject.eGet(feature); + for (int index = featureMap.size(); index != 0;) + if (isContainmentReference(featureMap.getEStructuralFeature(--index))) + featureMap.setValue(index, getOldDataObject((DataObject) featureMap.getValue(index))); + } + else if (isContainmentReference(feature)) + { + Object value = oldDataObject.eGet(feature); + if (feature.isMany()) + { + changes = (List) value; + for (int index = changes.size(); index != 0;) + changes.set(--index, getOldDataObject((DataObject) changes.get(index))); // Java pushes stack from left to right + } + else + oldDataObject.eSet(feature, getOldDataObject((DataObject) value)); + } + } + + return (DataObject)oldDataObject; + } + + private static Class concurrentHashMapClazz = null; + private static boolean isThreadSafeMapClazzIdentified = false; + + private Map createThreadSafeMap() + { + if (!isThreadSafeMapClazzIdentified) + { + concurrentHashMapClazz = loadConcurrentHashMapClazz(); + isThreadSafeMapClazzIdentified = true; + } + Map threadSafeMap = null; + if (concurrentHashMapClazz == null) + { + threadSafeMap = Collections.synchronizedMap(new HashMap()); + } + else + { + try + { + threadSafeMap = (Map)concurrentHashMapClazz.newInstance(); + } + catch (InstantiationException e) + { + throw new RuntimeException(e); + } + catch (IllegalAccessException e) + { + throw new RuntimeException(e); + } + } + return threadSafeMap; + } + + private static String[] concurrentHashMapClazzNames = new String[] { + "java.util.concurrent.ConcurrentHashMap", + "edu.emory.mathcs.backport.java.util.concurrent.ConcurrentHashMap"}; + + private static Class loadConcurrentHashMapClazz() + { + Class mapClazz = null; + for (int i = 0; i < concurrentHashMapClazzNames.length; i++) + { + String concurrentHashMapClazzName = concurrentHashMapClazzNames[i]; + try + { + mapClazz = Class.forName(concurrentHashMapClazzName, true, Thread.currentThread().getContextClassLoader()); + } + catch (Exception ignored) {} + if (mapClazz != null) + { + break; + } + try + { + mapClazz = Class.forName(concurrentHashMapClazzName); + } + catch (Exception ignored) {} + if (mapClazz != null) + { + break; + } + } + return mapClazz; + } + +} //ChangeSummaryImpl diff --git a/sdo-java/trunk/impl/src/main/java/org/apache/tuscany/sdo/impl/ChangeSummarySettingImpl.java b/sdo-java/trunk/impl/src/main/java/org/apache/tuscany/sdo/impl/ChangeSummarySettingImpl.java new file mode 100644 index 0000000000..d1cd1d3e05 --- /dev/null +++ b/sdo-java/trunk/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; +/** + * + * An implementation of the model object 'EChange Summary Setting'. + * + *

+ *

+ * + * @generated + */ +public class ChangeSummarySettingImpl extends FeatureChangeImpl implements ChangeSummary.Setting +{ + /** + * + * + * @generated + */ + protected ChangeSummarySettingImpl() + { + super(); + } + + protected ChangeSummarySettingImpl(EStructuralFeature feature, Object value, boolean isSet) + { + super(feature, value, isSet); + } + + /** + * + * + * @generated + */ + protected EClass eStaticClass() + { + return SDOPackage.eINSTANCE.getChangeSummarySetting(); + } + + /** + * + * + * @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(); + } + } + + /** + * + * + * @generated NOT + */ + public Property getProperty() + { + return (Property)getFeature(); + } + + /** + * + * + * @generated NOT + */ + public boolean isSet() + { + return super.isSet(); + } + +} //EChangeSummarySettingImpl diff --git a/sdo-java/trunk/impl/src/main/java/org/apache/tuscany/sdo/impl/ClassImpl.java b/sdo-java/trunk/impl/src/main/java/org/apache/tuscany/sdo/impl/ClassImpl.java new file mode 100644 index 0000000000..cd37620f4c --- /dev/null +++ b/sdo-java/trunk/impl/src/main/java/org/apache/tuscany/sdo/impl/ClassImpl.java @@ -0,0 +1,1127 @@ +/** + * + * Licensed to the Apache Software Foundation (ASF) under one + * or more contributor license agreements. See the NOTICE file + * distributed with this work for additional information + * regarding copyright ownership. The ASF licenses this file + * to you under the Apache License, Version 2.0 (the + * "License"); you may not use this file except in compliance + * with the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, + * software distributed under the License is distributed on an + * "AS IS" BASIS, WITHOUT 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.ArrayList; +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.model.ModelFactory; +import org.apache.tuscany.sdo.model.impl.ModelFactoryImpl; +import org.apache.tuscany.sdo.util.BasicSequence; +import org.apache.tuscany.sdo.util.DataObjectUtil; +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.EcorePackage; +import org.eclipse.emf.ecore.impl.EClassImpl; +import org.eclipse.emf.ecore.util.EObjectContainmentWithInverseEList; +import org.eclipse.emf.ecore.util.ExtendedMetaData; +import org.eclipse.emf.ecore.util.FeatureMap; +import org.eclipse.emf.ecore.util.FeatureMapUtil; + +import commonj.sdo.Property; +import commonj.sdo.Sequence; +import commonj.sdo.Type; + +/** + * + * An implementation of the model object 'Class'. + * + *

+ *

+ * + * @generated + */ +public class ClassImpl extends EClassImpl implements Type, org.apache.tuscany.sdo.model.Type/*, DataObject*/ +{ + private static final long serialVersionUID = 1L; + + private static final Property UNINITIALIZED_PROPERTY = SDOFactory.eINSTANCE.createAttribute(); + + private Property changeSummaryPropertyCache = UNINITIALIZED_PROPERTY; + + /** + * + * + * @generated + */ + protected ClassImpl() + { + super(); + } + + /** + * + * + * @generated NOT + */ + protected EClass eStaticClass() + { + return SDOPackage.eINSTANCE.getClass_(); + } + + /** + * + * + * @generated NOT + */ + public String getURI() + { + return getEPackage().getNsURI(); + } + + /** + * + * + * @generated NOT + */ + public boolean isDataType() + { + return false; + } + + /** + * + * + * @generated NOT + */ + public boolean isOpen() + { + final List properties = getExtendedProperties(); + if (properties != Collections.EMPTY_LIST) + { + for (int i = 0, count = properties.size(); i < count; ++i) + { + EStructuralFeature eStructuralFeature = (EStructuralFeature)properties.get(i); + if (isOpenFeatureMap(eStructuralFeature)) + return true; + } + } + + for (final Iterator iterator = getBaseTypes().iterator() ; iterator.hasNext(); ) + { + Type baseType = (Type)iterator.next(); + if (baseType.isOpen()) + return true; + } + + return false; + } + + private static final EStructuralFeature UNINITIALIZED_SEQUENCE_FEATURE = (EAttribute)SDOFactory.eINSTANCE.createAttribute(); + protected static final EStructuralFeature VIRTUAL_SEQUENCE_FEATURE = (EAttribute)SDOFactory.eINSTANCE.createAttribute(); + + private EStructuralFeature sequenceFeature = UNINITIALIZED_SEQUENCE_FEATURE; + + public EStructuralFeature getSequenceFeature() + { + if (sequenceFeature == UNINITIALIZED_SEQUENCE_FEATURE) + { + EStructuralFeature sequenceFeatureCandidate = null; + boolean hasNonDerivedFeatures = false; + + for (Iterator iterator = getEAllStructuralFeatures().iterator(); iterator.hasNext(); ) + { + EStructuralFeature eStructuralFeature = (EStructuralFeature)iterator.next(); + if (!eStructuralFeature.isDerived()) { + if (sequenceFeatureCandidate == null && isSequenceFeatureMap(eStructuralFeature)) + sequenceFeatureCandidate = eStructuralFeature; + else if (isElementFeature(eStructuralFeature) && !DataObjectUtil.isInternalProperty(eStructuralFeature)) + hasNonDerivedFeatures = true; + } + } + + sequenceFeature = + sequenceFeatureCandidate != null && hasNonDerivedFeatures ? + VIRTUAL_SEQUENCE_FEATURE : + sequenceFeatureCandidate; + } + + return sequenceFeature; + } + + protected boolean isSequenceFeatureMap(EStructuralFeature eStructuralFeature) + { + switch (ExtendedMetaData.INSTANCE.getFeatureKind(eStructuralFeature)) + { + case ExtendedMetaData.ELEMENT_WILDCARD_FEATURE: + return eStructuralFeature.getUpperBound() != 1; + case ExtendedMetaData.GROUP_FEATURE: + return true; + } + return false; + } + + protected boolean isElementFeature(EStructuralFeature eStructuralFeature) + { + switch (ExtendedMetaData.INSTANCE.getFeatureKind(eStructuralFeature)) + { + case ExtendedMetaData.ATTRIBUTE_FEATURE: + case ExtendedMetaData.ATTRIBUTE_WILDCARD_FEATURE: + return false; + } + return true; + } + + public List getVirtualSequenceProperties() + { + List result = new ArrayList(); + for (Iterator iterator = getEAllStructuralFeatures().iterator(); iterator.hasNext(); ) + { + EStructuralFeature eStructuralFeature = (EStructuralFeature)iterator.next(); + if (!eStructuralFeature.isDerived() && isElementFeature(eStructuralFeature)) + result.add(eStructuralFeature); + } + return result; + } + + public void setSequenceFeature(EAttribute sequenceFeature) + { + getEStructuralFeatures().add(sequenceFeature); + this.sequenceFeature = sequenceFeature; + } + + /** + * + * + * @generated NOT + */ + public boolean isSequenced() + { + return getSequenceFeature() != null; + } + + protected List aliasNames = null; + + /** + * + * + * @generated NOT + */ + public List getAliasNames() + { + if (aliasNames == null) + { + aliasNames = DataObjectUtil.getAliasNames(this); + } + return aliasNames; + } + + protected List declaredProperties = null; + + public List getDeclaredProperties() + { + if (declaredProperties == null) { + initPropertyLists(); + } + return declaredProperties; + } + + protected List extendedProperties = null; + + public List getExtendedProperties() + { + if (extendedProperties == null) { + initPropertyLists(); + } + return extendedProperties; + } + + protected List getTypeFeatures() + { + return getEStructuralFeatures(); + } + + protected void initPropertyLists() + { + List declaredProperties = new ArrayList(); + List extendedProperties = Collections.EMPTY_LIST; + + for (Iterator i = getTypeFeatures().iterator(); i.hasNext(); ) { + EStructuralFeature eStructuralFeature = (EStructuralFeature)i.next(); + boolean isExtendedProperty = DataObjectUtil.isInternalProperty(eStructuralFeature); + if (isExtendedProperty) { + if (extendedProperties == Collections.EMPTY_LIST) + extendedProperties = new ArrayList(); + extendedProperties.add(eStructuralFeature); + } + else + declaredProperties.add(eStructuralFeature); + } + this.declaredProperties = declaredProperties; + this.extendedProperties = extendedProperties; + } + + public EList getEStructuralFeatures() + { + if (eStructuralFeatures == null) + { + eStructuralFeatures = + new EObjectContainmentWithInverseEList(EStructuralFeature.class, this, EcorePackage.ECLASS__ESTRUCTURAL_FEATURES, EcorePackage.ESTRUCTURAL_FEATURE__ECONTAINING_CLASS) + { + protected void didChange() + { + declaredProperties = extendedProperties = null; + } + }; + } + return eStructuralFeatures; + } + + protected List allProperties = null; + protected List allExtendedProperties = null; + protected EList allFeaturesCache = null; + + /** + * + * + * @generated NOT + */ + public List getProperties() + { + final EList allFeatures = getEAllStructuralFeatures(); + if (allFeatures != allFeaturesCache) + { + allFeaturesCache = allFeatures; + allProperties = allExtendedProperties = null; + } + if (allProperties == null) + { + List allProperties = new UniqueEList(); + for (final Iterator iterator = getBaseTypes().iterator(); iterator.hasNext(); ) + { + Type baseType = (Type)iterator.next(); + allProperties.addAll(baseType.getProperties()); + } + allProperties.addAll(getDeclaredProperties()); + this.allProperties = allProperties; + } + return allProperties; + } + + public List getAllExtendedProperties() + { + final EList allFeatures = getEAllStructuralFeatures(); + if (allFeatures != allFeaturesCache) + { + allFeaturesCache = allFeatures; + allProperties = allExtendedProperties = null; + } + if (allExtendedProperties == null) + { + List allExtendedProperties = new UniqueEList(); + for (final Iterator iterator = getBaseTypes().iterator(); iterator.hasNext(); ) + { + Type baseType = (Type)iterator.next(); + allExtendedProperties.addAll(((ClassImpl)baseType).getAllExtendedProperties()); + } + allExtendedProperties.addAll(getExtendedProperties()); + this.allExtendedProperties = allExtendedProperties; + } + return allExtendedProperties; + } + + protected boolean isOpenFeatureMap(EStructuralFeature eStructuralFeature) + { + switch (ExtendedMetaData.INSTANCE.getFeatureKind(eStructuralFeature)) + { + case ExtendedMetaData.ELEMENT_WILDCARD_FEATURE: + return eStructuralFeature != ExtendedMetaData.INSTANCE.getMixedFeature(this); + case ExtendedMetaData.ATTRIBUTE_WILDCARD_FEATURE: + //FB I think this is wrong ... case ExtendedMetaData.GROUP_FEATURE: + return true; + } + return false; + } + + public void addOpenProperties(EObject dataObject, Collection propertyList) + { + for (final Iterator iterator = getBaseTypes().iterator(); iterator.hasNext(); ) + { + ClassImpl baseType = (ClassImpl)iterator.next(); + baseType.addOpenProperties(dataObject, propertyList); + } + + for (final Iterator iter = getExtendedProperties().iterator(); iter.hasNext(); ) + { + EStructuralFeature eStructuralFeature = (EStructuralFeature)iter.next(); + if (isOpenFeatureMap(eStructuralFeature)) + { + List features = (List)dataObject.eGet(eStructuralFeature); + for (int j = 0, size = features.size(); j < size; ++j) + { + FeatureMap.Entry entry = (FeatureMap.Entry)features.get(j); + EStructuralFeature entryFeature = entry.getEStructuralFeature(); + Property property = BasicSequence.getFeatureProperty(entryFeature); + if (property != null) propertyList.add(entryFeature); + } + } + } + } + + public Property getOpenProperty(EObject dataObject, String featureName) + { + for (final Iterator iterator = getBaseTypes().iterator(); iterator.hasNext(); ) + { + ClassImpl baseType = (ClassImpl)iterator.next(); + Property result = baseType.getOpenProperty(dataObject, featureName); + if (result != null) return result; + } + + Set openFeatureSet = new HashSet(); + for (final Iterator iter = getExtendedProperties().iterator(); iter.hasNext(); ) + { + EStructuralFeature eStructuralFeature = (EStructuralFeature)iter.next(); + //if (isOpenFeatureMap(eStructuralFeature)) + //FB The above check excludes subsitition groups - i.e., doesn't support dObj.get("element.substitution") + if (FeatureMapUtil.isFeatureMap(eStructuralFeature)) + { + List features = (List)dataObject.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 = BasicSequence.getFeatureProperty(entryFeature); + if (property != null) + { + if (property.getName().equals(featureName)) return (Property)entryFeature; + List aliasNames = property.getAliasNames(); + for (int aliasCount = aliasNames.size(); aliasCount > 0; ) + { + if (aliasNames.get(--aliasCount).equals(featureName)) return (Property)entryFeature; + } + } + } + } + } + } + + return null; + } + + /* + public Property getOpenProperty(DataObject dataObject, String featureName) + { + EObject eObject = (EObject)dataObject; + 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 (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 (Property)entryFeature; + + List aliasNames = property.getAliasNames(); + for (int aliasCount = aliasNames.size(); aliasCount > 0; ) + { + if (aliasNames.get(--aliasCount).equals(featureName)) return (Property)entryFeature; + } + } + } + } + } + return null; + } + */ + + /** + * + * + * @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; + } + + /** + * + * + * @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; + + public List getInstanceProperties() { + return DataObjectUtil.getMetaObjectInstanceProperties(this); + } + + public Object get(Property property) { + return DataObjectUtil.getMetaObjectInstanceProperty(this, property); + } + + ///////////////////////////////////////////////////////////////////////////////////////////////////////// + // 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 unsetName() + { + throw new UnsupportedOperationException("Type is frozen and cannot be modified"); + } + + public boolean isSetName() + { + return true; + } + + public void unsetUri() + { + throw new UnsupportedOperationException("Type is frozen and cannot be modified"); + } + + public boolean isSetUri() + { + return true; + } + + public void setUri(String value) { + throw new UnsupportedOperationException("Type is frozen and cannot be modified"); + } + + public String getUri() { + return getURI(); + } + + public Property getChangeSummaryProperty() { + if (changeSummaryPropertyCache == UNINITIALIZED_PROPERTY) { + changeSummaryPropertyCache = null; + + // Find property of type ChangeSummaryType, if one exists + Type csType = ((ModelFactoryImpl)ModelFactory.INSTANCE).getChangeSummaryType(); + for (Iterator props = getProperties().iterator(); props.hasNext(); ) { + Property p = (Property)props.next(); + if(csType == p.getType()) { + changeSummaryPropertyCache = p; + break; + } + } + } + + return changeSummaryPropertyCache; + } + + ///////////////////////////////////////////////////////////////////////////////////////////////////////// + // 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/sdo-java/trunk/impl/src/main/java/org/apache/tuscany/sdo/impl/DataGraphImpl.java b/sdo-java/trunk/impl/src/main/java/org/apache/tuscany/sdo/impl/DataGraphImpl.java new file mode 100644 index 0000000000..d61b7fd05e --- /dev/null +++ b/sdo-java/trunk/impl/src/main/java/org/apache/tuscany/sdo/impl/DataGraphImpl.java @@ -0,0 +1,852 @@ +/** + * + * Licensed to the Apache Software Foundation (ASF) under one + * or more contributor license agreements. See the NOTICE file + * distributed with this work for additional information + * regarding copyright ownership. The ASF licenses this file + * to you under the Apache License, Version 2.0 (the + * "License"); you may not use this file except in compliance + * with the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, + * software distributed under the License is distributed on an + * "AS IS" BASIS, WITHOUT 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.HashMap; +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.helper.TypeHelperImpl; +import org.apache.tuscany.sdo.lib.SDOObjectInputStream; +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; + + +/** + * + * An implementation of the model object 'EData Graph'. + * @extends DataGraph, Adapter, Serializable + * + *

+ * The following features are implemented: + *

    + *
  • {@link org.apache.tuscany.sdo.impl.DataGraphImpl#getResourceSet Resource Set}
  • + *
  • {@link org.apache.tuscany.sdo.impl.DataGraphImpl#getRootResource Root Resource}
  • + *
  • {@link org.apache.tuscany.sdo.impl.DataGraphImpl#getEChangeSummary EChange Summary}
  • + *
  • {@link org.apache.tuscany.sdo.impl.DataGraphImpl#getERootObject ERoot Object}
  • + *
+ *

+ * + * @generated + */ +public class DataGraphImpl extends EObjectImpl implements DataGraph, Adapter, Serializable +{ + /** + * The default value of the '{@link #getResourceSet() Resource Set}' attribute. + * + * + * @see #getResourceSet() + * @generated + * @ordered + */ + protected static final ResourceSet RESOURCE_SET_EDEFAULT = null; + + /** + * The cached value of the '{@link #getResourceSet() Resource Set}' attribute. + * + * + * @see #getResourceSet() + * @generated + * @ordered + */ + protected ResourceSet resourceSet = RESOURCE_SET_EDEFAULT; + + /** + * The default value of the '{@link #getRootResource() Root Resource}' attribute. + * + * + * @see #getRootResource() + * @generated + * @ordered + */ + protected static final Resource ROOT_RESOURCE_EDEFAULT = null; + + /** + * The cached value of the '{@link #getEChangeSummary() EChange Summary}' reference. + * + * + * @see #getEChangeSummary() + * @generated + * @ordered + */ + protected ChangeSummary eChangeSummary = null; + + /** + * The cached value of the '{@link #getERootObject() ERoot Object}' reference. + * + * + * @see #getERootObject() + * @generated + * @ordered + */ + protected EObject eRootObject = null; + + /** + * The cached extended metadata to wrap the resource set's package registry. + */ + protected ExtendedMetaData extendedMetaData; + + /** + * + * + * @generated + */ + protected DataGraphImpl() + { + super(); + } + + /** + * + * + * @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; + } + + /** + * + * + * @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); + } + } + + /** + * + * + * @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); + } + + /** + * + * + * @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; + } + + /** + * + * + * @generated + */ + public ChangeSummary getEChangeSummary() + { + return eChangeSummary; + } + + /** + * + * + * @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; + } + + /** + * + * + * @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)); + } + + /** + * + * + * @generated + */ + public EObject getERootObject() + { + return eRootObject; + } + + /** + * + * + * @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); + } + } + } + + /** + * + * + * @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; + } + } + + /** + * + * + * @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); + } + + /** + * + * + * @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); + } + + /** + * + * + * @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); + } + + /** + * + * + * @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); + } + + /** + * + * + * @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); + } + + /** + * + * + * @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); + } + + /** + * + * + * @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) + { + Type type = getType(namespaceURI, typeName); + if (type == null) { + throw new IllegalArgumentException( + "createRootObject given invalid parameters: getType("+ + namespaceURI+", "+typeName+") returned null type"); + } + if (getERootObject() != null) { + throw new IllegalStateException( + "createRootObject was called when a root object already exists"); + } + DataObject dataObject = DataObjectUtil.create(type); + setERootObject((EObject)dataObject); + return dataObject; + } + + public DataObject createRootObject(Type type) + { + if (type == null) { + throw new IllegalArgumentException( + "createRootObject must be provided a non-null type"); + } + if (getERootObject() != null) { + throw new IllegalStateException( + "createRootObject was called when a root object already exists"); + } + 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")); + + HashMap map = null; + if(objectInput instanceof SDOObjectInputStream) + { + TypeHelperImpl th = (TypeHelperImpl)((SDOObjectInputStream)objectInput).getHelperContext().getTypeHelper(); + map = new HashMap(); + map.put("EXTENDED_META_DATA", th.getExtendedMetaData()); + } + resource.load(new ByteArrayInputStream(bytes), map); + 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); + } + } + + /** + * + * + * @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/sdo-java/trunk/impl/src/main/java/org/apache/tuscany/sdo/impl/DataObjectBase.java b/sdo-java/trunk/impl/src/main/java/org/apache/tuscany/sdo/impl/DataObjectBase.java new file mode 100644 index 0000000000..34216bc1e2 --- /dev/null +++ b/sdo-java/trunk/impl/src/main/java/org/apache/tuscany/sdo/impl/DataObjectBase.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.impl; + + +import java.util.List; + +import org.apache.tuscany.sdo.SDOFactory; +import org.apache.tuscany.sdo.helper.HelperContextImpl; +import org.apache.tuscany.sdo.util.BasicSequence; +import org.apache.tuscany.sdo.util.DataObjectUtil; +import org.eclipse.emf.common.notify.Notification; +import org.eclipse.emf.common.notify.NotificationChain; +import org.eclipse.emf.common.util.URI; +import org.eclipse.emf.ecore.EClass; +import org.eclipse.emf.ecore.EObject; +import org.eclipse.emf.ecore.EPackage; +import org.eclipse.emf.ecore.InternalEObject; +import org.eclipse.emf.ecore.EStructuralFeature.Setting; +import org.eclipse.emf.ecore.EStructuralFeature.Internal.SettingDelegate; +import org.eclipse.emf.ecore.impl.ENotificationImpl; +import org.eclipse.emf.ecore.resource.Resource; +import org.eclipse.emf.ecore.resource.ResourceSet; +import org.eclipse.emf.ecore.util.BasicFeatureMap; +import org.eclipse.emf.ecore.util.EDataTypeEList; +import org.eclipse.emf.ecore.util.EDataTypeUniqueEList; +import org.eclipse.emf.ecore.util.EObjectContainmentEList; +import org.eclipse.emf.ecore.util.EObjectContainmentWithInverseEList; +import org.eclipse.emf.ecore.util.EObjectEList; +import org.eclipse.emf.ecore.util.EObjectResolvingEList; +import org.eclipse.emf.ecore.util.EObjectWithInverseEList; +import org.eclipse.emf.ecore.util.EObjectWithInverseResolvingEList; +import org.eclipse.emf.ecore.util.EcoreUtil; +import org.eclipse.emf.ecore.util.FeatureMap; +import org.eclipse.emf.ecore.util.InternalEList; + +import commonj.sdo.Property; +import commonj.sdo.Sequence; +import commonj.sdo.Type; + + +/** + * Base implementation of the SDO DataObject interface. Used as base class for generated (static) SDO classes + */ +public abstract class DataObjectBase extends ExtensibleDataObjectImpl +{ + + 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; + } + + /** + * notify methods for types: boolean, byte, char, double, float, int, long, short, and Object + */ + + protected void notify(int changeKind, int property, boolean oldBooleanValue, boolean newBooleanValue) + { + eNotify(new ENotificationImpl(this, Notification.SET, property, oldBooleanValue, newBooleanValue)); + } + + protected void notify(int changeKind, int property, boolean oldBooleanValue, boolean newBooleanValue, boolean isSetChange) + { + eNotify(new ENotificationImpl(this, Notification.SET, property, oldBooleanValue, newBooleanValue, isSetChange)); + } + + protected void notify(int changeKind, int property, byte oldByteValue, byte newByteValue) + { + eNotify(new ENotificationImpl(this, Notification.SET, property, oldByteValue, newByteValue)); + } + + protected void notify(int changeKind, int property, byte oldByteValue, byte newByteValue, boolean isSetChange) + { + eNotify(new ENotificationImpl(this, Notification.SET, property, oldByteValue, newByteValue, isSetChange)); + } + + protected void notify(int changeKind, int property, char oldCharValue, char newCharValue) + { + eNotify(new ENotificationImpl(this, Notification.SET, property, oldCharValue, newCharValue)); + } + + protected void notify(int changeKind, int property, char oldCharValue, char newCharValue, boolean isSetChange) + { + eNotify(new ENotificationImpl(this, Notification.SET, property, oldCharValue, newCharValue, isSetChange)); + } + + protected void notify(int changeKind, int property, double oldDoubleValue, double newDoubleValue) + { + eNotify(new ENotificationImpl(this, Notification.SET, property, oldDoubleValue, newDoubleValue)); + } + + 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, float oldFloatValue, float newFloatValue) + { + eNotify(new ENotificationImpl(this, Notification.SET, property, oldFloatValue, newFloatValue)); + } + + protected void notify(int changeKind, int property, float oldFloatValue, float newFloatValue, boolean isSetChange) + { + eNotify(new ENotificationImpl(this, Notification.SET, property, oldFloatValue, newFloatValue, isSetChange)); + } + + protected void notify(int changeKind, int property, int oldIntValue, int newIntValue) + { + eNotify(new ENotificationImpl(this, Notification.SET, property, oldIntValue, newIntValue)); + } + + protected void notify(int changeKind, int property, int oldIntValue, int newIntValue, boolean isSetChange) + { + eNotify(new ENotificationImpl(this, Notification.SET, property, oldIntValue, newIntValue, isSetChange)); + } + + protected void notify(int changeKind, int property, long oldLongValue, long newLongValue) + { + eNotify(new ENotificationImpl(this, Notification.SET, property, oldLongValue, newLongValue)); + } + + protected void notify(int changeKind, int property, long oldLongValue, long newLongValue, boolean isSetChange) + { + eNotify(new ENotificationImpl(this, Notification.SET, property, oldLongValue, newLongValue, isSetChange)); + } + + protected void notify(int changeKind, int property, short oldShortValue, short newShortValue) + { + eNotify(new ENotificationImpl(this, Notification.SET, property, oldShortValue, newShortValue)); + } + + protected void notify(int changeKind, int property, short oldShortValue, short newShortValue, boolean isSetChange) + { + eNotify(new ENotificationImpl(this, Notification.SET, property, oldShortValue, newShortValue, isSetChange)); + } + + 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)); + } + + public interface ListKind + { + int CONTAINMENT = 0; + int CONTAINMENT_UNSETTABLE = 1; + int CONTAINMENT_RESOLVING = 2; + int CONTAINMENT_RESOLVING_UNSETTABLE = 3; + int CONTAINMENT_INVERSE = 4; + int CONTAINMENT_INVERSE_UNSETTABLE = 5; + int CONTAINMENT_INVERSE_RESOLVING = 6; + int CONTAINMENT_INVERSE_RESOLVING_UNSETTABLE = 7; + + int NONCONTAINMENT = 8; + int NONCONTAINMENT_UNSETTABLE = 9; + int NONCONTAINMENT_RESOLVING = 10; + int NONCONTAINMENT_RESOLVING_UNSETTABLE = 11; + int NONCONTAINMENT_INVERSE = 12; + int NONCONTAINMENT_INVERSE_UNSETTABLE = 13; + int NONCONTAINMENT_MANYINVERSE = 14; + int NONCONTAINMENT_MANYINVERSE_UNSETTABLE = 15; + int NONCONTAINMENT_INVERSE_RESOLVING = 16; + int NONCONTAINMENT_INVERSE_RESOLVING_UNSETTABLE = 17; + int NONCONTAINMENT_MANYINVERSE_RESOLVING = 18; + int NONCONTAINMENT_MANYINVERSE_RESOLVING_UNSETTABLE = 19; + + int DATATYPE = 20; + int DATATYPE_UNSETTABLE = 21; + int DATATYPE_UNIQUE = 22; + int DATATYPE_UNIQUE_UNSETTABLE = 23; + + int BASIC = 24; + } + + /** + * @deprecated + */ + protected List createPropertyList(int listKind, Class dataClass, int property) + { + return createPropertyList(listKind, dataClass, property, 0); + } + + protected List createPropertyList(int listKind, Class dataClass, int property, int reverseProperty) + { + switch (listKind) + { + case ListKind.CONTAINMENT: + return new EObjectContainmentEList(dataClass, this, property); + case ListKind.CONTAINMENT_INVERSE_RESOLVING_UNSETTABLE: + return new EObjectContainmentWithInverseEList.Unsettable.Resolving(dataClass, this, property, reverseProperty); + case ListKind.CONTAINMENT_INVERSE_RESOLVING: + return new EObjectContainmentWithInverseEList.Resolving(dataClass, this, property, reverseProperty); + case ListKind.CONTAINMENT_INVERSE_UNSETTABLE: + return new EObjectContainmentWithInverseEList.Unsettable(dataClass, this, property, reverseProperty); + case ListKind.CONTAINMENT_INVERSE: + return new EObjectContainmentWithInverseEList(dataClass, this, property, reverseProperty); + case ListKind.CONTAINMENT_RESOLVING_UNSETTABLE: + return new EObjectContainmentEList.Unsettable.Resolving(dataClass, this, property); + case ListKind.CONTAINMENT_RESOLVING: + return new EObjectContainmentEList.Resolving(dataClass, this, property); + case ListKind.CONTAINMENT_UNSETTABLE: + return new EObjectContainmentEList.Unsettable(dataClass, this, property); + case ListKind.NONCONTAINMENT_MANYINVERSE_RESOLVING_UNSETTABLE: + return new EObjectWithInverseResolvingEList.Unsettable.ManyInverse(dataClass, this, property, reverseProperty); + case ListKind.NONCONTAINMENT_MANYINVERSE_RESOLVING: + return new EObjectWithInverseResolvingEList.ManyInverse(dataClass, this, property, reverseProperty); + case ListKind.NONCONTAINMENT_INVERSE_RESOLVING_UNSETTABLE: + return new EObjectWithInverseResolvingEList.Unsettable(dataClass, this, property, reverseProperty); + case ListKind.NONCONTAINMENT_INVERSE_RESOLVING: + return new EObjectWithInverseResolvingEList(dataClass, this, property, reverseProperty); + case ListKind.NONCONTAINMENT_MANYINVERSE_UNSETTABLE: + return new EObjectWithInverseEList.Unsettable.ManyInverse(dataClass, this, property, reverseProperty); + case ListKind.NONCONTAINMENT_MANYINVERSE: + return new EObjectWithInverseEList.ManyInverse(dataClass, this, property, reverseProperty); + case ListKind.NONCONTAINMENT_INVERSE_UNSETTABLE: + return new EObjectWithInverseEList.Unsettable(dataClass, this, property, reverseProperty); + case ListKind.NONCONTAINMENT_INVERSE: + return new EObjectWithInverseEList(dataClass, this, property, reverseProperty); + case ListKind.NONCONTAINMENT_RESOLVING_UNSETTABLE: + return new EObjectResolvingEList.Unsettable(dataClass, this, property); + case ListKind.NONCONTAINMENT_RESOLVING: + return new EObjectResolvingEList(dataClass, this, property); + case ListKind.NONCONTAINMENT_UNSETTABLE: + return new EObjectEList.Unsettable(dataClass, this, property); + case ListKind.NONCONTAINMENT: + return new EObjectEList(dataClass, this, property); + case ListKind.DATATYPE_UNIQUE_UNSETTABLE: + return new EDataTypeUniqueEList.Unsettable(dataClass, this, property); + case ListKind.DATATYPE_UNIQUE: + return new EDataTypeUniqueEList(dataClass, this, property); + case ListKind.DATATYPE_UNSETTABLE: + return new EDataTypeEList.Unsettable(dataClass, this, property); + case ListKind.DATATYPE: + return new EDataTypeEList(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))); + } + + protected void createChangeSummary(int property) { + ChangeSummaryImpl changeSummary = (ChangeSummaryImpl)SDOFactory.eINSTANCE.createChangeSummary(); + set(property, changeSummary); + changeSummary.setDataObject(this); + } + + /* + * 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; + } + + 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.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.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, boolean isSetChanged, ChangeContext changeContext) + { + ENotificationImpl notification = new ENotificationImpl((InternalEObject)notifier, eventType, featureID, oldValue, newValue, isSetChanged ); + ChangeContextImpl changeContextImpl = initializeChangeContext(changeContext); + if (changeContextImpl.notificationChain == null) changeContextImpl.notificationChain = notification; else changeContextImpl.notificationChain.add(notification); + 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() // FB TODO : regen models and then remove this method + { + return eIsProxy(); + } + + protected boolean isProxy(Object object) + { + return ((EObject)object).eIsProxy(); + } + + protected Object resolveProxy(Object proxy) + { + Resource resource = this.eResource(); + ResourceSet resourceSet = resource != null ? resource.getResourceSet() : null; + if (resourceSet != null) return EcoreUtil.resolve((EObject)proxy, resourceSet); + + URI proxyURI = ((InternalEObject)proxy).eProxyURI(); + if (proxyURI != null) + { + EPackage ePackage = HelperContextImpl.getBuiltInModelRegistry().getEPackage(proxyURI.trimFragment().toString()); + if (ePackage != null) + { + resource = ePackage.eResource(); + if (resource != null) + { + return resource.getEObject(proxyURI.fragment().toString()); + } + } + } + return null; + } + + + //////////////////////////////////////////////////////////////////////////////////////////////////////////////// + // Following methods override EMF methods to work with pure SDO generated subclasses + //////////////////////////////////////////////////////////////////////////////////////////////////////////////// + + public EClass eStaticClass() + { + return (EClass)getStaticType(); + } + + public Type getStaticType() // must be overridden in subclasses + { + throw new UnsupportedOperationException(); + } + + public int eStaticFeatureCount() + { + return getStaticPropertyCount(); + } + + public int getStaticPropertyCount() // must be overridden in subclasses + { + throw new UnsupportedOperationException(); + } + + protected int internalConvertIndex(int internalIndex) + { + return internalIndex; + } + + public Object eGet(int featureID, boolean resolve, boolean coreType) + { + Object result = get(internalConvertIndex(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(internalConvertIndex(featureID), newValue); + } + + public void eUnset(int featureID) + { + unset(internalConvertIndex(featureID)); + } + + public boolean eIsSet(int featureID) + { + return isSet(internalConvertIndex(featureID)); + } + + private class ChangeContextImpl implements ChangeContext + { + protected NotificationChain notificationChain; + public ChangeContextImpl(NotificationChain notificationChain) { + this.notificationChain = notificationChain; + } + } + + //FB TODO ... review this? ... what about eInverseAdd? + public NotificationChain eInverseRemove(InternalEObject otherEnd, int internalIndex, NotificationChain msgs) + { + return ((ChangeContextImpl)inverseRemove(otherEnd, internalConvertIndex(internalIndex), 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/sdo-java/trunk/impl/src/main/java/org/apache/tuscany/sdo/impl/DataObjectImpl.java b/sdo-java/trunk/impl/src/main/java/org/apache/tuscany/sdo/impl/DataObjectImpl.java new file mode 100644 index 0000000000..d97f677d34 --- /dev/null +++ b/sdo-java/trunk/impl/src/main/java/org/apache/tuscany/sdo/impl/DataObjectImpl.java @@ -0,0 +1,1562 @@ +/** + * + * Licensed to the Apache Software Foundation (ASF) under one + * or more contributor license agreements. See the NOTICE file + * distributed with this work for additional information + * regarding copyright ownership. The ASF licenses this file + * to you under the Apache License, Version 2.0 (the + * "License"); you may not use this file except in compliance + * with the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, + * software distributed under the License is distributed on an + * "AS IS" BASIS, WITHOUT 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.Collections; +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.lib.UnknownPropertyList; +import org.apache.tuscany.sdo.util.DataObjectUtil; +import org.apache.tuscany.sdo.util.VirtualSequence; +import org.apache.tuscany.sdo.util.DataObjectUtil.Accessor; +import org.eclipse.emf.common.notify.Notification; +import org.eclipse.emf.common.util.BasicEList; +import org.eclipse.emf.common.util.EList; +import org.eclipse.emf.common.util.URI; +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.EStructuralFeature.Internal.DynamicValueHolder; +import org.eclipse.emf.ecore.impl.BasicEObjectImpl; +import org.eclipse.emf.ecore.resource.Resource; +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; + + +/** + * + * 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. + * + *

+ *

+ * + * @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) + protected BasicEList eAdapters; + + /** + * + * + * @generated + */ + protected DataObjectImpl() + { + super(); + } + + /** + * + * + * @generated NOT + */ + public Object get(int propertyIndex) + { + return get(DataObjectUtil.getProperty(this, propertyIndex)); + } + + /** + * + * + * @generated NOT + */ + public void set(int propertyIndex, Object value) + { + set(DataObjectUtil.getProperty(this, propertyIndex), value); + } + + /** + * + * + * @generated NOT + */ + public boolean isSet(int propertyIndex) + { + return isSet(DataObjectUtil.getProperty(this, propertyIndex)); + } + + /** + * + * + * @generated NOT + */ + public void unset(int propertyIndex) + { + unset(DataObjectUtil.getProperty(this, propertyIndex)); + } + + /** + * + * + * @generated NOT + */ + public Object get(Property property) + { + return eGet((EStructuralFeature)property, true, false); + } + + /** + * + * + * @generated NOT + */ + public void set(Property property, Object value) + { + eSet((EStructuralFeature)property, value); + } + + /** + * + * + * @generated NOT + */ + public boolean isSet(Property property) + { + return eIsSet((EStructuralFeature)property); + } + + /** + * + * + * @generated NOT + */ + public void unset(Property property) + { + eUnset((EStructuralFeature)property); + } + + /** + * + * + * @generated NOT + */ + public DataObject getContainer() + { + return (DataObject)eContainer(); + } + + /** + * + * + * @generated NOT + */ + public Property getContainmentProperty() + { + return (Property)eContainmentFeature(); + } + + /** + * + * + * @generated NOT + */ + public Type getType() + { + return (Type)eClass(); + } + + /** + * + * + * @generated NOT + */ + public Object writeReplace() throws ObjectStreamException + { + return new ExternalizableDelegator(this); + } + + + // Remaining DataObject methods are implemented as straight delegation to DataObjectUtil + + /** + * + * + * @generated NOT + */ + public Object get(String path) + { + return DataObjectUtil.get(this, path); + } + + /** + * + * + * @generated NOT + */ + public void set(String path, Object value) + { + DataObjectUtil.set(this, path, value); + } + + /** + * + * + * @generated NOT + */ + public boolean isSet(String path) + { + return DataObjectUtil.isSet(this, path); + } + + /** + * + * + * @generated NOT + */ + public void unset(String path) + { + DataObjectUtil.unset(this, path); + } + + /** + * + * + * @generated NOT + */ + public DataGraph getDataGraph() + { + return DataObjectUtil.getDataGraph(this); + } + + /** + * + * + * @generated NOT + */ + public BigDecimal getBigDecimal(String path) + { + return DataObjectUtil.getBigDecimal(get(path)); + } + + /** + * + * + * @generated NOT + */ + public BigInteger getBigInteger(String path) + { + return DataObjectUtil.getBigInteger(get(path)); + } + + /** + * + * + * @generated NOT + */ + public boolean getBoolean(String path) + { + return DataObjectUtil.getBoolean(get(path)); + } + + /** + * + * + * @generated NOT + */ + public byte getByte(String path) + { + return DataObjectUtil.getByte(get(path)); + } + + /** + * + * + * @generated NOT + */ + public byte[] getBytes(String path) + { + return DataObjectUtil.getBytes(get(path)); + } + + /** + * + * + * @generated NOT + */ + public char getChar(String path) + { + return DataObjectUtil.getChar(get(path)); + } + + /** + * + * + * @generated NOT + */ + public DataObject getDataObject(String path) + { + return (DataObject)get(path); + } + + /** + * + * + * @generated NOT + */ + public Date getDate(String path) + { + return DataObjectUtil.getDate(get(path)); + } + + /** + * + * + * @generated NOT + */ + public double getDouble(String path) + { + return DataObjectUtil.getDouble(get(path)); + } + + /** + * + * + * @generated NOT + */ + public float getFloat(String path) + { + return DataObjectUtil.getFloat(get(path)); + } + + /** + * + * + * @generated NOT + */ + public int getInt(String path) + { + return DataObjectUtil.getInt(get(path)); + } + + /** + * + * + * @generated NOT + */ + public List getList(String path) + { + List result = (List)get(path); + if (result == null) { + result = new UnknownPropertyList(this, path); + } + + return result; + } + + /** + * + * + * @generated NOT + */ + public long getLong(String path) + { + return DataObjectUtil.getLong(get(path)); + } + + /** + * + * + * @generated NOT + */ + public Sequence getSequence(String path) + { + return (Sequence)get(path); + } + + /** + * + * + * @generated NOT + */ + public short getShort(String path) + { + return DataObjectUtil.getShort(get(path)); + } + + /** + * + * + * @generated NOT + */ + public String getString(String path) + { + return DataObjectUtil.getString(get(path)); + } + + /** + * + * + * @generated NOT + */ + public void setBigDecimal(String path, BigDecimal value) + { + DataObjectUtil.setBigDecimal(this, path, value); + } + + /** + * + * + * @generated NOT + */ + public void setBigInteger(String path, BigInteger value) + { + DataObjectUtil.setBigInteger(this, path, value); + } + + /** + * + * + * @generated NOT + */ + public void setBoolean(String path, boolean value) + { + DataObjectUtil.setBoolean(this, path, value); + } + + /** + * + * + * @generated NOT + */ + public void setByte(String path, byte value) + { + DataObjectUtil.setByte(this, path, value); + } + + /** + * + * + * @generated NOT + */ + public void setBytes(String path, byte[] value) + { + DataObjectUtil.setBytes(this, path, value); + } + + /** + * + * + * @generated NOT + */ + public void setChar(String path, char value) + { + DataObjectUtil.setChar(this, path, value); + } + + /** + * + * + * @generated NOT + */ + public void setDataObject(String path, DataObject value) + { + DataObjectUtil.set(this, path, value); + } + + /** + * + * + * @generated NOT + */ + public void setDate(String path, Date value) + { + DataObjectUtil.setDate(this,path,value); + } + + /** + * + * + * @generated NOT + */ + public void setDouble(String path, double value) + { + DataObjectUtil.setDouble(this, path, value); + } + + /** + * + * + * @generated NOT + */ + public void setFloat(String path, float value) + { + DataObjectUtil.setFloat(this, path, value); + } + + /** + * + * + * @generated NOT + */ + public void setInt(String path, int value) + { + DataObjectUtil.setInt(this, path, value); + } + + /** + * + * + * @generated NOT + */ + public void setList(String path, List value) + { + DataObjectUtil.set(this, path, value); + } + + /** + * + * + * @generated NOT + */ + public void setLong(String path, long value) + { + DataObjectUtil.setLong(this, path, value); + } + + /** + * + * + * @generated NOT + */ + public void setShort(String path, short value) + { + DataObjectUtil.setShort(this, path, value); + } + + /** + * + * + * @generated NOT + */ + public void setString(String path, String value) + { + DataObjectUtil.setString(this, path, value); + } + + /** + * + * + * @generated NOT + */ + public BigDecimal getBigDecimal(int propertyIndex) + { + return DataObjectUtil.getBigDecimal(this, propertyIndex); + } + + /** + * + * + * @generated NOT + */ + public BigInteger getBigInteger(int propertyIndex) + { + return DataObjectUtil.getBigInteger(this,propertyIndex); + } + + /** + * + * + * @generated NOT + */ + public boolean getBoolean(int propertyIndex) + { + return DataObjectUtil.getBoolean(this, propertyIndex); + } + + /** + * + * + * @generated NOT + */ + public byte getByte(int propertyIndex) + { + return DataObjectUtil.getByte(this, propertyIndex); + } + + /** + * + * + * @generated NOT + */ + public byte[] getBytes(int propertyIndex) + { + return DataObjectUtil.getBytes(this, propertyIndex); + } + + /** + * + * + * @generated NOT + */ + public char getChar(int propertyIndex) + { + return DataObjectUtil.getChar(this, propertyIndex); + } + + /** + * + * + * @generated NOT + */ + public DataObject getDataObject(int propertyIndex) + { + return DataObjectUtil.getDataObject(this, propertyIndex); + } + + /** + * + * + * @generated NOT + */ + public Date getDate(int propertyIndex) + { + return DataObjectUtil.getDate(this,propertyIndex); + } + + /** + * + * + * @generated NOT + */ + public double getDouble(int propertyIndex) + { + return DataObjectUtil.getDouble(this, propertyIndex); + } + + /** + * + * + * @generated NOT + */ + public float getFloat(int propertyIndex) + { + return DataObjectUtil.getFloat(this,propertyIndex); + } + + /** + * + * + * @generated NOT + */ + public int getInt(int propertyIndex) + { + return DataObjectUtil.getInt(this,propertyIndex); + } + + /** + * + * + * @generated NOT + */ + public List getList(int propertyIndex) + { + return DataObjectUtil.getList(this, propertyIndex); + } + + /** + * + * + * @generated NOT + */ + public long getLong(int propertyIndex) + { + return DataObjectUtil.getLong(this,propertyIndex); + } + + /** + * + * + * @generated NOT + */ + public Sequence getSequence(int propertyIndex) + { + return DataObjectUtil.getSequence(this, propertyIndex); + } + + /** + * + * + * @generated NOT + */ + public short getShort(int propertyIndex) + { + return DataObjectUtil.getShort(this,propertyIndex); + } + + /** + * + * + * @generated NOT + */ + public String getString(int propertyIndex) + { + return DataObjectUtil.getString(this,propertyIndex); + } + + /** + * + * + * @generated NOT + */ + public void setBigDecimal(int propertyIndex, BigDecimal value) + { + DataObjectUtil.setBigDecimal(this, propertyIndex, value); + } + + /** + * + * + * @generated NOT + */ + public void setBigInteger(int propertyIndex, BigInteger value) + { + DataObjectUtil.setBigInteger(this, propertyIndex, value); + } + + /** + * + * + * @generated NOT + */ + public void setBoolean(int propertyIndex, boolean value) + { + DataObjectUtil.setBoolean(this, propertyIndex, value); + } + + /** + * + * + * @generated NOT + */ + public void setByte(int propertyIndex, byte value) + { + DataObjectUtil.setByte(this, propertyIndex, value); + } + + /** + * + * + * @generated NOT + */ + public void setBytes(int propertyIndex, byte[] value) + { + DataObjectUtil.setBytes(this, propertyIndex, value); + } + + /** + * + * + * @generated NOT + */ + public void setChar(int propertyIndex, char value) + { + DataObjectUtil.setChar(this, propertyIndex, value); + } + + /** + * + * + * @generated NOT + */ + public void setDataObject(int propertyIndex, DataObject value) + { + DataObjectUtil.setDataObject(this, propertyIndex, value); + } + + /** + * + * + * @generated NOT + */ + public void setDate(int propertyIndex, Date value) + { + DataObjectUtil.setDate(this, propertyIndex, value); + } + + /** + * + * + * @generated NOT + */ + public void setDouble(int propertyIndex, double value) + { + DataObjectUtil.setDouble(this, propertyIndex, value); + } + + /** + * + * + * @generated NOT + */ + public void setFloat(int propertyIndex, float value) + { + DataObjectUtil.setFloat(this, propertyIndex, value); + } + + /** + * + * + * @generated NOT + */ + public void setInt(int propertyIndex, int value) + { + DataObjectUtil.setInt(this, propertyIndex, value); + } + + /** + * + * + * @generated NOT + */ + public void setList(int propertyIndex, List value) + { + DataObjectUtil.setList(this, propertyIndex, value); + } + + /** + * + * + * @generated NOT + */ + public void setLong(int propertyIndex, long value) + { + DataObjectUtil.setLong(this, propertyIndex, value); + } + + /** + * + * + * @generated NOT + */ + public void setShort(int propertyIndex, short value) + { + DataObjectUtil.setShort(this, propertyIndex, value); + } + + /** + * + * + * @generated NOT + */ + public void setString(int propertyIndex, String value) + { + DataObjectUtil.setString(this, propertyIndex, value); + } + + /** + * + * + * @generated NOT + */ + public BigDecimal getBigDecimal(Property property) + { + return DataObjectUtil.getBigDecimal(this, property); + } + + /** + * + * + * @generated NOT + */ + public BigInteger getBigInteger(Property property) + { + return DataObjectUtil.getBigInteger(this, property); + } + + /** + * + * + * @generated NOT + */ + public boolean getBoolean(Property property) + { + return DataObjectUtil.getBoolean(this, property); + } + + /** + * + * + * @generated NOT + */ + public byte getByte(Property property) + { + return DataObjectUtil.getByte(this, property); + } + + /** + * + * + * @generated NOT + */ + public byte[] getBytes(Property property) + { + return DataObjectUtil.getBytes(this, property); + } + + /** + * + * + * @generated NOT + */ + public char getChar(Property property) + { + return DataObjectUtil.getChar(this, property); + } + + /** + * + * + * @generated NOT + */ + public DataObject getDataObject(Property property) + { + return (DataObject)DataObjectUtil.getDataObject(this,property); + } + + /** + * + * + * @generated NOT + */ + public Date getDate(Property property) + { + return DataObjectUtil.getDate(this, property); + } + + /** + * + * + * @generated NOT + */ + public double getDouble(Property property) + { + return DataObjectUtil.getDouble(this, property); + } + + /** + * + * + * @generated NOT + */ + public float getFloat(Property property) + { + return DataObjectUtil.getFloat(this, property); + } + + /** + * + * + * @generated NOT + */ + public int getInt(Property property) + { + return DataObjectUtil.getInt(this, property); + } + + /** + * + * + * @generated NOT + */ + public List getList(Property property) + { + return (List)DataObjectUtil.getList(this, property); + } + + /** + * + * + * @generated NOT + */ + public long getLong(Property property) + { + return DataObjectUtil.getLong(this, property); + } + + /** + * + * + * @generated NOT + */ + public Sequence getSequence(Property property) + { + return (Sequence)DataObjectUtil.getSequence(this, property); + } + + /** + * + * + * @generated NOT + */ + public short getShort(Property property) + { + return DataObjectUtil.getShort(this, property); + } + + /** + * + * + * @generated NOT + */ + public String getString(Property property) + { + return DataObjectUtil.getString(this, property); + } + + /** + * + * + * @generated NOT + */ + public void setBigDecimal(Property property, BigDecimal value) + { + DataObjectUtil.setBigDecimal(this,property, value); + } + + /** + * + * + * @generated NOT + */ + public void setBigInteger(Property property, BigInteger value) + { + DataObjectUtil.setBigInteger(this,property, value); + } + + /** + * + * + * @generated NOT + */ + public void setBoolean(Property property, boolean value) + { + DataObjectUtil.setBoolean(this,property, value); + } + + /** + * + * + * @generated NOT + */ + public void setByte(Property property, byte value) + { + DataObjectUtil.setByte(this,property, value); + } + + /** + * + * + * @generated NOT + */ + public void setBytes(Property property, byte[] value) + { + DataObjectUtil.setBytes(this,property, value); + } + + /** + * + * + * @generated NOT + */ + public void setChar(Property property, char value) + { + DataObjectUtil.setChar(this,property, value); + } + + /** + * + * + * @generated NOT + */ + public void setDataObject(Property property, DataObject value) + { + DataObjectUtil.setDataObject(this,property, value); + } + + /** + * + * + * @generated NOT + */ + public void setDate(Property property, Date value) + { + DataObjectUtil.setDate(this,property, value); + } + + /** + * + * + * @generated NOT + */ + public void setDouble(Property property, double value) + { + DataObjectUtil.setDouble(this,property, value); + } + + /** + * + * + * @generated NOT + */ + public void setFloat(Property property, float value) + { + DataObjectUtil.setFloat(this,property, value); + } + + /** + * + * + * @generated NOT + */ + public void setInt(Property property, int value) + { + DataObjectUtil.setInt(this,property, value); + } + + /** + * + * + * @generated NOT + */ + public void setList(Property property, List value) + { + DataObjectUtil.setList(this,property, value); + } + + /** + * + * + * @generated NOT + */ + public void setLong(Property property, long value) + { + DataObjectUtil.setLong(this,property, value); + } + + /** + * + * + * @generated NOT + */ + public void setShort(Property property, short value) + { + DataObjectUtil.setShort(this,property, value); + } + + /** + * + * + * @generated NOT + */ + public void setString(Property property, String value) + { + DataObjectUtil.setString(this,property, value); + } + + /** + * + * + * @generated NOT + */ + public DataObject createDataObject(String propertyName) + { + return DataObjectUtil.createDataObject(this, propertyName); + } + + /** + * + * + * @generated NOT + */ + public DataObject createDataObject(int propertyIndex) + { + return DataObjectUtil.createDataObject(this, propertyIndex); + } + + /** + * + * + * @generated NOT + */ + public DataObject createDataObject(Property property) + { + return DataObjectUtil.createDataObject(this,property); + } + + /** + * + * + * @generated NOT + */ + public DataObject createDataObject(String propertyName, String namespaceURI, String typeName) + { + return DataObjectUtil.createDataObject(this, propertyName, namespaceURI, typeName); + } + + /** + * + * + * @generated NOT + */ + public DataObject createDataObject(int propertyIndex, String namespaceURI, String typeName) + { + return DataObjectUtil.createDataObject(this, propertyIndex, namespaceURI, typeName); + } + + /** + * + * + * @generated NOT + */ + public DataObject createDataObject(Property property, Type type) + { + return DataObjectUtil.createDataObject(this, property, type); + } + + /** + * + * + * @generated NOT + */ + public void delete() + { + DataObjectUtil.delete(this); + } + + protected Sequence sequence = null; + + /** + * + * + * @generated NOT + */ + public Sequence getSequence() + { + if (sequence == null) + { + EStructuralFeature sequenceFeature = ((ClassImpl)eClass()).getSequenceFeature(); + if (sequenceFeature == null) return null; + if (sequenceFeature == ClassImpl.VIRTUAL_SEQUENCE_FEATURE) + sequence = new VirtualSequence(this); + else + sequence = (Sequence)eGet(sequenceFeature, true, false); + } + return sequence; + } + + /** + * + * + * @generated NOT + */ + public List getInstanceProperties() + { + return DataObjectUtil.getInstanceProperties(this); + } + + /** + * + * + * @generated NOT + */ + public Property getInstanceProperty(String propertyName) + { + return DataObjectUtil.getInstanceProperty(this, propertyName); + } + + /** + * @deprecated + */ + public Property getProperty(String propertyName) + { + return DataObjectUtil.getInstanceProperty(this, propertyName); + } + + /** + * + * + * @generated NOT + */ + public DataObject getRootObject() + { + return DataObjectUtil.getRootObject(this); + } + + /** + * + * + * @generated NOT + */ + public ChangeSummary getChangeSummary() + { + return DataObjectUtil.getChangeSummary(this); + } + + /** + * + * + * @generated NOT + */ + public void detach() + { + DataObjectUtil.detach(this); + } + + //////////////////////////////////////////////////////////////////////////////////////////////////////////////// + // Following methods customize BasicEObjectImpl, optimized for SDO + //////////////////////////////////////////////////////////////////////////////////////////////////////////////// + + /** + * + * + * @generated + */ + protected EClass eStaticClass() + { + return SDOPackage.eINSTANCE.getDataObject(); + } + + public boolean eNotificationRequired() + { + return changeRecorder != null || super.eNotificationRequired(); + } + + public boolean eDeliver() + { + return true; + } + + public void eNotify(Notification notification) + { + if(changeRecorder != null) changeRecorder.notifyChanged(notification); + super.eNotify(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 EList eAdapters() + { + if (eAdapters == null) + { + eAdapters = new EAdapterList(this); + } + return eAdapters; + } + + public BasicEList eBasicAdapters() + { + return eAdapters; + } + + + /* + 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/sdo-java/trunk/impl/src/main/java/org/apache/tuscany/sdo/impl/DataTypeImpl.java b/sdo-java/trunk/impl/src/main/java/org/apache/tuscany/sdo/impl/DataTypeImpl.java new file mode 100644 index 0000000000..dee124429f --- /dev/null +++ b/sdo-java/trunk/impl/src/main/java/org/apache/tuscany/sdo/impl/DataTypeImpl.java @@ -0,0 +1,781 @@ +/** + * + * Licensed to the Apache Software Foundation (ASF) under one + * or more contributor license agreements. See the NOTICE file + * distributed with this work for additional information + * regarding copyright ownership. The ASF licenses this file + * to you under the Apache License, Version 2.0 (the + * "License"); you may not use this file except in compliance + * with the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, + * software distributed under the License is distributed on an + * "AS IS" BASIS, WITHOUT 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.EDataType; +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; + +/** + * + * An implementation of the model object 'Data Type'. + * + *

+ *

+ * + * @generated + */ +public class DataTypeImpl extends EDataTypeImpl implements Type, org.apache.tuscany.sdo.model.Type/*, DataObject*/ +{ + /** + * + * + * @generated + */ + protected DataTypeImpl() + { + super(); + } + + /** + * + * + * @generated NOT + */ + protected EClass eStaticClass() + { + return SDOPackage.eINSTANCE.getDataType(); + } + + /** + * + * + * @generated NOT + */ + public String getURI() + { + return getEPackage().getNsURI(); + } + + /** + * + * + * @generated NOT + */ + public boolean isDataType() + { + return true; + } + + /** + * + * + * @generated NOT + */ + public boolean isOpen() + { + return false; + } + + /** + * + * + * @generated NOT + */ + public boolean isSequenced() + { + return false; + } + + protected List aliasNames = null; + + /** + * + * + * @generated NOT + */ + public List getAliasNames() + { + if (aliasNames == null) + { + aliasNames = DataObjectUtil.getAliasNames(this); + } + return aliasNames; + } + + /** + * + * + * @generated NOT + */ + public List getDeclaredProperties() + { + return Collections.EMPTY_LIST; + } + + /** + * + * + * @generated NOT + */ + public List getProperties() + { + return Collections.EMPTY_LIST; + } + + /** + * + * + * @generated NOT + */ + public List getBaseTypes() + { + EDataType dataType = ExtendedMetaData.INSTANCE.getBaseType(this); + if (dataType == null) + { + return Collections.EMPTY_LIST; + } + else + { + return Collections.singletonList(dataType); + } + } + + /** + * + * + * @generated NOT + */ + public Property getProperty(String propertyName) + { + return null; + } + + public List getInstanceProperties() { + return DataObjectUtil.getMetaObjectInstanceProperties(this); + } + + public Object get(Property property) { + return DataObjectUtil.getMetaObjectInstanceProperty(this, property); + } + + ///////////////////////////////////////////////////////////////////////////////////////////////////////// + // 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 unsetName() + { + throw new UnsupportedOperationException("Type is frozen and cannot be modified"); + } + + public boolean isSetName() + { + return true; + } + + public void unsetUri() + { + throw new UnsupportedOperationException("Type is frozen and cannot be modified"); + } + + public boolean isSetUri() + { + return true; + } + + 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/sdo-java/trunk/impl/src/main/java/org/apache/tuscany/sdo/impl/DynamicDataObjectImpl.java b/sdo-java/trunk/impl/src/main/java/org/apache/tuscany/sdo/impl/DynamicDataObjectImpl.java new file mode 100644 index 0000000000..153ef18444 --- /dev/null +++ b/sdo-java/trunk/impl/src/main/java/org/apache/tuscany/sdo/impl/DynamicDataObjectImpl.java @@ -0,0 +1,216 @@ +/** + * + * Licensed to the Apache Software Foundation (ASF) under one + * or more contributor license agreements. See the NOTICE file + * distributed with this work for additional information + * regarding copyright ownership. The ASF licenses this file + * to you under the Apache License, Version 2.0 (the + * "License"); you may not use this file except in compliance + * with the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, + * software distributed under the License is distributed on an + * "AS IS" BASIS, WITHOUT 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.SDOFactory; +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; +import commonj.sdo.Property; + +/** + * + * An implementation of the model object 'Dynamic Data Object'. + * @extends EStructuralFeature.Internal.DynamicValueHolder + * + *

+ *

+ * + * @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]; + + /** + * + * + * @generated + */ + protected DynamicDataObjectImpl() + { + super(); + } + + /** + * Creates a dynamic DataObject. + */ + public DynamicDataObjectImpl(EClass eClass) + { + super(); + eSetClass(eClass); + Property csp = ((ClassImpl)eClass).getChangeSummaryProperty(); + if (csp != null) + { + ChangeSummaryImpl changeSummary = (ChangeSummaryImpl)SDOFactory.eINSTANCE.createChangeSummary(); + set(csp, changeSummary); + changeSummary.setDataObject(this); + } + } + + /** + * + * + * @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); + try { + eDynamicSet(featureID, eFeature, newValue); + } catch (IllegalArgumentException e) { + throw new UnsupportedOperationException(e.getMessage()); + } + } + else + { + super.eDynamicSet(featureID, newValue); + } + } + + public void eDynamicUnset(int featureID) + { + if (featureID < eClass().getFeatureCount()) + { + EStructuralFeature eFeature = eClass().getEStructuralFeature(featureID); + try { + eDynamicUnset(featureID, eFeature); + } catch (IllegalArgumentException e) { + throw new UnsupportedOperationException(e.getMessage()); + } + } + 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/sdo-java/trunk/impl/src/main/java/org/apache/tuscany/sdo/impl/DynamicStoreDataObjectImpl.java b/sdo-java/trunk/impl/src/main/java/org/apache/tuscany/sdo/impl/DynamicStoreDataObjectImpl.java new file mode 100644 index 0000000000..d9d39bad49 --- /dev/null +++ b/sdo-java/trunk/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; + +/** + * + * An implementation of the model object 'Dynamic Store Data Object'. + * + *

+ *

+ * + * @generated + */ +public class DynamicStoreDataObjectImpl extends StoreDataObjectImpl implements DataObject +{ + protected EClass eClass; + + /** + * + * + * @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); + } + + /** + * + * + * @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/sdo-java/trunk/impl/src/main/java/org/apache/tuscany/sdo/impl/EnumImpl.java b/sdo-java/trunk/impl/src/main/java/org/apache/tuscany/sdo/impl/EnumImpl.java new file mode 100644 index 0000000000..54f642d8cf --- /dev/null +++ b/sdo-java/trunk/impl/src/main/java/org/apache/tuscany/sdo/impl/EnumImpl.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.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; + +/** + * + * An implementation of the model object 'Enum'. + * + *

+ *

+ * + * @generated + * @deprecated SDO doesn't support Enum types + */ +public class EnumImpl extends EEnumImpl implements Type +{ + /** + * + * + * @generated + */ + protected EnumImpl() + { + super(); + } + + /** + * + * + * @generated NOT + */ + protected EClass eStaticClass() + { + return EcorePackage.eINSTANCE.getEEnum(); + } + + /** + * + * + * @generated NOT + */ + public String getURI() + { + return getEPackage().getNsURI(); + } + + /** + * + * + * @generated NOT + */ + public boolean isDataType() + { + return true; + } + + /** + * + * + * @generated NOT + */ + public boolean isOpen() + { + return false; + } + + /** + * + * + * @generated NOT + */ + public boolean isSequenced() + { + return false; + } + + protected List aliasNames = null; + + /** + * + * + * @generated NOT + */ + public List getAliasNames() + { + if (aliasNames == null) + { + aliasNames = DataObjectUtil.getAliasNames(this); + } + return aliasNames; + } + + /** + * + * + * @generated NOT + */ + public List getDeclaredProperties() + { + return Collections.EMPTY_LIST; + } + + /** + * + * + * @generated NOT + */ + public List getProperties() + { + return Collections.EMPTY_LIST; + } + + /** + * + * + * @generated NOT + */ + public List getBaseTypes() + { + return Collections.EMPTY_LIST; + } + + /** + * + * + * @generated NOT + */ + public Property getProperty(String propertyName) + { + return null; + } + + /** + * + * + * @generated NOT + */ + public boolean isAbstract() + { + return false; + } + + public List getInstanceProperties() + { + throw new UnsupportedOperationException(); + } + + public Object get(Property property) + { + throw new UnsupportedOperationException(); + } + +} //EnumTypeImpl diff --git a/sdo-java/trunk/impl/src/main/java/org/apache/tuscany/sdo/impl/EventImpl.java b/sdo-java/trunk/impl/src/main/java/org/apache/tuscany/sdo/impl/EventImpl.java new file mode 100644 index 0000000000..206a3c1fbf --- /dev/null +++ b/sdo-java/trunk/impl/src/main/java/org/apache/tuscany/sdo/impl/EventImpl.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.impl; + +import org.apache.tuscany.sdo.api.Event; +import org.eclipse.emf.common.notify.Notification; + +import commonj.sdo.Property; + + +public class EventImpl implements Event { + + protected Notification emfEvent; + protected Object notifier; + + public EventImpl(Notification notification) + { + this.emfEvent = notification; + } + + public Object getNotifier() + { + return notifier == null ? emfEvent.getNotifier() : notifier; + } + + public int getEventType() + { + return emfEvent.getEventType(); + } + + + public Property getProperty() + { + return (Property)emfEvent.getFeature(); + } + + public Object getOldValue() + { + return emfEvent.getOldValue(); + } + + public Object getNewValue() + { + return emfEvent.getNewValue(); + } + + public boolean wasSet() + { + return emfEvent.wasSet(); + } + + public boolean isTouch() + { + return emfEvent.isTouch(); + } + + public int getPosition() + { + return emfEvent.getPosition(); + } +} diff --git a/sdo-java/trunk/impl/src/main/java/org/apache/tuscany/sdo/impl/ExtensibleDataObjectImpl.java b/sdo-java/trunk/impl/src/main/java/org/apache/tuscany/sdo/impl/ExtensibleDataObjectImpl.java new file mode 100644 index 0000000000..93825f7873 --- /dev/null +++ b/sdo-java/trunk/impl/src/main/java/org/apache/tuscany/sdo/impl/ExtensibleDataObjectImpl.java @@ -0,0 +1,267 @@ +/** + * + * Licensed to the Apache Software Foundation (ASF) under one + * or more contributor license agreements. See the NOTICE file + * distributed with this work for additional information + * regarding copyright ownership. The ASF licenses this file + * to you under the Apache License, Version 2.0 (the + * "License"); you may not use this file except in compliance + * with the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, + * software distributed under the License is distributed on an + * "AS IS" BASIS, WITHOUT 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.SDOFactory; +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; +import commonj.sdo.Property; + +/** + * + * An implementation of the model object 'Extensible Data Object'. + * @extends EStructuralFeature.Internal.DynamicValueHolder + * + *

+ *

+ * + * @generated + */ +public class ExtensibleDataObjectImpl extends DataObjectImpl implements DataObject, EStructuralFeature.Internal.DynamicValueHolder +{ + protected EClass eClass; + protected Object [] eSettings; + + protected static final Object [] ENO_SETTINGS = new Object [0]; + + /** + * + * + * @generated + */ + protected ExtensibleDataObjectImpl() + { + super(); + } + + /** + * Creates an extensible DataObject. + */ + public ExtensibleDataObjectImpl(EClass eClass) + { + super(); + eSetClass(eClass); + Property csp = ((ClassImpl)eClass).getChangeSummaryProperty(); + if (csp != null) + { + ChangeSummaryImpl changeSummary = (ChangeSummaryImpl)SDOFactory.eINSTANCE.createChangeSummary(); + set(csp, changeSummary); + changeSummary.setDataObject(this); + } + } + + /** + * + * + * @generated + */ + protected EClass eStaticClass() + { + return SDOPackage.eINSTANCE.getExtensibleDataObject(); + } + + 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; + } + + protected boolean isDynamic() + { + return (eClass != null); + } + + public Object get(int featureID, boolean resolve) + { + return get(featureID, resolve, true); + } + + public Object get(int featureID, boolean resolve, boolean coreType) + { + Object result = null; + if (isDynamic() || featureID >= eStaticFeatureCount()) + { + result = super.eGet(featureID, resolve, coreType); + } + else + { + result = super.get(featureID); + } + return result; + } + + public void set(int featureID, Object newValue) + { + if (isDynamic() || featureID >= eStaticFeatureCount()) + { + super.eSet(featureID, newValue); + } + else + { + super.set(featureID, newValue); + } + } + + public void unset(int featureID) + { + if (isDynamic() || featureID >= eStaticFeatureCount()) + { + super.eUnset(featureID); + } + else + { + super.unset(featureID); + } + } + + public boolean isSet(int featureID) + { + if (isDynamic() || featureID >= eStaticFeatureCount()) + { + return super.eIsSet(featureID); + } + else + { + return super.isSet(featureID); + } + } + + public EClass eClass() + { + return isDynamic() ? eClass : eStaticClass(); + } + + 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) + { + int dynamicFeatureID = featureID - eStaticFeatureCount(); + if (featureID < eClass().getFeatureCount()) + { + EStructuralFeature eFeature = eClass().getEStructuralFeature(featureID); + return eSettingDelegate(eFeature).dynamicGet(this, eSettings(), dynamicFeatureID, resolve, coreType); + } + else + { + return super.eDynamicGet(dynamicFeatureID, resolve, coreType); + } + } + + public void eDynamicSet(int featureID, Object newValue) + { + int dynamicFeatureID = featureID - eStaticFeatureCount(); + if (featureID < eClass().getFeatureCount()) + { + EStructuralFeature eFeature = eClass().getEStructuralFeature(featureID); + eDynamicSet(dynamicFeatureID, eFeature, newValue); + } + else + { + super.eDynamicSet(dynamicFeatureID, newValue); + } + } + + public void eDynamicUnset(int featureID) + { + int dynamicFeatureID = featureID - eStaticFeatureCount(); + if (featureID < eClass().getFeatureCount()) + { + EStructuralFeature eFeature = eClass().getEStructuralFeature(featureID); + eDynamicUnset(dynamicFeatureID, eFeature); + } + else + { + super.eDynamicUnset(dynamicFeatureID); + } + } + + public boolean eDynamicIsSet(int featureID) + { + int dynamicFeatureID = featureID - eStaticFeatureCount(); + if (featureID < eClass().getFeatureCount()) + { + EStructuralFeature eFeature = eClass().getEStructuralFeature(featureID); + return eSettingDelegate(eFeature).dynamicIsSet(this, eSettings(), dynamicFeatureID); + } + else + { + return super.eDynamicIsSet(dynamicFeatureID); + } + } + + /** + * An EFactoryImpl that creates ExtensibleDataObjectImpl instances. + */ + public static class FactoryImpl extends EFactoryImpl + { + public FactoryImpl() + { + } + + public EObject basicCreate(EClass eClass) + { + return new ExtensibleDataObjectImpl(eClass); + } + } + +} //ExtensibleDataObjectImpl diff --git a/sdo-java/trunk/impl/src/main/java/org/apache/tuscany/sdo/impl/FactoryBase.java b/sdo-java/trunk/impl/src/main/java/org/apache/tuscany/sdo/impl/FactoryBase.java new file mode 100644 index 0000000000..e344a6ffde --- /dev/null +++ b/sdo-java/trunk/impl/src/main/java/org/apache/tuscany/sdo/impl/FactoryBase.java @@ -0,0 +1,368 @@ +/** + * + * Licensed to the Apache Software Foundation (ASF) under one + * or more contributor license agreements. See the NOTICE file + * distributed with this work for additional information + * regarding copyright ownership. The ASF licenses this file + * to you under the Apache License, Version 2.0 (the + * "License"); you may not use this file except in compliance + * with the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, + * software distributed under the License is distributed on an + * "AS IS" BASIS, WITHOUT 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.SDOFactory; +import org.apache.tuscany.sdo.impl.SDOFactoryImpl.SDOEcoreFactory; +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.EPackageImpl; + +import commonj.sdo.DataObject; +import commonj.sdo.Property; +import commonj.sdo.Type; + +/** + * Base class for generated (static) SDO factories + */ +public class FactoryBase extends EPackageImpl +{ + + public static final boolean IS_ATTRIBUTE = true; + + protected FactoryBase(String namespaceURI, String namespacePrefix) + { + super(new SDOEFactoryImpl()); + ecoreFactory = new SDOEcoreFactory(); + + int index = namespacePrefix.lastIndexOf("."); + setName(index != -1 ? namespacePrefix.substring(index + 1) : namespacePrefix); + setNsPrefix(namespacePrefix); + + createResource(namespaceURI); + setNsURI(namespaceURI); + + ((SDOEFactoryImpl)getEFactoryInstance()).sdoFactory = this; + } + + protected FactoryBase(String namespaceURI, String namespacePrefix, String interfacePackage) + { + super(new SDOEFactoryImpl()); + ecoreFactory = new SDOEcoreFactory(); + + int index = interfacePackage.lastIndexOf("."); + setName(index != -1 ? interfacePackage.substring(index + 1) : interfacePackage); + setNsPrefix(namespacePrefix); + + createResource(namespaceURI); + setNsURI(namespaceURI); + + ((SDOEFactoryImpl)getEFactoryInstance()).sdoFactory = this; + } + + + + public DataObject create(int typeNumber) + { + return null; + } + + public Object createFromString(int typeNumber, String stringValue) + { + return ((SDOEFactoryImpl)getEFactoryInstance()).createFromString(typeNumber, stringValue); + } + + public String convertToString(int typeNumber, Object objectValue) + { + return ((SDOEFactoryImpl)getEFactoryInstance()).convertToString(typeNumber, objectValue); + } + + 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 internalPropertyNumber) + { + if (isDataType) + createEAttribute((EClass)containingType, internalPropertyNumber); + else + createEReference((EClass)containingType, internalPropertyNumber); + } + + /** + * @deprecated - use getLocalProperty instead, since getProperty causes + * caching of structural features. + */ + protected Property getProperty(Type type, int internalPropertyNumber) + { + return (Property)((EClass)type).getEAllStructuralFeatures().get(internalPropertyNumber); + } + + protected Property getLocalProperty(Type type, int localPropertyIndex) + { + return (Property)((EClass)type).getEStructuralFeatures().get(localPropertyIndex); + } + + + 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 isAbstract) + { + initEClass((EClass)type, instanceClass, name, isAbstract, !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, type != sequence ? (EClassifier)type : ecorePackage.getEFeatureMapEntry(), 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 initXSD() + { + 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; + } + + private static final Type sequence = SDOFactory.eINSTANCE.createDataType(); // dummy type + + protected Type getSequence() + { + return sequence; + } + + protected void addSuperType(Type subType, Type superType) + { + ((EClass)subType).getESuperTypes().add((EClass)superType); + } + + /*** + * @param namespaceURI + * @return Static factory (from the global scope) for the provided URI + * + * @deprecated - Use of the global scope is no longer encouraged. This method uses the + * global scope for retrieving the URI's factory. Instead, it is now possible to simply + * access SomeFactoryInterface.INSTANCE object directly. + * + */ + 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(); + } + + // private EMF-specific methods + + private static class SDOEFactoryImpl extends DynamicDataObjectImpl.FactoryImpl + { + protected FactoryBase sdoFactory; + + public SDOEFactoryImpl() + { + super(); + } + + public EObject create(EClass eClass) + { + DataObject result = sdoFactory.create(eClass.getClassifierID()); + if (result == null) { + if (eClass.isAbstract()) { + Class instanceClass = eClass.getInstanceClass(); + try { + Class concreteInstanceClass = DataObjectUtil.getImplementationClass(instanceClass, true); + return (EObject)concreteInstanceClass.newInstance(); + } + catch (Exception e) + { + //System.out.println("Error: " + e); + } + } + return super.create(eClass); + } + return (EObject)result; + } + + public Object createFromString(EDataType eDataType, String stringValue) + { + return sdoFactory.createFromString(eDataType.getClassifierID(), stringValue); + } + + public String convertToString(EDataType eDataType, Object objectValue) + { + return sdoFactory.convertToString(eDataType.getClassifierID(), objectValue); + } + + protected Object createFromString(int typeNumber, String stringValue) + { + return super.createFromString((EDataType)sdoFactory.getEClassifiers().get(typeNumber), stringValue); + } + + protected String convertToString(int typeNumber, Object objectValue) + { + return super.convertToString((EDataType)sdoFactory.getEClassifiers().get(typeNumber), objectValue); + } + } + + 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/sdo-java/trunk/impl/src/main/java/org/apache/tuscany/sdo/impl/ListenerBase.java b/sdo-java/trunk/impl/src/main/java/org/apache/tuscany/sdo/impl/ListenerBase.java new file mode 100644 index 0000000000..986628bbc9 --- /dev/null +++ b/sdo-java/trunk/impl/src/main/java/org/apache/tuscany/sdo/impl/ListenerBase.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.impl; + +import org.apache.tuscany.sdo.api.Event; +import org.apache.tuscany.sdo.api.EventListener; +import org.eclipse.emf.common.notify.Notification; +import org.eclipse.emf.common.notify.impl.AdapterImpl; + +public abstract class ListenerBase extends AdapterImpl implements EventListener { + + public void notifyChanged(Notification msg) { + Event e = new EventImpl(msg); + eventNotification(e); + } +} diff --git a/sdo-java/trunk/impl/src/main/java/org/apache/tuscany/sdo/impl/ReferenceImpl.java b/sdo-java/trunk/impl/src/main/java/org/apache/tuscany/sdo/impl/ReferenceImpl.java new file mode 100644 index 0000000000..19fb89bbd3 --- /dev/null +++ b/sdo-java/trunk/impl/src/main/java/org/apache/tuscany/sdo/impl/ReferenceImpl.java @@ -0,0 +1,785 @@ +/** + * + * Licensed to the Apache Software Foundation (ASF) under one + * or more contributor license agreements. See the NOTICE file + * distributed with this work for additional information + * regarding copyright ownership. The ASF licenses this file + * to you under the Apache License, Version 2.0 (the + * "License"); you may not use this file except in compliance + * with the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, + * software distributed under the License is distributed on an + * "AS IS" BASIS, WITHOUT 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.SDOPackage; +import org.apache.tuscany.sdo.util.DataObjectUtil; +import org.apache.tuscany.sdo.util.SDOUtil; +import org.eclipse.emf.ecore.EClass; +import org.eclipse.emf.ecore.impl.EReferenceImpl; +import org.eclipse.emf.ecore.util.EcoreUtil; +import org.eclipse.emf.ecore.util.ExtendedMetaData; + +import commonj.sdo.Property; +import commonj.sdo.Sequence; +import commonj.sdo.Type; + +/** + * + * An implementation of the model object 'Reference'. + * + *

+ *

+ * + * @generated + */ +public class ReferenceImpl extends EReferenceImpl implements Property,/* DataObject,*/ org.apache.tuscany.sdo.model.Property +{ + /** + * + * + * @generated + */ + protected ReferenceImpl() + { + super(); + } + + /** + * + * + * @generated NOT + */ + protected EClass eStaticClass() + { + return SDOPackage.eINSTANCE.getReference(); + } + + /** + * + * + * @generated NOT + */ + public Object getDefault() + { + return getDefaultValue(); + } + + /** + * + * + * @generated NOT + */ + public boolean isReadOnly() + { + //return "true".equals(EcoreUtil.getAnnotation(this, "commonj.sdo", "readOnly")); + return !isChangeable(); //TODO semantics don't exactly match? + } + + /** + * Single-valued SDO properties behave as EMF unsettable, multi-valued properties as EMF !unsettable + */ + public boolean isUnsettable() + { + return !isMany(); + } + + protected List aliasNames = null; + + /** + * + * + * @generated NOT + */ + public List getAliasNames() + { + if (aliasNames == null) + { + aliasNames = DataObjectUtil.getAliasNames(this); + } + return aliasNames; + } + + /** + * + * + * @generated NOT + */ + public Type getType() + { + return (Type)getEType(); + /* + EClassifier eType = getEType(); + //FB More temporary hacks + return eType instanceof Type ? (Type)getEType() : null; + */ + } + + /** + * + * + * @generated NOT + */ + public Type getContainingType() + { + return (Type)getEContainingClass(); + } + + /** + * + * + * @generated NOT + */ + public Property getOpposite() + { + return (Property)getEOpposite(); + } + + public boolean isNullable() + { + String isNillable = EcoreUtil.getAnnotation(this, ExtendedMetaData.ANNOTATION_URI, "nillable"); + return isNillable != null && "true".equals(isNillable); + } + + public boolean isOpenContent() + { + return SDOUtil.isDocumentRoot(getContainingType()); + } + + public List getInstanceProperties() { + return DataObjectUtil.getMetaObjectInstanceProperties(this); + } + + public Object get(Property property) { + return DataObjectUtil.getMetaObjectInstanceProperty(this, property); + } + + ///////////////////////////////////////////////////////////////////////////////////////////////////////// + // 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(); + } + + public void setNullable(boolean value) { + throw new UnsupportedOperationException("Property is frozen and cannot be modified"); + } + + public void unsetNullable() { + throw new UnsupportedOperationException("Property is frozen and cannot be modified"); + } + + public boolean isSetNullable() { + return isNullable(); + } + + public void unsetName() + { + throw new UnsupportedOperationException("Property is frozen and cannot be modified"); + } + + public boolean isSetName() + { + return true; + } + + public void unsetOpposite() + { + throw new UnsupportedOperationException("Property is frozen and cannot be modified"); + } + + public boolean isSetOpposite() + { + return getOpposite() != null; + } + + public void unsetType() + { + throw new UnsupportedOperationException("Property is frozen and cannot be modified"); + } + + public boolean isSetType() + { + return true; + } + + public void unsetDefault() + { + throw new UnsupportedOperationException("Property is frozen and cannot be modified"); + } + + public boolean isSetDefault() + { + return getDefault() != null; + } + + + ///////////////////////////////////////////////////////////////////////////////////////////////////////// + // 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/sdo-java/trunk/impl/src/main/java/org/apache/tuscany/sdo/impl/SDOFactoryImpl.java b/sdo-java/trunk/impl/src/main/java/org/apache/tuscany/sdo/impl/SDOFactoryImpl.java new file mode 100644 index 0000000000..bb0f5ccd2a --- /dev/null +++ b/sdo-java/trunk/impl/src/main/java/org/apache/tuscany/sdo/impl/SDOFactoryImpl.java @@ -0,0 +1,337 @@ +/** + * + * Licensed to the Apache Software Foundation (ASF) under one + * or more contributor license agreements. See the NOTICE file + * distributed with this work for additional information + * regarding copyright ownership. The ASF licenses this file + * to you under the Apache License, Version 2.0 (the + * "License"); you may not use this file except in compliance + * with the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, + * software distributed under the License is distributed on an + * "AS IS" BASIS, WITHOUT 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.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.impl.EcoreFactoryImpl; +import org.eclipse.emf.ecore.plugin.EcorePlugin; + +import commonj.sdo.ChangeSummary; +import commonj.sdo.DataGraph; +import commonj.sdo.DataObject; +import commonj.sdo.Property; +import commonj.sdo.Type; + +/** + * + * An implementation of the model Factory. + * + * @generated + */ +public class SDOFactoryImpl extends EFactoryImpl implements SDOFactory +{ + /** + * Creates the default factory implementation. + * + * + * @generated NOT + */ + public static SDOFactory init() + { + try + { + SDOFactory theSDOFactory = (SDOFactory)EPackage.Registry.INSTANCE.getEFactory(SDOPackage.eNS_URI); + 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. + * + * + * @generated + */ + public SDOFactoryImpl() + { + super(); + } + + /** + * + * + * @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(); + case SDOPackage.EXTENSIBLE_DATA_OBJECT: return (EObject)createExtensibleDataObject(); + default: + throw new IllegalArgumentException("The class '" + eClass.getName() + "' is not a valid classifier"); + } + } + + /** + * + * + * @generated + */ + public Object createFromString(EDataType eDataType, String initialValue) + { + switch (eDataType.getClassifierID()) + { + default: + throw new IllegalArgumentException("The datatype '" + eDataType.getName() + "' is not a valid classifier"); + } + } + + /** + * + * + * @generated + */ + public String convertToString(EDataType eDataType, Object instanceValue) + { + switch (eDataType.getClassifierID()) + { + default: + throw new IllegalArgumentException("The datatype '" + eDataType.getName() + "' is not a valid classifier"); + } + } + + /** + * + * + * @generated + */ + public ChangeSummary createChangeSummary() + { + ChangeSummaryImpl changeSummary = new ChangeSummaryImpl(); + return changeSummary; + } + + /** + * + * + * @generated + */ + public ChangeSummary.Setting createChangeSummarySetting() + { + ChangeSummarySettingImpl changeSummarySetting = new ChangeSummarySettingImpl(); + return changeSummarySetting; + } + + /** + * + * + * @generated + */ + public DataGraph createDataGraph() + { + DataGraphImpl dataGraph = new DataGraphImpl(); + return dataGraph; + } + + /** + * + * + * @generated + */ + public AnyTypeDataObject createAnyTypeDataObject() + { + AnyTypeDataObjectImpl anyTypeDataObject = new AnyTypeDataObjectImpl(); + return anyTypeDataObject; + } + + /** + * + * + * @generated + */ + public SimpleAnyTypeDataObject createSimpleAnyTypeDataObject() + { + SimpleAnyTypeDataObjectImpl simpleAnyTypeDataObject = new SimpleAnyTypeDataObjectImpl(); + return simpleAnyTypeDataObject; + } + + /** + * + * + * @generated + */ + public Type createClass() + { + ClassImpl class_ = new ClassImpl(); + return class_; + } + + /** + * + * + * @generated + */ + public Type createDataType() + { + DataTypeImpl dataType = new DataTypeImpl(); + return dataType; + } + + /** + * + * + * @generated + */ + public Property createAttribute() + { + AttributeImpl attribute = new AttributeImpl(); + return attribute; + } + + /** + * + * + * @generated + */ + public Property createReference() + { + ReferenceImpl reference = new ReferenceImpl(); + return reference; + } + + /** + * + * + * @generated + */ + public Type createEnum() + { + EnumImpl enum_ = new EnumImpl(); + return enum_; + } + + /** + * + * + * @generated + */ + public DataObject createDynamicDataObject() + { + DynamicDataObjectImpl dynamicDataObject = new DynamicDataObjectImpl(); + return dynamicDataObject; + } + + /** + * + * + * @generated + */ + public DataObject createStoreDataObject() + { + StoreDataObjectImpl storeDataObject = new StoreDataObjectImpl(); + return storeDataObject; + } + + /** + * + * + * @generated + */ + public DataObject createDynamicStoreDataObject() + { + DynamicStoreDataObjectImpl dynamicStoreDataObject = new DynamicStoreDataObjectImpl(); + return dynamicStoreDataObject; + } + + /** + * + * + * @generated + */ + public DataObject createExtensibleDataObject() + { + ExtensibleDataObjectImpl extensibleDataObject = new ExtensibleDataObjectImpl(); + return extensibleDataObject; + } + + /** + * + * + * @generated + */ + public SDOPackage getSDOPackage() + { + return (SDOPackage)getEPackage(); + } + + /** + * + * + * @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/sdo-java/trunk/impl/src/main/java/org/apache/tuscany/sdo/impl/SDOPackageImpl.java b/sdo-java/trunk/impl/src/main/java/org/apache/tuscany/sdo/impl/SDOPackageImpl.java new file mode 100644 index 0000000000..25bdab16fe --- /dev/null +++ b/sdo-java/trunk/impl/src/main/java/org/apache/tuscany/sdo/impl/SDOPackageImpl.java @@ -0,0 +1,2207 @@ +/** + * + * Licensed to the Apache Software Foundation (ASF) under one + * or more contributor license agreements. See the NOTICE file + * distributed with this work for additional information + * regarding copyright ownership. The ASF licenses this file + * to you under the Apache License, Version 2.0 (the + * "License"); you may not use this file except in compliance + * with the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, + * software distributed under the License is distributed on an + * "AS IS" BASIS, WITHOUT 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.Collections; +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.apache.tuscany.sdo.impl.SDOFactoryImpl.SDOEcoreFactory; +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.EClassImpl; +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; + +/** + * + * An implementation of the model Package. + * + * @generated + */ +public class SDOPackageImpl extends EPackageImpl implements SDOPackage +{ + /** + * + * + * @generated + */ + private EClass changeSummaryEClass = null; + + /** + * + * + * @generated + */ + private EClass changeSummarySettingEClass = null; + + /** + * + * + * @generated + */ + private EClass dataGraphEClass = null; + + /** + * + * + * @generated + */ + private EClass dataObjectEClass = null; + + /** + * + * + * @generated + */ + private EClass propertyEClass = null; + + /** + * + * + * @generated + */ + private EClass sequenceEClass = null; + + /** + * + * + * @generated + */ + private EClass typeEClass = null; + + /** + * + * + * @generated + */ + private EClass anyTypeDataObjectEClass = null; + + /** + * + * + * @generated + */ + private EClass simpleAnyTypeDataObjectEClass = null; + + /** + * + * + * @generated + */ + private EClass classEClass = null; + + /** + * + * + * @generated + */ + private EClass dataTypeEClass = null; + + /** + * + * + * @generated + */ + private EClass attributeEClass = null; + + /** + * + * + * @generated + */ + private EClass referenceEClass = null; + + /** + * + * + * @generated + */ + private EClass enumEClass = null; + + /** + * + * + * @generated + */ + private EClass dynamicDataObjectEClass = null; + + /** + * + * + * @generated + */ + private EClass storeDataObjectEClass = null; + + /** + * + * + * @generated + */ + private EClass dynamicStoreDataObjectEClass = null; + + /** + * + * + * @generated + */ + private EClass extensibleDataObjectEClass = null; + + /** + * + * + * @generated + */ + private EDataType eJavaListEDataType = null; + + /** + * + * + * @generated + */ + private EDataType eObjectStreamExceptionEDataType = null; + + /** + * Creates an instance of the model Package, registered with + * {@link org.eclipse.emf.ecore.EPackage.Registry EPackage.Registry} by the package + * package URI value. + *

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

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

Invocation of this method will not affect any packages that have + * already been initialized. + * + * + * @see #eNS_URI + * @see #createPackageContents() + * @see #initializePackageContents() + * @generated + */ + public static 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; + } + + /** + * + * + * @generated + */ + public EClass getChangeSummary() + { + return changeSummaryEClass; + } + + /** + * + * + * @generated + */ + public EReference getChangeSummary_EDataGraph() + { + return (EReference)changeSummaryEClass.getEStructuralFeatures().get(0); + } + +// /** +// * +// * +// * +// */ +// public EReference getChangeSummary_EDataObject() +// { +// return (EReference)changeSummaryEClass.getEStructuralFeatures().get(1); +// } + + /** + * + * + * @generated + */ + public EClass getChangeSummarySetting() + { + return changeSummarySettingEClass; + } + + /** + * + * + * @generated + */ + public EClass getDataGraph() + { + return dataGraphEClass; + } + + /** + * + * + * @generated + */ + public EAttribute getDataGraph_ResourceSet() + { + return (EAttribute)dataGraphEClass.getEStructuralFeatures().get(0); + } + + /** + * + * + * @generated + */ + public EAttribute getDataGraph_RootResource() + { + return (EAttribute)dataGraphEClass.getEStructuralFeatures().get(1); + } + + /** + * + * + * @generated + */ + public EReference getDataGraph_EChangeSummary() + { + return (EReference)dataGraphEClass.getEStructuralFeatures().get(2); + } + + /** + * + * + * @generated + */ + public EReference getDataGraph_ERootObject() + { + return (EReference)dataGraphEClass.getEStructuralFeatures().get(3); + } + + /** + * + * + * @generated + */ + public EClass getDataObject() + { + return dataObjectEClass; + } + + /** + * + * + * @generated + */ + public EClass getProperty() + { + return propertyEClass; + } + + /** + * + * + * @generated + */ + public EClass getSequence() + { + return sequenceEClass; + } + + /** + * + * + * @generated + */ + public EClass getType() + { + return typeEClass; + } + + /** + * + * + * @generated + */ + public EClass getAnyTypeDataObject() + { + return anyTypeDataObjectEClass; + } + + /** + * + * + * @generated + */ + public EClass getSimpleAnyTypeDataObject() + { + return simpleAnyTypeDataObjectEClass; + } + + /** + * + * + * @generated + */ + public EClass getClass_() + { + return classEClass; + } + + /** + * + * + * @generated + */ + public EClass getDataType() + { + return dataTypeEClass; + } + + /** + * + * + * @generated + */ + public EClass getAttribute() + { + return attributeEClass; + } + + /** + * + * + * @generated + */ + public EClass getReference() + { + return referenceEClass; + } + + /** + * + * + * @generated + */ + public EClass getEnum() + { + return enumEClass; + } + + /** + * + * + * @generated + */ + public EClass getDynamicDataObject() + { + return dynamicDataObjectEClass; + } + + /** + * + * + * @generated + */ + public EClass getStoreDataObject() + { + return storeDataObjectEClass; + } + + /** + * + * + * @generated + */ + public EClass getDynamicStoreDataObject() + { + return dynamicStoreDataObjectEClass; + } + + /** + * + * + * @generated + */ + public EClass getExtensibleDataObject() + { + return extensibleDataObjectEClass; + } + + /** + * + * + * @generated + */ + public EDataType getEJavaList() + { + return eJavaListEDataType; + } + + /** + * + * + * @generated + */ + public EDataType getEObjectStreamException() + { + return eObjectStreamExceptionEDataType; + } + + /** + * + * + * @generated + */ + public SDOFactory getSDOFactory() + { + return (SDOFactory)getEFactoryInstance(); + } + + /** + * + * + * @generated + */ + private boolean isCreated = false; + + /** + * Creates the meta-model objects for the package. This method is + * guarded to have no affect on any invocation but its first. + * + * + * @generated + */ + public void createPackageContents() + { + if (isCreated) return; + isCreated = true; + + // Create classes and their features + 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); + + extensibleDataObjectEClass = createEClass(EXTENSIBLE_DATA_OBJECT); + + // Create data types + eJavaListEDataType = createEDataType(EJAVA_LIST); + eObjectStreamExceptionEDataType = createEDataType(EOBJECT_STREAM_EXCEPTION); + } + + protected EClass createEClass(int id) + { + EClassImpl c; + switch(id) { + case ANY_TYPE_DATA_OBJECT: + c = new ClassImpl() { + List baseTypes = null; + public List getBaseTypes() { + if (baseTypes == null) + baseTypes = Collections.singletonList(getDataObject()); + return baseTypes; + } + public List getTypeFeatures() { + return getEAllStructuralFeatures(); + } + }; + break; + case SIMPLE_ANY_TYPE_DATA_OBJECT: + c = new ClassImpl() { + List baseTypes = null; + public List getBaseTypes() { + if (baseTypes == null) + baseTypes = Collections.singletonList(getAnyTypeDataObject()); + return baseTypes; + } + }; + break; + default: + c = (EClassImpl)ecoreFactory.createEClass(); + } + c.setClassifierID(id); + getEClassifiers().add(c); + return c; + } + + /** + * + * + * @generated + */ + private boolean isInitialized = false; + + /** + * Complete the initialization of the package and its meta-model. This + * method is guarded to have no affect on any invocation but its first. + * + * + * @generated + */ + public void initializePackageContents() + { + if (isInitialized) return; + isInitialized = true; + + // Initialize package + setName(eNAME); + setNsPrefix(eNS_PREFIX); + setNsURI(eNS_URI); + + // Obtain other dependent packages + 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()); + extensibleDataObjectEClass.getESuperTypes().add(this.getDataObject()); + + // 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); + + initEClass(extensibleDataObjectEClass, DataObject.class, "ExtensibleDataObject", !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 http://www.eclipse.org/emf/2002/GenModel. + * + * + * @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 http:///org/eclipse/emf/ecore/util/ExtendedMetaData. + * + * + * @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/sdo-java/trunk/impl/src/main/java/org/apache/tuscany/sdo/impl/SimpleAnyTypeDataObjectImpl.java b/sdo-java/trunk/impl/src/main/java/org/apache/tuscany/sdo/impl/SimpleAnyTypeDataObjectImpl.java new file mode 100644 index 0000000000..e257e30d27 --- /dev/null +++ b/sdo-java/trunk/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; + +/** + * + * An implementation of the model object 'EData Object Simple Any Type'. + * + *

+ * The following features are implemented: + *

    + *
  • {@link org.apache.tuscany.sdo.impl.SimpleAnyTypeDataObjectImpl#getRawValue Raw Value}
  • + *
  • {@link org.apache.tuscany.sdo.impl.SimpleAnyTypeDataObjectImpl#getValue Value}
  • + *
  • {@link org.apache.tuscany.sdo.impl.SimpleAnyTypeDataObjectImpl#getInstanceType Instance Type}
  • + *
+ *

+ * + * @generated + */ +public class SimpleAnyTypeDataObjectImpl extends AnyTypeDataObjectImpl implements SimpleAnyTypeDataObject +{ + /** + * The default value of the '{@link #getRawValue() Raw Value}' attribute. + * + * + * @see #getRawValue() + * @generated + * @ordered + */ + protected static final String RAW_VALUE_EDEFAULT = null; + + /** + * The default value of the '{@link #getValue() Value}' attribute. + * + * + * @see #getValue() + * @generated + * @ordered + */ + protected static final Object VALUE_EDEFAULT = null; + + /** + * The cached value of the '{@link #getInstanceType() Instance Type}' reference. + * + * + * @see #getInstanceType() + * @generated + * @ordered + */ + protected EDataType instanceType = null; + + /** + * + * + * @generated + */ + protected SimpleAnyTypeDataObjectImpl() + { + super(); + } + + /** + * + * + * @generated + */ + protected EClass eStaticClass() + { + return SDOPackage.eINSTANCE.getSimpleAnyTypeDataObject(); + } + + /** + * + * + * @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(); + } + + /** + * + * + * @generated NOT + */ + public void setRawValue(String newRawValue) + { + getMixed().clear(); + if (newRawValue != null) + { + getMixed().add(XMLTypePackage.eINSTANCE.getXMLTypeDocumentRoot_Text(), newRawValue); + } + } + + /** + * + * + * @generated NOT + */ + public Object getValue() + { + return EcoreUtil.createFromString(instanceType, getRawValue()); + } + + /** + * + * + * @generated NOT + */ + public void setValue(Object newValue) + { + setRawValue(EcoreUtil.convertToString(instanceType, newValue)); + } + + /** + * + * + * @generated + */ + public EDataType getInstanceType() + { + return instanceType; + } + + /** + * + * + * @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)); + } + + /** + * + * + * @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); + } + + /** + * + * + * @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); + } + + /** + * + * + * @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); + } + + /** + * + * + * @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); + } + + /** + * + * + * @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); + } + + /** + * + * + * @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/sdo-java/trunk/impl/src/main/java/org/apache/tuscany/sdo/impl/StoreDataObjectImpl.java b/sdo-java/trunk/impl/src/main/java/org/apache/tuscany/sdo/impl/StoreDataObjectImpl.java new file mode 100644 index 0000000000..0cf7f3586c --- /dev/null +++ b/sdo-java/trunk/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; + +/** + * + * An implementation of the model object 'Store Data Object'. + * @extends EStructuralFeature.Internal.DynamicValueHolder + * + *

+ *

+ * + * @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; + } + + /** + * + * + * @generated + */ + protected EClass eStaticClass() + { + return SDOPackage.eINSTANCE.getStoreDataObject(); + } + +} //StoreDataObjectImpl diff --git a/sdo-java/trunk/impl/src/main/java/org/apache/tuscany/sdo/model/BaseDataGraphType.java b/sdo-java/trunk/impl/src/main/java/org/apache/tuscany/sdo/model/BaseDataGraphType.java new file mode 100644 index 0000000000..e57b11474b --- /dev/null +++ b/sdo-java/trunk/impl/src/main/java/org/apache/tuscany/sdo/model/BaseDataGraphType.java @@ -0,0 +1,213 @@ +/** + * + * Licensed to the Apache Software Foundation (ASF) under one + * or more contributor license agreements. See the NOTICE file + * distributed with this work for additional information + * regarding copyright ownership. The ASF licenses this file + * to you under the Apache License, Version 2.0 (the + * "License"); you may not use this file except in compliance + * with the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, + * software distributed under the License is distributed on an + * "AS IS" BASIS, WITHOUT 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.ChangeSummary; +import commonj.sdo.Sequence; + +import java.io.Serializable; + +/** + * + * A representation of the model object 'Base Data Graph Type'. + * + * + *

+ * The following features are supported: + *

    + *
  • {@link org.apache.tuscany.sdo.model.BaseDataGraphType#getModels Models}
  • + *
  • {@link org.apache.tuscany.sdo.model.BaseDataGraphType#getXsd Xsd}
  • + *
  • {@link org.apache.tuscany.sdo.model.BaseDataGraphType#getChangeSummary Change Summary}
  • + *
  • {@link org.apache.tuscany.sdo.model.BaseDataGraphType#getAnyAttribute Any Attribute}
  • + *
+ *

+ * + * @extends Serializable + * @generated + */ +public interface BaseDataGraphType extends Serializable +{ + /** + * Returns the value of the 'Models' containment reference. + * + *

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

+ * + * @return the value of the 'Models' containment reference. + * @see #isSetModels() + * @see #unsetModels() + * @see #setModels(ModelsType) + * @generated + */ + ModelsType getModels(); + + /** + * Sets the value of the '{@link org.apache.tuscany.sdo.model.BaseDataGraphType#getModels Models}' containment reference. + * + * + * @param value the new value of the 'Models' containment reference. + * @see #isSetModels() + * @see #unsetModels() + * @see #getModels() + * @generated + */ + void setModels(ModelsType value); + + /** + * Unsets the value of the '{@link org.apache.tuscany.sdo.model.BaseDataGraphType#getModels Models}' containment reference. + * + * + * @see #isSetModels() + * @see #getModels() + * @see #setModels(ModelsType) + * @generated + */ + void unsetModels(); + + /** + * Returns whether the value of the '{@link org.apache.tuscany.sdo.model.BaseDataGraphType#getModels Models}' containment reference is set. + * + * + * @return whether the value of the 'Models' containment reference is set. + * @see #unsetModels() + * @see #getModels() + * @see #setModels(ModelsType) + * @generated + */ + boolean isSetModels(); + + /** + * Returns the value of the 'Xsd' containment reference. + * + *

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

+ * + * @return the value of the 'Xsd' containment reference. + * @see #isSetXsd() + * @see #unsetXsd() + * @see #setXsd(XSDType) + * @generated + */ + XSDType getXsd(); + + /** + * Sets the value of the '{@link org.apache.tuscany.sdo.model.BaseDataGraphType#getXsd Xsd}' containment reference. + * + * + * @param value the new value of the 'Xsd' containment reference. + * @see #isSetXsd() + * @see #unsetXsd() + * @see #getXsd() + * @generated + */ + void setXsd(XSDType value); + + /** + * Unsets the value of the '{@link org.apache.tuscany.sdo.model.BaseDataGraphType#getXsd Xsd}' containment reference. + * + * + * @see #isSetXsd() + * @see #getXsd() + * @see #setXsd(XSDType) + * @generated + */ + void unsetXsd(); + + /** + * Returns whether the value of the '{@link org.apache.tuscany.sdo.model.BaseDataGraphType#getXsd Xsd}' containment reference is set. + * + * + * @return whether the value of the 'Xsd' containment reference is set. + * @see #unsetXsd() + * @see #getXsd() + * @see #setXsd(XSDType) + * @generated + */ + boolean isSetXsd(); + + /** + * Returns the value of the 'Change Summary' attribute. + * + *

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

+ * + * @return the value of the 'Change Summary' attribute. + * @see #isSetChangeSummary() + * @see #unsetChangeSummary() + * @see #setChangeSummary(ChangeSummary) + * @generated + */ + ChangeSummary getChangeSummary(); + + /** + * Sets the value of the '{@link org.apache.tuscany.sdo.model.BaseDataGraphType#getChangeSummary Change Summary}' attribute. + * + * + * @param value the new value of the 'Change Summary' attribute. + * @see #isSetChangeSummary() + * @see #unsetChangeSummary() + * @see #getChangeSummary() + * @generated + */ + void setChangeSummary(ChangeSummary value); + + /** + * Unsets the value of the '{@link org.apache.tuscany.sdo.model.BaseDataGraphType#getChangeSummary Change Summary}' attribute. + * + * + * @see #isSetChangeSummary() + * @see #getChangeSummary() + * @see #setChangeSummary(ChangeSummary) + * @generated + */ + void unsetChangeSummary(); + + /** + * Returns whether the value of the '{@link org.apache.tuscany.sdo.model.BaseDataGraphType#getChangeSummary Change Summary}' attribute is set. + * + * + * @return whether the value of the 'Change Summary' attribute is set. + * @see #unsetChangeSummary() + * @see #getChangeSummary() + * @see #setChangeSummary(ChangeSummary) + * @generated + */ + boolean isSetChangeSummary(); + + /** + * Returns the value of the 'Any Attribute' attribute list. + * + *

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

+ * + * @return the value of the 'Any Attribute' attribute list. + * @generated + */ + Sequence getAnyAttribute(); + +} // BaseDataGraphType diff --git a/sdo-java/trunk/impl/src/main/java/org/apache/tuscany/sdo/model/DataGraphType.java b/sdo-java/trunk/impl/src/main/java/org/apache/tuscany/sdo/model/DataGraphType.java new file mode 100644 index 0000000000..2c83244789 --- /dev/null +++ b/sdo-java/trunk/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; + +/** + * + * A representation of the model object 'Data Graph Type'. + * + * + *

+ * The following features are supported: + *

    + *
  • {@link org.apache.tuscany.sdo.model.DataGraphType#getAny Any}
  • + *
+ *

+ * + * @generated + */ +public interface DataGraphType extends BaseDataGraphType +{ + /** + * Returns the value of the 'Any' attribute list. + * + *

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

+ * + * @return the value of the 'Any' attribute list. + * @generated + */ + Sequence getAny(); + +} // DataGraphType diff --git a/sdo-java/trunk/impl/src/main/java/org/apache/tuscany/sdo/model/DataObject.java b/sdo-java/trunk/impl/src/main/java/org/apache/tuscany/sdo/model/DataObject.java new file mode 100644 index 0000000000..9e3b2a1386 --- /dev/null +++ b/sdo-java/trunk/impl/src/main/java/org/apache/tuscany/sdo/model/DataObject.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.model; + +import java.io.Serializable; + +/** + * + * A representation of the model object 'Data Object'. + * + * + * + * @extends Serializable + * @generated + */ +public interface DataObject extends Serializable +{ +} // DataObject diff --git a/sdo-java/trunk/impl/src/main/java/org/apache/tuscany/sdo/model/ModelFactory.java b/sdo-java/trunk/impl/src/main/java/org/apache/tuscany/sdo/model/ModelFactory.java new file mode 100644 index 0000000000..c8fe69167e --- /dev/null +++ b/sdo-java/trunk/impl/src/main/java/org/apache/tuscany/sdo/model/ModelFactory.java @@ -0,0 +1,106 @@ +/** + * + * Licensed to the Apache Software Foundation (ASF) under one + * or more contributor license agreements. See the NOTICE file + * distributed with this work for additional information + * regarding copyright ownership. The ASF licenses this file + * to you under the Apache License, Version 2.0 (the + * "License"); you may not use this file except in compliance + * with the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, + * software distributed under the License is distributed on an + * "AS IS" BASIS, WITHOUT 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.helper.HelperContext; + + +/** + * + * The Factory for the model. + * It provides a create method for each non-abstract class of the model. + * + * @generated + */ +public interface ModelFactory +{ + + /** + * The singleton instance of the factory. + * + * + * @generated + */ + ModelFactory INSTANCE = org.apache.tuscany.sdo.model.impl.ModelFactoryImpl.init(); + + /** + * Returns a new object of class 'Data Graph Type'. + * + * + * @return a new object of class 'Data Graph Type'. + * @generated + */ + DataGraphType createDataGraphType(); + + /** + * Returns a new object of class 'Models Type'. + * + * + * @return a new object of class 'Models Type'. + * @generated + */ + ModelsType createModelsType(); + + /** + * Returns a new object of class 'Property'. + * + * + * @return a new object of class 'Property'. + * @generated + */ + Property createProperty(); + + /** + * Returns a new object of class 'Type'. + * + * + * @return a new object of class 'Type'. + * @generated + */ + Type createType(); + + /** + * Returns a new object of class 'Types'. + * + * + * @return a new object of class 'Types'. + * @generated + */ + Types createTypes(); + + /** + * Returns a new object of class 'XSD Type'. + * + * + * @return a new object of class 'XSD Type'. + * @generated + */ + XSDType createXSDType(); + + /** + * Registers the types supported by this Factory within the supplied scope.argument + * + * + * @param scope an instance of HelperContext used to manage the scoping of types. + * @generated + */ + public void register(HelperContext scope); + +} //ModelFactory diff --git a/sdo-java/trunk/impl/src/main/java/org/apache/tuscany/sdo/model/ModelsType.java b/sdo-java/trunk/impl/src/main/java/org/apache/tuscany/sdo/model/ModelsType.java new file mode 100644 index 0000000000..4159ac9dc1 --- /dev/null +++ b/sdo-java/trunk/impl/src/main/java/org/apache/tuscany/sdo/model/ModelsType.java @@ -0,0 +1,62 @@ +/** + * + * Licensed to the Apache Software Foundation (ASF) under one + * or more contributor license agreements. See the NOTICE file + * distributed with this work for additional information + * regarding copyright ownership. The ASF licenses this file + * to you under the Apache License, Version 2.0 (the + * "License"); you may not use this file except in compliance + * with the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, + * software distributed under the License is distributed on an + * "AS IS" BASIS, WITHOUT 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.io.Serializable; + +/** + * + * A representation of the model object 'Models Type'. + * + * + * + * + * Expected type is emof:Package. + * + * + * + *

+ * The following features are supported: + *

    + *
  • {@link org.apache.tuscany.sdo.model.ModelsType#getAny Any}
  • + *
+ *

+ * + * @extends Serializable + * @generated + */ +public interface ModelsType extends Serializable +{ + /** + * Returns the value of the 'Any' attribute list. + * + *

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

+ * + * @return the value of the 'Any' attribute list. + * @generated + */ + Sequence getAny(); + +} // ModelsType diff --git a/sdo-java/trunk/impl/src/main/java/org/apache/tuscany/sdo/model/Property.java b/sdo-java/trunk/impl/src/main/java/org/apache/tuscany/sdo/model/Property.java new file mode 100644 index 0000000000..15ee4c2f99 --- /dev/null +++ b/sdo-java/trunk/impl/src/main/java/org/apache/tuscany/sdo/model/Property.java @@ -0,0 +1,503 @@ +/** + * + * Licensed to the Apache Software Foundation (ASF) under one + * or more contributor license agreements. See the NOTICE file + * distributed with this work for additional information + * regarding copyright ownership. The ASF licenses this file + * to you under the Apache License, Version 2.0 (the + * "License"); you may not use this file except in compliance + * with the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, + * software distributed under the License is distributed on an + * "AS IS" BASIS, WITHOUT 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.io.Serializable; + +import java.util.List; + +/** + * + * A representation of the model object 'Property'. + * + * + *

+ * The following features are supported: + *

    + *
  • {@link org.apache.tuscany.sdo.model.Property#getAliasName Alias Name}
  • + *
  • {@link org.apache.tuscany.sdo.model.Property#getAny Any}
  • + *
  • {@link org.apache.tuscany.sdo.model.Property#getName Name}
  • + *
  • {@link org.apache.tuscany.sdo.model.Property#isMany Many}
  • + *
  • {@link org.apache.tuscany.sdo.model.Property#isContainment Containment}
  • + *
  • {@link org.apache.tuscany.sdo.model.Property#getDefault Default}
  • + *
  • {@link org.apache.tuscany.sdo.model.Property#isReadOnly Read Only}
  • + *
  • {@link org.apache.tuscany.sdo.model.Property#getType_ Type}
  • + *
  • {@link org.apache.tuscany.sdo.model.Property#getOpposite Opposite}
  • + *
  • {@link org.apache.tuscany.sdo.model.Property#isNullable Nullable}
  • + *
  • {@link org.apache.tuscany.sdo.model.Property#getAnyAttribute Any Attribute}
  • + *
+ *

+ * + * @extends Serializable + * @generated + */ +public interface Property extends Serializable +{ + /** + * Returns the value of the 'Alias Name' attribute list. + * The list contents are of type {@link java.lang.String}. + * + *

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

+ * + * @return the value of the 'Alias Name' attribute list. + * @generated + */ + List getAliasName(); + + /** + * Returns the value of the 'Any' attribute list. + * + *

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

+ * + * @return the value of the 'Any' attribute list. + * @generated + */ + Sequence getAny(); + + /** + * Returns the value of the 'Name' attribute. + * + *

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

+ * + * @return the value of the 'Name' attribute. + * @see #isSetName() + * @see #unsetName() + * @see #setName(String) + * @generated + */ + String getName(); + + /** + * Sets the value of the '{@link org.apache.tuscany.sdo.model.Property#getName Name}' attribute. + * + * + * @param value the new value of the 'Name' attribute. + * @see #isSetName() + * @see #unsetName() + * @see #getName() + * @generated + */ + void setName(String value); + + /** + * Unsets the value of the '{@link org.apache.tuscany.sdo.model.Property#getName Name}' attribute. + * + * + * @see #isSetName() + * @see #getName() + * @see #setName(String) + * @generated + */ + void unsetName(); + + /** + * Returns whether the value of the '{@link org.apache.tuscany.sdo.model.Property#getName Name}' attribute is set. + * + * + * @return whether the value of the 'Name' attribute is set. + * @see #unsetName() + * @see #getName() + * @see #setName(String) + * @generated + */ + boolean isSetName(); + + /** + * Returns the value of the 'Many' attribute. + * + *

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

+ * + * @return the value of the 'Many' attribute. + * @see #isSetMany() + * @see #unsetMany() + * @see #setMany(boolean) + * @generated + */ + boolean isMany(); + + /** + * Sets the value of the '{@link org.apache.tuscany.sdo.model.Property#isMany Many}' attribute. + * + * + * @param value the new value of the 'Many' 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 Many}' attribute. + * + * + * @see #isSetMany() + * @see #isMany() + * @see #setMany(boolean) + * @generated + */ + void unsetMany(); + + /** + * Returns whether the value of the '{@link org.apache.tuscany.sdo.model.Property#isMany Many}' attribute is set. + * + * + * @return whether the value of the 'Many' attribute is set. + * @see #unsetMany() + * @see #isMany() + * @see #setMany(boolean) + * @generated + */ + boolean isSetMany(); + + /** + * Returns the value of the 'Containment' attribute. + * + *

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

+ * + * @return the value of the 'Containment' attribute. + * @see #isSetContainment() + * @see #unsetContainment() + * @see #setContainment(boolean) + * @generated + */ + boolean isContainment(); + + /** + * Sets the value of the '{@link org.apache.tuscany.sdo.model.Property#isContainment Containment}' attribute. + * + * + * @param value the new value of the 'Containment' 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 Containment}' attribute. + * + * + * @see #isSetContainment() + * @see #isContainment() + * @see #setContainment(boolean) + * @generated + */ + void unsetContainment(); + + /** + * Returns whether the value of the '{@link org.apache.tuscany.sdo.model.Property#isContainment Containment}' attribute is set. + * + * + * @return whether the value of the 'Containment' attribute is set. + * @see #unsetContainment() + * @see #isContainment() + * @see #setContainment(boolean) + * @generated + */ + boolean isSetContainment(); + + /** + * Returns the value of the 'Default' attribute. + * + *

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

+ * + * @return the value of the 'Default' attribute. + * @see #isSetDefault() + * @see #unsetDefault() + * @see #setDefault_(String) + * @generated + */ + String getDefault_(); + + /** + * Sets the value of the '{@link org.apache.tuscany.sdo.model.Property#getDefault Default}' attribute. + * + * + * @param value the new value of the 'Default' attribute. + * @see #isSetDefault() + * @see #unsetDefault() + * @see #getDefault_() + * @generated + */ + void setDefault_(String value); + + /** + * Unsets the value of the '{@link org.apache.tuscany.sdo.model.Property#getDefault Default}' attribute. + * + * + * @see #isSetDefault() + * @see #getDefault_() + * @see #setDefault_(String) + * @generated + */ + void unsetDefault(); + + /** + * Returns whether the value of the '{@link org.apache.tuscany.sdo.model.Property#getDefault Default}' attribute is set. + * + * + * @return whether the value of the 'Default' attribute is set. + * @see #unsetDefault() + * @see #getDefault_() + * @see #setDefault_(String) + * @generated + */ + boolean isSetDefault(); + + /** + * Returns the value of the 'Read Only' attribute. + * + *

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

+ * + * @return the value of the 'Read Only' attribute. + * @see #isSetReadOnly() + * @see #unsetReadOnly() + * @see #setReadOnly(boolean) + * @generated + */ + boolean isReadOnly(); + + /** + * Sets the value of the '{@link org.apache.tuscany.sdo.model.Property#isReadOnly Read Only}' attribute. + * + * + * @param value the new value of the 'Read Only' 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 Read Only}' attribute. + * + * + * @see #isSetReadOnly() + * @see #isReadOnly() + * @see #setReadOnly(boolean) + * @generated + */ + void unsetReadOnly(); + + /** + * Returns whether the value of the '{@link org.apache.tuscany.sdo.model.Property#isReadOnly Read Only}' attribute is set. + * + * + * @return whether the value of the 'Read Only' attribute is set. + * @see #unsetReadOnly() + * @see #isReadOnly() + * @see #setReadOnly(boolean) + * @generated + */ + boolean isSetReadOnly(); + + /** + * Returns the value of the 'Type' reference. + * + *

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

+ * + * @return the value of the 'Type' reference. + * @see #isSetType() + * @see #unsetType() + * @see #setType(Type) + * @generated + */ + Type getType_(); + + /** + * Sets the value of the '{@link org.apache.tuscany.sdo.model.Property#getType_ Type}' reference. + * + * + * @param value the new value of the 'Type' reference. + * @see #isSetType() + * @see #unsetType() + * @see #getType_() + * @generated + */ + void setType(Type value); + + /** + * Unsets the value of the '{@link org.apache.tuscany.sdo.model.Property#getType_ Type}' reference. + * + * + * @see #isSetType() + * @see #getType_() + * @see #setType(Type) + * @generated + */ + void unsetType(); + + /** + * Returns whether the value of the '{@link org.apache.tuscany.sdo.model.Property#getType_ Type}' reference is set. + * + * + * @return whether the value of the 'Type' reference is set. + * @see #unsetType() + * @see #getType_() + * @see #setType(Type) + * @generated + */ + boolean isSetType(); + + /** + * Returns the value of the 'Opposite' reference. + * + *

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

+ * + * @return the value of the 'Opposite' reference. + * @see #isSetOpposite() + * @see #unsetOpposite() + * @see #setOpposite_(Property) + * @generated + */ + Property getOpposite_(); + + /** + * Sets the value of the '{@link org.apache.tuscany.sdo.model.Property#getOpposite Opposite}' reference. + * + * + * @param value the new value of the 'Opposite' reference. + * @see #isSetOpposite() + * @see #unsetOpposite() + * @see #getOpposite_() + * @generated + */ + void setOpposite_(Property value); + + /** + * Unsets the value of the '{@link org.apache.tuscany.sdo.model.Property#getOpposite Opposite}' reference. + * + * + * @see #isSetOpposite() + * @see #getOpposite_() + * @see #setOpposite_(Property) + * @generated + */ + void unsetOpposite(); + + /** + * Returns whether the value of the '{@link org.apache.tuscany.sdo.model.Property#getOpposite Opposite}' reference is set. + * + * + * @return whether the value of the 'Opposite' reference is set. + * @see #unsetOpposite() + * @see #getOpposite_() + * @see #setOpposite_(Property) + * @generated + */ + boolean isSetOpposite(); + + /** + * Returns the value of the 'Nullable' attribute. + * + *

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

+ * + * @return the value of the 'Nullable' attribute. + * @see #isSetNullable() + * @see #unsetNullable() + * @see #setNullable(boolean) + * @generated + */ + boolean isNullable(); + + /** + * Sets the value of the '{@link org.apache.tuscany.sdo.model.Property#isNullable Nullable}' attribute. + * + * + * @param value the new value of the 'Nullable' attribute. + * @see #isSetNullable() + * @see #unsetNullable() + * @see #isNullable() + * @generated + */ + void setNullable(boolean value); + + /** + * Unsets the value of the '{@link org.apache.tuscany.sdo.model.Property#isNullable Nullable}' attribute. + * + * + * @see #isSetNullable() + * @see #isNullable() + * @see #setNullable(boolean) + * @generated + */ + void unsetNullable(); + + /** + * Returns whether the value of the '{@link org.apache.tuscany.sdo.model.Property#isNullable Nullable}' attribute is set. + * + * + * @return whether the value of the 'Nullable' attribute is set. + * @see #unsetNullable() + * @see #isNullable() + * @see #setNullable(boolean) + * @generated + */ + boolean isSetNullable(); + + /** + * Returns the value of the 'Any Attribute' attribute list. + * + *

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

+ * + * @return the value of the 'Any Attribute' attribute list. + * @generated + */ + Sequence getAnyAttribute(); + +} // Property diff --git a/sdo-java/trunk/impl/src/main/java/org/apache/tuscany/sdo/model/TextType.java b/sdo-java/trunk/impl/src/main/java/org/apache/tuscany/sdo/model/TextType.java new file mode 100644 index 0000000000..741343e5a8 --- /dev/null +++ b/sdo-java/trunk/impl/src/main/java/org/apache/tuscany/sdo/model/TextType.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; + +import java.io.Serializable; + +import java.util.List; + +/** + * + * A representation of the model object 'Text Type'. + * + * + *

+ * The following features are supported: + *

    + *
  • {@link org.apache.tuscany.sdo.model.TextType#getText Text}
  • + *
+ *

+ * + * @extends Serializable + * @generated + */ +public interface TextType extends Serializable +{ + /** + * Returns the value of the 'Text' attribute list. + * The list contents are of type {@link java.lang.String}. + * + *

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

+ * + * @return the value of the 'Text' attribute list. + * @generated + */ + List getText(); + +} // TextType diff --git a/sdo-java/trunk/impl/src/main/java/org/apache/tuscany/sdo/model/Type.java b/sdo-java/trunk/impl/src/main/java/org/apache/tuscany/sdo/model/Type.java new file mode 100644 index 0000000000..26a02f7cc0 --- /dev/null +++ b/sdo-java/trunk/impl/src/main/java/org/apache/tuscany/sdo/model/Type.java @@ -0,0 +1,431 @@ +/** + * + * Licensed to the Apache Software Foundation (ASF) under one + * or more contributor license agreements. See the NOTICE file + * distributed with this work for additional information + * regarding copyright ownership. The ASF licenses this file + * to you under the Apache License, Version 2.0 (the + * "License"); you may not use this file except in compliance + * with the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, + * software distributed under the License is distributed on an + * "AS IS" BASIS, WITHOUT 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.io.Serializable; + +import java.util.List; + +/** + * + * A representation of the model object 'Type'. + * + * + *

+ * The following features are supported: + *

    + *
  • {@link org.apache.tuscany.sdo.model.Type#getBaseType Base Type}
  • + *
  • {@link org.apache.tuscany.sdo.model.Type#getProperty Property}
  • + *
  • {@link org.apache.tuscany.sdo.model.Type#getAliasName Alias Name}
  • + *
  • {@link org.apache.tuscany.sdo.model.Type#getAny Any}
  • + *
  • {@link org.apache.tuscany.sdo.model.Type#getName Name}
  • + *
  • {@link org.apache.tuscany.sdo.model.Type#getUri Uri}
  • + *
  • {@link org.apache.tuscany.sdo.model.Type#isDataType Data Type}
  • + *
  • {@link org.apache.tuscany.sdo.model.Type#isOpen Open}
  • + *
  • {@link org.apache.tuscany.sdo.model.Type#isSequenced Sequenced}
  • + *
  • {@link org.apache.tuscany.sdo.model.Type#isAbstract Abstract}
  • + *
  • {@link org.apache.tuscany.sdo.model.Type#getAnyAttribute Any Attribute}
  • + *
+ *

+ * + * @extends Serializable + * @generated + */ +public interface Type extends Serializable +{ + /** + * Returns the value of the 'Base Type' reference list. + * The list contents are of type {@link org.apache.tuscany.sdo.model.Type}. + * + *

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

+ * + * @return the value of the 'Base Type' reference list. + * @generated + */ + List getBaseType(); + + /** + * Returns the value of the 'Property' containment reference list. + * The list contents are of type {@link org.apache.tuscany.sdo.model.Property}. + * + *

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

+ * + * @return the value of the 'Property' containment reference list. + * @generated + */ + List getProperty(); + + /** + * Returns the value of the 'Alias Name' attribute list. + * The list contents are of type {@link java.lang.String}. + * + *

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

+ * + * @return the value of the 'Alias Name' attribute list. + * @generated + */ + List getAliasName(); + + /** + * Returns the value of the 'Any' attribute list. + * + *

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

+ * + * @return the value of the 'Any' attribute list. + * @generated + */ + Sequence getAny(); + + /** + * Returns the value of the 'Name' attribute. + * + *

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

+ * + * @return the value of the 'Name' attribute. + * @see #isSetName() + * @see #unsetName() + * @see #setName(String) + * @generated + */ + String getName(); + + /** + * Sets the value of the '{@link org.apache.tuscany.sdo.model.Type#getName Name}' attribute. + * + * + * @param value the new value of the 'Name' attribute. + * @see #isSetName() + * @see #unsetName() + * @see #getName() + * @generated + */ + void setName(String value); + + /** + * Unsets the value of the '{@link org.apache.tuscany.sdo.model.Type#getName Name}' attribute. + * + * + * @see #isSetName() + * @see #getName() + * @see #setName(String) + * @generated + */ + void unsetName(); + + /** + * Returns whether the value of the '{@link org.apache.tuscany.sdo.model.Type#getName Name}' attribute is set. + * + * + * @return whether the value of the 'Name' attribute is set. + * @see #unsetName() + * @see #getName() + * @see #setName(String) + * @generated + */ + boolean isSetName(); + + /** + * Returns the value of the 'Uri' attribute. + * + *

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

+ * + * @return the value of the 'Uri' attribute. + * @see #isSetUri() + * @see #unsetUri() + * @see #setUri(String) + * @generated + */ + String getUri(); + + /** + * Sets the value of the '{@link org.apache.tuscany.sdo.model.Type#getUri Uri}' attribute. + * + * + * @param value the new value of the 'Uri' attribute. + * @see #isSetUri() + * @see #unsetUri() + * @see #getUri() + * @generated + */ + void setUri(String value); + + /** + * Unsets the value of the '{@link org.apache.tuscany.sdo.model.Type#getUri Uri}' attribute. + * + * + * @see #isSetUri() + * @see #getUri() + * @see #setUri(String) + * @generated + */ + void unsetUri(); + + /** + * Returns whether the value of the '{@link org.apache.tuscany.sdo.model.Type#getUri Uri}' attribute is set. + * + * + * @return whether the value of the 'Uri' attribute is set. + * @see #unsetUri() + * @see #getUri() + * @see #setUri(String) + * @generated + */ + boolean isSetUri(); + + /** + * Returns the value of the 'Data Type' attribute. + * + *

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

+ * + * @return the value of the 'Data Type' attribute. + * @see #isSetDataType() + * @see #unsetDataType() + * @see #setDataType(boolean) + * @generated + */ + boolean isDataType(); + + /** + * Sets the value of the '{@link org.apache.tuscany.sdo.model.Type#isDataType Data Type}' attribute. + * + * + * @param value the new value of the 'Data Type' 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 Data Type}' attribute. + * + * + * @see #isSetDataType() + * @see #isDataType() + * @see #setDataType(boolean) + * @generated + */ + void unsetDataType(); + + /** + * Returns whether the value of the '{@link org.apache.tuscany.sdo.model.Type#isDataType Data Type}' attribute is set. + * + * + * @return whether the value of the 'Data Type' attribute is set. + * @see #unsetDataType() + * @see #isDataType() + * @see #setDataType(boolean) + * @generated + */ + boolean isSetDataType(); + + /** + * Returns the value of the 'Open' attribute. + * + *

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

+ * + * @return the value of the 'Open' attribute. + * @see #isSetOpen() + * @see #unsetOpen() + * @see #setOpen(boolean) + * @generated + */ + boolean isOpen(); + + /** + * Sets the value of the '{@link org.apache.tuscany.sdo.model.Type#isOpen Open}' attribute. + * + * + * @param value the new value of the 'Open' 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 Open}' attribute. + * + * + * @see #isSetOpen() + * @see #isOpen() + * @see #setOpen(boolean) + * @generated + */ + void unsetOpen(); + + /** + * Returns whether the value of the '{@link org.apache.tuscany.sdo.model.Type#isOpen Open}' attribute is set. + * + * + * @return whether the value of the 'Open' attribute is set. + * @see #unsetOpen() + * @see #isOpen() + * @see #setOpen(boolean) + * @generated + */ + boolean isSetOpen(); + + /** + * Returns the value of the 'Sequenced' attribute. + * + *

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

+ * + * @return the value of the 'Sequenced' attribute. + * @see #isSetSequenced() + * @see #unsetSequenced() + * @see #setSequenced(boolean) + * @generated + */ + boolean isSequenced(); + + /** + * Sets the value of the '{@link org.apache.tuscany.sdo.model.Type#isSequenced Sequenced}' attribute. + * + * + * @param value the new value of the 'Sequenced' 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 Sequenced}' attribute. + * + * + * @see #isSetSequenced() + * @see #isSequenced() + * @see #setSequenced(boolean) + * @generated + */ + void unsetSequenced(); + + /** + * Returns whether the value of the '{@link org.apache.tuscany.sdo.model.Type#isSequenced Sequenced}' attribute is set. + * + * + * @return whether the value of the 'Sequenced' attribute is set. + * @see #unsetSequenced() + * @see #isSequenced() + * @see #setSequenced(boolean) + * @generated + */ + boolean isSetSequenced(); + + /** + * Returns the value of the 'Abstract' attribute. + * + *

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

+ * + * @return the value of the 'Abstract' attribute. + * @see #isSetAbstract() + * @see #unsetAbstract() + * @see #setAbstract(boolean) + * @generated + */ + boolean isAbstract(); + + /** + * Sets the value of the '{@link org.apache.tuscany.sdo.model.Type#isAbstract Abstract}' attribute. + * + * + * @param value the new value of the 'Abstract' 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 Abstract}' attribute. + * + * + * @see #isSetAbstract() + * @see #isAbstract() + * @see #setAbstract(boolean) + * @generated + */ + void unsetAbstract(); + + /** + * Returns whether the value of the '{@link org.apache.tuscany.sdo.model.Type#isAbstract Abstract}' attribute is set. + * + * + * @return whether the value of the 'Abstract' attribute is set. + * @see #unsetAbstract() + * @see #isAbstract() + * @see #setAbstract(boolean) + * @generated + */ + boolean isSetAbstract(); + + /** + * Returns the value of the 'Any Attribute' attribute list. + * + *

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

+ * + * @return the value of the 'Any Attribute' attribute list. + * @generated + */ + Sequence getAnyAttribute(); + + String getInstanceClassName(); + +} // Type diff --git a/sdo-java/trunk/impl/src/main/java/org/apache/tuscany/sdo/model/Types.java b/sdo-java/trunk/impl/src/main/java/org/apache/tuscany/sdo/model/Types.java new file mode 100644 index 0000000000..26fb9c57ce --- /dev/null +++ b/sdo-java/trunk/impl/src/main/java/org/apache/tuscany/sdo/model/Types.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 java.io.Serializable; + +import java.util.List; + +/** + * + * A representation of the model object 'Types'. + * + * + *

+ * The following features are supported: + *

    + *
  • {@link org.apache.tuscany.sdo.model.Types#getType_ Type}
  • + *
+ *

+ * + * @extends Serializable + * @generated + */ +public interface Types extends Serializable +{ + /** + * Returns the value of the 'Type' containment reference list. + * The list contents are of type {@link org.apache.tuscany.sdo.model.Type}. + * + *

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

+ * + * @return the value of the 'Type' containment reference list. + * @generated + */ + List getType_(); + + List getTypeList(); + +} // Types diff --git a/sdo-java/trunk/impl/src/main/java/org/apache/tuscany/sdo/model/XSDType.java b/sdo-java/trunk/impl/src/main/java/org/apache/tuscany/sdo/model/XSDType.java new file mode 100644 index 0000000000..32cde02086 --- /dev/null +++ b/sdo-java/trunk/impl/src/main/java/org/apache/tuscany/sdo/model/XSDType.java @@ -0,0 +1,62 @@ +/** + * + * Licensed to the Apache Software Foundation (ASF) under one + * or more contributor license agreements. See the NOTICE file + * distributed with this work for additional information + * regarding copyright ownership. The ASF licenses this file + * to you under the Apache License, Version 2.0 (the + * "License"); you may not use this file except in compliance + * with the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, + * software distributed under the License is distributed on an + * "AS IS" BASIS, WITHOUT 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.io.Serializable; + +/** + * + * A representation of the model object 'XSD Type'. + * + * + * + * + * Expected type is xsd:schema. + * + * + * + *

+ * The following features are supported: + *

    + *
  • {@link org.apache.tuscany.sdo.model.XSDType#getAny Any}
  • + *
+ *

+ * + * @extends Serializable + * @generated + */ +public interface XSDType extends Serializable +{ + /** + * Returns the value of the 'Any' attribute list. + * + *

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

+ * + * @return the value of the 'Any' attribute list. + * @generated + */ + Sequence getAny(); + +} // XSDType diff --git a/sdo-java/trunk/impl/src/main/java/org/apache/tuscany/sdo/model/impl/BaseDataGraphTypeImpl.java b/sdo-java/trunk/impl/src/main/java/org/apache/tuscany/sdo/model/impl/BaseDataGraphTypeImpl.java new file mode 100644 index 0000000000..e8824974a0 --- /dev/null +++ b/sdo-java/trunk/impl/src/main/java/org/apache/tuscany/sdo/model/impl/BaseDataGraphTypeImpl.java @@ -0,0 +1,625 @@ +/** + * + * Licensed to the Apache Software Foundation (ASF) under one + * or more contributor license agreements. See the NOTICE file + * distributed with this work for additional information + * regarding copyright ownership. The ASF licenses this file + * to you under the Apache License, Version 2.0 (the + * "License"); you may not use this file except in compliance + * with the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, + * software distributed under the License is distributed on an + * "AS IS" BASIS, WITHOUT 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.ChangeSummary; +import commonj.sdo.Sequence; +import commonj.sdo.Type; + +import org.apache.tuscany.sdo.impl.DataObjectBase; + +import org.apache.tuscany.sdo.model.BaseDataGraphType; +import org.apache.tuscany.sdo.model.ModelFactory; +import org.apache.tuscany.sdo.model.ModelsType; +import org.apache.tuscany.sdo.model.XSDType; + +/** + * + * An implementation of the model object 'Base Data Graph Type'. + * + *

+ * The following features are implemented: + *

    + *
  • {@link org.apache.tuscany.sdo.model.impl.BaseDataGraphTypeImpl#getModels Models}
  • + *
  • {@link org.apache.tuscany.sdo.model.impl.BaseDataGraphTypeImpl#getXsd Xsd}
  • + *
  • {@link org.apache.tuscany.sdo.model.impl.BaseDataGraphTypeImpl#getChangeSummary Change Summary}
  • + *
  • {@link org.apache.tuscany.sdo.model.impl.BaseDataGraphTypeImpl#getAnyAttribute Any Attribute}
  • + *
+ *

+ * + * @generated + */ +public abstract class BaseDataGraphTypeImpl extends DataObjectBase implements BaseDataGraphType +{ + + public final static int MODELS = 0; + + public final static int XSD = 1; + + public final static int CHANGE_SUMMARY = 2; + + public final static int ANY_ATTRIBUTE = -1; + + public final static int SDO_PROPERTY_COUNT = 3; + + public final static int EXTENDED_PROPERTY_COUNT = -1; + + + /** + * The internal feature id for the 'Models' containment reference. + * + * + * @generated + * @ordered + */ + public final static int INTERNAL_MODELS = 0; + + /** + * The internal feature id for the 'Xsd' containment reference. + * + * + * @generated + * @ordered + */ + public final static int INTERNAL_XSD = 1; + + /** + * The internal feature id for the 'Change Summary' attribute. + * + * + * @generated + * @ordered + */ + public final static int INTERNAL_CHANGE_SUMMARY = 2; + + /** + * The internal feature id for the 'Any Attribute' attribute list. + * + * + * @generated + * @ordered + */ + public final static int INTERNAL_ANY_ATTRIBUTE = 3; + + /** + * The number of properties for this type. + * + * + * @generated + * @ordered + */ + public final static int INTERNAL_PROPERTY_COUNT = 4; + + protected int internalConvertIndex(int internalIndex) + { + switch (internalIndex) + { + case INTERNAL_MODELS: return MODELS; + case INTERNAL_XSD: return XSD; + case INTERNAL_CHANGE_SUMMARY: return CHANGE_SUMMARY; + case INTERNAL_ANY_ATTRIBUTE: return ANY_ATTRIBUTE; + } + return super.internalConvertIndex(internalIndex); + } + + + /** + * The cached value of the '{@link #getModels() Models}' containment reference. + * + * + * @see #getModels() + * @generated + * @ordered + */ + + protected ModelsType models = null; + + /** + * This is true if the Models containment reference has been set. + * + * + * @generated + * @ordered + */ + protected boolean models_set_ = false; + + /** + * The cached value of the '{@link #getXsd() Xsd}' containment reference. + * + * + * @see #getXsd() + * @generated + * @ordered + */ + + protected XSDType xsd = null; + + /** + * This is true if the Xsd containment reference has been set. + * + * + * @generated + * @ordered + */ + protected boolean xsd_set_ = false; + + /** + * The default value of the '{@link #getChangeSummary() Change Summary}' attribute. + * + * + * @see #getChangeSummary() + * @generated + * @ordered + */ + protected static final ChangeSummary CHANGE_SUMMARY_DEFAULT_ = null; + + /** + * The cached value of the '{@link #getChangeSummary() Change Summary}' attribute. + * + * + * @see #getChangeSummary() + * @generated + * @ordered + */ + protected ChangeSummary changeSummary = CHANGE_SUMMARY_DEFAULT_; + + /** + * This is true if the Change Summary attribute has been set. + * + * + * @generated + * @ordered + */ + protected boolean changeSummary_set_ = false; + + /** + * The cached value of the '{@link #getAnyAttribute() Any Attribute}' attribute list. + * + * + * @see #getAnyAttribute() + * @generated + * @ordered + */ + + protected Sequence anyAttribute = null; + + /** + * + * + * @generated + */ + public BaseDataGraphTypeImpl() + { + super(); + createChangeSummary(CHANGE_SUMMARY); + } + + /** + * + * + * @generated + */ + public Type getStaticType() + { + return ((ModelFactoryImpl)ModelFactory.INSTANCE).getBaseDataGraphType(); + } + + /** + * + * + * @generated + */ + public ModelsType getModels() + { + return models; + } + /** + * + * + * @generated + */ + public ChangeContext basicSetModels(ModelsType newModels, ChangeContext changeContext) + { + ModelsType oldModels = models; + models = newModels; + boolean oldModels_set_ = models_set_; + models_set_ = true; + if (isNotifying()) + { + addNotification(this, ChangeKind.SET, INTERNAL_MODELS, oldModels, newModels, !oldModels_set_, changeContext); + } + return changeContext; + } + + /** + * + * + * @generated + */ + public void setModels(ModelsType newModels) + { + if (newModels != models) + { + ChangeContext changeContext = null; + if (models != null) + changeContext = inverseRemove(models, this, OPPOSITE_FEATURE_BASE - INTERNAL_MODELS, null, changeContext); + if (newModels != null) + changeContext = inverseAdd(newModels, this, OPPOSITE_FEATURE_BASE - INTERNAL_MODELS, null, changeContext); + changeContext = basicSetModels(newModels, changeContext); + if (changeContext != null) dispatch(changeContext); + } + else + { + boolean oldModels_set_ = models_set_; + models_set_ = true; + if (isNotifying()) + notify(ChangeKind.SET, INTERNAL_MODELS, newModels, newModels, !oldModels_set_); + } + } + + /** + * + * + * @generated + */ + public ChangeContext basicUnsetModels(ChangeContext changeContext) + { + ModelsType oldModels = models; + models = null; + boolean oldModels_set_ = models_set_; + models_set_ = false; + if (isNotifying()) + { + addNotification(this, ChangeKind.UNSET, INTERNAL_MODELS, oldModels, null, !oldModels_set_, changeContext); + } + return changeContext; + } + + /** + * + * + * @generated + */ + public void unsetModels() + { + if (models != null) + { + ChangeContext changeContext = null; + changeContext = inverseRemove(models, this, EOPPOSITE_FEATURE_BASE - INTERNAL_MODELS, null, changeContext); + changeContext = basicUnsetModels(changeContext); + if (changeContext != null) dispatch(changeContext); + } + else + { + boolean oldModels_set_ = models_set_; + models_set_ = false; + if (isNotifying()) + notify(ChangeKind.UNSET, INTERNAL_MODELS, null, null, oldModels_set_); + } + } + + /** + * + * + * @generated + */ + public boolean isSetModels() + { + return models_set_; + } + + /** + * + * + * @generated + */ + public XSDType getXsd() + { + return xsd; + } + /** + * + * + * @generated + */ + public ChangeContext basicSetXsd(XSDType newXsd, ChangeContext changeContext) + { + XSDType oldXsd = xsd; + xsd = newXsd; + boolean oldXsd_set_ = xsd_set_; + xsd_set_ = true; + if (isNotifying()) + { + addNotification(this, ChangeKind.SET, INTERNAL_XSD, oldXsd, newXsd, !oldXsd_set_, changeContext); + } + return changeContext; + } + + /** + * + * + * @generated + */ + public void setXsd(XSDType newXsd) + { + if (newXsd != xsd) + { + ChangeContext changeContext = null; + if (xsd != null) + changeContext = inverseRemove(xsd, this, OPPOSITE_FEATURE_BASE - INTERNAL_XSD, null, changeContext); + if (newXsd != null) + changeContext = inverseAdd(newXsd, this, OPPOSITE_FEATURE_BASE - INTERNAL_XSD, null, changeContext); + changeContext = basicSetXsd(newXsd, changeContext); + if (changeContext != null) dispatch(changeContext); + } + else + { + boolean oldXsd_set_ = xsd_set_; + xsd_set_ = true; + if (isNotifying()) + notify(ChangeKind.SET, INTERNAL_XSD, newXsd, newXsd, !oldXsd_set_); + } + } + + /** + * + * + * @generated + */ + public ChangeContext basicUnsetXsd(ChangeContext changeContext) + { + XSDType oldXsd = xsd; + xsd = null; + boolean oldXsd_set_ = xsd_set_; + xsd_set_ = false; + if (isNotifying()) + { + addNotification(this, ChangeKind.UNSET, INTERNAL_XSD, oldXsd, null, !oldXsd_set_, changeContext); + } + return changeContext; + } + + /** + * + * + * @generated + */ + public void unsetXsd() + { + if (xsd != null) + { + ChangeContext changeContext = null; + changeContext = inverseRemove(xsd, this, EOPPOSITE_FEATURE_BASE - INTERNAL_XSD, null, changeContext); + changeContext = basicUnsetXsd(changeContext); + if (changeContext != null) dispatch(changeContext); + } + else + { + boolean oldXsd_set_ = xsd_set_; + xsd_set_ = false; + if (isNotifying()) + notify(ChangeKind.UNSET, INTERNAL_XSD, null, null, oldXsd_set_); + } + } + + /** + * + * + * @generated + */ + public boolean isSetXsd() + { + return xsd_set_; + } + + /** + * + * + * @generated + */ + public ChangeSummary getChangeSummary() + { + return changeSummary; + } + /** + * + * + * @generated + */ + public void setChangeSummary(ChangeSummary newChangeSummary) + { + ChangeSummary oldChangeSummary = changeSummary; + changeSummary = newChangeSummary; + boolean oldChangeSummary_set_ = changeSummary_set_; + changeSummary_set_ = true; + if (isNotifying()) + notify(ChangeKind.SET, INTERNAL_CHANGE_SUMMARY, oldChangeSummary, changeSummary, !oldChangeSummary_set_); + } + + /** + * + * + * @generated + */ + public void unsetChangeSummary() + { + ChangeSummary oldChangeSummary = changeSummary; + boolean oldChangeSummary_set_ = changeSummary_set_; + changeSummary = CHANGE_SUMMARY_DEFAULT_; + changeSummary_set_ = false; + if (isNotifying()) + notify(ChangeKind.UNSET, INTERNAL_CHANGE_SUMMARY, oldChangeSummary, CHANGE_SUMMARY_DEFAULT_, oldChangeSummary_set_); + } + + /** + * + * + * @generated + */ + public boolean isSetChangeSummary() + { + return changeSummary_set_; + } + + /** + * + * + * @generated + */ + public Sequence getAnyAttribute() + { + if (anyAttribute == null) + { + anyAttribute = createSequence(INTERNAL_ANY_ATTRIBUTE); + } + return anyAttribute; + } + /** + * + * + * @generated + */ + public ChangeContext inverseRemove(Object otherEnd, int propertyIndex, ChangeContext changeContext) + { + switch (propertyIndex) + { + case MODELS: + return basicUnsetModels(changeContext); + case XSD: + return basicUnsetXsd(changeContext); + case ANY_ATTRIBUTE: + return removeFromSequence(getAnyAttribute(), otherEnd, changeContext); + } + return super.inverseRemove(otherEnd, propertyIndex, changeContext); + } + + /** + * + * + * @generated + */ + public Object get(int propertyIndex, boolean resolve) + { + switch (propertyIndex) + { + case MODELS: + return getModels(); + case XSD: + return getXsd(); + case CHANGE_SUMMARY: + return getChangeSummary(); + case ANY_ATTRIBUTE: + // 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 getAnyAttribute(); + } + return super.get(propertyIndex, resolve); + } + + /** + * + * + * @generated + */ + public void set(int propertyIndex, Object newValue) + { + switch (propertyIndex) + { + case MODELS: + setModels((ModelsType)newValue); + return; + case XSD: + setXsd((XSDType)newValue); + return; + case CHANGE_SUMMARY: + setChangeSummary((ChangeSummary)newValue); + return; + case ANY_ATTRIBUTE: + setSequence(getAnyAttribute(), newValue); + return; + } + super.set(propertyIndex, newValue); + } + + /** + * + * + * @generated + */ + public void unset(int propertyIndex) + { + switch (propertyIndex) + { + case MODELS: + unsetModels(); + return; + case XSD: + unsetXsd(); + return; + case CHANGE_SUMMARY: + unsetChangeSummary(); + return; + case ANY_ATTRIBUTE: + unsetSequence(getAnyAttribute()); + return; + } + super.unset(propertyIndex); + } + + /** + * + * + * @generated + */ + public boolean isSet(int propertyIndex) + { + switch (propertyIndex) + { + case MODELS: + return isSetModels(); + case XSD: + return isSetXsd(); + case CHANGE_SUMMARY: + return isSetChangeSummary(); + case ANY_ATTRIBUTE: + return anyAttribute != null && !isSequenceEmpty(getAnyAttribute()); + } + return super.isSet(propertyIndex); + } + + /** + * + * + * @generated + */ + public String toString() + { + if (isProxy(this)) return super.toString(); + + StringBuffer result = new StringBuffer(super.toString()); + result.append(" (changeSummary: "); + if (changeSummary_set_) result.append(changeSummary); else result.append(""); + result.append(", anyAttribute: "); + result.append(anyAttribute); + result.append(')'); + return result.toString(); + } + +} //BaseDataGraphTypeImpl diff --git a/sdo-java/trunk/impl/src/main/java/org/apache/tuscany/sdo/model/impl/DataGraphTypeImpl.java b/sdo-java/trunk/impl/src/main/java/org/apache/tuscany/sdo/model/impl/DataGraphTypeImpl.java new file mode 100644 index 0000000000..ef13797850 --- /dev/null +++ b/sdo-java/trunk/impl/src/main/java/org/apache/tuscany/sdo/model/impl/DataGraphTypeImpl.java @@ -0,0 +1,258 @@ +/** + * + * Licensed to the Apache Software Foundation (ASF) under one + * or more contributor license agreements. See the NOTICE file + * distributed with this work for additional information + * regarding copyright ownership. The ASF licenses this file + * to you under the Apache License, Version 2.0 (the + * "License"); you may not use this file except in compliance + * with the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, + * software distributed under the License is distributed on an + * "AS IS" BASIS, WITHOUT 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 commonj.sdo.Type; + +import org.apache.tuscany.sdo.model.DataGraphType; +import org.apache.tuscany.sdo.model.ModelFactory; + +/** + * + * An implementation of the model object 'Data Graph Type'. + * + *

+ * The following features are implemented: + *

    + *
  • {@link org.apache.tuscany.sdo.model.impl.DataGraphTypeImpl#getAny Any}
  • + *
+ *

+ * + * @generated + */ +public class DataGraphTypeImpl extends BaseDataGraphTypeImpl implements DataGraphType +{ + + public final static int ANY = BaseDataGraphTypeImpl.EXTENDED_PROPERTY_COUNT + -1; + + public final static int SDO_PROPERTY_COUNT = BaseDataGraphTypeImpl.SDO_PROPERTY_COUNT + 0; + + public final static int EXTENDED_PROPERTY_COUNT = BaseDataGraphTypeImpl.EXTENDED_PROPERTY_COUNT - 1; + + + /** + * The internal feature id for the 'Models' containment reference. + * + * + * @generated + * @ordered + */ + public final static int INTERNAL_MODELS = BaseDataGraphTypeImpl.INTERNAL_MODELS; + + /** + * The internal feature id for the 'Xsd' containment reference. + * + * + * @generated + * @ordered + */ + public final static int INTERNAL_XSD = BaseDataGraphTypeImpl.INTERNAL_XSD; + + /** + * The internal feature id for the 'Change Summary' attribute. + * + * + * @generated + * @ordered + */ + public final static int INTERNAL_CHANGE_SUMMARY = BaseDataGraphTypeImpl.INTERNAL_CHANGE_SUMMARY; + + /** + * The internal feature id for the 'Any Attribute' attribute list. + * + * + * @generated + * @ordered + */ + public final static int INTERNAL_ANY_ATTRIBUTE = BaseDataGraphTypeImpl.INTERNAL_ANY_ATTRIBUTE; + + /** + * The internal feature id for the 'Any' attribute list. + * + * + * @generated + * @ordered + */ + public final static int INTERNAL_ANY = BaseDataGraphTypeImpl.INTERNAL_PROPERTY_COUNT + 0; + + /** + * The number of properties for this type. + * + * + * @generated + * @ordered + */ + public final static int INTERNAL_PROPERTY_COUNT = BaseDataGraphTypeImpl.INTERNAL_PROPERTY_COUNT + 1; + + protected int internalConvertIndex(int internalIndex) + { + switch (internalIndex) + { + case INTERNAL_MODELS: return MODELS; + case INTERNAL_XSD: return XSD; + case INTERNAL_CHANGE_SUMMARY: return CHANGE_SUMMARY; + case INTERNAL_ANY_ATTRIBUTE: return ANY_ATTRIBUTE; + case INTERNAL_ANY: return ANY; + } + return super.internalConvertIndex(internalIndex); + } + + + /** + * The cached value of the '{@link #getAny() Any}' attribute list. + * + * + * @see #getAny() + * @generated + * @ordered + */ + + protected Sequence any = null; + + /** + * + * + * @generated + */ + public DataGraphTypeImpl() + { + super(); + } + + /** + * + * + * @generated + */ + public Type getStaticType() + { + return ((ModelFactoryImpl)ModelFactory.INSTANCE).getDataGraphType(); + } + + /** + * + * + * @generated + */ + public Sequence getAny() + { + if (any == null) + { + any = createSequence(INTERNAL_ANY); + } + return any; + } + /** + * + * + * @generated + */ + public ChangeContext inverseRemove(Object otherEnd, int propertyIndex, ChangeContext changeContext) + { + switch (propertyIndex) + { + case ANY: + return removeFromSequence(getAny(), otherEnd, changeContext); + } + return super.inverseRemove(otherEnd, propertyIndex, changeContext); + } + + /** + * + * + * @generated + */ + public Object get(int propertyIndex, boolean resolve) + { + switch (propertyIndex) + { + case ANY: + // 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 getAny(); + } + return super.get(propertyIndex, resolve); + } + + /** + * + * + * @generated + */ + public void set(int propertyIndex, Object newValue) + { + switch (propertyIndex) + { + case ANY: + setSequence(getAny(), newValue); + return; + } + super.set(propertyIndex, newValue); + } + + /** + * + * + * @generated + */ + public void unset(int propertyIndex) + { + switch (propertyIndex) + { + case ANY: + unsetSequence(getAny()); + return; + } + super.unset(propertyIndex); + } + + /** + * + * + * @generated + */ + public boolean isSet(int propertyIndex) + { + switch (propertyIndex) + { + case ANY: + return any != null && !isSequenceEmpty(getAny()); + } + return super.isSet(propertyIndex); + } + + /** + * + * + * @generated + */ + public String toString() + { + if (isProxy(this)) return super.toString(); + + StringBuffer result = new StringBuffer(super.toString()); + result.append(" (any: "); + result.append(any); + result.append(')'); + return result.toString(); + } + +} //DataGraphTypeImpl diff --git a/sdo-java/trunk/impl/src/main/java/org/apache/tuscany/sdo/model/impl/DataObjectImpl.java b/sdo-java/trunk/impl/src/main/java/org/apache/tuscany/sdo/model/impl/DataObjectImpl.java new file mode 100644 index 0000000000..0dc673907c --- /dev/null +++ b/sdo-java/trunk/impl/src/main/java/org/apache/tuscany/sdo/model/impl/DataObjectImpl.java @@ -0,0 +1,84 @@ +/** + * + * Licensed to the Apache Software Foundation (ASF) under one + * or more contributor license agreements. See the NOTICE file + * distributed with this work for additional information + * regarding copyright ownership. The ASF licenses this file + * to you under the Apache License, Version 2.0 (the + * "License"); you may not use this file except in compliance + * with the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, + * software distributed under the License is distributed on an + * "AS IS" BASIS, WITHOUT 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.Type; + +import org.apache.tuscany.sdo.impl.DataObjectBase; + +import org.apache.tuscany.sdo.model.DataObject; +import org.apache.tuscany.sdo.model.ModelFactory; + +/** + * + * An implementation of the model object 'Data Object'. + * + *

+ *

+ * + * @generated + */ +public abstract class DataObjectImpl extends DataObjectBase implements DataObject +{ + + public final static int SDO_PROPERTY_COUNT = 0; + + public final static int EXTENDED_PROPERTY_COUNT = 0; + + + /** + * The number of properties for this type. + * + * + * @generated + * @ordered + */ + public final static int INTERNAL_PROPERTY_COUNT = 0; + + protected int internalConvertIndex(int internalIndex) + { + switch (internalIndex) + { + } + return super.internalConvertIndex(internalIndex); + } + + + /** + * + * + * @generated + */ + public DataObjectImpl() + { + super(); + } + + /** + * + * + * @generated + */ + public Type getStaticType() + { + return ((ModelFactoryImpl)ModelFactory.INSTANCE).getDataObject(); + } + +} //DataObjectImpl diff --git a/sdo-java/trunk/impl/src/main/java/org/apache/tuscany/sdo/model/impl/ModelFactoryImpl.java b/sdo-java/trunk/impl/src/main/java/org/apache/tuscany/sdo/model/impl/ModelFactoryImpl.java new file mode 100644 index 0000000000..761efb4217 --- /dev/null +++ b/sdo-java/trunk/impl/src/main/java/org/apache/tuscany/sdo/model/impl/ModelFactoryImpl.java @@ -0,0 +1,2401 @@ +/** + * + * Licensed to the Apache Software Foundation (ASF) under one + * or more contributor license agreements. See the NOTICE file + * distributed with this work for additional information + * regarding copyright ownership. The ASF licenses this file + * to you under the Apache License, Version 2.0 (the + * "License"); you may not use this file except in compliance + * with the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, + * software distributed under the License is distributed on an + * "AS IS" BASIS, WITHOUT 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.helper.DataHelper; +import commonj.sdo.helper.HelperContext; + +import org.apache.tuscany.sdo.SDOFactory; +import org.apache.tuscany.sdo.helper.TypeHelperImpl; + +import commonj.sdo.ChangeSummary; +import commonj.sdo.DataObject; + +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.impl.FactoryBase; + +import org.apache.tuscany.sdo.model.*; +import org.eclipse.emf.ecore.xml.type.XMLTypeFactory; +import org.eclipse.emf.ecore.xml.type.util.XMLTypeUtil; + +/** + * + * An implementation of the commonj.sdo model factory. + * This model is generated from sdoModel.xsd, in the sdo-api project. + * Until the SDO code generator supports name conflicts and regen/merge, follow the following steps to regenerate this model: + * 1. Regenerate the model into a temporary directory: + * XSD2JavaGenerator -generateBuiltIn commonj.sdo -targetDirectory -javaPackage org.apache.tuscany.sdo.model /src/main/resources/xml/sdoModel.xsd + * 2. Rename the following methods in the generated Property/PropertyImpl interface and implementation class: + * getDefault() to getDefault_(); + * setDefault() to setDefault_(); + * getOpposite() to getOpposite_(); + * setOpposite() to setOpposite_(); + * 3. Copy the following method from the old to new generated Type/TypeImpl interface and implemention class (resolve any missing imports): + * String getInstanceClassName(); + * 4. Copy the following method from the old to new generated Types/TypesImpl interface and implemention class (resolve any missing imports): + * List getTypeList(); + * 5. Delete all the createXXXFromString() and convertXXXToString() methods in the newly generated ModelFactoryImpl and + * replace them with the ones from this file (resolve any missing imports). + * 6. Comment out the call to registerStaticTypes of ModelFactory.class in the init() method + * 7. Change org.apache.tuscany.sdo.model.DataObject.class to commonj.sdo.DataObject.class for the following method found in method initializeMetaData(); + * initializeType(dataObjectType, commonj.sdo.DataObject.class, "DataObject", true); // generated as org.apache.tuscany.sdo.model.DataObject.class + * 8. Add the following case to the generated create() method: + * case DATA_OBJECT: return SDOFactory.eINSTANCE.createAnyTypeDataObject(); + * 9. Make sure the top of each generated file contains the ASF License. + * 10. Move this JavaDoc comment into the newly generated ModelFactoryImpl class. + * + * @generated + */ +public class ModelFactoryImpl extends FactoryBase implements ModelFactory +{ + + /** + * The package namespace URI. + * + * + * @generated + */ + public static final String NAMESPACE_URI = "commonj.sdo"; + + /** + * The package namespace name. + * + * + * @generated + */ + public static final String NAMESPACE_PREFIX = "sdo"; + + /** + * The version of the generator pattern used to generate this class. + * + * + * @generated + */ + public static final String PATTERN_VERSION = "1.2"; + + public static final int BASE_DATA_GRAPH_TYPE = 1; + public static final int DATA_GRAPH_TYPE = 2; + public static final int DATA_OBJECT = 3; + public static final int MODELS_TYPE = 4; + public static final int PROPERTY = 5; + public static final int TEXT_TYPE = 6; + public static final int TYPE = 7; + public static final int TYPES = 8; + public static final int XSD_TYPE = 9; + public static final int BOOLEAN = 10; + public static final int BOOLEAN_OBJECT = 11; + public static final int BYTE = 12; + public static final int BYTE_OBJECT = 13; + public static final int BYTES = 14; + public static final int CHANGE_SUMMARY_TYPE = 15; + public static final int CHARACTER = 16; + public static final int CHARACTER_OBJECT = 17; + public static final int DATE = 18; + public static final int DATE_TIME = 19; + public static final int DAY = 20; + public static final int DECIMAL = 21; + public static final int DOUBLE = 22; + public static final int DOUBLE_OBJECT = 23; + public static final int DURATION = 24; + public static final int FLOAT = 25; + public static final int FLOAT_OBJECT = 26; + public static final int INT = 27; + public static final int INTEGER = 28; + public static final int INT_OBJECT = 29; + public static final int LONG = 30; + public static final int LONG_OBJECT = 31; + public static final int MONTH = 32; + public static final int MONTH_DAY = 33; + public static final int OBJECT = 34; + public static final int SHORT = 35; + public static final int SHORT_OBJECT = 36; + public static final int STRING = 37; + public static final int STRINGS = 38; + public static final int TIME = 39; + public static final int URI = 40; + public static final int YEAR = 41; + public static final int YEAR_MONTH = 42; + public static final int YEAR_MONTH_DAY = 43; + + /** + * Creates an instance of the factory. + * + * + * @generated + */ + public ModelFactoryImpl() + { + super(NAMESPACE_URI, NAMESPACE_PREFIX, "org.apache.tuscany.sdo.model"); + } + + /** + * Registers the Factory instance so that it is available within the supplied scope. + * @argument scope a HelperContext instance that will make the types supported by this Factory available. + * + * + * @generated + */ + public void register(HelperContext scope) + { + if(scope == null) { + throw new IllegalArgumentException("Scope can not be null"); + } + + //Register dependent packages with provided scope + + // Initialize this package + TypeHelperImpl th = (TypeHelperImpl)scope.getTypeHelper(); + th.getExtendedMetaData().putPackage(NAMESPACE_URI, this); + } + + /** + * + * + * @generated NOT + */ + public DataObject create(int typeNumber) + { + switch (typeNumber) + { + case DATA_GRAPH_TYPE: return (DataObject)createDataGraphType(); + case MODELS_TYPE: return (DataObject)createModelsType(); + case PROPERTY: return (DataObject)createProperty(); + case TYPE: return (DataObject)createType(); + case TYPES: return (DataObject)createTypes(); + case XSD_TYPE: return (DataObject)createXSDType(); + case DATA_OBJECT: return SDOFactory.eINSTANCE.createAnyTypeDataObject(); + default: + return super.create(typeNumber); + } + } + + /** + * + * + * @generated + */ + public Object createFromString(int typeNumber, String initialValue) + { + switch (typeNumber) + { + case BOOLEAN: + return createBooleanFromString(initialValue); + case BOOLEAN_OBJECT: + return createBooleanObjectFromString(initialValue); + case BYTE: + return createByteFromString(initialValue); + case BYTE_OBJECT: + return createByteObjectFromString(initialValue); + case BYTES: + return createBytesFromString(initialValue); + case CHANGE_SUMMARY_TYPE: + return createChangeSummaryTypeFromString(initialValue); + case CHARACTER: + return createCharacterFromString(initialValue); + case CHARACTER_OBJECT: + return createCharacterObjectFromString(initialValue); + case DATE: + return createDateFromString(initialValue); + case DATE_TIME: + return createDateTimeFromString(initialValue); + case DAY: + return createDayFromString(initialValue); + case DECIMAL: + return createDecimalFromString(initialValue); + case DOUBLE: + return createDoubleFromString(initialValue); + case DOUBLE_OBJECT: + return createDoubleObjectFromString(initialValue); + case DURATION: + return createDurationFromString(initialValue); + case FLOAT: + return createFloatFromString(initialValue); + case FLOAT_OBJECT: + return createFloatObjectFromString(initialValue); + case INT: + return createIntFromString(initialValue); + case INTEGER: + return createIntegerFromString(initialValue); + case INT_OBJECT: + return createIntObjectFromString(initialValue); + case LONG: + return createLongFromString(initialValue); + case LONG_OBJECT: + return createLongObjectFromString(initialValue); + case MONTH: + return createMonthFromString(initialValue); + case MONTH_DAY: + return createMonthDayFromString(initialValue); + case OBJECT: + return createObjectFromString(initialValue); + case SHORT: + return createShortFromString(initialValue); + case SHORT_OBJECT: + return createShortObjectFromString(initialValue); + case STRING: + return createStringFromString(initialValue); + case STRINGS: + return createStringsFromString(initialValue); + case TIME: + return createTimeFromString(initialValue); + case URI: + return createURIFromString(initialValue); + case YEAR: + return createYearFromString(initialValue); + case YEAR_MONTH: + return createYearMonthFromString(initialValue); + case YEAR_MONTH_DAY: + return createYearMonthDayFromString(initialValue); + default: + throw new IllegalArgumentException("The type number '" + typeNumber + "' is not a valid datatype"); + } + } + + /** + * + * + * @generated + */ + public String convertToString(int typeNumber, Object instanceValue) + { + switch (typeNumber) + { + case BOOLEAN: + return convertBooleanToString(instanceValue); + case BOOLEAN_OBJECT: + return convertBooleanObjectToString(instanceValue); + case BYTE: + return convertByteToString(instanceValue); + case BYTE_OBJECT: + return convertByteObjectToString(instanceValue); + case BYTES: + return convertBytesToString(instanceValue); + case CHANGE_SUMMARY_TYPE: + return convertChangeSummaryTypeToString(instanceValue); + case CHARACTER: + return convertCharacterToString(instanceValue); + case CHARACTER_OBJECT: + return convertCharacterObjectToString(instanceValue); + case DATE: + return convertDateToString(instanceValue); + case DATE_TIME: + return convertDateTimeToString(instanceValue); + case DAY: + return convertDayToString(instanceValue); + case DECIMAL: + return convertDecimalToString(instanceValue); + case DOUBLE: + return convertDoubleToString(instanceValue); + case DOUBLE_OBJECT: + return convertDoubleObjectToString(instanceValue); + case DURATION: + return convertDurationToString(instanceValue); + case FLOAT: + return convertFloatToString(instanceValue); + case FLOAT_OBJECT: + return convertFloatObjectToString(instanceValue); + case INT: + return convertIntToString(instanceValue); + case INTEGER: + return convertIntegerToString(instanceValue); + case INT_OBJECT: + return convertIntObjectToString(instanceValue); + case LONG: + return convertLongToString(instanceValue); + case LONG_OBJECT: + return convertLongObjectToString(instanceValue); + case MONTH: + return convertMonthToString(instanceValue); + case MONTH_DAY: + return convertMonthDayToString(instanceValue); + case OBJECT: + return convertObjectToString(instanceValue); + case SHORT: + return convertShortToString(instanceValue); + case SHORT_OBJECT: + return convertShortObjectToString(instanceValue); + case STRING: + return convertStringToString(instanceValue); + case STRINGS: + return convertStringsToString(instanceValue); + case TIME: + return convertTimeToString(instanceValue); + case URI: + return convertURIToString(instanceValue); + case YEAR: + return convertYearToString(instanceValue); + case YEAR_MONTH: + return convertYearMonthToString(instanceValue); + case YEAR_MONTH_DAY: + return convertYearMonthDayToString(instanceValue); + default: + throw new IllegalArgumentException("The type number '" + typeNumber + "' is not a valid datatype"); + } + } + /** + * + * + * @generated + */ + public DataGraphType createDataGraphType() + { + DataGraphTypeImpl dataGraphType = new DataGraphTypeImpl(); + return dataGraphType; + } + /** + * + * + * @generated + */ + public ModelsType createModelsType() + { + ModelsTypeImpl modelsType = new ModelsTypeImpl(); + return modelsType; + } + /** + * + * + * @generated + */ + public Property createProperty() + { + PropertyImpl property = new PropertyImpl(); + return property; + } + /** + * + * + * @generated + */ + public Type createType() + { + TypeImpl type = new TypeImpl(); + return type; + } + /** + * + * + * @generated + */ + public Types createTypes() + { + TypesImpl types = new TypesImpl(); + return types; + } + /** + * + * + * @generated + */ + public XSDType createXSDType() + { + XSDTypeImpl xsdType = new XSDTypeImpl(); + return xsdType; + } + + // Following creates and initializes SDO metadata for the supported types. + protected commonj.sdo.Type baseDataGraphTypeType = null; + + public commonj.sdo.Type getBaseDataGraphType() + { + return baseDataGraphTypeType; + } + + protected commonj.sdo.Type dataGraphTypeType = null; + + public commonj.sdo.Type getDataGraphType() + { + return dataGraphTypeType; + } + + protected commonj.sdo.Type dataObjectType = null; + + public commonj.sdo.Type getDataObject() + { + return dataObjectType; + } + + protected commonj.sdo.Type modelsTypeType = null; + + public commonj.sdo.Type getModelsType() + { + return modelsTypeType; + } + + protected commonj.sdo.Type propertyType = null; + + public commonj.sdo.Type getProperty() + { + return propertyType; + } + + protected commonj.sdo.Type textTypeType = null; + + public commonj.sdo.Type getTextType() + { + return textTypeType; + } + + protected commonj.sdo.Type typeType = null; + + public commonj.sdo.Type getType() + { + return typeType; + } + + protected commonj.sdo.Type typesType = null; + + public commonj.sdo.Type getTypes() + { + return typesType; + } + + protected commonj.sdo.Type xsdTypeType = null; + + public commonj.sdo.Type getXSDType() + { + return xsdTypeType; + } + + protected commonj.sdo.Type boolean_Type = null; + + public commonj.sdo.Type getBoolean() + { + return boolean_Type; + } + + protected commonj.sdo.Type booleanObjectType = null; + + public commonj.sdo.Type getBooleanObject() + { + return booleanObjectType; + } + + protected commonj.sdo.Type byte_Type = null; + + public commonj.sdo.Type getByte() + { + return byte_Type; + } + + protected commonj.sdo.Type byteObjectType = null; + + public commonj.sdo.Type getByteObject() + { + return byteObjectType; + } + + protected commonj.sdo.Type bytesType = null; + + public commonj.sdo.Type getBytes() + { + return bytesType; + } + + protected commonj.sdo.Type changeSummaryTypeType = null; + + public commonj.sdo.Type getChangeSummaryType() + { + return changeSummaryTypeType; + } + + protected commonj.sdo.Type characterType = null; + + public commonj.sdo.Type getCharacter() + { + return characterType; + } + + protected commonj.sdo.Type characterObjectType = null; + + public commonj.sdo.Type getCharacterObject() + { + return characterObjectType; + } + + protected commonj.sdo.Type dateType = null; + + public commonj.sdo.Type getDate() + { + return dateType; + } + + protected commonj.sdo.Type dateTimeType = null; + + public commonj.sdo.Type getDateTime() + { + return dateTimeType; + } + + protected commonj.sdo.Type dayType = null; + + public commonj.sdo.Type getDay() + { + return dayType; + } + + protected commonj.sdo.Type decimalType = null; + + public commonj.sdo.Type getDecimal() + { + return decimalType; + } + + protected commonj.sdo.Type double_Type = null; + + public commonj.sdo.Type getDouble() + { + return double_Type; + } + + protected commonj.sdo.Type doubleObjectType = null; + + public commonj.sdo.Type getDoubleObject() + { + return doubleObjectType; + } + + protected commonj.sdo.Type durationType = null; + + public commonj.sdo.Type getDuration() + { + return durationType; + } + + protected commonj.sdo.Type float_Type = null; + + public commonj.sdo.Type getFloat() + { + return float_Type; + } + + protected commonj.sdo.Type floatObjectType = null; + + public commonj.sdo.Type getFloatObject() + { + return floatObjectType; + } + + protected commonj.sdo.Type int_Type = null; + + public commonj.sdo.Type getInt() + { + return int_Type; + } + + protected commonj.sdo.Type integerType = null; + + public commonj.sdo.Type getInteger() + { + return integerType; + } + + protected commonj.sdo.Type intObjectType = null; + + public commonj.sdo.Type getIntObject() + { + return intObjectType; + } + + protected commonj.sdo.Type long_Type = null; + + public commonj.sdo.Type getLong() + { + return long_Type; + } + + protected commonj.sdo.Type longObjectType = null; + + public commonj.sdo.Type getLongObject() + { + return longObjectType; + } + + protected commonj.sdo.Type monthType = null; + + public commonj.sdo.Type getMonth() + { + return monthType; + } + + protected commonj.sdo.Type monthDayType = null; + + public commonj.sdo.Type getMonthDay() + { + return monthDayType; + } + + protected commonj.sdo.Type objectType = null; + + public commonj.sdo.Type getObject() + { + return objectType; + } + + protected commonj.sdo.Type short_Type = null; + + public commonj.sdo.Type getShort() + { + return short_Type; + } + + protected commonj.sdo.Type shortObjectType = null; + + public commonj.sdo.Type getShortObject() + { + return shortObjectType; + } + + protected commonj.sdo.Type stringType = null; + + public commonj.sdo.Type getString() + { + return stringType; + } + + protected commonj.sdo.Type stringsType = null; + + public commonj.sdo.Type getStrings() + { + return stringsType; + } + + protected commonj.sdo.Type timeType = null; + + public commonj.sdo.Type getTime() + { + return timeType; + } + + protected commonj.sdo.Type uriType = null; + + public commonj.sdo.Type getURI() + { + return uriType; + } + + protected commonj.sdo.Type yearType = null; + + public commonj.sdo.Type getYear() + { + return yearType; + } + + protected commonj.sdo.Type yearMonthType = null; + + public commonj.sdo.Type getYearMonth() + { + return yearMonthType; + } + + protected commonj.sdo.Type yearMonthDayType = null; + + public commonj.sdo.Type getYearMonthDay() + { + return yearMonthDayType; + } + + + private static ModelFactoryImpl instance = null; + public static ModelFactoryImpl init() + { + if (instance != null ) return instance; + instance = new ModelFactoryImpl(); + + // Initialize dependent packages + + // Create package meta-data objects + instance.createMetaData(); + + // Initialize created meta-data + instance.initializeMetaData(); + + // Mark meta-data to indicate it can't be changed + //theModelFactoryImpl.freeze(); //FB do we need to freeze / should we freeze ???? + + return instance; + } + + private boolean isCreated = false; + + public void createMetaData() + { + if (isCreated) return; + isCreated = true; + + // Create types and their properties + baseDataGraphTypeType = createType(false, BASE_DATA_GRAPH_TYPE); + createProperty(false, baseDataGraphTypeType,BaseDataGraphTypeImpl.INTERNAL_MODELS); + createProperty(false, baseDataGraphTypeType,BaseDataGraphTypeImpl.INTERNAL_XSD); + createProperty(true, baseDataGraphTypeType,BaseDataGraphTypeImpl.INTERNAL_CHANGE_SUMMARY); + createProperty(true, baseDataGraphTypeType,BaseDataGraphTypeImpl.INTERNAL_ANY_ATTRIBUTE); + dataGraphTypeType = createType(false, DATA_GRAPH_TYPE); + createProperty(true, dataGraphTypeType,DataGraphTypeImpl.INTERNAL_ANY); + dataObjectType = createType(false, DATA_OBJECT); + modelsTypeType = createType(false, MODELS_TYPE); + createProperty(true, modelsTypeType,ModelsTypeImpl.INTERNAL_ANY); + propertyType = createType(false, PROPERTY); + createProperty(true, propertyType,PropertyImpl.INTERNAL_ALIAS_NAME); + createProperty(true, propertyType,PropertyImpl.INTERNAL_ANY); + createProperty(true, propertyType,PropertyImpl.INTERNAL_NAME); + createProperty(true, propertyType,PropertyImpl.INTERNAL_MANY); + createProperty(true, propertyType,PropertyImpl.INTERNAL_CONTAINMENT); + createProperty(true, propertyType,PropertyImpl.INTERNAL_DEFAULT); + createProperty(true, propertyType,PropertyImpl.INTERNAL_READ_ONLY); + createProperty(false, propertyType,PropertyImpl.INTERNAL_TYPE); + createProperty(false, propertyType,PropertyImpl.INTERNAL_OPPOSITE); + createProperty(true, propertyType,PropertyImpl.INTERNAL_NULLABLE); + createProperty(true, propertyType,PropertyImpl.INTERNAL_ANY_ATTRIBUTE); + textTypeType = createType(false, TEXT_TYPE); + createProperty(true, textTypeType,TextTypeImpl.INTERNAL_TEXT); + typeType = createType(false, TYPE); + createProperty(false, typeType,TypeImpl.INTERNAL_BASE_TYPE); + createProperty(false, typeType,TypeImpl.INTERNAL_PROPERTY); + createProperty(true, typeType,TypeImpl.INTERNAL_ALIAS_NAME); + createProperty(true, typeType,TypeImpl.INTERNAL_ANY); + createProperty(true, typeType,TypeImpl.INTERNAL_NAME); + createProperty(true, typeType,TypeImpl.INTERNAL_URI); + createProperty(true, typeType,TypeImpl.INTERNAL_DATA_TYPE); + createProperty(true, typeType,TypeImpl.INTERNAL_OPEN); + createProperty(true, typeType,TypeImpl.INTERNAL_SEQUENCED); + createProperty(true, typeType,TypeImpl.INTERNAL_ABSTRACT); + createProperty(true, typeType,TypeImpl.INTERNAL_ANY_ATTRIBUTE); + typesType = createType(false, TYPES); + createProperty(false, typesType,TypesImpl.INTERNAL_TYPE); + xsdTypeType = createType(false, XSD_TYPE); + createProperty(true, xsdTypeType,XSDTypeImpl.INTERNAL_ANY); + + // Create data types + boolean_Type = createType(true, BOOLEAN ); + booleanObjectType = createType(true, BOOLEAN_OBJECT ); + byte_Type = createType(true, BYTE ); + byteObjectType = createType(true, BYTE_OBJECT ); + bytesType = createType(true, BYTES ); + changeSummaryTypeType = createType(true, CHANGE_SUMMARY_TYPE ); + characterType = createType(true, CHARACTER ); + characterObjectType = createType(true, CHARACTER_OBJECT ); + dateType = createType(true, DATE ); + dateTimeType = createType(true, DATE_TIME ); + dayType = createType(true, DAY ); + decimalType = createType(true, DECIMAL ); + double_Type = createType(true, DOUBLE ); + doubleObjectType = createType(true, DOUBLE_OBJECT ); + durationType = createType(true, DURATION ); + float_Type = createType(true, FLOAT ); + floatObjectType = createType(true, FLOAT_OBJECT ); + int_Type = createType(true, INT ); + integerType = createType(true, INTEGER ); + intObjectType = createType(true, INT_OBJECT ); + long_Type = createType(true, LONG ); + longObjectType = createType(true, LONG_OBJECT ); + monthType = createType(true, MONTH ); + monthDayType = createType(true, MONTH_DAY ); + objectType = createType(true, OBJECT ); + short_Type = createType(true, SHORT ); + shortObjectType = createType(true, SHORT_OBJECT ); + stringType = createType(true, STRING ); + stringsType = createType(true, STRINGS ); + timeType = createType(true, TIME ); + uriType = createType(true, URI ); + yearType = createType(true, YEAR ); + yearMonthType = createType(true, YEAR_MONTH ); + yearMonthDayType = createType(true, YEAR_MONTH_DAY ); + } + + private boolean isInitialized = false; + + public void initializeMetaData() + { + if (isInitialized) return; + isInitialized = true; + commonj.sdo.Property property = null; + + // Add supertypes to types + addSuperType(dataGraphTypeType, this.getBaseDataGraphType()); + + // Initialize types and properties + initializeType(baseDataGraphTypeType, BaseDataGraphType.class, "BaseDataGraphType", true); + property = getLocalProperty(baseDataGraphTypeType, 0); + initializeProperty(property, this.getModelsType(), "models", null, 0, 1, BaseDataGraphType.class, false, true, false, true , null); + + property = getLocalProperty(baseDataGraphTypeType, 1); + initializeProperty(property, this.getXSDType(), "xsd", null, 0, 1, BaseDataGraphType.class, false, true, false, true , null); + + property = getLocalProperty(baseDataGraphTypeType, 2); + initializeProperty(property, this.getChangeSummaryType(), "changeSummary", null, 0, 1, BaseDataGraphType.class, false, true, false); + + property = getLocalProperty(baseDataGraphTypeType, 3); + initializeProperty(property, getSequence(), "anyAttribute", null, 0, -1, BaseDataGraphType.class, false, false, false); + + initializeType(dataGraphTypeType, DataGraphType.class, "DataGraphType", false); + property = getLocalProperty(dataGraphTypeType, 0); + initializeProperty(property, getSequence(), "any", null, 0, 1, DataGraphType.class, false, false, false); + + initializeType(dataObjectType, commonj.sdo.DataObject.class, "DataObject", true); // generated as org.apache.tuscany.sdo.model.DataObject.class + initializeType(modelsTypeType, ModelsType.class, "ModelsType", false); + property = getLocalProperty(modelsTypeType, 0); + initializeProperty(property, getSequence(), "any", null, 0, -1, ModelsType.class, false, false, false); + + initializeType(propertyType, Property.class, "Property", false); + property = getLocalProperty(propertyType, 0); + initializeProperty(property, this.getString(), "aliasName", null, 0, -1, Property.class, false, false, false); + + property = getLocalProperty(propertyType, 1); + initializeProperty(property, getSequence(), "any", null, 0, -1, Property.class, false, false, false); + + property = getLocalProperty(propertyType, 2); + initializeProperty(property, this.getString(), "name", null, 0, 1, Property.class, false, true, false); + + property = getLocalProperty(propertyType, 3); + initializeProperty(property, this.getBoolean(), "many", null, 0, 1, Property.class, false, true, false); + + property = getLocalProperty(propertyType, 4); + initializeProperty(property, this.getBoolean(), "containment", null, 0, 1, Property.class, false, true, false); + + property = getLocalProperty(propertyType, 5); + initializeProperty(property, this.getString(), "default", null, 0, 1, Property.class, false, true, false); + + property = getLocalProperty(propertyType, 6); + initializeProperty(property, this.getBoolean(), "readOnly", null, 0, 1, Property.class, false, true, false); + + property = getLocalProperty(propertyType, 7); + initializeProperty(property, this.getType(), "type", null, 0, 1, Property.class, false, true, false, false , null); + setInstanceProperty (property, "commonj.sdo/xml", "propertyType", "sdo:Type"); + + property = getLocalProperty(propertyType, 8); + initializeProperty(property, this.getProperty(), "opposite", null, 0, 1, Property.class, false, true, false, false , null); + setInstanceProperty (property, "commonj.sdo/xml", "propertyType", "sdo:Property"); + + property = getLocalProperty(propertyType, 9); + initializeProperty(property, this.getBoolean(), "nullable", null, 0, 1, Property.class, false, true, false); + + property = getLocalProperty(propertyType, 10); + initializeProperty(property, getSequence(), "anyAttribute", null, 0, -1, Property.class, false, false, false); + + initializeType(textTypeType, TextType.class, "TextType", true); + property = getLocalProperty(textTypeType, 0); + initializeProperty(property, this.getString(), "text", null, 0, -1, TextType.class, false, false, false); + + initializeType(typeType, Type.class, "Type", false); + property = getLocalProperty(typeType, 0); + initializeProperty(property, this.getType(), "baseType", null, 0, -1, Type.class, false, false, false, false , null); + setInstanceProperty (property, "commonj.sdo/xml", "propertyType", "sdo:Type"); + + property = getLocalProperty(typeType, 1); + initializeProperty(property, this.getProperty(), "property", null, 0, -1, Type.class, false, false, false, true , null); + + property = getLocalProperty(typeType, 2); + initializeProperty(property, this.getString(), "aliasName", null, 0, -1, Type.class, false, false, false); + + property = getLocalProperty(typeType, 3); + initializeProperty(property, getSequence(), "any", null, 0, -1, Type.class, false, false, false); + + property = getLocalProperty(typeType, 4); + initializeProperty(property, this.getString(), "name", null, 0, 1, Type.class, false, true, false); + setInstanceProperty (property, "commonj.sdo/xml", "dataType", "sdo:String"); + + property = getLocalProperty(typeType, 5); + initializeProperty(property, this.getURI(), "uri", null, 0, 1, Type.class, false, true, false); + + property = getLocalProperty(typeType, 6); + initializeProperty(property, this.getBoolean(), "dataType", null, 0, 1, Type.class, false, true, false); + + property = getLocalProperty(typeType, 7); + initializeProperty(property, this.getBoolean(), "open", null, 0, 1, Type.class, false, true, false); + + property = getLocalProperty(typeType, 8); + initializeProperty(property, this.getBoolean(), "sequenced", null, 0, 1, Type.class, false, true, false); + + property = getLocalProperty(typeType, 9); + initializeProperty(property, this.getBoolean(), "abstract", null, 0, 1, Type.class, false, true, false); + + property = getLocalProperty(typeType, 10); + initializeProperty(property, getSequence(), "anyAttribute", null, 0, -1, Type.class, false, false, false); + + initializeType(typesType, Types.class, "Types", false); + property = getLocalProperty(typesType, 0); + initializeProperty(property, this.getType(), "type", null, 0, -1, Types.class, false, false, false, true , null); + + initializeType(xsdTypeType, XSDType.class, "XSDType", false); + property = getLocalProperty(xsdTypeType, 0); + initializeProperty(property, getSequence(), "any", null, 0, -1, XSDType.class, false, false, false); + + // Initialize data types + initializeType(boolean_Type, boolean.class, "Boolean", true, false); + setInstanceProperty (boolean_Type, "commonj.sdo/java", "instanceClass", "boolean"); + + initializeType(booleanObjectType, Boolean.class, "BooleanObject", true, false); + + initializeType(byte_Type, byte.class, "Byte", true, false); + setInstanceProperty (byte_Type, "commonj.sdo/java", "instanceClass", "byte"); + + initializeType(byteObjectType, Byte.class, "ByteObject", true, false); + + initializeType(bytesType, byte[].class, "Bytes", true, false); + setInstanceProperty (bytesType, "commonj.sdo/java", "instanceClass", "byte[]"); + + initializeType(changeSummaryTypeType, ChangeSummary.class, "ChangeSummaryType", true, false); + setInstanceProperty (changeSummaryTypeType, "commonj.sdo/java", "instanceClass", "commonj.sdo.ChangeSummary"); + + initializeType(characterType, char.class, "Character", true, false); + setInstanceProperty (characterType, "commonj.sdo/java", "instanceClass", "char"); + + initializeType(characterObjectType, Character.class, "CharacterObject", true, false); + + initializeType(dateType, Date.class, "Date", true, false); + setInstanceProperty (dateType, "commonj.sdo/java", "instanceClass", "java.util.Date"); + + initializeType(dateTimeType, String.class, "DateTime", true, false); + setInstanceProperty (dateTimeType, "commonj.sdo/java", "instanceClass", "java.lang.String"); + + initializeType(dayType, String.class, "Day", true, false); + setInstanceProperty (dayType, "commonj.sdo/java", "instanceClass", "java.lang.String"); + + initializeType(decimalType, BigDecimal.class, "Decimal", true, false); + setInstanceProperty (decimalType, "commonj.sdo/java", "instanceClass", "java.math.BigDecimal"); + + initializeType(double_Type, double.class, "Double", true, false); + setInstanceProperty (double_Type, "commonj.sdo/java", "instanceClass", "double"); + + initializeType(doubleObjectType, Double.class, "DoubleObject", true, false); + + initializeType(durationType, String.class, "Duration", true, false); + setInstanceProperty (durationType, "commonj.sdo/java", "instanceClass", "java.lang.String"); + + initializeType(float_Type, float.class, "Float", true, false); + setInstanceProperty (float_Type, "commonj.sdo/java", "instanceClass", "float"); + + initializeType(floatObjectType, Float.class, "FloatObject", true, false); + + initializeType(int_Type, int.class, "Int", true, false); + setInstanceProperty (int_Type, "commonj.sdo/java", "instanceClass", "int"); + + initializeType(integerType, BigInteger.class, "Integer", true, false); + setInstanceProperty (integerType, "commonj.sdo/java", "instanceClass", "java.math.BigInteger"); + + initializeType(intObjectType, Integer.class, "IntObject", true, false); + + initializeType(long_Type, long.class, "Long", true, false); + setInstanceProperty (long_Type, "commonj.sdo/java", "instanceClass", "long"); + + initializeType(longObjectType, Long.class, "LongObject", true, false); + + initializeType(monthType, String.class, "Month", true, false); + setInstanceProperty (monthType, "commonj.sdo/java", "instanceClass", "java.lang.String"); + + initializeType(monthDayType, String.class, "MonthDay", true, false); + setInstanceProperty (monthDayType, "commonj.sdo/java", "instanceClass", "java.lang.String"); + + initializeType(objectType, Object.class, "Object", true, false); + setInstanceProperty (objectType, "commonj.sdo/java", "instanceClass", "java.lang.Object"); + + initializeType(short_Type, short.class, "Short", true, false); + setInstanceProperty (short_Type, "commonj.sdo/java", "instanceClass", "short"); + + initializeType(shortObjectType, Short.class, "ShortObject", true, false); + + initializeType(stringType, String.class, "String", true, false); + setInstanceProperty (stringType, "commonj.sdo/java", "instanceClass", "java.lang.String"); + + initializeType(stringsType, List.class, "Strings", true, false); + setInstanceProperty (stringsType, "commonj.sdo/java", "instanceClass", "java.util.List"); + + initializeType(timeType, String.class, "Time", true, false); + setInstanceProperty (timeType, "commonj.sdo/java", "instanceClass", "java.lang.String"); + + initializeType(uriType, String.class, "URI", true, false); + setInstanceProperty (uriType, "commonj.sdo/java", "instanceClass", "java.lang.String"); + + initializeType(yearType, String.class, "Year", true, false); + setInstanceProperty (yearType, "commonj.sdo/java", "instanceClass", "java.lang.String"); + + initializeType(yearMonthType, String.class, "YearMonth", true, false); + setInstanceProperty (yearMonthType, "commonj.sdo/java", "instanceClass", "java.lang.String"); + + initializeType(yearMonthDayType, String.class, "YearMonthDay", true, false); + setInstanceProperty (yearMonthDayType, "commonj.sdo/java", "instanceClass", "java.lang.String"); + + createXSDMetaData(); + } + + protected void createXSDMetaData() + { + super.initXSD(); + + commonj.sdo.Property property = null; + + + addXSDMapping + (baseDataGraphTypeType, + new String[] + { + "name", "BaseDataGraphType", + "kind", "elementOnly" + }); + + addXSDMapping + (getProperty(baseDataGraphTypeType, BaseDataGraphTypeImpl.INTERNAL_MODELS), + new String[] + { + "kind", "element", + "name", "models" + }); + + addXSDMapping + (getProperty(baseDataGraphTypeType, BaseDataGraphTypeImpl.INTERNAL_XSD), + new String[] + { + "kind", "element", + "name", "xsd" + }); + + addXSDMapping + (getProperty(baseDataGraphTypeType, BaseDataGraphTypeImpl.INTERNAL_CHANGE_SUMMARY), + new String[] + { + "kind", "element", + "name", "changeSummary" + }); + + addXSDMapping + (getProperty(baseDataGraphTypeType, BaseDataGraphTypeImpl.INTERNAL_ANY_ATTRIBUTE), + new String[] + { + "kind", "attributeWildcard", + "wildcards", "##other", + "name", ":3", + "processing", "lax" + }); + + addXSDMapping + (dataGraphTypeType, + new String[] + { + "name", "DataGraphType", + "kind", "elementOnly" + }); + + addXSDMapping + (getProperty(dataGraphTypeType, DataGraphTypeImpl.INTERNAL_ANY), + new String[] + { + "kind", "elementWildcard", + "wildcards", "##other", + "name", ":4", + "processing", "lax" + }); + + addXSDMapping + (dataObjectType, + new String[] + { + "name", "DataObject", + "kind", "empty" + }); + + property = createGlobalProperty + ("datagraph", + this.getDataGraphType(), + new String[] + { + "kind", "element", + "name", "datagraph", + "namespace", "##targetNamespace" + }); + + property = createGlobalProperty + ("dataObject", + this.getDataObject(), + new String[] + { + "kind", "element", + "name", "dataObject", + "namespace", "##targetNamespace" + }); + + property = createGlobalProperty + ("type", + this.getType(), + new String[] + { + "kind", "element", + "name", "type", + "namespace", "##targetNamespace" + }); + + property = createGlobalProperty + ("types", + this.getTypes(), + new String[] + { + "kind", "element", + "name", "types", + "namespace", "##targetNamespace" + }); + + property = createGlobalProperty + ("ref", + this.getString(), + new String[] + { + "kind", "attribute", + "name", "ref", + "namespace", "##targetNamespace" + }, + IS_ATTRIBUTE); + + property = createGlobalProperty + ("unset", + this.getString(), + new String[] + { + "kind", "attribute", + "name", "unset", + "namespace", "##targetNamespace" + }, + IS_ATTRIBUTE); + + addXSDMapping + (modelsTypeType, + new String[] + { + "name", "ModelsType", + "kind", "elementOnly" + }); + + addXSDMapping + (getProperty(modelsTypeType, ModelsTypeImpl.INTERNAL_ANY), + new String[] + { + "kind", "elementWildcard", + "wildcards", "##other", + "name", ":0", + "processing", "lax" + }); + + addXSDMapping + (propertyType, + new String[] + { + "name", "Property", + "kind", "elementOnly" + }); + + addXSDMapping + (getProperty(propertyType, PropertyImpl.INTERNAL_ALIAS_NAME), + new String[] + { + "kind", "element", + "name", "aliasName", + "namespace", "##targetNamespace" + }); + + addXSDMapping + (getProperty(propertyType, PropertyImpl.INTERNAL_ANY), + new String[] + { + "kind", "elementWildcard", + "wildcards", "##other", + "name", ":1", + "processing", "lax" + }); + + addXSDMapping + (getProperty(propertyType, PropertyImpl.INTERNAL_NAME), + new String[] + { + "kind", "attribute", + "name", "name" + }); + + addXSDMapping + (getProperty(propertyType, PropertyImpl.INTERNAL_MANY), + new String[] + { + "kind", "attribute", + "name", "many" + }); + + addXSDMapping + (getProperty(propertyType, PropertyImpl.INTERNAL_CONTAINMENT), + new String[] + { + "kind", "attribute", + "name", "containment" + }); + + addXSDMapping + (getProperty(propertyType, PropertyImpl.INTERNAL_DEFAULT), + new String[] + { + "kind", "attribute", + "name", "default" + }); + + addXSDMapping + (getProperty(propertyType, PropertyImpl.INTERNAL_READ_ONLY), + new String[] + { + "kind", "attribute", + "name", "readOnly" + }); + + addXSDMapping + (getProperty(propertyType, PropertyImpl.INTERNAL_TYPE), + new String[] + { + "kind", "attribute", + "name", "type" + }); + + addXSDMapping + (getProperty(propertyType, PropertyImpl.INTERNAL_OPPOSITE), + new String[] + { + "kind", "attribute", + "name", "opposite" + }); + + addXSDMapping + (getProperty(propertyType, PropertyImpl.INTERNAL_NULLABLE), + new String[] + { + "kind", "attribute", + "name", "nullable" + }); + + addXSDMapping + (getProperty(propertyType, PropertyImpl.INTERNAL_ANY_ATTRIBUTE), + new String[] + { + "kind", "attributeWildcard", + "wildcards", "##any", + "name", ":10", + "processing", "lax" + }); + + addXSDMapping + (textTypeType, + new String[] + { + "name", "TextType", + "kind", "elementOnly" + }); + + addXSDMapping + (getProperty(textTypeType, TextTypeImpl.INTERNAL_TEXT), + new String[] + { + "kind", "element", + "name", "text", + "namespace", "##targetNamespace" + }); + + addXSDMapping + (typeType, + new String[] + { + "name", "Type", + "kind", "elementOnly" + }); + + addXSDMapping + (getProperty(typeType, TypeImpl.INTERNAL_BASE_TYPE), + new String[] + { + "kind", "element", + "name", "baseType", + "namespace", "##targetNamespace" + }); + + addXSDMapping + (getProperty(typeType, TypeImpl.INTERNAL_PROPERTY), + new String[] + { + "kind", "element", + "name", "property", + "namespace", "##targetNamespace" + }); + + addXSDMapping + (getProperty(typeType, TypeImpl.INTERNAL_ALIAS_NAME), + new String[] + { + "kind", "element", + "name", "aliasName", + "namespace", "##targetNamespace" + }); + + addXSDMapping + (getProperty(typeType, TypeImpl.INTERNAL_ANY), + new String[] + { + "kind", "elementWildcard", + "wildcards", "##other", + "name", ":3", + "processing", "lax" + }); + + addXSDMapping + (getProperty(typeType, TypeImpl.INTERNAL_NAME), + new String[] + { + "kind", "attribute", + "name", "name" + }); + + addXSDMapping + (getProperty(typeType, TypeImpl.INTERNAL_URI), + new String[] + { + "kind", "attribute", + "name", "uri" + }); + + addXSDMapping + (getProperty(typeType, TypeImpl.INTERNAL_DATA_TYPE), + new String[] + { + "kind", "attribute", + "name", "dataType" + }); + + addXSDMapping + (getProperty(typeType, TypeImpl.INTERNAL_OPEN), + new String[] + { + "kind", "attribute", + "name", "open" + }); + + addXSDMapping + (getProperty(typeType, TypeImpl.INTERNAL_SEQUENCED), + new String[] + { + "kind", "attribute", + "name", "sequenced" + }); + + addXSDMapping + (getProperty(typeType, TypeImpl.INTERNAL_ABSTRACT), + new String[] + { + "kind", "attribute", + "name", "abstract" + }); + + addXSDMapping + (getProperty(typeType, TypeImpl.INTERNAL_ANY_ATTRIBUTE), + new String[] + { + "kind", "attributeWildcard", + "wildcards", "##any", + "name", ":10", + "processing", "lax" + }); + + addXSDMapping + (typesType, + new String[] + { + "name", "Types", + "kind", "elementOnly" + }); + + addXSDMapping + (getProperty(typesType, TypesImpl.INTERNAL_TYPE), + new String[] + { + "kind", "element", + "name", "type", + "namespace", "##targetNamespace" + }); + + addXSDMapping + (xsdTypeType, + new String[] + { + "name", "XSDType", + "kind", "elementOnly" + }); + + addXSDMapping + (getProperty(xsdTypeType, XSDTypeImpl.INTERNAL_ANY), + new String[] + { + "kind", "elementWildcard", + "wildcards", "http://www.w3.org/2001/XMLSchema", + "name", ":0", + "processing", "lax" + }); + + addXSDMapping + (boolean_Type, + new String[] + { + "name", "Boolean" + }); + + addXSDMapping + (booleanObjectType, + new String[] + { + "name", "Boolean:Object", + "baseType", "Boolean" + }); + + addXSDMapping + (byte_Type, + new String[] + { + "name", "Byte" + }); + + addXSDMapping + (byteObjectType, + new String[] + { + "name", "Byte:Object", + "baseType", "Byte" + }); + + addXSDMapping + (bytesType, + new String[] + { + "name", "Bytes" + }); + + addXSDMapping + (changeSummaryTypeType, + new String[] + { + "name", "ChangeSummaryType" + }); + + addXSDMapping + (characterType, + new String[] + { + "name", "Character" + }); + + addXSDMapping + (characterObjectType, + new String[] + { + "name", "Character:Object", + "baseType", "Character" + }); + + addXSDMapping + (dateType, + new String[] + { + "name", "Date" + }); + + addXSDMapping + (dateTimeType, + new String[] + { + "name", "DateTime" + }); + + addXSDMapping + (dayType, + new String[] + { + "name", "Day" + }); + + addXSDMapping + (decimalType, + new String[] + { + "name", "Decimal" + }); + + addXSDMapping + (double_Type, + new String[] + { + "name", "Double" + }); + + addXSDMapping + (doubleObjectType, + new String[] + { + "name", "Double:Object", + "baseType", "Double" + }); + + addXSDMapping + (durationType, + new String[] + { + "name", "Duration" + }); + + addXSDMapping + (float_Type, + new String[] + { + "name", "Float" + }); + + addXSDMapping + (floatObjectType, + new String[] + { + "name", "Float:Object", + "baseType", "Float" + }); + + addXSDMapping + (int_Type, + new String[] + { + "name", "Int" + }); + + addXSDMapping + (integerType, + new String[] + { + "name", "Integer" + }); + + addXSDMapping + (intObjectType, + new String[] + { + "name", "Int:Object", + "baseType", "Int" + }); + + addXSDMapping + (long_Type, + new String[] + { + "name", "Long" + }); + + addXSDMapping + (longObjectType, + new String[] + { + "name", "Long:Object", + "baseType", "Long" + }); + + addXSDMapping + (monthType, + new String[] + { + "name", "Month" + }); + + addXSDMapping + (monthDayType, + new String[] + { + "name", "MonthDay" + }); + + addXSDMapping + (objectType, + new String[] + { + "name", "Object" + }); + + addXSDMapping + (short_Type, + new String[] + { + "name", "Short" + }); + + addXSDMapping + (shortObjectType, + new String[] + { + "name", "Short:Object", + "baseType", "Short" + }); + + addXSDMapping + (stringType, + new String[] + { + "name", "String" + }); + + addXSDMapping + (stringsType, + new String[] + { + "name", "Strings" + }); + + addXSDMapping + (timeType, + new String[] + { + "name", "Time" + }); + + addXSDMapping + (uriType, + new String[] + { + "name", "URI" + }); + + addXSDMapping + (yearType, + new String[] + { + "name", "Year" + }); + + addXSDMapping + (yearMonthType, + new String[] + { + "name", "YearMonth" + }); + + addXSDMapping + (yearMonthDayType, + new String[] + { + "name", "YearMonthDay" + }); + + } + + /** + * + * + * @generated NOT + */ + public Boolean createBooleanFromString(String initialValue) + { + return XMLTypeFactory.eINSTANCE.createBooleanObject(initialValue); + } + + /** + * + * + * @generated NOT + */ + public String convertBooleanToString(Object instanceValue) + { + return XMLTypeFactory.eINSTANCE.convertBooleanObject((Boolean)instanceValue); + } + + /** + * + * + * @generated NOT + */ + public Boolean createBooleanObjectFromString(String initialValue) + { + return (Boolean)createBooleanFromString(initialValue); + } + + /** + * + * + * @generated NOT + */ + public String convertBooleanObjectToString(Object instanceValue) + { + return convertBooleanToString(instanceValue); + } + + /** + * + * + * @generated NOT + */ + public Byte createByteFromString(String initialValue) + { + return XMLTypeFactory.eINSTANCE.createByteObject(initialValue); + } + + /** + * + * + * @generated NOT + */ + public String convertByteToString(Object instanceValue) + { + return XMLTypeFactory.eINSTANCE.convertByteObject((Byte)instanceValue); + } + + /** + * + * + * @generated NOT + */ + public Byte createByteObjectFromString(String initialValue) + { + return (Byte)createByteFromString(initialValue); + } + + /** + * + * + * @generated NOT + */ + public String convertByteObjectToString(Object instanceValue) + { + return convertByteToString(instanceValue); + } + + /** + * + * + * @generated NOT + */ + public byte[] createBytesFromString(String initialValue) + { + return XMLTypeFactory.eINSTANCE.createHexBinary(initialValue); + } + + /** + * + * + * @generated NOT + */ + public String convertBytesToString(Object instanceValue) + { + if (instanceValue instanceof byte[]) { + return XMLTypeFactory.eINSTANCE.convertHexBinary((byte[])instanceValue); + } else { + return XMLTypeFactory.eINSTANCE.convertHexBinary(instanceValue.toString().getBytes()); + } + } + + /** + * + * + * @generated NOT + */ + public ChangeSummary createChangeSummaryTypeFromString(String initialValue) + { + return null; + } + + /** + * + * + * @generated NOT + */ + public String convertChangeSummaryTypeToString(Object instanceValue) + { + return "change summary serialization goes here ..."; + } + + /** + * + * + * @generated NOT + */ + public Character createCharacterFromString(String initialValue) + { + return (initialValue == null && initialValue.length() > 0) + ? null : (new Character(XMLTypeUtil.normalize(initialValue, true).charAt(0))); + } + + /** + * + * + * @generated NOT + */ + public String convertCharacterToString(Object instanceValue) + { + return String.valueOf(((Character)instanceValue).charValue()); + } + + /** + * + * + * @generated NOT + */ + public Character createCharacterObjectFromString(String initialValue) + { + return (Character)createCharacterFromString(initialValue); + } + + /** + * + * + * @generated NOT + */ + public String convertCharacterObjectToString(Object instanceValue) + { + return convertCharacterToString(instanceValue); + } + + /** + * + * + * @generated NOT + */ + public Date createDateFromString(String initialValue) + { + // XMLCalendar cal = (XMLCalendar) XMLTypeFactory.eINSTANCE.createDate(initialValue); + // return (cal != null) ? cal.getDate() : null; + return DataHelper.INSTANCE.toDate(initialValue); + } + + /** + * + * + * @generated NOT + */ + public String convertDateToString(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); + } + + /** + * + * + * @generated NOT + */ + public String createDateTimeFromString(String initialValue) + { + return initialValue; + } + + /** + * + * + * @generated NOT + */ + public String convertDateTimeToString(Object instanceValue) + { + return (String)instanceValue; + } + + /** + * + * + * @generated NOT + */ + public String createDayFromString(String initialValue) + { + return initialValue; + } + + /** + * + * + * @generated NOT + */ + public String convertDayToString(Object instanceValue) + { + return (String)instanceValue; + } + + /** + * + * + * @generated NOT + */ + public BigDecimal createDecimalFromString(String initialValue) + { + return XMLTypeFactory.eINSTANCE.createDecimal(initialValue); + } + + /** + * + * + * @generated NOT + */ + public String convertDecimalToString(Object instanceValue) + { + return XMLTypeFactory.eINSTANCE.convertDecimal((BigDecimal)instanceValue); + } + + /** + * + * + * @generated NOT + */ + public Double createDoubleFromString(String initialValue) + { + return XMLTypeFactory.eINSTANCE.createDoubleObject(initialValue); + } + + /** + * + * + * @generated NOT + */ + public String convertDoubleToString(Object instanceValue) + { + return XMLTypeFactory.eINSTANCE.convertDoubleObject((Double)instanceValue); + } + + /** + * + * + * @generated NOT + */ + public Double createDoubleObjectFromString(String initialValue) + { + return (Double)createDoubleFromString(initialValue); + } + + /** + * + * + * @generated NOT + */ + public String convertDoubleObjectToString(Object instanceValue) + { + return convertDoubleToString(instanceValue); + } + + /** + * + * + * @generated NOT + */ + public String createDurationFromString(String initialValue) + { + return initialValue; + } + + /** + * + * + * @generated NOT + */ + public String convertDurationToString(Object instanceValue) + { + return (String)instanceValue; + } + + /** + * + * + * @generated NOT + */ + public Float createFloatFromString(String initialValue) + { + return XMLTypeFactory.eINSTANCE.createFloatObject(initialValue); + } + + /** + * + * + * @generated NOT + */ + public String convertFloatToString(Object instanceValue) + { + return XMLTypeFactory.eINSTANCE.convertFloatObject((Float)instanceValue); + } + + /** + * + * + * @generated NOT + */ + public Float createFloatObjectFromString(String initialValue) + { + return (Float)createFloatFromString(initialValue); + } + + /** + * + * + * @generated NOT + */ + public String convertFloatObjectToString(Object instanceValue) + { + return convertFloatToString(instanceValue); + } + + /** + * + * + * @generated NOT + */ + public Integer createIntFromString(String initialValue) + { + return XMLTypeFactory.eINSTANCE.createIntObject(initialValue); + } + + /** + * + * + * @generated NOT + */ + public String convertIntToString(Object instanceValue) + { + return XMLTypeFactory.eINSTANCE.convertIntObject((Integer)instanceValue); + } + + /** + * + * + * @generated NOT + */ + public BigInteger createIntegerFromString(String initialValue) + { + return XMLTypeFactory.eINSTANCE.createInteger(initialValue); + } + + /** + * + * + * @generated NOT + */ + public String convertIntegerToString(Object instanceValue) + { + return XMLTypeFactory.eINSTANCE.convertInteger((BigInteger)instanceValue); + } + + /** + * + * + * @generated NOT + */ + public Integer createIntObjectFromString(String initialValue) + { + return (Integer)createIntFromString(initialValue); + } + + /** + * + * + * @generated NOT + */ + public String convertIntObjectToString(Object instanceValue) + { + return convertIntToString(instanceValue); + } + + /** + * + * + * @generated NOT + */ + public Long createLongFromString(String initialValue) + { + return XMLTypeFactory.eINSTANCE.createLongObject(initialValue); + } + + /** + * + * + * @generated NOT + */ + public String convertLongToString(Object instanceValue) + { + return XMLTypeFactory.eINSTANCE.convertLongObject((Long)instanceValue); + } + + /** + * + * + * @generated NOT + */ + public Long createLongObjectFromString(String initialValue) + { + return (Long)createLongFromString(initialValue); + } + + /** + * + * + * @generated NOT + */ + public String convertLongObjectToString(Object instanceValue) + { + return convertLongToString(instanceValue); + } + + /** + * + * + * @generated NOT + */ + public String createMonthFromString(String initialValue) + { + return initialValue; + } + + /** + * + * + * @generated NOT + */ + public String convertMonthToString(Object instanceValue) + { + return (String)instanceValue; + } + + /** + * + * + * @generated NOT + */ + public String createMonthDayFromString(String initialValue) + { + return initialValue; + } + + /** + * + * + * @generated NOT + */ + public String convertMonthDayToString(Object instanceValue) + { + return (String)instanceValue; + } + + /** + * + * + * @generated NOT + */ + public Object createObjectFromString(String initialValue) + { + return initialValue; + } + + /** + * + * + * @generated NOT + */ + public String convertObjectToString(Object instanceValue) + { + return (instanceValue != null) ? instanceValue.toString() : null; + } + + /** + * + * + * @generated NOT + */ + public Short createShortFromString(String initialValue) + { + return XMLTypeFactory.eINSTANCE.createShortObject(initialValue); + } + + /** + * + * + * @generated NOT + */ + public String convertShortToString(Object instanceValue) + { + return XMLTypeFactory.eINSTANCE.convertShortObject((Short)instanceValue); + } + + /** + * + * + * @generated NOT + */ + public Short createShortObjectFromString(String initialValue) + { + return (Short)createShortFromString(initialValue); + } + + /** + * + * + * @generated NOT + */ + public String convertShortObjectToString(Object instanceValue) + { + return convertShortToString(instanceValue); + } + + /** + * + * + * @generated NOT + */ + public String createStringFromString(String initialValue) + { + return initialValue; + } + + /** + * + * + * @generated NOT + */ + public String convertStringToString(Object instanceValue) + { + return (instanceValue != null) ? instanceValue.toString() : null; + } + + /** + * + * + * @generated NOT + */ + public List createStringsFromString(String initialValue) + { + return XMLTypeFactory.eINSTANCE.createENTITIES(initialValue); + } + + /** + * + * + * @generated NOT + */ + public String convertStringsToString(Object instanceValue) + { + return XMLTypeFactory.eINSTANCE.convertENTITIES((List)instanceValue); + } + + /** + * + * + * @generated NOT + */ + public String createTimeFromString(String initialValue) + { + return initialValue; + } + + /** + * + * + * @generated NOT + */ + public String convertTimeToString(Object instanceValue) + { + return (String)instanceValue; + } + + /** + * + * + * @generated NOT + */ + public String createURIFromString(String initialValue) + { + return initialValue; + } + + /** + * + * + * @generated NOT + */ + public String convertURIToString(Object instanceValue) + { + return (instanceValue != null) ? instanceValue.toString() : null; + } + + /** + * + * + * @generated NOT + */ + public String createYearFromString(String initialValue) + { + return initialValue; + } + + /** + * + * + * @generated NOT + */ + public String convertYearToString(Object instanceValue) + { + return (String)instanceValue; + } + + /** + * + * + * @generated NOT + */ + public String createYearMonthFromString(String initialValue) + { + return initialValue; + } + + /** + * + * + * @generated NOT + */ + public String convertYearMonthToString(Object instanceValue) + { + return (String)instanceValue; + } + + /** + * + * + * @generated NOT + */ + public String createYearMonthDayFromString(String initialValue) + { + return initialValue; + } + + /** + * + * + * @generated NOT + */ + public String convertYearMonthDayToString(Object instanceValue) + { + return (String)instanceValue; + } + + + +} //ModelFactoryImpl diff --git a/sdo-java/trunk/impl/src/main/java/org/apache/tuscany/sdo/model/impl/ModelsTypeImpl.java b/sdo-java/trunk/impl/src/main/java/org/apache/tuscany/sdo/model/impl/ModelsTypeImpl.java new file mode 100644 index 0000000000..df043a0d10 --- /dev/null +++ b/sdo-java/trunk/impl/src/main/java/org/apache/tuscany/sdo/model/impl/ModelsTypeImpl.java @@ -0,0 +1,220 @@ +/** + * + * Licensed to the Apache Software Foundation (ASF) under one + * or more contributor license agreements. See the NOTICE file + * distributed with this work for additional information + * regarding copyright ownership. The ASF licenses this file + * to you under the Apache License, Version 2.0 (the + * "License"); you may not use this file except in compliance + * with the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, + * software distributed under the License is distributed on an + * "AS IS" BASIS, WITHOUT 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 commonj.sdo.Type; + +import org.apache.tuscany.sdo.impl.DataObjectBase; + +import org.apache.tuscany.sdo.model.ModelFactory; +import org.apache.tuscany.sdo.model.ModelsType; + +/** + * + * An implementation of the model object 'Models Type'. + * + *

+ * The following features are implemented: + *

    + *
  • {@link org.apache.tuscany.sdo.model.impl.ModelsTypeImpl#getAny Any}
  • + *
+ *

+ * + * @generated + */ +public class ModelsTypeImpl extends DataObjectBase implements ModelsType +{ + + public final static int ANY = -1; + + public final static int SDO_PROPERTY_COUNT = 0; + + public final static int EXTENDED_PROPERTY_COUNT = -1; + + + /** + * The internal feature id for the 'Any' attribute list. + * + * + * @generated + * @ordered + */ + public final static int INTERNAL_ANY = 0; + + /** + * The number of properties for this type. + * + * + * @generated + * @ordered + */ + public final static int INTERNAL_PROPERTY_COUNT = 1; + + protected int internalConvertIndex(int internalIndex) + { + switch (internalIndex) + { + case INTERNAL_ANY: return ANY; + } + return super.internalConvertIndex(internalIndex); + } + + + /** + * The cached value of the '{@link #getAny() Any}' attribute list. + * + * + * @see #getAny() + * @generated + * @ordered + */ + + protected Sequence any = null; + + /** + * + * + * @generated + */ + public ModelsTypeImpl() + { + super(); + } + + /** + * + * + * @generated + */ + public Type getStaticType() + { + return ((ModelFactoryImpl)ModelFactory.INSTANCE).getModelsType(); + } + + /** + * + * + * @generated + */ + public Sequence getAny() + { + if (any == null) + { + any = createSequence(INTERNAL_ANY); + } + return any; + } + /** + * + * + * @generated + */ + public ChangeContext inverseRemove(Object otherEnd, int propertyIndex, ChangeContext changeContext) + { + switch (propertyIndex) + { + case ANY: + return removeFromSequence(getAny(), otherEnd, changeContext); + } + return super.inverseRemove(otherEnd, propertyIndex, changeContext); + } + + /** + * + * + * @generated + */ + public Object get(int propertyIndex, boolean resolve) + { + switch (propertyIndex) + { + case ANY: + // 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 getAny(); + } + return super.get(propertyIndex, resolve); + } + + /** + * + * + * @generated + */ + public void set(int propertyIndex, Object newValue) + { + switch (propertyIndex) + { + case ANY: + setSequence(getAny(), newValue); + return; + } + super.set(propertyIndex, newValue); + } + + /** + * + * + * @generated + */ + public void unset(int propertyIndex) + { + switch (propertyIndex) + { + case ANY: + unsetSequence(getAny()); + return; + } + super.unset(propertyIndex); + } + + /** + * + * + * @generated + */ + public boolean isSet(int propertyIndex) + { + switch (propertyIndex) + { + case ANY: + return any != null && !isSequenceEmpty(getAny()); + } + return super.isSet(propertyIndex); + } + + /** + * + * + * @generated + */ + public String toString() + { + if (isProxy(this)) return super.toString(); + + StringBuffer result = new StringBuffer(super.toString()); + result.append(" (any: "); + result.append(any); + result.append(')'); + return result.toString(); + } + +} //ModelsTypeImpl diff --git a/sdo-java/trunk/impl/src/main/java/org/apache/tuscany/sdo/model/impl/PropertyImpl.java b/sdo-java/trunk/impl/src/main/java/org/apache/tuscany/sdo/model/impl/PropertyImpl.java new file mode 100644 index 0000000000..c8348ded2d --- /dev/null +++ b/sdo-java/trunk/impl/src/main/java/org/apache/tuscany/sdo/model/impl/PropertyImpl.java @@ -0,0 +1,1170 @@ +/** + * + * Licensed to the Apache Software Foundation (ASF) under one + * or more contributor license agreements. See the NOTICE file + * distributed with this work for additional information + * regarding copyright ownership. The ASF licenses this file + * to you under the Apache License, Version 2.0 (the + * "License"); you may not use this file except in compliance + * with the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, + * software distributed under the License is distributed on an + * "AS IS" BASIS, WITHOUT 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.DataObjectBase; + +import org.apache.tuscany.sdo.model.ModelFactory; +import org.apache.tuscany.sdo.model.Property; +import org.apache.tuscany.sdo.model.Type; + +/** + * + * An implementation of the model object 'Property'. + * + *

+ * The following features are implemented: + *

    + *
  • {@link org.apache.tuscany.sdo.model.impl.PropertyImpl#getAliasName Alias Name}
  • + *
  • {@link org.apache.tuscany.sdo.model.impl.PropertyImpl#getAny Any}
  • + *
  • {@link org.apache.tuscany.sdo.model.impl.PropertyImpl#getName Name}
  • + *
  • {@link org.apache.tuscany.sdo.model.impl.PropertyImpl#isMany Many}
  • + *
  • {@link org.apache.tuscany.sdo.model.impl.PropertyImpl#isContainment Containment}
  • + *
  • {@link org.apache.tuscany.sdo.model.impl.PropertyImpl#getDefault Default}
  • + *
  • {@link org.apache.tuscany.sdo.model.impl.PropertyImpl#isReadOnly Read Only}
  • + *
  • {@link org.apache.tuscany.sdo.model.impl.PropertyImpl#getType_ Type}
  • + *
  • {@link org.apache.tuscany.sdo.model.impl.PropertyImpl#getOpposite Opposite}
  • + *
  • {@link org.apache.tuscany.sdo.model.impl.PropertyImpl#isNullable Nullable}
  • + *
  • {@link org.apache.tuscany.sdo.model.impl.PropertyImpl#getAnyAttribute Any Attribute}
  • + *
+ *

+ * + * @generated + */ +public class PropertyImpl extends DataObjectBase implements Property +{ + + public final static int ALIAS_NAME = 0; + + public final static int ANY = -1; + + public final static int NAME = 1; + + public final static int MANY = 2; + + public final static int CONTAINMENT = 3; + + public final static int DEFAULT = 4; + + public final static int READ_ONLY = 5; + + public final static int TYPE = 6; + + public final static int OPPOSITE = 7; + + public final static int NULLABLE = 8; + + public final static int ANY_ATTRIBUTE = -2; + + public final static int SDO_PROPERTY_COUNT = 9; + + public final static int EXTENDED_PROPERTY_COUNT = -2; + + + /** + * The internal feature id for the 'Alias Name' attribute list. + * + * + * @generated + * @ordered + */ + public final static int INTERNAL_ALIAS_NAME = 0; + + /** + * The internal feature id for the 'Any' attribute list. + * + * + * @generated + * @ordered + */ + public final static int INTERNAL_ANY = 1; + + /** + * The internal feature id for the 'Name' attribute. + * + * + * @generated + * @ordered + */ + public final static int INTERNAL_NAME = 2; + + /** + * The internal feature id for the 'Many' attribute. + * + * + * @generated + * @ordered + */ + public final static int INTERNAL_MANY = 3; + + /** + * The internal feature id for the 'Containment' attribute. + * + * + * @generated + * @ordered + */ + public final static int INTERNAL_CONTAINMENT = 4; + + /** + * The internal feature id for the 'Default' attribute. + * + * + * @generated + * @ordered + */ + public final static int INTERNAL_DEFAULT = 5; + + /** + * The internal feature id for the 'Read Only' attribute. + * + * + * @generated + * @ordered + */ + public final static int INTERNAL_READ_ONLY = 6; + + /** + * The internal feature id for the 'Type' reference. + * + * + * @generated + * @ordered + */ + public final static int INTERNAL_TYPE = 7; + + /** + * The internal feature id for the 'Opposite' reference. + * + * + * @generated + * @ordered + */ + public final static int INTERNAL_OPPOSITE = 8; + + /** + * The internal feature id for the 'Nullable' attribute. + * + * + * @generated + * @ordered + */ + public final static int INTERNAL_NULLABLE = 9; + + /** + * The internal feature id for the 'Any Attribute' attribute list. + * + * + * @generated + * @ordered + */ + public final static int INTERNAL_ANY_ATTRIBUTE = 10; + + /** + * The number of properties for this type. + * + * + * @generated + * @ordered + */ + public final static int INTERNAL_PROPERTY_COUNT = 11; + + protected int internalConvertIndex(int internalIndex) + { + switch (internalIndex) + { + case INTERNAL_ALIAS_NAME: return ALIAS_NAME; + case INTERNAL_ANY: return ANY; + case INTERNAL_NAME: return NAME; + case INTERNAL_MANY: return MANY; + case INTERNAL_CONTAINMENT: return CONTAINMENT; + case INTERNAL_DEFAULT: return DEFAULT; + case INTERNAL_READ_ONLY: return READ_ONLY; + case INTERNAL_TYPE: return TYPE; + case INTERNAL_OPPOSITE: return OPPOSITE; + case INTERNAL_NULLABLE: return NULLABLE; + case INTERNAL_ANY_ATTRIBUTE: return ANY_ATTRIBUTE; + } + return super.internalConvertIndex(internalIndex); + } + + + /** + * The cached value of the '{@link #getAliasName() Alias Name}' attribute list. + * + * + * @see #getAliasName() + * @generated + * @ordered + */ + + protected List aliasName = null; + + /** + * The cached value of the '{@link #getAny() Any}' attribute list. + * + * + * @see #getAny() + * @generated + * @ordered + */ + + protected Sequence any = null; + + /** + * The default value of the '{@link #getName() Name}' attribute. + * + * + * @see #getName() + * @generated + * @ordered + */ + protected static final String NAME_DEFAULT_ = null; + + /** + * The cached value of the '{@link #getName() Name}' attribute. + * + * + * @see #getName() + * @generated + * @ordered + */ + protected String name = NAME_DEFAULT_; + + /** + * This is true if the Name attribute has been set. + * + * + * @generated + * @ordered + */ + protected boolean name_set_ = false; + + /** + * The default value of the '{@link #isMany() Many}' attribute. + * + * + * @see #isMany() + * @generated + * @ordered + */ + protected static final boolean MANY_DEFAULT_ = false; + + /** + * The cached value of the '{@link #isMany() Many}' attribute. + * + * + * @see #isMany() + * @generated + * @ordered + */ + protected boolean many = MANY_DEFAULT_; + + /** + * This is true if the Many attribute has been set. + * + * + * @generated + * @ordered + */ + protected boolean many_set_ = false; + + /** + * The default value of the '{@link #isContainment() Containment}' attribute. + * + * + * @see #isContainment() + * @generated + * @ordered + */ + protected static final boolean CONTAINMENT_DEFAULT_ = false; + + /** + * The cached value of the '{@link #isContainment() Containment}' attribute. + * + * + * @see #isContainment() + * @generated + * @ordered + */ + protected boolean containment = CONTAINMENT_DEFAULT_; + + /** + * This is true if the Containment attribute has been set. + * + * + * @generated + * @ordered + */ + protected boolean containment_set_ = false; + + /** + * The default value of the '{@link #getDefault_() Default}' attribute. + * + * + * @see #getDefault_() + * @generated + * @ordered + */ + protected static final String DEFAULT_DEFAULT_ = null; + + /** + * The cached value of the '{@link #getDefault_() Default}' attribute. + * + * + * @see #getDefault_() + * @generated + * @ordered + */ + protected String default_ = DEFAULT_DEFAULT_; + + /** + * This is true if the Default attribute has been set. + * + * + * @generated + * @ordered + */ + protected boolean default_set_ = false; + + /** + * The default value of the '{@link #isReadOnly() Read Only}' attribute. + * + * + * @see #isReadOnly() + * @generated + * @ordered + */ + protected static final boolean READ_ONLY_DEFAULT_ = false; + + /** + * The cached value of the '{@link #isReadOnly() Read Only}' attribute. + * + * + * @see #isReadOnly() + * @generated + * @ordered + */ + protected boolean readOnly = READ_ONLY_DEFAULT_; + + /** + * This is true if the Read Only attribute has been set. + * + * + * @generated + * @ordered + */ + protected boolean readOnly_set_ = false; + + /** + * The cached value of the '{@link #getType_() Type}' reference. + * + * + * @see #getType_() + * @generated + * @ordered + */ + + protected Type type = null; + + /** + * This is true if the Type reference has been set. + * + * + * @generated + * @ordered + */ + protected boolean type_set_ = false; + + /** + * The cached value of the '{@link #getOpposite_() Opposite}' reference. + * + * + * @see #getOpposite_() + * @generated + * @ordered + */ + + protected Property opposite = null; + + /** + * This is true if the Opposite reference has been set. + * + * + * @generated + * @ordered + */ + protected boolean opposite_set_ = false; + + /** + * The default value of the '{@link #isNullable() Nullable}' attribute. + * + * + * @see #isNullable() + * @generated + * @ordered + */ + protected static final boolean NULLABLE_DEFAULT_ = false; + + /** + * The cached value of the '{@link #isNullable() Nullable}' attribute. + * + * + * @see #isNullable() + * @generated + * @ordered + */ + protected boolean nullable = NULLABLE_DEFAULT_; + + /** + * This is true if the Nullable attribute has been set. + * + * + * @generated + * @ordered + */ + protected boolean nullable_set_ = false; + + /** + * The cached value of the '{@link #getAnyAttribute() Any Attribute}' attribute list. + * + * + * @see #getAnyAttribute() + * @generated + * @ordered + */ + + protected Sequence anyAttribute = null; + + /** + * + * + * @generated + */ + public PropertyImpl() + { + super(); + } + + /** + * + * + * @generated + */ + public commonj.sdo.Type getStaticType() + { + return ((ModelFactoryImpl)ModelFactory.INSTANCE).getProperty(); + } + + /** + * + * + * @generated + */ + public List getAliasName() + { + if (aliasName == null) + { + aliasName = createPropertyList(ListKind.DATATYPE, String.class, ALIAS_NAME, 0); + } + return aliasName; + } + /** + * + * + * @generated + */ + public Sequence getAny() + { + if (any == null) + { + any = createSequence(INTERNAL_ANY); + } + return any; + } + /** + * + * + * @generated + */ + public String getName() + { + return name; + } + /** + * + * + * @generated + */ + public void setName(String newName) + { + String oldName = name; + name = newName; + boolean oldName_set_ = name_set_; + name_set_ = true; + if (isNotifying()) + notify(ChangeKind.SET, INTERNAL_NAME, oldName, name, !oldName_set_); + } + + /** + * + * + * @generated + */ + public void unsetName() + { + String oldName = name; + boolean oldName_set_ = name_set_; + name = NAME_DEFAULT_; + name_set_ = false; + if (isNotifying()) + notify(ChangeKind.UNSET, INTERNAL_NAME, oldName, NAME_DEFAULT_, oldName_set_); + } + + /** + * + * + * @generated + */ + public boolean isSetName() + { + return name_set_; + } + + /** + * + * + * @generated + */ + public boolean isMany() + { + return many; + } + /** + * + * + * @generated + */ + public void setMany(boolean newMany) + { + boolean oldMany = many; + many = newMany; + boolean oldMany_set_ = many_set_; + many_set_ = true; + if (isNotifying()) + notify(ChangeKind.SET, INTERNAL_MANY, oldMany, many, !oldMany_set_); + } + + /** + * + * + * @generated + */ + public void unsetMany() + { + boolean oldMany = many; + boolean oldMany_set_ = many_set_; + many = MANY_DEFAULT_; + many_set_ = false; + if (isNotifying()) + notify(ChangeKind.UNSET, INTERNAL_MANY, oldMany, MANY_DEFAULT_, oldMany_set_); + } + + /** + * + * + * @generated + */ + public boolean isSetMany() + { + return many_set_; + } + + /** + * + * + * @generated + */ + public boolean isContainment() + { + return containment; + } + /** + * + * + * @generated + */ + public void setContainment(boolean newContainment) + { + boolean oldContainment = containment; + containment = newContainment; + boolean oldContainment_set_ = containment_set_; + containment_set_ = true; + if (isNotifying()) + notify(ChangeKind.SET, INTERNAL_CONTAINMENT, oldContainment, containment, !oldContainment_set_); + } + + /** + * + * + * @generated + */ + public void unsetContainment() + { + boolean oldContainment = containment; + boolean oldContainment_set_ = containment_set_; + containment = CONTAINMENT_DEFAULT_; + containment_set_ = false; + if (isNotifying()) + notify(ChangeKind.UNSET, INTERNAL_CONTAINMENT, oldContainment, CONTAINMENT_DEFAULT_, oldContainment_set_); + } + + /** + * + * + * @generated + */ + public boolean isSetContainment() + { + return containment_set_; + } + + /** + * + * + * @generated + */ + public String getDefault_() + { + return default_; + } + /** + * + * + * @generated + */ + public void setDefault_(String newDefault) + { + String oldDefault = default_; + default_ = newDefault; + boolean oldDefault_set_ = default_set_; + default_set_ = true; + if (isNotifying()) + notify(ChangeKind.SET, INTERNAL_DEFAULT, oldDefault, default_, !oldDefault_set_); + } + + /** + * + * + * @generated + */ + public void unsetDefault() + { + String oldDefault = default_; + boolean oldDefault_set_ = default_set_; + default_ = DEFAULT_DEFAULT_; + default_set_ = false; + if (isNotifying()) + notify(ChangeKind.UNSET, INTERNAL_DEFAULT, oldDefault, DEFAULT_DEFAULT_, oldDefault_set_); + } + + /** + * + * + * @generated + */ + public boolean isSetDefault() + { + return default_set_; + } + + /** + * + * + * @generated + */ + public boolean isReadOnly() + { + return readOnly; + } + /** + * + * + * @generated + */ + public void setReadOnly(boolean newReadOnly) + { + boolean oldReadOnly = readOnly; + readOnly = newReadOnly; + boolean oldReadOnly_set_ = readOnly_set_; + readOnly_set_ = true; + if (isNotifying()) + notify(ChangeKind.SET, INTERNAL_READ_ONLY, oldReadOnly, readOnly, !oldReadOnly_set_); + } + + /** + * + * + * @generated + */ + public void unsetReadOnly() + { + boolean oldReadOnly = readOnly; + boolean oldReadOnly_set_ = readOnly_set_; + readOnly = READ_ONLY_DEFAULT_; + readOnly_set_ = false; + if (isNotifying()) + notify(ChangeKind.UNSET, INTERNAL_READ_ONLY, oldReadOnly, READ_ONLY_DEFAULT_, oldReadOnly_set_); + } + + /** + * + * + * @generated + */ + public boolean isSetReadOnly() + { + return readOnly_set_; + } + + /** + * + * + * @generated + */ + public Type getType_() + { + if (type != null && isProxy(type)) + { + Object oldType = type; + type = (Type)resolveProxy(oldType); + if (type != oldType) + { + if (isNotifying()) + notify(ChangeKind.RESOLVE, INTERNAL_TYPE, oldType, type); + } + } + return type; + } + /** + * + * + * @generated + */ + public Type basicGetType() + { + return type; + } + + /** + * + * + * @generated + */ + public void setType(Type newType) + { + Type oldType = type; + type = newType; + boolean oldType_set_ = type_set_; + type_set_ = true; + if (isNotifying()) + notify(ChangeKind.SET, INTERNAL_TYPE, oldType, type, !oldType_set_); + } + + /** + * + * + * @generated + */ + public void unsetType() + { + Type oldType = type; + boolean oldType_set_ = type_set_; + type = null; + type_set_ = false; + if (isNotifying()) + notify(ChangeKind.UNSET, INTERNAL_TYPE, oldType, null, oldType_set_); + } + + /** + * + * + * @generated + */ + public boolean isSetType() + { + return type_set_; + } + + /** + * + * + * @generated + */ + public Property getOpposite_() + { + if (opposite != null && isProxy(opposite)) + { + Object oldOpposite = opposite; + opposite = (Property)resolveProxy(oldOpposite); + if (opposite != oldOpposite) + { + if (isNotifying()) + notify(ChangeKind.RESOLVE, INTERNAL_OPPOSITE, oldOpposite, opposite); + } + } + return opposite; + } + /** + * + * + * @generated + */ + public Property basicGetOpposite() + { + return opposite; + } + + /** + * + * + * @generated + */ + public void setOpposite_(Property newOpposite) + { + Property oldOpposite = opposite; + opposite = newOpposite; + boolean oldOpposite_set_ = opposite_set_; + opposite_set_ = true; + if (isNotifying()) + notify(ChangeKind.SET, INTERNAL_OPPOSITE, oldOpposite, opposite, !oldOpposite_set_); + } + + /** + * + * + * @generated + */ + public void unsetOpposite() + { + Property oldOpposite = opposite; + boolean oldOpposite_set_ = opposite_set_; + opposite = null; + opposite_set_ = false; + if (isNotifying()) + notify(ChangeKind.UNSET, INTERNAL_OPPOSITE, oldOpposite, null, oldOpposite_set_); + } + + /** + * + * + * @generated + */ + public boolean isSetOpposite() + { + return opposite_set_; + } + + /** + * + * + * @generated + */ + public boolean isNullable() + { + return nullable; + } + /** + * + * + * @generated + */ + public void setNullable(boolean newNullable) + { + boolean oldNullable = nullable; + nullable = newNullable; + boolean oldNullable_set_ = nullable_set_; + nullable_set_ = true; + if (isNotifying()) + notify(ChangeKind.SET, INTERNAL_NULLABLE, oldNullable, nullable, !oldNullable_set_); + } + + /** + * + * + * @generated + */ + public void unsetNullable() + { + boolean oldNullable = nullable; + boolean oldNullable_set_ = nullable_set_; + nullable = NULLABLE_DEFAULT_; + nullable_set_ = false; + if (isNotifying()) + notify(ChangeKind.UNSET, INTERNAL_NULLABLE, oldNullable, NULLABLE_DEFAULT_, oldNullable_set_); + } + + /** + * + * + * @generated + */ + public boolean isSetNullable() + { + return nullable_set_; + } + + /** + * + * + * @generated + */ + public Sequence getAnyAttribute() + { + if (anyAttribute == null) + { + anyAttribute = createSequence(INTERNAL_ANY_ATTRIBUTE); + } + return anyAttribute; + } + /** + * + * + * @generated + */ + public ChangeContext inverseRemove(Object otherEnd, int propertyIndex, ChangeContext changeContext) + { + switch (propertyIndex) + { + case ANY: + return removeFromSequence(getAny(), otherEnd, changeContext); + case ANY_ATTRIBUTE: + return removeFromSequence(getAnyAttribute(), otherEnd, changeContext); + } + return super.inverseRemove(otherEnd, propertyIndex, changeContext); + } + + /** + * + * + * @generated + */ + public Object get(int propertyIndex, boolean resolve) + { + switch (propertyIndex) + { + case ALIAS_NAME: + return getAliasName(); + case ANY: + // 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 getAny(); + case NAME: + return getName(); + case MANY: + return isMany() ? Boolean.TRUE : Boolean.FALSE; + case CONTAINMENT: + return isContainment() ? Boolean.TRUE : Boolean.FALSE; + case DEFAULT: + return getDefault_(); + case READ_ONLY: + return isReadOnly() ? Boolean.TRUE : Boolean.FALSE; + case TYPE: + if (resolve) return getType_(); + return basicGetType(); + case OPPOSITE: + if (resolve) return getOpposite_(); + return basicGetOpposite(); + case NULLABLE: + return isNullable() ? Boolean.TRUE : Boolean.FALSE; + case ANY_ATTRIBUTE: + // 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 getAnyAttribute(); + } + return super.get(propertyIndex, resolve); + } + + /** + * + * + * @generated + */ + public void set(int propertyIndex, Object newValue) + { + switch (propertyIndex) + { + case ALIAS_NAME: + getAliasName().clear(); + getAliasName().addAll((Collection)newValue); + return; + case ANY: + setSequence(getAny(), newValue); + return; + case NAME: + setName((String)newValue); + return; + case MANY: + setMany(((Boolean)newValue).booleanValue()); + return; + case CONTAINMENT: + setContainment(((Boolean)newValue).booleanValue()); + return; + case DEFAULT: + setDefault_((String)newValue); + return; + case READ_ONLY: + setReadOnly(((Boolean)newValue).booleanValue()); + return; + case TYPE: + setType((Type)newValue); + return; + case OPPOSITE: + setOpposite_((Property)newValue); + return; + case NULLABLE: + setNullable(((Boolean)newValue).booleanValue()); + return; + case ANY_ATTRIBUTE: + setSequence(getAnyAttribute(), newValue); + return; + } + super.set(propertyIndex, newValue); + } + + /** + * + * + * @generated + */ + public void unset(int propertyIndex) + { + switch (propertyIndex) + { + case ALIAS_NAME: + getAliasName().clear(); + return; + case ANY: + unsetSequence(getAny()); + return; + case NAME: + unsetName(); + return; + case MANY: + unsetMany(); + return; + case CONTAINMENT: + unsetContainment(); + return; + case DEFAULT: + unsetDefault(); + return; + case READ_ONLY: + unsetReadOnly(); + return; + case TYPE: + unsetType(); + return; + case OPPOSITE: + unsetOpposite(); + return; + case NULLABLE: + unsetNullable(); + return; + case ANY_ATTRIBUTE: + unsetSequence(getAnyAttribute()); + return; + } + super.unset(propertyIndex); + } + + /** + * + * + * @generated + */ + public boolean isSet(int propertyIndex) + { + switch (propertyIndex) + { + case ALIAS_NAME: + return aliasName != null && !aliasName.isEmpty(); + case ANY: + return any != null && !isSequenceEmpty(getAny()); + case NAME: + return isSetName(); + case MANY: + return isSetMany(); + case CONTAINMENT: + return isSetContainment(); + case DEFAULT: + return isSetDefault(); + case READ_ONLY: + return isSetReadOnly(); + case TYPE: + return isSetType(); + case OPPOSITE: + return isSetOpposite(); + case NULLABLE: + return isSetNullable(); + case ANY_ATTRIBUTE: + return anyAttribute != null && !isSequenceEmpty(getAnyAttribute()); + } + return super.isSet(propertyIndex); + } + + /** + * + * + * @generated + */ + public String toString() + { + if (isProxy(this)) return super.toString(); + + StringBuffer result = new StringBuffer(super.toString()); + result.append(" (aliasName: "); + result.append(aliasName); + result.append(", any: "); + result.append(any); + result.append(", name: "); + if (name_set_) result.append(name); else result.append(""); + result.append(", many: "); + if (many_set_) result.append(many); else result.append(""); + result.append(", containment: "); + if (containment_set_) result.append(containment); else result.append(""); + result.append(", default: "); + if (default_set_) result.append(default_); else result.append(""); + result.append(", readOnly: "); + if (readOnly_set_) result.append(readOnly); else result.append(""); + result.append(", nullable: "); + if (nullable_set_) result.append(nullable); else result.append(""); + result.append(", anyAttribute: "); + result.append(anyAttribute); + result.append(')'); + return result.toString(); + } + +} //PropertyImpl diff --git a/sdo-java/trunk/impl/src/main/java/org/apache/tuscany/sdo/model/impl/TextTypeImpl.java b/sdo-java/trunk/impl/src/main/java/org/apache/tuscany/sdo/model/impl/TextTypeImpl.java new file mode 100644 index 0000000000..48a310b142 --- /dev/null +++ b/sdo-java/trunk/impl/src/main/java/org/apache/tuscany/sdo/model/impl/TextTypeImpl.java @@ -0,0 +1,206 @@ +/** + * + * Licensed to the Apache Software Foundation (ASF) under one + * or more contributor license agreements. See the NOTICE file + * distributed with this work for additional information + * regarding copyright ownership. The ASF licenses this file + * to you under the Apache License, Version 2.0 (the + * "License"); you may not use this file except in compliance + * with the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, + * software distributed under the License is distributed on an + * "AS IS" BASIS, WITHOUT 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.Type; + +import java.util.Collection; +import java.util.List; + +import org.apache.tuscany.sdo.impl.DataObjectBase; + +import org.apache.tuscany.sdo.model.ModelFactory; +import org.apache.tuscany.sdo.model.TextType; + +/** + * + * An implementation of the model object 'Text Type'. + * + *

+ * The following features are implemented: + *

    + *
  • {@link org.apache.tuscany.sdo.model.impl.TextTypeImpl#getText Text}
  • + *
+ *

+ * + * @generated + */ +public abstract class TextTypeImpl extends DataObjectBase implements TextType +{ + + public final static int TEXT = 0; + + public final static int SDO_PROPERTY_COUNT = 1; + + public final static int EXTENDED_PROPERTY_COUNT = 0; + + + /** + * The internal feature id for the 'Text' attribute list. + * + * + * @generated + * @ordered + */ + public final static int INTERNAL_TEXT = 0; + + /** + * The number of properties for this type. + * + * + * @generated + * @ordered + */ + public final static int INTERNAL_PROPERTY_COUNT = 1; + + protected int internalConvertIndex(int internalIndex) + { + switch (internalIndex) + { + case INTERNAL_TEXT: return TEXT; + } + return super.internalConvertIndex(internalIndex); + } + + + /** + * The cached value of the '{@link #getText() Text}' attribute list. + * + * + * @see #getText() + * @generated + * @ordered + */ + + protected List text = null; + + /** + * + * + * @generated + */ + public TextTypeImpl() + { + super(); + } + + /** + * + * + * @generated + */ + public Type getStaticType() + { + return ((ModelFactoryImpl)ModelFactory.INSTANCE).getTextType(); + } + + /** + * + * + * @generated + */ + public List getText() + { + if (text == null) + { + text = createPropertyList(ListKind.DATATYPE, String.class, TEXT, 0); + } + return text; + } + /** + * + * + * @generated + */ + public Object get(int propertyIndex, boolean resolve) + { + switch (propertyIndex) + { + case TEXT: + return getText(); + } + return super.get(propertyIndex, resolve); + } + + /** + * + * + * @generated + */ + public void set(int propertyIndex, Object newValue) + { + switch (propertyIndex) + { + case TEXT: + getText().clear(); + getText().addAll((Collection)newValue); + return; + } + super.set(propertyIndex, newValue); + } + + /** + * + * + * @generated + */ + public void unset(int propertyIndex) + { + switch (propertyIndex) + { + case TEXT: + getText().clear(); + return; + } + super.unset(propertyIndex); + } + + /** + * + * + * @generated + */ + public boolean isSet(int propertyIndex) + { + switch (propertyIndex) + { + case TEXT: + return text != null && !text.isEmpty(); + } + return super.isSet(propertyIndex); + } + + /** + * + * + * @generated + */ + public String toString() + { + if (isProxy(this)) return super.toString(); + + StringBuffer result = new StringBuffer(super.toString()); + result.append(" (text: "); + result.append(text); + result.append(')'); + return result.toString(); + } + +} //TextTypeImpl diff --git a/sdo-java/trunk/impl/src/main/java/org/apache/tuscany/sdo/model/impl/TypeImpl.java b/sdo-java/trunk/impl/src/main/java/org/apache/tuscany/sdo/model/impl/TypeImpl.java new file mode 100644 index 0000000000..aee2ecaaab --- /dev/null +++ b/sdo-java/trunk/impl/src/main/java/org/apache/tuscany/sdo/model/impl/TypeImpl.java @@ -0,0 +1,1068 @@ +/** + * + * Licensed to the Apache Software Foundation (ASF) under one + * or more contributor license agreements. See the NOTICE file + * distributed with this work for additional information + * regarding copyright ownership. The ASF licenses this file + * to you under the Apache License, Version 2.0 (the + * "License"); you may not use this file except in compliance + * with the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, + * software distributed under the License is distributed on an + * "AS IS" BASIS, WITHOUT 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 commonj.sdo.helper.TypeHelper; + +import java.util.Collection; +import java.util.List; + +import org.apache.tuscany.sdo.impl.DataObjectBase; + +import org.apache.tuscany.sdo.model.ModelFactory; +import org.apache.tuscany.sdo.model.Property; +import org.apache.tuscany.sdo.model.Type; +import org.eclipse.emf.ecore.EStructuralFeature; +import org.eclipse.emf.ecore.util.BasicExtendedMetaData; + +/** + * + * An implementation of the model object 'Type'. + * + *

+ * The following features are implemented: + *

    + *
  • {@link org.apache.tuscany.sdo.model.impl.TypeImpl#getBaseType Base Type}
  • + *
  • {@link org.apache.tuscany.sdo.model.impl.TypeImpl#getProperty Property}
  • + *
  • {@link org.apache.tuscany.sdo.model.impl.TypeImpl#getAliasName Alias Name}
  • + *
  • {@link org.apache.tuscany.sdo.model.impl.TypeImpl#getAny Any}
  • + *
  • {@link org.apache.tuscany.sdo.model.impl.TypeImpl#getName Name}
  • + *
  • {@link org.apache.tuscany.sdo.model.impl.TypeImpl#getUri Uri}
  • + *
  • {@link org.apache.tuscany.sdo.model.impl.TypeImpl#isDataType Data Type}
  • + *
  • {@link org.apache.tuscany.sdo.model.impl.TypeImpl#isOpen Open}
  • + *
  • {@link org.apache.tuscany.sdo.model.impl.TypeImpl#isSequenced Sequenced}
  • + *
  • {@link org.apache.tuscany.sdo.model.impl.TypeImpl#isAbstract Abstract}
  • + *
  • {@link org.apache.tuscany.sdo.model.impl.TypeImpl#getAnyAttribute Any Attribute}
  • + *
+ *

+ * + * @generated + */ +public class TypeImpl extends DataObjectBase implements Type +{ + + public final static int BASE_TYPE = 0; + + public final static int PROPERTY = 1; + + public final static int ALIAS_NAME = 2; + + public final static int ANY = -1; + + public final static int NAME = 3; + + public final static int URI = 4; + + public final static int DATA_TYPE = 5; + + public final static int OPEN = 6; + + public final static int SEQUENCED = 7; + + public final static int ABSTRACT = 8; + + public final static int ANY_ATTRIBUTE = -2; + + public final static int SDO_PROPERTY_COUNT = 9; + + public final static int EXTENDED_PROPERTY_COUNT = -2; + + + /** + * The internal feature id for the 'Base Type' reference list. + * + * + * @generated + * @ordered + */ + public final static int INTERNAL_BASE_TYPE = 0; + + /** + * The internal feature id for the 'Property' containment reference list. + * + * + * @generated + * @ordered + */ + public final static int INTERNAL_PROPERTY = 1; + + /** + * The internal feature id for the 'Alias Name' attribute list. + * + * + * @generated + * @ordered + */ + public final static int INTERNAL_ALIAS_NAME = 2; + + /** + * The internal feature id for the 'Any' attribute list. + * + * + * @generated + * @ordered + */ + public final static int INTERNAL_ANY = 3; + + /** + * The internal feature id for the 'Name' attribute. + * + * + * @generated + * @ordered + */ + public final static int INTERNAL_NAME = 4; + + /** + * The internal feature id for the 'Uri' attribute. + * + * + * @generated + * @ordered + */ + public final static int INTERNAL_URI = 5; + + /** + * The internal feature id for the 'Data Type' attribute. + * + * + * @generated + * @ordered + */ + public final static int INTERNAL_DATA_TYPE = 6; + + /** + * The internal feature id for the 'Open' attribute. + * + * + * @generated + * @ordered + */ + public final static int INTERNAL_OPEN = 7; + + /** + * The internal feature id for the 'Sequenced' attribute. + * + * + * @generated + * @ordered + */ + public final static int INTERNAL_SEQUENCED = 8; + + /** + * The internal feature id for the 'Abstract' attribute. + * + * + * @generated + * @ordered + */ + public final static int INTERNAL_ABSTRACT = 9; + + /** + * The internal feature id for the 'Any Attribute' attribute list. + * + * + * @generated + * @ordered + */ + public final static int INTERNAL_ANY_ATTRIBUTE = 10; + + /** + * The number of properties for this type. + * + * + * @generated + * @ordered + */ + public final static int INTERNAL_PROPERTY_COUNT = 11; + + protected int internalConvertIndex(int internalIndex) + { + switch (internalIndex) + { + case INTERNAL_BASE_TYPE: return BASE_TYPE; + case INTERNAL_PROPERTY: return PROPERTY; + case INTERNAL_ALIAS_NAME: return ALIAS_NAME; + case INTERNAL_ANY: return ANY; + case INTERNAL_NAME: return NAME; + case INTERNAL_URI: return URI; + case INTERNAL_DATA_TYPE: return DATA_TYPE; + case INTERNAL_OPEN: return OPEN; + case INTERNAL_SEQUENCED: return SEQUENCED; + case INTERNAL_ABSTRACT: return ABSTRACT; + case INTERNAL_ANY_ATTRIBUTE: return ANY_ATTRIBUTE; + } + return super.internalConvertIndex(internalIndex); + } + + + /** + * The cached value of the '{@link #getBaseType() Base Type}' reference list. + * + * + * @see #getBaseType() + * @generated + * @ordered + */ + + protected List baseType = null; + + /** + * The cached value of the '{@link #getProperty() Property}' containment reference list. + * + * + * @see #getProperty() + * @generated + * @ordered + */ + + protected List property = null; + + /** + * The cached value of the '{@link #getAliasName() Alias Name}' attribute list. + * + * + * @see #getAliasName() + * @generated + * @ordered + */ + + protected List aliasName = null; + + /** + * The cached value of the '{@link #getAny() Any}' attribute list. + * + * + * @see #getAny() + * @generated + * @ordered + */ + + protected Sequence any = null; + + /** + * The default value of the '{@link #getName() Name}' attribute. + * + * + * @see #getName() + * @generated + * @ordered + */ + protected static final String NAME_DEFAULT_ = null; + + /** + * The cached value of the '{@link #getName() Name}' attribute. + * + * + * @see #getName() + * @generated + * @ordered + */ + protected String name = NAME_DEFAULT_; + + /** + * This is true if the Name attribute has been set. + * + * + * @generated + * @ordered + */ + protected boolean name_set_ = false; + + /** + * The default value of the '{@link #getUri() Uri}' attribute. + * + * + * @see #getUri() + * @generated + * @ordered + */ + protected static final String URI_DEFAULT_ = null; + + /** + * The cached value of the '{@link #getUri() Uri}' attribute. + * + * + * @see #getUri() + * @generated + * @ordered + */ + protected String uri = URI_DEFAULT_; + + /** + * This is true if the Uri attribute has been set. + * + * + * @generated + * @ordered + */ + protected boolean uri_set_ = false; + + /** + * The default value of the '{@link #isDataType() Data Type}' attribute. + * + * + * @see #isDataType() + * @generated + * @ordered + */ + protected static final boolean DATA_TYPE_DEFAULT_ = false; + + /** + * The cached value of the '{@link #isDataType() Data Type}' attribute. + * + * + * @see #isDataType() + * @generated + * @ordered + */ + protected boolean dataType = DATA_TYPE_DEFAULT_; + + /** + * This is true if the Data Type attribute has been set. + * + * + * @generated + * @ordered + */ + protected boolean dataType_set_ = false; + + /** + * The default value of the '{@link #isOpen() Open}' attribute. + * + * + * @see #isOpen() + * @generated + * @ordered + */ + protected static final boolean OPEN_DEFAULT_ = false; + + /** + * The cached value of the '{@link #isOpen() Open}' attribute. + * + * + * @see #isOpen() + * @generated + * @ordered + */ + protected boolean open = OPEN_DEFAULT_; + + /** + * This is true if the Open attribute has been set. + * + * + * @generated + * @ordered + */ + protected boolean open_set_ = false; + + /** + * The default value of the '{@link #isSequenced() Sequenced}' attribute. + * + * + * @see #isSequenced() + * @generated + * @ordered + */ + protected static final boolean SEQUENCED_DEFAULT_ = false; + + /** + * The cached value of the '{@link #isSequenced() Sequenced}' attribute. + * + * + * @see #isSequenced() + * @generated + * @ordered + */ + protected boolean sequenced = SEQUENCED_DEFAULT_; + + /** + * This is true if the Sequenced attribute has been set. + * + * + * @generated + * @ordered + */ + protected boolean sequenced_set_ = false; + + /** + * The default value of the '{@link #isAbstract() Abstract}' attribute. + * + * + * @see #isAbstract() + * @generated + * @ordered + */ + protected static final boolean ABSTRACT_DEFAULT_ = false; + + /** + * The cached value of the '{@link #isAbstract() Abstract}' attribute. + * + * + * @see #isAbstract() + * @generated + * @ordered + */ + protected boolean abstract_ = ABSTRACT_DEFAULT_; + + /** + * This is true if the Abstract attribute has been set. + * + * + * @generated + * @ordered + */ + protected boolean abstract_set_ = false; + + /** + * The cached value of the '{@link #getAnyAttribute() Any Attribute}' attribute list. + * + * + * @see #getAnyAttribute() + * @generated + * @ordered + */ + + protected Sequence anyAttribute = null; + + /** + * + * + * @generated + */ + public TypeImpl() + { + super(); + } + + /** + * + * + * @generated + */ + public commonj.sdo.Type getStaticType() + { + return ((ModelFactoryImpl)ModelFactory.INSTANCE).getType(); + } + + /** + * + * + * @generated + */ + public List getBaseType() + { + if (baseType == null) + { + baseType = createPropertyList(ListKind.NONCONTAINMENT_RESOLVING, Type.class, BASE_TYPE, 0); + } + return baseType; + } + /** + * + * + * @generated + */ + public List getProperty() + { + if (property == null) + { + property = createPropertyList(ListKind.CONTAINMENT, Property.class, PROPERTY, 0); + } + return property; + } + /** + * + * + * @generated + */ + public List getAliasName() + { + if (aliasName == null) + { + aliasName = createPropertyList(ListKind.DATATYPE, String.class, ALIAS_NAME, 0); + } + return aliasName; + } + /** + * + * + * @generated + */ + public Sequence getAny() + { + if (any == null) + { + any = createSequence(INTERNAL_ANY); + } + return any; + } + /** + * + * + * @generated + */ + public String getName() + { + return name; + } + /** + * + * + * @generated + */ + public void setName(String newName) + { + String oldName = name; + name = newName; + boolean oldName_set_ = name_set_; + name_set_ = true; + if (isNotifying()) + notify(ChangeKind.SET, INTERNAL_NAME, oldName, name, !oldName_set_); + } + + /** + * + * + * @generated + */ + public void unsetName() + { + String oldName = name; + boolean oldName_set_ = name_set_; + name = NAME_DEFAULT_; + name_set_ = false; + if (isNotifying()) + notify(ChangeKind.UNSET, INTERNAL_NAME, oldName, NAME_DEFAULT_, oldName_set_); + } + + /** + * + * + * @generated + */ + public boolean isSetName() + { + return name_set_; + } + + /** + * + * + * @generated + */ + public String getUri() + { + return uri; + } + /** + * + * + * @generated + */ + public void setUri(String newUri) + { + String oldUri = uri; + uri = newUri; + boolean oldUri_set_ = uri_set_; + uri_set_ = true; + if (isNotifying()) + notify(ChangeKind.SET, INTERNAL_URI, oldUri, uri, !oldUri_set_); + } + + /** + * + * + * @generated + */ + public void unsetUri() + { + String oldUri = uri; + boolean oldUri_set_ = uri_set_; + uri = URI_DEFAULT_; + uri_set_ = false; + if (isNotifying()) + notify(ChangeKind.UNSET, INTERNAL_URI, oldUri, URI_DEFAULT_, oldUri_set_); + } + + /** + * + * + * @generated + */ + public boolean isSetUri() + { + return uri_set_; + } + + /** + * + * + * @generated + */ + public boolean isDataType() + { + return dataType; + } + /** + * + * + * @generated + */ + public void setDataType(boolean newDataType) + { + boolean oldDataType = dataType; + dataType = newDataType; + boolean oldDataType_set_ = dataType_set_; + dataType_set_ = true; + if (isNotifying()) + notify(ChangeKind.SET, INTERNAL_DATA_TYPE, oldDataType, dataType, !oldDataType_set_); + } + + /** + * + * + * @generated + */ + public void unsetDataType() + { + boolean oldDataType = dataType; + boolean oldDataType_set_ = dataType_set_; + dataType = DATA_TYPE_DEFAULT_; + dataType_set_ = false; + if (isNotifying()) + notify(ChangeKind.UNSET, INTERNAL_DATA_TYPE, oldDataType, DATA_TYPE_DEFAULT_, oldDataType_set_); + } + + /** + * + * + * @generated + */ + public boolean isSetDataType() + { + return dataType_set_; + } + + /** + * + * + * @generated + */ + public boolean isOpen() + { + return open; + } + /** + * + * + * @generated + */ + public void setOpen(boolean newOpen) + { + boolean oldOpen = open; + open = newOpen; + boolean oldOpen_set_ = open_set_; + open_set_ = true; + if (isNotifying()) + notify(ChangeKind.SET, INTERNAL_OPEN, oldOpen, open, !oldOpen_set_); + } + + /** + * + * + * @generated + */ + public void unsetOpen() + { + boolean oldOpen = open; + boolean oldOpen_set_ = open_set_; + open = OPEN_DEFAULT_; + open_set_ = false; + if (isNotifying()) + notify(ChangeKind.UNSET, INTERNAL_OPEN, oldOpen, OPEN_DEFAULT_, oldOpen_set_); + } + + /** + * + * + * @generated + */ + public boolean isSetOpen() + { + return open_set_; + } + + /** + * + * + * @generated + */ + public boolean isSequenced() + { + return sequenced; + } + /** + * + * + * @generated + */ + public void setSequenced(boolean newSequenced) + { + boolean oldSequenced = sequenced; + sequenced = newSequenced; + boolean oldSequenced_set_ = sequenced_set_; + sequenced_set_ = true; + if (isNotifying()) + notify(ChangeKind.SET, INTERNAL_SEQUENCED, oldSequenced, sequenced, !oldSequenced_set_); + } + + /** + * + * + * @generated + */ + public void unsetSequenced() + { + boolean oldSequenced = sequenced; + boolean oldSequenced_set_ = sequenced_set_; + sequenced = SEQUENCED_DEFAULT_; + sequenced_set_ = false; + if (isNotifying()) + notify(ChangeKind.UNSET, INTERNAL_SEQUENCED, oldSequenced, SEQUENCED_DEFAULT_, oldSequenced_set_); + } + + /** + * + * + * @generated + */ + public boolean isSetSequenced() + { + return sequenced_set_; + } + + /** + * + * + * @generated + */ + public boolean isAbstract() + { + return abstract_; + } + /** + * + * + * @generated + */ + public void setAbstract(boolean newAbstract) + { + boolean oldAbstract = abstract_; + abstract_ = newAbstract; + boolean oldAbstract_set_ = abstract_set_; + abstract_set_ = true; + if (isNotifying()) + notify(ChangeKind.SET, INTERNAL_ABSTRACT, oldAbstract, abstract_, !oldAbstract_set_); + } + + /** + * + * + * @generated + */ + public void unsetAbstract() + { + boolean oldAbstract = abstract_; + boolean oldAbstract_set_ = abstract_set_; + abstract_ = ABSTRACT_DEFAULT_; + abstract_set_ = false; + if (isNotifying()) + notify(ChangeKind.UNSET, INTERNAL_ABSTRACT, oldAbstract, ABSTRACT_DEFAULT_, oldAbstract_set_); + } + + /** + * + * + * @generated + */ + public boolean isSetAbstract() + { + return abstract_set_; + } + + /** + * + * + * @generated + */ + public Sequence getAnyAttribute() + { + if (anyAttribute == null) + { + anyAttribute = createSequence(INTERNAL_ANY_ATTRIBUTE); + } + return anyAttribute; + } + /** + * + * + * @generated + */ + public ChangeContext inverseRemove(Object otherEnd, int propertyIndex, ChangeContext changeContext) + { + switch (propertyIndex) + { + case PROPERTY: + return removeFromList(getProperty(), otherEnd, changeContext); + case ANY: + return removeFromSequence(getAny(), otherEnd, changeContext); + case ANY_ATTRIBUTE: + return removeFromSequence(getAnyAttribute(), otherEnd, changeContext); + } + return super.inverseRemove(otherEnd, propertyIndex, changeContext); + } + + /** + * + * + * @generated + */ + public Object get(int propertyIndex, boolean resolve) + { + switch (propertyIndex) + { + case BASE_TYPE: + return getBaseType(); + case PROPERTY: + return getProperty(); + case ALIAS_NAME: + return getAliasName(); + case ANY: + // 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 getAny(); + case NAME: + return getName(); + case URI: + return getUri(); + case DATA_TYPE: + return isDataType() ? Boolean.TRUE : Boolean.FALSE; + case OPEN: + return isOpen() ? Boolean.TRUE : Boolean.FALSE; + case SEQUENCED: + return isSequenced() ? Boolean.TRUE : Boolean.FALSE; + case ABSTRACT: + return isAbstract() ? Boolean.TRUE : Boolean.FALSE; + case ANY_ATTRIBUTE: + // 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 getAnyAttribute(); + } + return super.get(propertyIndex, resolve); + } + + /** + * + * + * @generated + */ + public void set(int propertyIndex, Object newValue) + { + switch (propertyIndex) + { + case BASE_TYPE: + getBaseType().clear(); + getBaseType().addAll((Collection)newValue); + return; + case PROPERTY: + getProperty().clear(); + getProperty().addAll((Collection)newValue); + return; + case ALIAS_NAME: + getAliasName().clear(); + getAliasName().addAll((Collection)newValue); + return; + case ANY: + setSequence(getAny(), newValue); + return; + case NAME: + setName((String)newValue); + return; + case URI: + setUri((String)newValue); + return; + case DATA_TYPE: + setDataType(((Boolean)newValue).booleanValue()); + return; + case OPEN: + setOpen(((Boolean)newValue).booleanValue()); + return; + case SEQUENCED: + setSequenced(((Boolean)newValue).booleanValue()); + return; + case ABSTRACT: + setAbstract(((Boolean)newValue).booleanValue()); + return; + case ANY_ATTRIBUTE: + setSequence(getAnyAttribute(), newValue); + return; + } + super.set(propertyIndex, newValue); + } + + /** + * + * + * @generated + */ + public void unset(int propertyIndex) + { + switch (propertyIndex) + { + case BASE_TYPE: + getBaseType().clear(); + return; + case PROPERTY: + getProperty().clear(); + return; + case ALIAS_NAME: + getAliasName().clear(); + return; + case ANY: + unsetSequence(getAny()); + return; + case NAME: + unsetName(); + return; + case URI: + unsetUri(); + return; + case DATA_TYPE: + unsetDataType(); + return; + case OPEN: + unsetOpen(); + return; + case SEQUENCED: + unsetSequenced(); + return; + case ABSTRACT: + unsetAbstract(); + return; + case ANY_ATTRIBUTE: + unsetSequence(getAnyAttribute()); + return; + } + super.unset(propertyIndex); + } + + /** + * + * + * @generated + */ + public boolean isSet(int propertyIndex) + { + switch (propertyIndex) + { + case BASE_TYPE: + return baseType != null && !baseType.isEmpty(); + case PROPERTY: + return property != null && !property.isEmpty(); + case ALIAS_NAME: + return aliasName != null && !aliasName.isEmpty(); + case ANY: + return any != null && !isSequenceEmpty(getAny()); + case NAME: + return isSetName(); + case URI: + return isSetUri(); + case DATA_TYPE: + return isSetDataType(); + case OPEN: + return isSetOpen(); + case SEQUENCED: + return isSetSequenced(); + case ABSTRACT: + return isSetAbstract(); + case ANY_ATTRIBUTE: + return anyAttribute != null && !isSequenceEmpty(getAnyAttribute()); + } + return super.isSet(propertyIndex); + } + + /** + * + * + * @generated + */ + public String toString() + { + if (isProxy(this)) return super.toString(); + + StringBuffer result = new StringBuffer(super.toString()); + result.append(" (aliasName: "); + result.append(aliasName); + result.append(", any: "); + result.append(any); + result.append(", name: "); + if (name_set_) result.append(name); else result.append(""); + result.append(", uri: "); + if (uri_set_) result.append(uri); else result.append(""); + result.append(", dataType: "); + if (dataType_set_) result.append(dataType); else result.append(""); + result.append(", open: "); + if (open_set_) result.append(open); else result.append(""); + result.append(", sequenced: "); + if (sequenced_set_) result.append(sequenced); else result.append(""); + result.append(", abstract: "); + if (abstract_set_) result.append(abstract_); else result.append(""); + result.append(", anyAttribute: "); + result.append(anyAttribute); + result.append(')'); + return result.toString(); + } + +EStructuralFeature javaClassFeature = null; + +public String getInstanceClassName() + { + if (javaClassFeature == null) + { + //FB TODO figure out what helper to use + javaClassFeature = (EStructuralFeature)TypeHelper.INSTANCE.getOpenContentProperty("commonj.sdo/java", "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/sdo-java/trunk/impl/src/main/java/org/apache/tuscany/sdo/model/impl/TypesImpl.java b/sdo-java/trunk/impl/src/main/java/org/apache/tuscany/sdo/model/impl/TypesImpl.java new file mode 100644 index 0000000000..80945b289a --- /dev/null +++ b/sdo-java/trunk/impl/src/main/java/org/apache/tuscany/sdo/model/impl/TypesImpl.java @@ -0,0 +1,210 @@ +/** + * + * Licensed to the Apache Software Foundation (ASF) under one + * or more contributor license agreements. See the NOTICE file + * distributed with this work for additional information + * regarding copyright ownership. The ASF licenses this file + * to you under the Apache License, Version 2.0 (the + * "License"); you may not use this file except in compliance + * with the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, + * software distributed under the License is distributed on an + * "AS IS" BASIS, WITHOUT 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.Type; + +import java.util.Collection; +import java.util.List; + +import org.apache.tuscany.sdo.impl.DataObjectBase; + +import org.apache.tuscany.sdo.model.ModelFactory; +import org.apache.tuscany.sdo.model.Types; + +/** + * + * An implementation of the model object 'Types'. + * + *

+ * The following features are implemented: + *

    + *
  • {@link org.apache.tuscany.sdo.model.impl.TypesImpl#getType_ Type}
  • + *
+ *

+ * + * @generated + */ +public class TypesImpl extends DataObjectBase implements Types +{ + + public final static int TYPE = 0; + + public final static int SDO_PROPERTY_COUNT = 1; + + public final static int EXTENDED_PROPERTY_COUNT = 0; + + + /** + * The internal feature id for the 'Type' containment reference list. + * + * + * @generated + * @ordered + */ + public final static int INTERNAL_TYPE = 0; + + /** + * The number of properties for this type. + * + * + * @generated + * @ordered + */ + public final static int INTERNAL_PROPERTY_COUNT = 1; + + protected int internalConvertIndex(int internalIndex) + { + switch (internalIndex) + { + case INTERNAL_TYPE: return TYPE; + } + return super.internalConvertIndex(internalIndex); + } + + + /** + * The cached value of the '{@link #getType_() Type}' containment reference list. + * + * + * @see #getType_() + * @generated + * @ordered + */ + + protected List type = null; + + /** + * + * + * @generated + */ + public TypesImpl() + { + super(); + } + + /** + * + * + * @generated + */ + public Type getStaticType() + { + return ((ModelFactoryImpl)ModelFactory.INSTANCE).getTypes(); + } + + /** + * + * + * @generated + */ + public List getType_() + { + if (type == null) + { + type = createPropertyList(ListKind.CONTAINMENT, org.apache.tuscany.sdo.model.Type.class, TYPE, 0); + } + return type; + } + /** + * + * + * @generated + */ + public ChangeContext inverseRemove(Object otherEnd, int propertyIndex, ChangeContext changeContext) + { + switch (propertyIndex) + { + case TYPE: + return removeFromList(getType_(), otherEnd, changeContext); + } + return super.inverseRemove(otherEnd, propertyIndex, changeContext); + } + + /** + * + * + * @generated + */ + public Object get(int propertyIndex, boolean resolve) + { + switch (propertyIndex) + { + case TYPE: + return getType_(); + } + return super.get(propertyIndex, resolve); + } + + /** + * + * + * @generated + */ + public void set(int propertyIndex, Object newValue) + { + switch (propertyIndex) + { + case TYPE: + getType_().clear(); + getType_().addAll((Collection)newValue); + return; + } + super.set(propertyIndex, newValue); + } + + /** + * + * + * @generated + */ + public void unset(int propertyIndex) + { + switch (propertyIndex) + { + case TYPE: + getType_().clear(); + return; + } + super.unset(propertyIndex); + } + + /** + * + * + * @generated + */ + public boolean isSet(int propertyIndex) + { + switch (propertyIndex) + { + case TYPE: + return type != null && !type.isEmpty(); + } + return super.isSet(propertyIndex); + } + + public List getTypeList() + { + return getType_(); + } + +} //TypesImpl diff --git a/sdo-java/trunk/impl/src/main/java/org/apache/tuscany/sdo/model/impl/XSDTypeImpl.java b/sdo-java/trunk/impl/src/main/java/org/apache/tuscany/sdo/model/impl/XSDTypeImpl.java new file mode 100644 index 0000000000..5d0777dd1c --- /dev/null +++ b/sdo-java/trunk/impl/src/main/java/org/apache/tuscany/sdo/model/impl/XSDTypeImpl.java @@ -0,0 +1,220 @@ +/** + * + * Licensed to the Apache Software Foundation (ASF) under one + * or more contributor license agreements. See the NOTICE file + * distributed with this work for additional information + * regarding copyright ownership. The ASF licenses this file + * to you under the Apache License, Version 2.0 (the + * "License"); you may not use this file except in compliance + * with the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, + * software distributed under the License is distributed on an + * "AS IS" BASIS, WITHOUT 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 commonj.sdo.Type; + +import org.apache.tuscany.sdo.impl.DataObjectBase; + +import org.apache.tuscany.sdo.model.ModelFactory; +import org.apache.tuscany.sdo.model.XSDType; + +/** + * + * An implementation of the model object 'XSD Type'. + * + *

+ * The following features are implemented: + *

    + *
  • {@link org.apache.tuscany.sdo.model.impl.XSDTypeImpl#getAny Any}
  • + *
+ *

+ * + * @generated + */ +public class XSDTypeImpl extends DataObjectBase implements XSDType +{ + + public final static int ANY = -1; + + public final static int SDO_PROPERTY_COUNT = 0; + + public final static int EXTENDED_PROPERTY_COUNT = -1; + + + /** + * The internal feature id for the 'Any' attribute list. + * + * + * @generated + * @ordered + */ + public final static int INTERNAL_ANY = 0; + + /** + * The number of properties for this type. + * + * + * @generated + * @ordered + */ + public final static int INTERNAL_PROPERTY_COUNT = 1; + + protected int internalConvertIndex(int internalIndex) + { + switch (internalIndex) + { + case INTERNAL_ANY: return ANY; + } + return super.internalConvertIndex(internalIndex); + } + + + /** + * The cached value of the '{@link #getAny() Any}' attribute list. + * + * + * @see #getAny() + * @generated + * @ordered + */ + + protected Sequence any = null; + + /** + * + * + * @generated + */ + public XSDTypeImpl() + { + super(); + } + + /** + * + * + * @generated + */ + public Type getStaticType() + { + return ((ModelFactoryImpl)ModelFactory.INSTANCE).getXSDType(); + } + + /** + * + * + * @generated + */ + public Sequence getAny() + { + if (any == null) + { + any = createSequence(INTERNAL_ANY); + } + return any; + } + /** + * + * + * @generated + */ + public ChangeContext inverseRemove(Object otherEnd, int propertyIndex, ChangeContext changeContext) + { + switch (propertyIndex) + { + case ANY: + return removeFromSequence(getAny(), otherEnd, changeContext); + } + return super.inverseRemove(otherEnd, propertyIndex, changeContext); + } + + /** + * + * + * @generated + */ + public Object get(int propertyIndex, boolean resolve) + { + switch (propertyIndex) + { + case ANY: + // 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 getAny(); + } + return super.get(propertyIndex, resolve); + } + + /** + * + * + * @generated + */ + public void set(int propertyIndex, Object newValue) + { + switch (propertyIndex) + { + case ANY: + setSequence(getAny(), newValue); + return; + } + super.set(propertyIndex, newValue); + } + + /** + * + * + * @generated + */ + public void unset(int propertyIndex) + { + switch (propertyIndex) + { + case ANY: + unsetSequence(getAny()); + return; + } + super.unset(propertyIndex); + } + + /** + * + * + * @generated + */ + public boolean isSet(int propertyIndex) + { + switch (propertyIndex) + { + case ANY: + return any != null && !isSequenceEmpty(getAny()); + } + return super.isSet(propertyIndex); + } + + /** + * + * + * @generated + */ + public String toString() + { + if (isProxy(this)) return super.toString(); + + StringBuffer result = new StringBuffer(super.toString()); + result.append(" (any: "); + result.append(any); + result.append(')'); + return result.toString(); + } + +} //XSDTypeImpl diff --git a/sdo-java/trunk/impl/src/main/java/org/apache/tuscany/sdo/model/internal/InternalFactory.java b/sdo-java/trunk/impl/src/main/java/org/apache/tuscany/sdo/model/internal/InternalFactory.java new file mode 100644 index 0000000000..061d082b1d --- /dev/null +++ b/sdo-java/trunk/impl/src/main/java/org/apache/tuscany/sdo/model/internal/InternalFactory.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.model.internal; + +import commonj.sdo.helper.HelperContext; + + +/** + * + * The Factory for the model. + * It provides a create method for each non-abstract class of the model. + * + * @generated + */ +public interface InternalFactory +{ + + /** + * The singleton instance of the factory. + * + * + * @generated + */ + InternalFactory INSTANCE = org.apache.tuscany.sdo.model.internal.impl.InternalFactoryImpl.init(); + + /** + * Registers the types supported by this Factory within the supplied scope.argument + * + * + * @param scope an instance of HelperContext used to manage the scoping of types. + * @generated + */ + public void register(HelperContext scope); + +} //InternalFactory diff --git a/sdo-java/trunk/impl/src/main/java/org/apache/tuscany/sdo/model/internal/impl/InternalFactoryImpl.java b/sdo-java/trunk/impl/src/main/java/org/apache/tuscany/sdo/model/internal/impl/InternalFactoryImpl.java new file mode 100644 index 0000000000..06d002ea74 --- /dev/null +++ b/sdo-java/trunk/impl/src/main/java/org/apache/tuscany/sdo/model/internal/impl/InternalFactoryImpl.java @@ -0,0 +1,296 @@ +/** + * + * Licensed to the Apache Software Foundation (ASF) under one + * or more contributor license agreements. See the NOTICE file + * distributed with this work for additional information + * regarding copyright ownership. The ASF licenses this file + * to you under the Apache License, Version 2.0 (the + * "License"); you may not use this file except in compliance + * with the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, + * software distributed under the License is distributed on an + * "AS IS" BASIS, WITHOUT 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.internal.impl; + +import commonj.sdo.helper.HelperContext; +import org.apache.tuscany.sdo.helper.TypeHelperImpl; + +import commonj.sdo.DataObject; +import commonj.sdo.Property; +import commonj.sdo.Type; + +import org.apache.tuscany.sdo.impl.FactoryBase; + +import org.apache.tuscany.sdo.model.internal.*; +import org.eclipse.emf.ecore.xml.type.XMLTypeFactory; + +/** + * + * An implementation of the commonj.sdo.internal model factory. + * This model is generated from sdoInternal.xsd, in the tuscany-sdo-impl project. + * Until the SDO code generator supports regen/merge, follow the following steps to regenerate this model: + * 1. Regenerate the model into a temporary directory: + * XSD2JavaGenerator -generateBuiltIn http://www.apache.org/tuscany/commonj.sdo.internal -targetDirectory -javaPackage org.apache.tuscany.sdo.model.internal /src/main/resources/xml/sdoInternal.xsd + * 2. Delete all the createXXXFromString() and convertXXXToString() methods in the newly generated InternalFactoryImpl and + * replace them with the ones from this file (resolve any missing imports). + * 3. Comment out all simple depedencies (SDOUtil.registerStaticTypes calls) in the init() method. + * 4. Make sure the top of each generated file contains the ASF License. + * 5. Move this JavaDoc comment into the newly generated ModelFactoryImpl class. + * + * @generated + */ +public class InternalFactoryImpl extends FactoryBase implements InternalFactory +{ + + /** + * The package namespace URI. + * + * + * @generated + */ + public static final String NAMESPACE_URI = "http://www.apache.org/tuscany/commonj.sdo.internal"; + + /** + * The package namespace name. + * + * + * @generated + */ + public static final String NAMESPACE_PREFIX = "internal"; + + /** + * The version of the generator pattern used to generate this class. + * + * + * @generated + */ + public static final String PATTERN_VERSION = "1.2"; + + public static final int BASE64_BYTES = 1; + public static final int QNAME = 2; + + /** + * Creates an instance of the factory. + * + * + * @generated + */ + public InternalFactoryImpl() + { + super(NAMESPACE_URI, NAMESPACE_PREFIX, "org.apache.tuscany.sdo.model.internal"); + } + + /** + * Registers the Factory instance so that it is available within the supplied scope. + * @argument scope a HelperContext instance that will make the types supported by this Factory available. + * + * + * @generated + */ + public void register(HelperContext scope) + { + if(scope == null) { + throw new IllegalArgumentException("Scope can not be null"); + } + + //Register dependent packages with provided scope + + // Initialize this package + TypeHelperImpl th = (TypeHelperImpl)scope.getTypeHelper(); + th.getExtendedMetaData().putPackage(NAMESPACE_URI, this); + } + + /** + * + * + * @generated + */ + public DataObject create(int typeNumber) + { + switch (typeNumber) + { + default: + return super.create(typeNumber); + } + } + + /** + * + * + * @generated + */ + public Object createFromString(int typeNumber, String initialValue) + { + switch (typeNumber) + { + case BASE64_BYTES: + return createBase64BytesFromString(initialValue); + case QNAME: + return createQNameFromString(initialValue); + default: + throw new IllegalArgumentException("The type number '" + typeNumber + "' is not a valid datatype"); + } + } + + /** + * + * + * @generated + */ + public String convertToString(int typeNumber, Object instanceValue) + { + switch (typeNumber) + { + case BASE64_BYTES: + return convertBase64BytesToString(instanceValue); + case QNAME: + return convertQNameToString(instanceValue); + default: + throw new IllegalArgumentException("The type number '" + typeNumber + "' is not a valid datatype"); + } + } + + // Following creates and initializes SDO metadata for the supported types. + protected Type base64BytesType = null; + + public Type getBase64Bytes() + { + return base64BytesType; + } + + protected Type qNameType = null; + + public Type getQName() + { + return qNameType; + } + + + private static InternalFactoryImpl instance = null; + public static InternalFactoryImpl init() + { + if (instance != null ) return instance; + instance = new InternalFactoryImpl(); + + // Initialize dependent packages + + // Create package meta-data objects + instance.createMetaData(); + + // Initialize created meta-data + instance.initializeMetaData(); + + // Mark meta-data to indicate it can't be changed + //theInternalFactoryImpl.freeze(); //FB do we need to freeze / should we freeze ???? + + return instance; + } + + private boolean isCreated = false; + + public void createMetaData() + { + if (isCreated) return; + isCreated = true; + + // Create data types + base64BytesType = createType(true, BASE64_BYTES ); + qNameType = createType(true, QNAME ); + } + + private boolean isInitialized = false; + + public void initializeMetaData() + { + if (isInitialized) return; + isInitialized = true; + Property property = null; + + // Add supertypes to types + + // Initialize types and properties + // Initialize data types + initializeType(base64BytesType, byte[].class, "Base64Bytes", true, false); + setInstanceProperty (base64BytesType, "commonj.sdo/java", "instanceClass", "byte[]"); + + initializeType(qNameType, String.class, "QName", true, false); + setInstanceProperty (qNameType, "commonj.sdo/java", "instanceClass", "java.lang.String"); + + createXSDMetaData(); + } + + protected void createXSDMetaData() + { + super.initXSD(); + + Property property = null; + + + addXSDMapping + (base64BytesType, + new String[] + { + "name", "Base64Bytes" + }); + + addXSDMapping + (qNameType, + new String[] + { + "name", "QName" + }); + + } + + /** + * + * + * @generated NOT + */ + public byte[] createBase64BytesFromString(String initialValue) + { + return XMLTypeFactory.eINSTANCE.createBase64Binary(initialValue); + } + + /** + * + * + * @generated NOT + */ + public String convertBase64BytesToString(Object instanceValue) + { + if (instanceValue instanceof byte[]) { + return XMLTypeFactory.eINSTANCE.convertBase64Binary((byte[])instanceValue); + } else { + return XMLTypeFactory.eINSTANCE.convertBase64Binary(instanceValue.toString().getBytes()); + } + } + + /** + * + * + * @generated + */ + public String createQNameFromString(String initialValue) + { + return (String)super.createFromString(QNAME, initialValue); + } + + /** + * + * + * @generated + */ + public String convertQNameToString(Object instanceValue) + { + return super.convertToString(QNAME, instanceValue); + } + +} //InternalFactoryImpl diff --git a/sdo-java/trunk/impl/src/main/java/org/apache/tuscany/sdo/model/java/JavaFactory.java b/sdo-java/trunk/impl/src/main/java/org/apache/tuscany/sdo/model/java/JavaFactory.java new file mode 100644 index 0000000000..50be023db5 --- /dev/null +++ b/sdo-java/trunk/impl/src/main/java/org/apache/tuscany/sdo/model/java/JavaFactory.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.model.java; + +import commonj.sdo.helper.HelperContext; + + +/** + * + * The Factory for the model. + * It provides a create method for each non-abstract class of the model. + * + * @generated + */ +public interface JavaFactory +{ + + /** + * The singleton instance of the factory. + * + * + * @generated + */ + JavaFactory INSTANCE = org.apache.tuscany.sdo.model.java.impl.JavaFactoryImpl.init(); + + /** + * Returns a new object of class 'Info'. + * + * + * @return a new object of class 'Info'. + * @generated + */ + JavaInfo createJavaInfo(); + + /** + * Registers the types supported by this Factory within the supplied scope.argument + * + * + * @param scope an instance of HelperContext used to manage the scoping of types. + * @generated + */ + public void register(HelperContext scope); + +} //JavaFactory diff --git a/sdo-java/trunk/impl/src/main/java/org/apache/tuscany/sdo/model/java/JavaInfo.java b/sdo-java/trunk/impl/src/main/java/org/apache/tuscany/sdo/model/java/JavaInfo.java new file mode 100644 index 0000000000..b5eabb0f4a --- /dev/null +++ b/sdo-java/trunk/impl/src/main/java/org/apache/tuscany/sdo/model/java/JavaInfo.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.model.java; + +import java.io.Serializable; + +/** + * + * A representation of the model object 'Info'. + * + * + *

+ * The following features are supported: + *

    + *
  • {@link org.apache.tuscany.sdo.model.java.JavaInfo#getJavaClass Java Class}
  • + *
+ *

+ * + * @extends Serializable + * @generated + */ +public interface JavaInfo extends Serializable +{ + /** + * Returns the value of the 'Java Class' attribute. + * + *

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

+ * + * @return the value of the 'Java Class' attribute. + * @see #isSetJavaClass() + * @see #unsetJavaClass() + * @see #setJavaClass(String) + * @generated + */ + String getJavaClass(); + + /** + * Sets the value of the '{@link org.apache.tuscany.sdo.model.java.JavaInfo#getJavaClass Java Class}' attribute. + * + * + * @param value the new value of the 'Java Class' attribute. + * @see #isSetJavaClass() + * @see #unsetJavaClass() + * @see #getJavaClass() + * @generated + */ + void setJavaClass(String value); + + /** + * Unsets the value of the '{@link org.apache.tuscany.sdo.model.java.JavaInfo#getJavaClass Java Class}' attribute. + * + * + * @see #isSetJavaClass() + * @see #getJavaClass() + * @see #setJavaClass(String) + * @generated + */ + void unsetJavaClass(); + + /** + * Returns whether the value of the '{@link org.apache.tuscany.sdo.model.java.JavaInfo#getJavaClass Java Class}' attribute is set. + * + * + * @return whether the value of the 'Java Class' attribute is set. + * @see #unsetJavaClass() + * @see #getJavaClass() + * @see #setJavaClass(String) + * @generated + */ + boolean isSetJavaClass(); + +} // JavaInfo diff --git a/sdo-java/trunk/impl/src/main/java/org/apache/tuscany/sdo/model/java/impl/JavaFactoryImpl.java b/sdo-java/trunk/impl/src/main/java/org/apache/tuscany/sdo/model/java/impl/JavaFactoryImpl.java new file mode 100644 index 0000000000..515311f7ff --- /dev/null +++ b/sdo-java/trunk/impl/src/main/java/org/apache/tuscany/sdo/model/java/impl/JavaFactoryImpl.java @@ -0,0 +1,659 @@ +/** + * + * Licensed to the Apache Software Foundation (ASF) under one + * or more contributor license agreements. See the NOTICE file + * distributed with this work for additional information + * regarding copyright ownership. The ASF licenses this file + * to you under the Apache License, Version 2.0 (the + * "License"); you may not use this file except in compliance + * with the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, + * software distributed under the License is distributed on an + * "AS IS" BASIS, WITHOUT 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 commonj.sdo.helper.HelperContext; +import org.apache.tuscany.sdo.helper.TypeHelperImpl; + +import commonj.sdo.DataObject; +import commonj.sdo.Property; +import commonj.sdo.Type; + +import org.apache.tuscany.sdo.impl.FactoryBase; + +import org.apache.tuscany.sdo.model.ModelFactory; + +import org.apache.tuscany.sdo.model.impl.ModelFactoryImpl; + +import org.apache.tuscany.sdo.model.java.*; +import org.eclipse.emf.ecore.xml.type.XMLTypeFactory; +import org.eclipse.emf.ecore.xml.type.util.XMLTypeUtil; + +/** + * + * An implementation of the commonj.sdo/java model factory. + * This model is generated from sdoJava.xsd, in the sdo-api project. + * Until the SDO code generator supports name conflicts and regen/merge, follow the following steps to regenerate this model: + * 1. Regenerate the model into a temporary directory: + * XSD2JavaGenerator -generateBuiltIn commonj.sdo/java -targetDirectory -javaPackage org.apache.tuscany.sdo.model.java /src/main/resources/xml/sdoJava.xsd + * 2. Delete all the createXXXFromString() and convertXXXToString() methods in the newly generated JavaFactoryImpl and + * replace them with the ones from this file. + * 3. Make sure the top of each generated file contains the ASF License. + * 4. Move this JavaDoc comment into the newly generated JavaFactoryImpl class. + * + * @generated + */ + +public class JavaFactoryImpl extends FactoryBase implements JavaFactory +{ + + /** + * The package namespace URI. + * + * + * @generated + */ + public static final String NAMESPACE_URI = "commonj.sdo/java"; + + /** + * The package namespace name. + * + * + * @generated + */ + public static final String NAMESPACE_PREFIX = "sdoJava"; + + /** + * The version of the generator pattern used to generate this class. + * + * + * @generated + */ + public static final String PATTERN_VERSION = "1.2"; + + public static final int JAVA_INFO = 1; + public static final int BOOLEAN_OBJECT = 2; + public static final int BYTE_OBJECT = 3; + public static final int CHARACTER_OBJECT = 4; + public static final int DOUBLE_OBJECT = 5; + public static final int FLOAT_OBJECT = 6; + public static final int INT_OBJECT = 7; + public static final int LONG_OBJECT = 8; + public static final int SHORT_OBJECT = 9; + + /** + * Creates an instance of the factory. + * + * + * @generated + */ + public JavaFactoryImpl() + { + super(NAMESPACE_URI, NAMESPACE_PREFIX, "org.apache.tuscany.sdo.model.java"); + } + + /** + * Registers the Factory instance so that it is available within the supplied scope. + * @argument scope a HelperContext instance that will make the types supported by this Factory available. + * + * + * @generated + */ + public void register(HelperContext scope) + { + if(scope == null) { + throw new IllegalArgumentException("Scope can not be null"); + } + + //Register dependent packages with provided scope + ModelFactory.INSTANCE.register(scope); + + // Initialize this package + TypeHelperImpl th = (TypeHelperImpl)scope.getTypeHelper(); + th.getExtendedMetaData().putPackage(NAMESPACE_URI, this); + } + + /** + * + * + * @generated + */ + public DataObject create(int typeNumber) + { + switch (typeNumber) + { + case JAVA_INFO: return (DataObject)createJavaInfo(); + default: + return super.create(typeNumber); + } + } + + /** + * + * + * @generated + */ + public Object createFromString(int typeNumber, String initialValue) + { + switch (typeNumber) + { + case BOOLEAN_OBJECT: + return createBooleanObjectFromString(initialValue); + case BYTE_OBJECT: + return createByteObjectFromString(initialValue); + case CHARACTER_OBJECT: + return createCharacterObjectFromString(initialValue); + case DOUBLE_OBJECT: + return createDoubleObjectFromString(initialValue); + case FLOAT_OBJECT: + return createFloatObjectFromString(initialValue); + case INT_OBJECT: + return createIntObjectFromString(initialValue); + case LONG_OBJECT: + return createLongObjectFromString(initialValue); + case SHORT_OBJECT: + return createShortObjectFromString(initialValue); + default: + throw new IllegalArgumentException("The type number '" + typeNumber + "' is not a valid datatype"); + } + } + + /** + * + * + * @generated + */ + public String convertToString(int typeNumber, Object instanceValue) + { + switch (typeNumber) + { + case BOOLEAN_OBJECT: + return convertBooleanObjectToString(instanceValue); + case BYTE_OBJECT: + return convertByteObjectToString(instanceValue); + case CHARACTER_OBJECT: + return convertCharacterObjectToString(instanceValue); + case DOUBLE_OBJECT: + return convertDoubleObjectToString(instanceValue); + case FLOAT_OBJECT: + return convertFloatObjectToString(instanceValue); + case INT_OBJECT: + return convertIntObjectToString(instanceValue); + case LONG_OBJECT: + return convertLongObjectToString(instanceValue); + case SHORT_OBJECT: + return convertShortObjectToString(instanceValue); + default: + throw new IllegalArgumentException("The type number '" + typeNumber + "' is not a valid datatype"); + } + } + /** + * + * + * @generated + */ + public JavaInfo createJavaInfo() + { + JavaInfoImpl javaInfo = new JavaInfoImpl(); + return javaInfo; + } + + // Following creates and initializes SDO metadata for the supported types. + protected Type javaInfoType = null; + + public Type getJavaInfo() + { + return javaInfoType; + } + + protected Type booleanObjectType = null; + + public Type getBooleanObject() + { + return booleanObjectType; + } + + protected Type byteObjectType = null; + + public Type getByteObject() + { + return byteObjectType; + } + + protected Type characterObjectType = null; + + public Type getCharacterObject() + { + return characterObjectType; + } + + protected Type doubleObjectType = null; + + public Type getDoubleObject() + { + return doubleObjectType; + } + + protected Type floatObjectType = null; + + public Type getFloatObject() + { + return floatObjectType; + } + + protected Type intObjectType = null; + + public Type getIntObject() + { + return intObjectType; + } + + protected Type longObjectType = null; + + public Type getLongObject() + { + return longObjectType; + } + + protected Type shortObjectType = null; + + public Type getShortObject() + { + return shortObjectType; + } + + + private static JavaFactoryImpl instance = null; + public static JavaFactoryImpl init() + { + if (instance != null ) return instance; + instance = new JavaFactoryImpl(); + + // Initialize dependent packages + ModelFactory ModelFactoryInstance = ModelFactory.INSTANCE; + + // Create package meta-data objects + instance.createMetaData(); + + // Initialize created meta-data + instance.initializeMetaData(); + + // Mark meta-data to indicate it can't be changed + //theJavaFactoryImpl.freeze(); //FB do we need to freeze / should we freeze ???? + + return instance; + } + + private boolean isCreated = false; + + public void createMetaData() + { + if (isCreated) return; + isCreated = true; + + // Create types and their properties + javaInfoType = createType(false, JAVA_INFO); + createProperty(true, javaInfoType,JavaInfoImpl.INTERNAL_JAVA_CLASS); + + // Create data types + booleanObjectType = createType(true, BOOLEAN_OBJECT ); + byteObjectType = createType(true, BYTE_OBJECT ); + characterObjectType = createType(true, CHARACTER_OBJECT ); + doubleObjectType = createType(true, DOUBLE_OBJECT ); + floatObjectType = createType(true, FLOAT_OBJECT ); + intObjectType = createType(true, INT_OBJECT ); + longObjectType = createType(true, LONG_OBJECT ); + shortObjectType = createType(true, SHORT_OBJECT ); + } + + private boolean isInitialized = false; + + public void initializeMetaData() + { + if (isInitialized) return; + isInitialized = true; + + // Obtain other dependent packages + ModelFactoryImpl theModelPackageImpl = (ModelFactoryImpl)ModelFactory.INSTANCE; + Property property = null; + + // Add supertypes to types + + // Initialize types and properties + initializeType(javaInfoType, JavaInfo.class, "JavaInfo", false); + property = getLocalProperty(javaInfoType, 0); + initializeProperty(property, theModelPackageImpl.getString(), "javaClass", null, 0, 1, JavaInfo.class, false, true, false); + + // Initialize data types + initializeType(booleanObjectType, Boolean.class, "BooleanObject", true, false); + setInstanceProperty (booleanObjectType, "commonj.sdo/java", "instanceClass", "java.lang.Boolean"); + + initializeType(byteObjectType, Byte.class, "ByteObject", true, false); + setInstanceProperty (byteObjectType, "commonj.sdo/java", "instanceClass", "java.lang.Byte"); + + initializeType(characterObjectType, Character.class, "CharacterObject", true, false); + setInstanceProperty (characterObjectType, "commonj.sdo/java", "instanceClass", "java.lang.Character"); + + initializeType(doubleObjectType, Double.class, "DoubleObject", true, false); + setInstanceProperty (doubleObjectType, "commonj.sdo/java", "instanceClass", "java.lang.Double"); + + initializeType(floatObjectType, Float.class, "FloatObject", true, false); + setInstanceProperty (floatObjectType, "commonj.sdo/java", "instanceClass", "java.lang.Float"); + + initializeType(intObjectType, Integer.class, "IntObject", true, false); + setInstanceProperty (intObjectType, "commonj.sdo/java", "instanceClass", "java.lang.Integer"); + + initializeType(longObjectType, Long.class, "LongObject", true, false); + setInstanceProperty (longObjectType, "commonj.sdo/java", "instanceClass", "java.lang.Long"); + + initializeType(shortObjectType, Short.class, "ShortObject", true, false); + setInstanceProperty (shortObjectType, "commonj.sdo/java", "instanceClass", "java.lang.Short"); + + createXSDMetaData(theModelPackageImpl); + } + + protected void createXSDMetaData(ModelFactoryImpl theModelPackageImpl) + { + super.initXSD(); + + Property property = null; + + + property = createGlobalProperty + ("extendedInstanceClass", + theModelPackageImpl.getString(), + new String[] + { + "kind", "attribute", + "name", "extendedInstanceClass", + "namespace", "##targetNamespace" + }, + IS_ATTRIBUTE); + + property = createGlobalProperty + ("instanceClass", + theModelPackageImpl.getString(), + new String[] + { + "kind", "attribute", + "name", "instanceClass", + "namespace", "##targetNamespace" + }, + IS_ATTRIBUTE); + + property = createGlobalProperty + ("javaClass", + theModelPackageImpl.getString(), + new String[] + { + "kind", "attribute", + "name", "javaClass", + "namespace", "##targetNamespace" + }, + IS_ATTRIBUTE); + + property = createGlobalProperty + ("nestedInterfaces", + theModelPackageImpl.getBoolean(), + new String[] + { + "kind", "attribute", + "name", "nestedInterfaces", + "namespace", "##targetNamespace" + }, + IS_ATTRIBUTE); + + property = createGlobalProperty + ("package", + theModelPackageImpl.getString(), + new String[] + { + "kind", "attribute", + "name", "package", + "namespace", "##targetNamespace" + }, + IS_ATTRIBUTE); + + addXSDMapping + (javaInfoType, + new String[] + { + "name", "JavaInfo", + "kind", "empty" + }); + + addXSDMapping + (getProperty(javaInfoType, JavaInfoImpl.INTERNAL_JAVA_CLASS), + new String[] + { + "kind", "attribute", + "name", "javaClass" + }); + + addXSDMapping + (booleanObjectType, + new String[] + { + "name", "BooleanObject" + }); + + addXSDMapping + (byteObjectType, + new String[] + { + "name", "ByteObject" + }); + + addXSDMapping + (characterObjectType, + new String[] + { + "name", "CharacterObject" + }); + + addXSDMapping + (doubleObjectType, + new String[] + { + "name", "DoubleObject" + }); + + addXSDMapping + (floatObjectType, + new String[] + { + "name", "FloatObject" + }); + + addXSDMapping + (intObjectType, + new String[] + { + "name", "IntObject" + }); + + addXSDMapping + (longObjectType, + new String[] + { + "name", "LongObject" + }); + + addXSDMapping + (shortObjectType, + new String[] + { + "name", "ShortObject" + }); + + } + + /** + * + * + * @generated NOT + */ + public Boolean createBooleanObjectFromString(String initialValue) + { + return XMLTypeFactory.eINSTANCE.createBooleanObject(initialValue); + } + + /** + * + * + * @generated NOT + */ + public String convertBooleanObjectToString(Object instanceValue) + { + return XMLTypeFactory.eINSTANCE.convertBooleanObject((Boolean)instanceValue); + } + + /** + * + * + * @generated NOT + */ + public Byte createByteObjectFromString(String initialValue) + { + return XMLTypeFactory.eINSTANCE.createByteObject(initialValue); + } + + /** + * + * + * @generated NOT + */ + public String convertByteObjectToString(Object instanceValue) + { + return XMLTypeFactory.eINSTANCE.convertByteObject((Byte)instanceValue); + } + + /** + * + * + * @generated NOT + */ + public Character createCharacterObjectFromString(String initialValue) + { + return (initialValue == null && initialValue.length() > 0) + ? null : (new Character(XMLTypeUtil.normalize(initialValue, true).charAt(0))); + } + + /** + * + * + * @generated NOT + */ + public String convertCharacterObjectToString(Object instanceValue) + { + return instanceValue == null ? null : instanceValue.toString(); + } + + /** + * + * + * @generated NOT + */ + public Double createDoubleObjectFromString(String initialValue) + { + return XMLTypeFactory.eINSTANCE.createDoubleObject(initialValue); + } + + /** + * + * + * @generated NOT + */ + public String convertDoubleObjectToString(Object instanceValue) + { + return XMLTypeFactory.eINSTANCE.convertDoubleObject((Double)instanceValue); + } + + /** + * + * + * @generated NOT + */ + public Float createFloatObjectFromString(String initialValue) + { + return XMLTypeFactory.eINSTANCE.createFloatObject(initialValue); + } + + /** + * + * + * @generated NOT + */ + public String convertFloatObjectToString(Object instanceValue) + { + return XMLTypeFactory.eINSTANCE.convertFloatObject((Float)instanceValue); + } + + /** + * + * + * @generated NOT + */ + public Integer createIntObjectFromString(String initialValue) + { + return XMLTypeFactory.eINSTANCE.createIntObject(initialValue); + } + + /** + * + * + * @generated NOT + */ + public String convertIntObjectToString(Object instanceValue) + { + return XMLTypeFactory.eINSTANCE.convertIntObject((Integer)instanceValue); + } + + /** + * + * + * @generated NOT + */ + public Long createLongObjectFromString(String initialValue) + { + return XMLTypeFactory.eINSTANCE.createLongObject(initialValue); + } + + /** + * + * + * @generated NOT + */ + public String convertLongObjectToString(Object instanceValue) + { + return XMLTypeFactory.eINSTANCE.convertLongObject((Long)instanceValue); + } + + /** + * + * + * @generated NOT + */ + public Short createShortObjectFromString(String initialValue) + { + return XMLTypeFactory.eINSTANCE.createShortObject(initialValue); + } + + /** + * + * + * @generated NOT + */ + public String convertShortObjectToString(Object instanceValue) + { + return XMLTypeFactory.eINSTANCE.convertShortObject((Short)instanceValue); + } + +} //JavaFactoryImpl diff --git a/sdo-java/trunk/impl/src/main/java/org/apache/tuscany/sdo/model/java/impl/JavaInfoImpl.java b/sdo-java/trunk/impl/src/main/java/org/apache/tuscany/sdo/model/java/impl/JavaInfoImpl.java new file mode 100644 index 0000000000..de25db5d1e --- /dev/null +++ b/sdo-java/trunk/impl/src/main/java/org/apache/tuscany/sdo/model/java/impl/JavaInfoImpl.java @@ -0,0 +1,256 @@ +/** + * + * Licensed to the Apache Software Foundation (ASF) under one + * or more contributor license agreements. See the NOTICE file + * distributed with this work for additional information + * regarding copyright ownership. The ASF licenses this file + * to you under the Apache License, Version 2.0 (the + * "License"); you may not use this file except in compliance + * with the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, + * software distributed under the License is distributed on an + * "AS IS" BASIS, WITHOUT 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 commonj.sdo.Type; + +import org.apache.tuscany.sdo.impl.DataObjectBase; + +import org.apache.tuscany.sdo.model.java.JavaFactory; +import org.apache.tuscany.sdo.model.java.JavaInfo; + +/** + * + * An implementation of the model object 'Info'. + * + *

+ * The following features are implemented: + *

    + *
  • {@link org.apache.tuscany.sdo.model.java.impl.JavaInfoImpl#getJavaClass Java Class}
  • + *
+ *

+ * + * @generated + */ +public class JavaInfoImpl extends DataObjectBase implements JavaInfo +{ + + public final static int JAVA_CLASS = 0; + + public final static int SDO_PROPERTY_COUNT = 1; + + public final static int EXTENDED_PROPERTY_COUNT = 0; + + + /** + * The internal feature id for the 'Java Class' attribute. + * + * + * @generated + * @ordered + */ + public final static int INTERNAL_JAVA_CLASS = 0; + + /** + * The number of properties for this type. + * + * + * @generated + * @ordered + */ + public final static int INTERNAL_PROPERTY_COUNT = 1; + + protected int internalConvertIndex(int internalIndex) + { + switch (internalIndex) + { + case INTERNAL_JAVA_CLASS: return JAVA_CLASS; + } + return super.internalConvertIndex(internalIndex); + } + + + /** + * The default value of the '{@link #getJavaClass() Java Class}' attribute. + * + * + * @see #getJavaClass() + * @generated + * @ordered + */ + protected static final String JAVA_CLASS_DEFAULT_ = null; + + /** + * The cached value of the '{@link #getJavaClass() Java Class}' attribute. + * + * + * @see #getJavaClass() + * @generated + * @ordered + */ + protected String javaClass = JAVA_CLASS_DEFAULT_; + + /** + * This is true if the Java Class attribute has been set. + * + * + * @generated + * @ordered + */ + protected boolean javaClass_set_ = false; + + /** + * + * + * @generated + */ + public JavaInfoImpl() + { + super(); + } + + /** + * + * + * @generated + */ + public Type getStaticType() + { + return ((JavaFactoryImpl)JavaFactory.INSTANCE).getJavaInfo(); + } + + /** + * + * + * @generated + */ + public String getJavaClass() + { + return javaClass; + } + /** + * + * + * @generated + */ + public void setJavaClass(String newJavaClass) + { + String oldJavaClass = javaClass; + javaClass = newJavaClass; + boolean oldJavaClass_set_ = javaClass_set_; + javaClass_set_ = true; + if (isNotifying()) + notify(ChangeKind.SET, INTERNAL_JAVA_CLASS, oldJavaClass, javaClass, !oldJavaClass_set_); + } + + /** + * + * + * @generated + */ + public void unsetJavaClass() + { + String oldJavaClass = javaClass; + boolean oldJavaClass_set_ = javaClass_set_; + javaClass = JAVA_CLASS_DEFAULT_; + javaClass_set_ = false; + if (isNotifying()) + notify(ChangeKind.UNSET, INTERNAL_JAVA_CLASS, oldJavaClass, JAVA_CLASS_DEFAULT_, oldJavaClass_set_); + } + + /** + * + * + * @generated + */ + public boolean isSetJavaClass() + { + return javaClass_set_; + } + + /** + * + * + * @generated + */ + public Object get(int propertyIndex, boolean resolve) + { + switch (propertyIndex) + { + case JAVA_CLASS: + return getJavaClass(); + } + return super.get(propertyIndex, resolve); + } + + /** + * + * + * @generated + */ + public void set(int propertyIndex, Object newValue) + { + switch (propertyIndex) + { + case JAVA_CLASS: + setJavaClass((String)newValue); + return; + } + super.set(propertyIndex, newValue); + } + + /** + * + * + * @generated + */ + public void unset(int propertyIndex) + { + switch (propertyIndex) + { + case JAVA_CLASS: + unsetJavaClass(); + return; + } + super.unset(propertyIndex); + } + + /** + * + * + * @generated + */ + public boolean isSet(int propertyIndex) + { + switch (propertyIndex) + { + case JAVA_CLASS: + return isSetJavaClass(); + } + return super.isSet(propertyIndex); + } + + /** + * + * + * @generated + */ + public String toString() + { + if (isProxy(this)) return super.toString(); + + StringBuffer result = new StringBuffer(super.toString()); + result.append(" (javaClass: "); + if (javaClass_set_) result.append(javaClass); else result.append(""); + result.append(')'); + return result.toString(); + } + +} //JavaInfoImpl diff --git a/sdo-java/trunk/impl/src/main/java/org/apache/tuscany/sdo/model/xml/XMLFactory.java b/sdo-java/trunk/impl/src/main/java/org/apache/tuscany/sdo/model/xml/XMLFactory.java new file mode 100644 index 0000000000..39119a1c77 --- /dev/null +++ b/sdo-java/trunk/impl/src/main/java/org/apache/tuscany/sdo/model/xml/XMLFactory.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.model.xml; + +import commonj.sdo.helper.HelperContext; + + +/** + * + * The Factory for the model. + * It provides a create method for each non-abstract class of the model. + * + * @generated + */ +public interface XMLFactory +{ + + /** + * The singleton instance of the factory. + * + * + * @generated + */ + XMLFactory INSTANCE = org.apache.tuscany.sdo.model.xml.impl.XMLFactoryImpl.init(); + + /** + * Returns a new object of class 'Info'. + * + * + * @return a new object of class 'Info'. + * @generated + */ + XMLInfo createXMLInfo(); + + /** + * Registers the types supported by this Factory within the supplied scope.argument + * + * + * @param scope an instance of HelperContext used to manage the scoping of types. + * @generated + */ + public void register(HelperContext scope); + +} //XMLFactory diff --git a/sdo-java/trunk/impl/src/main/java/org/apache/tuscany/sdo/model/xml/XMLInfo.java b/sdo-java/trunk/impl/src/main/java/org/apache/tuscany/sdo/model/xml/XMLInfo.java new file mode 100644 index 0000000000..6f438bc3e2 --- /dev/null +++ b/sdo-java/trunk/impl/src/main/java/org/apache/tuscany/sdo/model/xml/XMLInfo.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.model.xml; + +import java.io.Serializable; + +/** + * + * A representation of the model object 'Info'. + * + * + *

+ * The following features are supported: + *

    + *
  • {@link org.apache.tuscany.sdo.model.xml.XMLInfo#isXmlElement Xml Element}
  • + *
+ *

+ * + * @extends Serializable + * @generated + */ +public interface XMLInfo extends Serializable +{ + /** + * Returns the value of the 'Xml Element' attribute. + * + *

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

+ * + * @return the value of the 'Xml Element' attribute. + * @see #isSetXmlElement() + * @see #unsetXmlElement() + * @see #setXmlElement(boolean) + * @generated + */ + boolean isXmlElement(); + + /** + * Sets the value of the '{@link org.apache.tuscany.sdo.model.xml.XMLInfo#isXmlElement Xml Element}' attribute. + * + * + * @param value the new value of the 'Xml Element' attribute. + * @see #isSetXmlElement() + * @see #unsetXmlElement() + * @see #isXmlElement() + * @generated + */ + void setXmlElement(boolean value); + + /** + * Unsets the value of the '{@link org.apache.tuscany.sdo.model.xml.XMLInfo#isXmlElement Xml Element}' attribute. + * + * + * @see #isSetXmlElement() + * @see #isXmlElement() + * @see #setXmlElement(boolean) + * @generated + */ + void unsetXmlElement(); + + /** + * Returns whether the value of the '{@link org.apache.tuscany.sdo.model.xml.XMLInfo#isXmlElement Xml Element}' attribute is set. + * + * + * @return whether the value of the 'Xml Element' attribute is set. + * @see #unsetXmlElement() + * @see #isXmlElement() + * @see #setXmlElement(boolean) + * @generated + */ + boolean isSetXmlElement(); + +} // XMLInfo diff --git a/sdo-java/trunk/impl/src/main/java/org/apache/tuscany/sdo/model/xml/impl/XMLFactoryImpl.java b/sdo-java/trunk/impl/src/main/java/org/apache/tuscany/sdo/model/xml/impl/XMLFactoryImpl.java new file mode 100644 index 0000000000..f07d8b7f3c --- /dev/null +++ b/sdo-java/trunk/impl/src/main/java/org/apache/tuscany/sdo/model/xml/impl/XMLFactoryImpl.java @@ -0,0 +1,341 @@ +/** + * + * Licensed to the Apache Software Foundation (ASF) under one + * or more contributor license agreements. See the NOTICE file + * distributed with this work for additional information + * regarding copyright ownership. The ASF licenses this file + * to you under the Apache License, Version 2.0 (the + * "License"); you may not use this file except in compliance + * with the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, + * software distributed under the License is distributed on an + * "AS IS" BASIS, WITHOUT 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.xml.impl; + +import commonj.sdo.helper.HelperContext; +import org.apache.tuscany.sdo.helper.TypeHelperImpl; + +import commonj.sdo.DataObject; +import commonj.sdo.Property; +import commonj.sdo.Type; + +import org.apache.tuscany.sdo.impl.FactoryBase; + +import org.apache.tuscany.sdo.model.ModelFactory; + +import org.apache.tuscany.sdo.model.impl.ModelFactoryImpl; + +import org.apache.tuscany.sdo.model.internal.InternalFactory; + +import org.apache.tuscany.sdo.model.internal.impl.InternalFactoryImpl; + +import org.apache.tuscany.sdo.model.xml.*; + +/** + * + * An implementation of the commonj.sdo/xml model factory. + * This model is generated from sdoXML.xsd, in the sdo-api project. + * Until the SDO code generator supports name conflicts and regen/merge, follow the following steps to regenerate this model: + * 1. Regenerate the model into a temporary directory: + * XSD2JavaGenerator -generateBuiltIn commonj.sdo/xml -prefix XML -targetDirectory -javaPackage org.apache.tuscany.sdo.model.xml /src/main/resources/xml/sdoXML.xsd + * 2. Make sure the top of each generated file contains the ASF License. + * 3. Move this JavaDoc comment into the newly generated XMLFactoryImpl class. + * + * @generated + */ +public class XMLFactoryImpl extends FactoryBase implements XMLFactory +{ + + /** + * The package namespace URI. + * + * + * @generated + */ + public static final String NAMESPACE_URI = "commonj.sdo/xml"; + + /** + * The package namespace name. + * + * + * @generated + */ + public static final String NAMESPACE_PREFIX = "sdoXML"; + + /** + * The version of the generator pattern used to generate this class. + * + * + * @generated + */ + public static final String PATTERN_VERSION = "1.2"; + + public static final int XML_INFO = 1; + + /** + * Creates an instance of the factory. + * + * + * @generated + */ + public XMLFactoryImpl() + { + super(NAMESPACE_URI, NAMESPACE_PREFIX, "org.apache.tuscany.sdo.model.xml"); + } + + /** + * Registers the Factory instance so that it is available within the supplied scope. + * @argument scope a HelperContext instance that will make the types supported by this Factory available. + * + * + * @generated + */ + public void register(HelperContext scope) + { + if(scope == null) { + throw new IllegalArgumentException("Scope can not be null"); + } + + //Register dependent packages with provided scope + ModelFactory.INSTANCE.register(scope); + InternalFactory.INSTANCE.register(scope); + + // Initialize this package + TypeHelperImpl th = (TypeHelperImpl)scope.getTypeHelper(); + th.getExtendedMetaData().putPackage(NAMESPACE_URI, this); + } + + /** + * + * + * @generated + */ + public DataObject create(int typeNumber) + { + switch (typeNumber) + { + case XML_INFO: return (DataObject)createXMLInfo(); + default: + return super.create(typeNumber); + } + } + + /** + * + * + * @generated + */ + public XMLInfo createXMLInfo() + { + XMLInfoImpl xmlInfo = new XMLInfoImpl(); + return xmlInfo; + } + + // Following creates and initializes SDO metadata for the supported types. + protected Type xmlInfoType = null; + + public Type getXMLInfo() + { + return xmlInfoType; + } + + + private static XMLFactoryImpl instance = null; + public static XMLFactoryImpl init() + { + if (instance != null ) return instance; + instance = new XMLFactoryImpl(); + + // Initialize dependent packages + ModelFactory ModelFactoryInstance = ModelFactory.INSTANCE; + InternalFactory InternalFactoryInstance = InternalFactory.INSTANCE; + + // Create package meta-data objects + instance.createMetaData(); + + // Initialize created meta-data + instance.initializeMetaData(); + + // Mark meta-data to indicate it can't be changed + //theXMLFactoryImpl.freeze(); //FB do we need to freeze / should we freeze ???? + + return instance; + } + + private boolean isCreated = false; + + public void createMetaData() + { + if (isCreated) return; + isCreated = true; + + // Create types and their properties + xmlInfoType = createType(false, XML_INFO); + createProperty(true, xmlInfoType,XMLInfoImpl.INTERNAL_XML_ELEMENT); + } + + private boolean isInitialized = false; + + public void initializeMetaData() + { + if (isInitialized) return; + isInitialized = true; + + // Obtain other dependent packages + ModelFactoryImpl theModelPackageImpl = (ModelFactoryImpl)ModelFactory.INSTANCE; + InternalFactoryImpl theInternalPackageImpl = (InternalFactoryImpl)InternalFactory.INSTANCE; + Property property = null; + + // Add supertypes to types + + // Initialize types and properties + initializeType(xmlInfoType, XMLInfo.class, "XMLInfo", false); + property = getLocalProperty(xmlInfoType, 0); + initializeProperty(property, theModelPackageImpl.getBoolean(), "xmlElement", null, 0, 1, XMLInfo.class, false, true, false); + + createXSDMetaData(theModelPackageImpl, theInternalPackageImpl); + } + + protected void createXSDMetaData(ModelFactoryImpl theModelPackageImpl, InternalFactoryImpl theInternalPackageImpl) + { + super.initXSD(); + + Property property = null; + + + property = createGlobalProperty + ("aliasName", + theModelPackageImpl.getString(), + new String[] + { + "kind", "attribute", + "name", "aliasName", + "namespace", "##targetNamespace" + }, + IS_ATTRIBUTE); + + property = createGlobalProperty + ("dataType", + theInternalPackageImpl.getQName(), + new String[] + { + "kind", "attribute", + "name", "dataType", + "namespace", "##targetNamespace" + }, + IS_ATTRIBUTE); + + property = createGlobalProperty + ("many", + theModelPackageImpl.getBoolean(), + new String[] + { + "kind", "attribute", + "name", "many", + "namespace", "##targetNamespace" + }, + IS_ATTRIBUTE); + + property = createGlobalProperty + ("name", + theModelPackageImpl.getString(), + new String[] + { + "kind", "attribute", + "name", "name", + "namespace", "##targetNamespace" + }, + IS_ATTRIBUTE); + + property = createGlobalProperty + ("oppositeProperty", + theModelPackageImpl.getString(), + new String[] + { + "kind", "attribute", + "name", "oppositeProperty", + "namespace", "##targetNamespace" + }, + IS_ATTRIBUTE); + + property = createGlobalProperty + ("propertyType", + theInternalPackageImpl.getQName(), + new String[] + { + "kind", "attribute", + "name", "propertyType", + "namespace", "##targetNamespace" + }, + IS_ATTRIBUTE); + + property = createGlobalProperty + ("readOnly", + theModelPackageImpl.getBoolean(), + new String[] + { + "kind", "attribute", + "name", "readOnly", + "namespace", "##targetNamespace" + }, + IS_ATTRIBUTE); + + property = createGlobalProperty + ("sequence", + theModelPackageImpl.getBoolean(), + new String[] + { + "kind", "attribute", + "name", "sequence", + "namespace", "##targetNamespace" + }, + IS_ATTRIBUTE); + + property = createGlobalProperty + ("string", + theModelPackageImpl.getBoolean(), + new String[] + { + "kind", "attribute", + "name", "string", + "namespace", "##targetNamespace" + }, + IS_ATTRIBUTE); + + property = createGlobalProperty + ("xmlElement", + theModelPackageImpl.getBoolean(), + new String[] + { + "kind", "attribute", + "name", "xmlElement", + "namespace", "##targetNamespace" + }, + IS_ATTRIBUTE); + + addXSDMapping + (xmlInfoType, + new String[] + { + "name", "XMLInfo", + "kind", "empty" + }); + + addXSDMapping + (getProperty(xmlInfoType, XMLInfoImpl.INTERNAL_XML_ELEMENT), + new String[] + { + "kind", "attribute", + "name", "xmlElement" + }); + + } + +} //XMLFactoryImpl diff --git a/sdo-java/trunk/impl/src/main/java/org/apache/tuscany/sdo/model/xml/impl/XMLInfoImpl.java b/sdo-java/trunk/impl/src/main/java/org/apache/tuscany/sdo/model/xml/impl/XMLInfoImpl.java new file mode 100644 index 0000000000..83d8a6725a --- /dev/null +++ b/sdo-java/trunk/impl/src/main/java/org/apache/tuscany/sdo/model/xml/impl/XMLInfoImpl.java @@ -0,0 +1,256 @@ +/** + * + * Licensed to the Apache Software Foundation (ASF) under one + * or more contributor license agreements. See the NOTICE file + * distributed with this work for additional information + * regarding copyright ownership. The ASF licenses this file + * to you under the Apache License, Version 2.0 (the + * "License"); you may not use this file except in compliance + * with the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, + * software distributed under the License is distributed on an + * "AS IS" BASIS, WITHOUT 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.xml.impl; + +import commonj.sdo.Type; + +import org.apache.tuscany.sdo.impl.DataObjectBase; + +import org.apache.tuscany.sdo.model.xml.XMLFactory; +import org.apache.tuscany.sdo.model.xml.XMLInfo; + +/** + * + * An implementation of the model object 'Info'. + * + *

+ * The following features are implemented: + *

    + *
  • {@link org.apache.tuscany.sdo.model.xml.impl.XMLInfoImpl#isXmlElement Xml Element}
  • + *
+ *

+ * + * @generated + */ +public class XMLInfoImpl extends DataObjectBase implements XMLInfo +{ + + public final static int XML_ELEMENT = 0; + + public final static int SDO_PROPERTY_COUNT = 1; + + public final static int EXTENDED_PROPERTY_COUNT = 0; + + + /** + * The internal feature id for the 'Xml Element' attribute. + * + * + * @generated + * @ordered + */ + public final static int INTERNAL_XML_ELEMENT = 0; + + /** + * The number of properties for this type. + * + * + * @generated + * @ordered + */ + public final static int INTERNAL_PROPERTY_COUNT = 1; + + protected int internalConvertIndex(int internalIndex) + { + switch (internalIndex) + { + case INTERNAL_XML_ELEMENT: return XML_ELEMENT; + } + return super.internalConvertIndex(internalIndex); + } + + + /** + * The default value of the '{@link #isXmlElement() Xml Element}' attribute. + * + * + * @see #isXmlElement() + * @generated + * @ordered + */ + protected static final boolean XML_ELEMENT_DEFAULT_ = false; + + /** + * The cached value of the '{@link #isXmlElement() Xml Element}' attribute. + * + * + * @see #isXmlElement() + * @generated + * @ordered + */ + protected boolean xmlElement = XML_ELEMENT_DEFAULT_; + + /** + * This is true if the Xml Element attribute has been set. + * + * + * @generated + * @ordered + */ + protected boolean xmlElement_set_ = false; + + /** + * + * + * @generated + */ + public XMLInfoImpl() + { + super(); + } + + /** + * + * + * @generated + */ + public Type getStaticType() + { + return ((XMLFactoryImpl)XMLFactory.INSTANCE).getXMLInfo(); + } + + /** + * + * + * @generated + */ + public boolean isXmlElement() + { + return xmlElement; + } + /** + * + * + * @generated + */ + public void setXmlElement(boolean newXmlElement) + { + boolean oldXmlElement = xmlElement; + xmlElement = newXmlElement; + boolean oldXmlElement_set_ = xmlElement_set_; + xmlElement_set_ = true; + if (isNotifying()) + notify(ChangeKind.SET, INTERNAL_XML_ELEMENT, oldXmlElement, xmlElement, !oldXmlElement_set_); + } + + /** + * + * + * @generated + */ + public void unsetXmlElement() + { + boolean oldXmlElement = xmlElement; + boolean oldXmlElement_set_ = xmlElement_set_; + xmlElement = XML_ELEMENT_DEFAULT_; + xmlElement_set_ = false; + if (isNotifying()) + notify(ChangeKind.UNSET, INTERNAL_XML_ELEMENT, oldXmlElement, XML_ELEMENT_DEFAULT_, oldXmlElement_set_); + } + + /** + * + * + * @generated + */ + public boolean isSetXmlElement() + { + return xmlElement_set_; + } + + /** + * + * + * @generated + */ + public Object get(int propertyIndex, boolean resolve) + { + switch (propertyIndex) + { + case XML_ELEMENT: + return isXmlElement() ? Boolean.TRUE : Boolean.FALSE; + } + return super.get(propertyIndex, resolve); + } + + /** + * + * + * @generated + */ + public void set(int propertyIndex, Object newValue) + { + switch (propertyIndex) + { + case XML_ELEMENT: + setXmlElement(((Boolean)newValue).booleanValue()); + return; + } + super.set(propertyIndex, newValue); + } + + /** + * + * + * @generated + */ + public void unset(int propertyIndex) + { + switch (propertyIndex) + { + case XML_ELEMENT: + unsetXmlElement(); + return; + } + super.unset(propertyIndex); + } + + /** + * + * + * @generated + */ + public boolean isSet(int propertyIndex) + { + switch (propertyIndex) + { + case XML_ELEMENT: + return isSetXmlElement(); + } + return super.isSet(propertyIndex); + } + + /** + * + * + * @generated + */ + public String toString() + { + if (isProxy(this)) return super.toString(); + + StringBuffer result = new StringBuffer(super.toString()); + result.append(" (xmlElement: "); + if (xmlElement_set_) result.append(xmlElement); else result.append(""); + result.append(')'); + return result.toString(); + } + +} //XMLInfoImpl diff --git a/sdo-java/trunk/impl/src/main/java/org/apache/tuscany/sdo/osgi/SdoBundleActivator.java b/sdo-java/trunk/impl/src/main/java/org/apache/tuscany/sdo/osgi/SdoBundleActivator.java new file mode 100644 index 0000000000..ef65fc2367 --- /dev/null +++ b/sdo-java/trunk/impl/src/main/java/org/apache/tuscany/sdo/osgi/SdoBundleActivator.java @@ -0,0 +1,41 @@ +/** + * + * Licensed to the Apache Software Foundation (ASF) under one + * or more contributor license agreements. See the NOTICE file + * distributed with this work for additional information + * regarding copyright ownership. The ASF licenses this file + * to you under the Apache License, Version 2.0 (the + * "License"); you may not use this file except in compliance + * with the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, + * software distributed under the License is distributed on an + * "AS IS" BASIS, WITHOUT 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.osgi; + +import org.osgi.framework.BundleActivator; +import org.osgi.framework.BundleContext; + +import commonj.sdo.impl.HelperProvider; + +public class SdoBundleActivator implements BundleActivator { + + + public void start(BundleContext bundleContext) throws Exception { + + HelperProvider.setDefaultInstance(this.getClass().getClassLoader()); + + } + + public void stop(BundleContext bundleContext) throws Exception { + + } + + +} diff --git a/sdo-java/trunk/impl/src/main/java/org/apache/tuscany/sdo/util/BasicSequence.java b/sdo-java/trunk/impl/src/main/java/org/apache/tuscany/sdo/util/BasicSequence.java new file mode 100644 index 0000000000..e25d30e61c --- /dev/null +++ b/sdo-java/trunk/impl/src/main/java/org/apache/tuscany/sdo/util/BasicSequence.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.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.DataObject; +import commonj.sdo.Property; +import commonj.sdo.Sequence; +import commonj.sdo.Type; + +/** + * 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); + return getFeatureProperty(feature); + } + + public static Property getFeatureProperty(EStructuralFeature feature) + { + 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(String propertyName, Object value) + { + EStructuralFeature result = featureMap.getEObject().eClass().getEStructuralFeature(propertyName); + if (result == null) + { + Type type = (Type)featureMap.getEObject().eClass(); + if (type.isOpen()) + { + result = (EStructuralFeature)DataObjectUtil.demandOpenProperty(type, propertyName, value, true); + } + } + return result; + } + + protected EStructuralFeature getEStructuralFeature(int propertyIndex) + { + return (EStructuralFeature)DataObjectUtil.getProperty((DataObject)featureMap.getEObject(), propertyIndex); + } + + public boolean add(String propertyName, Object value) + { + return featureMap.add(getEStructuralFeature(propertyName, value), 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), 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); + } + + /** + * @deprecated + */ + public void add(String text) + { + FeatureMapUtil.addText(featureMap, text); + } + + /** + * @deprecated + */ + public void add(int index, String text) + { + FeatureMapUtil.addText(featureMap, index, text); + } + + public void addText(String text) + { + FeatureMapUtil.addText(featureMap, text); + } + + public void addText(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/sdo-java/trunk/impl/src/main/java/org/apache/tuscany/sdo/util/DataGraphResourceFactoryImpl.java b/sdo-java/trunk/impl/src/main/java/org/apache/tuscany/sdo/util/DataGraphResourceFactoryImpl.java new file mode 100644 index 0000000000..17a4ec709c --- /dev/null +++ b/sdo-java/trunk/impl/src/main/java/org/apache/tuscany/sdo/util/DataGraphResourceFactoryImpl.java @@ -0,0 +1,711 @@ +/** + * + * Licensed to the Apache Software Foundation (ASF) under one + * or more contributor license agreements. See the NOTICE file + * distributed with this work for additional information + * regarding copyright ownership. The ASF licenses this file + * to you under the Apache License, Version 2.0 (the + * "License"); you may not use this file except in compliance + * with the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, + * software distributed under the License is distributed on an + * "AS IS" BASIS, WITHOUT 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(""); + 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()); + } + } + + //FB TEMPORARY allow loading proper serialization (global element instead of type name) + //FB Proper fix is to reimplement DataGraph as proper DataObject, and remove this entire class + EStructuralFeature rootFeature = extendedMetaData.getElement(helper.getURI(prefix), name); + if (rootFeature != null) name = rootFeature.getEType().getName(); + + 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; + } + // TODO The following 3 lines of code are a temporary work-around for JIRA issue TUSCANY-1862. + // These lines of code should be removed when TUSCANY-1862 is resolved. + if ("".equals(uri) && "objectsToAttach".equals(name) && text != null && text.length() == 0) + { + text = null; + } + 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/sdo-java/trunk/impl/src/main/java/org/apache/tuscany/sdo/util/DataObjectUtil.java b/sdo-java/trunk/impl/src/main/java/org/apache/tuscany/sdo/util/DataObjectUtil.java new file mode 100644 index 0000000000..8481fdfd06 --- /dev/null +++ b/sdo-java/trunk/impl/src/main/java/org/apache/tuscany/sdo/util/DataObjectUtil.java @@ -0,0 +1,3035 @@ +/** + * + * Licensed to the Apache Software Foundation (ASF) under one + * or more contributor license agreements. See the NOTICE file + * distributed with this work for additional information + * regarding copyright ownership. The ASF licenses this file + * to you under the Apache License, Version 2.0 (the + * "License"); you may not use this file except in compliance + * with the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, + * software distributed under the License is distributed on an + * "AS IS" BASIS, WITHOUT 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.security.AccessController; +import java.security.PrivilegedExceptionAction; +import java.text.SimpleDateFormat; +import java.util.ArrayList; +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 java.util.TimeZone; + +import org.apache.tuscany.sdo.SDOExtendedMetaData; +import org.apache.tuscany.sdo.SDOFactory; +import org.apache.tuscany.sdo.SDOPackage; +import org.apache.tuscany.sdo.api.SDOUtil; +import org.apache.tuscany.sdo.helper.HelperContextImpl; +import org.apache.tuscany.sdo.impl.ClassImpl; +import org.apache.tuscany.sdo.impl.DataGraphImpl; +import org.apache.tuscany.sdo.model.ModelFactory; +import org.apache.tuscany.sdo.model.impl.ModelFactoryImpl; +import org.apache.tuscany.sdo.util.resource.SDOURIConverterImpl; +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.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.EModelElement; +import org.eclipse.emf.ecore.EObject; +import org.eclipse.emf.ecore.EReference; +import org.eclipse.emf.ecore.EStructuralFeature; +import org.eclipse.emf.ecore.EcorePackage; +import org.eclipse.emf.ecore.impl.EDataTypeImpl; +import org.eclipse.emf.ecore.impl.EPackageRegistryImpl; +import org.eclipse.emf.ecore.impl.EStringToStringMapEntryImpl; +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.emf.ecore.xml.type.XMLTypePackage; +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.HelperContext; +import commonj.sdo.helper.TypeHelper; +import commonj.sdo.impl.HelperProvider; + + +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)); + } + + + public static void setString(DataObject dataObject, int propertyIndex, String value) { + setString(dataObject,getProperty(dataObject, propertyIndex), value); + } + + public static void setShort(DataObject dataObject, int propertyIndex, short value) { + setShort(dataObject,getProperty(dataObject, propertyIndex), value); + } + + public static void setLong(DataObject dataObject, int propertyIndex, long value) { + setLong(dataObject,getProperty(dataObject, propertyIndex), value); + } + + public static void setList(DataObject dataObject, int propertyIndex, List value) { + setList(dataObject,getProperty(dataObject, propertyIndex), value); + } + + public static void setInt(DataObject dataObject, int propertyIndex, int value) { + setInt(dataObject,getProperty(dataObject, propertyIndex), value); + } + + public static void setFloat(DataObject dataObject, int propertyIndex, float value) { + setFloat(dataObject,getProperty(dataObject, propertyIndex), value); + } + + public static void setDouble(DataObject dataObject, int propertyIndex, double value) { + setDouble(dataObject,getProperty(dataObject, propertyIndex), value); + } + + public static void setDate(DataObject dataObject, int propertyIndex, Date value) { + setDate(dataObject,getProperty(dataObject, propertyIndex), value); + } + + public static void setDataObject(DataObject dataObject, int propertyIndex, DataObject value) { + dataObject.set(getProperty(dataObject, propertyIndex), value); + } + + public static void setChar(DataObject dataObject, int propertyIndex, char value) { + setChar(dataObject,getProperty(dataObject, propertyIndex), value); + } + + public static void setBytes(DataObject dataObject, int propertyIndex, byte[] value) { + setBytes(dataObject,getProperty(dataObject, propertyIndex), value); + } + + public static void setByte(DataObject dataObject, int propertyIndex, byte value) { + setByte(dataObject,getProperty(dataObject, propertyIndex), value); + } + + public static void setBoolean(DataObject dataObject, int propertyIndex, boolean value) { + setBoolean(dataObject,getProperty(dataObject, propertyIndex), value); + } + + public static void setBigInteger(DataObject dataObject, int propertyIndex, BigInteger value) + { + setBigInteger(dataObject,getProperty(dataObject, propertyIndex), value); + } + + public static void setBigDecimal(DataObject dataObject, int propertyIndex, BigDecimal value) + { + setBigDecimal(dataObject,getProperty(dataObject, propertyIndex), value); + } + + public static String getString(DataObject dataObject, int propertyIndex) + { + return getString(dataObject.get(getProperty(dataObject, propertyIndex))); + } + + public static short getShort(DataObject dataObject, int propertyIndex) + { + return getShort(dataObject.get(getProperty(dataObject, 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(getProperty(dataObject, propertyIndex))); + } + + public static List getList(DataObject dataObject, int propertyIndex) + { + return (List)dataObject.get(getProperty(dataObject, propertyIndex)); + } + + public static int getInt(DataObject dataObject, int propertyIndex) + { + return getInt(dataObject.get(getProperty(dataObject, propertyIndex))); + } + + public static float getFloat(DataObject dataObject, int propertyIndex) + { + return getFloat(dataObject.get(getProperty(dataObject, propertyIndex))); + } + + public static double getDouble(DataObject dataObject, int propertyIndex) + { + return getDouble(dataObject.get(getProperty(dataObject, propertyIndex))); + } + + public static Date getDate(DataObject dataObject, int propertyIndex) + { + return getDate(dataObject.get(getProperty(dataObject, propertyIndex))); + } + + public static DataObject getDataObject(DataObject dataObject, int propertyIndex) + { + return (DataObject)dataObject.get(getProperty(dataObject, propertyIndex)); + } + + public static char getChar(DataObject dataObject, int propertyIndex) + { + return getChar(dataObject.get(getProperty(dataObject, propertyIndex))); + } + + public static byte[] getBytes(DataObject dataObject, int propertyIndex) + { + return getBytes(dataObject.get(getProperty(dataObject, propertyIndex))); + } + + public static byte getByte(DataObject dataObject, int propertyIndex) + { + return getByte(dataObject.get(getProperty(dataObject, propertyIndex))); + } + + public static boolean getBoolean(DataObject dataObject, int propertyIndex) + { + return getBoolean(dataObject.get(getProperty(dataObject, propertyIndex))); + } + + public static BigInteger getBigInteger(DataObject dataObject, int propertyIndex) + { + return getBigInteger(dataObject.get(getProperty(dataObject, propertyIndex))); + } + + public static BigDecimal getBigDecimal(DataObject dataObject, int propertyIndex) + { + return getBigDecimal(dataObject.get(getProperty(dataObject, 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 boolean isInternalProperty(EStructuralFeature eStructuralFeature) + { + //return FeatureMapUtil.isFeatureMap(eStructuralFeature); + EClassifier eClassifier = eStructuralFeature.getEType(); + return !(eClassifier instanceof Type || eClassifier == XMLTypePackage.Literals.BASE64_BINARY); + } + + public static List getInstanceProperties(DataObject dataObject) + { + Type type = dataObject.getType(); + List result = new UniqueEList(type.getProperties()); + ((ClassImpl)type).addOpenProperties((EObject)dataObject, result); + 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 = getInstanceProperty(dataObject, propertyName); + if (property != null) { + Type type = DataObjectUtil.getType(dataObject, namespaceURI, typeName); + return createDataObject(dataObject, property, type); + } + else { + if (dataObject.getType().isOpen()) { + HelperContext ctx = HelperProvider.getDefaultContext(); + Type propertyType = ctx.getTypeHelper().getType( namespaceURI, typeName ); + if (propertyType == null) { + throw new IllegalStateException( "type does not exist: uri=" + namespaceURI + ", name=" + typeName ); + } + DataObject value = ctx.getDataFactory().create( propertyType ); + List list = new ArrayList(1); + list.add(value); + dataObject.setList( propertyName, list ); + return value; + } + else { + throw new IllegalArgumentException( "property '" + propertyName + "' does not exist" ); + } + } + } + + 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)getInstanceProperty(dataObject, propertyName); + if (property != null) { + Type type = property.getType(); + return createDataObject(dataObject,property, type); + } + else { + return createDataObject(dataObject, propertyName, "http://www.apache.org/tuscany/2005/SDO", "AnyTypeDataObject" ); + } + } + + 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(); + } + else + { + for (DataObject csDataObject = dataObject; csDataObject != null; csDataObject = csDataObject.getContainer()) + { + Property csp = ((ClassImpl)csDataObject.getType()).getChangeSummaryProperty(); + if (csp != null) return (ChangeSummary)csDataObject.get(csp); + } + } + 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, value).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 Long) + { + return new BigDecimal(((Long)value).longValue()); + } + + 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 ClassCastException("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 ClassCastException 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 ClassCastException("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 ClassCastException 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 ClassCastException("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 ClassCastException 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 ClassCastException("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 ClassCastException 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 instanceof String) + { + return (XMLTypeFactory.eINSTANCE.createHexBinary((String)value)); + } + + if (value == null) + { + return null; + } + + throw new ClassCastException("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); + } + + if (name == "java.lang.String" ) + { + return XMLTypeFactory.eINSTANCE.convertHexBinary((byte[])value); + } + + //Instead of throwing an ClassCastException 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 ClassCastException("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 ClassCastException 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 ClassCastException("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 ClassCastException 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 ClassCastException 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 ClassCastException("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 ClassCastException 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 ClassCastException("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 ClassCastException 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 ClassCastException("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 ClassCastException 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 ClassCastException("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 ClassCastException 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 ClassCastException("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 ClassCastException 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 ClassCastException("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); + } + + if (name == "byte[]") + { + return XMLTypeFactory.eINSTANCE.createHexBinary(value); + } + + // Instead of throwing an ClassCastException 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 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; + } + + protected static Property demandOpenProperty(Type type, String name, Object value, boolean isSequence) + { + TypeHelper typeHelper = TypeHelper.INSTANCE; //FB TODO: what TypeHelper to use? + + String uri = type.getURI() + "/" + type.getName(); // unique URI for open content properties on instances of the type + Property property = typeHelper.getOpenContentProperty(uri, name); + if (property != null) + return property; + + boolean isMany = isSequence; + boolean isContainment = false; + Type propertyType; + + if (value instanceof DataObject) + { + DataObject dataObject = (DataObject)value; + propertyType = dataObject.getType(); + isContainment = dataObject.getContainer() == null; + } + else if (value instanceof List && !((List)value).isEmpty()) + { + Object listValue = ((List)value).get(0); //TODO: get common base class if all values are not the same type? + if (listValue instanceof DataObject) + propertyType = ((DataObject)listValue).getType(); + else + propertyType = typeHelper.getType(listValue.getClass()); + isMany = true; + } + else + { + propertyType = typeHelper.getType(value.getClass()); + } + if (propertyType == null) + { + propertyType = ((ModelFactoryImpl)ModelFactory.INSTANCE).getObject(); + } + + Property newProperty = SDOUtil.createOpenContentProperty(HelperProvider.getDefaultContext(), uri, name, propertyType); + if (isMany) + SDOUtil.setMany(newProperty, isMany); + if (isContainment) + SDOUtil.setContainment(newProperty, isContainment); + + return newProperty; + } + + /** + * Process the default EMF path and minimal XPath syntax. + * This design is still under review and construction. + * + * Syntax: + * + *
+   * path = /? (step '/')* step
+   * step = feature
+   *      | feature '.' index_from_0 
+   *      | feature '[' index_from_1 ']'
+   *      | reference '[' attribute '=' value ']'
+   *      | ..
+   *      | '@' step
+   *
+ * + * 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) + { + return create(eObject, path, null); + } + + public static Accessor create(EObject eObject, String path, Object value) + { + Accessor result = pool.get(); + result.init(eObject, path, value); + 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 Object value; + + protected EStructuralFeature feature; + + protected int index; + + RuntimeException runtimeException; + + protected Accessor() + { + } + + //protected Accessor(EObject eObject, String path) + //{ + // init(eObject, path); + //} + + protected void init(EObject eObject, String path, Object value) + { + this.eObject = eObject; + this.value = value; + runtimeException = null; + + // 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; + } + + protected final void assertSuccessfulProcess() + { + if (runtimeException != null) + throw runtimeException; + } + + public void set(Object newValue) + { + assertSuccessfulProcess(); + 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 feature != null && eObject.eIsSet(feature); + } + + public boolean isSetAndRecyle() + { + boolean result = isSet(); + pool.recycle(this); + return result; + } + + public void unset() + { + assertSuccessfulProcess(); + 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() + { + assertSuccessfulProcess(); + return (Property)feature; + } + + protected void setFeatureName(String name) + { + if (name != null) + { + feature = (EStructuralFeature)((DataObject)eObject).getInstanceProperty(name); + if (feature == null) + { + int index = name.lastIndexOf('.'); + if (index == -1) + { + Type type = (Type)eObject.eClass(); + if (value != null && type.isOpen()) + { + feature = (EStructuralFeature)demandOpenProperty(type, name, value, false); + this.index = NO_INDEX; + return; + } + runtimeException = new IllegalArgumentException("Class '" + eObject.eClass().getName() + "' does not have a feature named '" + name + '\''); + } + else + { + int propertyNameEnd = index; + try + { + index = Integer.parseInt(name.substring(++index)); + // NumberFormatException may be thrown + String propertyName = name.substring(0, propertyNameEnd); + feature = (EStructuralFeature)((DataObject)eObject).getInstanceProperty(propertyName); + if (feature != null) + { + setIndex(index); + return; + } + runtimeException = new IllegalArgumentException("Class '" + eObject.eClass().getName() + "' does not have a feature named '" + name + "' or '" + propertyName + '\''); + } + catch(NumberFormatException eNumberFormat) + { + runtimeException = eNumberFormat; + } + } + setEObject(null); + } + } + 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 not be less than 0. + runtimeException = new IndexOutOfBoundsException("Index value is too low"); + setEObject(null); + return; + } + if (!FeatureMapUtil.isMany(eObject, feature)) + { + runtimeException = new IndexOutOfBoundsException("Index applies only to multi-valued features"); + setEObject(null); + return; + } + int size = ((List) eObject.eGet(feature)).size(); + if (index >= size) + { + // The index value should be less than size. + runtimeException = new IndexOutOfBoundsException("Index value should have been less than " + size); + setEObject(null); + } + this.index = index; + } + + 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()); + if (eObject == null) break; + } + else if ("..".equals(token)) + { + setEObject(eObject.eContainer()); + if (eObject == null) break; + } + else if ('[' == c) + { + x++; // skip [ + token = tokens.peek(x); // name or index + char following = tokens.peek(x + 1).charAt(0); + if ('=' != following) + { + try + { + setIndex(Integer.parseInt(token) - 1); + // runtimeException may be recorded + } + catch(NumberFormatException eNumberFormat) + { + runtimeException = eNumberFormat; + setEObject(null); + break; + } + if (runtimeException != null) + break; + 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); + break; + } + else + { + setIndex(index); + } + } + } + else if ('@' == c) + { + // skip @ + } + else + { + setFeatureName(token); + if (eObject == null) break; + } + } + } + + protected static int matchingIndex(List dataObjects, String attributeName, String attributeValue) + { + for (int i = 0, size = dataObjects.size(); i < size; i++) + { + DataObject dataObject = (DataObject)dataObjects.get(i); + Property property = getInstanceProperty(dataObject, attributeName); + if (property != null) + { + Object test = dataObject.get(property); + if (test != null) + { + String testString = EcoreUtil.convertToString((EDataType)property.getType(), 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 ':': + if (cPrev != c) + { + endToken(token, false); + } + token.append(c); + if (cNext != c) + { + endToken(token, false); + } + break; + + // double token (..) + case '.': + if (cNext == '.') + endToken(token, false); + token.append(c); + if (cPrev == '.') + 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 getInstanceProperty(DataObject dataObject, String propertyName) + { + ClassImpl type = (ClassImpl)dataObject.getType(); + Property property = type.getProperty(propertyName); + if (property == null) + { + property = type.getOpenProperty((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(); + try { + Property property = propertyIndex < typeProperties.size() ? + (Property)typeProperties.get(propertyIndex) : + (Property)dataObject.getInstanceProperties().get(propertyIndex); + + return property; + } catch (IndexOutOfBoundsException e) { + throw new IllegalArgumentException(); + } + } + + 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); + if ((type instanceof EClass) && !type.isAbstract()) { + EClass eClass = (EClass)type; + try { + return (DataObject)EcoreUtil.create(eClass); + } catch (ClassCastException e) { + throw new IllegalArgumentException(); + } + } + throw new IllegalArgumentException(); + } + + 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()); + resourceSet.setPackageRegistry(new EPackageRegistryImpl(HelperContextImpl.getBuiltInModelRegistry())); + resourceSet.setURIConverter(new SDOURIConverterImpl()); + } + + public static EClass createDocumentRoot() + { + EClass documentRootEClass = (EClass)SDOFactory.eINSTANCE.createClass(); + documentRootEClass.setName("DocumentRoot"); + ExtendedMetaData.INSTANCE.setName(documentRootEClass, ""); + ExtendedMetaData.INSTANCE.setContentKind(documentRootEClass, ExtendedMetaData.MIXED_CONTENT); + + EAttribute mixed = (EAttribute)SDOFactory.eINSTANCE.createAttribute(); + 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 = (EReference)SDOFactory.eINSTANCE.createReference(); + 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 = (EReference)SDOFactory.eINSTANCE.createReference(); + 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 root) + { + DataObject container = dataObject.getContainer(); + if (container == null) return path; + + if (container == root) { + throw new IllegalStateException("There is a cycle in the containment hierarchy of " + root); + } + + boolean first = path.length() == 0; + Property property = dataObject.getContainmentProperty(); + if (SDOUtil.isMany(property, dataObject)) + { + 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, root); + } + */ + + public static String getXPath(DataObject dataObject) + { + return SDOUtil.getXPath(dataObject); + //StringBuffer path = getXPath(dataObject, new StringBuffer(), dataObject); + //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); + } + + /** + * @deprecated SDO runtime initialization is no longer required + */ + 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; + } + */ + + /** + * Returns a unique list of meta object instance properties (stored in EAnnotations) + * + * @param metaObject - A Type or Property instance + * @return A list of commonj.sdo.Property instances + */ + public static List getMetaObjectInstanceProperties(EModelElement metaObject) + { + // Use the default helper context for now + // TypeHelper typeHelper = HelperProvider.getDefaultContext().getTypeHelper(); + HelperContext hc = HelperProvider.getDefaultContext(); + + List result = new UniqueEList(); + List annotations = metaObject.getEAnnotations(); + int size = annotations.size(); + for (int i=0; i + *
  • ignorableWhitespace
  • + *
  • skippedEntity
  • + *