summaryrefslogtreecommitdiffstats
path: root/sca-java-1.x/tags/java-stable-20060304/sca/model
diff options
context:
space:
mode:
Diffstat (limited to 'sca-java-1.x/tags/java-stable-20060304/sca/model')
-rw-r--r--sca-java-1.x/tags/java-stable-20060304/sca/model/LICENSE.txt202
-rw-r--r--sca-java-1.x/tags/java-stable-20060304/sca/model/pom.xml101
-rw-r--r--sca-java-1.x/tags/java-stable-20060304/sca/model/src/main/java/org/apache/tuscany/model/ModelRuntimeException.java41
-rw-r--r--sca-java-1.x/tags/java-stable-20060304/sca/model/src/main/java/org/apache/tuscany/model/assembly/Aggregate.java117
-rw-r--r--sca-java-1.x/tags/java-stable-20060304/sca/model/src/main/java/org/apache/tuscany/model/assembly/AggregatePart.java40
-rw-r--r--sca-java-1.x/tags/java-stable-20060304/sca/model/src/main/java/org/apache/tuscany/model/assembly/AssemblyFactory.java162
-rw-r--r--sca-java-1.x/tags/java-stable-20060304/sca/model/src/main/java/org/apache/tuscany/model/assembly/AssemblyModelContext.java64
-rw-r--r--sca-java-1.x/tags/java-stable-20060304/sca/model/src/main/java/org/apache/tuscany/model/assembly/AssemblyModelObject.java45
-rw-r--r--sca-java-1.x/tags/java-stable-20060304/sca/model/src/main/java/org/apache/tuscany/model/assembly/AssemblyModelVisitor.java32
-rw-r--r--sca-java-1.x/tags/java-stable-20060304/sca/model/src/main/java/org/apache/tuscany/model/assembly/Binding.java40
-rw-r--r--sca-java-1.x/tags/java-stable-20060304/sca/model/src/main/java/org/apache/tuscany/model/assembly/Component.java80
-rw-r--r--sca-java-1.x/tags/java-stable-20060304/sca/model/src/main/java/org/apache/tuscany/model/assembly/ComponentImplementation.java40
-rw-r--r--sca-java-1.x/tags/java-stable-20060304/sca/model/src/main/java/org/apache/tuscany/model/assembly/ComponentType.java66
-rw-r--r--sca-java-1.x/tags/java-stable-20060304/sca/model/src/main/java/org/apache/tuscany/model/assembly/ConfiguredPort.java57
-rw-r--r--sca-java-1.x/tags/java-stable-20060304/sca/model/src/main/java/org/apache/tuscany/model/assembly/ConfiguredProperty.java62
-rw-r--r--sca-java-1.x/tags/java-stable-20060304/sca/model/src/main/java/org/apache/tuscany/model/assembly/ConfiguredReference.java44
-rw-r--r--sca-java-1.x/tags/java-stable-20060304/sca/model/src/main/java/org/apache/tuscany/model/assembly/ConfiguredService.java36
-rw-r--r--sca-java-1.x/tags/java-stable-20060304/sca/model/src/main/java/org/apache/tuscany/model/assembly/EntryPoint.java64
-rw-r--r--sca-java-1.x/tags/java-stable-20060304/sca/model/src/main/java/org/apache/tuscany/model/assembly/Extensible.java38
-rw-r--r--sca-java-1.x/tags/java-stable-20060304/sca/model/src/main/java/org/apache/tuscany/model/assembly/ExternalService.java59
-rw-r--r--sca-java-1.x/tags/java-stable-20060304/sca/model/src/main/java/org/apache/tuscany/model/assembly/ModelInitException.java43
-rw-r--r--sca-java-1.x/tags/java-stable-20060304/sca/model/src/main/java/org/apache/tuscany/model/assembly/Module.java39
-rw-r--r--sca-java-1.x/tags/java-stable-20060304/sca/model/src/main/java/org/apache/tuscany/model/assembly/ModuleComponent.java47
-rw-r--r--sca-java-1.x/tags/java-stable-20060304/sca/model/src/main/java/org/apache/tuscany/model/assembly/ModuleFragment.java25
-rw-r--r--sca-java-1.x/tags/java-stable-20060304/sca/model/src/main/java/org/apache/tuscany/model/assembly/Multiplicity.java47
-rw-r--r--sca-java-1.x/tags/java-stable-20060304/sca/model/src/main/java/org/apache/tuscany/model/assembly/OverrideOption.java40
-rw-r--r--sca-java-1.x/tags/java-stable-20060304/sca/model/src/main/java/org/apache/tuscany/model/assembly/Port.java47
-rw-r--r--sca-java-1.x/tags/java-stable-20060304/sca/model/src/main/java/org/apache/tuscany/model/assembly/Property.java91
-rw-r--r--sca-java-1.x/tags/java-stable-20060304/sca/model/src/main/java/org/apache/tuscany/model/assembly/Reference.java36
-rw-r--r--sca-java-1.x/tags/java-stable-20060304/sca/model/src/main/java/org/apache/tuscany/model/assembly/RuntimeConfigurationHolder.java36
-rw-r--r--sca-java-1.x/tags/java-stable-20060304/sca/model/src/main/java/org/apache/tuscany/model/assembly/Scope.java32
-rw-r--r--sca-java-1.x/tags/java-stable-20060304/sca/model/src/main/java/org/apache/tuscany/model/assembly/Service.java24
-rw-r--r--sca-java-1.x/tags/java-stable-20060304/sca/model/src/main/java/org/apache/tuscany/model/assembly/ServiceContract.java62
-rw-r--r--sca-java-1.x/tags/java-stable-20060304/sca/model/src/main/java/org/apache/tuscany/model/assembly/ServiceURI.java53
-rw-r--r--sca-java-1.x/tags/java-stable-20060304/sca/model/src/main/java/org/apache/tuscany/model/assembly/SimpleComponent.java25
-rw-r--r--sca-java-1.x/tags/java-stable-20060304/sca/model/src/main/java/org/apache/tuscany/model/assembly/Subsystem.java38
-rw-r--r--sca-java-1.x/tags/java-stable-20060304/sca/model/src/main/java/org/apache/tuscany/model/assembly/Wire.java48
-rw-r--r--sca-java-1.x/tags/java-stable-20060304/sca/model/src/main/java/org/apache/tuscany/model/assembly/impl/AggregateImpl.java305
-rw-r--r--sca-java-1.x/tags/java-stable-20060304/sca/model/src/main/java/org/apache/tuscany/model/assembly/impl/AggregatePartImpl.java67
-rw-r--r--sca-java-1.x/tags/java-stable-20060304/sca/model/src/main/java/org/apache/tuscany/model/assembly/impl/AssemblyFactoryImpl.java204
-rw-r--r--sca-java-1.x/tags/java-stable-20060304/sca/model/src/main/java/org/apache/tuscany/model/assembly/impl/AssemblyModelContextImpl.java92
-rw-r--r--sca-java-1.x/tags/java-stable-20060304/sca/model/src/main/java/org/apache/tuscany/model/assembly/impl/AssemblyModelObjectImpl.java132
-rw-r--r--sca-java-1.x/tags/java-stable-20060304/sca/model/src/main/java/org/apache/tuscany/model/assembly/impl/BindingImpl.java96
-rw-r--r--sca-java-1.x/tags/java-stable-20060304/sca/model/src/main/java/org/apache/tuscany/model/assembly/impl/ComponentImpl.java222
-rw-r--r--sca-java-1.x/tags/java-stable-20060304/sca/model/src/main/java/org/apache/tuscany/model/assembly/impl/ComponentImplementationImpl.java108
-rw-r--r--sca-java-1.x/tags/java-stable-20060304/sca/model/src/main/java/org/apache/tuscany/model/assembly/impl/ComponentTypeImpl.java152
-rw-r--r--sca-java-1.x/tags/java-stable-20060304/sca/model/src/main/java/org/apache/tuscany/model/assembly/impl/ConfiguredPortImpl.java142
-rw-r--r--sca-java-1.x/tags/java-stable-20060304/sca/model/src/main/java/org/apache/tuscany/model/assembly/impl/ConfiguredPropertyImpl.java123
-rw-r--r--sca-java-1.x/tags/java-stable-20060304/sca/model/src/main/java/org/apache/tuscany/model/assembly/impl/ConfiguredReferenceImpl.java72
-rw-r--r--sca-java-1.x/tags/java-stable-20060304/sca/model/src/main/java/org/apache/tuscany/model/assembly/impl/ConfiguredServiceImpl.java48
-rw-r--r--sca-java-1.x/tags/java-stable-20060304/sca/model/src/main/java/org/apache/tuscany/model/assembly/impl/EntryPointImpl.java145
-rw-r--r--sca-java-1.x/tags/java-stable-20060304/sca/model/src/main/java/org/apache/tuscany/model/assembly/impl/ExtensibleImpl.java92
-rw-r--r--sca-java-1.x/tags/java-stable-20060304/sca/model/src/main/java/org/apache/tuscany/model/assembly/impl/ExternalServiceImpl.java135
-rw-r--r--sca-java-1.x/tags/java-stable-20060304/sca/model/src/main/java/org/apache/tuscany/model/assembly/impl/ModuleComponentImpl.java65
-rw-r--r--sca-java-1.x/tags/java-stable-20060304/sca/model/src/main/java/org/apache/tuscany/model/assembly/impl/ModuleFragmentImpl.java32
-rw-r--r--sca-java-1.x/tags/java-stable-20060304/sca/model/src/main/java/org/apache/tuscany/model/assembly/impl/ModuleImpl.java243
-rw-r--r--sca-java-1.x/tags/java-stable-20060304/sca/model/src/main/java/org/apache/tuscany/model/assembly/impl/PortImpl.java106
-rw-r--r--sca-java-1.x/tags/java-stable-20060304/sca/model/src/main/java/org/apache/tuscany/model/assembly/impl/PropertyImpl.java178
-rw-r--r--sca-java-1.x/tags/java-stable-20060304/sca/model/src/main/java/org/apache/tuscany/model/assembly/impl/ReferenceImpl.java50
-rw-r--r--sca-java-1.x/tags/java-stable-20060304/sca/model/src/main/java/org/apache/tuscany/model/assembly/impl/ServiceContractImpl.java81
-rw-r--r--sca-java-1.x/tags/java-stable-20060304/sca/model/src/main/java/org/apache/tuscany/model/assembly/impl/ServiceImpl.java32
-rw-r--r--sca-java-1.x/tags/java-stable-20060304/sca/model/src/main/java/org/apache/tuscany/model/assembly/impl/ServiceURIImpl.java198
-rw-r--r--sca-java-1.x/tags/java-stable-20060304/sca/model/src/main/java/org/apache/tuscany/model/assembly/impl/SimpleComponentImpl.java32
-rw-r--r--sca-java-1.x/tags/java-stable-20060304/sca/model/src/main/java/org/apache/tuscany/model/assembly/impl/SubsystemImpl.java49
-rw-r--r--sca-java-1.x/tags/java-stable-20060304/sca/model/src/main/java/org/apache/tuscany/model/assembly/impl/WireImpl.java66
-rw-r--r--sca-java-1.x/tags/java-stable-20060304/sca/model/src/main/java/org/apache/tuscany/model/assembly/loader/AssemblyModelLoader.java81
-rw-r--r--sca-java-1.x/tags/java-stable-20060304/sca/model/src/main/java/org/apache/tuscany/model/scdl/loader/SCDLModelLoader.java36
-rw-r--r--sca-java-1.x/tags/java-stable-20060304/sca/model/src/main/java/org/apache/tuscany/model/scdl/loader/impl/AssemblyModelLoadException.java41
-rw-r--r--sca-java-1.x/tags/java-stable-20060304/sca/model/src/main/java/org/apache/tuscany/model/scdl/loader/impl/SCDLAssemblyModelLoaderImpl.java198
-rw-r--r--sca-java-1.x/tags/java-stable-20060304/sca/model/src/main/java/org/apache/tuscany/model/scdl/loader/impl/SCDLModelContentHandlerImpl.java708
-rw-r--r--sca-java-1.x/tags/java-stable-20060304/sca/model/src/main/java/org/apache/tuscany/model/scdl/loader/impl/SCDLXMLReader.java109
-rw-r--r--sca-java-1.x/tags/java-stable-20060304/sca/model/src/main/java/org/apache/tuscany/model/types/java/JavaServiceContract.java27
-rw-r--r--sca-java-1.x/tags/java-stable-20060304/sca/model/src/main/java/org/apache/tuscany/model/types/java/impl/JavaServiceContractImpl.java81
-rw-r--r--sca-java-1.x/tags/java-stable-20060304/sca/model/src/main/java/org/apache/tuscany/model/types/wsdl/WSDLServiceContract.java52
-rw-r--r--sca-java-1.x/tags/java-stable-20060304/sca/model/src/main/java/org/apache/tuscany/model/types/wsdl/impl/WSDLServiceContractImpl.java212
-rw-r--r--sca-java-1.x/tags/java-stable-20060304/sca/model/src/main/java/org/apache/tuscany/model/util/ModelContentHandler.java71
-rw-r--r--sca-java-1.x/tags/java-stable-20060304/sca/model/src/main/java/org/apache/tuscany/model/util/ModelTransformer.java51
-rw-r--r--sca-java-1.x/tags/java-stable-20060304/sca/model/src/main/java/org/apache/tuscany/model/util/ModelTransformerImpl.java125
-rw-r--r--sca-java-1.x/tags/java-stable-20060304/sca/model/src/main/java/org/apache/tuscany/model/util/XMLNameUtil.java227
-rw-r--r--sca-java-1.x/tags/java-stable-20060304/sca/model/src/main/resources/model/assembly.mdl6092
-rw-r--r--sca-java-1.x/tags/java-stable-20060304/sca/model/src/main/resources/model/assembly.pptbin0 -> 60416 bytes
-rw-r--r--sca-java-1.x/tags/java-stable-20060304/sca/model/src/main/resources/model/sca-binding-sca.xsd21
-rw-r--r--sca-java-1.x/tags/java-stable-20060304/sca/model/src/main/resources/model/sca-binding-webservice.xsd22
-rw-r--r--sca-java-1.x/tags/java-stable-20060304/sca/model/src/main/resources/model/sca-core.xsd225
-rw-r--r--sca-java-1.x/tags/java-stable-20060304/sca/model/src/main/resources/model/sca-implementation-java.xsd22
-rw-r--r--sca-java-1.x/tags/java-stable-20060304/sca/model/src/main/resources/model/sca-interface-java.xsd23
-rw-r--r--sca-java-1.x/tags/java-stable-20060304/sca/model/src/main/resources/model/sca-interface-wsdl.xsd39
-rw-r--r--sca-java-1.x/tags/java-stable-20060304/sca/model/src/main/resources/model/sca.xsd19
-rw-r--r--sca-java-1.x/tags/java-stable-20060304/sca/model/src/main/resources/org/apache/tuscany/model/Messages.properties25
-rw-r--r--sca-java-1.x/tags/java-stable-20060304/sca/model/src/test/java/org/apache/tuscany/model/assembly/tests/SCDLAssemblyLoaderTestCase.java69
-rw-r--r--sca-java-1.x/tags/java-stable-20060304/sca/model/src/test/java/org/apache/tuscany/model/assembly/tests/SCDLXMLReaderTestCase.java67
-rw-r--r--sca-java-1.x/tags/java-stable-20060304/sca/model/src/test/java/org/apache/tuscany/model/assembly/tests/bigbank/account/services/account/AccountReport.java32
-rw-r--r--sca-java-1.x/tags/java-stable-20060304/sca/model/src/test/java/org/apache/tuscany/model/assembly/tests/bigbank/account/services/account/AccountService.java25
-rw-r--r--sca-java-1.x/tags/java-stable-20060304/sca/model/src/test/java/org/apache/tuscany/model/assembly/tests/bigbank/account/services/account/AccountService.wsdl78
-rw-r--r--sca-java-1.x/tags/java-stable-20060304/sca/model/src/test/java/org/apache/tuscany/model/assembly/tests/bigbank/account/services/account/AccountServiceImpl.java42
-rw-r--r--sca-java-1.x/tags/java-stable-20060304/sca/model/src/test/java/org/apache/tuscany/model/assembly/tests/bigbank/account/services/account/AccountSummary.java46
-rw-r--r--sca-java-1.x/tags/java-stable-20060304/sca/model/src/test/java/org/apache/tuscany/model/assembly/tests/bigbank/account/services/accountdata/AccountDataService.java26
-rw-r--r--sca-java-1.x/tags/java-stable-20060304/sca/model/src/test/java/org/apache/tuscany/model/assembly/tests/bigbank/account/services/accountdata/AccountDataServiceImpl.java48
-rw-r--r--sca-java-1.x/tags/java-stable-20060304/sca/model/src/test/java/org/apache/tuscany/model/assembly/tests/bigbank/account/services/accountdata/CheckingAccount.java39
-rw-r--r--sca-java-1.x/tags/java-stable-20060304/sca/model/src/test/java/org/apache/tuscany/model/assembly/tests/bigbank/account/services/accountdata/SavingsAccount.java39
-rw-r--r--sca-java-1.x/tags/java-stable-20060304/sca/model/src/test/java/org/apache/tuscany/model/assembly/tests/bigbank/account/services/accountdata/StockAccount.java48
-rw-r--r--sca-java-1.x/tags/java-stable-20060304/sca/model/src/test/java/org/apache/tuscany/model/assembly/tests/bigbank/account/services/stockquote/StockQuoteService.java24
-rw-r--r--sca-java-1.x/tags/java-stable-20060304/sca/model/src/test/java/org/apache/tuscany/model/assembly/tests/bigbank/account/services/stockquote/StockQuoteServiceImpl.java28
-rw-r--r--sca-java-1.x/tags/java-stable-20060304/sca/model/src/test/java/org/apache/tuscany/model/assembly/tests/bigbank/account/services/stockquote/StockQuoteWebService.wsdl98
-rw-r--r--sca-java-1.x/tags/java-stable-20060304/sca/model/src/test/resources/org/apache/tuscany/model/assembly/tests/sca.module58
-rw-r--r--sca-java-1.x/tags/java-stable-20060304/sca/model/src/test/resources/org/apache/tuscany/model/assembly/tests/sca.subsystem24
106 files changed, 14688 insertions, 0 deletions
diff --git a/sca-java-1.x/tags/java-stable-20060304/sca/model/LICENSE.txt b/sca-java-1.x/tags/java-stable-20060304/sca/model/LICENSE.txt
new file mode 100644
index 0000000000..d645695673
--- /dev/null
+++ b/sca-java-1.x/tags/java-stable-20060304/sca/model/LICENSE.txt
@@ -0,0 +1,202 @@
+
+ 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.
diff --git a/sca-java-1.x/tags/java-stable-20060304/sca/model/pom.xml b/sca-java-1.x/tags/java-stable-20060304/sca/model/pom.xml
new file mode 100644
index 0000000000..91ae36c3a4
--- /dev/null
+++ b/sca-java-1.x/tags/java-stable-20060304/sca/model/pom.xml
@@ -0,0 +1,101 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+ * Copyright (c) 2005-2006 The Apache Software Foundation or its licensors, as applicable.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ -->
+<project>
+ <parent>
+ <groupId>org.apache.tuscany</groupId>
+ <artifactId>tuscany-sca</artifactId>
+ <version>SNAPSHOT</version>
+ </parent>
+ <modelVersion>4.0.0</modelVersion>
+ <artifactId>tuscany-model</artifactId>
+ <name>Tuscany Assembly Model</name>
+ <description>Data model for the Assembly model defined by the SCA specification.</description>
+ <version>SNAPSHOT</version>
+
+ <dependencies>
+ <dependency>
+ <groupId>org.osoa</groupId>
+ <artifactId>sca-api</artifactId>
+ <version>${pom.version}</version>
+ <scope>compile</scope>
+ </dependency>
+ <dependency>
+ <groupId>org.apache.tuscany</groupId>
+ <artifactId>tuscany-common</artifactId>
+ <version>${pom.version}</version>
+ <scope>compile</scope>
+ </dependency>
+
+ <dependency>
+ <groupId>commonj</groupId>
+ <artifactId>sdo-api</artifactId>
+ <version>SNAPSHOT</version>
+ <scope>compile</scope>
+ </dependency>
+ <dependency>
+ <groupId>org.apache.tuscany</groupId>
+ <artifactId>tuscany-sdo-impl</artifactId>
+ <version>SNAPSHOT</version>
+ <scope>compile</scope>
+ </dependency>
+
+ <dependency>
+ <groupId>axis</groupId>
+ <artifactId>axis-wsdl4j</artifactId>
+ <version>1.2</version>
+ <scope>compile</scope>
+ </dependency>
+
+ <dependency>
+ <groupId>asm</groupId>
+ <artifactId>asm</artifactId>
+ <version>2.2</version>
+ <scope>compile</scope>
+ </dependency>
+
+ <dependency>
+ <groupId>junit</groupId>
+ <artifactId>junit</artifactId>
+ <version>3.8.1</version>
+ <scope>test</scope>
+ </dependency>
+ </dependencies>
+
+ <build>
+ <plugins>
+ <plugin>
+ <groupId>org.apache.tuscany</groupId>
+ <artifactId>tuscany-sdo-plugin</artifactId>
+ <executions>
+ <execution>
+ <configuration>
+ <schemaFile>${basedir}/src/main/resources/model/sca.xsd</schemaFile>
+ <generateLoader>true</generateLoader>
+ <generateSwitch>true</generateSwitch>
+ <noNotification>true</noNotification>
+ <noUnsettable>true</noUnsettable>
+ </configuration>
+ <goals>
+ <goal>generate</goal>
+ </goals>
+ </execution>
+ </executions>
+ </plugin>
+ </plugins>
+ </build>
+
+</project>
diff --git a/sca-java-1.x/tags/java-stable-20060304/sca/model/src/main/java/org/apache/tuscany/model/ModelRuntimeException.java b/sca-java-1.x/tags/java-stable-20060304/sca/model/src/main/java/org/apache/tuscany/model/ModelRuntimeException.java
new file mode 100644
index 0000000000..ba361fab89
--- /dev/null
+++ b/sca-java-1.x/tags/java-stable-20060304/sca/model/src/main/java/org/apache/tuscany/model/ModelRuntimeException.java
@@ -0,0 +1,41 @@
+/**
+ *
+ * Copyright 2005 The Apache Software Foundation or its licensors, as applicable.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with
+ * the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on
+ * an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations under the License.
+ */
+package org.apache.tuscany.model;
+
+import org.apache.tuscany.common.TuscanyRuntimeException;
+
+/**
+ * The root runtime exception for the model.
+ *
+ * @version $Rev$ $Date$
+ */
+public abstract class ModelRuntimeException extends TuscanyRuntimeException {
+
+ public ModelRuntimeException() {
+ super();
+ }
+
+ public ModelRuntimeException(String message) {
+ super(message);
+ }
+
+ public ModelRuntimeException(String message, Throwable cause) {
+ super(message, cause);
+ }
+
+ public ModelRuntimeException(Throwable cause) {
+ super(cause);
+ }
+
+}
diff --git a/sca-java-1.x/tags/java-stable-20060304/sca/model/src/main/java/org/apache/tuscany/model/assembly/Aggregate.java b/sca-java-1.x/tags/java-stable-20060304/sca/model/src/main/java/org/apache/tuscany/model/assembly/Aggregate.java
new file mode 100644
index 0000000000..d313a087d0
--- /dev/null
+++ b/sca-java-1.x/tags/java-stable-20060304/sca/model/src/main/java/org/apache/tuscany/model/assembly/Aggregate.java
@@ -0,0 +1,117 @@
+/**
+ *
+ * Copyright 2005 The Apache Software Foundation or its licensors, as applicable.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.apache.tuscany.model.assembly;
+
+import java.util.List;
+
+import javax.wsdl.Import;
+
+/**
+ * A model object that describes a container for other module objects, which must be {@link AggregatePart}s.
+ */
+public interface Aggregate extends Extensible {
+
+ /**
+ * Returns the name of the aggregate.
+ * @return the name of the aggregate
+ */
+ String getName();
+
+ /**
+ * Sets the name of the aggregate.
+ * @param name the name of the aggregate
+ */
+ void setName(String name);
+
+ /**
+ * Returns the AggregatePart objects that are contained in this aggregate.
+ * @return the AggregatePart objects that are contained in this aggregate
+ */
+ List<AggregatePart> getAggregateParts();
+
+ /**
+ * Helper method that returns all entry points contained in this aggregate.
+ * @return a list of all EntryPoint model objects driectly contained in this aggregate
+ */
+ List<EntryPoint> getEntryPoints();
+
+ /**
+ * Returns the named entry point.
+ * @param name
+ * @return
+ */
+ EntryPoint getEntryPoint(String name);
+
+ /**
+ * Helper method that returns all entry points contained in this aggregate.
+ * @return
+ */
+ List<Component> getComponents();
+
+ /**
+ * Returns the named component.
+ * @param name
+ * @return
+ */
+ Component getComponent(String name);
+
+ /**
+ * Returns external services contained in this aggregate.
+ * @return
+ */
+ List<ExternalService> getExternalServices();
+
+ /**
+ * Returns the named external service.
+ * @param name
+ * @return
+ */
+ ExternalService getExternalService(String name);
+
+ /**
+ * Returns the configured service at the given address.
+ * @param address
+ * @return
+ */
+ ConfiguredService getConfiguredService(ServiceURI address);
+
+ /**
+ * Returns the wires.
+ * @return
+ */
+ List<Wire> getWires();
+
+ /**
+ * Returns the WSDL imports.
+ * @return
+ */
+ List<Import> getWSDLImports();
+
+ /**
+ * Returns the WSDL imports for the given namespace.
+ * @param namespace
+ * @return
+ */
+ List<Import> getWSDLImports(String namespace);
+
+ /**
+ * Returns the assembly model context used by this aggregate.
+ * @return
+ */
+ AssemblyModelContext getAssemblyModelContext();
+
+}
diff --git a/sca-java-1.x/tags/java-stable-20060304/sca/model/src/main/java/org/apache/tuscany/model/assembly/AggregatePart.java b/sca-java-1.x/tags/java-stable-20060304/sca/model/src/main/java/org/apache/tuscany/model/assembly/AggregatePart.java
new file mode 100644
index 0000000000..f88458eaa8
--- /dev/null
+++ b/sca-java-1.x/tags/java-stable-20060304/sca/model/src/main/java/org/apache/tuscany/model/assembly/AggregatePart.java
@@ -0,0 +1,40 @@
+/**
+ *
+ * Copyright 2005 The Apache Software Foundation or its licensors, as applicable.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.apache.tuscany.model.assembly;
+
+/**
+ * A configured object that is contained inside an {@link Aggregate}.
+ */
+public interface AggregatePart extends AssemblyModelObject {
+ /**
+ * Returns the name that uniquely identifies this part within its containing aggregate.
+ * @return the name that uniquely identifies this part within its containing aggregate
+ */
+ String getName();
+
+ /**
+ * Sets the name that uniquely identifies this part within its containing aggregate.
+ * @param value the name that uniquely identifies this part within its containing aggregate
+ */
+ void setName(String value);
+
+ /**
+ * Returns the aggregate that contains this part.
+ * @return the aggregate that contains this part
+ */
+ Aggregate getAggregate();
+}
diff --git a/sca-java-1.x/tags/java-stable-20060304/sca/model/src/main/java/org/apache/tuscany/model/assembly/AssemblyFactory.java b/sca-java-1.x/tags/java-stable-20060304/sca/model/src/main/java/org/apache/tuscany/model/assembly/AssemblyFactory.java
new file mode 100644
index 0000000000..2f5715bd4e
--- /dev/null
+++ b/sca-java-1.x/tags/java-stable-20060304/sca/model/src/main/java/org/apache/tuscany/model/assembly/AssemblyFactory.java
@@ -0,0 +1,162 @@
+/**
+ *
+ * Copyright 2005 The Apache Software Foundation or its licensors, as applicable.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.apache.tuscany.model.assembly;
+
+import javax.xml.namespace.QName;
+
+import org.apache.tuscany.model.types.java.JavaServiceContract;
+import org.apache.tuscany.model.types.wsdl.WSDLServiceContract;
+
+/**
+ * The Factory for the assembly model.
+ * Provides a create method for each non-abstract class of the model.
+ */
+public interface AssemblyFactory {
+
+ /**
+ * Returns a new SimpleComponent.
+ * @return
+ */
+ SimpleComponent createSimpleComponent();
+
+ /**
+ * Returns a new ComponentType.
+ * @return
+ */
+ ComponentType createComponentType();
+
+ /**
+ * Returns a new EntryPoint.
+ * @return
+ */
+ EntryPoint createEntryPoint();
+
+ /**
+ * Returns a new ExternalService.
+ * @return
+ */
+ ExternalService createExternalService();
+
+ /**
+ * Returns a new JavaServiceContract.
+ * @return
+ */
+ JavaServiceContract createJavaServiceContract();
+
+ /**
+ * Returns a new Module.
+ * @return
+ */
+ Module createModule();
+
+ /**
+ * Returns a new ModuleComponent.
+ * @return
+ */
+ ModuleComponent createModuleComponent();
+
+ /**
+ * Returns a new ModuleFragment.
+ * @return
+ */
+ ModuleFragment createModuleFragment();
+
+ /**
+ * Returns a new Reference.
+ * @return
+ */
+ Reference createReference();
+
+ /**
+ * Returns a new ConfiguredReference.
+ * @return
+ */
+ ConfiguredReference createConfiguredReference();
+
+ /**
+ * Returns a new Service.
+ * @return
+ */
+ Service createService();
+
+ /**
+ * Returns a new ConfiguredService.
+ * @return
+ */
+ ConfiguredService createConfiguredService();
+
+ /**
+ * Returns a new Subsystem.
+ * @return
+ */
+ Subsystem createSubsystem();
+
+ /**
+ * Returns Property.
+ * @return
+ */
+ Property createProperty();
+
+ /**
+ * Returns a new ConfiguredProperty.
+ * @return
+ */
+ ConfiguredProperty createConfiguredProperty();
+
+ /**
+ * Returns a new WSDLServiceContract.
+ * @return
+ */
+ WSDLServiceContract createWSDLServiceContract();
+
+ /**
+ * Create a new ServiceURI from the given uri string.
+ * @param uri
+ * @return
+ */
+ ServiceURI createServiceURI(String uri);
+
+ /**
+ * Creates a new ServiceURI from a module component and a service name.
+ * @param moduleComponent
+ * @param serviceName
+ * @return
+ */
+ ServiceURI createServiceURI(ModuleComponent moduleComponent, String serviceName);
+
+ /**
+ * Creates a new ServiceURI from a module component and configured port.
+ * @param moduleComponent
+ * @param aggregatePart
+ * @param configuredPort
+ * @return
+ */
+ ServiceURI createServiceURI(ModuleComponent moduleComponent, AggregatePart aggregatePart, ConfiguredPort configuredPort);
+
+ /**
+ * Create a qname from a URI
+ * @param uri
+ * @return
+ */
+ QName createQName(String uri);
+
+ /**
+ * Create a wire
+ * @return
+ */
+ Wire createWire();
+}
diff --git a/sca-java-1.x/tags/java-stable-20060304/sca/model/src/main/java/org/apache/tuscany/model/assembly/AssemblyModelContext.java b/sca-java-1.x/tags/java-stable-20060304/sca/model/src/main/java/org/apache/tuscany/model/assembly/AssemblyModelContext.java
new file mode 100644
index 0000000000..43e6766b8b
--- /dev/null
+++ b/sca-java-1.x/tags/java-stable-20060304/sca/model/src/main/java/org/apache/tuscany/model/assembly/AssemblyModelContext.java
@@ -0,0 +1,64 @@
+/**
+ *
+ * Copyright 2005 The Apache Software Foundation or its licensors, as applicable.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.apache.tuscany.model.assembly;
+
+import org.apache.tuscany.common.resource.ResourceLoader;
+import org.apache.tuscany.model.assembly.loader.AssemblyModelLoader;
+
+import commonj.sdo.helper.TypeHelper;
+
+/**
+ * Context object supplied by visitors that are processing the model.
+ */
+public interface AssemblyModelContext {
+
+ /**
+ * Returns a factory that can be used to create other model objects
+ *
+ * @return a factory for model objects
+ */
+ AssemblyFactory getAssemblyFactory();
+
+ /**
+ * Returns a loader for resources in the system environment
+ *
+ * @return a resource loader
+ */
+ ResourceLoader getSystemResourceLoader();
+
+ /**
+ * Returns a loader for resources in the application environment.
+ *
+ * @return a loader for resources in the system environment
+ */
+ ResourceLoader getApplicationResourceLoader();
+
+ /**
+ * Returns a loader that can be used to load sub-models.
+ *
+ * @return a loader for sub-models
+ */
+ AssemblyModelLoader getAssemblyLoader();
+
+ /**
+ * Returns an SDO type helper.
+ *
+ * @return an SDO type helper
+ */
+ TypeHelper getTypeHelper();
+
+}
diff --git a/sca-java-1.x/tags/java-stable-20060304/sca/model/src/main/java/org/apache/tuscany/model/assembly/AssemblyModelObject.java b/sca-java-1.x/tags/java-stable-20060304/sca/model/src/main/java/org/apache/tuscany/model/assembly/AssemblyModelObject.java
new file mode 100644
index 0000000000..e9a32ed4ce
--- /dev/null
+++ b/sca-java-1.x/tags/java-stable-20060304/sca/model/src/main/java/org/apache/tuscany/model/assembly/AssemblyModelObject.java
@@ -0,0 +1,45 @@
+/**
+ *
+ * Copyright 2005 The Apache Software Foundation or its licensors, as applicable.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.apache.tuscany.model.assembly;
+
+/**
+ * Base interface for all assembly model objects providing methods for managing the model itself.
+ */
+public interface AssemblyModelObject {
+
+ /**
+ * Initialize this model object.
+ *
+ * @param modelContext context providing access to the environment in which this model is being used
+ * @throws ModelInitException if an error ocurrs initializing the artifact
+ */
+ void initialize(AssemblyModelContext modelContext) throws ModelInitException;
+
+ /**
+ * Freeze this model object preventing any additional changes.
+ */
+ void freeze();
+
+ /**
+ * Accept a visitor
+ *
+ * @param visitor a visitor that is visiting the model
+ * @return true if processing is complete and the visitor should stop traversing the model
+ */
+ boolean accept(AssemblyModelVisitor visitor);
+
+}
diff --git a/sca-java-1.x/tags/java-stable-20060304/sca/model/src/main/java/org/apache/tuscany/model/assembly/AssemblyModelVisitor.java b/sca-java-1.x/tags/java-stable-20060304/sca/model/src/main/java/org/apache/tuscany/model/assembly/AssemblyModelVisitor.java
new file mode 100644
index 0000000000..9f3153e953
--- /dev/null
+++ b/sca-java-1.x/tags/java-stable-20060304/sca/model/src/main/java/org/apache/tuscany/model/assembly/AssemblyModelVisitor.java
@@ -0,0 +1,32 @@
+/**
+ *
+ * Copyright 2005 The Apache Software Foundation or its licensors, as applicable.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.apache.tuscany.model.assembly;
+
+/**
+ * A visitor that traverses the model performing some operation.
+ */
+public interface AssemblyModelVisitor {
+
+ /**
+ * Visit the given model object.
+ *
+ * @param modelObject the assembly model object to visit
+ * @return true if processing is complete
+ */
+ boolean visit(AssemblyModelObject modelObject);
+
+}
diff --git a/sca-java-1.x/tags/java-stable-20060304/sca/model/src/main/java/org/apache/tuscany/model/assembly/Binding.java b/sca-java-1.x/tags/java-stable-20060304/sca/model/src/main/java/org/apache/tuscany/model/assembly/Binding.java
new file mode 100644
index 0000000000..61207186e3
--- /dev/null
+++ b/sca-java-1.x/tags/java-stable-20060304/sca/model/src/main/java/org/apache/tuscany/model/assembly/Binding.java
@@ -0,0 +1,40 @@
+/**
+ *
+ * Copyright 2005 The Apache Software Foundation or its licensors, as applicable.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.apache.tuscany.model.assembly;
+
+
+/**
+ * The binding of an entry point or external service to a transport.
+ * This model object will typically by extended by binding implementations to allow
+ * specification of binding/transport specific information.
+ */
+public interface Binding extends AssemblyModelObject, RuntimeConfigurationHolder {
+ /**
+ * Returns the binding URI.
+ * @return the binding uri
+ * todo do we need this?
+ */
+ String getURI();
+
+ /**
+ * Sets binding URI.
+ * @param value the binding uri
+ * todo do we need this?
+ */
+ void setURI(String value);
+
+}
diff --git a/sca-java-1.x/tags/java-stable-20060304/sca/model/src/main/java/org/apache/tuscany/model/assembly/Component.java b/sca-java-1.x/tags/java-stable-20060304/sca/model/src/main/java/org/apache/tuscany/model/assembly/Component.java
new file mode 100644
index 0000000000..86dd1c5f12
--- /dev/null
+++ b/sca-java-1.x/tags/java-stable-20060304/sca/model/src/main/java/org/apache/tuscany/model/assembly/Component.java
@@ -0,0 +1,80 @@
+/**
+ *
+ * Copyright 2005 The Apache Software Foundation or its licensors, as applicable.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.apache.tuscany.model.assembly;
+
+import java.util.List;
+
+
+/**
+ * A component is a configured instance of a generic {@link ComponentImplementation}.
+ */
+public interface Component extends Extensible, AggregatePart {
+
+ /**
+ * Returns the ComponentImplementation for this configured instance.
+ * @return the ComponentImplementation for this configured instance
+ */
+ ComponentImplementation getComponentImplementation();
+
+ /**
+ * Sets the ComponentImplementation for this configured instance
+ * @param value the ComponentImplementation for this configured instance
+ */
+ void setComponentImplementation(ComponentImplementation value);
+
+ /**
+ * Returns a list of configured property values for this configured instance.
+ * These values will be used to initialize the component when it is activated.
+ * @return a list of ConfiguredProperty values
+ */
+ List<ConfiguredProperty> getConfiguredProperties();
+
+ /**
+ * Returns the ConfiguredProperty value for the specified property.
+ *
+ * @param name the name of the Property
+ * @return the configured property value for the named property
+ */
+ ConfiguredProperty getConfiguredProperty(String name);
+
+ /**
+ * Returns a list of configured reference values for the configured instance.
+ * @return a list of configured reference values for the configured instance
+ */
+ List<ConfiguredReference> getConfiguredReferences();
+
+ /**
+ * Returns the ConfiguredReference value for the specified reference.
+ * @param name the name of the Property
+ * @return the configured reference value for the named reference
+ */
+ ConfiguredReference getConfiguredReference(String name);
+
+ /**
+ * Returns the configured services for the configured instance.
+ * @return the configured services for the configured instance
+ */
+ List<ConfiguredService> getConfiguredServices();
+
+ /**
+ * Returns the ConfiguredService value for the specified property.
+ * @param name the name of the Property
+ * @return the configured service value for the named service
+ */
+ ConfiguredService getConfiguredService(String name);
+
+}
diff --git a/sca-java-1.x/tags/java-stable-20060304/sca/model/src/main/java/org/apache/tuscany/model/assembly/ComponentImplementation.java b/sca-java-1.x/tags/java-stable-20060304/sca/model/src/main/java/org/apache/tuscany/model/assembly/ComponentImplementation.java
new file mode 100644
index 0000000000..9bae24522e
--- /dev/null
+++ b/sca-java-1.x/tags/java-stable-20060304/sca/model/src/main/java/org/apache/tuscany/model/assembly/ComponentImplementation.java
@@ -0,0 +1,40 @@
+/**
+ *
+ * Copyright 2005 The Apache Software Foundation or its licensors, as applicable.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.apache.tuscany.model.assembly;
+
+
+/**
+ * The implementation for a specific component instance.
+ * This interface will typically be extended by component type implementations to indicate the
+ * specific implementation to be used by a runtime and to allow for additional runtime configuration
+ * properties.
+ */
+public interface ComponentImplementation extends Extensible, RuntimeConfigurationHolder {
+
+ /**
+ * Returns the generic component type corresponding to this implementation.
+ * @return the generic component type corresponding to this implementation
+ */
+ ComponentType getComponentType();
+
+ /**
+ * Sets the generic component type corresponding to this implementation.
+ * @param componentType the generic component type corresponding to this implementation
+ */
+ void setComponentType(ComponentType componentType);
+
+}
diff --git a/sca-java-1.x/tags/java-stable-20060304/sca/model/src/main/java/org/apache/tuscany/model/assembly/ComponentType.java b/sca-java-1.x/tags/java-stable-20060304/sca/model/src/main/java/org/apache/tuscany/model/assembly/ComponentType.java
new file mode 100644
index 0000000000..58ac9bc9de
--- /dev/null
+++ b/sca-java-1.x/tags/java-stable-20060304/sca/model/src/main/java/org/apache/tuscany/model/assembly/ComponentType.java
@@ -0,0 +1,66 @@
+/**
+ *
+ * Copyright 2005 The Apache Software Foundation or its licensors, as applicable.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.apache.tuscany.model.assembly;
+
+import java.util.List;
+
+
+/**
+ * A logical definition of a type of component separate from any specific implementation.
+ */
+public interface ComponentType extends Extensible {
+
+ /**
+ * Returns a list of services exposed by this component type.
+ * @return a list of services exposed by this component type
+ */
+ List<Service> getServices();
+
+ /**
+ * Returns the specfied service if exposed by this component type.
+ * @param name the name of the service
+ * @return the service identified by the supplied name, or null if there is no service with that name
+ */
+ Service getService(String name);
+
+ /**
+ * Returns the list of references this component type consumes.
+ * @return the list of references this component type consumes
+ */
+ List<Reference> getReferences();
+
+ /**
+ * Returns the specified reference.
+ * @param name the name of the reference
+ * @return the reference identified by the supplied name, or null if there is no reference with that name
+ */
+ Reference getReference(String name);
+
+ /**
+ * Returns the list of properties that can be used to configure components with this component type.
+ * @return the list of properties that can be used to configure components with this component type
+ */
+ List<Property> getProperties();
+
+ /**
+ * Returns the specified property
+ * @param name the name of the property
+ * @return the property with the supplied name, or null if there is no property with that name
+ */
+ Property getProperty(String name);
+
+}
diff --git a/sca-java-1.x/tags/java-stable-20060304/sca/model/src/main/java/org/apache/tuscany/model/assembly/ConfiguredPort.java b/sca-java-1.x/tags/java-stable-20060304/sca/model/src/main/java/org/apache/tuscany/model/assembly/ConfiguredPort.java
new file mode 100644
index 0000000000..d40e852e88
--- /dev/null
+++ b/sca-java-1.x/tags/java-stable-20060304/sca/model/src/main/java/org/apache/tuscany/model/assembly/ConfiguredPort.java
@@ -0,0 +1,57 @@
+/**
+ *
+ * Copyright 2005 The Apache Software Foundation or its licensors, as applicable.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.apache.tuscany.model.assembly;
+
+
+/**
+ * Represents a configured port (e.g. a configured reference or configured service).
+ */
+public interface ConfiguredPort extends AssemblyModelObject, RuntimeConfigurationHolder {
+
+ /**
+ * Returns the port that is being configured.
+ * @return the port that is being configured
+ */
+ Port getPort();
+
+ /**
+ * Sets the port that is being configured.
+ * @param port the port that is being configured
+ */
+ void setPort(Port port);
+
+ /**
+ * Returns the aggregate part containing this port.
+ * @return the aggregate part that contains this port
+ */
+ AggregatePart getAggregatePart();
+
+ /**
+ * Returns the port's proxy factory
+ * @return the port's proxy factory
+ * todo should this be here or should it be provided in a sub-interface?
+ */
+ Object getProxyFactory();
+
+ /**
+ * Sets the port's proxy factory
+ * @param proxyFactory the port's proxy factory
+ * todo should this be here or should it be provided in a sub-interface?
+ */
+ void setProxyFactory(Object proxyFactory);
+
+}
diff --git a/sca-java-1.x/tags/java-stable-20060304/sca/model/src/main/java/org/apache/tuscany/model/assembly/ConfiguredProperty.java b/sca-java-1.x/tags/java-stable-20060304/sca/model/src/main/java/org/apache/tuscany/model/assembly/ConfiguredProperty.java
new file mode 100644
index 0000000000..0a28c0a7bf
--- /dev/null
+++ b/sca-java-1.x/tags/java-stable-20060304/sca/model/src/main/java/org/apache/tuscany/model/assembly/ConfiguredProperty.java
@@ -0,0 +1,62 @@
+/**
+ *
+ * Copyright 2005 The Apache Software Foundation or its licensors, as applicable.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.apache.tuscany.model.assembly;
+
+/**
+ * The configured value of a {@link Property}.
+ */
+public interface ConfiguredProperty extends AssemblyModelObject {
+
+ /**
+ * Returns the {@link Property} whose value is being set.
+ * @return the {@link Property} whose value is being set
+ */
+ Property getProperty();
+
+ /**
+ * Sets the {@link Property} whose value is being set.
+ * @param property the {@link Property} whose value is being set
+ */
+ void setProperty(Property property);
+
+ /**
+ * Returns the value being set for this usage of the {@link Property}.
+ * @return the value being set for this usage of the {@link Property}
+ */
+ Object getValue();
+
+ /**
+ * Sets the value being set for this usage of the {@link Property}.
+ * @param value the value being set for this usage of the {@link Property}
+ */
+ void setValue(Object value);
+
+ /**
+ * Returns the override option that determines if any configuration for this property
+ * that is contained in this aggregate can be overridden by configuration supplied from outside.
+ */
+ OverrideOption getOverrideOption();
+
+ /**
+ * Set the override option that determines if any configuration for this property
+ * that is contained in this aggregate can be overridden by configuration supplied from outside.
+ *
+ * @param value the option that determines how property configuration can be overriden
+ */
+ void setOverrideOption(OverrideOption value);
+
+}
diff --git a/sca-java-1.x/tags/java-stable-20060304/sca/model/src/main/java/org/apache/tuscany/model/assembly/ConfiguredReference.java b/sca-java-1.x/tags/java-stable-20060304/sca/model/src/main/java/org/apache/tuscany/model/assembly/ConfiguredReference.java
new file mode 100644
index 0000000000..972c6812d8
--- /dev/null
+++ b/sca-java-1.x/tags/java-stable-20060304/sca/model/src/main/java/org/apache/tuscany/model/assembly/ConfiguredReference.java
@@ -0,0 +1,44 @@
+/**
+ *
+ * Copyright 2005 The Apache Software Foundation or its licensors, as applicable.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.apache.tuscany.model.assembly;
+
+import java.util.List;
+
+/**
+ * A configured reference associated with a particular usage.
+ */
+public interface ConfiguredReference extends ConfiguredPort {
+
+ /**
+ * Returns the {@link Reference} that is being configured.
+ * @return the {@link Reference} that is being configured
+ */
+ Reference getReference();
+
+ /**
+ * Sets the {@link Reference} that is being configured.
+ * @param reference the {@link Reference} that is being configured
+ */
+ void setReference(Reference reference);
+
+ /**
+ * Returns the list of configured services that are wired to this configured reference.
+ * @return the list of configured services that are wired to this configured reference
+ */
+ List<ConfiguredService> getTargetConfiguredServices();
+
+}
diff --git a/sca-java-1.x/tags/java-stable-20060304/sca/model/src/main/java/org/apache/tuscany/model/assembly/ConfiguredService.java b/sca-java-1.x/tags/java-stable-20060304/sca/model/src/main/java/org/apache/tuscany/model/assembly/ConfiguredService.java
new file mode 100644
index 0000000000..14b1c0abbe
--- /dev/null
+++ b/sca-java-1.x/tags/java-stable-20060304/sca/model/src/main/java/org/apache/tuscany/model/assembly/ConfiguredService.java
@@ -0,0 +1,36 @@
+/**
+ *
+ * Copyright 2005 The Apache Software Foundation or its licensors, as applicable.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.apache.tuscany.model.assembly;
+
+
+/**
+ * A configured service associated with a particular usage.
+ */
+public interface ConfiguredService extends ConfiguredPort {
+ /**
+ * Returns the {@link Service} that is being configured.
+ * @return the {@link Service} that is being configured
+ */
+ Service getService();
+
+ /**
+ * Sets the {@link Service} that is being configured.
+ * @param service the {@link Service} that is being configured
+ */
+ void setService(Service service);
+
+}
diff --git a/sca-java-1.x/tags/java-stable-20060304/sca/model/src/main/java/org/apache/tuscany/model/assembly/EntryPoint.java b/sca-java-1.x/tags/java-stable-20060304/sca/model/src/main/java/org/apache/tuscany/model/assembly/EntryPoint.java
new file mode 100644
index 0000000000..718ae996c5
--- /dev/null
+++ b/sca-java-1.x/tags/java-stable-20060304/sca/model/src/main/java/org/apache/tuscany/model/assembly/EntryPoint.java
@@ -0,0 +1,64 @@
+/**
+ *
+ * Copyright 2005 The Apache Software Foundation or its licensors, as applicable.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.apache.tuscany.model.assembly;
+
+import java.util.List;
+
+
+/**
+ * An entry point exposed by its containing {@link Aggregate}.
+ * References from outside the Aggregate can only be connected to its entry points.
+ */
+public interface EntryPoint extends AggregatePart, Extensible {
+
+ /**
+ * Returns the bindings supported by this entry point.
+ * A single entry point may be bound to multiple transports.
+ *
+ * @return a list of bindings supported by this entry point
+ */
+ List<Binding> getBindings();
+
+ /**
+ * Returns the configured service exposed by this entry point.
+ *
+ * @return the configured service exposed by this entry point
+ */
+ ConfiguredService getConfiguredService();
+
+ /**
+ * Sets the configured service exposed by this entry point.
+ *
+ * @param configuredService the configured service exposed by this entry point
+ */
+ void setConfiguredService(ConfiguredService configuredService);
+
+ /**
+ * Returns the configured reference that wires this entry point to the published service inside the aggregate.
+ *
+ * @return the reference that wires this entry point to the published service
+ */
+ ConfiguredReference getConfiguredReference();
+
+ /**
+ * Sets the configured reference that wires this entry point to the published service inside the aggregate.
+ *
+ * @param configuredReference the configured reference that wires this entry point to the published service inside the aggregate
+ */
+ void setConfiguredReference(ConfiguredReference configuredReference);
+
+}
diff --git a/sca-java-1.x/tags/java-stable-20060304/sca/model/src/main/java/org/apache/tuscany/model/assembly/Extensible.java b/sca-java-1.x/tags/java-stable-20060304/sca/model/src/main/java/org/apache/tuscany/model/assembly/Extensible.java
new file mode 100644
index 0000000000..2a5b5878f8
--- /dev/null
+++ b/sca-java-1.x/tags/java-stable-20060304/sca/model/src/main/java/org/apache/tuscany/model/assembly/Extensible.java
@@ -0,0 +1,38 @@
+/**
+ *
+ * Copyright 2005 The Apache Software Foundation or its licensors, as applicable.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.apache.tuscany.model.assembly;
+
+import java.util.List;
+
+/**
+ * An extensible model object.
+ * TODO do we actually need this given we have the ability to load specializations of individual model objects
+ * TODO is this the bext interface for this?
+ */
+public interface Extensible extends AssemblyModelObject {
+
+ /**
+ * Returns the extensibility elements.
+ */
+ List getExtensibilityElements();
+
+ /**
+ * Returns the extensibility attributes.
+ */
+ List getExtensibilityAttributes();
+
+}
diff --git a/sca-java-1.x/tags/java-stable-20060304/sca/model/src/main/java/org/apache/tuscany/model/assembly/ExternalService.java b/sca-java-1.x/tags/java-stable-20060304/sca/model/src/main/java/org/apache/tuscany/model/assembly/ExternalService.java
new file mode 100644
index 0000000000..a30000f387
--- /dev/null
+++ b/sca-java-1.x/tags/java-stable-20060304/sca/model/src/main/java/org/apache/tuscany/model/assembly/ExternalService.java
@@ -0,0 +1,59 @@
+/**
+ *
+ * Copyright 2005 The Apache Software Foundation or its licensors, as applicable.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.apache.tuscany.model.assembly;
+
+import java.util.List;
+
+
+/**
+ * An external service consumed by its containing {@link Aggregate}.
+ * All references used by the aggregate are specified as external services.
+ */
+public interface ExternalService extends AggregatePart, Extensible {
+
+ /**
+ * Returns the bindings that can be used by operations on this external service.
+ * A single external service may be bound to multiple transports.
+ */
+ List<Binding> getBindings();
+
+ /**
+ * Returns the override option that determines if any wiring for this external service
+ * that is contained in this aggregate can be overridden by wired supplied from outside.
+ */
+ OverrideOption getOverrideOption();
+
+ /**
+ * Set the override option that determines if any wiring for this external service
+ * that is contained in this aggregate can be overridden by wired supplied from outside.
+ *
+ * @param value the option that determines how wires can be overriden
+ */
+ void setOverrideOption(OverrideOption value);
+
+ /**
+ * Returns the configured service that this external service provides to other parts of the containing aggregate.
+ * @return the configured service that this external service provides to other parts of the containing aggregate
+ */
+ ConfiguredService getConfiguredService();
+
+ /**
+ * Sets the configured service that this external service provides to other parts of the containing aggregate
+ * @param configuredService the configured service that this external service provides to other parts of the containing aggregate
+ */
+ void setConfiguredService(ConfiguredService configuredService);
+}
diff --git a/sca-java-1.x/tags/java-stable-20060304/sca/model/src/main/java/org/apache/tuscany/model/assembly/ModelInitException.java b/sca-java-1.x/tags/java-stable-20060304/sca/model/src/main/java/org/apache/tuscany/model/assembly/ModelInitException.java
new file mode 100644
index 0000000000..4af3737a5d
--- /dev/null
+++ b/sca-java-1.x/tags/java-stable-20060304/sca/model/src/main/java/org/apache/tuscany/model/assembly/ModelInitException.java
@@ -0,0 +1,43 @@
+/**
+ *
+ * Copyright 2005 The Apache Software Foundation or its licensors, as applicable.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with
+ * the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on
+ * an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations under the License.
+ */
+package org.apache.tuscany.model.assembly;
+
+import org.apache.tuscany.model.ModelRuntimeException;
+
+/**
+ * Denotes an exception initializing an assembly model artifact
+ *
+ * @version $Rev$ $Date$
+ */
+public class ModelInitException extends ModelRuntimeException {
+ // todo serialuid
+
+ public ModelInitException() {
+ super();
+ }
+
+ public ModelInitException(String message) {
+ super(message);
+ }
+
+ public ModelInitException(String message, Throwable cause) {
+ super(message, cause);
+ }
+
+ public ModelInitException(Throwable cause) {
+ super(cause);
+ }
+
+}
+
diff --git a/sca-java-1.x/tags/java-stable-20060304/sca/model/src/main/java/org/apache/tuscany/model/assembly/Module.java b/sca-java-1.x/tags/java-stable-20060304/sca/model/src/main/java/org/apache/tuscany/model/assembly/Module.java
new file mode 100644
index 0000000000..90f9fbf9b2
--- /dev/null
+++ b/sca-java-1.x/tags/java-stable-20060304/sca/model/src/main/java/org/apache/tuscany/model/assembly/Module.java
@@ -0,0 +1,39 @@
+/**
+ *
+ * Copyright 2005 The Apache Software Foundation or its licensors, as applicable.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.apache.tuscany.model.assembly;
+
+import java.util.List;
+
+/**
+ * A specialized {@link ComponentImplementation} that defines a modular unit of assembly.
+ * A Module denotes the extent of assembly in which pass-by-reference semantics are supported.
+ */
+public interface Module extends Aggregate, ComponentImplementation {
+ /**
+ * Returns a list of assembly fragments that combine to form a single module.
+ * @return a list of assembly fragments that combine to form a single module
+ */
+ List<ModuleFragment> getModuleFragments();
+
+ /**
+ * Returns the specified assembly fragment.
+ * @param name the name of the fragment
+ * @return the fragment with the specified name, or null if there is no fragment with that name
+ */
+ ModuleFragment getModuleFragment(String name);
+
+}
diff --git a/sca-java-1.x/tags/java-stable-20060304/sca/model/src/main/java/org/apache/tuscany/model/assembly/ModuleComponent.java b/sca-java-1.x/tags/java-stable-20060304/sca/model/src/main/java/org/apache/tuscany/model/assembly/ModuleComponent.java
new file mode 100644
index 0000000000..13125076ea
--- /dev/null
+++ b/sca-java-1.x/tags/java-stable-20060304/sca/model/src/main/java/org/apache/tuscany/model/assembly/ModuleComponent.java
@@ -0,0 +1,47 @@
+/**
+ *
+ * Copyright 2005 The Apache Software Foundation or its licensors, as applicable.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.apache.tuscany.model.assembly;
+
+/**
+ * Specialization of Component that represents a configured {@link Module}.
+ */
+public interface ModuleComponent extends Component {
+ // todo do we need this or can we just override getComponentImplementation() ?
+ /**
+ * Returns the module implementing this module component.
+ * @return the module implementing this module component
+ */
+ Module getModuleImplementation();
+
+ /**
+ * Set the module implementing this module component.
+ * @param module the module implementing this module component
+ */
+ void setModuleImplementation(Module module);
+
+ /**
+ * Returns the uri that uniquely identifies this module component.
+ * @return the uri that uniquely identifies this module component
+ */
+ String getURI();
+
+ /**
+ * Sets the uri that uniquely identifies this module component.
+ * @param uri the uri that uniquely identifies this module component
+ */
+ void setURI(String uri);
+}
diff --git a/sca-java-1.x/tags/java-stable-20060304/sca/model/src/main/java/org/apache/tuscany/model/assembly/ModuleFragment.java b/sca-java-1.x/tags/java-stable-20060304/sca/model/src/main/java/org/apache/tuscany/model/assembly/ModuleFragment.java
new file mode 100644
index 0000000000..f268524c3f
--- /dev/null
+++ b/sca-java-1.x/tags/java-stable-20060304/sca/model/src/main/java/org/apache/tuscany/model/assembly/ModuleFragment.java
@@ -0,0 +1,25 @@
+/**
+ *
+ * Copyright 2005 The Apache Software Foundation or its licensors, as applicable.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.apache.tuscany.model.assembly;
+
+/**
+ * A fragment of assembly configuration within a module.
+ * To support flexibility and reuse, modules can be defined in multiple fragments that are
+ * then combined by the runtime to form the complete module definition.
+ */
+public interface ModuleFragment extends Aggregate {
+}
diff --git a/sca-java-1.x/tags/java-stable-20060304/sca/model/src/main/java/org/apache/tuscany/model/assembly/Multiplicity.java b/sca-java-1.x/tags/java-stable-20060304/sca/model/src/main/java/org/apache/tuscany/model/assembly/Multiplicity.java
new file mode 100644
index 0000000000..78ff6ede2f
--- /dev/null
+++ b/sca-java-1.x/tags/java-stable-20060304/sca/model/src/main/java/org/apache/tuscany/model/assembly/Multiplicity.java
@@ -0,0 +1,47 @@
+/**
+ *
+ * Copyright 2005 BEA Systems Inc.
+ * Copyright 2005 International Business Machines Corporation
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.apache.tuscany.model.assembly;
+
+/**
+ * Enumeration for multiplicity.
+ */
+public enum Multiplicity {
+ /**
+ * Indicates a relationship that is optionally connected to the requestor and which, if supplied,
+ * must be connected to exactly one provider.
+ */
+ ZERO_ONE,
+
+ /**
+ * Indicates a relationship that must be connected between exactly one requestor and
+ * exactly one provider.
+ */
+ ONE_ONE,
+
+ /**
+ * Indicates a relationship that is optionally connects the requestor to zero to unbounded providers.
+ */
+ ZERO_N,
+
+ /**
+ * Indicates a relationship that must be connected at the requestor and which connects it to
+ * zero to unbounded providers.
+ */
+ ONE_N
+
+}
diff --git a/sca-java-1.x/tags/java-stable-20060304/sca/model/src/main/java/org/apache/tuscany/model/assembly/OverrideOption.java b/sca-java-1.x/tags/java-stable-20060304/sca/model/src/main/java/org/apache/tuscany/model/assembly/OverrideOption.java
new file mode 100644
index 0000000000..62c7b3fb7a
--- /dev/null
+++ b/sca-java-1.x/tags/java-stable-20060304/sca/model/src/main/java/org/apache/tuscany/model/assembly/OverrideOption.java
@@ -0,0 +1,40 @@
+/**
+ *
+ * Copyright 2005 BEA Systems Inc.
+ * Copyright 2005 International Business Machines Corporation
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.apache.tuscany.model.assembly;
+
+/**
+ * Enumeration for override options that are used to control whether configuration information
+ * can be overridden by larger grained definitions.
+ */
+public enum OverrideOption {
+ /**
+ * Indicates that the supplied configuration cannot be overridden.
+ */
+ NO,
+
+ /**
+ * Indicates that the supplied configuration may be overriden.
+ */
+ MAY,
+
+ /**
+ * Indicates that the supplied configuration must be overriden.
+ */
+ MUST
+
+}
diff --git a/sca-java-1.x/tags/java-stable-20060304/sca/model/src/main/java/org/apache/tuscany/model/assembly/Port.java b/sca-java-1.x/tags/java-stable-20060304/sca/model/src/main/java/org/apache/tuscany/model/assembly/Port.java
new file mode 100644
index 0000000000..5dadfa0d63
--- /dev/null
+++ b/sca-java-1.x/tags/java-stable-20060304/sca/model/src/main/java/org/apache/tuscany/model/assembly/Port.java
@@ -0,0 +1,47 @@
+/**
+ *
+ * Copyright 2005 The Apache Software Foundation or its licensors, as applicable.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.apache.tuscany.model.assembly;
+
+/**
+ * Abstraction for the association of a service contract with a requestor or provider.
+ */
+public interface Port extends AssemblyModelObject {
+ /**
+ * Returns the contract for invocations of a service using this port.
+ * @return the oontract for invocations of a service using this port
+ */
+ ServiceContract getServiceContract();
+
+ /**
+ * Set the contract for invocations of a service using this port.
+ * @param contract the contract for invocations of a service using this port
+ */
+ void setServiceContract(ServiceContract contract);
+
+ /**
+ * Returns the name of the port where it is associated with a requestor or provider.
+ * @return the name of the port
+ */
+ String getName();
+
+ /**
+ * Sets the name of the port where it is associated with a requestor or provider.
+ * @param name the name of the port where it is associated with a requestor or provider
+ */
+ void setName(String name);
+
+}
diff --git a/sca-java-1.x/tags/java-stable-20060304/sca/model/src/main/java/org/apache/tuscany/model/assembly/Property.java b/sca-java-1.x/tags/java-stable-20060304/sca/model/src/main/java/org/apache/tuscany/model/assembly/Property.java
new file mode 100644
index 0000000000..cd6a918686
--- /dev/null
+++ b/sca-java-1.x/tags/java-stable-20060304/sca/model/src/main/java/org/apache/tuscany/model/assembly/Property.java
@@ -0,0 +1,91 @@
+/**
+ *
+ * Copyright 2005 The Apache Software Foundation or its licensors, as applicable.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.apache.tuscany.model.assembly;
+
+
+
+/**
+ * A description of a property that can be used to configure a component.
+ */
+public interface Property extends Extensible {
+ // todo should we decalre this as Property<T> where T would be the type of this Property?
+
+ /**
+ * Returns the property name.
+ * @return the property name
+ */
+ String getName();
+
+ /**
+ * Sets the property name.
+ * @param name the property name
+ */
+ void setName(String name);
+
+ /**
+ * Returns the default value of the property.
+ * @return the default value of ths property
+ */
+ Object getDefaultValue();
+
+ /**
+ * Sets the default value of the property.
+ * @param value the default value of ths property
+ */
+ void setDefaultValue(Object value);
+
+ /**
+ * Returns true if the property allows multiple values.
+ * @return true if the property allows multiple values
+ */
+ boolean isMany();
+
+ /**
+ * Sets whether or not the property allows multiple values.
+ * @param value true if the property should allow multiple values
+ */
+ void setMany(boolean value);
+
+ /**
+ * Returns true if a value must be supplied for the property.
+ * @return true is a value must be supplied for the property
+ */
+ boolean isRequired();
+
+ /**
+ * Sets whether a value must be supplied for the property.
+ * For ease of use, it is recommended that a meaningful default value should
+ * be supplied for all properties; users should only be required to specify
+ * a value if there is no reasonable default.
+ *
+ * @param value set to true to require that a value be supplied for uses of this property
+ */
+ void setRequired(boolean value);
+
+ /**
+ * Returns the type of this property as used by the runtime.
+ * @return the type of this property as used by the runtime
+ */
+ Class getType();
+
+ /**
+ * Sets the type of this property as used by the runtime
+ * @param value the type of this property as used by the runtime
+ */
+ void setType(Class value);
+
+}
diff --git a/sca-java-1.x/tags/java-stable-20060304/sca/model/src/main/java/org/apache/tuscany/model/assembly/Reference.java b/sca-java-1.x/tags/java-stable-20060304/sca/model/src/main/java/org/apache/tuscany/model/assembly/Reference.java
new file mode 100644
index 0000000000..8cc13e98ec
--- /dev/null
+++ b/sca-java-1.x/tags/java-stable-20060304/sca/model/src/main/java/org/apache/tuscany/model/assembly/Reference.java
@@ -0,0 +1,36 @@
+/**
+ *
+ * Copyright 2005 The Apache Software Foundation or its licensors, as applicable.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.apache.tuscany.model.assembly;
+
+
+/**
+ * The association of a port with a requestor.
+ */
+public interface Reference extends Port {
+ /**
+ * Returns the multiplicity allowed for wires connected to this reference.
+ * @return the multiplicity allowed for wires connected to this reference
+ */
+ Multiplicity getMultiplicity();
+
+ /**
+ * Sets the multiplicity allowed for wires connected to this reference.
+ * @param multiplicity the multiplicity allowed for wires connected to this reference
+ */
+ void setMultiplicity(Multiplicity multiplicity);
+
+}
diff --git a/sca-java-1.x/tags/java-stable-20060304/sca/model/src/main/java/org/apache/tuscany/model/assembly/RuntimeConfigurationHolder.java b/sca-java-1.x/tags/java-stable-20060304/sca/model/src/main/java/org/apache/tuscany/model/assembly/RuntimeConfigurationHolder.java
new file mode 100644
index 0000000000..7b20f2db21
--- /dev/null
+++ b/sca-java-1.x/tags/java-stable-20060304/sca/model/src/main/java/org/apache/tuscany/model/assembly/RuntimeConfigurationHolder.java
@@ -0,0 +1,36 @@
+/**
+ *
+ * Copyright 2005 The Apache Software Foundation or its licensors, as applicable.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.apache.tuscany.model.assembly;
+
+/**
+ * A model object that can hold a runtime configuration object.
+ */
+public interface RuntimeConfigurationHolder {
+
+ /**
+ * Sets the runtime configuration object.
+ * @param configuration the runtime configuration object
+ */
+ void setRuntimeConfiguration(Object configuration);
+
+ /**
+ * Returns the runtime configuration object.
+ * @return the runtime configuration object
+ */
+ Object getRuntimeConfiguration();
+
+}
diff --git a/sca-java-1.x/tags/java-stable-20060304/sca/model/src/main/java/org/apache/tuscany/model/assembly/Scope.java b/sca-java-1.x/tags/java-stable-20060304/sca/model/src/main/java/org/apache/tuscany/model/assembly/Scope.java
new file mode 100644
index 0000000000..e5209d05b5
--- /dev/null
+++ b/sca-java-1.x/tags/java-stable-20060304/sca/model/src/main/java/org/apache/tuscany/model/assembly/Scope.java
@@ -0,0 +1,32 @@
+/**
+ *
+ * Copyright 2005 BEA Systems Inc.
+ * Copyright 2005 International Business Machines Corporation
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.apache.tuscany.model.assembly;
+
+/**
+ * The types of scope supported by assemblies.
+ */
+public enum Scope {
+ // todo define what these are
+ INSTANCE,
+ REQUEST,
+ SESSION,
+ MODULE,
+ AGGREGATE,
+ UNDEFINED
+
+}
diff --git a/sca-java-1.x/tags/java-stable-20060304/sca/model/src/main/java/org/apache/tuscany/model/assembly/Service.java b/sca-java-1.x/tags/java-stable-20060304/sca/model/src/main/java/org/apache/tuscany/model/assembly/Service.java
new file mode 100644
index 0000000000..c73002efba
--- /dev/null
+++ b/sca-java-1.x/tags/java-stable-20060304/sca/model/src/main/java/org/apache/tuscany/model/assembly/Service.java
@@ -0,0 +1,24 @@
+/**
+ *
+ * Copyright 2005 The Apache Software Foundation or its licensors, as applicable.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.apache.tuscany.model.assembly;
+
+
+/**
+ * The association of a port with a provider.
+ */
+public interface Service extends Port {
+}
diff --git a/sca-java-1.x/tags/java-stable-20060304/sca/model/src/main/java/org/apache/tuscany/model/assembly/ServiceContract.java b/sca-java-1.x/tags/java-stable-20060304/sca/model/src/main/java/org/apache/tuscany/model/assembly/ServiceContract.java
new file mode 100644
index 0000000000..3284755ddb
--- /dev/null
+++ b/sca-java-1.x/tags/java-stable-20060304/sca/model/src/main/java/org/apache/tuscany/model/assembly/ServiceContract.java
@@ -0,0 +1,62 @@
+/**
+ *
+ * Copyright 2005 The Apache Software Foundation or its licensors, as applicable.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.apache.tuscany.model.assembly;
+
+/**
+ * The contract specified by a requestor or provider for invocations across a port.
+ */
+public interface ServiceContract extends Extensible {
+
+ /**
+ * Returns the interface for invocations from the requestor to the provider.
+ * @return the interface for invocations from the requestor to the provider
+ */
+ Class getInterface();
+
+ /**
+ * Sets the interface for invocations from the requestor to the provider.
+ * @param value the interface for invocations from the requestor to the provider
+ */
+ void setInterface(Class value);
+
+ /**
+ * Returns the callback interface for invocation from the provider back to its requestor.
+ * @return the callback interface for invocation from the provider back to its requestor
+ */
+ Class getCallbackInterface();
+
+ /**
+ * Sets the callback interface for invocation from the provider back to its requestor.
+ * @param value the callback interface for invocation from the provider back to its requestor
+ */
+ void setCallbackInterface(Class value);
+
+ /**
+ * Returns the scope of this service contract.
+ * @return
+ * todo missing javadoc
+ */
+ Scope getScope();
+
+ /**
+ * Sets the scope.
+ * @param scope of this service contract.
+ * todo missing javadoc
+ */
+ void setScope(Scope scope);
+
+}
diff --git a/sca-java-1.x/tags/java-stable-20060304/sca/model/src/main/java/org/apache/tuscany/model/assembly/ServiceURI.java b/sca-java-1.x/tags/java-stable-20060304/sca/model/src/main/java/org/apache/tuscany/model/assembly/ServiceURI.java
new file mode 100644
index 0000000000..3b9c1ec2a7
--- /dev/null
+++ b/sca-java-1.x/tags/java-stable-20060304/sca/model/src/main/java/org/apache/tuscany/model/assembly/ServiceURI.java
@@ -0,0 +1,53 @@
+/**
+ *
+ * Copyright 2005 The Apache Software Foundation or its licensors, as applicable.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.apache.tuscany.model.assembly;
+
+/**
+ * Represents a service URI.
+ */
+public interface ServiceURI {
+
+ /**
+ * Returns true if the address scheme is sca
+ * @return
+ */
+ public boolean isSCAScheme();
+
+ /**
+ * @return Returns the address.
+ */
+ public String getAddress();
+
+ /**
+ * Returns the module component name
+ * @return
+ */
+ public String getModuleComponentName();
+
+ /**
+ * Returns the part name
+ * @return
+ */
+ public String getPartName();
+
+ /**
+ * Returns the service name
+ * @return
+ */
+ public String getServiceName();
+
+}
diff --git a/sca-java-1.x/tags/java-stable-20060304/sca/model/src/main/java/org/apache/tuscany/model/assembly/SimpleComponent.java b/sca-java-1.x/tags/java-stable-20060304/sca/model/src/main/java/org/apache/tuscany/model/assembly/SimpleComponent.java
new file mode 100644
index 0000000000..059c6dbf2d
--- /dev/null
+++ b/sca-java-1.x/tags/java-stable-20060304/sca/model/src/main/java/org/apache/tuscany/model/assembly/SimpleComponent.java
@@ -0,0 +1,25 @@
+/**
+ *
+ * Copyright 2005 The Apache Software Foundation or its licensors, as applicable.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.apache.tuscany.model.assembly;
+
+
+/**
+ * A simple component, specifically not an {@link Aggregate}.
+ */
+public interface SimpleComponent extends Component {
+}
+ \ No newline at end of file
diff --git a/sca-java-1.x/tags/java-stable-20060304/sca/model/src/main/java/org/apache/tuscany/model/assembly/Subsystem.java b/sca-java-1.x/tags/java-stable-20060304/sca/model/src/main/java/org/apache/tuscany/model/assembly/Subsystem.java
new file mode 100644
index 0000000000..7a14847353
--- /dev/null
+++ b/sca-java-1.x/tags/java-stable-20060304/sca/model/src/main/java/org/apache/tuscany/model/assembly/Subsystem.java
@@ -0,0 +1,38 @@
+/**
+ *
+ * Copyright 2005 The Apache Software Foundation or its licensors, as applicable.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.apache.tuscany.model.assembly;
+
+
+
+/**
+ * Represents a subsystem.
+ */
+public interface Subsystem extends Aggregate {
+
+ /**
+ * Returns the subsystem uri.
+ * @return
+ */
+ String getURI();
+
+ /**
+ * Sets the subsystem uri.
+ * @param value
+ */
+ void setURI(String value);
+
+}
diff --git a/sca-java-1.x/tags/java-stable-20060304/sca/model/src/main/java/org/apache/tuscany/model/assembly/Wire.java b/sca-java-1.x/tags/java-stable-20060304/sca/model/src/main/java/org/apache/tuscany/model/assembly/Wire.java
new file mode 100644
index 0000000000..dfe553210a
--- /dev/null
+++ b/sca-java-1.x/tags/java-stable-20060304/sca/model/src/main/java/org/apache/tuscany/model/assembly/Wire.java
@@ -0,0 +1,48 @@
+/**
+ *
+ * Copyright 2005 The Apache Software Foundation or its licensors, as applicable.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.apache.tuscany.model.assembly;
+
+
+/**
+ * A connection between a requestor (source) and a provider (target).
+ */
+public interface Wire extends Extensible {
+ /**
+ * Returns the URI for the source of the request.
+ * @return the URI for the source of the request
+ */
+ ServiceURI getSource();
+
+ /**
+ * Sets the URI for the source of the request.
+ * @param uri the URI for the source of the request
+ */
+ void setSource(ServiceURI uri);
+
+ /**
+ * Returns the URI for the target of the request.
+ * @return the URI for the target of the request
+ */
+ ServiceURI getTarget();
+
+ /**
+ * Sets the URI for the target of the request.
+ * @param uri the URI for the target of the request
+ */
+ void setTarget(ServiceURI uri);
+
+}
diff --git a/sca-java-1.x/tags/java-stable-20060304/sca/model/src/main/java/org/apache/tuscany/model/assembly/impl/AggregateImpl.java b/sca-java-1.x/tags/java-stable-20060304/sca/model/src/main/java/org/apache/tuscany/model/assembly/impl/AggregateImpl.java
new file mode 100644
index 0000000000..234fff6600
--- /dev/null
+++ b/sca-java-1.x/tags/java-stable-20060304/sca/model/src/main/java/org/apache/tuscany/model/assembly/impl/AggregateImpl.java
@@ -0,0 +1,305 @@
+/**
+ *
+ * Copyright 2005 The Apache Software Foundation or its licensors, as applicable.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.apache.tuscany.model.assembly.impl;
+
+import java.io.IOException;
+import java.net.URL;
+import java.util.ArrayList;
+import java.util.Collections;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+
+import javax.wsdl.Definition;
+import javax.wsdl.Import;
+
+import org.apache.tuscany.common.resource.ResourceLoader;
+import org.apache.tuscany.model.assembly.Aggregate;
+import org.apache.tuscany.model.assembly.AggregatePart;
+import org.apache.tuscany.model.assembly.AssemblyModelContext;
+import org.apache.tuscany.model.assembly.AssemblyModelVisitor;
+import org.apache.tuscany.model.assembly.Component;
+import org.apache.tuscany.model.assembly.ConfiguredService;
+import org.apache.tuscany.model.assembly.EntryPoint;
+import org.apache.tuscany.model.assembly.ExternalService;
+import org.apache.tuscany.model.assembly.ServiceURI;
+import org.apache.tuscany.model.assembly.Wire;
+import org.apache.tuscany.sdo.util.SDOUtil;
+
+import commonj.sdo.helper.XSDHelper;
+
+/**
+ * An implementation of Aggregate.
+ */
+public abstract class AggregateImpl extends ExtensibleImpl implements Aggregate {
+
+ private String name;
+ private List<Component> components=new ArrayList<Component>();
+ private Map<String, Component> componentsMap;
+ private List<EntryPoint> entryPoints=new ArrayList<EntryPoint>();
+ private Map<String, EntryPoint> entryPointsMap;
+ private List<ExternalService> externalServices=new ArrayList<ExternalService>();
+ private Map<String, ExternalService> externalServicesMap;
+ private List<AggregatePart> aggregateParts;
+ private List<Wire> wires=new ArrayList<Wire>();
+ private List<Import> wsdlImports=new ArrayList<Import>();
+ private Map<String, List<Import>> wsdlImportsMap;
+ private AssemblyModelContext modelContext;
+
+ /**
+ * Constructor
+ */
+ protected AggregateImpl() {
+ }
+
+ /**
+ * @see org.apache.tuscany.model.assembly.Aggregate#getName()
+ */
+ public String getName() {
+ return name;
+ }
+
+ /**
+ * @see org.apache.tuscany.model.assembly.Aggregate#setName(java.lang.String)
+ */
+ public void setName(String newName) {
+ checkNotFrozen();
+ name=newName;
+ }
+
+ /**
+ * @see org.apache.tuscany.model.assembly.Aggregate#getComponents()
+ */
+ public List<Component> getComponents() {
+ return components;
+ }
+
+ /**
+ * @see org.apache.tuscany.model.assembly.Aggregate#getComponent(java.lang.String)
+ */
+ public Component getComponent(String name) {
+ checkInitialized();
+ return componentsMap.get(name);
+ }
+
+ /**
+ * @see org.apache.tuscany.model.assembly.Aggregate#getEntryPoints()
+ */
+ public List<EntryPoint> getEntryPoints() {
+ return entryPoints;
+ }
+
+ /**
+ * @see org.apache.tuscany.model.assembly.Aggregate#getEntryPoint(java.lang.String)
+ */
+ public EntryPoint getEntryPoint(String name) {
+ checkInitialized();
+ return entryPointsMap.get(name);
+ }
+
+ /**
+ * @see org.apache.tuscany.model.assembly.Aggregate#getExternalServices()
+ */
+ public List<ExternalService> getExternalServices() {
+ return externalServices;
+ }
+
+ /**
+ * @see org.apache.tuscany.model.assembly.Aggregate#getExternalService(java.lang.String)
+ */
+ public ExternalService getExternalService(String name) {
+ checkInitialized();
+ return externalServicesMap.get(name);
+ }
+
+ /**
+ * @see org.apache.tuscany.model.assembly.Aggregate#getAggregateParts()
+ */
+ public List<AggregatePart> getAggregateParts() {
+ checkInitialized();
+ return aggregateParts;
+ }
+
+ /**
+ * @see org.apache.tuscany.model.assembly.Aggregate#getWires()
+ */
+ public List<Wire> getWires() {
+ return wires;
+ }
+
+ /**
+ * @see org.apache.tuscany.model.assembly.Aggregate#getWSDLImports()
+ */
+ public List<Import> getWSDLImports() {
+ return wsdlImports;
+ }
+
+ /**
+ * @see org.apache.tuscany.model.assembly.Aggregate#getWSDLImports(java.lang.String)
+ */
+ public List<Import> getWSDLImports(String namespace) {
+ checkInitialized();
+ return wsdlImportsMap.get(namespace);
+ }
+
+ /**
+ * @see org.apache.tuscany.model.assembly.Aggregate#getAssemblyModelContext()
+ */
+ public AssemblyModelContext getAssemblyModelContext() {
+ checkInitialized();
+ return modelContext;
+ }
+
+ /**
+ * @see org.apache.tuscany.model.assembly.Aggregate#getConfiguredService(org.apache.tuscany.model.assembly.ServiceURI)
+ */
+ public ConfiguredService getConfiguredService(ServiceURI address) {
+ String partName = address.getPartName();
+ String serviceName = address.getServiceName();
+ Component component = getComponent(partName);
+ if (component != null) {
+ if (serviceName != null) {
+ return component.getConfiguredService(serviceName);
+ } else {
+ if (!component.getConfiguredServices().isEmpty()) {
+ return component.getConfiguredServices().get(0);
+ } else {
+ return null;
+ }
+ }
+
+ } else {
+ ExternalService externalService = getExternalService(partName);
+ if (externalService != null) {
+ return externalService.getConfiguredService();
+ } else {
+ return null;
+ }
+ }
+ }
+
+ /**
+ * @see org.apache.tuscany.model.assembly.AssemblyModelObject#initialize(org.apache.tuscany.model.assembly.AssemblyModelContext)
+ */
+ public void initialize(AssemblyModelContext modelContext) {
+ if (isInitialized())
+ return;
+ super.initialize(modelContext);
+
+ // Save the model context
+ this.modelContext=modelContext;
+
+ // Populate map of WSDL imports
+ ResourceLoader resourceLoader=modelContext.getApplicationResourceLoader();
+ wsdlImportsMap = new HashMap<String, List<Import>>();
+ for (Import wsdlImport : wsdlImports) {
+ String namespace=wsdlImport.getNamespaceURI();
+ List<Import> list=wsdlImportsMap.get(namespace);
+ if (list==null) {
+ list=new ArrayList<Import>();
+ wsdlImportsMap.put(namespace, list);
+ }
+ list.add(wsdlImport);
+
+ // Load the WSDL definition if necessary
+ if (wsdlImport.getDefinition()==null) {
+ String location=wsdlImport.getLocationURI();
+ Definition definition;
+ ClassLoader ccl=Thread.currentThread().getContextClassLoader();
+ try {
+ URL url=resourceLoader.getResource(location);
+ if (url==null)
+ throw new IllegalArgumentException("Cannot find "+location);
+ definition = modelContext.getAssemblyLoader().loadDefinition(url.toString());
+ Thread.currentThread().setContextClassLoader(modelContext.getApplicationResourceLoader().getClassLoader());
+ XSDHelper xsdHelper=SDOUtil.createXSDHelper(modelContext.getTypeHelper());
+ xsdHelper.define (url.openStream(), null);
+ } catch (IOException e) {
+ throw new IllegalArgumentException(e);
+ } finally {
+ Thread.currentThread().setContextClassLoader(ccl);
+ }
+ wsdlImport.setDefinition(definition);
+ }
+ }
+
+ // Populate maps of components, entry points and external services
+ aggregateParts = new ArrayList<AggregatePart>();
+ componentsMap = new HashMap<String, Component>();
+ for (Component component : components) {
+ componentsMap.put(component.getName(), component);
+ aggregateParts.add(component);
+ component.initialize(modelContext);
+ ((AggregatePartImpl)component).setAggregate(this);
+ }
+ entryPointsMap = new HashMap<String, EntryPoint>();
+ for (EntryPoint entryPoint : entryPoints) {
+ entryPointsMap.put(entryPoint.getName(), entryPoint);
+ aggregateParts.add(entryPoint);
+ entryPoint.initialize(modelContext);
+ ((AggregatePartImpl)entryPoint).setAggregate(this);
+ }
+ externalServicesMap = new HashMap<String, ExternalService>();
+ for (ExternalService externalService : externalServices) {
+ externalServicesMap.put(externalService.getName(), externalService);
+ aggregateParts.add(externalService);
+ externalService.initialize(modelContext);
+ ((AggregatePartImpl)externalService).setAggregate(this);
+ }
+ for (Wire wire : wires) {
+ wire.initialize(modelContext);
+ }
+ }
+
+ /**
+ * @see org.apache.tuscany.model.assembly.AssemblyModelObject#freeze()
+ */
+ public void freeze() {
+ if (isFrozen())
+ return;
+ super.freeze();
+
+ // Freeze lists
+ wsdlImports=Collections.unmodifiableList(wsdlImports);
+ freeze(wsdlImports);
+ components=Collections.unmodifiableList(components);
+ freeze(components);
+ entryPoints=Collections.unmodifiableList(entryPoints);
+ freeze(entryPoints);
+ externalServices=Collections.unmodifiableList(externalServices);
+ freeze(externalServices);
+ wires=Collections.unmodifiableList(wires);
+ freeze(wires);
+ }
+
+ /**
+ * @see org.apache.tuscany.model.assembly.AssemblyModelObject#accept(org.apache.tuscany.model.assembly.AssemblyModelVisitor)
+ */
+ public boolean accept(AssemblyModelVisitor visitor) {
+ if (!super.accept(visitor))
+ return false;
+
+ if (!accept(aggregateParts, visitor))
+ return false;
+
+ if (!accept(wires, visitor))
+ return false;
+
+ return true;
+ }
+
+} //ModuleImpl
diff --git a/sca-java-1.x/tags/java-stable-20060304/sca/model/src/main/java/org/apache/tuscany/model/assembly/impl/AggregatePartImpl.java b/sca-java-1.x/tags/java-stable-20060304/sca/model/src/main/java/org/apache/tuscany/model/assembly/impl/AggregatePartImpl.java
new file mode 100644
index 0000000000..b9a4434c58
--- /dev/null
+++ b/sca-java-1.x/tags/java-stable-20060304/sca/model/src/main/java/org/apache/tuscany/model/assembly/impl/AggregatePartImpl.java
@@ -0,0 +1,67 @@
+/**
+ *
+ * Copyright 2005 The Apache Software Foundation or its licensors, as applicable.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.apache.tuscany.model.assembly.impl;
+
+import org.apache.tuscany.model.assembly.Aggregate;
+import org.apache.tuscany.model.assembly.AggregatePart;
+
+/**
+ * Implementation of AggregatePart.
+ */
+public abstract class AggregatePartImpl extends ExtensibleImpl implements AggregatePart {
+ private Aggregate aggregate;
+ private String name;
+
+ /**
+ * Constructor
+ */
+ protected AggregatePartImpl() {
+ }
+
+ /**
+ * @see org.apache.tuscany.model.assembly.AggregatePart#getName()
+ */
+ public String getName() {
+ return name;
+ }
+
+ /**
+ * @see org.apache.tuscany.model.assembly.AggregatePart#setName(java.lang.String)
+ */
+ public void setName(String value) {
+ checkNotFrozen();
+ name=value;
+ }
+
+ /**
+ * @see org.apache.tuscany.model.assembly.AggregatePart#getAggregate()
+ */
+ public Aggregate getAggregate() {
+ checkInitialized();
+ return aggregate;
+ }
+
+ /**
+ * Sets the aggregate containing this aggregate part.
+ * @param aggregate
+ */
+ protected void setAggregate(Aggregate aggregate) {
+ checkNotFrozen();
+ this.aggregate=aggregate;
+ }
+
+}
diff --git a/sca-java-1.x/tags/java-stable-20060304/sca/model/src/main/java/org/apache/tuscany/model/assembly/impl/AssemblyFactoryImpl.java b/sca-java-1.x/tags/java-stable-20060304/sca/model/src/main/java/org/apache/tuscany/model/assembly/impl/AssemblyFactoryImpl.java
new file mode 100644
index 0000000000..0c2550ab10
--- /dev/null
+++ b/sca-java-1.x/tags/java-stable-20060304/sca/model/src/main/java/org/apache/tuscany/model/assembly/impl/AssemblyFactoryImpl.java
@@ -0,0 +1,204 @@
+/**
+ *
+ * Copyright 2005 The Apache Software Foundation or its licensors, as applicable.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.apache.tuscany.model.assembly.impl;
+
+import javax.xml.namespace.QName;
+
+import org.apache.tuscany.model.assembly.AggregatePart;
+import org.apache.tuscany.model.assembly.AssemblyFactory;
+import org.apache.tuscany.model.assembly.ComponentType;
+import org.apache.tuscany.model.assembly.ConfiguredPort;
+import org.apache.tuscany.model.assembly.ConfiguredProperty;
+import org.apache.tuscany.model.assembly.ConfiguredReference;
+import org.apache.tuscany.model.assembly.ConfiguredService;
+import org.apache.tuscany.model.assembly.EntryPoint;
+import org.apache.tuscany.model.assembly.ExternalService;
+import org.apache.tuscany.model.assembly.Module;
+import org.apache.tuscany.model.assembly.ModuleComponent;
+import org.apache.tuscany.model.assembly.ModuleFragment;
+import org.apache.tuscany.model.assembly.Property;
+import org.apache.tuscany.model.assembly.Reference;
+import org.apache.tuscany.model.assembly.Service;
+import org.apache.tuscany.model.assembly.ServiceURI;
+import org.apache.tuscany.model.assembly.SimpleComponent;
+import org.apache.tuscany.model.assembly.Subsystem;
+import org.apache.tuscany.model.assembly.Wire;
+import org.apache.tuscany.model.types.java.JavaServiceContract;
+import org.apache.tuscany.model.types.java.impl.JavaServiceContractImpl;
+import org.apache.tuscany.model.types.wsdl.WSDLServiceContract;
+import org.apache.tuscany.model.types.wsdl.impl.WSDLServiceContractImpl;
+
+/**
+ * Default implementation of AssemblyFactory
+ */
+public class AssemblyFactoryImpl implements AssemblyFactory {
+
+ /**
+ * Constructor
+ */
+ public AssemblyFactoryImpl() {
+ super();
+ }
+
+ /**
+ * @see org.apache.tuscany.model.assembly.AssemblyFactory#createSimpleComponent()
+ */
+ public SimpleComponent createSimpleComponent() {
+ return new SimpleComponentImpl();
+ }
+
+ /**
+ * @see org.apache.tuscany.model.assembly.AssemblyFactory#createComponentType()
+ */
+ public ComponentType createComponentType() {
+ return new ComponentTypeImpl();
+ }
+
+ /**
+ * @see org.apache.tuscany.model.assembly.AssemblyFactory#createEntryPoint()
+ */
+ public EntryPoint createEntryPoint() {
+ return new EntryPointImpl();
+ }
+
+ /**
+ * @see org.apache.tuscany.model.assembly.AssemblyFactory#createExternalService()
+ */
+ public ExternalService createExternalService() {
+ return new ExternalServiceImpl();
+ }
+
+ /**
+ * @see org.apache.tuscany.model.assembly.AssemblyFactory#createJavaServiceContract()
+ */
+ public JavaServiceContract createJavaServiceContract() {
+ return new JavaServiceContractImpl();
+ }
+
+ /**
+ * @see org.apache.tuscany.model.assembly.AssemblyFactory#createModule()
+ */
+ public Module createModule() {
+ return new ModuleImpl();
+ }
+
+ /**
+ * @see org.apache.tuscany.model.assembly.AssemblyFactory#createModuleFragment()
+ */
+ public ModuleFragment createModuleFragment() {
+ return new ModuleFragmentImpl();
+ }
+
+ /**
+ * @see org.apache.tuscany.model.assembly.AssemblyFactory#createModuleComponent()
+ */
+ public ModuleComponent createModuleComponent() {
+ return new ModuleComponentImpl();
+ }
+
+ /**
+ * @see org.apache.tuscany.model.assembly.AssemblyFactory#createProperty()
+ */
+ public Property createProperty() {
+ return new PropertyImpl();
+ }
+
+ /**
+ * @see org.apache.tuscany.model.assembly.AssemblyFactory#createConfiguredProperty()
+ */
+ public ConfiguredProperty createConfiguredProperty() {
+ return new ConfiguredPropertyImpl();
+ }
+
+ /**
+ * @see org.apache.tuscany.model.assembly.AssemblyFactory#createReference()
+ */
+ public Reference createReference() {
+ return new ReferenceImpl();
+ }
+
+ /**
+ * @see org.apache.tuscany.model.assembly.AssemblyFactory#createConfiguredReference()
+ */
+ public ConfiguredReference createConfiguredReference() {
+ return new ConfiguredReferenceImpl();
+ }
+
+ /**
+ * @see org.apache.tuscany.model.assembly.AssemblyFactory#createService()
+ */
+ public Service createService() {
+ return new ServiceImpl();
+ }
+
+ /**
+ * @see org.apache.tuscany.model.assembly.AssemblyFactory#createConfiguredService()
+ */
+ public ConfiguredService createConfiguredService() {
+ return new ConfiguredServiceImpl();
+ }
+
+ /**
+ * @see org.apache.tuscany.model.assembly.AssemblyFactory#createSubsystem()
+ */
+ public Subsystem createSubsystem() {
+ return new SubsystemImpl();
+ }
+
+ /**
+ * @see org.apache.tuscany.model.assembly.AssemblyFactory#createWSDLServiceContract()
+ */
+ public WSDLServiceContract createWSDLServiceContract() {
+ return new WSDLServiceContractImpl();
+ }
+
+ /**
+ * @see org.apache.tuscany.model.assembly.AssemblyFactory#createServiceURI(java.lang.String)
+ */
+ public ServiceURI createServiceURI(String uri) {
+ return new ServiceURIImpl(uri);
+ }
+
+ /**
+ * @see org.apache.tuscany.model.assembly.AssemblyFactory#createServiceURI(org.apache.tuscany.model.assembly.ModuleComponent, java.lang.String)
+ */
+ public ServiceURI createServiceURI(ModuleComponent moduleComponent, String serviceName) {
+ return new ServiceURIImpl(moduleComponent, serviceName);
+ }
+
+ /*
+ * @see org.apache.tuscany.model.assembly.AssemblyFactory#createServiceURI(org.apache.tuscany.model.assembly.ModuleComponent, org.apache.tuscany.model.assembly.AggregatePart, org.apache.tuscany.model.assembly.ConfiguredPort)
+ */
+ public ServiceURI createServiceURI(ModuleComponent moduleComponent, AggregatePart aggregatePart, ConfiguredPort configuredPort) {
+ return new ServiceURIImpl(moduleComponent, aggregatePart, configuredPort);
+ }
+
+ /**
+ * @see org.apache.tuscany.model.assembly.AssemblyFactory#createQName(java.lang.String)
+ */
+ public QName createQName(String uri) {
+ int h = uri.indexOf('#');
+ return new QName(uri.substring(0, h), uri.substring(h + 1));
+ }
+
+ /**
+ * @see org.apache.tuscany.model.assembly.AssemblyFactory#createWire()
+ */
+ public Wire createWire() {
+ return new WireImpl();
+ }
+}
diff --git a/sca-java-1.x/tags/java-stable-20060304/sca/model/src/main/java/org/apache/tuscany/model/assembly/impl/AssemblyModelContextImpl.java b/sca-java-1.x/tags/java-stable-20060304/sca/model/src/main/java/org/apache/tuscany/model/assembly/impl/AssemblyModelContextImpl.java
new file mode 100644
index 0000000000..221b3e0af6
--- /dev/null
+++ b/sca-java-1.x/tags/java-stable-20060304/sca/model/src/main/java/org/apache/tuscany/model/assembly/impl/AssemblyModelContextImpl.java
@@ -0,0 +1,92 @@
+/**
+ *
+ * Copyright 2005 The Apache Software Foundation or its licensors, as applicable.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.apache.tuscany.model.assembly.impl;
+
+import org.apache.tuscany.common.resource.ResourceLoader;
+import org.apache.tuscany.model.assembly.AssemblyFactory;
+import org.apache.tuscany.model.assembly.AssemblyModelContext;
+import org.apache.tuscany.model.assembly.loader.AssemblyModelLoader;
+import org.apache.tuscany.sdo.util.SDOUtil;
+
+import commonj.sdo.helper.TypeHelper;
+
+/**
+ */
+public class AssemblyModelContextImpl implements AssemblyModelContext {
+
+ private final AssemblyFactory assemblyFactory;
+ private final AssemblyModelLoader assemblyLoader;
+ private final ResourceLoader systemResourceLoader;
+ private final ResourceLoader applicationResourceLoader;
+ private final TypeHelper typeHelper;
+
+ public AssemblyModelContextImpl(AssemblyModelLoader assemblyLoader, ResourceLoader resourceLoader) {
+ this(new AssemblyFactoryImpl(), assemblyLoader, resourceLoader, resourceLoader);
+ }
+
+ public AssemblyModelContextImpl(AssemblyFactory assemblyFactory, AssemblyModelLoader assemblyLoader, ResourceLoader resourceLoader) {
+ this(assemblyFactory, assemblyLoader, resourceLoader, resourceLoader);
+ }
+
+ public AssemblyModelContextImpl(AssemblyFactory assemblyFactory, AssemblyModelLoader assemblyLoader, ResourceLoader resourceLoader, ResourceLoader artifactLoader) {
+ this(assemblyFactory, assemblyLoader, resourceLoader, artifactLoader, SDOUtil.createTypeHelper());
+ }
+
+ public AssemblyModelContextImpl(AssemblyFactory assemblyFactory, AssemblyModelLoader assemblyLoader, ResourceLoader resourceLoader, ResourceLoader artifactLoader, TypeHelper typeHelper) {
+ this.assemblyFactory = assemblyFactory;
+ this.assemblyLoader = assemblyLoader;
+ this.systemResourceLoader = resourceLoader;
+ this.applicationResourceLoader = artifactLoader;
+ this.typeHelper=typeHelper;
+
+ //FIXME the caller should configure the assemblyLoader himself
+ if (assemblyLoader!=null)
+ assemblyLoader.setModelContext(this);
+ }
+
+ /**
+ * @see org.apache.tuscany.model.assembly.AssemblyModelContext#getAssemblyFactory()
+ */
+ public AssemblyFactory getAssemblyFactory() {
+ return assemblyFactory;
+ }
+
+ /**
+ * @see org.apache.tuscany.model.assembly.AssemblyModelContext#getSystemResourceLoader()
+ */
+ public ResourceLoader getSystemResourceLoader() {
+ return systemResourceLoader;
+ }
+
+ public ResourceLoader getApplicationResourceLoader() {
+ return applicationResourceLoader;
+ }
+
+ /**
+ * @see org.apache.tuscany.model.assembly.AssemblyModelContext#getAssemblyLoader()
+ */
+ public AssemblyModelLoader getAssemblyLoader() {
+ return assemblyLoader;
+ }
+
+ /**
+ * @see org.apache.tuscany.model.assembly.AssemblyModelContext#getTypeHelper()
+ */
+ public TypeHelper getTypeHelper() {
+ return typeHelper;
+ }
+}
diff --git a/sca-java-1.x/tags/java-stable-20060304/sca/model/src/main/java/org/apache/tuscany/model/assembly/impl/AssemblyModelObjectImpl.java b/sca-java-1.x/tags/java-stable-20060304/sca/model/src/main/java/org/apache/tuscany/model/assembly/impl/AssemblyModelObjectImpl.java
new file mode 100644
index 0000000000..356fc4f0a9
--- /dev/null
+++ b/sca-java-1.x/tags/java-stable-20060304/sca/model/src/main/java/org/apache/tuscany/model/assembly/impl/AssemblyModelObjectImpl.java
@@ -0,0 +1,132 @@
+/**
+ *
+ * Copyright 2005 The Apache Software Foundation or its licensors, as applicable.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.apache.tuscany.model.assembly.impl;
+
+import java.util.Collection;
+
+import org.apache.tuscany.model.assembly.AssemblyModelContext;
+import org.apache.tuscany.model.assembly.AssemblyModelObject;
+import org.apache.tuscany.model.assembly.AssemblyModelVisitor;
+
+/**
+ * A base class for assembly model objects.
+ */
+public abstract class AssemblyModelObjectImpl implements AssemblyModelObject {
+
+ private boolean frozen;
+ private boolean initialized;
+
+ /**
+ * Constructor
+ */
+ protected AssemblyModelObjectImpl() {
+ }
+
+ /**
+ * @see org.apache.tuscany.model.assembly.AssemblyModelObject#accept(org.apache.tuscany.model.assembly.AssemblyModelVisitor)
+ */
+ public boolean accept(AssemblyModelVisitor visitor) {
+ return visitor.visit(this);
+ }
+
+ /**
+ * Walk a visitor through a collection of model objects.
+ * @param collection
+ * @param visitor
+ * @return
+ */
+ protected boolean accept(Collection collection, AssemblyModelVisitor visitor) {
+ for (Object member : collection) {
+ if (member instanceof AssemblyModelObject) {
+ if (!((AssemblyModelObject)member).accept(visitor))
+ return false;
+ }
+ }
+ return true;
+ }
+
+ /**
+ * @see org.apache.tuscany.model.assembly.AssemblyModelObject#freeze()
+ */
+ public void freeze() {
+ if (!frozen)
+ frozen=true;
+ }
+
+ /**
+ * Returns true if the object is frozen
+ */
+ protected boolean isFrozen() {
+ return frozen;
+ }
+
+ /**
+ * Freeze members of a collection
+ */
+ protected void freeze(Collection collection) {
+ for (Object member : collection) {
+ if (member instanceof AssemblyModelObject) {
+ ((AssemblyModelObject)member).freeze();
+ }
+ }
+ }
+
+ /**
+ * Check that the current model object can be modified.
+ * @throws IllegalStateException
+ */
+ protected void checkNotFrozen() {
+ if (frozen)
+ throw new IllegalStateException("Attempt to modify a frozen assembly model");
+ }
+
+ /**
+ * @see org.apache.tuscany.model.assembly.AssemblyModelObject#initialize(org.apache.tuscany.model.assembly.AssemblyModelContext)
+ */
+ public void initialize(AssemblyModelContext modelContext) {
+ if (!initialized)
+ initialized=true;
+ }
+
+ /**
+ * Returns true if the object is initialized
+ */
+ protected boolean isInitialized() {
+ return initialized;
+ }
+
+ /**
+ * Initialize members of a collection
+ */
+ protected void initialize(Collection collection, AssemblyModelContext modelContext) {
+ for (Object member : collection) {
+ if (member instanceof AssemblyModelObject) {
+ ((AssemblyModelObject)member).initialize(modelContext);
+ }
+ }
+ }
+
+ /**
+ * Check that the current model object is initialized.
+ * @throws IllegalStateException
+ */
+ protected void checkInitialized() {
+ if (!initialized)
+ throw new IllegalStateException("Attempt to use an uninitialized assembly model");
+ }
+
+}
diff --git a/sca-java-1.x/tags/java-stable-20060304/sca/model/src/main/java/org/apache/tuscany/model/assembly/impl/BindingImpl.java b/sca-java-1.x/tags/java-stable-20060304/sca/model/src/main/java/org/apache/tuscany/model/assembly/impl/BindingImpl.java
new file mode 100644
index 0000000000..cd1f0e2cb4
--- /dev/null
+++ b/sca-java-1.x/tags/java-stable-20060304/sca/model/src/main/java/org/apache/tuscany/model/assembly/impl/BindingImpl.java
@@ -0,0 +1,96 @@
+/**
+ *
+ * Copyright 2005 The Apache Software Foundation or its licensors, as applicable.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.apache.tuscany.model.assembly.impl;
+
+import org.apache.tuscany.model.assembly.AssemblyModelContext;
+import org.apache.tuscany.model.assembly.AssemblyModelVisitor;
+import org.apache.tuscany.model.assembly.Binding;
+
+/**
+ * An implementation of Binding.
+ */
+public class BindingImpl extends ExtensibleImpl implements Binding {
+
+ private String uri;
+ private Object runtimeConfiguration;
+
+ /**
+ * Constructor
+ */
+ protected BindingImpl() {
+ }
+
+ /**
+ * @see org.apache.tuscany.model.assembly.Binding#getURI()
+ */
+ public String getURI() {
+ return uri;
+ }
+
+ /**
+ * @see org.apache.tuscany.model.assembly.Binding#setURI(java.lang.String)
+ */
+ public void setURI(String value) {
+ checkNotFrozen();
+ uri=value;
+ }
+
+ /**
+ * @see org.apache.tuscany.model.assembly.AssemblyModelObject#initialize(org.apache.tuscany.model.assembly.AssemblyModelContext)
+ */
+ public void initialize(AssemblyModelContext modelContext) {
+ if (isInitialized())
+ return;
+ super.initialize(modelContext);
+ }
+
+ /**
+ * @see org.apache.tuscany.model.assembly.AssemblyModelObject#freeze()
+ */
+ public void freeze() {
+ if (isFrozen())
+ return;
+ super.freeze();
+
+ }
+
+ /**
+ * @see org.apache.tuscany.model.assembly.RuntimeConfigurationHolder#getRuntimeConfiguration()
+ */
+ public Object getRuntimeConfiguration() {
+ return runtimeConfiguration;
+ }
+
+ /**
+ * @see org.apache.tuscany.model.assembly.RuntimeConfigurationHolder#setRuntimeConfiguration(java.lang.Object)
+ */
+ public void setRuntimeConfiguration(Object configuration) {
+ checkNotFrozen();
+ this.runtimeConfiguration = configuration;
+ }
+
+ /**
+ * @see org.apache.tuscany.model.assembly.impl.AggregateImpl#accept(org.apache.tuscany.model.assembly.AssemblyModelVisitor)
+ */
+ public boolean accept(AssemblyModelVisitor visitor) {
+ if (!super.accept(visitor))
+ return false;
+
+ return true;
+ }
+
+}
diff --git a/sca-java-1.x/tags/java-stable-20060304/sca/model/src/main/java/org/apache/tuscany/model/assembly/impl/ComponentImpl.java b/sca-java-1.x/tags/java-stable-20060304/sca/model/src/main/java/org/apache/tuscany/model/assembly/impl/ComponentImpl.java
new file mode 100644
index 0000000000..2033ebe7f7
--- /dev/null
+++ b/sca-java-1.x/tags/java-stable-20060304/sca/model/src/main/java/org/apache/tuscany/model/assembly/impl/ComponentImpl.java
@@ -0,0 +1,222 @@
+/**
+ *
+ * Copyright 2005 The Apache Software Foundation or its licensors, as applicable.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.apache.tuscany.model.assembly.impl;
+
+import java.util.ArrayList;
+import java.util.Collections;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+
+import org.apache.tuscany.model.assembly.AssemblyFactory;
+import org.apache.tuscany.model.assembly.AssemblyModelContext;
+import org.apache.tuscany.model.assembly.AssemblyModelVisitor;
+import org.apache.tuscany.model.assembly.Component;
+import org.apache.tuscany.model.assembly.ComponentImplementation;
+import org.apache.tuscany.model.assembly.ConfiguredProperty;
+import org.apache.tuscany.model.assembly.ConfiguredReference;
+import org.apache.tuscany.model.assembly.ConfiguredService;
+import org.apache.tuscany.model.assembly.Property;
+import org.apache.tuscany.model.assembly.Reference;
+import org.apache.tuscany.model.assembly.Service;
+
+/**
+ * An implementation of Component.
+ */
+public abstract class ComponentImpl extends AggregatePartImpl implements Component {
+
+ private List<ConfiguredReference> configuredReferences=new ArrayList<ConfiguredReference>();
+ private Map<String, ConfiguredReference> configuredReferencesMap;
+ private List<ConfiguredService> configuredServices=new ArrayList<ConfiguredService>();
+ private Map<String, ConfiguredService> configuredServicesMap;
+ private List<ConfiguredProperty> configuredProperties=new ArrayList<ConfiguredProperty>();
+ private Map<String, ConfiguredProperty> configuredPropertiesMap;
+ private ComponentImplementation implementation;
+
+ /**
+ * @see org.apache.tuscany.model.assembly.Component#getComponentImplementation()
+ */
+ public ComponentImplementation getComponentImplementation() {
+ return implementation;
+ }
+
+ /**
+ * @see org.apache.tuscany.model.assembly.Component#setComponentImplementation(org.apache.tuscany.model.assembly.ComponentImplementation)
+ */
+ public void setComponentImplementation(ComponentImplementation value) {
+ checkNotFrozen();
+ implementation=value;
+ }
+
+ /**
+ * @see org.apache.tuscany.model.assembly.Component#getConfiguredServices()
+ */
+ public List<ConfiguredService> getConfiguredServices() {
+ return configuredServices;
+ }
+
+ public ConfiguredService getConfiguredService(String name) {
+ checkInitialized();
+ return configuredServicesMap.get(name);
+ }
+
+ /**
+ * @see org.apache.tuscany.model.assembly.Component#getConfiguredReferences()
+ */
+ public List<ConfiguredReference> getConfiguredReferences() {
+ return configuredReferences;
+ }
+
+ /**
+ * @see org.apache.tuscany.model.assembly.Component#getConfiguredReference(java.lang.String)
+ */
+ public ConfiguredReference getConfiguredReference(String name) {
+ checkInitialized();
+ return configuredReferencesMap.get(name);
+ }
+
+ /**
+ * @see org.apache.tuscany.model.assembly.Component#getConfiguredProperties()
+ */
+ public List<ConfiguredProperty> getConfiguredProperties() {
+ return configuredProperties;
+ }
+
+ /**
+ * @see org.apache.tuscany.model.assembly.Component#getConfiguredProperty(java.lang.String)
+ */
+ public ConfiguredProperty getConfiguredProperty(String name) {
+ checkInitialized();
+ return configuredPropertiesMap.get(name);
+ }
+
+ /**
+ * @see org.apache.tuscany.model.assembly.AssemblyModelObject#initialize(org.apache.tuscany.model.assembly.AssemblyModelContext)
+ */
+ public void initialize(AssemblyModelContext modelContext) {
+ if (isInitialized())
+ return;
+ super.initialize(modelContext);
+
+ // Initialize the implementation
+ ComponentImplementation implementation = getComponentImplementation();
+ if (implementation != null) {
+ implementation.initialize(modelContext);
+ }
+
+ // Derive the configured services, references and properties from the component implementation
+ //FIXME we have two options here: either just index the configured services, references and properties
+ // that we find in the corresponding lists, or derive them from the services, references and properties on
+ // the component type, for now just check if the lists are empty or not to determine which option to go with
+ configuredServicesMap = new HashMap<String, ConfiguredService>();
+ configuredReferencesMap = new HashMap<String, ConfiguredReference>();
+ configuredPropertiesMap = new HashMap<String, ConfiguredProperty>();
+ if (configuredServices.isEmpty() && configuredReferences.isEmpty() && configuredProperties.isEmpty()) {
+ if (implementation != null) {
+ AssemblyFactory factory = modelContext.getAssemblyFactory();
+ for (Service service : implementation.getComponentType().getServices()) {
+ ConfiguredService configuredService = factory.createConfiguredService();
+ configuredService.setPort(service);
+ configuredServices.add(configuredService);
+ configuredServicesMap.put(service.getName(), configuredService);
+ ((ConfiguredPortImpl)configuredService).setAggregatePart(this);
+ configuredService.initialize(modelContext);
+ }
+
+ for (Reference reference : implementation.getComponentType().getReferences()) {
+ ConfiguredReference configuredReference = factory.createConfiguredReference();
+ configuredReference.setPort(reference);
+ configuredReferences.add(configuredReference);
+ configuredReferencesMap.put(reference.getName(), configuredReference);
+ ((ConfiguredPortImpl)configuredReference).setAggregatePart(this);
+ configuredReference.initialize(modelContext);
+ }
+
+ // Derive configured properties from the properties on the component type
+ for (Property property : implementation.getComponentType().getProperties()) {
+ ConfiguredProperty configuredProperty = factory.createConfiguredProperty();
+ configuredProperty.setProperty(property);
+ configuredProperties.add(configuredProperty);
+ configuredPropertiesMap.put(property.getName(), configuredProperty);
+ configuredProperty.initialize(modelContext);
+ }
+
+ }
+ } else {
+
+ // Just populate the maps of services, references and properties from the contents of
+ // the corresponding lists
+ for (ConfiguredService configuredService : configuredServices) {
+ configuredServicesMap.put(configuredService.getService().getName(), configuredService);
+ ((ConfiguredPortImpl)configuredService).setAggregatePart(this);
+ configuredService.initialize(modelContext);
+ }
+
+ for (ConfiguredReference configuredReference : configuredReferences) {
+ configuredReferencesMap.put(configuredReference.getReference().getName(), configuredReference);
+ ((ConfiguredPortImpl)configuredReference).setAggregatePart(this);
+ configuredReference.initialize(modelContext);
+ }
+
+ for (ConfiguredProperty configuredProperty : configuredProperties) {
+ configuredPropertiesMap.put(configuredProperty.getProperty().getName(), configuredProperty);
+ configuredProperty.initialize(modelContext);
+ }
+ }
+ }
+
+ /**
+ * @see org.apache.tuscany.model.assembly.AssemblyModelObject#freeze()
+ */
+ public void freeze() {
+ if (isFrozen())
+ return;
+ super.freeze();
+
+ // Freeze configured services, references and properties
+ configuredServices=Collections.unmodifiableList(configuredServices);
+ freeze(configuredServices);
+ configuredReferences=Collections.unmodifiableList(configuredReferences);
+ freeze(configuredReferences);
+ configuredProperties=Collections.unmodifiableList(configuredProperties);
+ freeze(configuredProperties);
+ if (implementation!=null)
+ implementation.freeze();
+ }
+
+ /**
+ * @see org.apache.tuscany.model.assembly.impl.AssemblyModelObjectImpl#accept(org.apache.tuscany.model.assembly.AssemblyModelVisitor)
+ */
+ public boolean accept(AssemblyModelVisitor visitor) {
+ if (!super.accept(visitor))
+ return false;
+
+ if (!accept(configuredServices, visitor))
+ return false;
+ if (!accept(configuredReferences, visitor))
+ return false;
+ if (!accept(configuredProperties, visitor))
+ return false;
+ if (implementation!=null) {
+ if (!implementation.accept(visitor))
+ return false;
+ }
+
+ return true;
+ }
+
+}
diff --git a/sca-java-1.x/tags/java-stable-20060304/sca/model/src/main/java/org/apache/tuscany/model/assembly/impl/ComponentImplementationImpl.java b/sca-java-1.x/tags/java-stable-20060304/sca/model/src/main/java/org/apache/tuscany/model/assembly/impl/ComponentImplementationImpl.java
new file mode 100644
index 0000000000..f14a86c713
--- /dev/null
+++ b/sca-java-1.x/tags/java-stable-20060304/sca/model/src/main/java/org/apache/tuscany/model/assembly/impl/ComponentImplementationImpl.java
@@ -0,0 +1,108 @@
+/**
+ *
+ * Copyright 2005 The Apache Software Foundation or its licensors, as applicable.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.apache.tuscany.model.assembly.impl;
+
+import org.apache.tuscany.model.assembly.AssemblyModelContext;
+import org.apache.tuscany.model.assembly.AssemblyModelVisitor;
+import org.apache.tuscany.model.assembly.ComponentImplementation;
+import org.apache.tuscany.model.assembly.ComponentType;
+
+/**
+ * An implementation of ComponentImplementation.
+ */
+public class ComponentImplementationImpl extends ExtensibleImpl implements ComponentImplementation {
+
+ private ComponentType componentType;
+ private Object runtimeConfiguration;
+
+ /**
+ * Constructor
+ */
+ protected ComponentImplementationImpl() {
+ }
+
+ /**
+ * @see org.apache.tuscany.model.assembly.ComponentImplementation#getComponentType()
+ */
+ public ComponentType getComponentType() {
+ return componentType;
+ }
+
+ /**
+ * @see org.apache.tuscany.model.assembly.ComponentImplementation#setComponentType(org.apache.tuscany.model.assembly.ComponentType)
+ */
+ public void setComponentType(ComponentType componentType) {
+ checkNotFrozen();
+ this.componentType=componentType;
+ }
+
+ /**
+ * @see org.apache.tuscany.model.assembly.AssemblyModelObject#initialize(org.apache.tuscany.model.assembly.AssemblyModelContext)
+ */
+ public void initialize(AssemblyModelContext modelContext) {
+ if (isInitialized())
+ return;
+ super.initialize(modelContext);
+
+ if (componentType!=null)
+ componentType.initialize(modelContext);
+ }
+
+ /**
+ * @see org.apache.tuscany.model.assembly.AssemblyModelObject#freeze()
+ */
+ public void freeze() {
+ if (isFrozen())
+ return;
+ super.freeze();
+
+ // Freeze component type
+ if (componentType!=null)
+ componentType.freeze();
+ }
+
+ /**
+ * @see org.apache.tuscany.model.assembly.RuntimeConfigurationHolder#getRuntimeConfiguration()
+ */
+ public Object getRuntimeConfiguration() {
+ return runtimeConfiguration;
+ }
+
+ /**
+ * @see org.apache.tuscany.model.assembly.RuntimeConfigurationHolder#setRuntimeConfiguration(java.lang.Object)
+ */
+ public void setRuntimeConfiguration(Object configuration) {
+ checkNotFrozen();
+ this.runtimeConfiguration = configuration;
+ }
+
+ /**
+ * @see org.apache.tuscany.model.assembly.impl.AggregateImpl#accept(org.apache.tuscany.model.assembly.AssemblyModelVisitor)
+ */
+ public boolean accept(AssemblyModelVisitor visitor) {
+ if (!super.accept(visitor))
+ return false;
+
+ if (componentType!=null) {
+ if (!componentType.accept(visitor))
+ return false;
+ }
+
+ return true;
+ }
+
+}
diff --git a/sca-java-1.x/tags/java-stable-20060304/sca/model/src/main/java/org/apache/tuscany/model/assembly/impl/ComponentTypeImpl.java b/sca-java-1.x/tags/java-stable-20060304/sca/model/src/main/java/org/apache/tuscany/model/assembly/impl/ComponentTypeImpl.java
new file mode 100644
index 0000000000..baef2e9b2a
--- /dev/null
+++ b/sca-java-1.x/tags/java-stable-20060304/sca/model/src/main/java/org/apache/tuscany/model/assembly/impl/ComponentTypeImpl.java
@@ -0,0 +1,152 @@
+/**
+ *
+ * Copyright 2005 The Apache Software Foundation or its licensors, as applicable.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.apache.tuscany.model.assembly.impl;
+
+import java.util.ArrayList;
+import java.util.Collections;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+
+import org.apache.tuscany.model.assembly.AssemblyModelContext;
+import org.apache.tuscany.model.assembly.AssemblyModelVisitor;
+import org.apache.tuscany.model.assembly.ComponentType;
+import org.apache.tuscany.model.assembly.Property;
+import org.apache.tuscany.model.assembly.Reference;
+import org.apache.tuscany.model.assembly.Service;
+
+/**
+ * An implementation of ComponentType.
+ */
+public class ComponentTypeImpl extends ExtensibleImpl implements ComponentType {
+
+ private List<Reference> references=new ArrayList<Reference>();
+ private Map<String, Reference> referencesMap;
+ private List<Service> services=new ArrayList<Service>();
+ private Map<String, Service> servicesMap;
+ private List<Property> properties=new ArrayList<Property>();
+ private Map<String, Property> propertiesMap;
+
+ /**
+ * Constructor
+ */
+ protected ComponentTypeImpl() {
+ }
+
+ /**
+ * @see org.apache.tuscany.model.assembly.ComponentType#getReferences()
+ */
+ public List<Reference> getReferences() {
+ return references;
+ }
+
+ /**
+ * @see org.apache.tuscany.model.assembly.ComponentType#getReference(java.lang.String)
+ */
+ public Reference getReference(String name) {
+ checkInitialized();
+ return referencesMap.get(name);
+ }
+
+ /**
+ * @see org.apache.tuscany.model.assembly.ComponentType#getServices()
+ */
+ public List<Service> getServices() {
+ return services;
+ }
+
+ /**
+ * @see org.apache.tuscany.model.assembly.ComponentType#getService(java.lang.String)
+ */
+ public Service getService(String name) {
+ checkInitialized();
+ return servicesMap.get(name);
+ }
+
+ /**
+ * @see org.apache.tuscany.model.assembly.ComponentType#getProperties()
+ */
+ public List<Property> getProperties() {
+ return properties;
+ }
+
+ /**
+ * @see org.apache.tuscany.model.assembly.ComponentType#getProperty(java.lang.String)
+ */
+ public Property getProperty(String name) {
+ checkInitialized();
+ return propertiesMap.get(name);
+ }
+
+ /**
+ * @see org.apache.tuscany.model.assembly.AssemblyModelObject#initialize(org.apache.tuscany.model.assembly.AssemblyModelContext)
+ */
+ public void initialize(AssemblyModelContext modelContext) {
+ if (isInitialized())
+ return;
+ super.initialize(modelContext);
+
+ // Populate maps of references, properties and services
+ referencesMap = new HashMap<String, Reference>();
+ for (Reference reference : references) {
+ referencesMap.put(reference.getName(), reference);
+ reference.initialize(modelContext);
+ }
+ propertiesMap = new HashMap<String, Property>();
+ for (Property property : properties) {
+ propertiesMap.put(property.getName(), property);
+ property.initialize(modelContext);
+ }
+ servicesMap = new HashMap<String, Service>();
+ for (Service service : services) {
+ servicesMap.put(service.getName(), service);
+ service.initialize(modelContext);
+ }
+ }
+
+ public void freeze() {
+ if (isFrozen())
+ return;
+ super.freeze();
+
+ // Freeze lists of services, references and properties
+ services=Collections.unmodifiableList(services);
+ freeze(services);
+ references=Collections.unmodifiableList(references);
+ freeze(references);
+ properties=Collections.unmodifiableList(properties);
+ freeze(properties);
+ }
+
+ /**
+ * @see org.apache.tuscany.model.assembly.impl.AssemblyModelObjectImpl#accept(org.apache.tuscany.model.assembly.AssemblyModelVisitor)
+ */
+ public boolean accept(AssemblyModelVisitor visitor) {
+ if (!super.accept(visitor))
+ return false;
+
+ if (!accept(services, visitor))
+ return false;
+ if (!accept(references, visitor))
+ return false;
+ if (!accept(properties, visitor))
+ return false;
+
+ return true;
+ }
+
+}
diff --git a/sca-java-1.x/tags/java-stable-20060304/sca/model/src/main/java/org/apache/tuscany/model/assembly/impl/ConfiguredPortImpl.java b/sca-java-1.x/tags/java-stable-20060304/sca/model/src/main/java/org/apache/tuscany/model/assembly/impl/ConfiguredPortImpl.java
new file mode 100644
index 0000000000..9662d13dc7
--- /dev/null
+++ b/sca-java-1.x/tags/java-stable-20060304/sca/model/src/main/java/org/apache/tuscany/model/assembly/impl/ConfiguredPortImpl.java
@@ -0,0 +1,142 @@
+/**
+ *
+ * Copyright 2005 The Apache Software Foundation or its licensors, as applicable.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.apache.tuscany.model.assembly.impl;
+
+import org.apache.tuscany.model.assembly.AggregatePart;
+import org.apache.tuscany.model.assembly.AssemblyModelContext;
+import org.apache.tuscany.model.assembly.AssemblyModelVisitor;
+import org.apache.tuscany.model.assembly.ConfiguredPort;
+import org.apache.tuscany.model.assembly.Port;
+
+/**
+ * Implementation of ConfiguredPort.
+ */
+public abstract class ConfiguredPortImpl extends AssemblyModelObjectImpl implements ConfiguredPort {
+ private AggregatePart aggregatePart;
+ private Port port;
+
+ private Object runtimeConfiguration;
+ private Object proxyFactory;
+
+ /**
+ * Constructor
+ */
+ protected ConfiguredPortImpl() {
+ }
+
+ /**
+ * @see org.apache.tuscany.model.assembly.ConfiguredPort#getPort()
+ */
+ public Port getPort() {
+ return port;
+ }
+
+ /**
+ * @see org.apache.tuscany.model.assembly.ConfiguredPort#setPort(org.apache.tuscany.model.assembly.Port)
+ */
+ public void setPort(Port port) {
+ checkNotFrozen();
+ this.port = port;
+ }
+
+ /**
+ * @see org.apache.tuscany.model.assembly.ConfiguredPort#getAggregatePart()
+ */
+ public AggregatePart getAggregatePart() {
+ checkInitialized();
+ return aggregatePart;
+ }
+
+ /**
+ * Sets the aggregate part containing this configured port.
+ * @param aggregatePart
+ */
+ protected void setAggregatePart(AggregatePart aggregatePart) {
+ checkNotFrozen();
+ this.aggregatePart=aggregatePart;
+ }
+
+ /**
+ * @see org.apache.tuscany.model.assembly.ConfiguredPort#getProxyFactory()
+ */
+ public Object getProxyFactory() {
+ return proxyFactory;
+ }
+
+ /**
+ * @see org.apache.tuscany.model.assembly.ConfiguredPort#setProxyFactory(java.lang.Object)
+ */
+ public void setProxyFactory(Object proxyFactory) {
+ checkNotFrozen();
+ this.proxyFactory = proxyFactory;
+ }
+
+ /**
+ * @see org.apache.tuscany.model.assembly.RuntimeConfigurationHolder#getRuntimeConfiguration()
+ */
+ public Object getRuntimeConfiguration() {
+ return runtimeConfiguration;
+ }
+
+ /**
+ * @see org.apache.tuscany.model.assembly.RuntimeConfigurationHolder#setRuntimeConfiguration(java.lang.Object)
+ */
+ public void setRuntimeConfiguration(Object configuration) {
+ checkNotFrozen();
+ runtimeConfiguration = configuration;
+ }
+
+ /**
+ * @see org.apache.tuscany.model.assembly.impl.AssemblyModelObjectImpl#initialize(org.apache.tuscany.model.assembly.AssemblyModelContext)
+ */
+ public void initialize(AssemblyModelContext modelContext) {
+ if (isInitialized())
+ return;
+ super.initialize(modelContext);
+
+ if (port!=null)
+ port.initialize(modelContext);
+ }
+
+ /**
+ * @see org.apache.tuscany.model.assembly.impl.AssemblyModelObjectImpl#freeze()
+ */
+ public void freeze() {
+ if (isFrozen())
+ return;
+ super.freeze();
+
+ if (port!=null)
+ port.freeze();
+ }
+
+ /**
+ * @see org.apache.tuscany.model.assembly.impl.AssemblyModelObjectImpl#accept(org.apache.tuscany.model.assembly.AssemblyModelVisitor)
+ */
+ public boolean accept(AssemblyModelVisitor visitor) {
+ if (!super.accept(visitor))
+ return false;
+
+ if (port!=null) {
+ if (!port.accept(visitor))
+ return false;
+ }
+
+ return true;
+ }
+
+}
diff --git a/sca-java-1.x/tags/java-stable-20060304/sca/model/src/main/java/org/apache/tuscany/model/assembly/impl/ConfiguredPropertyImpl.java b/sca-java-1.x/tags/java-stable-20060304/sca/model/src/main/java/org/apache/tuscany/model/assembly/impl/ConfiguredPropertyImpl.java
new file mode 100644
index 0000000000..477c62ad44
--- /dev/null
+++ b/sca-java-1.x/tags/java-stable-20060304/sca/model/src/main/java/org/apache/tuscany/model/assembly/impl/ConfiguredPropertyImpl.java
@@ -0,0 +1,123 @@
+/**
+ *
+ * Copyright 2005 The Apache Software Foundation or its licensors, as applicable.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.apache.tuscany.model.assembly.impl;
+
+import org.apache.tuscany.model.assembly.AssemblyModelContext;
+import org.apache.tuscany.model.assembly.AssemblyModelVisitor;
+import org.apache.tuscany.model.assembly.ConfiguredProperty;
+import org.apache.tuscany.model.assembly.OverrideOption;
+import org.apache.tuscany.model.assembly.Property;
+
+/**
+ * Implementation of ConfiguredProperty
+ */
+public class ConfiguredPropertyImpl extends AssemblyModelObjectImpl implements ConfiguredProperty {
+ private Property property;
+ private OverrideOption overrideOption;
+ private Object value;
+
+ /**
+ * Constructor
+ */
+ protected ConfiguredPropertyImpl() {
+ }
+
+ /**
+ * @see org.apache.tuscany.model.assembly.ConfiguredProperty#getProperty()
+ */
+ public Property getProperty() {
+ return property;
+ }
+
+ /**
+ * @see org.apache.tuscany.model.assembly.ConfiguredProperty#setProperty(org.apache.tuscany.model.assembly.Property)
+ */
+ public void setProperty(Property property) {
+ checkNotFrozen();
+ this.property = property;
+ }
+
+ /**
+ * @see org.apache.tuscany.model.assembly.ConfiguredProperty#getValue()
+ */
+ public Object getValue() {
+ return value;
+ }
+
+ /**
+ * @see org.apache.tuscany.model.assembly.ConfiguredProperty#setValue(java.lang.Object)
+ */
+ public void setValue(Object value) {
+ checkNotFrozen();
+ this.value = value;
+ }
+
+ /*
+ * @see org.apache.tuscany.model.assembly.ConfiguredProperty#getOverrideOption()
+ */
+ public OverrideOption getOverrideOption() {
+ return overrideOption;
+ }
+
+ /*
+ * @see org.apache.tuscany.model.assembly.ConfiguredProperty#setOverrideOption(org.apache.tuscany.model.assembly.OverrideOption)
+ */
+ public void setOverrideOption(OverrideOption value) {
+ checkNotFrozen();
+ this.overrideOption=value;
+ }
+
+ /**
+ * @see org.apache.tuscany.model.assembly.impl.AssemblyModelObjectImpl#initialize(org.apache.tuscany.model.assembly.AssemblyModelContext)
+ */
+ public void initialize(AssemblyModelContext modelContext) {
+ if (isInitialized())
+ return;
+ super.initialize(modelContext);
+
+ if (property!=null)
+ property.initialize(modelContext);
+ }
+
+ /**
+ * @see org.apache.tuscany.model.assembly.impl.AssemblyModelObjectImpl#freeze()
+ */
+ public void freeze() {
+ if (isFrozen())
+ return;
+ super.freeze();
+
+ if (property!=null)
+ property.freeze();
+ }
+
+ /**
+ * @see org.apache.tuscany.model.assembly.impl.AssemblyModelObjectImpl#accept(org.apache.tuscany.model.assembly.AssemblyModelVisitor)
+ */
+ public boolean accept(AssemblyModelVisitor visitor) {
+ if (!super.accept(visitor))
+ return false;
+
+ if (property!=null) {
+ if (!property.accept(visitor))
+ return false;
+ }
+
+ return true;
+ }
+
+}
diff --git a/sca-java-1.x/tags/java-stable-20060304/sca/model/src/main/java/org/apache/tuscany/model/assembly/impl/ConfiguredReferenceImpl.java b/sca-java-1.x/tags/java-stable-20060304/sca/model/src/main/java/org/apache/tuscany/model/assembly/impl/ConfiguredReferenceImpl.java
new file mode 100644
index 0000000000..c9bc9b332f
--- /dev/null
+++ b/sca-java-1.x/tags/java-stable-20060304/sca/model/src/main/java/org/apache/tuscany/model/assembly/impl/ConfiguredReferenceImpl.java
@@ -0,0 +1,72 @@
+/**
+ *
+ * Copyright 2005 The Apache Software Foundation or its licensors, as applicable.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.apache.tuscany.model.assembly.impl;
+
+import java.util.ArrayList;
+import java.util.Collections;
+import java.util.List;
+
+import org.apache.tuscany.model.assembly.ConfiguredReference;
+import org.apache.tuscany.model.assembly.ConfiguredService;
+import org.apache.tuscany.model.assembly.Reference;
+
+/**
+ * An implementation of ConfiguredReference.
+ */
+public class ConfiguredReferenceImpl extends ConfiguredPortImpl implements ConfiguredReference {
+
+ private List<ConfiguredService> targetConfiguredServices = new ArrayList<ConfiguredService>();
+
+ /**
+ * Constructor
+ */
+ protected ConfiguredReferenceImpl() {
+ }
+
+ /**
+ * @see org.apache.tuscany.model.assembly.ConfiguredReference#getReference()
+ */
+ public Reference getReference() {
+ return (Reference) super.getPort();
+ }
+
+ /**
+ * @see org.apache.tuscany.model.assembly.ConfiguredReference#setReference(org.apache.tuscany.model.assembly.Reference)
+ */
+ public void setReference(Reference reference) {
+ checkNotFrozen();
+ super.setPort(reference);
+ }
+
+ /**
+ * @see org.apache.tuscany.model.assembly.ConfiguredReference#getTargetConfiguredServices()
+ */
+ public List<ConfiguredService> getTargetConfiguredServices() {
+ return targetConfiguredServices;
+ }
+
+ /**
+ * @see org.apache.tuscany.model.assembly.impl.ConfiguredPortImpl#freeze()
+ */
+ public void freeze() {
+ super.freeze();
+
+ // Freeze list of configured services
+ targetConfiguredServices=Collections.unmodifiableList(targetConfiguredServices);
+ }
+
+}
diff --git a/sca-java-1.x/tags/java-stable-20060304/sca/model/src/main/java/org/apache/tuscany/model/assembly/impl/ConfiguredServiceImpl.java b/sca-java-1.x/tags/java-stable-20060304/sca/model/src/main/java/org/apache/tuscany/model/assembly/impl/ConfiguredServiceImpl.java
new file mode 100644
index 0000000000..3e5d1a9cf5
--- /dev/null
+++ b/sca-java-1.x/tags/java-stable-20060304/sca/model/src/main/java/org/apache/tuscany/model/assembly/impl/ConfiguredServiceImpl.java
@@ -0,0 +1,48 @@
+/**
+ *
+ * Copyright 2005 The Apache Software Foundation or its licensors, as applicable.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.apache.tuscany.model.assembly.impl;
+
+import org.apache.tuscany.model.assembly.ConfiguredService;
+import org.apache.tuscany.model.assembly.Service;
+
+/**
+ * An implementation of ConfiguredService.
+ */
+public class ConfiguredServiceImpl extends ConfiguredPortImpl implements ConfiguredService {
+
+ /**
+ * Constructor
+ */
+ protected ConfiguredServiceImpl() {
+ }
+
+ /**
+ * @see org.apache.tuscany.model.assembly.ConfiguredService#getService()
+ */
+ public Service getService() {
+ return (Service) super.getPort();
+ }
+
+ /**
+ * @see org.apache.tuscany.model.assembly.ConfiguredService#setService(org.apache.tuscany.model.assembly.Service)
+ */
+ public void setService(Service service) {
+ checkNotFrozen();
+ super.setPort(service);
+ }
+
+}
diff --git a/sca-java-1.x/tags/java-stable-20060304/sca/model/src/main/java/org/apache/tuscany/model/assembly/impl/EntryPointImpl.java b/sca-java-1.x/tags/java-stable-20060304/sca/model/src/main/java/org/apache/tuscany/model/assembly/impl/EntryPointImpl.java
new file mode 100644
index 0000000000..0d39089be9
--- /dev/null
+++ b/sca-java-1.x/tags/java-stable-20060304/sca/model/src/main/java/org/apache/tuscany/model/assembly/impl/EntryPointImpl.java
@@ -0,0 +1,145 @@
+/**
+ *
+ * Copyright 2005 The Apache Software Foundation or its licensors, as applicable.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.apache.tuscany.model.assembly.impl;
+
+import java.util.ArrayList;
+import java.util.Collections;
+import java.util.List;
+
+import org.apache.tuscany.model.assembly.AssemblyModelContext;
+import org.apache.tuscany.model.assembly.AssemblyModelVisitor;
+import org.apache.tuscany.model.assembly.Binding;
+import org.apache.tuscany.model.assembly.ConfiguredReference;
+import org.apache.tuscany.model.assembly.ConfiguredService;
+import org.apache.tuscany.model.assembly.EntryPoint;
+
+/**
+ * An implementation of EntryPoint.
+ */
+public class EntryPointImpl extends AggregatePartImpl implements EntryPoint {
+
+ private ConfiguredService configuredService;
+ private ConfiguredReference configuredReference;
+ private List<Binding> bindings=new ArrayList<Binding>();
+
+ /**
+ * Constructor
+ */
+ protected EntryPointImpl() {
+ }
+
+ /**
+ * @see org.apache.tuscany.model.assembly.EntryPoint#getConfiguredReference()
+ */
+ public ConfiguredReference getConfiguredReference() {
+ return configuredReference;
+ }
+
+ /**
+ * @see org.apache.tuscany.model.assembly.EntryPoint#setConfiguredReference(org.apache.tuscany.model.assembly.ConfiguredReference)
+ */
+ public void setConfiguredReference(ConfiguredReference configuredReference) {
+ checkNotFrozen();
+ this.configuredReference=configuredReference;
+ }
+
+ /**
+ * @see org.apache.tuscany.model.assembly.EntryPoint#getConfiguredService()
+ */
+ public ConfiguredService getConfiguredService() {
+ return configuredService;
+ }
+
+ /**
+ * @see org.apache.tuscany.model.assembly.EntryPoint#setConfiguredService(org.apache.tuscany.model.assembly.ConfiguredService)
+ */
+ public void setConfiguredService(ConfiguredService configuredService) {
+ checkNotFrozen();
+ this.configuredService=configuredService;
+ }
+
+ /**
+ * @see org.apache.tuscany.model.assembly.EntryPoint#getBindings()
+ */
+ public List<Binding> getBindings() {
+ return bindings;
+ }
+
+ /**
+ * @see org.apache.tuscany.model.assembly.AssemblyModelObject#initialize(org.apache.tuscany.model.assembly.AssemblyModelContext)
+ */
+ public void initialize(AssemblyModelContext modelContext) {
+ if (isInitialized())
+ return;
+ super.initialize(modelContext);
+
+ // Initialize the service contract and reference to the published service
+ if (configuredReference != null) {
+ ((ConfiguredPortImpl)configuredReference).setAggregatePart(this);
+ configuredReference.initialize(modelContext);
+ }
+ if (configuredService != null) {
+ ((ConfiguredPortImpl)configuredService).setAggregatePart(this);
+ configuredService.initialize(modelContext);
+ }
+
+ // Initialize the bindings
+ initialize(bindings, modelContext);
+ }
+
+ /**
+ * @see org.apache.tuscany.model.assembly.AssemblyModelObject#freeze()
+ */
+ public void freeze() {
+ if (isFrozen())
+ return;
+ super.freeze();
+
+ // Freeze the service contract and configured reference
+ if (configuredReference != null)
+ configuredReference.freeze();
+ if (configuredService != null)
+ configuredService.freeze();
+
+ // Freeze the bindings
+ bindings=Collections.unmodifiableList(bindings);
+ freeze(bindings);
+ }
+
+ /**
+ * @see org.apache.tuscany.model.assembly.impl.AssemblyModelObjectImpl#accept(org.apache.tuscany.model.assembly.AssemblyModelVisitor)
+ */
+ public boolean accept(AssemblyModelVisitor visitor) {
+ if (!super.accept(visitor))
+ return false;
+
+ if (configuredReference!=null) {
+ if (!configuredReference.accept(visitor))
+ return false;
+ }
+
+ if (configuredService!=null) {
+ if (!configuredService.accept(visitor))
+ return false;
+ }
+
+ if (!accept(bindings, visitor))
+ return false;
+
+ return true;
+ }
+}
diff --git a/sca-java-1.x/tags/java-stable-20060304/sca/model/src/main/java/org/apache/tuscany/model/assembly/impl/ExtensibleImpl.java b/sca-java-1.x/tags/java-stable-20060304/sca/model/src/main/java/org/apache/tuscany/model/assembly/impl/ExtensibleImpl.java
new file mode 100644
index 0000000000..05f2082ced
--- /dev/null
+++ b/sca-java-1.x/tags/java-stable-20060304/sca/model/src/main/java/org/apache/tuscany/model/assembly/impl/ExtensibleImpl.java
@@ -0,0 +1,92 @@
+/**
+ *
+ * Copyright 2005 The Apache Software Foundation or its licensors, as applicable.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.apache.tuscany.model.assembly.impl;
+
+import java.util.ArrayList;
+import java.util.List;
+
+import org.apache.tuscany.model.assembly.AssemblyModelContext;
+import org.apache.tuscany.model.assembly.AssemblyModelVisitor;
+import org.apache.tuscany.model.assembly.Extensible;
+
+/**
+ * An implementation of Extensible.
+ */
+public abstract class ExtensibleImpl extends AssemblyModelObjectImpl implements Extensible {
+
+ private List<Object> extensibilityElements=new ArrayList<Object>();
+ private List<Object> extensibilityAttributes=new ArrayList<Object>();
+
+ /**
+ * Constructor
+ */
+ protected ExtensibleImpl() {
+ }
+
+ /**
+ * @see org.apache.tuscany.model.assembly.Extensible#getExtensibilityElements()
+ */
+ public List getExtensibilityElements() {
+ return extensibilityElements;
+ }
+
+ /**
+ * @see org.apache.tuscany.model.assembly.Extensible#getExtensibilityAttributes()
+ */
+ public List getExtensibilityAttributes() {
+ return extensibilityAttributes;
+ }
+
+ /**
+ * @see org.apache.tuscany.model.assembly.AssemblyModelObject#initialize(org.apache.tuscany.model.assembly.AssemblyModelContext)
+ */
+ public void initialize(AssemblyModelContext modelContext) {
+ if (isInitialized())
+ return;
+ super.initialize(modelContext);
+
+ // Initialize extensibility elements and attributes
+ initialize(extensibilityElements, modelContext);
+ initialize(extensibilityAttributes, modelContext);
+ }
+
+ public void freeze() {
+ if (isFrozen())
+ return;
+ super.freeze();
+
+ // Freeze extensibility elements and attributes
+ freeze(extensibilityElements);
+ freeze(extensibilityAttributes);
+ }
+
+ /**
+ * @see org.apache.tuscany.model.assembly.impl.AssemblyModelObjectImpl#accept(org.apache.tuscany.model.assembly.AssemblyModelVisitor)
+ */
+ public boolean accept(AssemblyModelVisitor visitor) {
+ if (!super.accept(visitor))
+ return false;
+
+ if (!accept(extensibilityElements, visitor))
+ return false;
+ if (!accept(extensibilityAttributes, visitor))
+ return false;
+
+ return true;
+ }
+
+}
diff --git a/sca-java-1.x/tags/java-stable-20060304/sca/model/src/main/java/org/apache/tuscany/model/assembly/impl/ExternalServiceImpl.java b/sca-java-1.x/tags/java-stable-20060304/sca/model/src/main/java/org/apache/tuscany/model/assembly/impl/ExternalServiceImpl.java
new file mode 100644
index 0000000000..33eced7e1f
--- /dev/null
+++ b/sca-java-1.x/tags/java-stable-20060304/sca/model/src/main/java/org/apache/tuscany/model/assembly/impl/ExternalServiceImpl.java
@@ -0,0 +1,135 @@
+/**
+ *
+ * Copyright 2005 The Apache Software Foundation or its licensors, as applicable.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.apache.tuscany.model.assembly.impl;
+
+import java.util.ArrayList;
+import java.util.Collections;
+import java.util.List;
+
+import org.apache.tuscany.model.assembly.AssemblyModelContext;
+import org.apache.tuscany.model.assembly.AssemblyModelVisitor;
+import org.apache.tuscany.model.assembly.Binding;
+import org.apache.tuscany.model.assembly.ConfiguredService;
+import org.apache.tuscany.model.assembly.ExternalService;
+import org.apache.tuscany.model.assembly.OverrideOption;
+
+/**
+ * An implementation ExternalService.
+ */
+public class ExternalServiceImpl extends AggregatePartImpl implements ExternalService {
+
+ private ConfiguredService configuredService;
+ private OverrideOption overrideOption;
+ private List<Binding> bindings=new ArrayList<Binding>();
+
+ /**
+ * Constructor
+ */
+ protected ExternalServiceImpl() {
+ }
+
+ /**
+ * @see org.apache.tuscany.model.assembly.sdo.impl.ExternalServiceImpl#getOverrideOption()
+ */
+ public OverrideOption getOverrideOption() {
+ return overrideOption;
+ }
+
+ /**
+ * @see org.apache.tuscany.model.assembly.ExternalService#setOverrideOption(org.apache.tuscany.model.assembly.OverrideOption)
+ */
+ public void setOverrideOption(OverrideOption newOverridable) {
+ checkNotFrozen();
+ overrideOption=newOverridable;
+ }
+
+ /**
+ * @see org.apache.tuscany.model.assembly.ExternalService#getBindings()
+ */
+ public List<Binding> getBindings() {
+ return bindings;
+ }
+
+ /**
+ * @see org.apache.tuscany.model.assembly.ExternalService#getConfiguredService()
+ */
+ public ConfiguredService getConfiguredService() {
+ return configuredService;
+ }
+
+ /**
+ * @see org.apache.tuscany.model.assembly.ExternalService#setConfiguredService(org.apache.tuscany.model.assembly.ConfiguredService)
+ */
+ public void setConfiguredService(ConfiguredService configuredService) {
+ checkNotFrozen();
+ this.configuredService=configuredService;
+ }
+
+ /**
+ * @see org.apache.tuscany.model.assembly.AssemblyModelObject#initialize(org.apache.tuscany.model.assembly.AssemblyModelContext)
+ */
+ public void initialize(AssemblyModelContext modelContext) {
+ if (isInitialized())
+ return;
+ super.initialize(modelContext);
+
+ // Initialize the configured service
+ if (configuredService != null) {
+ ((ConfiguredPortImpl)configuredService).setAggregatePart(this);
+ configuredService.initialize(modelContext);
+ }
+
+ // Initialize the bindings
+ initialize(bindings, modelContext);
+ }
+
+ /**
+ * @see org.apache.tuscany.model.assembly.AssemblyModelObject#freeze()
+ */
+ public void freeze() {
+ if (isFrozen())
+ return;
+ super.freeze();
+
+ // Freeze the configured service
+ if (configuredService!= null)
+ configuredService.freeze();
+
+ // Freeze the bindings
+ bindings=Collections.unmodifiableList(bindings);
+ freeze(bindings);
+ }
+
+ /**
+ * @see org.apache.tuscany.model.assembly.impl.ExtensibleImpl#accept(org.apache.tuscany.model.assembly.AssemblyModelVisitor)
+ */
+ public boolean accept(AssemblyModelVisitor visitor) {
+ if (!super.accept(visitor))
+ return false;
+
+ if (configuredService!=null) {
+ if (!configuredService.accept(visitor))
+ return false;
+ }
+
+ if (!accept(bindings, visitor))
+ return false;
+
+ return true;
+ }
+
+}
diff --git a/sca-java-1.x/tags/java-stable-20060304/sca/model/src/main/java/org/apache/tuscany/model/assembly/impl/ModuleComponentImpl.java b/sca-java-1.x/tags/java-stable-20060304/sca/model/src/main/java/org/apache/tuscany/model/assembly/impl/ModuleComponentImpl.java
new file mode 100644
index 0000000000..d830c5c8d8
--- /dev/null
+++ b/sca-java-1.x/tags/java-stable-20060304/sca/model/src/main/java/org/apache/tuscany/model/assembly/impl/ModuleComponentImpl.java
@@ -0,0 +1,65 @@
+/**
+ *
+ * Copyright 2005 The Apache Software Foundation or its licensors, as applicable.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.apache.tuscany.model.assembly.impl;
+
+import org.apache.tuscany.model.assembly.Module;
+import org.apache.tuscany.model.assembly.ModuleComponent;
+
+/**
+ * An implementation of ModuleComponent.
+ */
+public class ModuleComponentImpl extends ComponentImpl implements ModuleComponent {
+
+ private String uri;
+
+ /**
+ * Constructor
+ */
+ protected ModuleComponentImpl() {
+ }
+
+ /**
+ * @see org.apache.tuscany.model.assembly.ModuleComponent#setModuleImplementation(org.apache.tuscany.model.assembly.Module)
+ */
+ public void setModuleImplementation(Module module) {
+ checkNotFrozen();
+ super.setComponentImplementation(module);
+ }
+
+ /**
+ * @see org.apache.tuscany.model.assembly.ModuleComponent#getModuleImplementation()
+ */
+ public Module getModuleImplementation() {
+ return (Module)super.getComponentImplementation();
+ }
+
+ /**
+ * @see org.apache.tuscany.model.assembly.ModuleComponent#getURI()
+ */
+ public String getURI() {
+ return uri;
+ }
+
+ /**
+ * @see org.apache.tuscany.model.assembly.ModuleComponent#setURI(java.lang.String)
+ */
+ public void setURI(String value) {
+ checkNotFrozen();
+ uri=value;
+ }
+
+}
diff --git a/sca-java-1.x/tags/java-stable-20060304/sca/model/src/main/java/org/apache/tuscany/model/assembly/impl/ModuleFragmentImpl.java b/sca-java-1.x/tags/java-stable-20060304/sca/model/src/main/java/org/apache/tuscany/model/assembly/impl/ModuleFragmentImpl.java
new file mode 100644
index 0000000000..a36935dbfb
--- /dev/null
+++ b/sca-java-1.x/tags/java-stable-20060304/sca/model/src/main/java/org/apache/tuscany/model/assembly/impl/ModuleFragmentImpl.java
@@ -0,0 +1,32 @@
+/**
+ *
+ * Copyright 2005 The Apache Software Foundation or its licensors, as applicable.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.apache.tuscany.model.assembly.impl;
+
+import org.apache.tuscany.model.assembly.ModuleFragment;
+
+/**
+ * An implementation of ModuleFragment.
+ */
+public class ModuleFragmentImpl extends AggregateImpl implements ModuleFragment {
+
+ /**
+ * Constructor
+ */
+ protected ModuleFragmentImpl() {
+ }
+
+}
diff --git a/sca-java-1.x/tags/java-stable-20060304/sca/model/src/main/java/org/apache/tuscany/model/assembly/impl/ModuleImpl.java b/sca-java-1.x/tags/java-stable-20060304/sca/model/src/main/java/org/apache/tuscany/model/assembly/impl/ModuleImpl.java
new file mode 100644
index 0000000000..8d89590225
--- /dev/null
+++ b/sca-java-1.x/tags/java-stable-20060304/sca/model/src/main/java/org/apache/tuscany/model/assembly/impl/ModuleImpl.java
@@ -0,0 +1,243 @@
+/**
+ *
+ * Copyright 2005 The Apache Software Foundation or its licensors, as applicable.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.apache.tuscany.model.assembly.impl;
+
+import java.util.ArrayList;
+import java.util.Collections;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+
+import org.apache.tuscany.model.assembly.AssemblyFactory;
+import org.apache.tuscany.model.assembly.AssemblyModelContext;
+import org.apache.tuscany.model.assembly.AssemblyModelVisitor;
+import org.apache.tuscany.model.assembly.Component;
+import org.apache.tuscany.model.assembly.ComponentType;
+import org.apache.tuscany.model.assembly.ConfiguredProperty;
+import org.apache.tuscany.model.assembly.ConfiguredReference;
+import org.apache.tuscany.model.assembly.ConfiguredService;
+import org.apache.tuscany.model.assembly.EntryPoint;
+import org.apache.tuscany.model.assembly.ExternalService;
+import org.apache.tuscany.model.assembly.Module;
+import org.apache.tuscany.model.assembly.ModuleFragment;
+import org.apache.tuscany.model.assembly.Multiplicity;
+import org.apache.tuscany.model.assembly.OverrideOption;
+import org.apache.tuscany.model.assembly.Reference;
+import org.apache.tuscany.model.assembly.Service;
+import org.apache.tuscany.model.assembly.ServiceContract;
+import org.apache.tuscany.model.assembly.ServiceURI;
+import org.apache.tuscany.model.assembly.Wire;
+
+/**
+ * An implementation of Module.
+ */
+public class ModuleImpl extends AggregateImpl implements Module {
+
+ private List<ModuleFragment> moduleFragments = new ArrayList<ModuleFragment>();
+ private Map<String, ModuleFragment> moduleFragmentsMap;
+ private ComponentType componentType;
+ private Object runtimeConfiguration;
+
+ /**
+ * Constructor
+ */
+ protected ModuleImpl() {
+ }
+
+ /**
+ * @see org.apache.tuscany.model.assembly.ComponentImplementation#getComponentType()
+ */
+ public ComponentType getComponentType() {
+ return componentType;
+ }
+
+ /**
+ * @see org.apache.tuscany.model.assembly.ComponentImplementation#setComponentType(org.apache.tuscany.model.assembly.ComponentType)
+ */
+ public void setComponentType(ComponentType componentType) {
+ checkNotFrozen();
+ this.componentType=componentType;
+ }
+
+ /**
+ * @see org.apache.tuscany.model.assembly.Module#getModuleFragments()
+ */
+ public List<ModuleFragment> getModuleFragments() {
+ return moduleFragments;
+ }
+
+ /**
+ * @see org.apache.tuscany.model.assembly.Module#getModuleFragment(java.lang.String)
+ */
+ public ModuleFragment getModuleFragment(String name) {
+ checkInitialized();
+ return moduleFragmentsMap.get(name);
+ }
+
+ /**
+ * @see org.apache.tuscany.model.assembly.AssemblyModelObject#initialize(org.apache.tuscany.model.assembly.AssemblyModelContext)
+ */
+ public void initialize(AssemblyModelContext modelContext) {
+ if (isInitialized())
+ return;
+
+ // Populate map of module fragments
+ moduleFragmentsMap = new HashMap<String, ModuleFragment>();
+ for (ModuleFragment moduleFragment : moduleFragments) {
+ moduleFragmentsMap.put(moduleFragment.getName(), moduleFragment);
+
+ // Add all WSDL imports, components, entry points and external services from the module fragments
+ getWSDLImports().addAll(moduleFragment.getWSDLImports());
+ getComponents().addAll(moduleFragment.getComponents());
+ getEntryPoints().addAll(moduleFragment.getEntryPoints());
+ getExternalServices().addAll(moduleFragment.getExternalServices());
+
+ // Add all the wires from the module fragments
+ getWires().addAll(moduleFragment.getWires());
+
+ moduleFragment.initialize(modelContext);
+ }
+
+ // Initialize the aggregate
+ super.initialize(modelContext);
+
+ // Derive the component type from the entry points and external services in the module
+ // Also derive properties from the overridable properties of the components in the module
+ if (componentType==null) {
+ AssemblyFactory factory = modelContext.getAssemblyFactory();
+ componentType = factory.createComponentType();
+ for (EntryPoint entryPoint : getEntryPoints()) {
+ Service service = factory.createService();
+ service.setName(entryPoint.getName());
+ ServiceContract serviceContract = entryPoint.getConfiguredService().getService().getServiceContract();
+ if (serviceContract != null)
+ service.setServiceContract(serviceContract);
+ componentType.getServices().add(service);
+ }
+ for (ExternalService externalService : getExternalServices()) {
+ if (externalService.getOverrideOption()==null || externalService.getOverrideOption()==OverrideOption.NO)
+ continue;
+ Reference reference = factory.createReference();
+ reference.setName(externalService.getName());
+ ServiceContract serviceContract = externalService.getConfiguredService().getService().getServiceContract();
+ if (serviceContract != null)
+ reference.setServiceContract(serviceContract);
+ componentType.getReferences().add(reference);
+ }
+ for (Component component : getComponents()) {
+ for (ConfiguredProperty configuredProperty : component.getConfiguredProperties()) {
+ if (configuredProperty.getOverrideOption()==null || configuredProperty.getOverrideOption()==OverrideOption.NO)
+ continue;
+ componentType.getProperties().add(configuredProperty.getProperty());
+ }
+ }
+ }
+ componentType.initialize(modelContext);
+
+
+ // Wire the module parts
+ for (Wire wire : getWires()) {
+
+ // Get the source reference
+ ServiceURI sourceURI=wire.getSource();
+ ConfiguredReference configuredReference = null;
+ String partName = sourceURI.getPartName();
+ String referenceName = sourceURI.getServiceName();
+ if (referenceName != null) {
+ Component component = getComponent(partName);
+ if (component != null) {
+ configuredReference = component.getConfiguredReference(referenceName);
+ }
+ } else {
+ EntryPoint entryPoint = getEntryPoint(partName);
+ if (entryPoint != null) {
+ configuredReference = entryPoint.getConfiguredReference();
+ }
+ }
+ if (configuredReference == null) {
+ throw new IllegalArgumentException("Cannot find wire source " + sourceURI.getAddress());
+ } else {
+
+ // Resolve the target service endpoint
+ ServiceURI targetURI = wire.getTarget();
+ ConfiguredService configuredService = getConfiguredService(targetURI);
+ if (configuredService != null) {
+
+ // Wire the reference to the target
+ Multiplicity multiplicity=configuredReference.getReference().getMultiplicity();
+ if (multiplicity==Multiplicity.ZERO_N || multiplicity==Multiplicity.ONE_N) {
+ configuredReference.getTargetConfiguredServices().add(configuredService);
+ } else {
+ configuredReference.getTargetConfiguredServices().clear();
+ configuredReference.getTargetConfiguredServices().add(configuredService);
+ }
+ } else {
+ throw new IllegalArgumentException("Cannot find service for " + targetURI.getAddress());
+ }
+ }
+ }
+ }
+
+ /**
+ * @see org.apache.tuscany.model.assembly.AssemblyModelObject#freeze()
+ */
+ public void freeze() {
+ if (isFrozen())
+ return;
+ super.freeze();
+
+ // Freeze component type and module fragments
+ if (componentType!=null)
+ componentType.freeze();
+ moduleFragments=Collections.unmodifiableList(moduleFragments);
+ freeze(moduleFragments);
+ }
+
+ /**
+ * @see org.apache.tuscany.model.assembly.RuntimeConfigurationHolder#getRuntimeConfiguration()
+ */
+ public Object getRuntimeConfiguration() {
+ return runtimeConfiguration;
+ }
+
+ /**
+ * @see org.apache.tuscany.model.assembly.RuntimeConfigurationHolder#setRuntimeConfiguration(java.lang.Object)
+ */
+ public void setRuntimeConfiguration(Object configuration) {
+ checkNotFrozen();
+ this.runtimeConfiguration = configuration;
+ }
+
+ /**
+ * @see org.apache.tuscany.model.assembly.impl.AggregateImpl#accept(org.apache.tuscany.model.assembly.AssemblyModelVisitor)
+ */
+ public boolean accept(AssemblyModelVisitor visitor) {
+ if (!super.accept(visitor))
+ return false;
+
+ if (componentType!=null) {
+ if (!componentType.accept(visitor))
+ return false;
+ }
+
+ if (!accept(moduleFragments, visitor))
+ return false;
+
+ return true;
+ }
+
+}
diff --git a/sca-java-1.x/tags/java-stable-20060304/sca/model/src/main/java/org/apache/tuscany/model/assembly/impl/PortImpl.java b/sca-java-1.x/tags/java-stable-20060304/sca/model/src/main/java/org/apache/tuscany/model/assembly/impl/PortImpl.java
new file mode 100644
index 0000000000..ae92300d4e
--- /dev/null
+++ b/sca-java-1.x/tags/java-stable-20060304/sca/model/src/main/java/org/apache/tuscany/model/assembly/impl/PortImpl.java
@@ -0,0 +1,106 @@
+/**
+ *
+ * Copyright 2005 The Apache Software Foundation or its licensors, as applicable.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.apache.tuscany.model.assembly.impl;
+
+import org.apache.tuscany.model.assembly.AssemblyModelContext;
+import org.apache.tuscany.model.assembly.AssemblyModelVisitor;
+import org.apache.tuscany.model.assembly.Port;
+import org.apache.tuscany.model.assembly.ServiceContract;
+
+/**
+ * An implementation of Port.
+ */
+public abstract class PortImpl extends AssemblyModelObjectImpl implements Port {
+
+ private ServiceContract serviceContract;
+ private String name;
+
+ /**
+ * Constructor
+ */
+ protected PortImpl() {
+ }
+
+ /**
+ * @see org.apache.tuscany.model.assembly.Port#getName()
+ */
+ public String getName() {
+ return name;
+ }
+
+ /**
+ * @see org.apache.tuscany.model.assembly.Port#setName(java.lang.String)
+ */
+ public void setName(String value) {
+ checkNotFrozen();
+ name=value;
+ }
+
+ /**
+ * @see org.apache.tuscany.model.assembly.Port#getServiceContract()
+ */
+ public ServiceContract getServiceContract() {
+ return serviceContract;
+ }
+
+ /**
+ * @see org.apache.tuscany.model.assembly.Port#setServiceContract(org.apache.tuscany.model.assembly.ServiceContract)
+ */
+ public void setServiceContract(ServiceContract value) {
+ checkNotFrozen();
+ serviceContract=value;
+ }
+
+ /**
+ * @see org.apache.tuscany.model.assembly.impl.AssemblyModelObjectImpl#initialize(org.apache.tuscany.model.assembly.AssemblyModelContext)
+ */
+ public void initialize(AssemblyModelContext modelContext) {
+ if (isInitialized())
+ return;
+ super.initialize(modelContext);
+
+ if (serviceContract!=null)
+ serviceContract.initialize(modelContext);
+ }
+
+ /**
+ * @see org.apache.tuscany.model.assembly.impl.AssemblyModelObjectImpl#freeze()
+ */
+ public void freeze() {
+ if (isFrozen())
+ return;
+ super.freeze();
+
+ if (serviceContract!=null)
+ serviceContract.freeze();
+ }
+
+ /**
+ * @see org.apache.tuscany.model.assembly.impl.AssemblyModelObjectImpl#accept(org.apache.tuscany.model.assembly.AssemblyModelVisitor)
+ */
+ public boolean accept(AssemblyModelVisitor visitor) {
+ if (!super.accept(visitor))
+ return false;
+
+ if (serviceContract!=null) {
+ if (!serviceContract.accept(visitor))
+ return false;
+ }
+
+ return true;
+ }
+}
diff --git a/sca-java-1.x/tags/java-stable-20060304/sca/model/src/main/java/org/apache/tuscany/model/assembly/impl/PropertyImpl.java b/sca-java-1.x/tags/java-stable-20060304/sca/model/src/main/java/org/apache/tuscany/model/assembly/impl/PropertyImpl.java
new file mode 100644
index 0000000000..f79ad2df3b
--- /dev/null
+++ b/sca-java-1.x/tags/java-stable-20060304/sca/model/src/main/java/org/apache/tuscany/model/assembly/impl/PropertyImpl.java
@@ -0,0 +1,178 @@
+/**
+ *
+ * Copyright 2005 The Apache Software Foundation or its licensors, as applicable.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.apache.tuscany.model.assembly.impl;
+
+import java.math.BigDecimal;
+import java.math.BigInteger;
+import java.util.Date;
+import java.util.HashMap;
+import java.util.Map;
+
+import org.apache.tuscany.model.assembly.AssemblyModelContext;
+import org.apache.tuscany.model.assembly.Property;
+import org.apache.tuscany.sdo.util.SDOUtil;
+
+import commonj.sdo.Type;
+
+/**
+ * An implementation of Property.
+ */
+public class PropertyImpl extends ExtensibleImpl implements Property {
+
+ private Object defaultValue;
+ private String name;
+ private boolean many;
+ private boolean required;
+ private Class type;
+
+ private Type sdoType;
+
+ /**
+ * Constructor
+ */
+ protected PropertyImpl() {
+ }
+
+ /**
+ * @see org.apache.tuscany.model.assembly.Property#getDefaultValue()
+ */
+ public Object getDefaultValue() {
+ return defaultValue;
+ }
+
+ /**
+ * @see org.apache.tuscany.model.assembly.Property#getName()
+ */
+ public String getName() {
+ return name;
+ }
+
+ /**
+ * @see org.apache.tuscany.model.assembly.Property#getType()
+ */
+ public Class getType() {
+ return type;
+ }
+
+ /**
+ * @see org.apache.tuscany.model.assembly.Property#isMany()
+ */
+ public boolean isMany() {
+ return many;
+ }
+
+ /**
+ * @see org.apache.tuscany.model.assembly.Property#isRequired()
+ */
+ public boolean isRequired() {
+ return required;
+ }
+
+ /**
+ * @see org.apache.tuscany.model.assembly.Property#setDefaultValue(java.lang.Object)
+ */
+ public void setDefaultValue(Object value) {
+ defaultValue=value;
+ }
+
+ /**
+ * @see org.apache.tuscany.model.assembly.Property#setMany(boolean)
+ */
+ public void setMany(boolean value) {
+ checkNotFrozen();
+ many=value;
+ }
+
+ /**
+ * @see org.apache.tuscany.model.assembly.Property#setName(java.lang.String)
+ */
+ public void setName(String value) {
+ checkNotFrozen();
+ name=value;
+ }
+
+ /**
+ * @see org.apache.tuscany.model.assembly.Property#setRequired(boolean)
+ */
+ public void setRequired(boolean value) {
+ checkNotFrozen();
+ required=value;
+ }
+
+ /**
+ * @see org.apache.tuscany.model.assembly.Property#setType(java.lang.Class)
+ */
+ public void setType(Class value) {
+ checkNotFrozen();
+ type=value;
+ }
+
+ /**
+ * @param sdoType The sdoType to set.
+ */
+ public void setSDOType(Type sdoType) {
+ checkNotFrozen();
+ this.sdoType = sdoType;
+ }
+
+ /**
+ * @return Returns the sdoType.
+ */
+ public Type getSDOType() {
+ return sdoType;
+ }
+
+ private final static Map<Class, Type> typeMapping=new HashMap<Class, Type>();
+
+ static {
+ typeMapping.put(BigDecimal.class, SDOUtil.getXSDSDOType("decimal"));
+ typeMapping.put(BigInteger.class, SDOUtil.getXSDSDOType("integer"));
+ typeMapping.put(boolean.class, SDOUtil.getXSDSDOType("boolean"));
+ typeMapping.put(Boolean.class, SDOUtil.getXSDSDOType("boolean"));
+ typeMapping.put(byte.class, SDOUtil.getXSDSDOType("byte"));
+ typeMapping.put(Byte.class, SDOUtil.getXSDSDOType("Byte"));
+ typeMapping.put(byte[].class, SDOUtil.getXSDSDOType("hexBinary"));
+ typeMapping.put(char.class, SDOUtil.getXSDSDOType("string"));
+ typeMapping.put(Character.class, SDOUtil.getXSDSDOType("string"));
+ typeMapping.put(Date.class, SDOUtil.getXSDSDOType("dateTime"));
+ typeMapping.put(double.class, SDOUtil.getXSDSDOType("double"));
+ typeMapping.put(Double.class, SDOUtil.getXSDSDOType("double"));
+ typeMapping.put(float.class, SDOUtil.getXSDSDOType("float"));
+ typeMapping.put(Float.class, SDOUtil.getXSDSDOType("float"));
+ typeMapping.put(int.class, SDOUtil.getXSDSDOType("int"));
+ typeMapping.put(Integer.class, SDOUtil.getXSDSDOType("int"));
+ typeMapping.put(long.class, SDOUtil.getXSDSDOType("long"));
+ typeMapping.put(Long.class, SDOUtil.getXSDSDOType("long"));
+ typeMapping.put(short.class, SDOUtil.getXSDSDOType("short"));
+ typeMapping.put(Short.class, SDOUtil.getXSDSDOType("short"));
+ typeMapping.put(String.class, SDOUtil.getXSDSDOType("string"));
+ }
+
+ /*
+ * @see org.apache.tuscany.model.assembly.impl.ExtensibleImpl#initialize(org.apache.tuscany.model.assembly.AssemblyModelContext)
+ */
+ public void initialize(AssemblyModelContext modelContext) {
+ if (isInitialized())
+ return;
+ super.initialize(modelContext);
+
+ // Get the SDO type corresponding to the property's Java type
+ if (sdoType==null) {
+ sdoType=typeMapping.get(type);
+ }
+ }
+}
diff --git a/sca-java-1.x/tags/java-stable-20060304/sca/model/src/main/java/org/apache/tuscany/model/assembly/impl/ReferenceImpl.java b/sca-java-1.x/tags/java-stable-20060304/sca/model/src/main/java/org/apache/tuscany/model/assembly/impl/ReferenceImpl.java
new file mode 100644
index 0000000000..8a2d348edc
--- /dev/null
+++ b/sca-java-1.x/tags/java-stable-20060304/sca/model/src/main/java/org/apache/tuscany/model/assembly/impl/ReferenceImpl.java
@@ -0,0 +1,50 @@
+/**
+ *
+ * Copyright 2005 The Apache Software Foundation or its licensors, as applicable.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.apache.tuscany.model.assembly.impl;
+
+import org.apache.tuscany.model.assembly.Multiplicity;
+import org.apache.tuscany.model.assembly.Reference;
+
+/**
+ * An implementation of Reference.
+ */
+public class ReferenceImpl extends PortImpl implements Reference {
+
+ private Multiplicity multiplicity;
+
+ /**
+ * Constructor
+ */
+ protected ReferenceImpl() {
+ }
+
+ /**
+ * @see org.apache.tuscany.model.assembly.Reference#getMultiplicity()
+ */
+ public Multiplicity getMultiplicity() {
+ return multiplicity;
+ }
+
+ /**
+ * @see org.apache.tuscany.model.assembly.Reference#setMultiplicity(org.apache.tuscany.model.assembly.Multiplicity)
+ */
+ public void setMultiplicity(Multiplicity multiplicity) {
+ checkNotFrozen();
+ this.multiplicity=multiplicity;
+ }
+
+}
diff --git a/sca-java-1.x/tags/java-stable-20060304/sca/model/src/main/java/org/apache/tuscany/model/assembly/impl/ServiceContractImpl.java b/sca-java-1.x/tags/java-stable-20060304/sca/model/src/main/java/org/apache/tuscany/model/assembly/impl/ServiceContractImpl.java
new file mode 100644
index 0000000000..c9fe9b269d
--- /dev/null
+++ b/sca-java-1.x/tags/java-stable-20060304/sca/model/src/main/java/org/apache/tuscany/model/assembly/impl/ServiceContractImpl.java
@@ -0,0 +1,81 @@
+/**
+ *
+ * Copyright 2005 The Apache Software Foundation or its licensors, as applicable.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.apache.tuscany.model.assembly.impl;
+
+import org.apache.tuscany.model.assembly.Scope;
+import org.apache.tuscany.model.assembly.ServiceContract;
+
+/**
+ * An implementation of ServiceContract.
+ */
+public class ServiceContractImpl extends ExtensibleImpl implements ServiceContract {
+
+ private Class interface_;
+ private Class callbackInterface;
+ private Scope scope;
+
+ /**
+ * Constructor
+ */
+ protected ServiceContractImpl() {
+ }
+
+ /**
+ * @see org.apache.tuscany.model.assembly.ServiceContract#getCallbackInterface()
+ */
+ public Class getCallbackInterface() {
+ return callbackInterface;
+ }
+
+ /**
+ * @see org.apache.tuscany.model.assembly.ServiceContract#getInterface()
+ */
+ public Class getInterface() {
+ return interface_;
+ }
+
+ /**
+ * @see org.apache.tuscany.model.assembly.ServiceContract#getScope()
+ */
+ public Scope getScope() {
+ return scope;
+ }
+
+ /**
+ * @see org.apache.tuscany.model.assembly.ServiceContract#setCallbackInterface(java.lang.Class)
+ */
+ public void setCallbackInterface(Class value) {
+ checkNotFrozen();
+ callbackInterface=value;
+ }
+
+ /**
+ * @see org.apache.tuscany.model.assembly.ServiceContract#setInterface(java.lang.Class)
+ */
+ public void setInterface(Class value) {
+ checkNotFrozen();
+ interface_=value;
+ }
+
+ /**
+ * @see org.apache.tuscany.model.assembly.ServiceContract#setScope(org.apache.tuscany.model.assembly.Scope)
+ */
+ public void setScope(Scope scope) {
+ checkNotFrozen();
+ this.scope=scope;
+ }
+}
diff --git a/sca-java-1.x/tags/java-stable-20060304/sca/model/src/main/java/org/apache/tuscany/model/assembly/impl/ServiceImpl.java b/sca-java-1.x/tags/java-stable-20060304/sca/model/src/main/java/org/apache/tuscany/model/assembly/impl/ServiceImpl.java
new file mode 100644
index 0000000000..230d89e373
--- /dev/null
+++ b/sca-java-1.x/tags/java-stable-20060304/sca/model/src/main/java/org/apache/tuscany/model/assembly/impl/ServiceImpl.java
@@ -0,0 +1,32 @@
+/**
+ *
+ * Copyright 2005 The Apache Software Foundation or its licensors, as applicable.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.apache.tuscany.model.assembly.impl;
+
+import org.apache.tuscany.model.assembly.Service;
+
+/**
+ * An implementation of Service.
+ */
+public class ServiceImpl extends PortImpl implements Service {
+
+ /**
+ * Constructor
+ */
+ protected ServiceImpl() {
+ }
+
+}
diff --git a/sca-java-1.x/tags/java-stable-20060304/sca/model/src/main/java/org/apache/tuscany/model/assembly/impl/ServiceURIImpl.java b/sca-java-1.x/tags/java-stable-20060304/sca/model/src/main/java/org/apache/tuscany/model/assembly/impl/ServiceURIImpl.java
new file mode 100644
index 0000000000..6d2972fb7d
--- /dev/null
+++ b/sca-java-1.x/tags/java-stable-20060304/sca/model/src/main/java/org/apache/tuscany/model/assembly/impl/ServiceURIImpl.java
@@ -0,0 +1,198 @@
+/**
+ *
+ * Copyright 2005 The Apache Software Foundation or its licensors, as applicable.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.apache.tuscany.model.assembly.impl;
+
+import org.eclipse.emf.common.util.URI;
+
+import org.apache.tuscany.model.assembly.ConfiguredPort;
+import org.apache.tuscany.model.assembly.ConfiguredReference;
+import org.apache.tuscany.model.assembly.ConfiguredService;
+import org.apache.tuscany.model.assembly.ModuleComponent;
+import org.apache.tuscany.model.assembly.AggregatePart;
+import org.apache.tuscany.model.assembly.Service;
+import org.apache.tuscany.model.assembly.ServiceURI;
+
+/**
+ * An implementation of ServiceURI.
+ */
+public class ServiceURIImpl implements ServiceURI {
+
+ private String address;
+ private Boolean isSCAScheme;
+ private boolean isParsed;
+ private String moduleComponentName;
+ private String partName;
+ private String serviceName;
+
+ /**
+ * Constructor
+ */
+ protected ServiceURIImpl(String address) {
+ this.address = address;
+ }
+
+ /**
+ * Constructor
+ *
+ * @param moduleComponent
+ * @param configuredPort
+ */
+ protected ServiceURIImpl(ModuleComponent moduleComponent, AggregatePart aggregatePart, ConfiguredPort configuredPort) {
+ if (moduleComponent != null)
+ moduleComponentName = moduleComponent.getName();
+ else
+ moduleComponentName = "";
+ if (configuredPort instanceof ConfiguredService) {
+ partName = aggregatePart.getName();
+ ConfiguredService configuredService = (ConfiguredService) configuredPort;
+ Service service = configuredService.getService();
+ if (service != null) {
+ serviceName = configuredService.getService().getName();
+ address = "sca:///" + moduleComponentName + '/' + partName + '/' + serviceName;
+ } else {
+ address = "sca:///" + moduleComponentName + '/' + partName;
+ }
+
+ } else if (configuredPort instanceof ConfiguredReference) {
+ ConfiguredReference configuredReference = (ConfiguredReference) configuredPort;
+ partName = aggregatePart.getName();
+ serviceName = configuredReference.getReference().getName();
+ if (serviceName!=null)
+ address = "sca:///" + moduleComponentName + '/' + partName + '/' + serviceName;
+ else
+ address = "sca:///" + moduleComponentName + '/' + partName;
+ }
+
+ isSCAScheme = Boolean.TRUE;
+ isParsed = true;
+ }
+
+ /**
+ * Constructor
+ *
+ * @param moduleComponent
+ * @param service
+ */
+ protected ServiceURIImpl(ModuleComponent moduleComponent, String targetServiceName) {
+ if (moduleComponent != null)
+ moduleComponentName = moduleComponent.getName();
+ else
+ moduleComponentName = "";
+ int s = targetServiceName.indexOf('/');
+ if (s == -1) {
+ partName = targetServiceName;
+ address = "sca:///" + moduleComponentName + '/' + partName;
+ } else {
+ partName = targetServiceName.substring(0, s);
+ this.serviceName = targetServiceName.substring(s + 1);
+ address = "sca:///" + moduleComponentName + '/' + partName + '/' + this.serviceName;
+ }
+ isSCAScheme = Boolean.TRUE;
+ isParsed = true;
+ }
+
+ /**
+ * Returns true if the address scheme is sca:
+ *
+ * @return
+ */
+ public boolean isSCAScheme() {
+ if (isSCAScheme == null) {
+ if (address.startsWith("sca://")) {
+ isSCAScheme = Boolean.TRUE;
+ } else {
+ isSCAScheme = Boolean.FALSE;
+ }
+ }
+ return isSCAScheme.booleanValue();
+ }
+
+ /**
+ * Returns a URI for this address
+ *
+ * @return
+ */
+ public URI getURI() {
+ return URI.createURI(address);
+ }
+
+ /**
+ * @return Returns the address.
+ */
+ public String getAddress() {
+ return address;
+ }
+
+ /**
+ * Parse the address.
+ */
+ private void parse() {
+ isParsed = true;
+ if (isSCAScheme()) {
+ int s1 = address.indexOf('/', 6);
+ if (s1 == -1)
+ return;
+ s1++;
+ int s2 = address.indexOf('/', s1);
+ if (s2 == -1)
+ return;
+ moduleComponentName = address.substring(s1, s2);
+ s2++;
+ int s3 = address.indexOf('/', s2);
+ if (s3 == -1) {
+ partName = address.substring(s2);
+ return;
+ }
+ partName = address.substring(s2, s3);
+ s3++;
+ serviceName = address.substring(s3);
+ }
+ }
+
+ /**
+ * Returns the module component name
+ *
+ * @return
+ */
+ public String getModuleComponentName() {
+ if (!isParsed)
+ parse();
+ return moduleComponentName;
+ }
+
+ /**
+ * Returns the part name
+ *
+ * @return
+ */
+ public String getPartName() {
+ if (!isParsed)
+ parse();
+ return partName;
+ }
+
+ /**
+ * Returns the service name
+ * @return
+ */
+ public String getServiceName() {
+ if (!isParsed)
+ parse();
+ return serviceName;
+ }
+
+}
diff --git a/sca-java-1.x/tags/java-stable-20060304/sca/model/src/main/java/org/apache/tuscany/model/assembly/impl/SimpleComponentImpl.java b/sca-java-1.x/tags/java-stable-20060304/sca/model/src/main/java/org/apache/tuscany/model/assembly/impl/SimpleComponentImpl.java
new file mode 100644
index 0000000000..6de56e0806
--- /dev/null
+++ b/sca-java-1.x/tags/java-stable-20060304/sca/model/src/main/java/org/apache/tuscany/model/assembly/impl/SimpleComponentImpl.java
@@ -0,0 +1,32 @@
+/**
+ *
+ * Copyright 2005 The Apache Software Foundation or its licensors, as applicable.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.apache.tuscany.model.assembly.impl;
+
+import org.apache.tuscany.model.assembly.SimpleComponent;
+
+/**
+ * An implementation of SimpleComponent.
+ */
+public class SimpleComponentImpl extends ComponentImpl implements SimpleComponent {
+
+ /**
+ * Constructor
+ */
+ protected SimpleComponentImpl() {
+ }
+
+}
diff --git a/sca-java-1.x/tags/java-stable-20060304/sca/model/src/main/java/org/apache/tuscany/model/assembly/impl/SubsystemImpl.java b/sca-java-1.x/tags/java-stable-20060304/sca/model/src/main/java/org/apache/tuscany/model/assembly/impl/SubsystemImpl.java
new file mode 100644
index 0000000000..7dc78ee1e6
--- /dev/null
+++ b/sca-java-1.x/tags/java-stable-20060304/sca/model/src/main/java/org/apache/tuscany/model/assembly/impl/SubsystemImpl.java
@@ -0,0 +1,49 @@
+/**
+ *
+ * Copyright 2005 The Apache Software Foundation or its licensors, as applicable.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.apache.tuscany.model.assembly.impl;
+
+import org.apache.tuscany.model.assembly.Subsystem;
+
+/**
+ * An implementation of Subsystem.
+ */
+public class SubsystemImpl extends AggregateImpl implements Subsystem {
+
+ private String uri;
+
+ /**
+ * Constructor
+ */
+ protected SubsystemImpl() {
+ }
+
+ /**
+ * @see org.apache.tuscany.model.assembly.Subsystem#getURI()
+ */
+ public String getURI() {
+ return uri;
+ }
+
+ /**
+ * @see org.apache.tuscany.model.assembly.Subsystem#setURI(java.lang.String)
+ */
+ public void setURI(String value) {
+ checkNotFrozen();
+ uri=value;
+ }
+
+}
diff --git a/sca-java-1.x/tags/java-stable-20060304/sca/model/src/main/java/org/apache/tuscany/model/assembly/impl/WireImpl.java b/sca-java-1.x/tags/java-stable-20060304/sca/model/src/main/java/org/apache/tuscany/model/assembly/impl/WireImpl.java
new file mode 100644
index 0000000000..6cbf34334f
--- /dev/null
+++ b/sca-java-1.x/tags/java-stable-20060304/sca/model/src/main/java/org/apache/tuscany/model/assembly/impl/WireImpl.java
@@ -0,0 +1,66 @@
+/**
+ *
+ * Copyright 2005 The Apache Software Foundation or its licensors, as applicable.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.apache.tuscany.model.assembly.impl;
+
+import org.apache.tuscany.model.assembly.ServiceURI;
+import org.apache.tuscany.model.assembly.Wire;
+
+/**
+ * An implementation of Wire.
+ */
+public class WireImpl extends ExtensibleImpl implements Wire {
+
+ private ServiceURI source;
+ private ServiceURI target;
+
+ /**
+ * Constructor
+ */
+ protected WireImpl() {
+ }
+
+ /**
+ * @see org.apache.tuscany.model.assembly.Wire#getSource()
+ */
+ public ServiceURI getSource() {
+ return source;
+ }
+
+ /**
+ * @see org.apache.tuscany.model.assembly.Wire#setSource(org.apache.tuscany.model.assembly.ServiceURI)
+ */
+ public void setSource(ServiceURI uri) {
+ checkNotFrozen();
+ source=uri;
+ }
+
+ /**
+ * @see org.apache.tuscany.model.assembly.Wire#getTarget()
+ */
+ public ServiceURI getTarget() {
+ return target;
+ }
+
+ /**
+ * @see org.apache.tuscany.model.assembly.Wire#setTarget(org.apache.tuscany.model.assembly.ServiceURI)
+ */
+ public void setTarget(ServiceURI uri) {
+ checkNotFrozen();
+ target=uri;
+ }
+
+}
diff --git a/sca-java-1.x/tags/java-stable-20060304/sca/model/src/main/java/org/apache/tuscany/model/assembly/loader/AssemblyModelLoader.java b/sca-java-1.x/tags/java-stable-20060304/sca/model/src/main/java/org/apache/tuscany/model/assembly/loader/AssemblyModelLoader.java
new file mode 100644
index 0000000000..6b0895e56f
--- /dev/null
+++ b/sca-java-1.x/tags/java-stable-20060304/sca/model/src/main/java/org/apache/tuscany/model/assembly/loader/AssemblyModelLoader.java
@@ -0,0 +1,81 @@
+/**
+ *
+ * Copyright 2005 The Apache Software Foundation or its licensors, as applicable.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.apache.tuscany.model.assembly.loader;
+
+import java.util.List;
+
+import javax.wsdl.Definition;
+import javax.wsdl.PortType;
+
+import org.apache.tuscany.model.assembly.AssemblyModelContext;
+import org.apache.tuscany.model.assembly.ComponentType;
+import org.apache.tuscany.model.assembly.Module;
+import org.apache.tuscany.model.assembly.ModuleFragment;
+import org.apache.tuscany.model.assembly.Subsystem;
+
+/**
+ * An assembly model loader.
+ */
+public interface AssemblyModelLoader {
+
+ /**
+ * Sets the model context to use.
+ * @param modelContext
+ */
+ void setModelContext(AssemblyModelContext modelContext);
+
+ /**
+ * Returns the module at the given uri
+ * @param uri
+ * @return
+ */
+ Module loadModule(String uri);
+
+ /**
+ * Returns the module at the given uri
+ * @param uri
+ * @return
+ */
+ ModuleFragment loadModuleFragment(String uri);
+
+ /**
+ * Returns the component type at the given uri
+ * @param uri
+ * @return
+ */
+ ComponentType loadComponentType(String uri);
+
+ /**
+ * Returns the subsystem at the given uri.
+ * @param uri
+ * @return
+ */
+ Subsystem loadSubsystem(String uri);
+
+ /**
+ * Load a WSDL definition
+ */
+ Definition loadDefinition(String uri);
+
+ /**
+ * Load definitions by namespace
+ * @param uri
+ * @return
+ */
+ List<Definition> loadDefinitions(String namespace);
+
+}
diff --git a/sca-java-1.x/tags/java-stable-20060304/sca/model/src/main/java/org/apache/tuscany/model/scdl/loader/SCDLModelLoader.java b/sca-java-1.x/tags/java-stable-20060304/sca/model/src/main/java/org/apache/tuscany/model/scdl/loader/SCDLModelLoader.java
new file mode 100644
index 0000000000..f8fdab2c6c
--- /dev/null
+++ b/sca-java-1.x/tags/java-stable-20060304/sca/model/src/main/java/org/apache/tuscany/model/scdl/loader/SCDLModelLoader.java
@@ -0,0 +1,36 @@
+/**
+ *
+ * Copyright 2005 The Apache Software Foundation or its licensors, as applicable.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.apache.tuscany.model.scdl.loader;
+
+import org.apache.tuscany.model.assembly.Aggregate;
+import org.apache.tuscany.model.assembly.AssemblyModelContext;
+import org.apache.tuscany.model.assembly.AssemblyModelObject;
+
+/**
+ * An SCDL model loader.
+ */
+public interface SCDLModelLoader {
+
+ /**
+ * Load an SCDL model object into an assembly model.
+ * @param modelContext
+ * @param object
+ * @return
+ */
+ AssemblyModelObject load(AssemblyModelContext modelContext, Object object);
+
+}
diff --git a/sca-java-1.x/tags/java-stable-20060304/sca/model/src/main/java/org/apache/tuscany/model/scdl/loader/impl/AssemblyModelLoadException.java b/sca-java-1.x/tags/java-stable-20060304/sca/model/src/main/java/org/apache/tuscany/model/scdl/loader/impl/AssemblyModelLoadException.java
new file mode 100644
index 0000000000..db2ad2ff86
--- /dev/null
+++ b/sca-java-1.x/tags/java-stable-20060304/sca/model/src/main/java/org/apache/tuscany/model/scdl/loader/impl/AssemblyModelLoadException.java
@@ -0,0 +1,41 @@
+/**
+ *
+ * Copyright 2005 The Apache Software Foundation or its licensors, as applicable.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with
+ * the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on
+ * an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations under the License.
+ */
+package org.apache.tuscany.model.scdl.loader.impl;
+
+import org.apache.tuscany.common.TuscanyRuntimeException;
+
+/**
+ * The root runtime exception for the model loader.
+ *
+ * @version $Rev$ $Date$
+ */
+public class AssemblyModelLoadException extends TuscanyRuntimeException {
+
+ public AssemblyModelLoadException() {
+ super();
+ }
+
+ public AssemblyModelLoadException(String message) {
+ super(message);
+ }
+
+ public AssemblyModelLoadException(String message, Throwable cause) {
+ super(message, cause);
+ }
+
+ public AssemblyModelLoadException(Throwable cause) {
+ super(cause);
+ }
+
+}
diff --git a/sca-java-1.x/tags/java-stable-20060304/sca/model/src/main/java/org/apache/tuscany/model/scdl/loader/impl/SCDLAssemblyModelLoaderImpl.java b/sca-java-1.x/tags/java-stable-20060304/sca/model/src/main/java/org/apache/tuscany/model/scdl/loader/impl/SCDLAssemblyModelLoaderImpl.java
new file mode 100644
index 0000000000..cfe8b260ee
--- /dev/null
+++ b/sca-java-1.x/tags/java-stable-20060304/sca/model/src/main/java/org/apache/tuscany/model/scdl/loader/impl/SCDLAssemblyModelLoaderImpl.java
@@ -0,0 +1,198 @@
+/**
+ *
+ * Copyright 2005 The Apache Software Foundation or its licensors, as applicable.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.apache.tuscany.model.scdl.loader.impl;
+
+import java.util.ArrayList;
+import java.util.Collections;
+import java.util.HashMap;
+import java.util.Iterator;
+import java.util.List;
+import java.util.Map;
+
+import javax.wsdl.Definition;
+import javax.wsdl.WSDLException;
+import javax.wsdl.factory.WSDLFactory;
+import javax.wsdl.xml.WSDLReader;
+
+import org.apache.tuscany.common.resource.ResourceLoader;
+import org.apache.tuscany.model.assembly.AssemblyModelContext;
+import org.apache.tuscany.model.assembly.ComponentType;
+import org.apache.tuscany.model.assembly.Module;
+import org.apache.tuscany.model.assembly.ModuleFragment;
+import org.apache.tuscany.model.assembly.Subsystem;
+import org.apache.tuscany.model.assembly.loader.AssemblyModelLoader;
+import org.apache.tuscany.model.scdl.loader.SCDLModelLoader;
+import org.apache.tuscany.model.util.ModelTransformer;
+import org.apache.tuscany.model.util.ModelTransformerImpl;
+import org.eclipse.emf.ecore.util.EcoreUtil;
+
+/**
+ */
+public class SCDLAssemblyModelLoaderImpl implements AssemblyModelLoader {
+
+ private SCDLXMLReader xmlReader=new SCDLXMLReader();
+ private WSDLReader wsdlReader;
+ private AssemblyModelContext modelContext;
+
+ private List<SCDLModelLoader> scdlModelLoaders;
+
+ private Map<String, ComponentType> componentTypes=new HashMap<String, ComponentType>();
+ private Map<String, Module> modules=new HashMap<String, Module>();
+ private Map<String, ModuleFragment> moduleFragments=new HashMap<String, ModuleFragment>();
+ private Map<String, Subsystem> subsystems=new HashMap<String, Subsystem>();
+ private Map<String, Definition> definitions=new HashMap<String, Definition>();
+ private Map<String, List<Definition>> definitionsByNamespace=new HashMap<String, List<Definition>>();
+
+ /**
+ * Constructor
+ */
+ public SCDLAssemblyModelLoaderImpl(List<SCDLModelLoader> loaders) {
+ scdlModelLoaders=loaders!=null? loaders:new ArrayList<SCDLModelLoader>();
+ }
+
+ /**
+ * @param modelContext The modelContext to set.
+ */
+ public void setModelContext(AssemblyModelContext modelContext) {
+ this.modelContext = modelContext;
+ }
+
+ /**
+ * @see org.apache.tuscany.model.assembly.loader.AssemblyModelLoader#loadComponentType(java.lang.String)
+ */
+ public ComponentType loadComponentType(String uri) {
+ ComponentType componentType=componentTypes.get(uri);
+ if (componentType!=null)
+ return componentType;
+
+ // Load the SCDL component type
+ org.apache.tuscany.model.scdl.ComponentType scdlComponentType=xmlReader.getComponentType(uri);
+
+ // Transform it to an assembly component type
+ componentType=transform(scdlComponentType).getComponentType();
+
+ componentTypes.put(uri, componentType);
+ return componentType;
+ }
+
+ /**
+ * @see org.apache.tuscany.model.assembly.loader.AssemblyModelLoader#loadModule(java.lang.String)
+ */
+ public Module loadModule(String uri) {
+ Module module=modules.get(uri);
+ if (module!=null)
+ return module;
+
+ // Load the SCDL module
+ org.apache.tuscany.model.scdl.Module scdlModule=xmlReader.getModule(uri);
+
+ // Transform it to an assembly module
+ module=transform(scdlModule).getModule();
+
+ modules.put(uri, module);
+ return module;
+ }
+
+ /**
+ * @see org.apache.tuscany.model.assembly.loader.AssemblyModelLoader#loadModuleFragment(java.lang.String)
+ */
+ public ModuleFragment loadModuleFragment(String uri) {
+ ModuleFragment moduleFragment=moduleFragments.get(uri);
+ if (moduleFragment!=null)
+ return moduleFragment;
+
+ // Load the SCDL module fragment
+ org.apache.tuscany.model.scdl.ModuleFragment scdlFragment=xmlReader.getModuleFragment(uri);
+
+ // Transform it to an assembly module fragment
+ moduleFragment=transform(scdlFragment).getModuleFragment();
+
+ moduleFragments.put(uri, moduleFragment);
+ return moduleFragment;
+ }
+
+ /**
+ * @see org.apache.tuscany.model.assembly.loader.AssemblyModelLoader#loadSubsystem(java.lang.String)
+ */
+ public Subsystem loadSubsystem(String uri) {
+ Subsystem subsystem=subsystems.get(uri);
+ if (subsystem!=null)
+ return subsystem;
+
+ // Load the SCDL subsystem
+ org.apache.tuscany.model.scdl.Subsystem scdlSubsystem=xmlReader.getSubsystem(uri);
+
+ subsystem=transform(scdlSubsystem).getSubsystem();
+
+ subsystems.put(uri, subsystem);
+ return subsystem;
+ }
+
+ /**
+ * @see org.apache.tuscany.model.assembly.loader.AssemblyModelLoader#loadDefinition(java.lang.String)
+ */
+ public Definition loadDefinition(String uri) {
+ Definition definition=definitions.get(uri);
+ if (definition!=null)
+ return definition;
+
+ try {
+ if (wsdlReader==null)
+ wsdlReader=WSDLFactory.newInstance().newWSDLReader();
+ definition = wsdlReader.readWSDL(uri);
+ } catch (WSDLException e) {
+ throw new IllegalArgumentException(e);
+ }
+ if (definition==null)
+ throw new IllegalArgumentException("Could not load WSDL definition at "+uri);
+
+ definitions.put(uri, definition);
+
+ String namespace=definition.getTargetNamespace();
+ List<Definition> list=definitionsByNamespace.get(namespace);
+ if (list==null) {
+ list=new ArrayList<Definition>();
+ definitionsByNamespace.put(namespace, list);
+ }
+ list.add(definition);
+
+ return definition;
+ }
+
+ /**
+ * @see org.apache.tuscany.model.assembly.loader.AssemblyModelLoader#loadDefinitions(java.lang.String)
+ */
+ public List<Definition> loadDefinitions(String namespace) {
+ return definitionsByNamespace.get(namespace);
+ }
+
+ /**
+ * Transform a model and return the handler containing the result of the transformation.
+ * @param object
+ * @return
+ */
+ private SCDLModelContentHandlerImpl transform(Object object) {
+ //FIXME Remove this dependency on EMF
+ Iterator contents=EcoreUtil.getAllContents(Collections.singleton(object), true);
+
+ ModelTransformer transformer=new ModelTransformerImpl();
+ SCDLModelContentHandlerImpl handler=new SCDLModelContentHandlerImpl(modelContext, scdlModelLoaders);
+ transformer.transform(contents, handler);
+ return handler;
+ }
+
+}
diff --git a/sca-java-1.x/tags/java-stable-20060304/sca/model/src/main/java/org/apache/tuscany/model/scdl/loader/impl/SCDLModelContentHandlerImpl.java b/sca-java-1.x/tags/java-stable-20060304/sca/model/src/main/java/org/apache/tuscany/model/scdl/loader/impl/SCDLModelContentHandlerImpl.java
new file mode 100644
index 0000000000..f4f1f857e6
--- /dev/null
+++ b/sca-java-1.x/tags/java-stable-20060304/sca/model/src/main/java/org/apache/tuscany/model/scdl/loader/impl/SCDLModelContentHandlerImpl.java
@@ -0,0 +1,708 @@
+/**
+ *
+ * Copyright 2005 The Apache Software Foundation or its licensors, as applicable.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.apache.tuscany.model.scdl.loader.impl;
+
+import java.util.ArrayList;
+import java.util.List;
+import java.util.Map;
+
+import javax.wsdl.Definition;
+import javax.wsdl.Import;
+import javax.wsdl.WSDLException;
+import javax.wsdl.factory.WSDLFactory;
+
+import org.apache.tuscany.model.assembly.Aggregate;
+import org.apache.tuscany.model.assembly.AssemblyFactory;
+import org.apache.tuscany.model.assembly.AssemblyModelContext;
+import org.apache.tuscany.model.assembly.ComponentImplementation;
+import org.apache.tuscany.model.assembly.ConfiguredProperty;
+import org.apache.tuscany.model.assembly.ConfiguredReference;
+import org.apache.tuscany.model.assembly.ConfiguredService;
+import org.apache.tuscany.model.assembly.OverrideOption;
+import org.apache.tuscany.model.assembly.Scope;
+import org.apache.tuscany.model.assembly.ServiceContract;
+import org.apache.tuscany.model.assembly.ServiceURI;
+import org.apache.tuscany.model.assembly.SimpleComponent;
+import org.apache.tuscany.model.assembly.Wire;
+import org.apache.tuscany.model.assembly.impl.PropertyImpl;
+import org.apache.tuscany.model.scdl.Binding;
+import org.apache.tuscany.model.scdl.Component;
+import org.apache.tuscany.model.scdl.ComponentType;
+import org.apache.tuscany.model.scdl.EntryPoint;
+import org.apache.tuscany.model.scdl.ExternalService;
+import org.apache.tuscany.model.scdl.Implementation;
+import org.apache.tuscany.model.scdl.JavaInterface;
+import org.apache.tuscany.model.scdl.Module;
+import org.apache.tuscany.model.scdl.ModuleComponent;
+import org.apache.tuscany.model.scdl.ModuleFragment;
+import org.apache.tuscany.model.scdl.ModuleWire;
+import org.apache.tuscany.model.scdl.Multiplicity;
+import org.apache.tuscany.model.scdl.OverrideOptions;
+import org.apache.tuscany.model.scdl.Property;
+import org.apache.tuscany.model.scdl.PropertyValues;
+import org.apache.tuscany.model.scdl.Reference;
+import org.apache.tuscany.model.scdl.Service;
+import org.apache.tuscany.model.scdl.Subsystem;
+import org.apache.tuscany.model.scdl.SystemWire;
+import org.apache.tuscany.model.scdl.WSDLImport;
+import org.apache.tuscany.model.scdl.WSDLPortType;
+import org.apache.tuscany.model.scdl.loader.SCDLModelLoader;
+import org.apache.tuscany.model.scdl.util.ScdlSwitch;
+import org.apache.tuscany.model.types.java.JavaServiceContract;
+import org.apache.tuscany.model.types.java.impl.JavaServiceContractImpl;
+import org.apache.tuscany.model.types.wsdl.WSDLServiceContract;
+import org.apache.tuscany.model.types.wsdl.impl.WSDLServiceContractImpl;
+import org.apache.tuscany.model.util.ModelContentHandler;
+import org.apache.tuscany.sdo.util.SDOUtil;
+import org.eclipse.emf.ecore.EObject;
+
+import commonj.sdo.DataObject;
+import commonj.sdo.Sequence;
+import commonj.sdo.Type;
+
+/**
+ * A model content handler that transforms an SCDL model into an assembly model.
+ */
+public class SCDLModelContentHandlerImpl extends ScdlSwitch implements ModelContentHandler {
+
+ private List contents;
+ private List linkers;
+ private Map targets;
+
+ private List<SCDLModelLoader> scdlModelLoaders;
+
+ private AssemblyModelContext modelContext;
+ private AssemblyFactory factory;
+ private org.apache.tuscany.model.assembly.ComponentType currentComponentType;
+ private org.apache.tuscany.model.assembly.Service currentService;
+ private org.apache.tuscany.model.assembly.Reference currentReference;
+ private org.apache.tuscany.model.assembly.Module currentModule;
+ private Aggregate currentAggregate;
+ private SimpleComponent currentComponent;
+ private org.apache.tuscany.model.assembly.ExternalService currentExternalService;
+ private org.apache.tuscany.model.assembly.EntryPoint currentEntryPoint;
+ private org.apache.tuscany.model.assembly.ModuleFragment currentModuleFragment;
+ private org.apache.tuscany.model.assembly.Subsystem currentSubsystem;
+ private org.apache.tuscany.model.assembly.ModuleComponent currentModuleComponent;
+ private Definition definition;
+
+ /**
+ * Constructor
+ */
+ public SCDLModelContentHandlerImpl(AssemblyModelContext modelContext, List<SCDLModelLoader> scdlModelLoaders) {
+ this.modelContext=modelContext;
+ this.factory=modelContext.getAssemblyFactory();
+ this.scdlModelLoaders=scdlModelLoaders;
+ }
+
+ /**
+ * @see org.apache.tuscany.model.util.ModelContentHandler#doSwitch(java.lang.Object)
+ */
+ public Object doSwitch(Object object) {
+ return super.doSwitch((EObject)object);
+ }
+
+ /**
+ * @see org.apache.tuscany.model.util.ModelContentHandler#startModel()
+ */
+ public void startModel() {
+ }
+
+ /**
+ * @see org.apache.tuscany.model.util.ModelContentHandler#endModel()
+ */
+ public void endModel() {
+ }
+
+ /**
+ * @see org.apache.tuscany.model.util.ModelContentHandler#setContents(java.util.List)
+ */
+ public void setContents(List contents) {
+ this.contents=contents;
+ }
+
+ /**
+ * @see org.apache.tuscany.model.util.ModelContentHandler#setLinkers(java.util.List)
+ */
+ public void setLinkers(List linkers) {
+ this.linkers=linkers;
+ }
+
+ /**
+ * @see org.apache.tuscany.model.util.ModelContentHandler#setTargets(java.util.Map)
+ */
+ public void setTargets(Map targets) {
+ this.targets=targets;
+ }
+
+ /**
+ * @return Returns the componentType.
+ */
+ public org.apache.tuscany.model.assembly.ComponentType getComponentType() {
+ return currentComponentType;
+ }
+
+ /**
+ * @return Returns the module.
+ */
+ public org.apache.tuscany.model.assembly.Module getModule() {
+ return currentModule;
+ }
+
+ /**
+ * @return Returns the subsystem.
+ */
+ public org.apache.tuscany.model.assembly.Subsystem getSubsystem() {
+ return currentSubsystem;
+ }
+
+ /**
+ * @return Returns the moduleFragment.
+ */
+ public org.apache.tuscany.model.assembly.ModuleFragment getModuleFragment() {
+ return currentModuleFragment;
+ }
+
+ /**
+ * @see org.apache.tuscany.model.scdl.util.ScdlSwitch#caseComponentType(org.apache.tuscany.model.scdl.ComponentType)
+ */
+ public Object caseComponentType(ComponentType object) {
+ org.apache.tuscany.model.assembly.ComponentType componentType=factory.createComponentType();
+ contents.add(componentType);
+ currentComponentType=componentType;
+ return componentType;
+ }
+
+ /**
+ * @see org.apache.tuscany.model.scdl.util.ScdlSwitch#caseService(org.apache.tuscany.model.scdl.Service)
+ */
+ public Object caseService(Service object) {
+ final org.apache.tuscany.model.assembly.Service service=factory.createService();
+ service.setName(object.getName());
+
+ linkers.add(new Runnable() {
+ public void run() {
+ currentComponentType.getServices().add(service);
+ };
+ });
+
+ currentService=service;
+ return service;
+ }
+
+ /**
+ * @see org.apache.tuscany.model.scdl.util.ScdlSwitch#caseReference(org.apache.tuscany.model.scdl.Reference)
+ */
+ public Object caseReference(Reference object) {
+ final org.apache.tuscany.model.assembly.Reference reference=factory.createReference();
+ reference.setName(object.getName());
+ reference.setMultiplicity(transformMultiplicity(object.getMultiplicity()));
+
+ linkers.add(new Runnable() {
+ public void run() {
+ currentComponentType.getReferences().add(reference);
+ };
+ });
+
+ currentReference=reference;
+ return reference;
+ }
+
+ /**
+ * Transforms an SCDL multiplicity into an assembly model multiplicity.
+ * @param multiplicity
+ * @return
+ */
+ private org.apache.tuscany.model.assembly.Multiplicity transformMultiplicity(Multiplicity multiplicity) {
+ if (multiplicity==Multiplicity._01_LITERAL)
+ return org.apache.tuscany.model.assembly.Multiplicity.ZERO_ONE;
+ else if (multiplicity==Multiplicity._0N_LITERAL)
+ return org.apache.tuscany.model.assembly.Multiplicity.ZERO_N;
+ else if (multiplicity==Multiplicity._11_LITERAL)
+ return org.apache.tuscany.model.assembly.Multiplicity.ONE_ONE;
+ else if (multiplicity==Multiplicity._1N_LITERAL)
+ return org.apache.tuscany.model.assembly.Multiplicity.ONE_N;
+ else
+ return org.apache.tuscany.model.assembly.Multiplicity.ONE_ONE;
+ }
+
+ /**
+ * @see org.apache.tuscany.model.scdl.util.ScdlSwitch#caseJavaInterface(org.apache.tuscany.model.scdl.JavaInterface)
+ */
+ public Object caseJavaInterface(JavaInterface object) {
+ final JavaServiceContract serviceContract=factory.createJavaServiceContract();
+ serviceContract.setScope(Scope.INSTANCE);
+
+ ((JavaServiceContractImpl)serviceContract).setInterfaceName(object.getInterface());
+ ((JavaServiceContractImpl)serviceContract).setCallbackInterfaceName(object.getCallbackInterface());
+
+ linkServiceContract(object, serviceContract);
+
+ return serviceContract;
+ }
+
+ /**
+ * @see org.apache.tuscany.model.scdl.util.ScdlSwitch#caseWSDLPortType(org.apache.tuscany.model.scdl.WSDLPortType)
+ */
+ public Object caseWSDLPortType(WSDLPortType object) {
+ final WSDLServiceContract serviceContract=factory.createWSDLServiceContract();
+ serviceContract.setScope(Scope.INSTANCE);
+
+ ((WSDLServiceContractImpl)serviceContract).setPortTypeURI(object.getInterface());
+ ((WSDLServiceContractImpl)serviceContract).setCallbackPortTypeURI(object.getCallbackInterface());
+
+ linkServiceContract(object, serviceContract);
+
+ return serviceContract;
+ }
+
+ /**
+ * @see org.apache.tuscany.model.scdl.util.ScdlSwitch#caseWSDLImport(org.apache.tuscany.model.scdl.WSDLImport)
+ */
+ public Object caseWSDLImport(WSDLImport object) {
+ if (definition==null) {
+ try {
+ WSDLFactory wsdlFactory=WSDLFactory.newInstance();
+ definition=wsdlFactory.newDefinition();
+ } catch (WSDLException e) {
+ throw new IllegalStateException(e);
+ }
+
+ }
+ final Import wsdlImport=definition.createImport();
+ wsdlImport.setNamespaceURI(object.getNamespace());
+ wsdlImport.setLocationURI(object.getLocation());
+
+ linkers.add(new Runnable() {
+ public void run() {
+ currentAggregate.getWSDLImports().add(wsdlImport);
+ };
+ });
+
+ return wsdlImport;
+ }
+
+ /**
+ * Link a service contract with the correct owner.
+ * @param object
+ * @param serviceContract
+ */
+ private void linkServiceContract(Object object, final ServiceContract serviceContract) {
+ Object container=((DataObject)object).getContainer();
+ if (container instanceof Service) {
+
+ // Set a service contract on a service
+ final org.apache.tuscany.model.assembly.Service service=currentService;
+ linkers.add(new Runnable() {
+ public void run() {
+ service.setServiceContract(serviceContract);
+ }
+ });
+ }
+ else if (container instanceof Reference) {
+
+ // Set a service contract on a reference
+ final org.apache.tuscany.model.assembly.Reference reference=currentReference;
+ linkers.add(new Runnable() {
+ public void run() {
+ reference.setServiceContract(serviceContract);
+ }
+ });
+ } else if (container instanceof ExternalService) {
+
+ // Set a service contract on an external service
+ final org.apache.tuscany.model.assembly.ExternalService externalService=currentExternalService;
+ linkers.add(new Runnable() {
+ public void run() {
+ externalService.getConfiguredService().getService().setServiceContract(serviceContract);
+ }
+ });
+ } else if (container instanceof EntryPoint) {
+
+ // Set a service contract on an entry point
+ final org.apache.tuscany.model.assembly.EntryPoint entryPoint=currentEntryPoint;
+ linkers.add(new Runnable() {
+ public void run() {
+ entryPoint.getConfiguredService().getService().setServiceContract(serviceContract);
+ entryPoint.getConfiguredReference().getReference().setServiceContract(serviceContract);
+ }
+ });
+ }
+ }
+
+ /**
+ * @see org.apache.tuscany.model.scdl.util.ScdlSwitch#caseProperty(org.apache.tuscany.model.scdl.Property)
+ */
+ public Object caseProperty(Property object) {
+ final org.apache.tuscany.model.assembly.Property property=factory.createProperty();
+ property.setName(object.getName());
+ property.setDefaultValue(object.getDefault());
+ property.setMany(object.isMany());
+ property.setRequired(object.isRequired());
+
+ Object dataType=object.getDataType();
+ if (dataType!=null) {
+ String typeName=dataType.toString();
+ typeName=typeName.substring(typeName.indexOf(':')+1);
+ Type type=SDOUtil.getXSDSDOType(typeName);
+ ((PropertyImpl)property).setSDOType(type);
+ property.setType(type.getInstanceClass());
+ } else {
+ property.setType(String.class);
+ }
+
+ linkers.add(new Runnable() {
+ public void run() {
+ currentComponentType.getProperties().add(property);
+ };
+ });
+
+ return property;
+ }
+
+ /**
+ * @see org.apache.tuscany.model.scdl.util.ScdlSwitch#caseModule(org.apache.tuscany.model.scdl.Module)
+ */
+ public Object caseModule(Module object) {
+ org.apache.tuscany.model.assembly.Module module=factory.createModule();
+ module.setName(object.getName());
+ contents.add(module);
+ currentModule=module;
+ currentAggregate=module;
+ return module;
+ }
+
+ /**
+ * @see org.apache.tuscany.model.scdl.util.ScdlSwitch#caseModuleFragment(org.apache.tuscany.model.scdl.ModuleFragment)
+ */
+ public Object caseModuleFragment(ModuleFragment object) {
+ org.apache.tuscany.model.assembly.ModuleFragment moduleFragment=factory.createModuleFragment();
+ moduleFragment.setName(object.getName());
+ contents.add(moduleFragment);
+ currentModuleFragment=moduleFragment;
+ currentAggregate=moduleFragment;
+ return moduleFragment;
+ }
+
+ /**
+ * @see org.apache.tuscany.model.scdl.util.ScdlSwitch#caseComponent(org.apache.tuscany.model.scdl.Component)
+ */
+ public Object caseComponent(Component object) {
+ final SimpleComponent component=factory.createSimpleComponent();
+ component.setName(object.getName());
+ linkers.add(new Runnable() {
+ public void run() {
+ currentAggregate.getComponents().add(component);
+ component.initialize(modelContext);
+ };
+ });
+ currentComponent=component;
+ return component;
+ }
+
+ /**
+ * @see org.apache.tuscany.model.scdl.util.ScdlSwitch#casePropertyValues(org.apache.tuscany.model.scdl.PropertyValues)
+ */
+ public Object casePropertyValues(final PropertyValues object) {
+
+ // Grab the current component
+ final SimpleComponent component=currentComponent;
+ linkers.add(new Runnable() {
+ public void run() {
+
+ // Initialize the component's configured properties
+ Sequence sequence = object.getAny();
+ for (int p = 0, n = sequence.size(); p < n; p++) {
+
+ // Get each property value element
+ commonj.sdo.Property propertyElementDef = sequence.getProperty(p);
+ DataObject propertyElement = (DataObject) sequence.getValue(p);
+
+ // Get the corresponding property definition
+ String propertyName = propertyElementDef.getName();
+ ConfiguredProperty configuredProperty=component.getConfiguredProperty(propertyName);
+ if (configuredProperty == null) {
+ throw new IllegalArgumentException("Undefined property " + propertyName);
+ }
+
+ // Check if the property is overridable
+ Sequence attrs=propertyElement.getSequence("anyAttribute");
+ if (attrs!=null && attrs.size()!=0) {
+ commonj.sdo.Property attr=attrs.getProperty(0);
+ if (attr!=null && attr.getName().equals("overridable")) {
+ Object overridable=attrs.getValue(0);
+ if ("may".equals(overridable))
+ configuredProperty.setOverrideOption(OverrideOption.MAY);
+ else if ("must".equals(overridable))
+ configuredProperty.setOverrideOption(OverrideOption.MUST);
+ else if ("no".equals(overridable))
+ configuredProperty.setOverrideOption(OverrideOption.NO);
+ }
+ }
+
+ // Get the property value text and convert to the expected java type
+ Sequence text = propertyElement.getSequence("any");
+ if (text != null && text.size() != 0) {
+ String rawValue = text.getValue(0).toString();
+ Type type=((PropertyImpl)configuredProperty.getProperty()).getSDOType();
+ Object value;
+ if (type!=null) {
+ value=SDOUtil.createFromString(type, rawValue);
+ } else {
+ value=rawValue;
+ }
+ configuredProperty.setValue(value);
+ }
+ }
+ }
+ });
+
+ return object;
+ }
+
+ /**
+ * @see org.apache.tuscany.model.scdl.util.ScdlSwitch#caseReferenceValues(org.apache.tuscany.model.scdl.ReferenceValues)
+ */
+ public Object caseReferenceValues(final org.apache.tuscany.model.scdl.ReferenceValues object) {
+
+ // Grab the current component
+ final SimpleComponent component=this.currentComponent;
+
+ linkers.add(new Runnable() {
+ public void run() {
+
+ // Initialize the component's configured references
+ Sequence sequence = object.getAny();
+ for (int r = 0, n = sequence.size(); r < n; r++) {
+
+ // Get each reference value element
+ commonj.sdo.Property referenceElementDef = sequence.getProperty(r);
+ DataObject referenceElement = (DataObject) sequence.getValue(r);
+
+ // Get the corresponding reference definition
+ String referenceName = referenceElementDef.getName();
+ ConfiguredReference configuredReference=component.getConfiguredReference(referenceName);
+ if (configuredReference == null) {
+ throw new IllegalArgumentException("Undefined reference " + referenceName);
+ }
+ ServiceURI referenceURI=factory.createServiceURI(null, component, configuredReference);
+
+ // Get the reference value text
+ Sequence text = referenceElement.getSequence(0);
+ if (text != null && text.size() != 0) {
+ String uri = text.getValue(0).toString();
+ ServiceURI serviceURI=factory.createServiceURI(null, uri);
+
+ // Create a wire
+ Wire wire=factory.createWire();
+ wire.setSource(referenceURI);
+ wire.setTarget(serviceURI);
+ currentAggregate.getWires().add(wire);
+ }
+ }
+ }
+ });
+
+ return object;
+ }
+
+ /**
+ * @see org.apache.tuscany.model.scdl.util.ScdlSwitch#caseEntryPoint(org.apache.tuscany.model.scdl.EntryPoint)
+ */
+ public Object caseEntryPoint(final EntryPoint object) {
+ final org.apache.tuscany.model.assembly.EntryPoint entryPoint=factory.createEntryPoint();
+ entryPoint.setName(object.getName());
+
+ // Create a configured service and a configured reference for this entry point
+ org.apache.tuscany.model.assembly.Service service=factory.createService();
+ service.setName(entryPoint.getName());
+ ConfiguredService configuredService=factory.createConfiguredService();
+ configuredService.setService(service);
+ entryPoint.setConfiguredService(configuredService);
+ org.apache.tuscany.model.assembly.Reference reference=factory.createReference();
+ reference.setName(null);
+ reference.setMultiplicity(transformMultiplicity(object.getMultiplicity()));
+ final ConfiguredReference configuredReference=factory.createConfiguredReference();
+ configuredReference.setReference(reference);
+ entryPoint.setConfiguredReference(configuredReference);
+
+ linkers.add(new Runnable() {
+ public void run() {
+ currentAggregate.getEntryPoints().add(entryPoint);
+
+ // Create wires to the target service
+ final List<Wire>wires=new ArrayList<Wire>();
+ ServiceURI referenceURI=factory.createServiceURI(null, entryPoint, configuredReference);
+ for (String uri : (List<String>)object.getReference()) {
+ ServiceURI serviceURI=factory.createServiceURI(null, uri);
+ final Wire wire=factory.createWire();
+ wire.setSource(referenceURI);
+ wire.setTarget(serviceURI);
+ wires.add(wire);
+ }
+
+ currentAggregate.getWires().addAll(wires);
+ };
+ });
+
+ currentEntryPoint=entryPoint;
+ return entryPoint;
+ }
+
+ /**
+ * @see org.apache.tuscany.model.scdl.util.ScdlSwitch#caseExternalService(org.apache.tuscany.model.scdl.ExternalService)
+ */
+ public Object caseExternalService(ExternalService object) {
+ final org.apache.tuscany.model.assembly.ExternalService externalService=factory.createExternalService();
+ externalService.setName(object.getName());
+
+ OverrideOptions overrideOptions=object.getOverridable();
+ if (overrideOptions==OverrideOptions.MAY_LITERAL)
+ externalService.setOverrideOption(OverrideOption.MAY);
+ else if (overrideOptions==OverrideOptions.MUST_LITERAL)
+ externalService.setOverrideOption(OverrideOption.MUST);
+ else if (overrideOptions==OverrideOptions.NO_LITERAL)
+ externalService.setOverrideOption(OverrideOption.NO);
+ else
+ externalService.setOverrideOption(OverrideOption.NO);
+
+ // Create a configured service for this external service
+ org.apache.tuscany.model.assembly.Service service=factory.createService();
+ service.setName(externalService.getName());
+ ConfiguredService configuredService=factory.createConfiguredService();
+ configuredService.setService(service);
+ externalService.setConfiguredService(configuredService);
+
+ linkers.add(new Runnable() {
+ public void run() {
+ currentAggregate.getExternalServices().add(externalService);
+ };
+ });
+ currentExternalService=externalService;
+ return externalService;
+ }
+
+ /**
+ * @see org.apache.tuscany.model.scdl.util.ScdlSwitch#caseSubsystem(org.apache.tuscany.model.scdl.Subsystem)
+ */
+ public Object caseSubsystem(Subsystem object) {
+ org.apache.tuscany.model.assembly.Subsystem subsystem=factory.createSubsystem();
+ subsystem.setName(object.getName());
+ subsystem.setURI(object.getUri());
+ currentSubsystem=subsystem;
+ currentAggregate=subsystem;
+ return subsystem;
+ }
+
+ /**
+ * @see org.apache.tuscany.model.scdl.util.ScdlSwitch#caseModuleComponent(org.apache.tuscany.model.scdl.ModuleComponent)
+ */
+ public Object caseModuleComponent(ModuleComponent object) {
+ final org.apache.tuscany.model.assembly.ModuleComponent moduleComponent=factory.createModuleComponent();
+ moduleComponent.setName(object.getName());
+ moduleComponent.setURI(object.getUri());
+
+ linkers.add(new Runnable() {
+ public void run() {
+ currentAggregate.getComponents().add(moduleComponent);
+ };
+ });
+
+ currentModuleComponent=moduleComponent;
+ return moduleComponent;
+ }
+
+ /**
+ * @see org.apache.tuscany.model.scdl.util.ScdlSwitch#caseModuleWire(org.apache.tuscany.model.scdl.ModuleWire)
+ */
+ public Object caseModuleWire(ModuleWire object) {
+ final Wire wire=factory.createWire();
+ wire.setSource(factory.createServiceURI(null, object.getSourceUri()));
+ wire.setTarget(factory.createServiceURI(null, object.getTargetUri()));
+
+ linkers.add(new Runnable() {
+ public void run() {
+ currentAggregate.getWires().add(wire);
+ };
+ });
+
+ return wire;
+ }
+
+ /**
+ * @see org.apache.tuscany.model.scdl.util.ScdlSwitch#caseSystemWire(org.apache.tuscany.model.scdl.SystemWire)
+ */
+ public Object caseSystemWire(SystemWire object) {
+ final Wire wire=factory.createWire();
+ wire.setSource(factory.createServiceURI(object.getSource().toString()));
+ wire.setTarget(factory.createServiceURI(object.getTarget().toString()));
+
+ linkers.add(new Runnable() {
+ public void run() {
+ currentAggregate.getWires().add(wire);
+ };
+ });
+
+ return wire;
+ }
+
+ /**
+ * @see org.apache.tuscany.model.scdl.util.ScdlSwitch#caseImplementation(org.apache.tuscany.model.scdl.Implementation)
+ */
+ public Object caseImplementation(Implementation object) {
+ final SimpleComponent component=currentComponent;
+
+ for (SCDLModelLoader scdlModelLoader : scdlModelLoaders) {
+
+ // Invoke an SCDL loader to handle the specific implementation type
+ final ComponentImplementation implementation=(ComponentImplementation)scdlModelLoader.load(modelContext, object);
+ if (implementation!=null) {
+ component.setComponentImplementation(implementation);
+ return implementation;
+ }
+
+ }
+ return null;
+ }
+
+ /**
+ * @see org.apache.tuscany.model.scdl.util.ScdlSwitch#caseBinding(org.apache.tuscany.model.scdl.Binding)
+ */
+ public Object caseBinding(Binding object) {
+
+ final List<org.apache.tuscany.model.assembly.Binding> bindings;
+ Object container=((DataObject)object).getContainer();
+ if (container instanceof EntryPoint) {
+ bindings=currentEntryPoint.getBindings();
+ } else if (container instanceof ExternalService) {
+ bindings=currentExternalService.getBindings();
+ } else
+ bindings=null;
+
+ for (SCDLModelLoader scdlModelLoader : scdlModelLoaders) {
+
+ // Invoke an SCDL loader to handle the specific binding type
+ final org.apache.tuscany.model.assembly.Binding binding=(org.apache.tuscany.model.assembly.Binding)scdlModelLoader.load(modelContext, object);
+ if (binding!=null) {
+ bindings.add(binding);
+ return binding;
+ }
+
+ }
+ return null;
+ }
+}
diff --git a/sca-java-1.x/tags/java-stable-20060304/sca/model/src/main/java/org/apache/tuscany/model/scdl/loader/impl/SCDLXMLReader.java b/sca-java-1.x/tags/java-stable-20060304/sca/model/src/main/java/org/apache/tuscany/model/scdl/loader/impl/SCDLXMLReader.java
new file mode 100644
index 0000000000..6fa426b2f8
--- /dev/null
+++ b/sca-java-1.x/tags/java-stable-20060304/sca/model/src/main/java/org/apache/tuscany/model/scdl/loader/impl/SCDLXMLReader.java
@@ -0,0 +1,109 @@
+/**
+ *
+ * Copyright 2005 The Apache Software Foundation or its licensors, as applicable.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.apache.tuscany.model.scdl.loader.impl;
+
+import java.io.IOException;
+import java.net.URL;
+import java.util.HashMap;
+import java.util.Map;
+
+import org.apache.tuscany.model.scdl.ComponentType;
+import org.apache.tuscany.model.scdl.Module;
+import org.apache.tuscany.model.scdl.ModuleFragment;
+import org.apache.tuscany.model.scdl.ScdlFactory;
+import org.apache.tuscany.model.scdl.Subsystem;
+import org.apache.tuscany.model.scdl.impl.ScdlPackageImpl;
+import org.apache.tuscany.sdo.util.DataObjectUtil;
+import org.apache.tuscany.sdo.util.SDOUtil;
+import org.eclipse.emf.ecore.resource.impl.ResourceSetImpl;
+
+import commonj.sdo.helper.XMLDocument;
+import commonj.sdo.helper.XMLHelper;
+
+/**
+ */
+public class SCDLXMLReader extends ResourceSetImpl {
+
+ private Map<String, Object> cache=new HashMap<String, Object>();
+
+ // Initialize the SDO runtime and register the SCDL model
+ static {
+ DataObjectUtil.initRuntime();
+ SDOUtil.registerStaticTypes(ScdlFactory.class);
+ }
+
+ /**
+ * Constructor
+ */
+ public SCDLXMLReader() {
+ }
+
+ /**
+ * Returns an SCDL module.
+ * @param uri
+ * @return
+ */
+ public Module getModule(String uri) {
+ return (Module)getRootObject(uri);
+ }
+
+ /**
+ * Returns an SCDL module fragment.
+ * @param uri
+ * @return
+ */
+ public ModuleFragment getModuleFragment(String uri) {
+ return (ModuleFragment)getRootObject(uri);
+ }
+
+ /**
+ * Returns an SCDL component type.
+ * @param uri
+ * @return
+ */
+ public ComponentType getComponentType(String uri) {
+ return (ComponentType)getRootObject(uri);
+ }
+
+ /**
+ * Returns an SCDL subsystem.
+ * @param uri
+ * @return
+ */
+ public Subsystem getSubsystem(String uri) {
+ return (Subsystem)getRootObject(uri);
+ }
+
+ /**
+ * Returns the root object at the given URI.
+ * @param uri
+ * @return
+ */
+ private Object getRootObject(String uri) {
+ Object object = cache.get(uri);
+ if (object==null) {
+ try {
+ XMLDocument document=XMLHelper.INSTANCE.load(new URL(uri).openStream());
+ return document.getRootObject();
+ } catch (IOException e) {
+ throw new RuntimeException(uri, e);
+ }
+ }
+ return object;
+ }
+
+}
diff --git a/sca-java-1.x/tags/java-stable-20060304/sca/model/src/main/java/org/apache/tuscany/model/types/java/JavaServiceContract.java b/sca-java-1.x/tags/java-stable-20060304/sca/model/src/main/java/org/apache/tuscany/model/types/java/JavaServiceContract.java
new file mode 100644
index 0000000000..0a4ea54947
--- /dev/null
+++ b/sca-java-1.x/tags/java-stable-20060304/sca/model/src/main/java/org/apache/tuscany/model/types/java/JavaServiceContract.java
@@ -0,0 +1,27 @@
+/**
+ *
+ * Copyright 2005 The Apache Software Foundation or its licensors, as applicable.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.apache.tuscany.model.types.java;
+
+import org.apache.tuscany.model.assembly.ServiceContract;
+
+
+/**
+ * Represents a Java service contract.
+ */
+public interface JavaServiceContract extends ServiceContract {
+
+}
diff --git a/sca-java-1.x/tags/java-stable-20060304/sca/model/src/main/java/org/apache/tuscany/model/types/java/impl/JavaServiceContractImpl.java b/sca-java-1.x/tags/java-stable-20060304/sca/model/src/main/java/org/apache/tuscany/model/types/java/impl/JavaServiceContractImpl.java
new file mode 100644
index 0000000000..589678acbb
--- /dev/null
+++ b/sca-java-1.x/tags/java-stable-20060304/sca/model/src/main/java/org/apache/tuscany/model/types/java/impl/JavaServiceContractImpl.java
@@ -0,0 +1,81 @@
+/**
+ *
+ * Copyright 2005 The Apache Software Foundation or its licensors, as applicable.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.apache.tuscany.model.types.java.impl;
+
+import org.apache.tuscany.model.assembly.AssemblyModelContext;
+import org.apache.tuscany.model.assembly.impl.ServiceContractImpl;
+import org.apache.tuscany.model.types.java.JavaServiceContract;
+
+/**
+ * An implementation of JavaServiceContract.
+ */
+public class JavaServiceContractImpl extends ServiceContractImpl implements JavaServiceContract {
+
+ private String interfaceName;
+ private String callbackInterfaceName;
+
+ /**
+ * Constructor
+ */
+ public JavaServiceContractImpl() {
+ }
+
+ /**
+ * @param interfaceName The interfaceName to set.
+ */
+ public void setInterfaceName(String interfaceName) {
+ this.interfaceName = interfaceName;
+ }
+
+ /**
+ * @param callbackInterfaceName The callbackInterfaceName to set.
+ */
+ public void setCallbackInterfaceName(String callbackInterfaceName) {
+ this.callbackInterfaceName = callbackInterfaceName;
+ }
+
+ /**
+ * @see org.apache.tuscany.model.assembly.impl.ExtensibleImpl#initialize(org.apache.tuscany.model.assembly.AssemblyModelContext)
+ */
+ public void initialize(AssemblyModelContext modelContext) {
+ if (isInitialized())
+ return;
+
+ // Load the interface
+ if (getInterface()==null && interfaceName!=null) {
+ try {
+ Class interfaceClass=modelContext.getApplicationResourceLoader().loadClass(interfaceName);
+ setInterface(interfaceClass);
+ } catch (ClassNotFoundException e) {
+ throw new IllegalArgumentException(e);
+ }
+ }
+
+ // Load the callback interface
+ if (getCallbackInterface()==null && callbackInterfaceName!=null) {
+ try {
+ Class callbackInterfaceClass=modelContext.getApplicationResourceLoader().loadClass(callbackInterfaceName);
+ setInterface(callbackInterfaceClass);
+ } catch (ClassNotFoundException e) {
+ throw new IllegalArgumentException(e);
+ }
+ }
+
+ super.initialize(modelContext);
+ }
+
+}
diff --git a/sca-java-1.x/tags/java-stable-20060304/sca/model/src/main/java/org/apache/tuscany/model/types/wsdl/WSDLServiceContract.java b/sca-java-1.x/tags/java-stable-20060304/sca/model/src/main/java/org/apache/tuscany/model/types/wsdl/WSDLServiceContract.java
new file mode 100644
index 0000000000..6133e4a02b
--- /dev/null
+++ b/sca-java-1.x/tags/java-stable-20060304/sca/model/src/main/java/org/apache/tuscany/model/types/wsdl/WSDLServiceContract.java
@@ -0,0 +1,52 @@
+/**
+ *
+ * Copyright 2005 The Apache Software Foundation or its licensors, as applicable.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.apache.tuscany.model.types.wsdl;
+
+import javax.wsdl.PortType;
+
+import org.apache.tuscany.model.assembly.ServiceContract;
+
+/**
+ * A WSDL service contract.
+ */
+public interface WSDLServiceContract extends ServiceContract {
+
+ /**
+ * Returns the WSDL portType.
+ * @return
+ */
+ PortType getPortType();
+
+ /**
+ * Sets the WSDL portType.
+ * @param portType
+ */
+ void setPortType(PortType portType);
+
+ /**
+ * Returns the callback WSDL portType.
+ * @return
+ */
+ PortType getCallbackPortType();
+
+ /**
+ * Sets the callback WSDL portType.
+ * @param portType
+ */
+ void setCallbackPortType(PortType portType);
+
+}
diff --git a/sca-java-1.x/tags/java-stable-20060304/sca/model/src/main/java/org/apache/tuscany/model/types/wsdl/impl/WSDLServiceContractImpl.java b/sca-java-1.x/tags/java-stable-20060304/sca/model/src/main/java/org/apache/tuscany/model/types/wsdl/impl/WSDLServiceContractImpl.java
new file mode 100644
index 0000000000..262503feb0
--- /dev/null
+++ b/sca-java-1.x/tags/java-stable-20060304/sca/model/src/main/java/org/apache/tuscany/model/types/wsdl/impl/WSDLServiceContractImpl.java
@@ -0,0 +1,212 @@
+/**
+ *
+ * Copyright 2005 The Apache Software Foundation or its licensors, as applicable.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.apache.tuscany.model.types.wsdl.impl;
+
+import static org.objectweb.asm.Opcodes.ACC_ABSTRACT;
+import static org.objectweb.asm.Opcodes.ACC_INTERFACE;
+import static org.objectweb.asm.Opcodes.ACC_PUBLIC;
+import static org.objectweb.asm.Opcodes.V1_5;
+
+import java.util.List;
+
+import javax.wsdl.Definition;
+import javax.wsdl.Operation;
+import javax.wsdl.PortType;
+import javax.xml.namespace.QName;
+
+import org.apache.tuscany.common.resource.ResourceLoader;
+import org.apache.tuscany.model.assembly.AssemblyModelContext;
+import org.apache.tuscany.model.assembly.impl.ServiceContractImpl;
+import org.apache.tuscany.model.assembly.loader.AssemblyModelLoader;
+import org.apache.tuscany.model.types.wsdl.WSDLServiceContract;
+import org.apache.tuscany.model.util.XMLNameUtil;
+import org.objectweb.asm.ClassWriter;
+import org.objectweb.asm.Type;
+
+import commonj.sdo.DataObject;
+
+/**
+ * An implementation of WSDLServiceContract.
+ */
+public class WSDLServiceContractImpl extends ServiceContractImpl implements WSDLServiceContract {
+
+ private PortType portType;
+ private PortType callbackPortType;
+ private String portTypeURI;
+ private String callbackPortTypeURI;
+
+ /**
+ * Constructor
+ */
+ public WSDLServiceContractImpl() {
+ }
+
+ /**
+ * @see org.apache.tuscany.model.types.wsdl.WSDLServiceContract#getPortType()
+ */
+ public PortType getPortType() {
+ return portType;
+ }
+
+ /**
+ * @see org.apache.tuscany.model.types.wsdl.WSDLServiceContract#setPortType(javax.wsdl.PortType)
+ */
+ public void setPortType(PortType portType) {
+ checkNotFrozen();
+ this.portType=portType;
+ }
+
+ /**
+ * @see org.apache.tuscany.model.types.wsdl.WSDLServiceContract#getCallbackPortType()
+ */
+ public PortType getCallbackPortType() {
+ return callbackPortType;
+ }
+
+ /**
+ * @see org.apache.tuscany.model.types.wsdl.WSDLServiceContract#setCallbackPortType(javax.wsdl.PortType)
+ */
+ public void setCallbackPortType(PortType portType) {
+ checkNotFrozen();
+ callbackPortType=portType;
+ }
+
+ /**
+ * @param portTypeURI The portTypeURI to set.
+ */
+ public void setPortTypeURI(String portTypeURI) {
+ this.portTypeURI = portTypeURI;
+ }
+
+ /**
+ * @param callbackPortTypeURI The callbackPortTypeURI to set.
+ */
+ public void setCallbackPortTypeURI(String callbackPortTypeURI) {
+ this.callbackPortTypeURI = callbackPortTypeURI;
+ }
+
+ /**
+ * @see org.apache.tuscany.model.assembly.impl.ExtensibleImpl#initialize(org.apache.tuscany.model.assembly.AssemblyModelContext)
+ */
+ public void initialize(AssemblyModelContext modelContext) {
+ if (isInitialized())
+ return;
+ super.initialize(modelContext);
+
+ // Resolve the WSDL portType and callback portType
+ AssemblyModelLoader modelLoader=modelContext.getAssemblyLoader();
+ if (portTypeURI!=null && portType==null) {
+ portType=getPortType(modelLoader, portTypeURI);
+ }
+ if (callbackPortTypeURI!=null && callbackPortType==null) {
+ callbackPortType=getPortType(modelLoader, callbackPortTypeURI);
+ }
+
+ // Load the Java interface for the portType
+ if (portType!=null && getInterface()==null) {
+ QName qname=portType.getQName();
+ String interfaceName=XMLNameUtil.getFullyQualifiedClassNameFromQName(qname.getNamespaceURI(), qname.getLocalPart());
+ Class interfaceClass;
+ try {
+ // Load the interface
+ interfaceClass=modelContext.getApplicationResourceLoader().loadClass(interfaceName);
+ } catch (ClassNotFoundException e) {
+ // Generate the interface on the fly
+ interfaceClass=generateJavaInterface(modelContext.getApplicationResourceLoader(), portType, interfaceName);
+ }
+ super.setInterface(interfaceClass);
+ }
+
+ // Load the Java interface for the callback portType
+ if (callbackPortType!=null && getCallbackInterface()==null) {
+ QName qname=callbackPortType.getQName();
+ String interfaceName=XMLNameUtil.getFullyQualifiedClassNameFromQName(qname.getNamespaceURI(), qname.getLocalPart());
+ Class interfaceClass;
+ try {
+ // Load the interface
+ interfaceClass=modelContext.getApplicationResourceLoader().loadClass(interfaceName);
+ } catch (ClassNotFoundException e) {
+ // Generate the interface on the fly
+ interfaceClass=generateJavaInterface(modelContext.getApplicationResourceLoader(), portType, interfaceName);
+ }
+ super.setCallbackInterface(interfaceClass);
+ }
+ }
+
+ /**
+ * Get a portType from the given uri
+ * @param loader
+ * @param uri
+ * @return
+ */
+ private PortType getPortType(AssemblyModelLoader loader, String uri) {
+
+ // Get the WSDL port namespace and name
+ int h=uri.indexOf('#');
+ String namespace=uri.substring(0,h);
+ String name=uri.substring(h+1);
+ QName qname=new QName(namespace, name);
+
+ // Load the WSDL definitions for the given namespace
+ List<Definition> definitions=loader.loadDefinitions(namespace);
+ if (definitions==null)
+ throw new IllegalArgumentException("Cannot find WSDL definition for "+namespace);
+ for (Definition definition: definitions) {
+
+ // Find the port with the given name
+ PortType portType=definition.getPortType(qname);
+ return portType;
+ }
+ throw new IllegalArgumentException("Cannot find WSDL portType "+uri);
+ }
+
+ /**
+ * Generate a Java interface from a WSDL portType.
+ * @param portType
+ * @param interfaceName
+ * @return
+ */
+ private Class generateJavaInterface(ResourceLoader resourceLoader, PortType portType, String interfaceName) {
+ ClassWriter cw=new ClassWriter(false);
+
+ // Generate the interface
+ interfaceName=interfaceName.replace('.', '/');
+ cw.visit(V1_5, ACC_PUBLIC + ACC_ABSTRACT + ACC_INTERFACE, interfaceName, null, "java/lang/Object", new String[0]);
+
+
+ // Generate methods from the WSDL operations
+ for (Operation operation : (List<Operation>)portType.getOperations()) {
+ String methodName=XMLNameUtil.getJavaNameFromXMLName(operation.getName(), false);
+
+ //FIXME integrate XSD to Java type mapping here
+ String inputType = Type.getDescriptor(String.class);
+ String outputType = Type.getDescriptor(String.class);
+
+ cw.visitMethod(ACC_PUBLIC + ACC_ABSTRACT, methodName, "("+inputType+")"+outputType, null, null).visitEnd();
+ }
+
+ // Generate the bytecodes
+ cw.visitEnd();
+ byte[] bytes=cw.toByteArray();
+
+ // Add the class to the resource loader
+ Class interfaceClass=(Class)resourceLoader.addClass(bytes);
+
+ return interfaceClass;
+ }
+
+}
diff --git a/sca-java-1.x/tags/java-stable-20060304/sca/model/src/main/java/org/apache/tuscany/model/util/ModelContentHandler.java b/sca-java-1.x/tags/java-stable-20060304/sca/model/src/main/java/org/apache/tuscany/model/util/ModelContentHandler.java
new file mode 100644
index 0000000000..515d2128ec
--- /dev/null
+++ b/sca-java-1.x/tags/java-stable-20060304/sca/model/src/main/java/org/apache/tuscany/model/util/ModelContentHandler.java
@@ -0,0 +1,71 @@
+/**
+ *
+ * Copyright 2005 The Apache Software Foundation or its licensors, as applicable.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.apache.tuscany.model.util;
+
+import java.util.List;
+import java.util.Map;
+
+/**
+ * A model content handler. This mimics a SAX content handler for models and
+ * receives notification of the content of a model. A model content handler is
+ * responsible for handling model content notifications. As part of the handling
+ * the handler can produce new contents.
+ */
+public interface ModelContentHandler {
+
+ /**
+ * Starts handling of a model.
+ */
+ public void startModel();
+
+ /**
+ * Ends handling of a model.
+ */
+ public void endModel();
+
+ /**
+ * Sets the contents list, where the content handler should store
+ * the contents that it produces.
+ * @param contents The contents to set
+ */
+ public void setContents(List contents);
+
+ /**
+ * Sets the linkers list. A content handler can add linker objects to this
+ * list. Linker objects must implement java.lang.Runnable. They are
+ * run as part of the endModel notification processing.
+ * Typically linker objects are used to resolve model forward references
+ * or establish model relationships after the model content has been
+ * handled.
+ * @param linkers The linkers to set
+ */
+ public void setLinkers(List linkers);
+
+ /**
+ * Sets the targets map. This map keeps track of the objects returned by
+ * the content handler for each object passed to its doSwitch method.
+ * @param targets The targets to set
+ */
+ public void setTargets(Map targets);
+
+ /**
+ * This method dispatches handling of the given object (XYZ for example) to a
+ * corresponding "caseXYZ()" method on the content handler.
+ */
+ public Object doSwitch(Object object);
+
+}
diff --git a/sca-java-1.x/tags/java-stable-20060304/sca/model/src/main/java/org/apache/tuscany/model/util/ModelTransformer.java b/sca-java-1.x/tags/java-stable-20060304/sca/model/src/main/java/org/apache/tuscany/model/util/ModelTransformer.java
new file mode 100644
index 0000000000..2a6fbe2f8a
--- /dev/null
+++ b/sca-java-1.x/tags/java-stable-20060304/sca/model/src/main/java/org/apache/tuscany/model/util/ModelTransformer.java
@@ -0,0 +1,51 @@
+/**
+ *
+ * Copyright 2005 The Apache Software Foundation or its licensors, as applicable.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.apache.tuscany.model.util;
+
+import java.util.Iterator;
+import java.util.List;
+import java.util.Map;
+
+/**
+ * A model transformer. Invokes a model content handler to perform the actual transformation.
+ */
+public interface ModelTransformer {
+
+ /**
+ * Uses a ModelContentHandler to transform a model.
+ */
+ public List transform(Iterator iterator, ModelContentHandler handler);
+
+ /**
+ * Uses a ModelContentHandler to transform a model. Performs the first
+ * transform pass.
+ */
+ public List transformPass1(Iterator iterator, ModelContentHandler handler, List deferredHandlers);
+
+ /**
+ * Uses a ModelContentHandler to transform a model. Performs the first
+ * transform pass.
+ */
+ public List transformPass1(Iterator iterator, final ModelContentHandler handler, List deferredHandlers, Map targets, List contents);
+
+ /**
+ * Uses a ModelContentHandler to transform a model. Performs the second
+ * transform pass.
+ */
+ public void transformPass2(List deferredHandlers);
+
+}
diff --git a/sca-java-1.x/tags/java-stable-20060304/sca/model/src/main/java/org/apache/tuscany/model/util/ModelTransformerImpl.java b/sca-java-1.x/tags/java-stable-20060304/sca/model/src/main/java/org/apache/tuscany/model/util/ModelTransformerImpl.java
new file mode 100644
index 0000000000..85458b03ef
--- /dev/null
+++ b/sca-java-1.x/tags/java-stable-20060304/sca/model/src/main/java/org/apache/tuscany/model/util/ModelTransformerImpl.java
@@ -0,0 +1,125 @@
+/**
+ *
+ * Copyright 2005 The Apache Software Foundation or its licensors, as applicable.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.apache.tuscany.model.util;
+
+import java.util.ArrayList;
+import java.util.HashMap;
+import java.util.Iterator;
+import java.util.List;
+import java.util.Map;
+
+
+/**
+ * @author jsdelfino
+ *
+ * Base implementation for a model transformer.
+ * Invokes a model content handler to perform the actual transformation.
+ */
+public class ModelTransformerImpl implements ModelTransformer {
+
+ /**
+ * Uses a ModelContentHandler to transform a model.
+ */
+ public List transform(Iterator iterator, ModelContentHandler handler) {
+
+ // Pass 1: visit the source model and create target model objects
+ List linkers=new ArrayList();
+ List contents=transformPass1(iterator, handler, linkers);
+
+ // Pass 2: resolve the links between the target model objects
+ transformPass2(linkers);
+
+ // Return the target model contents
+ return contents;
+ }
+
+ /**
+ * Uses a ModelContentHandler to transform a model.
+ */
+ public List transformPass1(Iterator iterator, final ModelContentHandler handler, List deferredHandlers, Map targets, List contents) {
+
+ // Initialize the handler
+ handler.setTargets(targets);
+ handler.setLinkers(deferredHandlers);
+ handler.setContents(contents);
+
+ // This runnable will invoke endModel and clean up the handler
+ Runnable cleanup=new Runnable() {
+ public void run() {
+
+ // Cleanup
+ handler.endModel();
+
+ handler.setTargets(null);
+ handler.setLinkers(null);
+ handler.setContents(null);
+ }
+ };
+
+ // Run the handler
+ try {
+ handler.startModel();
+
+ // Pass 1: compile, visit the source model and create target model objects
+ for (; iterator.hasNext(); ) {
+ Object source=iterator.next();
+ if (source==null)
+ System.out.println("Ooops");
+ Object target=handler.doSwitch(source);
+
+ // Record source to target associations
+ targets.put(source,target);
+ }
+
+ // Add the cleanup runnable
+ deferredHandlers.add(cleanup);
+
+ } catch (Exception e) {
+
+ // An exception occurred, run the cleanup now
+ cleanup.run();
+ throw new RuntimeException(e);
+ }
+
+ // return the target model contents
+ // note that this list may actually be populated in pass2
+ return contents;
+ }
+
+ /**
+ * Uses a ModelContentHandler to transform a model.
+ */
+ public List transformPass1(Iterator iterator, final ModelContentHandler handler, List deferredHandlers) {
+ Map targets=new HashMap();
+ List contents=new ArrayList();
+ return transformPass1(iterator,handler,deferredHandlers,targets,contents);
+ }
+
+ /**
+ * Uses a ModelContentHandler to transform a model.
+ */
+ public void transformPass2(List deferredHandlers) {
+
+ // Pass 2: link, resolve the links between the target model objects
+ for (Iterator i=deferredHandlers.iterator(); i.hasNext(); ) {
+ Runnable runnable=(Runnable)i.next();
+ runnable.run();
+ }
+
+ }
+
+}
diff --git a/sca-java-1.x/tags/java-stable-20060304/sca/model/src/main/java/org/apache/tuscany/model/util/XMLNameUtil.java b/sca-java-1.x/tags/java-stable-20060304/sca/model/src/main/java/org/apache/tuscany/model/util/XMLNameUtil.java
new file mode 100644
index 0000000000..be707dbb9c
--- /dev/null
+++ b/sca-java-1.x/tags/java-stable-20060304/sca/model/src/main/java/org/apache/tuscany/model/util/XMLNameUtil.java
@@ -0,0 +1,227 @@
+/**
+ *
+ * Copyright 2005 The Apache Software Foundation or its licensors, as applicable.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.apache.tuscany.model.util;
+
+import java.util.ArrayList;
+import java.util.Arrays;
+import java.util.Collections;
+import java.util.Iterator;
+import java.util.List;
+
+import org.eclipse.emf.common.util.URI;
+
+/**
+ * A utility class that converts between XML names and Java names.
+ */
+public class XMLNameUtil {
+
+ private static final List domains = Arrays.asList(new String[]{"COM", "com", "ORG", "org"});
+
+ /**
+ * Constructor
+ */
+ private XMLNameUtil() {
+ super();
+ }
+
+ /**
+ * Return an EPackage name for the given namespace.
+ *
+ * @param namespace
+ * @return
+ */
+ public static String getPackageNameFromNamespace(String namespace) {
+
+ URI uri = URI.createURI(namespace);
+ List parsedName;
+ if (uri.isHierarchical()) {
+ String host = uri.host();
+ if (host != null && host.startsWith("www.")) {
+ host = host.substring(4);
+ }
+ parsedName = parseName(host, '.');
+ Collections.reverse(parsedName);
+ if (!parsedName.isEmpty()) {
+ parsedName.set(0, ((String) parsedName.get(0)).toLowerCase());
+ }
+
+ parsedName.addAll(parseName(uri.trimFileExtension().path(), '/'));
+
+ } else {
+ String opaquePart = uri.opaquePart();
+ int index = opaquePart.indexOf(":");
+ if (index != -1 && "urn".equalsIgnoreCase(uri.scheme())) {
+ parsedName = parseName(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(parseName(opaquePart.substring(index + 1), '/'));
+
+ } else {
+ parsedName = parseName(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(getJavaNameFromXMLName(packageName, false));
+ }
+ }
+ return qualifiedPackageName.toString();
+
+ }
+
+ /**
+ * Returns a namespace prefix for the given package Name
+ *
+ * @param packageName
+ * @return
+ */
+ public static String getNSPrefixFromPackageName(String packageName) {
+ String nsPrefix = packageName;
+ int index = nsPrefix.lastIndexOf('.');
+ return index == -1 ? nsPrefix : nsPrefix.substring(index + 1);
+ }
+
+ /**
+ * Parse the given name.
+ *
+ * @param sourceName
+ * @param separator
+ * @return
+ */
+ private static List parseName(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;
+ }
+
+ /**
+ * Returns a valid Java name from an XML Name
+ *
+ * @param name
+ * @param isUpperCase
+ * @return
+ */
+ public static String getJavaNameFromXMLName(String name, boolean isUpperCase) {
+ List parsedName = parseName(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 || isUpperCase) {
+ result.append(Character.toUpperCase(nameComponent.charAt(0)));
+ result.append(nameComponent.substring(1));
+ } else {
+ result.append(nameComponent);
+ }
+ }
+ }
+
+ return result.length() == 0 ? "_" : Character.isJavaIdentifierStart(result.charAt(0)) ? isUpperCase ? result.toString() : decapitalizeName(result.toString()) : "_" + result;
+ }
+
+ /**
+ * Returns a valid fully qualified class name from a QName
+ * @param namespace
+ * @param name
+ * @return
+ */
+ public static String getFullyQualifiedClassNameFromQName(String namespace, String name) {
+ return XMLNameUtil.getPackageNameFromNamespace(namespace)+'.'+XMLNameUtil.getJavaNameFromXMLName(name, true);
+ }
+
+ /**
+ * Decapitalize a name.
+ * @param name
+ * @return
+ */
+ public static String decapitalizeName(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()) {
+ --i;
+ }
+ return name.substring(0, i).toLowerCase() + name.substring(i);
+ }
+ }
+
+ /**
+ * Capitalize a name.
+ * @param name
+ * @return
+ */
+ public static String capitalizeName(String name) {
+ int l=name.length();
+ if (l == 0) {
+ return name;
+ } else if (l==1) {
+ return name.toUpperCase();
+ } else {
+ return name.substring(0, 1).toUpperCase() + name.substring(1);
+ }
+ }
+
+} \ No newline at end of file
diff --git a/sca-java-1.x/tags/java-stable-20060304/sca/model/src/main/resources/model/assembly.mdl b/sca-java-1.x/tags/java-stable-20060304/sca/model/src/main/resources/model/assembly.mdl
new file mode 100644
index 0000000000..63349ead08
--- /dev/null
+++ b/sca-java-1.x/tags/java-stable-20060304/sca/model/src/main/resources/model/assembly.mdl
@@ -0,0 +1,6092 @@
+
+(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 FALSE
+ 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 "4367BF7F0006"
+ exportControl "Public"
+ global TRUE
+ logical_models (list unit_reference_list)
+ logical_presentations (list unit_reference_list
+ (object UseCaseDiagram "Main"
+ quid "4367BF7F0037"
+ 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 "4367BF7F0005"
+ exportControl "Public"
+ global TRUE
+ subsystem "Component View"
+ quidu "4367BF7F0007"
+ logical_models (list unit_reference_list
+ (object Class_Category "Assembly"
+ quid "4367BFA901F9"
+ exportControl "Public"
+ logical_models (list unit_reference_list
+ (object Class "Aggregate"
+ quid "4367BFB702AD"
+ class_attributes (list class_attribute_list
+ (object ClassAttribute "name"
+ quid "4367C06602E1")))
+ (object Class "Part"
+ quid "4367BFD202AC"
+ class_attributes (list class_attribute_list
+ (object ClassAttribute "name"
+ quid "4367C07801CE")))
+ (object Class "Component"
+ quid "4367C00800BF"
+ superclasses (list inheritance_relationship_list
+ (object Inheritance_Relationship
+ quid "4367C286003A"
+ supplier "Logical View::Assembly::Part"
+ quidu "4367BFD202AC")))
+ (object Class "ExternalService"
+ quid "4367C00E009F"
+ superclasses (list inheritance_relationship_list
+ (object Inheritance_Relationship
+ quid "4367C289032D"
+ supplier "Logical View::Assembly::Part"
+ quidu "4367BFD202AC"))
+ class_attributes (list class_attribute_list
+ (object ClassAttribute "overridable"
+ quid "4367C3ED00C2")))
+ (object Class "EntryPoint"
+ quid "4367C0210101"
+ superclasses (list inheritance_relationship_list
+ (object Inheritance_Relationship
+ quid "4367C27E030A"
+ supplier "Logical View::Assembly::Part"
+ quidu "4367BFD202AC")))
+ (object Class "Binding"
+ quid "4367C18A02C3"
+ class_attributes (list class_attribute_list
+ (object ClassAttribute "uri"
+ quid "4367C191020E"))
+ abstract TRUE)
+ (object Class "ConfiguredImplementation"
+ quid "4367C1D70165"
+ abstract TRUE)
+ (object Class "ConfiguredService"
+ quid "4367C1E10105"
+ superclasses (list inheritance_relationship_list
+ (object Inheritance_Relationship
+ quid "4367C5EB01DE"
+ supplier "Logical View::Assembly::ConfiguredPort"
+ quidu "4367C5D400C3")))
+ (object Class "ConfiguredReference"
+ quid "4367C1EC0011"
+ superclasses (list inheritance_relationship_list
+ (object Inheritance_Relationship
+ quid "4367C5EE02D3"
+ supplier "Logical View::Assembly::ConfiguredPort"
+ quidu "4367C5D400C3")))
+ (object Class "ConfiguredProperty"
+ quid "4367C205012F"
+ class_attributes (list class_attribute_list
+ (object ClassAttribute "value"
+ quid "4367CBD8024E")))
+ (object Class "ComponentType"
+ quid "4367C2A20289")
+ (object Class "Service"
+ quid "4367C2B1014A"
+ superclasses (list inheritance_relationship_list
+ (object Inheritance_Relationship
+ quid "4367C5A80001"
+ supplier "Logical View::Assembly::Port"
+ quidu "4367C58302CF"))
+ class_attributes (list class_attribute_list
+ (object ClassAttribute "name"
+ quid "4367C81C022B")))
+ (object Class "Reference"
+ quid "4367C2B90318"
+ superclasses (list inheritance_relationship_list
+ (object Inheritance_Relationship
+ quid "4367C5AB00EC"
+ supplier "Logical View::Assembly::Port"
+ quidu "4367C58302CF"))
+ class_attributes (list class_attribute_list
+ (object ClassAttribute "multiplicity"
+ quid "4367C69F01AB")))
+ (object Class "Property"
+ quid "4367C2C30381"
+ class_attributes (list class_attribute_list
+ (object ClassAttribute "default"
+ quid "4367C61B02A5")
+ (object ClassAttribute "many"
+ quid "4367C620007C")
+ (object ClassAttribute "name"
+ quid "4367C6230225")
+ (object ClassAttribute "required"
+ quid "4367C626025B")))
+ (object Class "Interface"
+ quid "4367C4260179"
+ abstract TRUE)
+ (object Class "InterfaceType"
+ quid "4367C43900EA")
+ (object Class "Module"
+ quid "4367C4C90079"
+ superclasses (list inheritance_relationship_list
+ (object Inheritance_Relationship
+ quid "4367C4CF001D"
+ supplier "Logical View::Assembly::Implementation"
+ quidu "436833C300FA")
+ (object Inheritance_Relationship
+ quid "4367C4D4009D"
+ supplier "Logical View::Assembly::Aggregate"
+ quidu "4367BFB702AD")))
+ (object Class "ModuleComponent"
+ quid "4367C4EA0315"
+ superclasses (list inheritance_relationship_list
+ (object Inheritance_Relationship
+ quid "4367C4FA01C4"
+ supplier "Logical View::Assembly::Component"
+ quidu "4367C00800BF")))
+ (object Class "ModuleFragment"
+ quid "4367C50C038C"
+ superclasses (list inheritance_relationship_list
+ (object Inheritance_Relationship
+ quid "4367C52000D8"
+ supplier "Logical View::Assembly::Aggregate"
+ quidu "4367BFB702AD")))
+ (object Class "Port"
+ quid "4367C58302CF")
+ (object Class "ConfiguredPort"
+ quid "4367C5D400C3")
+ (object Class "OperationType"
+ quid "4367C64601FD")
+ (object Class "Type"
+ quid "4367C65D0124")
+ (object Class "Subsystem"
+ quid "4367C757032C"
+ superclasses (list inheritance_relationship_list
+ (object Inheritance_Relationship
+ quid "4367C76B03AD"
+ supplier "Logical View::Assembly::Aggregate"
+ quidu "4367BFB702AD"))
+ class_attributes (list class_attribute_list
+ (object ClassAttribute "uri"
+ quid "4367C763003A")))
+ (object Class "Implementation"
+ quid "436833C300FA"
+ abstract TRUE)
+ (object Class "ConfiguredModule"
+ quid "436836780038"
+ superclasses (list inheritance_relationship_list
+ (object Inheritance_Relationship
+ quid "436836C701A4"
+ supplier "Logical View::Assembly::ConfiguredImplementation"
+ quidu "4367C1D70165")))
+ (object Association "$UNNAMED$0"
+ quid "4367C02A0050"
+ roles (list role_list
+ (object Role "$UNNAMED$1"
+ quid "4367C02A03D5"
+ supplier "Logical View::Assembly::Aggregate"
+ quidu "4367BFB702AD"
+ is_navigable TRUE
+ is_aggregate TRUE)
+ (object Role "entryPoints"
+ quid "4367C02A03D6"
+ label "entryPoints"
+ supplier "Logical View::Assembly::EntryPoint"
+ quidu "4367C0210101"
+ client_cardinality (value cardinality "0..n")
+ Containment "By Value"
+ is_navigable TRUE)))
+ (object Association "$UNNAMED$2"
+ quid "4367C02C025B"
+ roles (list role_list
+ (object Role "$UNNAMED$3"
+ quid "4367C02D022B"
+ supplier "Logical View::Assembly::Aggregate"
+ quidu "4367BFB702AD"
+ is_navigable TRUE
+ is_aggregate TRUE)
+ (object Role "components"
+ quid "4367C02D022C"
+ label "components"
+ supplier "Logical View::Assembly::Component"
+ quidu "4367C00800BF"
+ client_cardinality (value cardinality "0..n")
+ Containment "By Value"
+ is_navigable TRUE)))
+ (object Association "$UNNAMED$4"
+ quid "4367C02F02C4"
+ roles (list role_list
+ (object Role "$UNNAMED$5"
+ quid "4367C03002ED"
+ supplier "Logical View::Assembly::Aggregate"
+ quidu "4367BFB702AD"
+ is_navigable TRUE
+ is_aggregate TRUE)
+ (object Role "externalServices"
+ quid "4367C03002EE"
+ label "externalServices"
+ supplier "Logical View::Assembly::ExternalService"
+ quidu "4367C00E009F"
+ client_cardinality (value cardinality "0..n")
+ Containment "By Value"
+ is_navigable TRUE)))
+ (object Association "$UNNAMED$6"
+ quid "4367C10E0314"
+ roles (list role_list
+ (object Role "aggregate"
+ quid "4367C10F0348"
+ label "aggregate"
+ supplier "Logical View::Assembly::Aggregate"
+ quidu "4367BFB702AD"
+ is_navigable TRUE
+ is_aggregate TRUE)
+ (object Role "parts"
+ quid "4367C10F0349"
+ label "parts"
+ supplier "Logical View::Assembly::Part"
+ quidu "4367BFD202AC"
+ client_cardinality (value cardinality "0..n")
+ Containment "By Value"
+ is_navigable TRUE)))
+ (object Association "$UNNAMED$7"
+ quid "4367C265015F"
+ roles (list role_list
+ (object Role "$UNNAMED$8"
+ quid "4367C2660110"
+ supplier "Logical View::Assembly::Component"
+ quidu "4367C00800BF"
+ is_navigable TRUE
+ is_aggregate TRUE)
+ (object Role "$UNNAMED$9"
+ quid "4367C2660111"
+ supplier "Logical View::Assembly::ConfiguredService"
+ quidu "4367C1E10105"
+ client_cardinality (value cardinality "0..n")
+ Containment "By Value"
+ is_navigable TRUE)))
+ (object Association "$UNNAMED$10"
+ quid "4367C269025F"
+ roles (list role_list
+ (object Role "$UNNAMED$11"
+ quid "4367C26A026B"
+ supplier "Logical View::Assembly::Component"
+ quidu "4367C00800BF"
+ is_navigable TRUE
+ is_aggregate TRUE)
+ (object Role "$UNNAMED$12"
+ quid "4367C26A026C"
+ supplier "Logical View::Assembly::ConfiguredReference"
+ quidu "4367C1EC0011"
+ client_cardinality (value cardinality "0..n")
+ Containment "By Value"
+ is_navigable TRUE)))
+ (object Association "$UNNAMED$13"
+ quid "4367C26D0297"
+ roles (list role_list
+ (object Role "$UNNAMED$14"
+ quid "4367C26E037F"
+ supplier "Logical View::Assembly::Component"
+ quidu "4367C00800BF"
+ is_navigable TRUE
+ is_aggregate TRUE)
+ (object Role "$UNNAMED$15"
+ quid "4367C26E0380"
+ supplier "Logical View::Assembly::ConfiguredProperty"
+ quidu "4367C205012F"
+ client_cardinality (value cardinality "0..n")
+ Containment "By Value"
+ is_navigable TRUE)))
+ (object Association "$UNNAMED$16"
+ quid "4367C29500DC"
+ roles (list role_list
+ (object Role "$UNNAMED$17"
+ quid "4367C296021E"
+ supplier "Logical View::Assembly::Component"
+ quidu "4367C00800BF"
+ is_navigable TRUE
+ is_aggregate TRUE)
+ (object Role "$UNNAMED$18"
+ quid "4367C296021F"
+ supplier "Logical View::Assembly::ConfiguredImplementation"
+ quidu "4367C1D70165"
+ client_cardinality (value cardinality "1..1")
+ Containment "By Value"
+ is_navigable TRUE)))
+ (object Association "$UNNAMED$19"
+ quid "4367C2D50200"
+ roles (list role_list
+ (object Role "$UNNAMED$20"
+ quid "4367C2D60099"
+ supplier "Logical View::Assembly::ComponentType"
+ quidu "4367C2A20289"
+ is_navigable TRUE
+ is_aggregate TRUE)
+ (object Role "$UNNAMED$21"
+ quid "4367C2D6009A"
+ supplier "Logical View::Assembly::Service"
+ quidu "4367C2B1014A"
+ client_cardinality (value cardinality "1..n")
+ Containment "By Value"
+ is_navigable TRUE)))
+ (object Association "$UNNAMED$22"
+ quid "4367C2D8018C"
+ roles (list role_list
+ (object Role "$UNNAMED$23"
+ quid "4367C2D9015C"
+ supplier "Logical View::Assembly::ComponentType"
+ quidu "4367C2A20289"
+ is_navigable TRUE
+ is_aggregate TRUE)
+ (object Role "$UNNAMED$24"
+ quid "4367C2D9015D"
+ supplier "Logical View::Assembly::Reference"
+ quidu "4367C2B90318"
+ client_cardinality (value cardinality "0..n")
+ Containment "By Value"
+ is_navigable TRUE)))
+ (object Association "$UNNAMED$25"
+ quid "4367C2DC002A"
+ roles (list role_list
+ (object Role "$UNNAMED$26"
+ quid "4367C2DD0035"
+ supplier "Logical View::Assembly::ComponentType"
+ quidu "4367C2A20289"
+ is_navigable TRUE
+ is_aggregate TRUE)
+ (object Role "$UNNAMED$27"
+ quid "4367C2DD0036"
+ supplier "Logical View::Assembly::Property"
+ quidu "4367C2C30381"
+ client_cardinality (value cardinality "0..n")
+ Containment "By Value"
+ is_navigable TRUE)))
+ (object Association "$UNNAMED$28"
+ quid "4367C2E901EB"
+ roles (list role_list
+ (object Role "$UNNAMED$29"
+ quid "4367C2EA020A"
+ supplier "Logical View::Assembly::Property"
+ quidu "4367C2C30381"
+ client_cardinality (value cardinality "1..1")
+ is_navigable TRUE)
+ (object Role "$UNNAMED$30"
+ quid "4367C2EA020B"
+ supplier "Logical View::Assembly::ConfiguredProperty"
+ quidu "4367C205012F")))
+ (object Association "$UNNAMED$31"
+ quid "4367C2F00000"
+ roles (list role_list
+ (object Role "$UNNAMED$32"
+ quid "4367C2F10174"
+ supplier "Logical View::Assembly::ComponentType"
+ quidu "4367C2A20289"
+ client_cardinality (value cardinality "1..1")
+ is_navigable TRUE)
+ (object Role "$UNNAMED$33"
+ quid "4367C2F10175"
+ supplier "Logical View::Assembly::ConfiguredImplementation"
+ quidu "4367C1D70165")))
+ (object Association "$UNNAMED$34"
+ quid "4367C3170350"
+ roles (list role_list
+ (object Role "$UNNAMED$35"
+ quid "4367C319008C"
+ supplier "Logical View::Assembly::ExternalService"
+ quidu "4367C00E009F"
+ is_navigable TRUE
+ is_aggregate TRUE)
+ (object Role "$UNNAMED$36"
+ quid "4367C319008D"
+ supplier "Logical View::Assembly::ConfiguredService"
+ quidu "4367C1E10105"
+ client_cardinality (value cardinality "1..1")
+ Containment "By Value"
+ is_navigable TRUE)))
+ (object Association "$UNNAMED$37"
+ quid "4367C396015E"
+ roles (list role_list
+ (object Role "$UNNAMED$38"
+ quid "4367C39700D3"
+ supplier "Logical View::Assembly::EntryPoint"
+ quidu "4367C0210101"
+ is_navigable TRUE
+ is_aggregate TRUE)
+ (object Role "$UNNAMED$39"
+ quid "4367C39700D4"
+ supplier "Logical View::Assembly::Binding"
+ quidu "4367C18A02C3"
+ client_cardinality (value cardinality "0..n")
+ Containment "By Value"
+ is_navigable TRUE)))
+ (object Association "$UNNAMED$40"
+ quid "4367C39A0240"
+ roles (list role_list
+ (object Role "$UNNAMED$41"
+ quid "4367C39B01AB"
+ supplier "Logical View::Assembly::ExternalService"
+ quidu "4367C00E009F"
+ is_navigable TRUE
+ is_aggregate TRUE)
+ (object Role "$UNNAMED$42"
+ quid "4367C39B01AC"
+ supplier "Logical View::Assembly::Binding"
+ quidu "4367C18A02C3"
+ client_cardinality (value cardinality "0..n")
+ Containment "By Value"
+ is_navigable TRUE)))
+ (object Association "$UNNAMED$43"
+ quid "4367C39F021F"
+ roles (list role_list
+ (object Role "$UNNAMED$44"
+ quid "4367C3A0031B"
+ supplier "Logical View::Assembly::EntryPoint"
+ quidu "4367C0210101"
+ is_navigable TRUE
+ is_aggregate TRUE)
+ (object Role "$UNNAMED$45"
+ quid "4367C3A0031C"
+ supplier "Logical View::Assembly::ConfiguredReference"
+ quidu "4367C1EC0011"
+ client_cardinality (value cardinality "1..1")
+ Containment "By Value"
+ is_navigable TRUE)))
+ (object Association "$UNNAMED$46"
+ quid "4367C4330286"
+ roles (list role_list
+ (object Role "$UNNAMED$47"
+ quid "4367C4340327"
+ supplier "Logical View::Assembly::Port"
+ quidu "4367C58302CF"
+ is_navigable TRUE
+ is_aggregate TRUE)
+ (object Role "$UNNAMED$48"
+ quid "4367C4340328"
+ supplier "Logical View::Assembly::Interface"
+ quidu "4367C4260179"
+ client_cardinality (value cardinality "1..1")
+ Containment "By Value"
+ is_navigable TRUE)))
+ (object Association "$UNNAMED$49"
+ quid "4367C4440168"
+ roles (list role_list
+ (object Role "$UNNAMED$50"
+ quid "4367C44500FB"
+ supplier "Logical View::Assembly::InterfaceType"
+ quidu "4367C43900EA"
+ client_cardinality (value cardinality "0..1")
+ is_navigable TRUE)
+ (object Role "$UNNAMED$51"
+ quid "4367C44500FC"
+ supplier "Logical View::Assembly::Interface"
+ quidu "4367C4260179")))
+ (object Association "$UNNAMED$52"
+ quid "4367C44A01DF"
+ roles (list role_list
+ (object Role "$UNNAMED$53"
+ quid "4367C44C0155"
+ supplier "Logical View::Assembly::InterfaceType"
+ quidu "4367C43900EA"
+ client_cardinality (value cardinality "1..1")
+ is_navigable TRUE)
+ (object Role "$UNNAMED$54"
+ quid "4367C44C0156"
+ supplier "Logical View::Assembly::Interface"
+ quidu "4367C4260179")))
+ (object Association "$UNNAMED$55"
+ quid "4367C52701D2"
+ roles (list role_list
+ (object Role "$UNNAMED$56"
+ quid "4367C52801FC"
+ supplier "Logical View::Assembly::Module"
+ quidu "4367C4C90079"
+ is_navigable TRUE
+ is_aggregate TRUE)
+ (object Role "$UNNAMED$57"
+ quid "4367C52801FD"
+ supplier "Logical View::Assembly::ModuleFragment"
+ quidu "4367C50C038C"
+ client_cardinality (value cardinality "0..n")
+ Containment "By Value"
+ is_navigable TRUE)))
+ (object Association "$UNNAMED$58"
+ quid "4367C5E00369"
+ roles (list role_list
+ (object Role "$UNNAMED$59"
+ quid "4367C5E10342"
+ supplier "Logical View::Assembly::Port"
+ quidu "4367C58302CF"
+ client_cardinality (value cardinality "1..1")
+ is_navigable TRUE)
+ (object Role "$UNNAMED$60"
+ quid "4367C5E10343"
+ supplier "Logical View::Assembly::ConfiguredPort"
+ quidu "4367C5D400C3")))
+ (object Association "$UNNAMED$61"
+ quid "4367C65601D8"
+ roles (list role_list
+ (object Role "$UNNAMED$62"
+ quid "4367C65701A7"
+ supplier "Logical View::Assembly::InterfaceType"
+ quidu "4367C43900EA"
+ is_navigable TRUE
+ is_aggregate TRUE)
+ (object Role "$UNNAMED$63"
+ quid "4367C65701A8"
+ supplier "Logical View::Assembly::OperationType"
+ quidu "4367C64601FD"
+ client_cardinality (value cardinality "0..n")
+ Containment "By Value"
+ is_navigable TRUE)))
+ (object Association "$UNNAMED$64"
+ quid "4367C66702F5"
+ roles (list role_list
+ (object Role "$UNNAMED$65"
+ quid "4367C6680328"
+ supplier "Logical View::Assembly::OperationType"
+ quidu "4367C64601FD")
+ (object Role "exceptionTypes"
+ quid "4367C6680329"
+ label "exceptionTypes"
+ supplier "Logical View::Assembly::Type"
+ quidu "4367C65D0124"
+ client_cardinality (value cardinality "0..n")
+ is_navigable TRUE)))
+ (object Association "$UNNAMED$66"
+ quid "4367C66B039B"
+ roles (list role_list
+ (object Role "$UNNAMED$67"
+ quid "4367C66C02FC"
+ supplier "Logical View::Assembly::OperationType"
+ quidu "4367C64601FD")
+ (object Role "outputType"
+ quid "4367C66C02FD"
+ label "outputType"
+ supplier "Logical View::Assembly::Type"
+ quidu "4367C65D0124"
+ client_cardinality (value cardinality "0..1")
+ is_navigable TRUE)))
+ (object Association "$UNNAMED$68"
+ quid "4367C671033F"
+ roles (list role_list
+ (object Role "$UNNAMED$69"
+ quid "4367C6730202"
+ supplier "Logical View::Assembly::OperationType"
+ quidu "4367C64601FD")
+ (object Role "inputType"
+ quid "4367C6730203"
+ label "inputType"
+ supplier "Logical View::Assembly::Type"
+ quidu "4367C65D0124"
+ client_cardinality (value cardinality "1..1")
+ is_navigable TRUE)))
+ (object Association "$UNNAMED$70"
+ quid "4367C6790391"
+ roles (list role_list
+ (object Role "$UNNAMED$71"
+ quid "4367C67B0073"
+ supplier "Logical View::Assembly::Type"
+ quidu "4367C65D0124"
+ is_navigable TRUE)
+ (object Role "$UNNAMED$72"
+ quid "4367C67B007D"
+ supplier "Logical View::Assembly::Property"
+ quidu "4367C2C30381")))
+ (object Association "$UNNAMED$73"
+ quid "4367C6C10222"
+ roles (list role_list
+ (object Role "serviceEndpoints"
+ quid "4367C6C20129"
+ label "serviceEndpoints"
+ supplier "Logical View::Assembly::ConfiguredService"
+ quidu "4367C1E10105"
+ client_cardinality (value cardinality "0..n")
+ is_navigable TRUE)
+ (object Role "$UNNAMED$74"
+ quid "4367C6C2012A"
+ supplier "Logical View::Assembly::ConfiguredReference"
+ quidu "4367C1EC0011")))
+ (object Association "$UNNAMED$75"
+ quid "4367C73A0384"
+ roles (list role_list
+ (object Role "$UNNAMED$76"
+ quid "4367C73C0020"
+ supplier "Logical View::Assembly::Service"
+ quidu "4367C2B1014A"
+ client_cardinality (value cardinality "1..1")
+ is_navigable TRUE)
+ (object Role "$UNNAMED$77"
+ quid "4367C73C0021"
+ supplier "Logical View::Assembly::ConfiguredService"
+ quidu "4367C1E10105")))
+ (object Association "$UNNAMED$78"
+ quid "4367C740038D"
+ roles (list role_list
+ (object Role "$UNNAMED$79"
+ quid "4367C7420001"
+ supplier "Logical View::Assembly::Reference"
+ quidu "4367C2B90318"
+ client_cardinality (value cardinality "1..1")
+ is_navigable TRUE)
+ (object Role "$UNNAMED$80"
+ quid "4367C7420002"
+ supplier "Logical View::Assembly::ConfiguredReference"
+ quidu "4367C1EC0011")))
+ (object Association "$UNNAMED$81"
+ quid "43682F4B0394"
+ roles (list role_list
+ (object Role "$UNNAMED$82"
+ quid "43682F4D0076"
+ supplier "Logical View::Assembly::ModuleComponent"
+ quidu "4367C4EA0315"
+ is_navigable TRUE
+ is_aggregate TRUE)
+ (object Role "$UNNAMED$83"
+ quid "43682F4D0077"
+ supplier "Logical View::Assembly::ConfiguredModule"
+ quidu "436836780038"
+ client_cardinality (value cardinality "1..1")
+ Containment "By Value"
+ is_navigable TRUE)))
+ (object Association "$UNNAMED$84"
+ quid "436834860263"
+ roles (list role_list
+ (object Role "$UNNAMED$85"
+ quid "436834870246"
+ supplier "Logical View::Assembly::Subsystem"
+ quidu "4367C757032C"
+ is_navigable TRUE
+ is_aggregate TRUE)
+ (object Role "$UNNAMED$86"
+ quid "436834870247"
+ supplier "Logical View::Assembly::ModuleComponent"
+ quidu "4367C4EA0315"
+ client_cardinality (value cardinality "0..n")
+ Containment "By Value"
+ is_navigable TRUE)))
+ (object Association "$UNNAMED$87"
+ quid "436835A101A2"
+ roles (list role_list
+ (object Role "$UNNAMED$88"
+ quid "436835A20289"
+ supplier "Logical View::Assembly::Implementation"
+ quidu "436833C300FA"
+ client_cardinality (value cardinality "0..1")
+ is_navigable TRUE)
+ (object Role "$UNNAMED$89"
+ quid "436835A2028A"
+ supplier "Logical View::Assembly::ConfiguredImplementation"
+ quidu "4367C1D70165")))
+ (object Association "$UNNAMED$90"
+ quid "436836850218"
+ roles (list role_list
+ (object Role "$UNNAMED$91"
+ quid "43683686027D"
+ supplier "Logical View::Assembly::ConfiguredModule"
+ quidu "436836780038")
+ (object Role "$UNNAMED$92"
+ quid "43683686027E"
+ supplier "Logical View::Assembly::Module"
+ quidu "4367C4C90079"
+ client_cardinality (value cardinality "1..1")
+ is_navigable TRUE)))
+ (object Association "$UNNAMED$93"
+ quid "43683779039F"
+ roles (list role_list
+ (object Role "$UNNAMED$94"
+ quid "4368377C0082"
+ supplier "Logical View::Assembly::ComponentType"
+ quidu "4367C2A20289"
+ client_cardinality (value cardinality "1..1")
+ is_navigable TRUE)
+ (object Role "$UNNAMED$95"
+ quid "4368377C0083"
+ supplier "Logical View::Assembly::Component"
+ quidu "4367C00800BF"))))
+ logical_presentations (list unit_reference_list
+ (object ClassDiagram "Main"
+ quid "4367BFB001D1"
+ title "Main"
+ zoom 65
+ max_height 28350
+ max_width 21600
+ origin_x 1596
+ origin_y 0
+ items (list diagram_item_list
+ (object ClassView "Class" "Logical View::Assembly::ConfiguredPort" @1
+ ShowCompartmentStereotypes TRUE
+ IncludeAttribute TRUE
+ IncludeOperation TRUE
+ location (2634, 1211)
+ label (object ItemLabel
+ Parent_View @1
+ location (2456, 1142)
+ fill_color 13434879
+ nlines 1
+ max_width 356
+ justify 0
+ label "ConfiguredPort")
+ icon_style "Icon"
+ line_color 3342489
+ fill_color 13434879
+ quidu "4367C5D400C3"
+ width 374
+ height 163
+ annotation 8)
+ (object ClassView "Class" "Logical View::Assembly::Port" @2
+ ShowCompartmentStereotypes TRUE
+ IncludeAttribute TRUE
+ IncludeOperation TRUE
+ location (3441, 1216)
+ label (object ItemLabel
+ Parent_View @2
+ location (3311, 1147)
+ fill_color 13434879
+ nlines 1
+ max_width 261
+ justify 0
+ label "Port")
+ icon_style "Icon"
+ line_color 3342489
+ fill_color 13434879
+ quidu "4367C58302CF"
+ width 279
+ height 163
+ annotation 8)
+ (object AssociationViewNew "$UNNAMED$58" @3
+ location (3061, 1212)
+ stereotype TRUE
+ line_color 3342489
+ quidu "4367C5E00369"
+ roleview_list (list RoleViews
+ (object RoleView "$UNNAMED$59" @4
+ Parent_View @3
+ location (1135, 341)
+ stereotype TRUE
+ line_color 3342489
+ quidu "4367C5E10342"
+ client @3
+ supplier @2
+ line_style 0
+ label (object SegLabel @5
+ Parent_View @4
+ location (3243, 1254)
+ anchor 2
+ anchor_loc 1
+ nlines 1
+ max_width 15
+ justify 0
+ label "1..1"
+ pctDist 0.763992
+ height 40
+ orientation 1))
+ (object RoleView "$UNNAMED$60" @6
+ Parent_View @3
+ location (1135, 341)
+ stereotype TRUE
+ line_color 3342489
+ quidu "4367C5E10343"
+ client @3
+ supplier @1
+ line_style 0)))
+ (object ClassView "Class" "Logical View::Assembly::Interface" @7
+ ShowCompartmentStereotypes TRUE
+ IncludeAttribute TRUE
+ IncludeOperation TRUE
+ location (3955, 1139)
+ font (object Font
+ italics TRUE)
+ label (object ItemLabel
+ Parent_View @7
+ location (3825, 1066)
+ fill_color 13434879
+ nlines 1
+ max_width 261
+ justify 0
+ label "Interface")
+ icon_style "Icon"
+ line_color 3342489
+ fill_color 13434879
+ quidu "4367C4260179"
+ width 279
+ height 173
+ annotation 8)
+ (object AssociationViewNew "$UNNAMED$46" @8
+ location (3697, 1176)
+ stereotype TRUE
+ line_color 3342489
+ quidu "4367C4330286"
+ roleview_list (list RoleViews
+ (object RoleView "$UNNAMED$47" @9
+ Parent_View @8
+ location (1011, 170)
+ stereotype TRUE
+ line_color 3342489
+ quidu "4367C4340327"
+ client @8
+ supplier @2
+ line_style 0)
+ (object RoleView "$UNNAMED$48" @10
+ Parent_View @8
+ location (1011, 170)
+ stereotype TRUE
+ line_color 3342489
+ quidu "4367C4340328"
+ client @8
+ supplier @7
+ line_style 0
+ label (object SegLabel @11
+ Parent_View @10
+ location (3799, 1203)
+ anchor 2
+ anchor_loc 1
+ nlines 1
+ max_width 15
+ justify 0
+ label "1..1"
+ pctDist 0.813510
+ height 41
+ orientation 1))))
+ (object ClassView "Class" "Logical View::Assembly::InterfaceType" @12
+ ShowCompartmentStereotypes TRUE
+ IncludeAttribute TRUE
+ IncludeOperation TRUE
+ location (3955, 1643)
+ label (object ItemLabel
+ Parent_View @12
+ location (3764, 1590)
+ fill_color 13434879
+ nlines 1
+ max_width 382
+ justify 0
+ label "InterfaceType")
+ icon_style "Icon"
+ line_color 3342489
+ fill_color 13434879
+ quidu "4367C43900EA"
+ width 400
+ height 131
+ annotation 8)
+ (object AssociationViewNew "$UNNAMED$49" @13
+ location (3866, 1367)
+ stereotype TRUE
+ line_color 3342489
+ quidu "4367C4440168"
+ roleview_list (list RoleViews
+ (object RoleView "$UNNAMED$50" @14
+ Parent_View @13
+ location (1180, 361)
+ label (object SegLabel @15
+ Parent_View @14
+ location (3863, 1554)
+ hidden TRUE
+ anchor 1
+ anchor_loc 1
+ nlines 1
+ max_width 60
+ justify 0
+ label ""
+ pctDist 0.800000
+ height 42
+ orientation 1)
+ stereotype TRUE
+ line_color 3342489
+ quidu "4367C44500FB"
+ client @13
+ supplier @12
+ vertices (list Points
+ (3866, 1367)
+ (3845, 1423)
+ (3921, 1577))
+ line_style 0
+ label (object SegLabel @16
+ Parent_View @14
+ location (3857, 1543)
+ anchor 2
+ anchor_loc 1
+ nlines 1
+ max_width 15
+ justify 0
+ label "0..1"
+ pctDist 0.746635
+ height 43
+ orientation 1))
+ (object RoleView "$UNNAMED$51" @17
+ Parent_View @13
+ location (1180, 361)
+ stereotype TRUE
+ line_color 3342489
+ quidu "4367C44500FC"
+ client @13
+ supplier @7
+ line_style 0)))
+ (object AssociationViewNew "$UNNAMED$52" @18
+ location (4002, 1388)
+ stereotype TRUE
+ line_color 3342489
+ quidu "4367C44A01DF"
+ roleview_list (list RoleViews
+ (object RoleView "$UNNAMED$53" @19
+ Parent_View @18
+ location (1316, 382)
+ label (object SegLabel @20
+ Parent_View @19
+ location (3945, 1529)
+ hidden TRUE
+ anchor 1
+ anchor_loc 1
+ nlines 1
+ max_width 60
+ justify 0
+ label ""
+ pctDist 0.800000
+ height 42
+ orientation 1)
+ stereotype TRUE
+ line_color 3342489
+ quidu "4367C44C0155"
+ client @18
+ supplier @12
+ vertices (list Points
+ (4002, 1388)
+ (4013, 1447)
+ (3973, 1577))
+ line_style 0
+ label (object SegLabel @21
+ Parent_View @19
+ location (4036, 1548)
+ anchor 2
+ anchor_loc 1
+ nlines 1
+ max_width 15
+ justify 0
+ label "1..1"
+ pctDist 0.769913
+ height 51
+ orientation 0))
+ (object RoleView "$UNNAMED$54" @22
+ Parent_View @18
+ location (1316, 382)
+ stereotype TRUE
+ line_color 3342489
+ quidu "4367C44C0156"
+ client @18
+ supplier @7
+ line_style 0)))
+ (object ClassView "Class" "Logical View::Assembly::OperationType" @23
+ ShowCompartmentStereotypes TRUE
+ IncludeAttribute TRUE
+ IncludeOperation TRUE
+ location (3960, 1960)
+ label (object ItemLabel
+ Parent_View @23
+ location (3774, 1891)
+ fill_color 13434879
+ nlines 1
+ max_width 372
+ justify 0
+ label "OperationType")
+ icon_style "Icon"
+ line_color 3342489
+ fill_color 13434879
+ quidu "4367C64601FD"
+ width 390
+ height 162
+ annotation 8)
+ (object AssociationViewNew "$UNNAMED$61" @24
+ location (3956, 1793)
+ stereotype TRUE
+ line_color 3342489
+ quidu "4367C65601D8"
+ roleview_list (list RoleViews
+ (object RoleView "$UNNAMED$62" @25
+ Parent_View @24
+ location (975, 69)
+ stereotype TRUE
+ line_color 3342489
+ quidu "4367C65701A7"
+ client @24
+ supplier @12
+ line_style 0)
+ (object RoleView "$UNNAMED$63" @26
+ Parent_View @24
+ location (975, 69)
+ stereotype TRUE
+ line_color 3342489
+ quidu "4367C65701A8"
+ client @24
+ supplier @23
+ line_style 0
+ label (object SegLabel @27
+ Parent_View @26
+ location (4005, 1843)
+ anchor 2
+ anchor_loc 1
+ nlines 1
+ max_width 15
+ justify 0
+ label "0..*"
+ pctDist 0.583172
+ height 48
+ orientation 0))))
+ (object ClassView "Class" "Logical View::Assembly::Binding" @28
+ ShowCompartmentStereotypes TRUE
+ IncludeAttribute TRUE
+ IncludeOperation TRUE
+ location (1659, 2077)
+ font (object Font
+ italics TRUE)
+ label (object ItemLabel
+ Parent_View @28
+ location (1505, 2008)
+ fill_color 13434879
+ nlines 1
+ max_width 308
+ justify 0
+ label "Binding")
+ icon_style "Icon"
+ line_color 3342489
+ fill_color 13434879
+ quidu "4367C18A02C3"
+ compartment (object Compartment
+ Parent_View @28
+ location (1505, 2071)
+ icon_style "Icon"
+ fill_color 13434879
+ anchor 2
+ nlines 2
+ max_width 103)
+ width 326
+ height 163
+ annotation 8)
+ (object NoteView @29
+ location (4165, 2265)
+ label (object ItemLabel
+ Parent_View @29
+ location (3990, 2190)
+ fill_color 13434879
+ nlines 3
+ max_width 315
+ label "input, output and exception types")
+ line_color 3342489
+ fill_color 13434879
+ width 375
+ height 163)
+ (object NoteView @30
+ location (4268, 1394)
+ label (object ItemLabel
+ Parent_View @30
+ location (4083, 1323)
+ fill_color 13434879
+ nlines 3
+ max_width 334
+ label "interface and callback interface")
+ line_color 3342489
+ fill_color 13434879
+ width 394
+ height 154)
+ (object ClassView "Class" "Logical View::Assembly::ModuleFragment" @31
+ ShowCompartmentStereotypes TRUE
+ IncludeAttribute TRUE
+ IncludeOperation TRUE
+ location (1370, 557)
+ label (object ItemLabel
+ Parent_View @31
+ location (1185, 477)
+ fill_color 13434879
+ nlines 1
+ max_width 371
+ justify 0
+ label "ModuleFragment")
+ icon_style "Icon"
+ line_color 3342489
+ fill_color 13434879
+ quidu "4367C50C038C"
+ width 389
+ height 184
+ annotation 8)
+ (object ClassView "Class" "Logical View::Assembly::Subsystem" @32
+ ShowCompartmentStereotypes TRUE
+ IncludeAttribute TRUE
+ IncludeOperation TRUE
+ location (322, 207)
+ label (object ItemLabel
+ Parent_View @32
+ location (86, 119)
+ fill_color 13434879
+ nlines 1
+ max_width 472
+ justify 0
+ label "Subsystem")
+ icon_style "Icon"
+ line_color 3342489
+ fill_color 13434879
+ quidu "4367C757032C"
+ compartment (object Compartment
+ Parent_View @32
+ location (86, 177)
+ icon_style "Icon"
+ fill_color 13434879
+ anchor 2
+ nlines 2
+ max_width 103)
+ width 490
+ height 201
+ annotation 8)
+ (object ClassView "Class" "Logical View::Assembly::Module" @33
+ ShowCompartmentStereotypes TRUE
+ IncludeAttribute TRUE
+ IncludeOperation TRUE
+ location (2484, 221)
+ label (object ItemLabel
+ Parent_View @33
+ location (2277, 123)
+ fill_color 13434879
+ nlines 1
+ max_width 414
+ justify 0
+ label "Module")
+ icon_style "Icon"
+ line_color 3342489
+ fill_color 13434879
+ quidu "4367C4C90079"
+ width 432
+ height 221
+ annotation 8)
+ (object AssociationViewNew "$UNNAMED$55" @34
+ location (1915, 391)
+ stereotype TRUE
+ line_color 3342489
+ quidu "4367C52701D2"
+ roleview_list (list RoleViews
+ (object RoleView "$UNNAMED$56" @35
+ Parent_View @34
+ location (89, -1440)
+ stereotype TRUE
+ line_color 3342489
+ quidu "4367C52801FC"
+ client @34
+ supplier @33
+ line_style 0)
+ (object RoleView "$UNNAMED$57" @36
+ Parent_View @34
+ location (89, -1440)
+ stereotype TRUE
+ line_color 3342489
+ quidu "4367C52801FD"
+ client @34
+ supplier @31
+ line_style 0
+ label (object SegLabel @37
+ Parent_View @36
+ location (1890, 443)
+ anchor 2
+ anchor_loc 1
+ nlines 1
+ max_width 15
+ justify 0
+ label "0..*"
+ pctDist 0.110588
+ height 43
+ orientation 0))))
+ (object ClassView "Class" "Logical View::Assembly::ModuleComponent" @38
+ ShowCompartmentStereotypes TRUE
+ IncludeAttribute TRUE
+ IncludeOperation TRUE
+ location (970, 216)
+ label (object ItemLabel
+ Parent_View @38
+ location (739, 132)
+ fill_color 13434879
+ nlines 1
+ max_width 463
+ justify 0
+ label "ModuleComponent")
+ icon_style "Icon"
+ line_color 3342489
+ fill_color 13434879
+ quidu "4367C4EA0315"
+ width 481
+ height 193
+ annotation 8)
+ (object AssociationViewNew "$UNNAMED$84" @39
+ location (648, 211)
+ stereotype TRUE
+ line_color 12632256
+ quidu "436834860263"
+ roleview_list (list RoleViews
+ (object RoleView "$UNNAMED$85" @40
+ Parent_View @39
+ location (-443, -183)
+ stereotype TRUE
+ line_color 3342489
+ quidu "436834870246"
+ client @39
+ supplier @32
+ line_style 0)
+ (object RoleView "$UNNAMED$86" @41
+ Parent_View @39
+ location (-443, -183)
+ stereotype TRUE
+ line_color 3342489
+ quidu "436834870247"
+ client @39
+ supplier @38
+ line_style 0
+ label (object SegLabel @42
+ Parent_View @41
+ location (693, 255)
+ anchor 2
+ anchor_loc 1
+ nlines 1
+ max_width 15
+ justify 0
+ label "0..*"
+ pctDist 0.549832
+ height 43
+ orientation 1))))
+ (object ClassView "Class" "Logical View::Assembly::ConfiguredModule" @43
+ ShowCompartmentStereotypes TRUE
+ IncludeAttribute TRUE
+ IncludeOperation TRUE
+ location (1686, 216)
+ label (object ItemLabel
+ Parent_View @43
+ location (1484, 146)
+ fill_color 13434879
+ nlines 1
+ max_width 405
+ justify 0
+ label "ConfiguredModule")
+ icon_style "Icon"
+ line_color 3342489
+ fill_color 13434879
+ quidu "436836780038"
+ width 423
+ height 164
+ annotation 8)
+ (object AssociationViewNew "$UNNAMED$90" @44
+ location (2082, 217)
+ stereotype TRUE
+ line_color 3342489
+ quidu "436836850218"
+ roleview_list (list RoleViews
+ (object RoleView "$UNNAMED$91" @45
+ Parent_View @44
+ location (-369, -23)
+ stereotype TRUE
+ line_color 3342489
+ quidu "43683686027D"
+ client @44
+ supplier @43
+ line_style 0)
+ (object RoleView "$UNNAMED$92" @46
+ Parent_View @44
+ location (-369, -23)
+ stereotype TRUE
+ line_color 3342489
+ quidu "43683686027E"
+ client @44
+ supplier @33
+ line_style 0
+ label (object SegLabel @47
+ Parent_View @46
+ location (2201, 251)
+ anchor 2
+ anchor_loc 1
+ nlines 1
+ max_width 15
+ justify 0
+ label "1..1"
+ pctDist 0.649262
+ height 33
+ orientation 1))))
+ (object AssociationViewNew "$UNNAMED$81" @48
+ location (1342, 216)
+ stereotype TRUE
+ line_color 12632256
+ quidu "43682F4B0394"
+ roleview_list (list RoleViews
+ (object RoleView "$UNNAMED$82" @49
+ Parent_View @48
+ location (-566, -5)
+ stereotype TRUE
+ line_color 3342489
+ quidu "43682F4D0076"
+ client @48
+ supplier @38
+ line_style 0)
+ (object RoleView "$UNNAMED$83" @50
+ Parent_View @48
+ location (-566, -5)
+ stereotype TRUE
+ line_color 3342489
+ quidu "43682F4D0077"
+ client @48
+ supplier @43
+ line_style 0
+ label (object SegLabel @51
+ Parent_View @50
+ location (1431, 183)
+ anchor 2
+ anchor_loc 1
+ nlines 1
+ max_width 15
+ justify 0
+ label "1..1"
+ pctDist 0.677064
+ height 34
+ orientation 0))))
+ (object ClassView "Class" "Logical View::Assembly::Part" @52
+ ShowCompartmentStereotypes TRUE
+ IncludeAttribute TRUE
+ IncludeOperation TRUE
+ location (282, 1734)
+ label (object ItemLabel
+ Parent_View @52
+ location (144, 1652)
+ fill_color 13434879
+ nlines 1
+ max_width 276
+ justify 0
+ label "Part")
+ icon_style "Icon"
+ line_color 3342489
+ fill_color 13434879
+ quidu "4367BFD202AC"
+ compartment (object Compartment
+ Parent_View @52
+ location (144, 1710)
+ icon_style "Icon"
+ fill_color 13434879
+ anchor 2
+ nlines 2
+ max_width 159)
+ width 294
+ height 188
+ annotation 8)
+ (object ClassView "Class" "Logical View::Assembly::ExternalService" @53
+ ShowCompartmentStereotypes TRUE
+ IncludeAttribute TRUE
+ IncludeOperation TRUE
+ location (1065, 2289)
+ label (object ItemLabel
+ Parent_View @53
+ location (887, 2205)
+ fill_color 13434879
+ nlines 1
+ max_width 357
+ justify 0
+ label "ExternalService")
+ icon_style "Icon"
+ line_color 3342489
+ fill_color 13434879
+ quidu "4367C00E009F"
+ compartment (object Compartment
+ Parent_View @53
+ location (887, 2263)
+ icon_style "Icon"
+ fill_color 13434879
+ anchor 2
+ nlines 2
+ max_width 250)
+ width 375
+ height 192
+ annotation 8)
+ (object AssociationViewNew "$UNNAMED$40" @54
+ location (1373, 2177)
+ stereotype TRUE
+ line_color 3342489
+ quidu "4367C39A0240"
+ roleview_list (list RoleViews
+ (object RoleView "$UNNAMED$41" @55
+ Parent_View @54
+ location (749, 499)
+ stereotype TRUE
+ line_color 3342489
+ quidu "4367C39B01AB"
+ client @54
+ supplier @53
+ line_style 0)
+ (object RoleView "$UNNAMED$42" @56
+ Parent_View @54
+ location (749, 499)
+ stereotype TRUE
+ line_color 3342489
+ quidu "4367C39B01AC"
+ client @54
+ supplier @28
+ line_style 0
+ label (object SegLabel @57
+ Parent_View @56
+ location (1484, 2184)
+ anchor 2
+ anchor_loc 1
+ nlines 1
+ max_width 15
+ justify 0
+ label "0..*"
+ pctDist 0.781968
+ height 45
+ orientation 1))))
+ (object InheritView "" @58
+ stereotype TRUE
+ line_color 3342489
+ quidu "4367C289032D"
+ client @53
+ supplier @52
+ vertices (list Points
+ (877, 2266)
+ (659, 2241)
+ (352, 1828))
+ line_style 0)
+ (object ClassView "Class" "Logical View::Assembly::EntryPoint" @59
+ ShowCompartmentStereotypes TRUE
+ IncludeAttribute TRUE
+ IncludeOperation TRUE
+ location (1024, 1697)
+ label (object ItemLabel
+ Parent_View @59
+ location (865, 1618)
+ fill_color 13434879
+ nlines 1
+ max_width 319
+ justify 0
+ label "EntryPoint")
+ icon_style "Icon"
+ line_color 3342489
+ fill_color 13434879
+ quidu "4367C0210101"
+ width 337
+ height 183
+ annotation 8)
+ (object AssociationViewNew "$UNNAMED$37" @60
+ location (1349, 1891)
+ stereotype TRUE
+ line_color 3342489
+ quidu "4367C396015E"
+ roleview_list (list RoleViews
+ (object RoleView "$UNNAMED$38" @61
+ Parent_View @60
+ location (725, 213)
+ stereotype TRUE
+ line_color 3342489
+ quidu "4367C39700D3"
+ client @60
+ supplier @59
+ line_style 0)
+ (object RoleView "$UNNAMED$39" @62
+ Parent_View @60
+ location (725, 213)
+ stereotype TRUE
+ line_color 3342489
+ quidu "4367C39700D4"
+ client @60
+ supplier @28
+ line_style 0
+ label (object SegLabel @63
+ Parent_View @62
+ location (1533, 1950)
+ anchor 2
+ anchor_loc 1
+ nlines 1
+ max_width 15
+ justify 0
+ label "0..*"
+ pctDist 0.928105
+ height 44
+ orientation 0))))
+ (object InheritView "" @64
+ stereotype TRUE
+ line_color 3342489
+ quidu "4367C27E030A"
+ client @59
+ supplier @52
+ line_style 0)
+ (object ClassView "Class" "Logical View::Assembly::Type" @65
+ ShowCompartmentStereotypes TRUE
+ IncludeAttribute TRUE
+ IncludeOperation TRUE
+ location (3664, 2296)
+ label (object ItemLabel
+ Parent_View @65
+ location (3557, 2247)
+ fill_color 13434879
+ nlines 1
+ max_width 214
+ justify 0
+ label "Type")
+ icon_style "Icon"
+ line_color 3342489
+ fill_color 13434879
+ quidu "4367C65D0124"
+ width 232
+ height 122
+ annotation 8)
+ (object AssociationViewNew "$UNNAMED$64" @66
+ location (3881, 2120)
+ stereotype TRUE
+ line_color 3342489
+ quidu "4367C66702F5"
+ roleview_list (list RoleViews
+ (object RoleView "$UNNAMED$65" @67
+ Parent_View @66
+ location (1247, 106)
+ stereotype TRUE
+ line_color 3342489
+ quidu "4367C6680328"
+ client @66
+ supplier @23
+ line_style 0)
+ (object RoleView "exceptionTypes" @68
+ Parent_View @66
+ location (1247, 106)
+ stereotype TRUE
+ line_color 3342489
+ quidu "4367C6680329"
+ client @66
+ supplier @65
+ vertices (list Points
+ (3881, 2120)
+ (3855, 2174)
+ (3760, 2234))
+ line_style 0
+ label (object SegLabel @69
+ Parent_View @68
+ location (3833, 2235)
+ anchor 2
+ anchor_loc 1
+ nlines 1
+ max_width 15
+ justify 0
+ label "0..*"
+ pctDist 0.653401
+ height 40
+ orientation 0))))
+ (object AttachView "" @70
+ stereotype TRUE
+ line_color 3342489
+ client @29
+ supplier @66
+ line_style 0)
+ (object AssociationViewNew "$UNNAMED$66" @71
+ location (3802, 2137)
+ stereotype TRUE
+ line_color 3342489
+ quidu "4367C66B039B"
+ roleview_list (list RoleViews
+ (object RoleView "$UNNAMED$67" @72
+ Parent_View @71
+ location (1168, 123)
+ stereotype TRUE
+ line_color 3342489
+ quidu "4367C66C02FC"
+ client @71
+ supplier @23
+ line_style 0)
+ (object RoleView "outputType" @73
+ Parent_View @71
+ location (1168, 123)
+ stereotype TRUE
+ line_color 3342489
+ quidu "4367C66C02FD"
+ client @71
+ supplier @65
+ line_style 0
+ label (object SegLabel @74
+ Parent_View @73
+ location (3759, 2156)
+ anchor 2
+ anchor_loc 1
+ nlines 1
+ max_width 15
+ justify 0
+ label "0..1"
+ pctDist 0.329806
+ height 21
+ orientation 1))))
+ (object AttachView "" @75
+ stereotype TRUE
+ line_color 3342489
+ client @29
+ supplier @71
+ line_style 0)
+ (object AssociationViewNew "$UNNAMED$68" @76
+ location (3770, 2078)
+ stereotype TRUE
+ line_color 3342489
+ quidu "4367C671033F"
+ roleview_list (list RoleViews
+ (object RoleView "$UNNAMED$69" @77
+ Parent_View @76
+ location (1136, 64)
+ stereotype TRUE
+ line_color 3342489
+ quidu "4367C6730202"
+ client @76
+ supplier @23
+ line_style 0)
+ (object RoleView "inputType" @78
+ Parent_View @76
+ location (1136, 64)
+ stereotype TRUE
+ line_color 3342489
+ quidu "4367C6730203"
+ client @76
+ supplier @65
+ vertices (list Points
+ (3770, 2078)
+ (3720, 2111)
+ (3682, 2234))
+ line_style 0
+ label (object SegLabel @79
+ Parent_View @78
+ location (3659, 2182)
+ anchor 2
+ anchor_loc 1
+ nlines 1
+ max_width 15
+ justify 0
+ label "1..1"
+ pctDist 0.773759
+ height 39
+ orientation 1))))
+ (object AttachView "" @80
+ stereotype TRUE
+ line_color 3342489
+ client @29
+ supplier @76
+ line_style 0)
+ (object ClassView "Class" "Logical View::Assembly::Property" @81
+ ShowCompartmentStereotypes TRUE
+ IncludeAttribute TRUE
+ IncludeOperation TRUE
+ location (2790, 1913)
+ label (object ItemLabel
+ Parent_View @81
+ location (2645, 1756)
+ fill_color 13434879
+ nlines 1
+ max_width 290
+ justify 0
+ label "Property")
+ icon_style "Icon"
+ line_color 3342489
+ fill_color 13434879
+ quidu "4367C2C30381"
+ compartment (object Compartment
+ Parent_View @81
+ location (2645, 1814)
+ icon_style "Icon"
+ fill_color 13434879
+ anchor 2
+ nlines 5
+ max_width 203)
+ width 308
+ height 338
+ annotation 8)
+ (object AssociationViewNew "$UNNAMED$70" @82
+ location (3245, 2112)
+ stereotype TRUE
+ line_color 3342489
+ quidu "4367C6790391"
+ roleview_list (list RoleViews
+ (object RoleView "$UNNAMED$71" @83
+ Parent_View @82
+ location (1168, 892)
+ stereotype TRUE
+ line_color 3342489
+ quidu "4367C67B0073"
+ client @82
+ supplier @65
+ line_style 0)
+ (object RoleView "$UNNAMED$72" @84
+ Parent_View @82
+ location (1168, 892)
+ stereotype TRUE
+ line_color 3342489
+ quidu "4367C67B007D"
+ client @82
+ supplier @81
+ line_style 0)))
+ (object ClassView "Class" "Logical View::Assembly::Service" @85
+ ShowCompartmentStereotypes TRUE
+ IncludeAttribute TRUE
+ IncludeOperation TRUE
+ location (3340, 846)
+ label (object ItemLabel
+ Parent_View @85
+ location (3167, 776)
+ fill_color 13434879
+ nlines 1
+ max_width 347
+ justify 0
+ label "Service")
+ icon_style "Icon"
+ line_color 3342489
+ fill_color 13434879
+ quidu "4367C2B1014A"
+ compartment (object Compartment
+ Parent_View @85
+ location (3167, 834)
+ icon_style "Icon"
+ fill_color 13434879
+ anchor 2
+ nlines 2
+ max_width 164)
+ width 365
+ height 164
+ annotation 8)
+ (object InheritView "" @86
+ stereotype TRUE
+ line_color 3342489
+ quidu "4367C5A80001"
+ client @85
+ supplier @2
+ line_style 0)
+ (object ClassView "Class" "Logical View::Assembly::Reference" @87
+ ShowCompartmentStereotypes TRUE
+ IncludeAttribute TRUE
+ IncludeOperation TRUE
+ location (3350, 1567)
+ label (object ItemLabel
+ Parent_View @87
+ location (3167, 1488)
+ fill_color 13434879
+ nlines 1
+ max_width 367
+ justify 0
+ label "Reference")
+ icon_style "Icon"
+ line_color 3342489
+ fill_color 13434879
+ quidu "4367C2B90318"
+ compartment (object Compartment
+ Parent_View @87
+ location (3167, 1546)
+ icon_style "Icon"
+ fill_color 13434879
+ anchor 2
+ nlines 2
+ max_width 253)
+ width 385
+ height 183
+ annotation 8)
+ (object InheritView "" @88
+ stereotype TRUE
+ line_color 3342489
+ quidu "4367C5AB00EC"
+ client @87
+ supplier @2
+ line_style 0)
+ (object ClassView "Class" "Logical View::Assembly::Aggregate" @89
+ ShowCompartmentStereotypes TRUE
+ IncludeAttribute TRUE
+ IncludeOperation TRUE
+ location (419, 815)
+ label (object ItemLabel
+ Parent_View @89
+ location (194, 733)
+ fill_color 13434879
+ nlines 1
+ max_width 451
+ justify 0
+ label "Aggregate")
+ icon_style "Icon"
+ line_color 3342489
+ fill_color 13434879
+ quidu "4367BFB702AD"
+ compartment (object Compartment
+ Parent_View @89
+ location (194, 791)
+ icon_style "Icon"
+ fill_color 13434879
+ anchor 2
+ nlines 2
+ max_width 159)
+ width 469
+ height 188
+ annotation 8)
+ (object AssociationViewNew "$UNNAMED$6" @90
+ location (212, 1248)
+ stereotype TRUE
+ line_color 12632256
+ quidu "4367C10E0314"
+ roleview_list (list RoleViews
+ (object RoleView "aggregate" @91
+ Parent_View @90
+ location (-1159, 723)
+ stereotype TRUE
+ line_color 3342489
+ quidu "4367C10F0348"
+ client @90
+ supplier @89
+ vertices (list Points
+ (212, 1248)
+ (174, 981)
+ (278, 909))
+ line_style 0)
+ (object RoleView "parts" @92
+ Parent_View @90
+ location (-1159, 723)
+ stereotype TRUE
+ line_color 3342489
+ quidu "4367C10F0349"
+ client @90
+ supplier @52
+ line_style 0
+ label (object SegLabel @93
+ Parent_View @92
+ location (214, 1579)
+ anchor 2
+ anchor_loc 1
+ nlines 1
+ max_width 15
+ justify 0
+ label "0..*"
+ pctDist 0.833230
+ height 45
+ orientation 1))))
+ (object AssociationViewNew "$UNNAMED$4" @94
+ location (651, 1575)
+ stereotype TRUE
+ line_color 3342489
+ quidu "4367C02F02C4"
+ roleview_list (list RoleViews
+ (object RoleView "$UNNAMED$5" @95
+ Parent_View @94
+ location (-451, 638)
+ stereotype TRUE
+ line_color 3342489
+ quidu "4367C03002ED"
+ client @94
+ supplier @89
+ vertices (list Points
+ (651, 1575)
+ (510, 1332)
+ (434, 909))
+ line_style 0)
+ (object RoleView "externalServices" @96
+ Parent_View @94
+ location (-451, 638)
+ stereotype TRUE
+ line_color 3342489
+ quidu "4367C03002EE"
+ client @94
+ supplier @53
+ line_style 0
+ label (object SegLabel @97
+ Parent_View @96
+ location (914, 2131)
+ anchor 2
+ anchor_loc 1
+ nlines 1
+ max_width 15
+ justify 0
+ label "0..*"
+ pctDist 0.858067
+ height 51
+ orientation 1))))
+ (object AssociationViewNew "$UNNAMED$0" @98
+ location (678, 1277)
+ stereotype TRUE
+ line_color 3342489
+ quidu "4367C02A0050"
+ roleview_list (list RoleViews
+ (object RoleView "$UNNAMED$1" @99
+ Parent_View @98
+ location (297, 346)
+ stereotype TRUE
+ line_color 3342489
+ quidu "4367C02A03D5"
+ client @98
+ supplier @89
+ line_style 0)
+ (object RoleView "entryPoints" @100
+ Parent_View @98
+ location (297, 346)
+ stereotype TRUE
+ line_color 3342489
+ quidu "4367C02A03D6"
+ client @98
+ supplier @59
+ vertices (list Points
+ (678, 1277)
+ (741, 1390)
+ (939, 1605))
+ line_style 0
+ label (object SegLabel @101
+ Parent_View @100
+ location (973, 1554)
+ anchor 2
+ anchor_loc 1
+ nlines 1
+ max_width 15
+ justify 0
+ label "0..*"
+ pctDist 0.965692
+ height 60
+ orientation 0))))
+ (object InheritView "" @102
+ stereotype TRUE
+ line_color 3342489
+ quidu "4367C76B03AD"
+ client @32
+ supplier @89
+ line_style 0)
+ (object InheritView "" @103
+ stereotype TRUE
+ line_color 3342489
+ quidu "4367C52000D8"
+ client @31
+ supplier @89
+ line_style 0)
+ (object ClassView "Class" "Logical View::Assembly::ConfiguredProperty" @104
+ ShowCompartmentStereotypes TRUE
+ IncludeAttribute TRUE
+ IncludeOperation TRUE
+ location (2239, 1836)
+ label (object ItemLabel
+ Parent_View @104
+ location (2047, 1771)
+ fill_color 13434879
+ nlines 1
+ max_width 385
+ justify 0
+ label "ConfiguredProperty")
+ icon_style "Icon"
+ line_color 3342489
+ fill_color 13434879
+ quidu "4367C205012F"
+ compartment (object Compartment
+ Parent_View @104
+ location (2047, 1829)
+ icon_style "Icon"
+ fill_color 13434879
+ anchor 2
+ nlines 2
+ max_width 150)
+ width 403
+ height 154
+ annotation 8)
+ (object AssociationViewNew "$UNNAMED$28" @105
+ location (2537, 1876)
+ stereotype TRUE
+ line_color 3342489
+ quidu "4367C2E901EB"
+ roleview_list (list RoleViews
+ (object RoleView "$UNNAMED$29" @106
+ Parent_View @105
+ location (1178, 683)
+ stereotype TRUE
+ line_color 3342489
+ quidu "4367C2EA020A"
+ client @105
+ supplier @81
+ line_style 0
+ label (object SegLabel @107
+ Parent_View @106
+ location (2608, 1941)
+ anchor 2
+ anchor_loc 1
+ nlines 1
+ max_width 15
+ justify 0
+ label "1..1"
+ pctDist 0.806972
+ height 55
+ orientation 1))
+ (object RoleView "$UNNAMED$30" @108
+ Parent_View @105
+ location (1178, 683)
+ stereotype TRUE
+ line_color 3342489
+ quidu "4367C2EA020B"
+ client @105
+ supplier @104
+ line_style 0)))
+ (object ClassView "Class" "Logical View::Assembly::ConfiguredService" @109
+ ShowCompartmentStereotypes TRUE
+ IncludeAttribute TRUE
+ IncludeOperation TRUE
+ location (1925, 1197)
+ label (object ItemLabel
+ Parent_View @109
+ location (1697, 1138)
+ fill_color 13434879
+ nlines 1
+ max_width 457
+ justify 0
+ label "ConfiguredService")
+ icon_style "Icon"
+ line_color 3342489
+ fill_color 13434879
+ quidu "4367C1E10105"
+ width 475
+ height 143
+ annotation 8)
+ (object AssociationViewNew "$UNNAMED$34" @110
+ location (1503, 1730)
+ stereotype TRUE
+ line_color 3342489
+ quidu "4367C3170350"
+ roleview_list (list RoleViews
+ (object RoleView "$UNNAMED$35" @111
+ Parent_View @110
+ location (223, 968)
+ stereotype TRUE
+ line_color 3342489
+ quidu "4367C319008C"
+ client @110
+ supplier @53
+ line_style 0)
+ (object RoleView "$UNNAMED$36" @112
+ Parent_View @110
+ location (223, 968)
+ stereotype TRUE
+ line_color 3342489
+ quidu "4367C319008D"
+ client @110
+ supplier @109
+ line_style 0
+ label (object SegLabel @113
+ Parent_View @112
+ location (1790, 1305)
+ anchor 2
+ anchor_loc 1
+ nlines 1
+ max_width 15
+ justify 0
+ label "1..1"
+ pctDist 0.870036
+ height 39
+ orientation 0))))
+ (object InheritView "" @114
+ stereotype TRUE
+ line_color 3342489
+ quidu "4367C5EB01DE"
+ client @109
+ supplier @1
+ line_style 0)
+ (object AssociationViewNew "$UNNAMED$75" @115
+ location (2659, 1013)
+ stereotype TRUE
+ line_color 12632256
+ quidu "4367C73A0384"
+ roleview_list (list RoleViews
+ (object RoleView "$UNNAMED$76" @116
+ Parent_View @115
+ location (1257, 535)
+ stereotype TRUE
+ line_color 3342489
+ quidu "4367C73C0020"
+ client @115
+ supplier @85
+ line_style 0
+ label (object SegLabel @117
+ Parent_View @116
+ location (3121, 954)
+ anchor 2
+ anchor_loc 1
+ nlines 1
+ max_width 15
+ justify 0
+ label "1..1"
+ pctDist 0.900000
+ height 54
+ orientation 1))
+ (object RoleView "$UNNAMED$77" @118
+ Parent_View @115
+ location (1257, 535)
+ stereotype TRUE
+ line_color 3342489
+ quidu "4367C73C0021"
+ client @115
+ supplier @109
+ line_style 0)))
+ (object ClassView "Class" "Logical View::Assembly::ConfiguredReference" @119
+ ShowCompartmentStereotypes TRUE
+ IncludeAttribute TRUE
+ IncludeOperation TRUE
+ location (2109, 1507)
+ label (object ItemLabel
+ Parent_View @119
+ location (1906, 1444)
+ fill_color 13434879
+ nlines 1
+ max_width 407
+ justify 0
+ label "ConfiguredReference")
+ icon_style "Icon"
+ line_color 3342489
+ fill_color 13434879
+ quidu "4367C1EC0011"
+ width 425
+ height 150
+ annotation 8)
+ (object AssociationViewNew "$UNNAMED$43" @120
+ location (1544, 1605)
+ stereotype TRUE
+ line_color 3342489
+ quidu "4367C39F021F"
+ roleview_list (list RoleViews
+ (object RoleView "$UNNAMED$44" @121
+ Parent_View @120
+ location (211, 636)
+ stereotype TRUE
+ line_color 3342489
+ quidu "4367C3A0031B"
+ client @120
+ supplier @59
+ line_style 0)
+ (object RoleView "$UNNAMED$45" @122
+ Parent_View @120
+ location (211, 636)
+ stereotype TRUE
+ line_color 3342489
+ quidu "4367C3A0031C"
+ client @120
+ supplier @119
+ line_style 0
+ label (object SegLabel @123
+ Parent_View @122
+ location (1842, 1587)
+ anchor 2
+ anchor_loc 1
+ nlines 1
+ max_width 15
+ justify 0
+ label "1..1"
+ pctDist 0.831865
+ height 35
+ orientation 1))))
+ (object InheritView "" @124
+ stereotype TRUE
+ line_color 3342489
+ quidu "4367C5EE02D3"
+ client @119
+ supplier @1
+ line_style 0)
+ (object AssociationViewNew "$UNNAMED$73" @125
+ location (2015, 1349)
+ stereotype TRUE
+ line_color 3342489
+ quidu "4367C6C10222"
+ roleview_list (list RoleViews
+ (object RoleView "serviceEndpoints" @126
+ Parent_View @125
+ location (728, 561)
+ stereotype TRUE
+ line_color 3342489
+ quidu "4367C6C20129"
+ client @125
+ supplier @109
+ line_style 0
+ label (object SegLabel @127
+ Parent_View @126
+ location (2032, 1282)
+ anchor 2
+ anchor_loc 1
+ nlines 1
+ max_width 15
+ justify 0
+ label "0..*"
+ pctDist 0.540799
+ height 49
+ orientation 1))
+ (object RoleView "$UNNAMED$74" @128
+ Parent_View @125
+ location (728, 561)
+ stereotype TRUE
+ line_color 3342489
+ quidu "4367C6C2012A"
+ client @125
+ supplier @119
+ line_style 0)))
+ (object AssociationViewNew "$UNNAMED$78" @129
+ location (2739, 1537)
+ stereotype TRUE
+ line_color 12632256
+ quidu "4367C740038D"
+ roleview_list (list RoleViews
+ (object RoleView "$UNNAMED$79" @130
+ Parent_View @129
+ location (1452, 749)
+ stereotype TRUE
+ line_color 3342489
+ quidu "4367C7420001"
+ client @129
+ supplier @87
+ line_style 0
+ label (object SegLabel @131
+ Parent_View @130
+ location (3112, 1609)
+ anchor 2
+ anchor_loc 1
+ nlines 1
+ max_width 15
+ justify 0
+ label "1..1"
+ pctDist 0.900000
+ height 54
+ orientation 1))
+ (object RoleView "$UNNAMED$80" @132
+ Parent_View @129
+ location (1452, 749)
+ stereotype TRUE
+ line_color 3342489
+ quidu "4367C7420002"
+ client @129
+ supplier @119
+ line_style 0)))
+ (object NoteView @133
+ location (3319, 207)
+ label (object ItemLabel
+ Parent_View @133
+ location (2990, 107)
+ fill_color 13434879
+ nlines 4
+ max_width 623
+ label "Relationships marked grey are specialized relationships derived from relationships on the base classes")
+ line_color 3342489
+ fill_color 13434879
+ width 683
+ height 212)
+ (object ClassView "Class" "Logical View::Assembly::Implementation" @134
+ ShowCompartmentStereotypes TRUE
+ IncludeAttribute TRUE
+ IncludeOperation TRUE
+ location (2382, 572)
+ font (object Font
+ italics TRUE)
+ label (object ItemLabel
+ Parent_View @134
+ location (2170, 483)
+ fill_color 13434879
+ nlines 1
+ max_width 424
+ justify 0
+ label "Implementation")
+ icon_style "Icon"
+ line_color 3342489
+ fill_color 13434879
+ quidu "436833C300FA"
+ width 442
+ height 202
+ annotation 8)
+ (object ClassView "Class" "Logical View::Assembly::Component" @135
+ ShowCompartmentStereotypes TRUE
+ IncludeAttribute TRUE
+ IncludeOperation TRUE
+ location (1048, 1236)
+ label (object ItemLabel
+ Parent_View @135
+ location (889, 1128)
+ fill_color 13434879
+ nlines 1
+ max_width 318
+ justify 0
+ label "Component")
+ icon_style "Icon"
+ line_color 3342489
+ fill_color 13434879
+ quidu "4367C00800BF"
+ width 336
+ height 240
+ annotation 8)
+ (object AssociationViewNew "$UNNAMED$2" @136
+ location (720, 1015)
+ stereotype TRUE
+ line_color 3342489
+ quidu "4367C02C025B"
+ roleview_list (list RoleViews
+ (object RoleView "$UNNAMED$3" @137
+ Parent_View @136
+ location (-4, 75)
+ stereotype TRUE
+ line_color 3342489
+ quidu "4367C02D022B"
+ client @136
+ supplier @89
+ line_style 0)
+ (object RoleView "components" @138
+ Parent_View @136
+ location (-4, 75)
+ stereotype TRUE
+ line_color 3342489
+ quidu "4367C02D022C"
+ client @136
+ supplier @135
+ line_style 0
+ label (object SegLabel @139
+ Parent_View @138
+ location (792, 1130)
+ anchor 2
+ anchor_loc 1
+ nlines 1
+ max_width 15
+ justify 0
+ label "0..*"
+ pctDist 0.647499
+ height 55
+ orientation 1))))
+ (object AssociationViewNew "$UNNAMED$13" @140
+ location (1651, 1539)
+ stereotype TRUE
+ line_color 3342489
+ quidu "4367C26D0297"
+ roleview_list (list RoleViews
+ (object RoleView "$UNNAMED$14" @141
+ Parent_View @140
+ location (292, 346)
+ stereotype TRUE
+ line_color 3342489
+ quidu "4367C26E037F"
+ client @140
+ supplier @135
+ line_style 0)
+ (object RoleView "$UNNAMED$15" @142
+ Parent_View @140
+ location (292, 346)
+ stereotype TRUE
+ line_color 3342489
+ quidu "4367C26E0380"
+ client @140
+ supplier @104
+ line_style 0
+ label (object SegLabel @143
+ Parent_View @142
+ location (2108, 1709)
+ anchor 2
+ anchor_loc 1
+ nlines 1
+ max_width 15
+ justify 0
+ label "0..*"
+ pctDist 0.989365
+ height 54
+ orientation 0))))
+ (object InheritView "" @144
+ stereotype TRUE
+ line_color 3342489
+ quidu "4367C4FA01C4"
+ client @38
+ supplier @135
+ line_style 0)
+ (object AssociationViewNew "$UNNAMED$7" @145
+ location (1451, 1216)
+ stereotype TRUE
+ line_color 3342489
+ quidu "4367C265015F"
+ roleview_list (list RoleViews
+ (object RoleView "$UNNAMED$8" @146
+ Parent_View @145
+ location (171, 454)
+ stereotype TRUE
+ line_color 3342489
+ quidu "4367C2660110"
+ client @145
+ supplier @135
+ line_style 0)
+ (object RoleView "$UNNAMED$9" @147
+ Parent_View @145
+ location (171, 454)
+ stereotype TRUE
+ line_color 3342489
+ quidu "4367C2660111"
+ client @145
+ supplier @109
+ line_style 0
+ label (object SegLabel @148
+ Parent_View @147
+ location (1623, 1246)
+ anchor 2
+ anchor_loc 1
+ nlines 1
+ max_width 15
+ justify 0
+ label "0..*"
+ pctDist 0.721799
+ height 37
+ orientation 1))))
+ (object AssociationViewNew "$UNNAMED$10" @149
+ location (1556, 1364)
+ stereotype TRUE
+ line_color 3342489
+ quidu "4367C269025F"
+ roleview_list (list RoleViews
+ (object RoleView "$UNNAMED$11" @150
+ Parent_View @149
+ location (223, 395)
+ stereotype TRUE
+ line_color 3342489
+ quidu "4367C26A026B"
+ client @149
+ supplier @135
+ line_style 0)
+ (object RoleView "$UNNAMED$12" @151
+ Parent_View @149
+ location (223, 395)
+ stereotype TRUE
+ line_color 3342489
+ quidu "4367C26A026C"
+ client @149
+ supplier @119
+ line_style 0
+ label (object SegLabel @152
+ Parent_View @151
+ location (1882, 1409)
+ anchor 2
+ anchor_loc 1
+ nlines 1
+ max_width 15
+ justify 0
+ label "0..*"
+ pctDist 0.932217
+ height 38
+ orientation 0))))
+ (object InheritView "" @153
+ stereotype TRUE
+ line_color 3342489
+ quidu "4367C286003A"
+ client @135
+ supplier @52
+ vertices (list Points
+ (879, 1242)
+ (347, 1265)
+ (294, 1639))
+ line_style 0)
+ (object ClassView "Class" "Logical View::Assembly::ComponentType" @154
+ ShowCompartmentStereotypes TRUE
+ IncludeAttribute TRUE
+ IncludeOperation TRUE
+ location (3024, 567)
+ label (object ItemLabel
+ Parent_View @154
+ location (2843, 492)
+ fill_color 13434879
+ nlines 1
+ max_width 363
+ justify 0
+ label "ComponentType")
+ icon_style "Icon"
+ line_color 3342489
+ fill_color 13434879
+ quidu "4367C2A20289"
+ width 381
+ height 175
+ annotation 8)
+ (object AssociationViewNew "$UNNAMED$25" @155
+ location (2913, 1198)
+ stereotype TRUE
+ line_color 3342489
+ quidu "4367C2DC002A"
+ roleview_list (list RoleViews
+ (object RoleView "$UNNAMED$26" @156
+ Parent_View @155
+ location (861, 27)
+ stereotype TRUE
+ line_color 3342489
+ quidu "4367C2DD0035"
+ client @155
+ supplier @154
+ line_style 0)
+ (object RoleView "$UNNAMED$27" @157
+ Parent_View @155
+ location (861, 27)
+ stereotype TRUE
+ line_color 3342489
+ quidu "4367C2DD0036"
+ client @155
+ supplier @81
+ line_style 0
+ label (object SegLabel @158
+ Parent_View @157
+ location (2881, 1698)
+ anchor 2
+ anchor_loc 1
+ nlines 1
+ max_width 15
+ justify 0
+ label "0..*"
+ pctDist 0.900000
+ height 54
+ orientation 0))))
+ (object AssociationViewNew "$UNNAMED$19" @159
+ location (3185, 708)
+ stereotype TRUE
+ line_color 3342489
+ quidu "4367C2D50200"
+ roleview_list (list RoleViews
+ (object RoleView "$UNNAMED$20" @160
+ Parent_View @159
+ location (1142, -35)
+ stereotype TRUE
+ line_color 3342489
+ quidu "4367C2D60099"
+ client @159
+ supplier @154
+ line_style 0)
+ (object RoleView "$UNNAMED$21" @161
+ Parent_View @159
+ location (1142, -35)
+ stereotype TRUE
+ line_color 3342489
+ quidu "4367C2D6009A"
+ client @159
+ supplier @85
+ line_style 0
+ label (object SegLabel @162
+ Parent_View @161
+ location (3277, 719)
+ anchor 2
+ anchor_loc 1
+ nlines 1
+ max_width 15
+ justify 0
+ label "1..*"
+ pctDist 0.900000
+ height 54
+ orientation 0))))
+ (object AssociationViewNew "$UNNAMED$22" @163
+ location (3096, 1115)
+ stereotype TRUE
+ line_color 3342489
+ quidu "4367C2D8018C"
+ roleview_list (list RoleViews
+ (object RoleView "$UNNAMED$23" @164
+ Parent_View @163
+ location (1050, 159)
+ stereotype TRUE
+ line_color 3342489
+ quidu "4367C2D9015C"
+ client @163
+ supplier @154
+ vertices (list Points
+ (3096, 1115)
+ (3067, 1063)
+ (3030, 654))
+ line_style 0)
+ (object RoleView "$UNNAMED$24" @165
+ Parent_View @163
+ location (1050, 159)
+ stereotype TRUE
+ line_color 3342489
+ quidu "4367C2D9015D"
+ client @163
+ supplier @87
+ line_style 0
+ label (object SegLabel @166
+ Parent_View @165
+ location (3324, 1414)
+ anchor 2
+ anchor_loc 1
+ nlines 1
+ max_width 15
+ justify 0
+ label "0..*"
+ pctDist 0.900000
+ height 54
+ orientation 0))))
+ (object AssociationViewNew "$UNNAMED$93" @167
+ location (2110, 983)
+ stereotype TRUE
+ line_color 12632256
+ quidu "43683779039F"
+ roleview_list (list RoleViews
+ (object RoleView "$UNNAMED$94" @168
+ Parent_View @167
+ location (1062, -253)
+ stereotype TRUE
+ line_color 3342489
+ quidu "4368377C0082"
+ client @167
+ supplier @154
+ vertices (list Points
+ (2110, 983)
+ (2771, 827)
+ (2938, 654))
+ line_style 0
+ label (object SegLabel @169
+ Parent_View @168
+ location (2844, 689)
+ anchor 2
+ anchor_loc 1
+ nlines 1
+ max_width 15
+ justify 0
+ label "1..1"
+ pctDist 0.902899
+ height 44
+ orientation 0))
+ (object RoleView "$UNNAMED$95" @170
+ Parent_View @167
+ location (1062, -253)
+ stereotype TRUE
+ line_color 3342489
+ quidu "4368377C0083"
+ client @167
+ supplier @135
+ line_style 0)))
+ (object ClassView "Class" "Logical View::Assembly::ConfiguredImplementation" @171
+ ShowCompartmentStereotypes TRUE
+ IncludeAttribute TRUE
+ IncludeOperation TRUE
+ location (1696, 889)
+ font (object Font
+ italics TRUE)
+ label (object ItemLabel
+ Parent_View @171
+ location (1441, 815)
+ fill_color 13434879
+ nlines 1
+ max_width 511
+ justify 0
+ label "ConfiguredImplementation")
+ icon_style "Icon"
+ line_color 3342489
+ fill_color 13434879
+ quidu "4367C1D70165"
+ width 529
+ height 173
+ annotation 8)
+ (object AssociationViewNew "$UNNAMED$87" @172
+ location (1985, 627)
+ stereotype TRUE
+ line_color 3342489
+ quidu "436835A101A2"
+ roleview_list (list RoleViews
+ (object RoleView "$UNNAMED$88" @173
+ Parent_View @172
+ location (-331, -195)
+ stereotype TRUE
+ line_color 3342489
+ quidu "436835A20289"
+ client @172
+ supplier @134
+ line_style 0
+ label (object SegLabel @174
+ Parent_View @173
+ location (2149, 657)
+ anchor 2
+ anchor_loc 1
+ nlines 1
+ max_width 15
+ justify 0
+ label "0..1"
+ pctDist 0.900000
+ height 54
+ orientation 1))
+ (object RoleView "$UNNAMED$89" @175
+ Parent_View @172
+ location (-331, -195)
+ stereotype TRUE
+ line_color 3342489
+ quidu "436835A2028A"
+ client @172
+ supplier @171
+ vertices (list Points
+ (1985, 627)
+ (1926, 635)
+ (1773, 802))
+ line_style 0)))
+ (object AssociationViewNew "$UNNAMED$16" @176
+ location (1375, 1060)
+ stereotype TRUE
+ line_color 3342489
+ quidu "4367C29500DC"
+ roleview_list (list RoleViews
+ (object RoleView "$UNNAMED$17" @177
+ Parent_View @176
+ location (4, -362)
+ stereotype TRUE
+ line_color 3342489
+ quidu "4367C296021E"
+ client @176
+ supplier @135
+ line_style 0)
+ (object RoleView "$UNNAMED$18" @178
+ Parent_View @176
+ location (4, -362)
+ stereotype TRUE
+ line_color 3342489
+ quidu "4367C296021F"
+ client @176
+ supplier @171
+ line_style 0
+ label (object SegLabel @179
+ Parent_View @178
+ location (1393, 996)
+ anchor 2
+ anchor_loc 1
+ nlines 1
+ max_width 15
+ justify 0
+ label "1..1"
+ pctDist 0.257075
+ height 49
+ orientation 0))))
+ (object AssociationViewNew "$UNNAMED$31" @180
+ location (2407, 787)
+ stereotype TRUE
+ line_color 3342489
+ quidu "4367C2F00000"
+ roleview_list (list RoleViews
+ (object RoleView "$UNNAMED$32" @181
+ Parent_View @180
+ location (1074, -669)
+ stereotype TRUE
+ line_color 3342489
+ quidu "4367C2F10174"
+ client @180
+ supplier @154
+ vertices (list Points
+ (2407, 787)
+ (2603, 760)
+ (2833, 653))
+ line_style 0
+ label (object SegLabel @182
+ Parent_View @181
+ location (2672, 679)
+ anchor 2
+ anchor_loc 1
+ nlines 1
+ max_width 15
+ justify 0
+ label "1..1"
+ pctDist 0.652556
+ height 46
+ orientation 0))
+ (object RoleView "$UNNAMED$33" @183
+ Parent_View @180
+ location (1074, -669)
+ stereotype TRUE
+ line_color 3342489
+ quidu "4367C2F10175"
+ client @180
+ supplier @171
+ line_style 0)))
+ (object InheritView "" @184
+ stereotype TRUE
+ line_color 3342489
+ quidu "4367C4D4009D"
+ client @33
+ supplier @89
+ vertices (list Points
+ (2267, 255)
+ (787, 500)
+ (528, 720))
+ line_style 0)
+ (object InheritView "" @185
+ stereotype TRUE
+ line_color 3342489
+ quidu "4367C4CF001D"
+ client @33
+ supplier @134
+ line_style 0)
+ (object InheritView "" @186
+ stereotype TRUE
+ line_color 3342489
+ quidu "436836C701A4"
+ client @43
+ supplier @171
+ line_style 0)
+ (object AttachView "" @187
+ stereotype TRUE
+ line_color 3342489
+ client @30
+ supplier @18
+ line_style 0)
+ (object AttachView "" @188
+ stereotype TRUE
+ line_color 3342489
+ client @30
+ supplier @13
+ vertices (list Points
+ (4070, 1360)
+ (3941, 1341)
+ (3866, 1367))
+ line_style 0))))))
+ logical_presentations (list unit_reference_list
+ (object ClassDiagram "Main"
+ quid "4367BF7F000E"
+ 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::Assembly" @189
+ location (216, 375)
+ label (object ItemLabel
+ Parent_View @189
+ location (72, 291)
+ fill_color 13434879
+ nlines 2
+ max_width 288
+ justify 0
+ label "Assembly")
+ icon_style "Icon"
+ line_color 3342489
+ fill_color 13434879
+ quidu "4367BFA901F9"
+ width 300
+ height 180)))))
+ root_subsystem (object SubSystem "Component View"
+ quid "4367BF7F0007"
+ physical_models (list unit_reference_list)
+ physical_presentations (list unit_reference_list
+ (object Module_Diagram "Main"
+ quid "4367BF7F0036"
+ 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 "4367BF7F0008"
+ ProcsNDevs (list
+ (object Process_Diagram "Deployment View"
+ quid "4367BF7F000A"
+ 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 "framework"
+ 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% %Q% %Z% %W%"))
+ (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% %Q% %Z% %W%"))
+ (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 "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 "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))
+ quid "4367BF7F0009"))
diff --git a/sca-java-1.x/tags/java-stable-20060304/sca/model/src/main/resources/model/assembly.ppt b/sca-java-1.x/tags/java-stable-20060304/sca/model/src/main/resources/model/assembly.ppt
new file mode 100644
index 0000000000..717f54a1ba
--- /dev/null
+++ b/sca-java-1.x/tags/java-stable-20060304/sca/model/src/main/resources/model/assembly.ppt
Binary files differ
diff --git a/sca-java-1.x/tags/java-stable-20060304/sca/model/src/main/resources/model/sca-binding-sca.xsd b/sca-java-1.x/tags/java-stable-20060304/sca/model/src/main/resources/model/sca-binding-sca.xsd
new file mode 100644
index 0000000000..2e379cfa59
--- /dev/null
+++ b/sca-java-1.x/tags/java-stable-20060304/sca/model/src/main/resources/model/sca-binding-sca.xsd
@@ -0,0 +1,21 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!-- (c) Copyright BEA Systems Inc. and IBM Corporation 2005 -->
+<schema xmlns="http://www.w3.org/2001/XMLSchema"
+ targetNamespace="http://www.osoa.org/xmlns/sca/0.9"
+ xmlns:sca="http://www.osoa.org/xmlns/sca/0.9"
+ elementFormDefault="qualified">
+
+ <include schemaLocation="sca-core.xsd"/>
+
+ <element name="binding.sca" type="sca:SCABinding" substitutionGroup="sca:binding"/>
+ <complexType name="SCABinding">
+ <complexContent>
+ <extension base="sca:Binding">
+ <sequence>
+ <any namespace="##other" processContents="lax" minOccurs="0" maxOccurs="unbounded"/>
+ </sequence>
+ <anyAttribute namespace="##any" processContents="lax"/>
+ </extension>
+ </complexContent>
+ </complexType>
+</schema> \ No newline at end of file
diff --git a/sca-java-1.x/tags/java-stable-20060304/sca/model/src/main/resources/model/sca-binding-webservice.xsd b/sca-java-1.x/tags/java-stable-20060304/sca/model/src/main/resources/model/sca-binding-webservice.xsd
new file mode 100644
index 0000000000..51b6458958
--- /dev/null
+++ b/sca-java-1.x/tags/java-stable-20060304/sca/model/src/main/resources/model/sca-binding-webservice.xsd
@@ -0,0 +1,22 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!-- (c) Copyright BEA Systems Inc. and IBM Corporation 2005 -->
+<schema xmlns="http://www.w3.org/2001/XMLSchema"
+ targetNamespace="http://www.osoa.org/xmlns/sca/0.9"
+ xmlns:sca="http://www.osoa.org/xmlns/sca/0.9"
+ elementFormDefault="qualified">
+
+ <include schemaLocation="sca-core.xsd"/>
+
+ <element name="binding.ws" type="sca:WebServiceBinding" substitutionGroup="sca:binding"/>
+ <complexType name="WebServiceBinding">
+ <complexContent>
+ <extension base="sca:Binding">
+ <sequence>
+ <any namespace="##other" processContents="lax" minOccurs="0" maxOccurs="unbounded"/>
+ </sequence>
+ <attribute name="port" type="anyURI" use="required"/>
+ <anyAttribute namespace="##any" processContents="lax"/>
+ </extension>
+ </complexContent>
+ </complexType>
+</schema> \ No newline at end of file
diff --git a/sca-java-1.x/tags/java-stable-20060304/sca/model/src/main/resources/model/sca-core.xsd b/sca-java-1.x/tags/java-stable-20060304/sca/model/src/main/resources/model/sca-core.xsd
new file mode 100644
index 0000000000..a9cb8582f0
--- /dev/null
+++ b/sca-java-1.x/tags/java-stable-20060304/sca/model/src/main/resources/model/sca-core.xsd
@@ -0,0 +1,225 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!-- (c) Copyright BEA Systems Inc. and IBM Corporation 2005 -->
+<schema xmlns="http://www.w3.org/2001/XMLSchema"
+ targetNamespace="http://www.osoa.org/xmlns/sca/0.9"
+ xmlns:sca="http://www.osoa.org/xmlns/sca/0.9"
+ xmlns:sdo="commonj.sdo/xml"
+ xmlns:sdojava="commonj.sdo/java"
+ sdojava:package="org.apache.tuscany.model.scdl"
+ elementFormDefault="qualified">
+
+ <element name="componentType" type="sca:ComponentType"/>
+ <complexType name="ComponentType">
+ <sequence>
+ <element minOccurs="0" maxOccurs="unbounded" name="service" type="sca:Service"/>
+ <element minOccurs="0" maxOccurs="unbounded" name="reference" type="sca:Reference"/>
+ <element minOccurs="0" maxOccurs="unbounded" name="property" type="sca:Property"/>
+ <any namespace="##other" processContents="lax" minOccurs="0" maxOccurs="unbounded"/>
+ </sequence>
+ <anyAttribute namespace="##any" processContents="lax"/>
+ </complexType>
+
+ <complexType name="Service">
+ <sequence>
+ <element minOccurs="1" maxOccurs="1" ref="sca:interface"/>
+ <any namespace="##other" processContents="lax" minOccurs="0" maxOccurs="unbounded"/>
+ </sequence>
+ <attribute name="name" type="NCName" use="required"/>
+ <anyAttribute namespace="##any" processContents="lax"/>
+ </complexType>
+
+ <element name="interface" type="sca:Interface"/>
+ <complexType name="Interface"/>
+
+ <complexType name="Reference">
+ <sequence>
+ <element minOccurs="1" maxOccurs="1" ref="sca:interface"/>
+ <any namespace="##other" processContents="lax" minOccurs="0" maxOccurs="unbounded"/>
+ </sequence>
+ <attribute name="name" type="NCName" use="required"/>
+ <attribute name="multiplicity" type="sca:Multiplicity" use="optional" default="1..1"/>
+ <anyAttribute namespace="##any" processContents="lax"/>
+ </complexType>
+
+ <complexType name="Property">
+ <sequence>
+ <any namespace="##other" processContents="lax" minOccurs="0" maxOccurs="unbounded"/>
+ </sequence>
+ <attribute name="name" type="NCName" use="required"/>
+ <attribute name="type" type="QName" use="required" sdo:name="dataType"/>
+ <attribute name="many" type="boolean" default="false" use="optional"/>
+ <attribute name="required" type="boolean" default="false" use="optional"/>
+ <attribute name="default" type="string" use="optional"/>
+ <anyAttribute namespace="##any" processContents="lax"/>
+ </complexType>
+
+
+ <element name="moduleFragment" type="sca:ModuleFragment"/>
+ <complexType name="ModuleFragment">
+ <sequence>
+ <element minOccurs="0" maxOccurs="unbounded" name="entryPoint" type="sca:EntryPoint"/>
+ <element minOccurs="0" maxOccurs="unbounded" name="component" type="sca:Component"/>
+ <element minOccurs="0" maxOccurs="unbounded" name="externalService" type="sca:ExternalService"/>
+ <element minOccurs="0" maxOccurs="unbounded" name="wire" type="sca:ModuleWire"/>
+ <!-- This is a Tuscany extension -->
+ <element minOccurs="0" maxOccurs="unbounded" name="import" type="sca:Import"/>
+ <any namespace="##other" processContents="lax" minOccurs="0" maxOccurs="unbounded"/>
+ </sequence>
+ <attribute name="name" type="NCName" use="required"/>
+ <anyAttribute namespace="##any" processContents="lax"/>
+ </complexType>
+
+ <element name="module" type="sca:Module"/>
+ <complexType name="Module">
+ <complexContent>
+ <extension base="sca:ModuleFragment"/>
+ </complexContent>
+ </complexType>
+
+ <complexType name="EntryPoint">
+ <sequence>
+ <element minOccurs="0" maxOccurs="1" ref="sca:interface"/>
+ <element minOccurs="1" maxOccurs="unbounded" ref="sca:binding"/>
+ <element minOccurs="1" maxOccurs="unbounded" name="reference" type="anyURI"/>
+ <any namespace="##other" processContents="lax" minOccurs="0" maxOccurs="unbounded"/>
+ </sequence>
+ <attribute name="name" type="NCName" use="required"/>
+ <attribute name="multiplicity" type="sca:Multiplicity" use="optional" default="1..1"/>
+ <anyAttribute namespace="##any" processContents="lax"/>
+ </complexType>
+ <!-- a multiplicity 1..1 or 0..n sample
+ <reference>StockQuoteComponent</reference> - type must be URI
+ a multiplicity 1..n or 0..n sample
+ <reference>StockQuoteComponent1</reference> - type must be URI
+ <reference>StockQuoteComponent2</reference>
+ -->
+
+ <element name="binding" type="sca:Binding"/>
+ <complexType name="Binding">
+ <attribute name="uri" type="anyURI" use="optional"/>
+ </complexType>
+
+ <complexType name="Component">
+ <sequence>
+ <element minOccurs="1" maxOccurs="1" ref="sca:implementation"/>
+ <element minOccurs="0" maxOccurs="1" name="properties" type="sca:PropertyValues"/>
+ <element minOccurs="0" maxOccurs="1" name="references" type="sca:ReferenceValues"/>
+ <any namespace="##other" processContents="lax" minOccurs="0" maxOccurs="unbounded"/>
+ </sequence>
+ <attribute name="name" type="NCName" use="required"/>
+ <anyAttribute namespace="##any" processContents="lax"/>
+ </complexType>
+ <!-- a multiplicity 1..1 or 0..1 sample
+ <references>
+ <v:stockQuote>StockQuoteComponent</v:stockquote> - type must be URI
+ </references>
+ a multiplicity 1..n or 0..n sample
+ <references>
+ <v:stockQuote>StockQuoteComponent1</v:stockQuote> - type must be URI
+ <v:stockQuote>StockQuoteComponent2</v:stockQuote>
+ </references>
+ -->
+
+ <element name="implementation" type="sca:Implementation"/>
+ <complexType name="Implementation"/>
+
+ <complexType name="PropertyValues">
+ <sequence>
+ <any namespace="##other" processContents="lax" minOccurs="0" maxOccurs="unbounded"/>
+ </sequence>
+ <anyAttribute namespace="##any" processContents="lax"/>
+ </complexType>
+
+ <complexType name="ReferenceValues">
+ <sequence>
+ <any namespace="##other" processContents="lax" minOccurs="0" maxOccurs="unbounded"/>
+ </sequence>
+ <anyAttribute namespace="##any" processContents="lax"/>
+ </complexType>
+
+
+ <complexType name="ExternalService">
+ <sequence>
+ <element minOccurs="1" maxOccurs="1" ref="sca:interface"/>
+ <element minOccurs="0" maxOccurs="unbounded" ref="sca:binding"/>
+ </sequence>
+ <attribute name="name" type="NCName" use="required"/>
+ <attribute name="overridable" type="sca:OverrideOptions" default="may" use="optional"/>
+ <anyAttribute namespace="##any" processContents="lax"/>
+ </complexType>
+
+
+ <complexType name="ModuleWire">
+ <sequence>
+ <element minOccurs="1" maxOccurs="1" ref="sca:source.uri"/>
+ <element minOccurs="1" maxOccurs="1" ref="sca:target.uri"/>
+ <any namespace="##other" processContents="lax" minOccurs="0" maxOccurs="unbounded"/>
+ </sequence>
+ <anyAttribute namespace="##any" processContents="lax"/>
+ </complexType>
+
+ <element name="source" type="anyType"/>
+ <element name="target" type="anyType"/>
+
+ <element name="source.uri" type="anyURI" substitutionGroup="sca:source"/>
+ <element name="target.uri" type="anyURI" substitutionGroup="sca:target"/>
+
+ <element name="subsystem" type="sca:Subsystem"/>
+ <complexType name="Subsystem">
+ <sequence>
+ <element minOccurs="0" maxOccurs="unbounded" name="entryPoint" type="sca:EntryPoint"/>
+ <element minOccurs="0" maxOccurs="unbounded" name="moduleComponent" type="sca:ModuleComponent"/>
+ <element minOccurs="0" maxOccurs="unbounded" name="externalService" type="sca:ExternalService"/>
+ <element minOccurs="0" maxOccurs="unbounded" name="wire" type="sca:SystemWire"/>
+ <any namespace="##other" processContents="lax" minOccurs="0" maxOccurs="unbounded"/>
+ </sequence>
+ <attribute name="name" type="NCName" use="required"/>
+ <attribute name="uri" type="anyURI" use="optional"/>
+ <anyAttribute namespace="##any" processContents="lax"/>
+ </complexType>
+
+ <complexType name="ModuleComponent">
+ <sequence>
+ <element minOccurs="0" maxOccurs="1" name="properties" type="sca:PropertyValues"/>
+ <element minOccurs="0" maxOccurs="1" name="references" type="sca:ReferenceValues"/>
+ <any namespace="##other" processContents="lax" minOccurs="0" maxOccurs="unbounded"/>
+ </sequence>
+ <attribute name="name" type="NCName" use="required"/>
+ <attribute name="module" type="NCName" use="required"/>
+ <attribute name="uri" type="anyURI" use="optional"/>
+ <anyAttribute namespace="##any" processContents="lax"/>
+ </complexType>
+
+ <complexType name="SystemWire">
+ <sequence>
+ <element minOccurs="1" maxOccurs="1" ref="sca:source"/>
+ <element minOccurs="1" maxOccurs="1" ref="sca:target"/>
+ <any namespace="##other" processContents="lax" minOccurs="0" maxOccurs="unbounded"/>
+ </sequence>
+ </complexType>
+
+ <element name="source.epr" type="anyType" substitutionGroup="sca:source"/>
+ <element name="target.epr" type="anyType" substitutionGroup="sca:target"/>
+
+ <simpleType name="Multiplicity">
+ <restriction base="string">
+ <enumeration value="0..1"/>
+ <enumeration value="1..1"/>
+ <enumeration value="0..n"/>
+ <enumeration value="1..n"/>
+ </restriction>
+ </simpleType>
+
+ <simpleType name="OverrideOptions">
+ <restriction base="string">
+ <enumeration value="no"/>
+ <enumeration value="may"/>
+ <enumeration value="must"/>
+ </restriction>
+ </simpleType>
+
+ <!-- This is a Tuscany extension -->
+ <element name="import" type="sca:Import"/>
+ <complexType name="Import"/>
+
+</schema> \ No newline at end of file
diff --git a/sca-java-1.x/tags/java-stable-20060304/sca/model/src/main/resources/model/sca-implementation-java.xsd b/sca-java-1.x/tags/java-stable-20060304/sca/model/src/main/resources/model/sca-implementation-java.xsd
new file mode 100644
index 0000000000..cf155e3dfb
--- /dev/null
+++ b/sca-java-1.x/tags/java-stable-20060304/sca/model/src/main/resources/model/sca-implementation-java.xsd
@@ -0,0 +1,22 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!-- (c) Copyright BEA Systems Inc. and IBM Corporation 2005 -->
+<schema xmlns="http://www.w3.org/2001/XMLSchema"
+ targetNamespace="http://www.osoa.org/xmlns/sca/0.9"
+ xmlns:sca="http://www.osoa.org/xmlns/sca/0.9"
+ elementFormDefault="qualified">
+
+ <include schemaLocation="sca-core.xsd"/>
+
+ <element name="implementation.java" type="sca:JavaImplementation" substitutionGroup="sca:implementation"/>
+ <complexType name="JavaImplementation">
+ <complexContent>
+ <extension base="sca:Implementation">
+ <sequence>
+ <any namespace="##other" processContents="lax" minOccurs="0" maxOccurs="unbounded"/>
+ </sequence>
+ <attribute name="class" type="NCName" use="required"/>
+ <anyAttribute namespace="##any" processContents="lax"/>
+ </extension>
+ </complexContent>
+ </complexType>
+</schema> \ No newline at end of file
diff --git a/sca-java-1.x/tags/java-stable-20060304/sca/model/src/main/resources/model/sca-interface-java.xsd b/sca-java-1.x/tags/java-stable-20060304/sca/model/src/main/resources/model/sca-interface-java.xsd
new file mode 100644
index 0000000000..b0f9aec48c
--- /dev/null
+++ b/sca-java-1.x/tags/java-stable-20060304/sca/model/src/main/resources/model/sca-interface-java.xsd
@@ -0,0 +1,23 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!-- (c) Copyright BEA Systems Inc. and IBM Corporation 2005 -->
+<schema xmlns="http://www.w3.org/2001/XMLSchema"
+ targetNamespace="http://www.osoa.org/xmlns/sca/0.9"
+ xmlns:sca="http://www.osoa.org/xmlns/sca/0.9"
+ elementFormDefault="qualified">
+
+ <include schemaLocation="sca-core.xsd"/>
+
+ <element name="interface.java" type="sca:JavaInterface" substitutionGroup="sca:interface"/>
+ <complexType name="JavaInterface">
+ <complexContent>
+ <extension base="sca:Interface">
+ <sequence>
+ <any namespace="##other" processContents="lax" minOccurs="0" maxOccurs="unbounded"/>
+ </sequence>
+ <attribute name="interface" type="NCName" use="required"/>
+ <attribute name="callbackInterface" type="NCName" use="optional"/>
+ <anyAttribute namespace="##any" processContents="lax"/>
+ </extension>
+ </complexContent>
+ </complexType>
+</schema> \ No newline at end of file
diff --git a/sca-java-1.x/tags/java-stable-20060304/sca/model/src/main/resources/model/sca-interface-wsdl.xsd b/sca-java-1.x/tags/java-stable-20060304/sca/model/src/main/resources/model/sca-interface-wsdl.xsd
new file mode 100644
index 0000000000..dd06917da5
--- /dev/null
+++ b/sca-java-1.x/tags/java-stable-20060304/sca/model/src/main/resources/model/sca-interface-wsdl.xsd
@@ -0,0 +1,39 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!-- (c) Copyright BEA Systems Inc. and IBM Corporation 2005 -->
+<schema xmlns="http://www.w3.org/2001/XMLSchema"
+ targetNamespace="http://www.osoa.org/xmlns/sca/0.9"
+ xmlns:sca="http://www.osoa.org/xmlns/sca/0.9"
+ elementFormDefault="qualified">
+
+ <include schemaLocation="sca-core.xsd"/>
+
+ <element name="interface.wsdl" type="sca:WSDLPortType" substitutionGroup="sca:interface"/>
+ <complexType name="WSDLPortType">
+ <complexContent>
+ <extension base="sca:Interface">
+ <sequence>
+ <any namespace="##other" processContents="lax" minOccurs="0" maxOccurs="unbounded"/>
+ </sequence>
+ <attribute name="interface" type="anyURI" use="required"/>
+ <attribute name="callbackInterface" type="anyURI" use="optional"/>
+ <anyAttribute namespace="##any" processContents="lax"/>
+ </extension>
+ </complexContent>
+ </complexType>
+
+ <!-- This is a Tuscany extension -->
+ <element name="import.wsdl" type="sca:WSDLImport" substitutionGroup="sca:import"/>
+ <complexType name="WSDLImport">
+ <complexContent>
+ <extension base="sca:Import">
+ <sequence>
+ <any namespace="##other" processContents="lax" minOccurs="0" maxOccurs="unbounded"/>
+ </sequence>
+ <attribute name="namespace" type="anyURI" use="required"/>
+ <attribute name="location" type="anyURI" use="required"/>
+ <anyAttribute namespace="##any" processContents="lax"/>
+ </extension>
+ </complexContent>
+ </complexType>
+
+</schema> \ No newline at end of file
diff --git a/sca-java-1.x/tags/java-stable-20060304/sca/model/src/main/resources/model/sca.xsd b/sca-java-1.x/tags/java-stable-20060304/sca/model/src/main/resources/model/sca.xsd
new file mode 100644
index 0000000000..c2438bc1d4
--- /dev/null
+++ b/sca-java-1.x/tags/java-stable-20060304/sca/model/src/main/resources/model/sca.xsd
@@ -0,0 +1,19 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!-- (c) Copyright BEA Systems Inc. and IBM Corporation 2005 -->
+<schema xmlns="http://www.w3.org/2001/XMLSchema"
+ targetNamespace="http://www.osoa.org/xmlns/sca/0.9"
+ xmlns:sdojava="commonj.sdo/java"
+ xmlns:sca="http://www.osoa.org/xmlns/sca/0.9"
+ sdojava:package="org.apache.tuscany.model.scdl">
+
+ <include schemaLocation="sca-core.xsd"/>
+
+ <include schemaLocation="sca-interface-java.xsd"/>
+ <include schemaLocation="sca-interface-wsdl.xsd"/>
+
+ <include schemaLocation="sca-implementation-java.xsd"/>
+
+ <include schemaLocation="sca-binding-webservice.xsd"/>
+ <include schemaLocation="sca-binding-sca.xsd"/>
+
+</schema> \ No newline at end of file
diff --git a/sca-java-1.x/tags/java-stable-20060304/sca/model/src/main/resources/org/apache/tuscany/model/Messages.properties b/sca-java-1.x/tags/java-stable-20060304/sca/model/src/main/resources/org/apache/tuscany/model/Messages.properties
new file mode 100644
index 0000000000..4581e44bff
--- /dev/null
+++ b/sca-java-1.x/tags/java-stable-20060304/sca/model/src/main/resources/org/apache/tuscany/model/Messages.properties
@@ -0,0 +1,25 @@
+# Copyright (c) 2005 The Apache Software Foundation or its licensors, as applicable.
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+# http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+# ====================================================================
+# To code developer:
+# Do NOT change the properties between this line and the
+# "%%% END OF TRANSLATED PROPERTIES %%%" line.
+# Make a new property name, append to the end of the file and change
+# the code to use the new property.
+# ====================================================================
+
+# =====================================================================
+# %%% END OF TRANSLATED PROPERTIES %%%
+# =====================================================================
+# NLS_MESSAGEFORMAT_ALL
diff --git a/sca-java-1.x/tags/java-stable-20060304/sca/model/src/test/java/org/apache/tuscany/model/assembly/tests/SCDLAssemblyLoaderTestCase.java b/sca-java-1.x/tags/java-stable-20060304/sca/model/src/test/java/org/apache/tuscany/model/assembly/tests/SCDLAssemblyLoaderTestCase.java
new file mode 100644
index 0000000000..482a10d0f4
--- /dev/null
+++ b/sca-java-1.x/tags/java-stable-20060304/sca/model/src/test/java/org/apache/tuscany/model/assembly/tests/SCDLAssemblyLoaderTestCase.java
@@ -0,0 +1,69 @@
+/**
+ *
+ * Copyright 2005 The Apache Software Foundation or its licensors, as applicable.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.apache.tuscany.model.assembly.tests;
+
+import junit.framework.Assert;
+import junit.framework.TestCase;
+
+import org.apache.tuscany.common.resource.ResourceLoader;
+import org.apache.tuscany.common.resource.impl.ResourceLoaderImpl;
+import org.apache.tuscany.model.assembly.AssemblyFactory;
+import org.apache.tuscany.model.assembly.AssemblyModelContext;
+import org.apache.tuscany.model.assembly.Component;
+import org.apache.tuscany.model.assembly.EntryPoint;
+import org.apache.tuscany.model.assembly.Module;
+import org.apache.tuscany.model.assembly.impl.AssemblyFactoryImpl;
+import org.apache.tuscany.model.assembly.impl.AssemblyModelContextImpl;
+import org.apache.tuscany.model.assembly.loader.AssemblyModelLoader;
+import org.apache.tuscany.model.scdl.loader.impl.SCDLAssemblyModelLoaderImpl;
+
+/**
+ */
+public class SCDLAssemblyLoaderTestCase extends TestCase {
+
+ /**
+ *
+ */
+ public SCDLAssemblyLoaderTestCase() {
+ super();
+ }
+
+ public void testLoader() {
+
+ ResourceLoader resourceLoader=new ResourceLoaderImpl(Thread.currentThread().getContextClassLoader());
+ AssemblyModelLoader assemblyLoader=new SCDLAssemblyModelLoaderImpl(null);
+ AssemblyFactory assemblyFactory=new AssemblyFactoryImpl();
+ AssemblyModelContext modelContext=new AssemblyModelContextImpl(assemblyFactory, assemblyLoader, resourceLoader);
+
+ Module module = assemblyLoader.loadModule(getClass().getResource("sca.module").toString());
+ module.initialize(modelContext);
+ Assert.assertTrue(module.getName().equals("tuscany.model.assembly.tests.bigbank.account"));
+
+ Component foundComponent=module.getComponent("AccountServiceComponent");
+ Assert.assertTrue(foundComponent!= null);
+
+ EntryPoint foundEntryPoint=module.getEntryPoint("AccountService");
+ Assert.assertTrue(foundEntryPoint!= null);
+ }
+
+ protected void setUp() throws Exception {
+ super.setUp();
+
+ Thread.currentThread().setContextClassLoader(getClass().getClassLoader());
+ }
+
+}
diff --git a/sca-java-1.x/tags/java-stable-20060304/sca/model/src/test/java/org/apache/tuscany/model/assembly/tests/SCDLXMLReaderTestCase.java b/sca-java-1.x/tags/java-stable-20060304/sca/model/src/test/java/org/apache/tuscany/model/assembly/tests/SCDLXMLReaderTestCase.java
new file mode 100644
index 0000000000..c1beac4e9a
--- /dev/null
+++ b/sca-java-1.x/tags/java-stable-20060304/sca/model/src/test/java/org/apache/tuscany/model/assembly/tests/SCDLXMLReaderTestCase.java
@@ -0,0 +1,67 @@
+/**
+ *
+ * Copyright 2005 The Apache Software Foundation or its licensors, as applicable.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.apache.tuscany.model.assembly.tests;
+
+import java.util.List;
+
+import junit.framework.Assert;
+import junit.framework.TestCase;
+
+import org.apache.tuscany.model.scdl.Component;
+import org.apache.tuscany.model.scdl.EntryPoint;
+import org.apache.tuscany.model.scdl.Module;
+import org.apache.tuscany.model.scdl.loader.impl.SCDLXMLReader;
+
+/**
+ */
+public class SCDLXMLReaderTestCase extends TestCase {
+
+ /**
+ *
+ */
+ public SCDLXMLReaderTestCase() {
+ super();
+ }
+
+ public void testLoader() {
+
+ SCDLXMLReader loader = new SCDLXMLReader();
+ Module module = loader.getModule(getClass().getResource("sca.module").toString());
+ Assert.assertTrue(module.getName().equals("tuscany.model.assembly.tests.bigbank.account"));
+
+ Component foundComponent=null;
+ for (Component component : (List<Component>)module.getComponent()) {
+ if (component.getName().equals("AccountServiceComponent"))
+ foundComponent=component;
+ }
+ Assert.assertTrue(foundComponent!= null);
+
+ EntryPoint foundEntryPoint=null;
+ for (EntryPoint entryPoint: (List<EntryPoint>)module.getEntryPoint()) {
+ if (entryPoint.getName().equals("AccountService"))
+ foundEntryPoint=entryPoint;
+ }
+ Assert.assertTrue(foundEntryPoint!= null);
+ }
+
+ protected void setUp() throws Exception {
+ super.setUp();
+
+ Thread.currentThread().setContextClassLoader(getClass().getClassLoader());
+ }
+
+}
diff --git a/sca-java-1.x/tags/java-stable-20060304/sca/model/src/test/java/org/apache/tuscany/model/assembly/tests/bigbank/account/services/account/AccountReport.java b/sca-java-1.x/tags/java-stable-20060304/sca/model/src/test/java/org/apache/tuscany/model/assembly/tests/bigbank/account/services/account/AccountReport.java
new file mode 100644
index 0000000000..b1b5913adc
--- /dev/null
+++ b/sca-java-1.x/tags/java-stable-20060304/sca/model/src/test/java/org/apache/tuscany/model/assembly/tests/bigbank/account/services/account/AccountReport.java
@@ -0,0 +1,32 @@
+/**
+ *
+ * Copyright 2005 The Apache Software Foundation or its licensors, as applicable.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.apache.tuscany.model.assembly.tests.bigbank.account.services.account;
+
+import java.util.List;
+
+/**
+ * @model
+ */
+
+public interface AccountReport {
+
+ /**
+ * @model type="services.account.AccountSummary"
+ */
+
+ List getAccountSummaries();
+}
diff --git a/sca-java-1.x/tags/java-stable-20060304/sca/model/src/test/java/org/apache/tuscany/model/assembly/tests/bigbank/account/services/account/AccountService.java b/sca-java-1.x/tags/java-stable-20060304/sca/model/src/test/java/org/apache/tuscany/model/assembly/tests/bigbank/account/services/account/AccountService.java
new file mode 100644
index 0000000000..83df13439a
--- /dev/null
+++ b/sca-java-1.x/tags/java-stable-20060304/sca/model/src/test/java/org/apache/tuscany/model/assembly/tests/bigbank/account/services/account/AccountService.java
@@ -0,0 +1,25 @@
+/**
+ *
+ * Copyright 2005 The Apache Software Foundation or its licensors, as applicable.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.apache.tuscany.model.assembly.tests.bigbank.account.services.account;
+
+import org.osoa.sca.annotations.Remotable;
+
+@Remotable
+public interface AccountService {
+
+ public AccountReport getAccountReport(String customerID);
+}
diff --git a/sca-java-1.x/tags/java-stable-20060304/sca/model/src/test/java/org/apache/tuscany/model/assembly/tests/bigbank/account/services/account/AccountService.wsdl b/sca-java-1.x/tags/java-stable-20060304/sca/model/src/test/java/org/apache/tuscany/model/assembly/tests/bigbank/account/services/account/AccountService.wsdl
new file mode 100644
index 0000000000..921218c5b9
--- /dev/null
+++ b/sca-java-1.x/tags/java-stable-20060304/sca/model/src/test/java/org/apache/tuscany/model/assembly/tests/bigbank/account/services/account/AccountService.wsdl
@@ -0,0 +1,78 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+ Copyright (c) 2005 The Apache Software Foundation or its licensors, as applicable.
+
+ Licensed under the Apache License, Version 2.0 (the "License");
+ you may not use this file except in compliance with the License.
+ You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ See the License for the specific language governing permissions and
+ limitations under the License.
+ -->
+<wsdl:definitions xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/"
+ xmlns:tns="http://www.bigbank.com/AccountService/"
+ xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/"
+ xmlns:xsd="http://www.w3.org/2001/XMLSchema"
+ targetNamespace="http://www.bigbank.com/AccountService/"
+
+ name="AccountService">
+
+ <wsdl:types>
+ <xsd:schema targetNamespace="http://www.bigbank.com/AccountService/" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
+
+ <xsd:element name="customerID" type="xsd:string"/>
+ <xsd:element name="getAccountReportResponse" type="tns:AccountReport"/>
+
+ <xsd:complexType name="AccountReport">
+ <xsd:sequence>
+ <xsd:element name="accountSummary" type="tns:AccountSummary" maxOccurs="unbounded"/>
+ </xsd:sequence>
+ </xsd:complexType>
+ <xsd:complexType name="AccountSummary">
+ <xsd:sequence>
+ <xsd:element name="accountNumber" type="xsd:string"/>
+ <xsd:element name="accountType" type="xsd:string"/>
+ <xsd:element name="balance" type="xsd:float"/>
+ </xsd:sequence>
+ </xsd:complexType>
+
+ </xsd:schema>
+ </wsdl:types>
+ <wsdl:message name="getAccountReportRequest">
+ <wsdl:part element="tns:customerID" name="getAccountReportRequest"/>
+ </wsdl:message>
+ <wsdl:message name="getAccountReportResponse">
+ <wsdl:part element="tns:getAccountReportResponse" name="getAccountReportResponse"/>
+ </wsdl:message>
+ <wsdl:portType name="AccountService">
+ <wsdl:operation name="getAccountReport">
+ <wsdl:input message="tns:getAccountReportRequest"/>
+ <wsdl:output message="tns:getAccountReportResponse"/>
+ </wsdl:operation>
+ </wsdl:portType>
+ <wsdl:binding name="AccountServiceSOAP" type="tns:AccountService">
+ <soap:binding style="document"
+ transport="http://schemas.xmlsoap.org/soap/http"/>
+ <wsdl:operation name="getAccountReport">
+ <soap:operation
+ soapAction="http://www.bigbank.com/AccountService/getAccountReport"/>
+ <wsdl:input>
+ <soap:body use="literal"/>
+ </wsdl:input>
+ <wsdl:output>
+ <soap:body use="literal"/>
+ </wsdl:output>
+ </wsdl:operation>
+ </wsdl:binding>
+ <wsdl:service name="AccountService">
+ <wsdl:port binding="tns:AccountServiceSOAP"
+ name="AccountServiceSOAP">
+ <soap:address location=""/>
+ </wsdl:port>
+ </wsdl:service>
+</wsdl:definitions>
diff --git a/sca-java-1.x/tags/java-stable-20060304/sca/model/src/test/java/org/apache/tuscany/model/assembly/tests/bigbank/account/services/account/AccountServiceImpl.java b/sca-java-1.x/tags/java-stable-20060304/sca/model/src/test/java/org/apache/tuscany/model/assembly/tests/bigbank/account/services/account/AccountServiceImpl.java
new file mode 100644
index 0000000000..a5619bb41e
--- /dev/null
+++ b/sca-java-1.x/tags/java-stable-20060304/sca/model/src/test/java/org/apache/tuscany/model/assembly/tests/bigbank/account/services/account/AccountServiceImpl.java
@@ -0,0 +1,42 @@
+/**
+ *
+ * Copyright 2005 The Apache Software Foundation or its licensors, as applicable.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.apache.tuscany.model.assembly.tests.bigbank.account.services.account;
+
+import org.osoa.sca.annotations.Property;
+import org.osoa.sca.annotations.Reference;
+
+import org.apache.tuscany.model.assembly.tests.bigbank.account.services.accountdata.AccountDataService;
+import org.apache.tuscany.model.assembly.tests.bigbank.account.services.stockquote.StockQuoteService;
+
+public class AccountServiceImpl implements AccountService {
+
+ @Property
+ public String currency = "USD";
+
+ @Reference
+ public AccountDataService accountDataService;
+ @Reference
+ public StockQuoteService stockQuoteService;
+
+ public AccountServiceImpl() {
+ }
+
+ public AccountReport getAccountReport(String customerID) {
+ return null;
+ }
+
+}
diff --git a/sca-java-1.x/tags/java-stable-20060304/sca/model/src/test/java/org/apache/tuscany/model/assembly/tests/bigbank/account/services/account/AccountSummary.java b/sca-java-1.x/tags/java-stable-20060304/sca/model/src/test/java/org/apache/tuscany/model/assembly/tests/bigbank/account/services/account/AccountSummary.java
new file mode 100644
index 0000000000..c1650c79fa
--- /dev/null
+++ b/sca-java-1.x/tags/java-stable-20060304/sca/model/src/test/java/org/apache/tuscany/model/assembly/tests/bigbank/account/services/account/AccountSummary.java
@@ -0,0 +1,46 @@
+/**
+ *
+ * Copyright 2005 The Apache Software Foundation or its licensors, as applicable.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.apache.tuscany.model.assembly.tests.bigbank.account.services.account;
+
+/**
+ * @model
+ */
+
+public interface AccountSummary {
+
+ /**
+ * @model
+ */
+ String getAccountNumber();
+
+ void setAccountNumber(String accountNumber);
+
+ /**
+ * @model
+ */
+ String getAccountType();
+
+ void setAccountType(String accountType);
+
+ /**
+ * @model
+ */
+ float getBalance();
+
+ void setBalance(float balance);
+}
+
diff --git a/sca-java-1.x/tags/java-stable-20060304/sca/model/src/test/java/org/apache/tuscany/model/assembly/tests/bigbank/account/services/accountdata/AccountDataService.java b/sca-java-1.x/tags/java-stable-20060304/sca/model/src/test/java/org/apache/tuscany/model/assembly/tests/bigbank/account/services/accountdata/AccountDataService.java
new file mode 100644
index 0000000000..04ae8e5bd5
--- /dev/null
+++ b/sca-java-1.x/tags/java-stable-20060304/sca/model/src/test/java/org/apache/tuscany/model/assembly/tests/bigbank/account/services/accountdata/AccountDataService.java
@@ -0,0 +1,26 @@
+/**
+ *
+ * Copyright 2005 The Apache Software Foundation or its licensors, as applicable.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.apache.tuscany.model.assembly.tests.bigbank.account.services.accountdata;
+
+public interface AccountDataService {
+
+ CheckingAccount getCheckingAccount(String customerID);
+
+ SavingsAccount getSavingsAccount(String customerID);
+
+ StockAccount getStockAccount(String customerID);
+}
diff --git a/sca-java-1.x/tags/java-stable-20060304/sca/model/src/test/java/org/apache/tuscany/model/assembly/tests/bigbank/account/services/accountdata/AccountDataServiceImpl.java b/sca-java-1.x/tags/java-stable-20060304/sca/model/src/test/java/org/apache/tuscany/model/assembly/tests/bigbank/account/services/accountdata/AccountDataServiceImpl.java
new file mode 100644
index 0000000000..eaf4b9486e
--- /dev/null
+++ b/sca-java-1.x/tags/java-stable-20060304/sca/model/src/test/java/org/apache/tuscany/model/assembly/tests/bigbank/account/services/accountdata/AccountDataServiceImpl.java
@@ -0,0 +1,48 @@
+/**
+ *
+ * Copyright 2005 The Apache Software Foundation or its licensors, as applicable.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.apache.tuscany.model.assembly.tests.bigbank.account.services.accountdata;
+
+public class AccountDataServiceImpl implements AccountDataService {
+
+ public CheckingAccount getCheckingAccount(String customerID) {
+
+ CheckingAccount checkingAccount = new CheckingAccount();
+ checkingAccount.setAccountNumber(customerID + "_" + "CHA12345");
+ checkingAccount.setBalance(1500.0f);
+
+ return checkingAccount;
+ }
+
+ public SavingsAccount getSavingsAccount(String customerID) {
+
+ SavingsAccount savingsAccount = new SavingsAccount();
+ savingsAccount.setAccountNumber(customerID + "_" + "SAA12345");
+ savingsAccount.setBalance(1500.0f);
+
+ return savingsAccount;
+ }
+
+ public StockAccount getStockAccount(String customerID) {
+
+ StockAccount stockAccount = new StockAccount();
+ stockAccount.setAccountNumber(customerID + "_" + "STA12345");
+ stockAccount.setSymbol("IBM");
+ stockAccount.setQuantity(100);
+
+ return stockAccount;
+ }
+}
diff --git a/sca-java-1.x/tags/java-stable-20060304/sca/model/src/test/java/org/apache/tuscany/model/assembly/tests/bigbank/account/services/accountdata/CheckingAccount.java b/sca-java-1.x/tags/java-stable-20060304/sca/model/src/test/java/org/apache/tuscany/model/assembly/tests/bigbank/account/services/accountdata/CheckingAccount.java
new file mode 100644
index 0000000000..d4f2f8be6c
--- /dev/null
+++ b/sca-java-1.x/tags/java-stable-20060304/sca/model/src/test/java/org/apache/tuscany/model/assembly/tests/bigbank/account/services/accountdata/CheckingAccount.java
@@ -0,0 +1,39 @@
+/**
+ *
+ * Copyright 2005 The Apache Software Foundation or its licensors, as applicable.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.apache.tuscany.model.assembly.tests.bigbank.account.services.accountdata;
+
+public class CheckingAccount {
+
+ private String accountNumber;
+ private float balance;
+
+ public String getAccountNumber() {
+ return accountNumber;
+ }
+
+ public void setAccountNumber(String accountNumber) {
+ this.accountNumber = accountNumber;
+ }
+
+ public float getBalance() {
+ return balance;
+ }
+
+ public void setBalance(float balance) {
+ this.balance = balance;
+ }
+}
diff --git a/sca-java-1.x/tags/java-stable-20060304/sca/model/src/test/java/org/apache/tuscany/model/assembly/tests/bigbank/account/services/accountdata/SavingsAccount.java b/sca-java-1.x/tags/java-stable-20060304/sca/model/src/test/java/org/apache/tuscany/model/assembly/tests/bigbank/account/services/accountdata/SavingsAccount.java
new file mode 100644
index 0000000000..73474585da
--- /dev/null
+++ b/sca-java-1.x/tags/java-stable-20060304/sca/model/src/test/java/org/apache/tuscany/model/assembly/tests/bigbank/account/services/accountdata/SavingsAccount.java
@@ -0,0 +1,39 @@
+/**
+ *
+ * Copyright 2005 The Apache Software Foundation or its licensors, as applicable.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.apache.tuscany.model.assembly.tests.bigbank.account.services.accountdata;
+
+public class SavingsAccount {
+
+ private String accountNumber;
+ private float balance;
+
+ public String getAccountNumber() {
+ return accountNumber;
+ }
+
+ public void setAccountNumber(String accountNumber) {
+ this.accountNumber = accountNumber;
+ }
+
+ public float getBalance() {
+ return balance;
+ }
+
+ public void setBalance(float balance) {
+ this.balance = balance;
+ }
+}
diff --git a/sca-java-1.x/tags/java-stable-20060304/sca/model/src/test/java/org/apache/tuscany/model/assembly/tests/bigbank/account/services/accountdata/StockAccount.java b/sca-java-1.x/tags/java-stable-20060304/sca/model/src/test/java/org/apache/tuscany/model/assembly/tests/bigbank/account/services/accountdata/StockAccount.java
new file mode 100644
index 0000000000..eeb7238abc
--- /dev/null
+++ b/sca-java-1.x/tags/java-stable-20060304/sca/model/src/test/java/org/apache/tuscany/model/assembly/tests/bigbank/account/services/accountdata/StockAccount.java
@@ -0,0 +1,48 @@
+/**
+ *
+ * Copyright 2005 The Apache Software Foundation or its licensors, as applicable.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.apache.tuscany.model.assembly.tests.bigbank.account.services.accountdata;
+
+public class StockAccount {
+
+ private String accountNumber;
+ private String symbol;
+ private int quantity;
+
+ public String getAccountNumber() {
+ return accountNumber;
+ }
+
+ public void setAccountNumber(String accountNumber) {
+ this.accountNumber = accountNumber;
+ }
+
+ public int getQuantity() {
+ return quantity;
+ }
+
+ public void setQuantity(int quantity) {
+ this.quantity = quantity;
+ }
+
+ public String getSymbol() {
+ return symbol;
+ }
+
+ public void setSymbol(String symbol) {
+ this.symbol = symbol;
+ }
+}
diff --git a/sca-java-1.x/tags/java-stable-20060304/sca/model/src/test/java/org/apache/tuscany/model/assembly/tests/bigbank/account/services/stockquote/StockQuoteService.java b/sca-java-1.x/tags/java-stable-20060304/sca/model/src/test/java/org/apache/tuscany/model/assembly/tests/bigbank/account/services/stockquote/StockQuoteService.java
new file mode 100644
index 0000000000..7545e9fbbb
--- /dev/null
+++ b/sca-java-1.x/tags/java-stable-20060304/sca/model/src/test/java/org/apache/tuscany/model/assembly/tests/bigbank/account/services/stockquote/StockQuoteService.java
@@ -0,0 +1,24 @@
+/**
+ *
+ * Copyright 2005 The Apache Software Foundation or its licensors, as applicable.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.apache.tuscany.model.assembly.tests.bigbank.account.services.stockquote;
+
+public interface StockQuoteService {
+
+ public float getQuote(String symbol);
+}
+
+ \ No newline at end of file
diff --git a/sca-java-1.x/tags/java-stable-20060304/sca/model/src/test/java/org/apache/tuscany/model/assembly/tests/bigbank/account/services/stockquote/StockQuoteServiceImpl.java b/sca-java-1.x/tags/java-stable-20060304/sca/model/src/test/java/org/apache/tuscany/model/assembly/tests/bigbank/account/services/stockquote/StockQuoteServiceImpl.java
new file mode 100644
index 0000000000..85f85340ec
--- /dev/null
+++ b/sca-java-1.x/tags/java-stable-20060304/sca/model/src/test/java/org/apache/tuscany/model/assembly/tests/bigbank/account/services/stockquote/StockQuoteServiceImpl.java
@@ -0,0 +1,28 @@
+/**
+ *
+ * Copyright 2005 The Apache Software Foundation or its licensors, as applicable.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.apache.tuscany.model.assembly.tests.bigbank.account.services.stockquote;
+
+/* Dummy'd up StockQuoteService, override webservice for now */
+
+public class StockQuoteServiceImpl implements StockQuoteService {
+
+ public float getQuote(String symbol) {
+ // Just hardcode for now
+ return 83.00f;
+ }
+
+} \ No newline at end of file
diff --git a/sca-java-1.x/tags/java-stable-20060304/sca/model/src/test/java/org/apache/tuscany/model/assembly/tests/bigbank/account/services/stockquote/StockQuoteWebService.wsdl b/sca-java-1.x/tags/java-stable-20060304/sca/model/src/test/java/org/apache/tuscany/model/assembly/tests/bigbank/account/services/stockquote/StockQuoteWebService.wsdl
new file mode 100644
index 0000000000..9678d9d6ea
--- /dev/null
+++ b/sca-java-1.x/tags/java-stable-20060304/sca/model/src/test/java/org/apache/tuscany/model/assembly/tests/bigbank/account/services/stockquote/StockQuoteWebService.wsdl
@@ -0,0 +1,98 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+ Copyright (c) 2005 The Apache Software Foundation or its licensors, as applicable.
+
+ Licensed under the Apache License, Version 2.0 (the "License");
+ you may not use this file except in compliance with the License.
+ You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ See the License for the specific language governing permissions and
+ limitations under the License.
+ -->
+<wsdl:definitions targetNamespace="http://webservice.stockquote" xmlns:apachesoap="http://xml.apache.org/xml-soap" xmlns:impl="http://webservice.stockquote" xmlns:intf="http://webservice.stockquote" xmlns:tns1="http://stockquote" xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/" xmlns:wsdlsoap="http://schemas.xmlsoap.org/wsdl/soap/" xmlns:xsd="http://www.w3.org/2001/XMLSchema" name="">
+ <!--WSDL created by Apache Axis version: 1.2.1
+Built on Jun 14, 2005 (09:15:57 EDT)-->
+ <wsdl:types>
+ <schema elementFormDefault="qualified" targetNamespace="http://stockquote" xmlns="http://www.w3.org/2001/XMLSchema">
+ <complexType name="GetQuoteRequest">
+ <sequence>
+ <element name="symbol" nillable="true" type="xsd:string"/>
+ </sequence>
+ </complexType>
+ <complexType name="GetQuoteResponse">
+ <sequence>
+ <element name="price" type="xsd:float"/>
+ </sequence>
+ </complexType>
+ </schema>
+ <schema elementFormDefault="qualified" targetNamespace="http://webservice.stockquote" xmlns="http://www.w3.org/2001/XMLSchema">
+ <import namespace="http://stockquote"/>
+ <element name="request" type="tns1:GetQuoteRequest"/>
+ <element name="getQuoteReturn" type="tns1:GetQuoteResponse"/>
+ </schema>
+ </wsdl:types>
+
+ <wsdl:message name="getQuoteResponse">
+
+ <wsdl:part element="impl:getQuoteReturn" name="getQuoteReturn"/>
+
+ </wsdl:message>
+
+ <wsdl:message name="getQuoteRequest">
+
+ <wsdl:part element="impl:request" name="request"/>
+
+ </wsdl:message>
+
+ <wsdl:portType name="StockQuoteWebService">
+
+ <wsdl:operation name="getQuote" parameterOrder="request">
+
+ <wsdl:input message="impl:getQuoteRequest" name="getQuoteRequest"/>
+
+ <wsdl:output message="impl:getQuoteResponse" name="getQuoteResponse"/>
+
+ </wsdl:operation>
+
+ </wsdl:portType>
+
+ <wsdl:binding name="StockQuoteWebServiceSoapBinding" type="impl:StockQuoteWebService">
+
+ <wsdlsoap:binding style="document" transport="http://schemas.xmlsoap.org/soap/http"/>
+
+ <wsdl:operation name="getQuote">
+
+ <wsdlsoap:operation soapAction=""/>
+
+ <wsdl:input name="getQuoteRequest">
+
+ <wsdlsoap:body use="literal"/>
+
+ </wsdl:input>
+
+ <wsdl:output name="getQuoteResponse">
+
+ <wsdlsoap:body use="literal"/>
+
+ </wsdl:output>
+
+ </wsdl:operation>
+
+ </wsdl:binding>
+
+ <wsdl:service name="StockQuoteWebServiceService">
+
+ <wsdl:port binding="impl:StockQuoteWebServiceSoapBinding" name="StockQuoteWebService">
+
+ <wsdlsoap:address location="http://localhost:8123/StockQuoteWebService/services/StockQuoteWebService"/>
+
+ </wsdl:port>
+
+ </wsdl:service>
+
+</wsdl:definitions>
diff --git a/sca-java-1.x/tags/java-stable-20060304/sca/model/src/test/resources/org/apache/tuscany/model/assembly/tests/sca.module b/sca-java-1.x/tags/java-stable-20060304/sca/model/src/test/resources/org/apache/tuscany/model/assembly/tests/sca.module
new file mode 100644
index 0000000000..7d81262730
--- /dev/null
+++ b/sca-java-1.x/tags/java-stable-20060304/sca/model/src/test/resources/org/apache/tuscany/model/assembly/tests/sca.module
@@ -0,0 +1,58 @@
+<?xml version="1.0" encoding="ASCII"?>
+<!--
+ Copyright (c) 2005 The Apache Software Foundation or its licensors, as applicable.
+
+ Licensed under the Apache License, Version 2.0 (the "License");
+ you may not use this file except in compliance with the License.
+ You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ See the License for the specific language governing permissions and
+ limitations under the License.
+ -->
+<module xmlns="http://www.osoa.org/xmlns/sca/0.9" xmlns:v="http://www.osoa.org/xmlns/sca/values/0.9"
+
+ name="tuscany.model.assembly.tests.bigbank.account">
+
+ <entryPoint name="AccountService">
+ <interface.java interface="org.apache.tuscany.model.assembly.tests.bigbank.account.services.account.AccountService"/>
+ <binding.ws port="http://www.bigbank.com/AccountService#AccountServiceSOAP"/>
+ <!--
+ <reference>AccountServiceComponent</reference>
+ -->
+ </entryPoint>
+
+ <component name="AccountServiceComponent">
+ <implementation.java class="org.apache.tuscany.model.assembly.tests.bigbank.account.services.account.AccountServiceImpl"/>
+ <!--
+ <properties>
+ <v:currency>EURO</v:currency>
+ </properties>
+ <references>
+ <v:accountDataService>AccountDataServiceComponent</v:accountDataService>
+ <v:stockQuoteService>StockQuoteService</v:stockQuoteService>
+ </references>
+ -->
+ </component>
+
+ <component name="AccountDataServiceComponent">
+ <implementation.java class="org.apache.tuscany.model.assembly.tests.bigbank.account.services.accountdata.AccountDataServiceImpl"/>
+ </component>
+
+ <component name="StockQuoteService">
+ <implementation.java class="org.apache.tuscany.model.assembly.tests.bigbank.account.services.stockquote.StockQuoteServiceImpl"/>
+ </component>
+
+ <!--
+ <externalService name="StockQuoteService">
+ <interface.java interface="org.apache.tuscany.model.assembly.tests.bigbank.account.services.stockquote"/>
+ <binding.ws port="http://www.quickstockquote.com/StockQuoteService#StockQuoteServiceSOAP"/>
+ </externalService>
+ -->
+
+</module>
+
diff --git a/sca-java-1.x/tags/java-stable-20060304/sca/model/src/test/resources/org/apache/tuscany/model/assembly/tests/sca.subsystem b/sca-java-1.x/tags/java-stable-20060304/sca/model/src/test/resources/org/apache/tuscany/model/assembly/tests/sca.subsystem
new file mode 100644
index 0000000000..bff90f010d
--- /dev/null
+++ b/sca-java-1.x/tags/java-stable-20060304/sca/model/src/test/resources/org/apache/tuscany/model/assembly/tests/sca.subsystem
@@ -0,0 +1,24 @@
+<?xml version="1.0" encoding="ASCII"?>
+<!--
+ Copyright (c) 2005 The Apache Software Foundation or its licensors, as applicable.
+
+ Licensed under the Apache License, Version 2.0 (the "License");
+ you may not use this file except in compliance with the License.
+ You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ See the License for the specific language governing permissions and
+ limitations under the License.
+ -->
+<subsystem xmlns="http://www.osoa.org/xmlns/sca/0.9"
+
+ name="tuscany.runtime.bigbank.account">
+
+ <moduleComponent name="AccountModuleComponent" module="tuscany.runtime.bigbank.account"/>
+
+</subsystem>
+