diff options
Diffstat (limited to 'sca-java-1.x/tags/java-stable-20060304/sca/model')
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 Binary files differnew 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 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>
+
|