--- /dev/null
+<?xml version="1.0" encoding="UTF-8"?>\r
+<classpath>\r
+ <classpathentry kind="src" path="src/main/java"/>\r
+ <classpathentry kind="src" path="src/main/resources"/>\r
+ <classpathentry kind="src" path="src/test/java"/>\r
+ <classpathentry kind="src" path="src/test/resources"/>\r
+ <classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER"/>\r
+ <classpathentry kind="con" path="org.maven.ide.eclipse.MAVEN2_CLASSPATH_CONTAINER"/>\r
+ <classpathentry kind="output" path="target/classes"/>\r
+</classpath>\r
--- /dev/null
+<?xml version="1.0" encoding="UTF-8"?>\r
+<projectDescription>\r
+ <name>org.argeo.slc</name>\r
+ <comment></comment>\r
+ <projects>\r
+ </projects>\r
+ <buildSpec>\r
+ <buildCommand>\r
+ <name>org.maven.ide.eclipse.maven2Builder</name>\r
+ <arguments>\r
+ </arguments>\r
+ </buildCommand>\r
+ <buildCommand>\r
+ <name>org.eclipse.jdt.core.javabuilder</name>\r
+ <arguments>\r
+ </arguments>\r
+ </buildCommand>\r
+ </buildSpec>\r
+ <natures>\r
+ <nature>org.eclipse.jdt.core.javanature</nature>\r
+ <nature>org.maven.ide.eclipse.maven2Nature</nature>\r
+ </natures>\r
+</projectDescription>\r
--- /dev/null
+#Sat Dec 01 11:46:50 CET 2007\r
+eclipse.preferences.version=1\r
+org.eclipse.jdt.core.builder.cleanOutputFolder=clean\r
+org.eclipse.jdt.core.builder.duplicateResourceTask=warning\r
+org.eclipse.jdt.core.builder.invalidClasspath=abort\r
+org.eclipse.jdt.core.builder.recreateModifiedClassFileInOutputFolder=ignore\r
+org.eclipse.jdt.core.builder.resourceCopyExclusionFilter=*.launch,*.testsuite,*.deploy,*.location,*.execution,*.datapool,*.artifact,package.html,*.svg\r
+org.eclipse.jdt.core.circularClasspath=error\r
+org.eclipse.jdt.core.classpath.exclusionPatterns=enabled\r
+org.eclipse.jdt.core.classpath.multipleOutputLocations=enabled\r
+org.eclipse.jdt.core.compiler.codegen.inlineJsrBytecode=enabled\r
+org.eclipse.jdt.core.compiler.codegen.targetPlatform=1.5\r
+org.eclipse.jdt.core.compiler.codegen.unusedLocal=preserve\r
+org.eclipse.jdt.core.compiler.compliance=1.5\r
+org.eclipse.jdt.core.compiler.debug.lineNumber=generate\r
+org.eclipse.jdt.core.compiler.debug.localVariable=generate\r
+org.eclipse.jdt.core.compiler.debug.sourceFile=generate\r
+org.eclipse.jdt.core.compiler.maxProblemPerUnit=100\r
+org.eclipse.jdt.core.compiler.problem.assertIdentifier=error\r
+org.eclipse.jdt.core.compiler.problem.enumIdentifier=error\r
+org.eclipse.jdt.core.compiler.source=1.5\r
+org.eclipse.jdt.core.incompatibleJDKLevel=ignore\r
+org.eclipse.jdt.core.incompleteClasspath=error\r
--- /dev/null
+<project default="basePackage">\r
+ <property name="package.version" value="0.5.1" />\r
+ <property name="package.prefix" value="argeo-slc" />\r
+\r
+ <import file="src/main/config/include/ant/slc-factory-targets.xml" />\r
+\r
+</project>
\ No newline at end of file
--- /dev/null
+<?xml version = "1.0" encoding = "UTF-8" ?>\r
+<uml version="5">\r
+ <argo version="5">\r
+ <documentation>\r
+ <authorname></authorname>\r
+ <authoremail></authoremail>\r
+ <version>0.24</version>\r
+ <description>\r
+ \r
+ </description>\r
+ </documentation>\r
+ <settings>\r
+ <notationlanguage>UML 1.4</notationlanguage>\r
+ <useguillemots>false</useguillemots>\r
+ <showvisibility>false</showvisibility>\r
+ <showmultiplicity>false</showmultiplicity>\r
+ <showinitialvalue>false</showinitialvalue>\r
+ <showproperties>false</showproperties>\r
+ <showtypes>true</showtypes>\r
+ <showstereotypes>false</showstereotypes>\r
+ <showsingularmultiplicities>true</showsingularmultiplicities>\r
+ <defaultshadowwidth>1</defaultshadowwidth>\r
+ </settings>\r
+ \r
+ <searchpath href="PROJECT_DIR" />\r
+ <member type="xmi"\r
+ name="com.capco.slc.murex.zargo.xmi" />\r
+ <member type="pgml"\r
+ name="com.capco.slc.murex.zargo_ClassDiagram1.pgml"\r
+ diagramclass="org.argouml.uml.diagram.static_structure.ui.UMLClassDiagram"\r
+ diagramname="Class Diagram 1" />\r
+ <member type="pgml"\r
+ name="com.capco.slc.murex.zargo_UseCaseDiagram1.pgml"\r
+ diagramclass="org.argouml.uml.diagram.use_case.ui.UMLUseCaseDiagram"\r
+ diagramname="Use Case Diagram 1" />\r
+ <member type="todo"\r
+ name="com.capco.slc.murex.zargo.todo" />\r
+ <historyfile name="" />\r
+ </argo>\r
+<XMI xmi.version = '1.2' xmlns:UML = 'org.omg.xmi.namespace.UML' timestamp = 'Thu Oct 11 17:57:16 CEST 2007'>\r
+ <XMI.header> <XMI.documentation>\r
+ <XMI.exporter>ArgoUML (using Netbeans XMI Writer version 1.0)</XMI.exporter>\r
+ <XMI.exporterVersion>0.24(5) revised on $Date: 2006-11-06 19:55:22 +0100 (Mon, 06 Nov 2006) $ </XMI.exporterVersion>\r
+ </XMI.documentation>\r
+ <XMI.metamodel xmi.name="UML" xmi.version="1.4"/></XMI.header>\r
+ <XMI.content>\r
+ <UML:Model xmi.id = '-64--88-1-101-3dc093e3:1157f1866b2:-8000:00000000000009EC'\r
+ name = 'untitledModel' isSpecification = 'false' isRoot = 'false' isLeaf = 'false'\r
+ isAbstract = 'false'>\r
+ <UML:Namespace.ownedElement>\r
+ <UML:Class xmi.id = '-64--88-1-101-3dc093e3:1157f1866b2:-8000:00000000000009ED'\r
+ name = 'Deployment' visibility = 'public' isSpecification = 'false' isRoot = 'false'\r
+ isLeaf = 'false' isAbstract = 'false' isActive = 'false'>\r
+ <UML:GeneralizableElement.generalization>\r
+ <UML:Generalization xmi.idref = '-64--88-1-101--4a0353a6:1158fc10f03:-8000:0000000000000A48'/>\r
+ </UML:GeneralizableElement.generalization>\r
+ </UML:Class>\r
+ <UML:Class xmi.id = '-64--88-1-101-3dc093e3:1157f1866b2:-8000:00000000000009EF'\r
+ name = 'Process' visibility = 'public' isSpecification = 'false' isRoot = 'false'\r
+ isLeaf = 'false' isAbstract = 'false' isActive = 'false'/>\r
+ <UML:Class xmi.id = '-64--88-1-101-3dc093e3:1157f1866b2:-8000:00000000000009F1'\r
+ name = 'TestRun' visibility = 'public' isSpecification = 'false' isRoot = 'false'\r
+ isLeaf = 'false' isAbstract = 'false' isActive = 'false'>\r
+ <UML:GeneralizableElement.generalization>\r
+ <UML:Generalization xmi.idref = '-64--88-1-101--4a0353a6:1158fc10f03:-8000:0000000000000A49'/>\r
+ </UML:GeneralizableElement.generalization>\r
+ </UML:Class>\r
+ <UML:Class xmi.id = '-64--88-1-101-3dc093e3:1157f1866b2:-8000:00000000000009F3'\r
+ name = 'DeployedSystemId' visibility = 'public' isSpecification = 'false'\r
+ isRoot = 'false' isLeaf = 'false' isAbstract = 'false' isActive = 'false'/>\r
+ <UML:Class xmi.id = '-64--88-1-101-3dc093e3:1157f1866b2:-8000:00000000000009F5'\r
+ name = 'DeployedSystem' visibility = 'public' isSpecification = 'false'\r
+ isRoot = 'false' isLeaf = 'false' isAbstract = 'false' isActive = 'false'/>\r
+ <UML:Class xmi.id = '-64--88-1-101-3dc093e3:1157f1866b2:-8000:00000000000009F7'\r
+ name = 'MxDeployedSystem' visibility = 'public' isSpecification = 'false'\r
+ isRoot = 'false' isLeaf = 'false' isAbstract = 'false' isActive = 'false'>\r
+ <UML:GeneralizableElement.generalization>\r
+ <UML:Generalization xmi.idref = '-64--88-1-101--4a0353a6:1158fc10f03:-8000:0000000000000A44'/>\r
+ </UML:GeneralizableElement.generalization>\r
+ <UML:Classifier.feature>\r
+ <UML:Attribute xmi.id = '-64--88-1-101-3dc093e3:1157f1866b2:-8000:00000000000009FA'\r
+ name = 'fsPort' visibility = 'public' isSpecification = 'false' ownerScope = 'instance'\r
+ changeability = 'changeable' targetScope = 'instance'>\r
+ <UML:StructuralFeature.multiplicity>\r
+ <UML:Multiplicity xmi.id = '-64--88-1-101-3dc093e3:1157f1866b2:-8000:0000000000000A00'>\r
+ <UML:Multiplicity.range>\r
+ <UML:MultiplicityRange xmi.id = '-64--88-1-101-3dc093e3:1157f1866b2:-8000:00000000000009FF'\r
+ lower = '1' upper = '1'/>\r
+ </UML:Multiplicity.range>\r
+ </UML:Multiplicity>\r
+ </UML:StructuralFeature.multiplicity>\r
+ <UML:StructuralFeature.type>\r
+ <UML:DataType xmi.idref = '-64--88-1-101-3dc093e3:1157f1866b2:-8000:00000000000009F9'/>\r
+ </UML:StructuralFeature.type>\r
+ </UML:Attribute>\r
+ <UML:Attribute xmi.id = '-64--88-1-101-3dc093e3:1157f1866b2:-8000:0000000000000A01'\r
+ name = 'xmlsPort' visibility = 'public' isSpecification = 'false' ownerScope = 'instance'\r
+ changeability = 'changeable' targetScope = 'instance'>\r
+ <UML:StructuralFeature.multiplicity>\r
+ <UML:Multiplicity xmi.id = '-64--88-1-101-3dc093e3:1157f1866b2:-8000:0000000000000A05'>\r
+ <UML:Multiplicity.range>\r
+ <UML:MultiplicityRange xmi.id = '-64--88-1-101-3dc093e3:1157f1866b2:-8000:0000000000000A04'\r
+ lower = '1' upper = '1'/>\r
+ </UML:Multiplicity.range>\r
+ </UML:Multiplicity>\r
+ </UML:StructuralFeature.multiplicity>\r
+ <UML:StructuralFeature.type>\r
+ <UML:DataType xmi.idref = '-64--88-1-101-3dc093e3:1157f1866b2:-8000:00000000000009F9'/>\r
+ </UML:StructuralFeature.type>\r
+ </UML:Attribute>\r
+ <UML:Attribute xmi.id = '-64--88-1-101-3dc093e3:1157f1866b2:-8000:0000000000000A06'\r
+ name = 'murexnetPort' visibility = 'public' isSpecification = 'false' ownerScope = 'instance'\r
+ changeability = 'changeable' targetScope = 'instance'>\r
+ <UML:StructuralFeature.multiplicity>\r
+ <UML:Multiplicity xmi.id = '-64--88-1-101-3dc093e3:1157f1866b2:-8000:0000000000000A0A'>\r
+ <UML:Multiplicity.range>\r
+ <UML:MultiplicityRange xmi.id = '-64--88-1-101-3dc093e3:1157f1866b2:-8000:0000000000000A09'\r
+ lower = '1' upper = '1'/>\r
+ </UML:Multiplicity.range>\r
+ </UML:Multiplicity>\r
+ </UML:StructuralFeature.multiplicity>\r
+ <UML:StructuralFeature.type>\r
+ <UML:DataType xmi.idref = '-64--88-1-101-3dc093e3:1157f1866b2:-8000:00000000000009F9'/>\r
+ </UML:StructuralFeature.type>\r
+ </UML:Attribute>\r
+ <UML:Attribute xmi.id = '-64--88-1-101-3dc093e3:1157f1866b2:-8000:0000000000000A0B'\r
+ name = 'installDir' visibility = 'public' isSpecification = 'false' ownerScope = 'instance'\r
+ changeability = 'changeable' targetScope = 'instance'>\r
+ <UML:StructuralFeature.multiplicity>\r
+ <UML:Multiplicity xmi.id = '-64--88-1-101-3dc093e3:1157f1866b2:-8000:0000000000000A0F'>\r
+ <UML:Multiplicity.range>\r
+ <UML:MultiplicityRange xmi.id = '-64--88-1-101-3dc093e3:1157f1866b2:-8000:0000000000000A0E'\r
+ lower = '1' upper = '1'/>\r
+ </UML:Multiplicity.range>\r
+ </UML:Multiplicity>\r
+ </UML:StructuralFeature.multiplicity>\r
+ <UML:StructuralFeature.type>\r
+ <UML:Class xmi.idref = '-64--88-1-101-3dc093e3:1157f1866b2:-8000:0000000000000A10'/>\r
+ </UML:StructuralFeature.type>\r
+ </UML:Attribute>\r
+ </UML:Classifier.feature>\r
+ </UML:Class>\r
+ <UML:DataType xmi.id = '-64--88-1-101-3dc093e3:1157f1866b2:-8000:00000000000009F9'\r
+ name = 'int' isSpecification = 'false' isRoot = 'false' isLeaf = 'false'\r
+ isAbstract = 'false'/>\r
+ <UML:Class xmi.id = '-64--88-1-101-3dc093e3:1157f1866b2:-8000:0000000000000A10'\r
+ name = 'File' visibility = 'public' isSpecification = 'false' isRoot = 'false'\r
+ isLeaf = 'false' isAbstract = 'false' isActive = 'false'/>\r
+ <UML:Class xmi.id = '-64--88-1-101-3dc093e3:1157f1866b2:-8000:0000000000000A11'\r
+ name = 'DeploymentData' visibility = 'public' isSpecification = 'false'\r
+ isRoot = 'false' isLeaf = 'false' isAbstract = 'false' isActive = 'false'/>\r
+ <UML:Class xmi.id = '-64--88-1-101-3dc093e3:1157f1866b2:-8000:0000000000000A13'\r
+ name = 'EnterpriseDeploymentData' visibility = 'public' isSpecification = 'false'\r
+ isRoot = 'false' isLeaf = 'false' isAbstract = 'false' isActive = 'false'/>\r
+ <UML:Class xmi.id = '-64--88-1-101-3dc093e3:1157f1866b2:-8000:0000000000000A15'\r
+ name = 'DistributionId' visibility = 'public' isSpecification = 'false'\r
+ isRoot = 'false' isLeaf = 'false' isAbstract = 'false' isActive = 'false'/>\r
+ <UML:Class xmi.id = '-64--88-1-101-3dc093e3:1157f1866b2:-8000:0000000000000A17'\r
+ name = 'Distribution' visibility = 'public' isSpecification = 'false' isRoot = 'false'\r
+ isLeaf = 'false' isAbstract = 'false' isActive = 'false'/>\r
+ <UML:Class xmi.id = '-64--88-1-101-3dc093e3:1157f1866b2:-8000:0000000000000A19'\r
+ name = 'MxDeploymentData' visibility = 'public' isSpecification = 'false'\r
+ isRoot = 'false' isLeaf = 'false' isAbstract = 'false' isActive = 'false'/>\r
+ <UML:Class xmi.id = '-64--88-1-101-3dc093e3:1157f1866b2:-8000:0000000000000A1B'\r
+ name = 'MxSetups' visibility = 'public' isSpecification = 'false' isRoot = 'false'\r
+ isLeaf = 'false' isAbstract = 'false' isActive = 'false'>\r
+ <UML:GeneralizableElement.generalization>\r
+ <UML:Generalization xmi.idref = '-64--88-1-101--4a0353a6:1158fc10f03:-8000:0000000000000A43'/>\r
+ </UML:GeneralizableElement.generalization>\r
+ <UML:Classifier.feature>\r
+ <UML:Attribute xmi.id = '-64--88-1-101-3dc093e3:1157f1866b2:-8000:0000000000000A1D'\r
+ name = 'primarySetupFile' visibility = 'public' isSpecification = 'false'\r
+ ownerScope = 'instance' changeability = 'changeable' targetScope = 'instance'>\r
+ <UML:StructuralFeature.multiplicity>\r
+ <UML:Multiplicity xmi.id = '-64--88-1-101-3dc093e3:1157f1866b2:-8000:0000000000000A2D'>\r
+ <UML:Multiplicity.range>\r
+ <UML:MultiplicityRange xmi.id = '-64--88-1-101-3dc093e3:1157f1866b2:-8000:0000000000000A2C'\r
+ lower = '1' upper = '1'/>\r
+ </UML:Multiplicity.range>\r
+ </UML:Multiplicity>\r
+ </UML:StructuralFeature.multiplicity>\r
+ <UML:StructuralFeature.type>\r
+ <UML:Class xmi.idref = '-64--88-1-101-3dc093e3:1157f1866b2:-8000:0000000000000A10'/>\r
+ </UML:StructuralFeature.type>\r
+ </UML:Attribute>\r
+ <UML:Attribute xmi.id = '-64--88-1-101-3dc093e3:1157f1866b2:-8000:0000000000000A2E'\r
+ name = 'secondarySetupFile' visibility = 'public' isSpecification = 'false'\r
+ ownerScope = 'instance' changeability = 'changeable' targetScope = 'instance'>\r
+ <UML:StructuralFeature.multiplicity>\r
+ <UML:Multiplicity xmi.id = '-64--88-1-101-3dc093e3:1157f1866b2:-8000:0000000000000A36'>\r
+ <UML:Multiplicity.range>\r
+ <UML:MultiplicityRange xmi.id = '-64--88-1-101-3dc093e3:1157f1866b2:-8000:0000000000000A35'\r
+ lower = '1' upper = '1'/>\r
+ </UML:Multiplicity.range>\r
+ </UML:Multiplicity>\r
+ </UML:StructuralFeature.multiplicity>\r
+ <UML:StructuralFeature.type>\r
+ <UML:Class xmi.idref = '-64--88-1-101-3dc093e3:1157f1866b2:-8000:0000000000000A10'/>\r
+ </UML:StructuralFeature.type>\r
+ </UML:Attribute>\r
+ <UML:Attribute xmi.id = '-64--88-1-101-3dc093e3:1157f1866b2:-8000:0000000000000A37'\r
+ name = 'clientSetupFile' visibility = 'public' isSpecification = 'false'\r
+ ownerScope = 'instance' changeability = 'changeable' targetScope = 'instance'>\r
+ <UML:StructuralFeature.multiplicity>\r
+ <UML:Multiplicity xmi.id = '-64--88-1-101-3dc093e3:1157f1866b2:-8000:0000000000000A3F'>\r
+ <UML:Multiplicity.range>\r
+ <UML:MultiplicityRange xmi.id = '-64--88-1-101-3dc093e3:1157f1866b2:-8000:0000000000000A3E'\r
+ lower = '1' upper = '1'/>\r
+ </UML:Multiplicity.range>\r
+ </UML:Multiplicity>\r
+ </UML:StructuralFeature.multiplicity>\r
+ <UML:StructuralFeature.type>\r
+ <UML:Class xmi.idref = '-64--88-1-101-3dc093e3:1157f1866b2:-8000:0000000000000A10'/>\r
+ </UML:StructuralFeature.type>\r
+ </UML:Attribute>\r
+ </UML:Classifier.feature>\r
+ </UML:Class>\r
+ <UML:Class xmi.id = '-64--88-1-101-3dc093e3:1157f1866b2:-8000:0000000000000A40'\r
+ name = 'MxBuildId' visibility = 'public' isSpecification = 'false' isRoot = 'false'\r
+ isLeaf = 'false' isAbstract = 'false' isActive = 'false'>\r
+ <UML:GeneralizableElement.generalization>\r
+ <UML:Generalization xmi.idref = '-64--88-1-101--4a0353a6:1158fc10f03:-8000:0000000000000A42'/>\r
+ </UML:GeneralizableElement.generalization>\r
+ <UML:Classifier.feature>\r
+ <UML:Attribute xmi.id = '-64--88-1-101-3dc093e3:1157f1866b2:-8000:0000000000000A57'\r
+ name = 'changeList' visibility = 'public' isSpecification = 'false' ownerScope = 'instance'\r
+ changeability = 'changeable' targetScope = 'instance'>\r
+ <UML:StructuralFeature.multiplicity>\r
+ <UML:Multiplicity xmi.id = '-64--88-1-101-3dc093e3:1157f1866b2:-8000:0000000000000A5D'>\r
+ <UML:Multiplicity.range>\r
+ <UML:MultiplicityRange xmi.id = '-64--88-1-101-3dc093e3:1157f1866b2:-8000:0000000000000A5C'\r
+ lower = '1' upper = '1'/>\r
+ </UML:Multiplicity.range>\r
+ </UML:Multiplicity>\r
+ </UML:StructuralFeature.multiplicity>\r
+ <UML:StructuralFeature.type>\r
+ <UML:DataType xmi.idref = '-64--88-1-101-3dc093e3:1157f1866b2:-8000:0000000000000A5E'/>\r
+ </UML:StructuralFeature.type>\r
+ </UML:Attribute>\r
+ <UML:Attribute xmi.id = '-64--88-1-101-3dc093e3:1157f1866b2:-8000:0000000000000A5F'\r
+ name = 'buildDate' visibility = 'public' isSpecification = 'false' ownerScope = 'instance'\r
+ changeability = 'changeable' targetScope = 'instance'>\r
+ <UML:StructuralFeature.multiplicity>\r
+ <UML:Multiplicity xmi.id = '-64--88-1-101-3dc093e3:1157f1866b2:-8000:0000000000000A6C'>\r
+ <UML:Multiplicity.range>\r
+ <UML:MultiplicityRange xmi.id = '-64--88-1-101-3dc093e3:1157f1866b2:-8000:0000000000000A6B'\r
+ lower = '1' upper = '1'/>\r
+ </UML:Multiplicity.range>\r
+ </UML:Multiplicity>\r
+ </UML:StructuralFeature.multiplicity>\r
+ <UML:StructuralFeature.type>\r
+ <UML:Class xmi.idref = '-64--88-1-101-3dc093e3:1157f1866b2:-8000:0000000000000A6F'/>\r
+ </UML:StructuralFeature.type>\r
+ </UML:Attribute>\r
+ <UML:Attribute xmi.id = '-64--88-1-101-3dc093e3:1157f1866b2:-8000:0000000000000A64'\r
+ name = 'UID' visibility = 'public' isSpecification = 'false' ownerScope = 'instance'\r
+ changeability = 'changeable' targetScope = 'instance'>\r
+ <UML:StructuralFeature.multiplicity>\r
+ <UML:Multiplicity xmi.id = '-64--88-1-101-3dc093e3:1157f1866b2:-8000:0000000000000A75'>\r
+ <UML:Multiplicity.range>\r
+ <UML:MultiplicityRange xmi.id = '-64--88-1-101-3dc093e3:1157f1866b2:-8000:0000000000000A74'\r
+ lower = '1' upper = '1'/>\r
+ </UML:Multiplicity.range>\r
+ </UML:Multiplicity>\r
+ </UML:StructuralFeature.multiplicity>\r
+ <UML:StructuralFeature.type>\r
+ <UML:DataType xmi.idref = '-64--88-1-101-3dc093e3:1157f1866b2:-8000:0000000000000A5E'/>\r
+ </UML:StructuralFeature.type>\r
+ </UML:Attribute>\r
+ <UML:Operation xmi.id = '-64--88-1-101-3dc093e3:1157f1866b2:-8000:0000000000000A77'\r
+ name = 'serialize' visibility = 'public' isSpecification = 'false' ownerScope = 'instance'\r
+ isQuery = 'false' concurrency = 'sequential' isRoot = 'false' isLeaf = 'false'\r
+ isAbstract = 'false'>\r
+ <UML:BehavioralFeature.parameter>\r
+ <UML:Parameter xmi.id = '-64--88-1-101-3dc093e3:1157f1866b2:-8000:0000000000000A78'\r
+ name = 'return' isSpecification = 'false' kind = 'return'>\r
+ <UML:Parameter.type>\r
+ <UML:Class xmi.idref = '-64--88-1-101-3dc093e3:1157f1866b2:-8000:0000000000000A7A'/>\r
+ </UML:Parameter.type>\r
+ </UML:Parameter>\r
+ </UML:BehavioralFeature.parameter>\r
+ </UML:Operation>\r
+ <UML:Operation xmi.id = '-64--88-1-101-3dc093e3:1157f1866b2:-8000:0000000000000A7B'\r
+ name = 'newOperation' visibility = 'public' isSpecification = 'false' ownerScope = 'instance'\r
+ isQuery = 'false' concurrency = 'sequential' isRoot = 'false' isLeaf = 'false'\r
+ isAbstract = 'false'>\r
+ <UML:BehavioralFeature.parameter>\r
+ <UML:Parameter xmi.id = '-64--88-1-101-3dc093e3:1157f1866b2:-8000:0000000000000A7C'\r
+ name = 'return' isSpecification = 'false' kind = 'return'>\r
+ <UML:Parameter.type>\r
+ <UML:DataType xmi.idref = '-64--88-1-101-3dc093e3:1157f1866b2:-8000:0000000000000A76'/>\r
+ </UML:Parameter.type>\r
+ </UML:Parameter>\r
+ </UML:BehavioralFeature.parameter>\r
+ </UML:Operation>\r
+ </UML:Classifier.feature>\r
+ </UML:Class>\r
+ <UML:Class xmi.id = '-64--88-1-101-3dc093e3:1157f1866b2:-8000:0000000000000A42'\r
+ name = 'MxDeployment' visibility = 'public' isSpecification = 'false' isRoot = 'false'\r
+ isLeaf = 'false' isAbstract = 'false' isActive = 'false'/>\r
+ <UML:Class xmi.id = '-64--88-1-101-3dc093e3:1157f1866b2:-8000:0000000000000A44'\r
+ name = 'CapCoTestRun' visibility = 'public' isSpecification = 'false' isRoot = 'false'\r
+ isLeaf = 'false' isAbstract = 'false' isActive = 'false'>\r
+ <UML:GeneralizableElement.generalization>\r
+ <UML:Generalization xmi.idref = '-64--88-1-101--4a0353a6:1158fc10f03:-8000:0000000000000A46'/>\r
+ </UML:GeneralizableElement.generalization>\r
+ </UML:Class>\r
+ <UML:Class xmi.id = '-64--88-1-101-3dc093e3:1157f1866b2:-8000:0000000000000A46'\r
+ name = 'MxXmlTestRun' visibility = 'public' isSpecification = 'false' isRoot = 'false'\r
+ isLeaf = 'false' isAbstract = 'false' isActive = 'false'>\r
+ <UML:GeneralizableElement.generalization>\r
+ <UML:Generalization xmi.idref = '-64--88-1-101--4a0353a6:1158fc10f03:-8000:0000000000000A47'/>\r
+ </UML:GeneralizableElement.generalization>\r
+ </UML:Class>\r
+ <UML:Association xmi.id = '-64--88-1-101-3dc093e3:1157f1866b2:-8000:0000000000000A50'\r
+ name = '' isSpecification = 'false' isRoot = 'false' isLeaf = 'false' isAbstract = 'false'>\r
+ <UML:Association.connection>\r
+ <UML:AssociationEnd xmi.id = '-64--88-1-101-3dc093e3:1157f1866b2:-8000:0000000000000A51'\r
+ visibility = 'public' isSpecification = 'false' isNavigable = 'false' ordering = 'unordered'\r
+ aggregation = 'none' targetScope = 'instance' changeability = 'changeable'>\r
+ <UML:AssociationEnd.multiplicity>\r
+ <UML:Multiplicity xmi.id = '-64--88-1-101-3dc093e3:1157f1866b2:-8000:0000000000000A52'>\r
+ <UML:Multiplicity.range>\r
+ <UML:MultiplicityRange xmi.id = '-64--88-1-101-3dc093e3:1157f1866b2:-8000:0000000000000A53'\r
+ lower = '1' upper = '1'/>\r
+ </UML:Multiplicity.range>\r
+ </UML:Multiplicity>\r
+ </UML:AssociationEnd.multiplicity>\r
+ <UML:AssociationEnd.participant>\r
+ <UML:Class xmi.idref = '-64--88-1-101-3dc093e3:1157f1866b2:-8000:0000000000000A17'/>\r
+ </UML:AssociationEnd.participant>\r
+ </UML:AssociationEnd>\r
+ <UML:AssociationEnd xmi.id = '-64--88-1-101-3dc093e3:1157f1866b2:-8000:0000000000000A54'\r
+ visibility = 'public' isSpecification = 'false' isNavigable = 'true' ordering = 'unordered'\r
+ aggregation = 'none' targetScope = 'instance' changeability = 'changeable'>\r
+ <UML:AssociationEnd.multiplicity>\r
+ <UML:Multiplicity xmi.id = '-64--88-1-101-3dc093e3:1157f1866b2:-8000:0000000000000A55'>\r
+ <UML:Multiplicity.range>\r
+ <UML:MultiplicityRange xmi.id = '-64--88-1-101-3dc093e3:1157f1866b2:-8000:0000000000000A56'\r
+ lower = '1' upper = '1'/>\r
+ </UML:Multiplicity.range>\r
+ </UML:Multiplicity>\r
+ </UML:AssociationEnd.multiplicity>\r
+ <UML:AssociationEnd.participant>\r
+ <UML:Class xmi.idref = '-64--88-1-101-3dc093e3:1157f1866b2:-8000:0000000000000A15'/>\r
+ </UML:AssociationEnd.participant>\r
+ </UML:AssociationEnd>\r
+ </UML:Association.connection>\r
+ </UML:Association>\r
+ <UML:DataType xmi.id = '-64--88-1-101-3dc093e3:1157f1866b2:-8000:0000000000000A5E'\r
+ name = 'long' isSpecification = 'false' isRoot = 'false' isLeaf = 'false'\r
+ isAbstract = 'false'/>\r
+ <UML:Package xmi.id = '-64--88-1-101-3dc093e3:1157f1866b2:-8000:0000000000000A6D'\r
+ name = 'java' isSpecification = 'false' isRoot = 'false' isLeaf = 'false'\r
+ isAbstract = 'false'>\r
+ <UML:Namespace.ownedElement>\r
+ <UML:Package xmi.id = '-64--88-1-101-3dc093e3:1157f1866b2:-8000:0000000000000A6E'\r
+ name = 'util' isSpecification = 'false' isRoot = 'false' isLeaf = 'false'\r
+ isAbstract = 'false'>\r
+ <UML:Namespace.ownedElement>\r
+ <UML:Class xmi.id = '-64--88-1-101-3dc093e3:1157f1866b2:-8000:0000000000000A6F'\r
+ name = 'Date' isSpecification = 'false' isRoot = 'false' isLeaf = 'false'\r
+ isAbstract = 'false' isActive = 'false'/>\r
+ </UML:Namespace.ownedElement>\r
+ </UML:Package>\r
+ <UML:Package xmi.id = '-64--88-1-101-3dc093e3:1157f1866b2:-8000:0000000000000A79'\r
+ name = 'lang' isSpecification = 'false' isRoot = 'false' isLeaf = 'false'\r
+ isAbstract = 'false'>\r
+ <UML:Namespace.ownedElement>\r
+ <UML:Class xmi.id = '-64--88-1-101-3dc093e3:1157f1866b2:-8000:0000000000000A7A'\r
+ name = 'String' isSpecification = 'false' isRoot = 'false' isLeaf = 'false'\r
+ isAbstract = 'false' isActive = 'false'/>\r
+ </UML:Namespace.ownedElement>\r
+ </UML:Package>\r
+ </UML:Namespace.ownedElement>\r
+ </UML:Package>\r
+ <UML:DataType xmi.id = '-64--88-1-101-3dc093e3:1157f1866b2:-8000:0000000000000A76'\r
+ name = 'void' isSpecification = 'false' isRoot = 'false' isLeaf = 'false'\r
+ isAbstract = 'false'/>\r
+ <UML:Association xmi.id = '-64--88-1-101--7f8968dd:1157f72a2bb:-8000:0000000000000A13'\r
+ name = '' isSpecification = 'false' isRoot = 'false' isLeaf = 'false' isAbstract = 'false'>\r
+ <UML:Association.connection>\r
+ <UML:AssociationEnd xmi.id = '-64--88-1-101--7f8968dd:1157f72a2bb:-8000:0000000000000A14'\r
+ visibility = 'public' isSpecification = 'false' isNavigable = 'false' ordering = 'unordered'\r
+ aggregation = 'none' targetScope = 'instance' changeability = 'changeable'>\r
+ <UML:AssociationEnd.multiplicity>\r
+ <UML:Multiplicity xmi.id = '-64--88-1-101--7f8968dd:1157f72a2bb:-8000:0000000000000A3B'>\r
+ <UML:Multiplicity.range>\r
+ <UML:MultiplicityRange xmi.id = '-64--88-1-101--7f8968dd:1157f72a2bb:-8000:0000000000000A3A'\r
+ lower = '0' upper = '-1'/>\r
+ </UML:Multiplicity.range>\r
+ </UML:Multiplicity>\r
+ </UML:AssociationEnd.multiplicity>\r
+ <UML:AssociationEnd.participant>\r
+ <UML:Class xmi.idref = '-64--88-1-101-3dc093e3:1157f1866b2:-8000:00000000000009ED'/>\r
+ </UML:AssociationEnd.participant>\r
+ </UML:AssociationEnd>\r
+ <UML:AssociationEnd xmi.id = '-64--88-1-101--7f8968dd:1157f72a2bb:-8000:0000000000000A17'\r
+ visibility = 'public' isSpecification = 'false' isNavigable = 'true' ordering = 'unordered'\r
+ aggregation = 'none' targetScope = 'instance' changeability = 'changeable'>\r
+ <UML:AssociationEnd.multiplicity>\r
+ <UML:Multiplicity xmi.id = '-64--88-1-101--7f8968dd:1157f72a2bb:-8000:0000000000000A18'>\r
+ <UML:Multiplicity.range>\r
+ <UML:MultiplicityRange xmi.id = '-64--88-1-101--7f8968dd:1157f72a2bb:-8000:0000000000000A19'\r
+ lower = '1' upper = '1'/>\r
+ </UML:Multiplicity.range>\r
+ </UML:Multiplicity>\r
+ </UML:AssociationEnd.multiplicity>\r
+ <UML:AssociationEnd.participant>\r
+ <UML:Class xmi.idref = '-64--88-1-101-3dc093e3:1157f1866b2:-8000:0000000000000A17'/>\r
+ </UML:AssociationEnd.participant>\r
+ </UML:AssociationEnd>\r
+ </UML:Association.connection>\r
+ </UML:Association>\r
+ <UML:Association xmi.id = '-64--88-1-101--7f8968dd:1157f72a2bb:-8000:0000000000000A1A'\r
+ name = '' isSpecification = 'false' isRoot = 'false' isLeaf = 'false' isAbstract = 'false'>\r
+ <UML:Association.connection>\r
+ <UML:AssociationEnd xmi.id = '-64--88-1-101--7f8968dd:1157f72a2bb:-8000:0000000000000A1B'\r
+ visibility = 'public' isSpecification = 'false' isNavigable = 'false' ordering = 'unordered'\r
+ aggregation = 'none' targetScope = 'instance' changeability = 'changeable'>\r
+ <UML:AssociationEnd.multiplicity>\r
+ <UML:Multiplicity xmi.id = '-64--88-1-101--7f8968dd:1157f72a2bb:-8000:0000000000000A3D'>\r
+ <UML:Multiplicity.range>\r
+ <UML:MultiplicityRange xmi.id = '-64--88-1-101--7f8968dd:1157f72a2bb:-8000:0000000000000A3C'\r
+ lower = '0' upper = '1'/>\r
+ </UML:Multiplicity.range>\r
+ </UML:Multiplicity>\r
+ </UML:AssociationEnd.multiplicity>\r
+ <UML:AssociationEnd.participant>\r
+ <UML:Class xmi.idref = '-64--88-1-101-3dc093e3:1157f1866b2:-8000:00000000000009ED'/>\r
+ </UML:AssociationEnd.participant>\r
+ </UML:AssociationEnd>\r
+ <UML:AssociationEnd xmi.id = '-64--88-1-101--7f8968dd:1157f72a2bb:-8000:0000000000000A1E'\r
+ visibility = 'public' isSpecification = 'false' isNavigable = 'true' ordering = 'unordered'\r
+ aggregation = 'none' targetScope = 'instance' changeability = 'changeable'>\r
+ <UML:AssociationEnd.multiplicity>\r
+ <UML:Multiplicity xmi.id = '-64--88-1-101--7f8968dd:1157f72a2bb:-8000:0000000000000A1F'>\r
+ <UML:Multiplicity.range>\r
+ <UML:MultiplicityRange xmi.id = '-64--88-1-101--7f8968dd:1157f72a2bb:-8000:0000000000000A20'\r
+ lower = '1' upper = '1'/>\r
+ </UML:Multiplicity.range>\r
+ </UML:Multiplicity>\r
+ </UML:AssociationEnd.multiplicity>\r
+ <UML:AssociationEnd.participant>\r
+ <UML:Class xmi.idref = '-64--88-1-101-3dc093e3:1157f1866b2:-8000:00000000000009F5'/>\r
+ </UML:AssociationEnd.participant>\r
+ </UML:AssociationEnd>\r
+ </UML:Association.connection>\r
+ </UML:Association>\r
+ <UML:Association xmi.id = '-64--88-1-101--7f8968dd:1157f72a2bb:-8000:0000000000000A21'\r
+ name = '' isSpecification = 'false' isRoot = 'false' isLeaf = 'false' isAbstract = 'false'>\r
+ <UML:Association.connection>\r
+ <UML:AssociationEnd xmi.id = '-64--88-1-101--7f8968dd:1157f72a2bb:-8000:0000000000000A22'\r
+ visibility = 'public' isSpecification = 'false' isNavigable = 'false' ordering = 'unordered'\r
+ aggregation = 'none' targetScope = 'instance' changeability = 'changeable'>\r
+ <UML:AssociationEnd.multiplicity>\r
+ <UML:Multiplicity xmi.id = '-64--88-1-101--7f8968dd:1157f72a2bb:-8000:0000000000000A3F'>\r
+ <UML:Multiplicity.range>\r
+ <UML:MultiplicityRange xmi.id = '-64--88-1-101--7f8968dd:1157f72a2bb:-8000:0000000000000A3E'\r
+ lower = '0' upper = '-1'/>\r
+ </UML:Multiplicity.range>\r
+ </UML:Multiplicity>\r
+ </UML:AssociationEnd.multiplicity>\r
+ <UML:AssociationEnd.participant>\r
+ <UML:Class xmi.idref = '-64--88-1-101-3dc093e3:1157f1866b2:-8000:00000000000009F1'/>\r
+ </UML:AssociationEnd.participant>\r
+ </UML:AssociationEnd>\r
+ <UML:AssociationEnd xmi.id = '-64--88-1-101--7f8968dd:1157f72a2bb:-8000:0000000000000A25'\r
+ visibility = 'public' isSpecification = 'false' isNavigable = 'true' ordering = 'unordered'\r
+ aggregation = 'none' targetScope = 'instance' changeability = 'changeable'>\r
+ <UML:AssociationEnd.multiplicity>\r
+ <UML:Multiplicity xmi.id = '-64--88-1-101--7f8968dd:1157f72a2bb:-8000:0000000000000A26'>\r
+ <UML:Multiplicity.range>\r
+ <UML:MultiplicityRange xmi.id = '-64--88-1-101--7f8968dd:1157f72a2bb:-8000:0000000000000A27'\r
+ lower = '1' upper = '1'/>\r
+ </UML:Multiplicity.range>\r
+ </UML:Multiplicity>\r
+ </UML:AssociationEnd.multiplicity>\r
+ <UML:AssociationEnd.participant>\r
+ <UML:Class xmi.idref = '-64--88-1-101-3dc093e3:1157f1866b2:-8000:00000000000009F5'/>\r
+ </UML:AssociationEnd.participant>\r
+ </UML:AssociationEnd>\r
+ </UML:Association.connection>\r
+ </UML:Association>\r
+ <UML:Class xmi.id = '-64--88-1-101--7f8968dd:1157f72a2bb:-8000:0000000000000A28'\r
+ name = 'DatabaseDeployer' visibility = 'public' isSpecification = 'false'\r
+ isRoot = 'false' isLeaf = 'false' isAbstract = 'false' isActive = 'false'/>\r
+ <UML:Class xmi.id = '-64--88-1-101--7f8968dd:1157f72a2bb:-8000:0000000000000A2A'\r
+ name = 'VersionedFileSetDeployer' visibility = 'public' isSpecification = 'false'\r
+ isRoot = 'false' isLeaf = 'false' isAbstract = 'false' isActive = 'false'/>\r
+ <UML:Association xmi.id = '-64--88-1-101--7f8968dd:1157f72a2bb:-8000:0000000000000A2C'\r
+ name = '' isSpecification = 'false' isRoot = 'false' isLeaf = 'false' isAbstract = 'false'>\r
+ <UML:Association.connection>\r
+ <UML:AssociationEnd xmi.id = '-64--88-1-101--7f8968dd:1157f72a2bb:-8000:0000000000000A2D'\r
+ visibility = 'public' isSpecification = 'false' isNavigable = 'false' ordering = 'unordered'\r
+ aggregation = 'none' targetScope = 'instance' changeability = 'changeable'>\r
+ <UML:AssociationEnd.multiplicity>\r
+ <UML:Multiplicity xmi.id = '-64--88-1-101--7f8968dd:1157f72a2bb:-8000:0000000000000A2E'>\r
+ <UML:Multiplicity.range>\r
+ <UML:MultiplicityRange xmi.id = '-64--88-1-101--7f8968dd:1157f72a2bb:-8000:0000000000000A2F'\r
+ lower = '1' upper = '1'/>\r
+ </UML:Multiplicity.range>\r
+ </UML:Multiplicity>\r
+ </UML:AssociationEnd.multiplicity>\r
+ <UML:AssociationEnd.participant>\r
+ <UML:Class xmi.idref = '-64--88-1-101-3dc093e3:1157f1866b2:-8000:0000000000000A42'/>\r
+ </UML:AssociationEnd.participant>\r
+ </UML:AssociationEnd>\r
+ <UML:AssociationEnd xmi.id = '-64--88-1-101--7f8968dd:1157f72a2bb:-8000:0000000000000A30'\r
+ visibility = 'public' isSpecification = 'false' isNavigable = 'true' ordering = 'unordered'\r
+ aggregation = 'none' targetScope = 'instance' changeability = 'changeable'>\r
+ <UML:AssociationEnd.multiplicity>\r
+ <UML:Multiplicity xmi.id = '-64--88-1-101--7f8968dd:1157f72a2bb:-8000:0000000000000A31'>\r
+ <UML:Multiplicity.range>\r
+ <UML:MultiplicityRange xmi.id = '-64--88-1-101--7f8968dd:1157f72a2bb:-8000:0000000000000A32'\r
+ lower = '1' upper = '1'/>\r
+ </UML:Multiplicity.range>\r
+ </UML:Multiplicity>\r
+ </UML:AssociationEnd.multiplicity>\r
+ <UML:AssociationEnd.participant>\r
+ <UML:Class xmi.idref = '-64--88-1-101--7f8968dd:1157f72a2bb:-8000:0000000000000A28'/>\r
+ </UML:AssociationEnd.participant>\r
+ </UML:AssociationEnd>\r
+ </UML:Association.connection>\r
+ </UML:Association>\r
+ <UML:Association xmi.id = '-64--88-1-101--7f8968dd:1157f72a2bb:-8000:0000000000000A33'\r
+ name = '' isSpecification = 'false' isRoot = 'false' isLeaf = 'false' isAbstract = 'false'>\r
+ <UML:Association.connection>\r
+ <UML:AssociationEnd xmi.id = '-64--88-1-101--7f8968dd:1157f72a2bb:-8000:0000000000000A34'\r
+ visibility = 'public' isSpecification = 'false' isNavigable = 'false' ordering = 'unordered'\r
+ aggregation = 'none' targetScope = 'instance' changeability = 'changeable'>\r
+ <UML:AssociationEnd.multiplicity>\r
+ <UML:Multiplicity xmi.id = '-64--88-1-101--7f8968dd:1157f72a2bb:-8000:0000000000000A35'>\r
+ <UML:Multiplicity.range>\r
+ <UML:MultiplicityRange xmi.id = '-64--88-1-101--7f8968dd:1157f72a2bb:-8000:0000000000000A36'\r
+ lower = '1' upper = '1'/>\r
+ </UML:Multiplicity.range>\r
+ </UML:Multiplicity>\r
+ </UML:AssociationEnd.multiplicity>\r
+ <UML:AssociationEnd.participant>\r
+ <UML:Class xmi.idref = '-64--88-1-101-3dc093e3:1157f1866b2:-8000:0000000000000A42'/>\r
+ </UML:AssociationEnd.participant>\r
+ </UML:AssociationEnd>\r
+ <UML:AssociationEnd xmi.id = '-64--88-1-101--7f8968dd:1157f72a2bb:-8000:0000000000000A37'\r
+ visibility = 'public' isSpecification = 'false' isNavigable = 'true' ordering = 'unordered'\r
+ aggregation = 'none' targetScope = 'instance' changeability = 'changeable'>\r
+ <UML:AssociationEnd.multiplicity>\r
+ <UML:Multiplicity xmi.id = '-64--88-1-101--7f8968dd:1157f72a2bb:-8000:0000000000000A38'>\r
+ <UML:Multiplicity.range>\r
+ <UML:MultiplicityRange xmi.id = '-64--88-1-101--7f8968dd:1157f72a2bb:-8000:0000000000000A39'\r
+ lower = '1' upper = '1'/>\r
+ </UML:Multiplicity.range>\r
+ </UML:Multiplicity>\r
+ </UML:AssociationEnd.multiplicity>\r
+ <UML:AssociationEnd.participant>\r
+ <UML:Class xmi.idref = '-64--88-1-101--7f8968dd:1157f72a2bb:-8000:0000000000000A2A'/>\r
+ </UML:AssociationEnd.participant>\r
+ </UML:AssociationEnd>\r
+ </UML:Association.connection>\r
+ </UML:Association>\r
+ <UML:Class xmi.id = '-64--88-1-101--7f8968dd:1157f72a2bb:-8000:0000000000000A40'\r
+ name = '' visibility = 'public' isSpecification = 'false' isRoot = 'false'\r
+ isLeaf = 'false' isAbstract = 'false' isActive = 'false'/>\r
+ <UML:Generalization xmi.id = '-64--88-1-101--4a0353a6:1158fc10f03:-8000:0000000000000A42'\r
+ isSpecification = 'false'>\r
+ <UML:Generalization.child>\r
+ <UML:Class xmi.idref = '-64--88-1-101-3dc093e3:1157f1866b2:-8000:0000000000000A40'/>\r
+ </UML:Generalization.child>\r
+ <UML:Generalization.parent>\r
+ <UML:Class xmi.idref = '-64--88-1-101-3dc093e3:1157f1866b2:-8000:0000000000000A15'/>\r
+ </UML:Generalization.parent>\r
+ </UML:Generalization>\r
+ <UML:Generalization xmi.id = '-64--88-1-101--4a0353a6:1158fc10f03:-8000:0000000000000A43'\r
+ isSpecification = 'false'>\r
+ <UML:Generalization.child>\r
+ <UML:Class xmi.idref = '-64--88-1-101-3dc093e3:1157f1866b2:-8000:0000000000000A1B'/>\r
+ </UML:Generalization.child>\r
+ <UML:Generalization.parent>\r
+ <UML:Class xmi.idref = '-64--88-1-101-3dc093e3:1157f1866b2:-8000:0000000000000A17'/>\r
+ </UML:Generalization.parent>\r
+ </UML:Generalization>\r
+ <UML:Generalization xmi.id = '-64--88-1-101--4a0353a6:1158fc10f03:-8000:0000000000000A44'\r
+ isSpecification = 'false'>\r
+ <UML:Generalization.child>\r
+ <UML:Class xmi.idref = '-64--88-1-101-3dc093e3:1157f1866b2:-8000:00000000000009F7'/>\r
+ </UML:Generalization.child>\r
+ <UML:Generalization.parent>\r
+ <UML:Class xmi.idref = '-64--88-1-101-3dc093e3:1157f1866b2:-8000:00000000000009F5'/>\r
+ </UML:Generalization.parent>\r
+ </UML:Generalization>\r
+ <UML:Generalization xmi.id = '-64--88-1-101--4a0353a6:1158fc10f03:-8000:0000000000000A46'\r
+ isSpecification = 'false'>\r
+ <UML:Generalization.child>\r
+ <UML:Class xmi.idref = '-64--88-1-101-3dc093e3:1157f1866b2:-8000:0000000000000A44'/>\r
+ </UML:Generalization.child>\r
+ <UML:Generalization.parent>\r
+ <UML:Class xmi.idref = '-64--88-1-101-3dc093e3:1157f1866b2:-8000:00000000000009F1'/>\r
+ </UML:Generalization.parent>\r
+ </UML:Generalization>\r
+ <UML:Generalization xmi.id = '-64--88-1-101--4a0353a6:1158fc10f03:-8000:0000000000000A47'\r
+ isSpecification = 'false'>\r
+ <UML:Generalization.child>\r
+ <UML:Class xmi.idref = '-64--88-1-101-3dc093e3:1157f1866b2:-8000:0000000000000A46'/>\r
+ </UML:Generalization.child>\r
+ <UML:Generalization.parent>\r
+ <UML:Class xmi.idref = '-64--88-1-101-3dc093e3:1157f1866b2:-8000:0000000000000A44'/>\r
+ </UML:Generalization.parent>\r
+ </UML:Generalization>\r
+ <UML:Generalization xmi.id = '-64--88-1-101--4a0353a6:1158fc10f03:-8000:0000000000000A48'\r
+ isSpecification = 'false'>\r
+ <UML:Generalization.child>\r
+ <UML:Class xmi.idref = '-64--88-1-101-3dc093e3:1157f1866b2:-8000:00000000000009ED'/>\r
+ </UML:Generalization.child>\r
+ <UML:Generalization.parent>\r
+ <UML:Class xmi.idref = '-64--88-1-101-3dc093e3:1157f1866b2:-8000:00000000000009EF'/>\r
+ </UML:Generalization.parent>\r
+ </UML:Generalization>\r
+ <UML:Generalization xmi.id = '-64--88-1-101--4a0353a6:1158fc10f03:-8000:0000000000000A49'\r
+ isSpecification = 'false'>\r
+ <UML:Generalization.child>\r
+ <UML:Class xmi.idref = '-64--88-1-101-3dc093e3:1157f1866b2:-8000:00000000000009F1'/>\r
+ </UML:Generalization.child>\r
+ <UML:Generalization.parent>\r
+ <UML:Class xmi.idref = '-64--88-1-101-3dc093e3:1157f1866b2:-8000:00000000000009EF'/>\r
+ </UML:Generalization.parent>\r
+ </UML:Generalization>\r
+ </UML:Namespace.ownedElement>\r
+ </UML:Model>\r
+ </XMI.content>\r
+</XMI>\r
+<pgml description="org.argouml.uml.diagram.static_structure.ui.UMLClassDiagram|-64--88-1-101-3dc093e3:1157f1866b2:-8000:00000000000009EC"\r
+ name="Class Diagram 1"\r
+>\r
+ <rectangle name="Fig0"\r
+ x="0"\r
+ y="152"\r
+ width="1056"\r
+ height="272"\r
+ fill="1"\r
+ fillcolor="white"\r
+ stroke="1"\r
+ strokecolor="black"\r
+ />\r
+ <rectangle name="Fig1"\r
+ x="8"\r
+ y="440"\r
+ width="1048"\r
+ height="536"\r
+ fill="1"\r
+ fillcolor="white"\r
+ stroke="1"\r
+ strokecolor="black"\r
+ />\r
+ <group name="Fig2"\r
+ description="org.argouml.uml.diagram.static_structure.ui.FigClass[536, 752, 90, 65]pathVisible=false;operationsVisible=true;attributesVisible=true"\r
+ href="-64--88-1-101-3dc093e3:1157f1866b2:-8000:00000000000009ED"\r
+ fill="1"\r
+ fillcolor="white"\r
+ stroke="1"\r
+ strokecolor="black"\r
+ >\r
+ <private>\r
+ </private>\r
+ \r
+ <rectangle name="Fig2.0"\r
+ x="536"\r
+ y="752"\r
+ width="90"\r
+ height="65"\r
+ fill="1"\r
+ fillcolor="white"\r
+ stroke="0"\r
+ strokecolor="black"\r
+ />\r
+ <group name="Fig2.1"\r
+ description="org.argouml.uml.diagram.ui.FigStereotypesCompartment[536, 752, 90, 2]"\r
+ href="-64--88-1-101-3dc093e3:1157f1866b2:-8000:00000000000009ED"\r
+ fill="1"\r
+ fillcolor="white"\r
+ stroke="1"\r
+ strokecolor="black"\r
+ >\r
+ <private>\r
+ </private>\r
+ \r
+ <rectangle name="Fig2.1.0"\r
+ x="536"\r
+ y="752"\r
+ width="90"\r
+ height="2"\r
+ fill="1"\r
+ fillcolor="white"\r
+ stroke="1"\r
+ strokecolor="black"\r
+ />\r
+ </group>\r
+ <text name="Fig2.2"\r
+ x="536"\r
+ y="754"\r
+ fill="1"\r
+ fillcolor="white"\r
+ stroke="0"\r
+ strokecolor="red"\r
+ font="Dialog"\r
+ textsize="10"\r
+ >Deployment</text>\r
+ <group name="Fig2.3"\r
+ description="org.argouml.uml.diagram.ui.FigOperationsCompartment[537, 797, 89, 20]"\r
+ fill="1"\r
+ fillcolor="white"\r
+ stroke="0"\r
+ strokecolor="black"\r
+ >\r
+ <private>\r
+ </private>\r
+ \r
+ <rectangle name="Fig2.3.0"\r
+ x="537"\r
+ y="797"\r
+ width="89"\r
+ height="20"\r
+ fill="1"\r
+ fillcolor="white"\r
+ stroke="0"\r
+ strokecolor="black"\r
+ />\r
+ <path name="Fig2.3.1"\r
+ description="org.argouml.uml.diagram.ui.FigFeaturesCompartment$FigSeperator"\r
+ fill="1"\r
+ fillcolor="white"\r
+ stroke="1"\r
+ strokecolor="black"\r
+ >\r
+ <moveto x="537"\r
+ y="797" />\r
+ <lineto x="626"\r
+ y="797" />\r
+ </path>\r
+ </group>\r
+ <group name="Fig2.4"\r
+ description="org.argouml.uml.diagram.ui.FigAttributesCompartment[537, 776, 89, 20]"\r
+ fill="1"\r
+ fillcolor="white"\r
+ stroke="0"\r
+ strokecolor="black"\r
+ >\r
+ <private>\r
+ </private>\r
+ \r
+ <rectangle name="Fig2.4.0"\r
+ x="537"\r
+ y="776"\r
+ width="89"\r
+ height="20"\r
+ fill="1"\r
+ fillcolor="white"\r
+ stroke="0"\r
+ strokecolor="black"\r
+ />\r
+ <path name="Fig2.4.1"\r
+ description="org.argouml.uml.diagram.ui.FigFeaturesCompartment$FigSeperator"\r
+ fill="1"\r
+ fillcolor="white"\r
+ stroke="1"\r
+ strokecolor="black"\r
+ >\r
+ <moveto x="537"\r
+ y="776" />\r
+ <lineto x="626"\r
+ y="776" />\r
+ </path>\r
+ </group>\r
+ <rectangle name="Fig2.5"\r
+ x="536"\r
+ y="752"\r
+ width="90"\r
+ height="65"\r
+ fill="0"\r
+ fillcolor="white"\r
+ stroke="1"\r
+ strokecolor="black"\r
+ />\r
+ </group>\r
+ <group name="Fig3"\r
+ description="org.argouml.uml.diagram.static_structure.ui.FigClass[544, 864, 90, 65]pathVisible=false;operationsVisible=true;attributesVisible=true"\r
+ href="-64--88-1-101-3dc093e3:1157f1866b2:-8000:00000000000009EF"\r
+ fill="1"\r
+ fillcolor="white"\r
+ stroke="1"\r
+ strokecolor="black"\r
+ >\r
+ <private>\r
+ </private>\r
+ \r
+ <rectangle name="Fig3.0"\r
+ x="544"\r
+ y="864"\r
+ width="90"\r
+ height="65"\r
+ fill="1"\r
+ fillcolor="white"\r
+ stroke="0"\r
+ strokecolor="black"\r
+ />\r
+ <group name="Fig3.1"\r
+ description="org.argouml.uml.diagram.ui.FigStereotypesCompartment[544, 864, 90, 2]"\r
+ href="-64--88-1-101-3dc093e3:1157f1866b2:-8000:00000000000009EF"\r
+ fill="1"\r
+ fillcolor="white"\r
+ stroke="1"\r
+ strokecolor="black"\r
+ >\r
+ <private>\r
+ </private>\r
+ \r
+ <rectangle name="Fig3.1.0"\r
+ x="544"\r
+ y="864"\r
+ width="90"\r
+ height="2"\r
+ fill="1"\r
+ fillcolor="white"\r
+ stroke="1"\r
+ strokecolor="black"\r
+ />\r
+ </group>\r
+ <text name="Fig3.2"\r
+ x="544"\r
+ y="866"\r
+ fill="1"\r
+ fillcolor="white"\r
+ stroke="0"\r
+ strokecolor="red"\r
+ font="Dialog"\r
+ textsize="10"\r
+ >Process</text>\r
+ <group name="Fig3.3"\r
+ description="org.argouml.uml.diagram.ui.FigOperationsCompartment[545, 909, 89, 20]"\r
+ fill="1"\r
+ fillcolor="white"\r
+ stroke="0"\r
+ strokecolor="black"\r
+ >\r
+ <private>\r
+ </private>\r
+ \r
+ <rectangle name="Fig3.3.0"\r
+ x="545"\r
+ y="909"\r
+ width="89"\r
+ height="20"\r
+ fill="1"\r
+ fillcolor="white"\r
+ stroke="0"\r
+ strokecolor="black"\r
+ />\r
+ <path name="Fig3.3.1"\r
+ description="org.argouml.uml.diagram.ui.FigFeaturesCompartment$FigSeperator"\r
+ fill="1"\r
+ fillcolor="white"\r
+ stroke="1"\r
+ strokecolor="black"\r
+ >\r
+ <moveto x="545"\r
+ y="909" />\r
+ <lineto x="634"\r
+ y="909" />\r
+ </path>\r
+ </group>\r
+ <group name="Fig3.4"\r
+ description="org.argouml.uml.diagram.ui.FigAttributesCompartment[545, 888, 89, 20]"\r
+ fill="1"\r
+ fillcolor="white"\r
+ stroke="0"\r
+ strokecolor="black"\r
+ >\r
+ <private>\r
+ </private>\r
+ \r
+ <rectangle name="Fig3.4.0"\r
+ x="545"\r
+ y="888"\r
+ width="89"\r
+ height="20"\r
+ fill="1"\r
+ fillcolor="white"\r
+ stroke="0"\r
+ strokecolor="black"\r
+ />\r
+ <path name="Fig3.4.1"\r
+ description="org.argouml.uml.diagram.ui.FigFeaturesCompartment$FigSeperator"\r
+ fill="1"\r
+ fillcolor="white"\r
+ stroke="1"\r
+ strokecolor="black"\r
+ >\r
+ <moveto x="545"\r
+ y="888" />\r
+ <lineto x="634"\r
+ y="888" />\r
+ </path>\r
+ </group>\r
+ <rectangle name="Fig3.5"\r
+ x="544"\r
+ y="864"\r
+ width="90"\r
+ height="65"\r
+ fill="0"\r
+ fillcolor="white"\r
+ stroke="1"\r
+ strokecolor="black"\r
+ />\r
+ </group>\r
+ <group name="Fig4"\r
+ description="org.argouml.uml.diagram.static_structure.ui.FigClass[880, 752, 90, 65]pathVisible=false;operationsVisible=true;attributesVisible=true"\r
+ href="-64--88-1-101-3dc093e3:1157f1866b2:-8000:00000000000009F1"\r
+ fill="1"\r
+ fillcolor="white"\r
+ stroke="1"\r
+ strokecolor="black"\r
+ >\r
+ <private>\r
+ </private>\r
+ \r
+ <rectangle name="Fig4.0"\r
+ x="880"\r
+ y="752"\r
+ width="90"\r
+ height="65"\r
+ fill="1"\r
+ fillcolor="white"\r
+ stroke="0"\r
+ strokecolor="black"\r
+ />\r
+ <group name="Fig4.1"\r
+ description="org.argouml.uml.diagram.ui.FigStereotypesCompartment[880, 752, 90, 2]"\r
+ href="-64--88-1-101-3dc093e3:1157f1866b2:-8000:00000000000009F1"\r
+ fill="1"\r
+ fillcolor="white"\r
+ stroke="1"\r
+ strokecolor="black"\r
+ >\r
+ <private>\r
+ </private>\r
+ \r
+ <rectangle name="Fig4.1.0"\r
+ x="880"\r
+ y="752"\r
+ width="90"\r
+ height="2"\r
+ fill="1"\r
+ fillcolor="white"\r
+ stroke="1"\r
+ strokecolor="black"\r
+ />\r
+ </group>\r
+ <text name="Fig4.2"\r
+ x="880"\r
+ y="754"\r
+ fill="1"\r
+ fillcolor="white"\r
+ stroke="0"\r
+ strokecolor="red"\r
+ font="Dialog"\r
+ textsize="10"\r
+ >TestRun</text>\r
+ <group name="Fig4.3"\r
+ description="org.argouml.uml.diagram.ui.FigOperationsCompartment[881, 797, 89, 20]"\r
+ fill="1"\r
+ fillcolor="white"\r
+ stroke="0"\r
+ strokecolor="black"\r
+ >\r
+ <private>\r
+ </private>\r
+ \r
+ <rectangle name="Fig4.3.0"\r
+ x="881"\r
+ y="797"\r
+ width="89"\r
+ height="20"\r
+ fill="1"\r
+ fillcolor="white"\r
+ stroke="0"\r
+ strokecolor="black"\r
+ />\r
+ <path name="Fig4.3.1"\r
+ description="org.argouml.uml.diagram.ui.FigFeaturesCompartment$FigSeperator"\r
+ fill="1"\r
+ fillcolor="white"\r
+ stroke="1"\r
+ strokecolor="black"\r
+ >\r
+ <moveto x="881"\r
+ y="797" />\r
+ <lineto x="970"\r
+ y="797" />\r
+ </path>\r
+ </group>\r
+ <group name="Fig4.4"\r
+ description="org.argouml.uml.diagram.ui.FigAttributesCompartment[881, 776, 89, 20]"\r
+ fill="1"\r
+ fillcolor="white"\r
+ stroke="0"\r
+ strokecolor="black"\r
+ >\r
+ <private>\r
+ </private>\r
+ \r
+ <rectangle name="Fig4.4.0"\r
+ x="881"\r
+ y="776"\r
+ width="89"\r
+ height="20"\r
+ fill="1"\r
+ fillcolor="white"\r
+ stroke="0"\r
+ strokecolor="black"\r
+ />\r
+ <path name="Fig4.4.1"\r
+ description="org.argouml.uml.diagram.ui.FigFeaturesCompartment$FigSeperator"\r
+ fill="1"\r
+ fillcolor="white"\r
+ stroke="1"\r
+ strokecolor="black"\r
+ >\r
+ <moveto x="881"\r
+ y="776" />\r
+ <lineto x="970"\r
+ y="776" />\r
+ </path>\r
+ </group>\r
+ <rectangle name="Fig4.5"\r
+ x="880"\r
+ y="752"\r
+ width="90"\r
+ height="65"\r
+ fill="0"\r
+ fillcolor="white"\r
+ stroke="1"\r
+ strokecolor="black"\r
+ />\r
+ </group>\r
+ <group name="Fig5"\r
+ description="org.argouml.uml.diagram.static_structure.ui.FigClass[688, 624, 90, 65]pathVisible=false;operationsVisible=true;attributesVisible=true"\r
+ href="-64--88-1-101-3dc093e3:1157f1866b2:-8000:00000000000009F5"\r
+ fill="1"\r
+ fillcolor="white"\r
+ stroke="1"\r
+ strokecolor="black"\r
+ >\r
+ <private>\r
+ </private>\r
+ \r
+ <rectangle name="Fig5.0"\r
+ x="688"\r
+ y="624"\r
+ width="90"\r
+ height="65"\r
+ fill="1"\r
+ fillcolor="white"\r
+ stroke="0"\r
+ strokecolor="black"\r
+ />\r
+ <group name="Fig5.1"\r
+ description="org.argouml.uml.diagram.ui.FigStereotypesCompartment[688, 624, 90, 2]"\r
+ href="-64--88-1-101-3dc093e3:1157f1866b2:-8000:00000000000009F5"\r
+ fill="1"\r
+ fillcolor="white"\r
+ stroke="1"\r
+ strokecolor="black"\r
+ >\r
+ <private>\r
+ </private>\r
+ \r
+ <rectangle name="Fig5.1.0"\r
+ x="688"\r
+ y="624"\r
+ width="90"\r
+ height="2"\r
+ fill="1"\r
+ fillcolor="white"\r
+ stroke="1"\r
+ strokecolor="black"\r
+ />\r
+ </group>\r
+ <text name="Fig5.2"\r
+ x="688"\r
+ y="626"\r
+ fill="1"\r
+ fillcolor="white"\r
+ stroke="0"\r
+ strokecolor="red"\r
+ font="Dialog"\r
+ textsize="10"\r
+ >DeployedSystem</text>\r
+ <group name="Fig5.3"\r
+ description="org.argouml.uml.diagram.ui.FigOperationsCompartment[689, 669, 89, 20]"\r
+ fill="1"\r
+ fillcolor="white"\r
+ stroke="0"\r
+ strokecolor="black"\r
+ >\r
+ <private>\r
+ </private>\r
+ \r
+ <rectangle name="Fig5.3.0"\r
+ x="689"\r
+ y="669"\r
+ width="89"\r
+ height="20"\r
+ fill="1"\r
+ fillcolor="white"\r
+ stroke="0"\r
+ strokecolor="black"\r
+ />\r
+ <path name="Fig5.3.1"\r
+ description="org.argouml.uml.diagram.ui.FigFeaturesCompartment$FigSeperator"\r
+ fill="1"\r
+ fillcolor="white"\r
+ stroke="1"\r
+ strokecolor="black"\r
+ >\r
+ <moveto x="689"\r
+ y="669" />\r
+ <lineto x="778"\r
+ y="669" />\r
+ </path>\r
+ </group>\r
+ <group name="Fig5.4"\r
+ description="org.argouml.uml.diagram.ui.FigAttributesCompartment[689, 648, 89, 20]"\r
+ fill="1"\r
+ fillcolor="white"\r
+ stroke="0"\r
+ strokecolor="black"\r
+ >\r
+ <private>\r
+ </private>\r
+ \r
+ <rectangle name="Fig5.4.0"\r
+ x="689"\r
+ y="648"\r
+ width="89"\r
+ height="20"\r
+ fill="1"\r
+ fillcolor="white"\r
+ stroke="0"\r
+ strokecolor="black"\r
+ />\r
+ <path name="Fig5.4.1"\r
+ description="org.argouml.uml.diagram.ui.FigFeaturesCompartment$FigSeperator"\r
+ fill="1"\r
+ fillcolor="white"\r
+ stroke="1"\r
+ strokecolor="black"\r
+ >\r
+ <moveto x="689"\r
+ y="648" />\r
+ <lineto x="778"\r
+ y="648" />\r
+ </path>\r
+ </group>\r
+ <rectangle name="Fig5.5"\r
+ x="688"\r
+ y="624"\r
+ width="90"\r
+ height="65"\r
+ fill="0"\r
+ fillcolor="white"\r
+ stroke="1"\r
+ strokecolor="black"\r
+ />\r
+ </group>\r
+ <group name="Fig6"\r
+ description="org.argouml.uml.diagram.static_structure.ui.FigClass[688, 216, 101, 109]pathVisible=false;operationsVisible=true;attributesVisible=true"\r
+ href="-64--88-1-101-3dc093e3:1157f1866b2:-8000:00000000000009F7"\r
+ fill="1"\r
+ fillcolor="white"\r
+ stroke="1"\r
+ strokecolor="black"\r
+ >\r
+ <private>\r
+ </private>\r
+ \r
+ <rectangle name="Fig6.0"\r
+ x="688"\r
+ y="216"\r
+ width="101"\r
+ height="109"\r
+ fill="1"\r
+ fillcolor="white"\r
+ stroke="0"\r
+ strokecolor="black"\r
+ />\r
+ <group name="Fig6.1"\r
+ description="org.argouml.uml.diagram.ui.FigStereotypesCompartment[688, 216, 101, 2]"\r
+ href="-64--88-1-101-3dc093e3:1157f1866b2:-8000:00000000000009F7"\r
+ fill="1"\r
+ fillcolor="white"\r
+ stroke="1"\r
+ strokecolor="black"\r
+ >\r
+ <private>\r
+ </private>\r
+ \r
+ <rectangle name="Fig6.1.0"\r
+ x="688"\r
+ y="216"\r
+ width="101"\r
+ height="2"\r
+ fill="1"\r
+ fillcolor="white"\r
+ stroke="1"\r
+ strokecolor="black"\r
+ />\r
+ </group>\r
+ <text name="Fig6.2"\r
+ x="688"\r
+ y="218"\r
+ fill="1"\r
+ fillcolor="white"\r
+ stroke="0"\r
+ strokecolor="red"\r
+ font="Dialog"\r
+ textsize="10"\r
+ >MxDeployedSystem</text>\r
+ <group name="Fig6.3"\r
+ description="org.argouml.uml.diagram.ui.FigOperationsCompartment[689, 305, 100, 20]"\r
+ fill="1"\r
+ fillcolor="white"\r
+ stroke="0"\r
+ strokecolor="black"\r
+ >\r
+ <private>\r
+ </private>\r
+ \r
+ <rectangle name="Fig6.3.0"\r
+ x="689"\r
+ y="305"\r
+ width="100"\r
+ height="20"\r
+ fill="1"\r
+ fillcolor="white"\r
+ stroke="0"\r
+ strokecolor="black"\r
+ />\r
+ <path name="Fig6.3.1"\r
+ description="org.argouml.uml.diagram.ui.FigFeaturesCompartment$FigSeperator"\r
+ fill="1"\r
+ fillcolor="white"\r
+ stroke="1"\r
+ strokecolor="black"\r
+ >\r
+ <moveto x="689"\r
+ y="305" />\r
+ <lineto x="789"\r
+ y="305" />\r
+ </path>\r
+ </group>\r
+ <group name="Fig6.4"\r
+ description="org.argouml.uml.diagram.ui.FigAttributesCompartment[689, 240, 100, 64]"\r
+ fill="1"\r
+ fillcolor="white"\r
+ stroke="0"\r
+ strokecolor="black"\r
+ >\r
+ <private>\r
+ </private>\r
+ \r
+ <rectangle name="Fig6.4.0"\r
+ x="689"\r
+ y="240"\r
+ width="100"\r
+ height="64"\r
+ fill="1"\r
+ fillcolor="white"\r
+ stroke="0"\r
+ strokecolor="black"\r
+ />\r
+ <path name="Fig6.4.1"\r
+ description="org.argouml.uml.diagram.ui.FigFeaturesCompartment$FigSeperator"\r
+ fill="1"\r
+ fillcolor="white"\r
+ stroke="1"\r
+ strokecolor="black"\r
+ >\r
+ <moveto x="689"\r
+ y="240" />\r
+ <lineto x="789"\r
+ y="240" />\r
+ </path>\r
+ <text name="Fig6.4.2"\r
+ x="689"\r
+ y="241"\r
+ fill="0"\r
+ fillcolor="white"\r
+ stroke="0"\r
+ strokecolor="black"\r
+ font="Dialog"\r
+ textsize="10"\r
+ >fsPort : int</text>\r
+ <text name="Fig6.4.3"\r
+ x="689"\r
+ y="255"\r
+ fill="0"\r
+ fillcolor="white"\r
+ stroke="0"\r
+ strokecolor="black"\r
+ font="Dialog"\r
+ textsize="10"\r
+ >xmlsPort : int</text>\r
+ <text name="Fig6.4.4"\r
+ x="689"\r
+ y="269"\r
+ fill="0"\r
+ fillcolor="white"\r
+ stroke="0"\r
+ strokecolor="black"\r
+ font="Dialog"\r
+ textsize="10"\r
+ >murexnetPort : int</text>\r
+ <text name="Fig6.4.5"\r
+ x="689"\r
+ y="283"\r
+ fill="0"\r
+ fillcolor="white"\r
+ stroke="0"\r
+ strokecolor="black"\r
+ font="Dialog"\r
+ textsize="10"\r
+ >installDir : File</text>\r
+ </group>\r
+ <rectangle name="Fig6.5"\r
+ x="688"\r
+ y="216"\r
+ width="101"\r
+ height="109"\r
+ fill="0"\r
+ fillcolor="white"\r
+ stroke="1"\r
+ strokecolor="black"\r
+ />\r
+ </group>\r
+ <group name="Fig7"\r
+ description="org.argouml.uml.diagram.static_structure.ui.FigClass[48, 640, 90, 65]pathVisible=false;operationsVisible=true;attributesVisible=true"\r
+ href="-64--88-1-101-3dc093e3:1157f1866b2:-8000:0000000000000A15"\r
+ fill="1"\r
+ fillcolor="white"\r
+ stroke="1"\r
+ strokecolor="black"\r
+ >\r
+ <private>\r
+ </private>\r
+ \r
+ <rectangle name="Fig7.0"\r
+ x="48"\r
+ y="640"\r
+ width="90"\r
+ height="65"\r
+ fill="1"\r
+ fillcolor="white"\r
+ stroke="0"\r
+ strokecolor="black"\r
+ />\r
+ <group name="Fig7.1"\r
+ description="org.argouml.uml.diagram.ui.FigStereotypesCompartment[48, 640, 90, 2]"\r
+ href="-64--88-1-101-3dc093e3:1157f1866b2:-8000:0000000000000A15"\r
+ fill="1"\r
+ fillcolor="white"\r
+ stroke="1"\r
+ strokecolor="black"\r
+ >\r
+ <private>\r
+ </private>\r
+ \r
+ <rectangle name="Fig7.1.0"\r
+ x="48"\r
+ y="640"\r
+ width="90"\r
+ height="2"\r
+ fill="1"\r
+ fillcolor="white"\r
+ stroke="1"\r
+ strokecolor="black"\r
+ />\r
+ </group>\r
+ <text name="Fig7.2"\r
+ x="48"\r
+ y="642"\r
+ fill="1"\r
+ fillcolor="white"\r
+ stroke="0"\r
+ strokecolor="red"\r
+ font="Dialog"\r
+ textsize="10"\r
+ >DistributionId</text>\r
+ <group name="Fig7.3"\r
+ description="org.argouml.uml.diagram.ui.FigOperationsCompartment[49, 685, 89, 20]"\r
+ fill="1"\r
+ fillcolor="white"\r
+ stroke="0"\r
+ strokecolor="black"\r
+ >\r
+ <private>\r
+ </private>\r
+ \r
+ <rectangle name="Fig7.3.0"\r
+ x="49"\r
+ y="685"\r
+ width="89"\r
+ height="20"\r
+ fill="1"\r
+ fillcolor="white"\r
+ stroke="0"\r
+ strokecolor="black"\r
+ />\r
+ <path name="Fig7.3.1"\r
+ description="org.argouml.uml.diagram.ui.FigFeaturesCompartment$FigSeperator"\r
+ fill="1"\r
+ fillcolor="white"\r
+ stroke="1"\r
+ strokecolor="black"\r
+ >\r
+ <moveto x="49"\r
+ y="685" />\r
+ <lineto x="138"\r
+ y="685" />\r
+ </path>\r
+ </group>\r
+ <group name="Fig7.4"\r
+ description="org.argouml.uml.diagram.ui.FigAttributesCompartment[49, 664, 89, 20]"\r
+ fill="1"\r
+ fillcolor="white"\r
+ stroke="0"\r
+ strokecolor="black"\r
+ >\r
+ <private>\r
+ </private>\r
+ \r
+ <rectangle name="Fig7.4.0"\r
+ x="49"\r
+ y="664"\r
+ width="89"\r
+ height="20"\r
+ fill="1"\r
+ fillcolor="white"\r
+ stroke="0"\r
+ strokecolor="black"\r
+ />\r
+ <path name="Fig7.4.1"\r
+ description="org.argouml.uml.diagram.ui.FigFeaturesCompartment$FigSeperator"\r
+ fill="1"\r
+ fillcolor="white"\r
+ stroke="1"\r
+ strokecolor="black"\r
+ >\r
+ <moveto x="49"\r
+ y="664" />\r
+ <lineto x="138"\r
+ y="664" />\r
+ </path>\r
+ </group>\r
+ <rectangle name="Fig7.5"\r
+ x="48"\r
+ y="640"\r
+ width="90"\r
+ height="65"\r
+ fill="0"\r
+ fillcolor="white"\r
+ stroke="1"\r
+ strokecolor="black"\r
+ />\r
+ </group>\r
+ <group name="Fig8"\r
+ description="org.argouml.uml.diagram.static_structure.ui.FigClass[232, 640, 90, 65]pathVisible=false;operationsVisible=true;attributesVisible=true"\r
+ href="-64--88-1-101-3dc093e3:1157f1866b2:-8000:0000000000000A17"\r
+ fill="1"\r
+ fillcolor="white"\r
+ stroke="1"\r
+ strokecolor="black"\r
+ >\r
+ <private>\r
+ </private>\r
+ \r
+ <rectangle name="Fig8.0"\r
+ x="232"\r
+ y="640"\r
+ width="90"\r
+ height="65"\r
+ fill="1"\r
+ fillcolor="white"\r
+ stroke="0"\r
+ strokecolor="black"\r
+ />\r
+ <group name="Fig8.1"\r
+ description="org.argouml.uml.diagram.ui.FigStereotypesCompartment[232, 640, 90, 2]"\r
+ href="-64--88-1-101-3dc093e3:1157f1866b2:-8000:0000000000000A17"\r
+ fill="1"\r
+ fillcolor="white"\r
+ stroke="1"\r
+ strokecolor="black"\r
+ >\r
+ <private>\r
+ </private>\r
+ \r
+ <rectangle name="Fig8.1.0"\r
+ x="232"\r
+ y="640"\r
+ width="90"\r
+ height="2"\r
+ fill="1"\r
+ fillcolor="white"\r
+ stroke="1"\r
+ strokecolor="black"\r
+ />\r
+ </group>\r
+ <text name="Fig8.2"\r
+ x="232"\r
+ y="642"\r
+ fill="1"\r
+ fillcolor="white"\r
+ stroke="0"\r
+ strokecolor="red"\r
+ font="Dialog"\r
+ textsize="10"\r
+ >Distribution</text>\r
+ <group name="Fig8.3"\r
+ description="org.argouml.uml.diagram.ui.FigOperationsCompartment[233, 685, 89, 20]"\r
+ fill="1"\r
+ fillcolor="white"\r
+ stroke="0"\r
+ strokecolor="black"\r
+ >\r
+ <private>\r
+ </private>\r
+ \r
+ <rectangle name="Fig8.3.0"\r
+ x="233"\r
+ y="685"\r
+ width="89"\r
+ height="20"\r
+ fill="1"\r
+ fillcolor="white"\r
+ stroke="0"\r
+ strokecolor="black"\r
+ />\r
+ <path name="Fig8.3.1"\r
+ description="org.argouml.uml.diagram.ui.FigFeaturesCompartment$FigSeperator"\r
+ fill="1"\r
+ fillcolor="white"\r
+ stroke="1"\r
+ strokecolor="black"\r
+ >\r
+ <moveto x="233"\r
+ y="685" />\r
+ <lineto x="322"\r
+ y="685" />\r
+ </path>\r
+ </group>\r
+ <group name="Fig8.4"\r
+ description="org.argouml.uml.diagram.ui.FigAttributesCompartment[233, 664, 89, 20]"\r
+ fill="1"\r
+ fillcolor="white"\r
+ stroke="0"\r
+ strokecolor="black"\r
+ >\r
+ <private>\r
+ </private>\r
+ \r
+ <rectangle name="Fig8.4.0"\r
+ x="233"\r
+ y="664"\r
+ width="89"\r
+ height="20"\r
+ fill="1"\r
+ fillcolor="white"\r
+ stroke="0"\r
+ strokecolor="black"\r
+ />\r
+ <path name="Fig8.4.1"\r
+ description="org.argouml.uml.diagram.ui.FigFeaturesCompartment$FigSeperator"\r
+ fill="1"\r
+ fillcolor="white"\r
+ stroke="1"\r
+ strokecolor="black"\r
+ >\r
+ <moveto x="233"\r
+ y="664" />\r
+ <lineto x="322"\r
+ y="664" />\r
+ </path>\r
+ </group>\r
+ <rectangle name="Fig8.5"\r
+ x="232"\r
+ y="640"\r
+ width="90"\r
+ height="65"\r
+ fill="0"\r
+ fillcolor="white"\r
+ stroke="1"\r
+ strokecolor="black"\r
+ />\r
+ </group>\r
+ <group name="Fig9"\r
+ description="org.argouml.uml.diagram.static_structure.ui.FigClass[184, 216, 128, 95]pathVisible=false;operationsVisible=true;attributesVisible=true"\r
+ href="-64--88-1-101-3dc093e3:1157f1866b2:-8000:0000000000000A1B"\r
+ fill="1"\r
+ fillcolor="white"\r
+ stroke="1"\r
+ strokecolor="black"\r
+ >\r
+ <private>\r
+ </private>\r
+ \r
+ <rectangle name="Fig9.0"\r
+ x="184"\r
+ y="216"\r
+ width="128"\r
+ height="95"\r
+ fill="1"\r
+ fillcolor="white"\r
+ stroke="0"\r
+ strokecolor="black"\r
+ />\r
+ <group name="Fig9.1"\r
+ description="org.argouml.uml.diagram.ui.FigStereotypesCompartment[184, 216, 128, 2]"\r
+ href="-64--88-1-101-3dc093e3:1157f1866b2:-8000:0000000000000A1B"\r
+ fill="1"\r
+ fillcolor="white"\r
+ stroke="1"\r
+ strokecolor="black"\r
+ >\r
+ <private>\r
+ </private>\r
+ \r
+ <rectangle name="Fig9.1.0"\r
+ x="184"\r
+ y="216"\r
+ width="128"\r
+ height="2"\r
+ fill="1"\r
+ fillcolor="white"\r
+ stroke="1"\r
+ strokecolor="black"\r
+ />\r
+ </group>\r
+ <text name="Fig9.2"\r
+ x="184"\r
+ y="218"\r
+ fill="1"\r
+ fillcolor="white"\r
+ stroke="0"\r
+ strokecolor="red"\r
+ font="Dialog"\r
+ textsize="10"\r
+ >MxSetups</text>\r
+ <group name="Fig9.3"\r
+ description="org.argouml.uml.diagram.ui.FigOperationsCompartment[185, 291, 127, 20]"\r
+ fill="1"\r
+ fillcolor="white"\r
+ stroke="0"\r
+ strokecolor="black"\r
+ >\r
+ <private>\r
+ </private>\r
+ \r
+ <rectangle name="Fig9.3.0"\r
+ x="185"\r
+ y="291"\r
+ width="127"\r
+ height="20"\r
+ fill="1"\r
+ fillcolor="white"\r
+ stroke="0"\r
+ strokecolor="black"\r
+ />\r
+ <path name="Fig9.3.1"\r
+ description="org.argouml.uml.diagram.ui.FigFeaturesCompartment$FigSeperator"\r
+ fill="1"\r
+ fillcolor="white"\r
+ stroke="1"\r
+ strokecolor="black"\r
+ >\r
+ <moveto x="185"\r
+ y="291" />\r
+ <lineto x="312"\r
+ y="291" />\r
+ </path>\r
+ </group>\r
+ <group name="Fig9.4"\r
+ description="org.argouml.uml.diagram.ui.FigAttributesCompartment[185, 240, 127, 50]"\r
+ fill="1"\r
+ fillcolor="white"\r
+ stroke="0"\r
+ strokecolor="black"\r
+ >\r
+ <private>\r
+ </private>\r
+ \r
+ <rectangle name="Fig9.4.0"\r
+ x="185"\r
+ y="240"\r
+ width="127"\r
+ height="50"\r
+ fill="1"\r
+ fillcolor="white"\r
+ stroke="0"\r
+ strokecolor="black"\r
+ />\r
+ <path name="Fig9.4.1"\r
+ description="org.argouml.uml.diagram.ui.FigFeaturesCompartment$FigSeperator"\r
+ fill="1"\r
+ fillcolor="white"\r
+ stroke="1"\r
+ strokecolor="black"\r
+ >\r
+ <moveto x="185"\r
+ y="240" />\r
+ <lineto x="312"\r
+ y="240" />\r
+ </path>\r
+ <text name="Fig9.4.2"\r
+ x="185"\r
+ y="241"\r
+ fill="0"\r
+ fillcolor="white"\r
+ stroke="0"\r
+ strokecolor="black"\r
+ font="Dialog"\r
+ textsize="10"\r
+ >primarySetupFile : File</text>\r
+ <text name="Fig9.4.3"\r
+ x="185"\r
+ y="255"\r
+ fill="0"\r
+ fillcolor="white"\r
+ stroke="0"\r
+ strokecolor="black"\r
+ font="Dialog"\r
+ textsize="10"\r
+ >secondarySetupFile : File</text>\r
+ <text name="Fig9.4.4"\r
+ x="185"\r
+ y="269"\r
+ fill="0"\r
+ fillcolor="white"\r
+ stroke="0"\r
+ strokecolor="black"\r
+ font="Dialog"\r
+ textsize="10"\r
+ >clientSetupFile : File</text>\r
+ </group>\r
+ <rectangle name="Fig9.5"\r
+ x="184"\r
+ y="216"\r
+ width="128"\r
+ height="95"\r
+ fill="0"\r
+ fillcolor="white"\r
+ stroke="1"\r
+ strokecolor="black"\r
+ />\r
+ </group>\r
+ <group name="Fig10"\r
+ description="org.argouml.uml.diagram.static_structure.ui.FigClass[40, 216, 108, 111]pathVisible=false;operationsVisible=true;attributesVisible=true"\r
+ href="-64--88-1-101-3dc093e3:1157f1866b2:-8000:0000000000000A40"\r
+ fill="1"\r
+ fillcolor="white"\r
+ stroke="1"\r
+ strokecolor="black"\r
+ >\r
+ <private>\r
+ </private>\r
+ \r
+ <rectangle name="Fig10.0"\r
+ x="40"\r
+ y="216"\r
+ width="108"\r
+ height="111"\r
+ fill="1"\r
+ fillcolor="white"\r
+ stroke="0"\r
+ strokecolor="black"\r
+ />\r
+ <group name="Fig10.1"\r
+ description="org.argouml.uml.diagram.ui.FigStereotypesCompartment[40, 216, 108, 2]"\r
+ href="-64--88-1-101-3dc093e3:1157f1866b2:-8000:0000000000000A40"\r
+ fill="1"\r
+ fillcolor="white"\r
+ stroke="1"\r
+ strokecolor="black"\r
+ >\r
+ <private>\r
+ </private>\r
+ \r
+ <rectangle name="Fig10.1.0"\r
+ x="40"\r
+ y="216"\r
+ width="108"\r
+ height="2"\r
+ fill="1"\r
+ fillcolor="white"\r
+ stroke="1"\r
+ strokecolor="black"\r
+ />\r
+ </group>\r
+ <text name="Fig10.2"\r
+ x="40"\r
+ y="218"\r
+ fill="1"\r
+ fillcolor="white"\r
+ stroke="0"\r
+ strokecolor="red"\r
+ font="Dialog"\r
+ textsize="10"\r
+ >MxBuildId</text>\r
+ <group name="Fig10.3"\r
+ description="org.argouml.uml.diagram.ui.FigOperationsCompartment[41, 291, 107, 36]"\r
+ fill="1"\r
+ fillcolor="white"\r
+ stroke="0"\r
+ strokecolor="black"\r
+ >\r
+ <private>\r
+ </private>\r
+ \r
+ <rectangle name="Fig10.3.0"\r
+ x="41"\r
+ y="291"\r
+ width="107"\r
+ height="36"\r
+ fill="1"\r
+ fillcolor="white"\r
+ stroke="0"\r
+ strokecolor="black"\r
+ />\r
+ <path name="Fig10.3.1"\r
+ description="org.argouml.uml.diagram.ui.FigFeaturesCompartment$FigSeperator"\r
+ fill="1"\r
+ fillcolor="white"\r
+ stroke="1"\r
+ strokecolor="black"\r
+ >\r
+ <moveto x="41"\r
+ y="291" />\r
+ <lineto x="148"\r
+ y="291" />\r
+ </path>\r
+ <text name="Fig10.3.2"\r
+ x="41"\r
+ y="292"\r
+ fill="0"\r
+ fillcolor="white"\r
+ stroke="0"\r
+ strokecolor="black"\r
+ font="Dialog"\r
+ textsize="10"\r
+ >serialize() : String</text>\r
+ <text name="Fig10.3.3"\r
+ x="41"\r
+ y="306"\r
+ fill="0"\r
+ fillcolor="white"\r
+ stroke="0"\r
+ strokecolor="black"\r
+ font="Dialog"\r
+ textsize="10"\r
+ >newOperation() : void</text>\r
+ </group>\r
+ <group name="Fig10.4"\r
+ description="org.argouml.uml.diagram.ui.FigAttributesCompartment[41, 240, 107, 50]"\r
+ fill="1"\r
+ fillcolor="white"\r
+ stroke="0"\r
+ strokecolor="black"\r
+ >\r
+ <private>\r
+ </private>\r
+ \r
+ <rectangle name="Fig10.4.0"\r
+ x="41"\r
+ y="240"\r
+ width="107"\r
+ height="50"\r
+ fill="1"\r
+ fillcolor="white"\r
+ stroke="0"\r
+ strokecolor="black"\r
+ />\r
+ <path name="Fig10.4.1"\r
+ description="org.argouml.uml.diagram.ui.FigFeaturesCompartment$FigSeperator"\r
+ fill="1"\r
+ fillcolor="white"\r
+ stroke="1"\r
+ strokecolor="black"\r
+ >\r
+ <moveto x="41"\r
+ y="240" />\r
+ <lineto x="148"\r
+ y="240" />\r
+ </path>\r
+ <text name="Fig10.4.2"\r
+ x="41"\r
+ y="241"\r
+ fill="0"\r
+ fillcolor="white"\r
+ stroke="0"\r
+ strokecolor="black"\r
+ font="Dialog"\r
+ textsize="10"\r
+ >changeList : long</text>\r
+ <text name="Fig10.4.3"\r
+ x="41"\r
+ y="255"\r
+ fill="0"\r
+ fillcolor="white"\r
+ stroke="0"\r
+ strokecolor="black"\r
+ font="Dialog"\r
+ textsize="10"\r
+ >buildDate : Date</text>\r
+ <text name="Fig10.4.4"\r
+ x="41"\r
+ y="269"\r
+ fill="0"\r
+ fillcolor="white"\r
+ stroke="0"\r
+ strokecolor="black"\r
+ font="Dialog"\r
+ textsize="10"\r
+ >UID : long</text>\r
+ </group>\r
+ <rectangle name="Fig10.5"\r
+ x="40"\r
+ y="216"\r
+ width="108"\r
+ height="111"\r
+ fill="0"\r
+ fillcolor="white"\r
+ stroke="1"\r
+ strokecolor="black"\r
+ />\r
+ </group>\r
+ <group name="Fig11"\r
+ description="org.argouml.uml.diagram.static_structure.ui.FigClass[584, 216, 90, 65]pathVisible=false;operationsVisible=true;attributesVisible=true"\r
+ href="-64--88-1-101-3dc093e3:1157f1866b2:-8000:0000000000000A42"\r
+ fill="1"\r
+ fillcolor="white"\r
+ stroke="1"\r
+ strokecolor="black"\r
+ >\r
+ <private>\r
+ </private>\r
+ \r
+ <rectangle name="Fig11.0"\r
+ x="584"\r
+ y="216"\r
+ width="90"\r
+ height="65"\r
+ fill="1"\r
+ fillcolor="white"\r
+ stroke="0"\r
+ strokecolor="black"\r
+ />\r
+ <group name="Fig11.1"\r
+ description="org.argouml.uml.diagram.ui.FigStereotypesCompartment[584, 216, 90, 2]"\r
+ href="-64--88-1-101-3dc093e3:1157f1866b2:-8000:0000000000000A42"\r
+ fill="1"\r
+ fillcolor="white"\r
+ stroke="1"\r
+ strokecolor="black"\r
+ >\r
+ <private>\r
+ </private>\r
+ \r
+ <rectangle name="Fig11.1.0"\r
+ x="584"\r
+ y="216"\r
+ width="90"\r
+ height="2"\r
+ fill="1"\r
+ fillcolor="white"\r
+ stroke="1"\r
+ strokecolor="black"\r
+ />\r
+ </group>\r
+ <text name="Fig11.2"\r
+ x="584"\r
+ y="218"\r
+ fill="1"\r
+ fillcolor="white"\r
+ stroke="0"\r
+ strokecolor="red"\r
+ font="Dialog"\r
+ textsize="10"\r
+ >MxDeployment</text>\r
+ <group name="Fig11.3"\r
+ description="org.argouml.uml.diagram.ui.FigOperationsCompartment[585, 261, 89, 20]"\r
+ fill="1"\r
+ fillcolor="white"\r
+ stroke="0"\r
+ strokecolor="black"\r
+ >\r
+ <private>\r
+ </private>\r
+ \r
+ <rectangle name="Fig11.3.0"\r
+ x="585"\r
+ y="261"\r
+ width="89"\r
+ height="20"\r
+ fill="1"\r
+ fillcolor="white"\r
+ stroke="0"\r
+ strokecolor="black"\r
+ />\r
+ <path name="Fig11.3.1"\r
+ description="org.argouml.uml.diagram.ui.FigFeaturesCompartment$FigSeperator"\r
+ fill="1"\r
+ fillcolor="white"\r
+ stroke="1"\r
+ strokecolor="black"\r
+ >\r
+ <moveto x="585"\r
+ y="261" />\r
+ <lineto x="674"\r
+ y="261" />\r
+ </path>\r
+ </group>\r
+ <group name="Fig11.4"\r
+ description="org.argouml.uml.diagram.ui.FigAttributesCompartment[585, 240, 89, 20]"\r
+ fill="1"\r
+ fillcolor="white"\r
+ stroke="0"\r
+ strokecolor="black"\r
+ >\r
+ <private>\r
+ </private>\r
+ \r
+ <rectangle name="Fig11.4.0"\r
+ x="585"\r
+ y="240"\r
+ width="89"\r
+ height="20"\r
+ fill="1"\r
+ fillcolor="white"\r
+ stroke="0"\r
+ strokecolor="black"\r
+ />\r
+ <path name="Fig11.4.1"\r
+ description="org.argouml.uml.diagram.ui.FigFeaturesCompartment$FigSeperator"\r
+ fill="1"\r
+ fillcolor="white"\r
+ stroke="1"\r
+ strokecolor="black"\r
+ >\r
+ <moveto x="585"\r
+ y="240" />\r
+ <lineto x="674"\r
+ y="240" />\r
+ </path>\r
+ </group>\r
+ <rectangle name="Fig11.5"\r
+ x="584"\r
+ y="216"\r
+ width="90"\r
+ height="65"\r
+ fill="0"\r
+ fillcolor="white"\r
+ stroke="1"\r
+ strokecolor="black"\r
+ />\r
+ </group>\r
+ <group name="Fig12"\r
+ description="org.argouml.uml.diagram.static_structure.ui.FigClass[888, 312, 90, 65]pathVisible=false;operationsVisible=true;attributesVisible=true"\r
+ href="-64--88-1-101-3dc093e3:1157f1866b2:-8000:0000000000000A44"\r
+ fill="1"\r
+ fillcolor="white"\r
+ stroke="1"\r
+ strokecolor="black"\r
+ >\r
+ <private>\r
+ </private>\r
+ \r
+ <rectangle name="Fig12.0"\r
+ x="888"\r
+ y="312"\r
+ width="90"\r
+ height="65"\r
+ fill="1"\r
+ fillcolor="white"\r
+ stroke="0"\r
+ strokecolor="black"\r
+ />\r
+ <group name="Fig12.1"\r
+ description="org.argouml.uml.diagram.ui.FigStereotypesCompartment[888, 312, 90, 2]"\r
+ href="-64--88-1-101-3dc093e3:1157f1866b2:-8000:0000000000000A44"\r
+ fill="1"\r
+ fillcolor="white"\r
+ stroke="1"\r
+ strokecolor="black"\r
+ >\r
+ <private>\r
+ </private>\r
+ \r
+ <rectangle name="Fig12.1.0"\r
+ x="888"\r
+ y="312"\r
+ width="90"\r
+ height="2"\r
+ fill="1"\r
+ fillcolor="white"\r
+ stroke="1"\r
+ strokecolor="black"\r
+ />\r
+ </group>\r
+ <text name="Fig12.2"\r
+ x="888"\r
+ y="314"\r
+ fill="1"\r
+ fillcolor="white"\r
+ stroke="0"\r
+ strokecolor="red"\r
+ font="Dialog"\r
+ textsize="10"\r
+ >CapCoTestRun</text>\r
+ <group name="Fig12.3"\r
+ description="org.argouml.uml.diagram.ui.FigOperationsCompartment[889, 357, 89, 20]"\r
+ fill="1"\r
+ fillcolor="white"\r
+ stroke="0"\r
+ strokecolor="black"\r
+ >\r
+ <private>\r
+ </private>\r
+ \r
+ <rectangle name="Fig12.3.0"\r
+ x="889"\r
+ y="357"\r
+ width="89"\r
+ height="20"\r
+ fill="1"\r
+ fillcolor="white"\r
+ stroke="0"\r
+ strokecolor="black"\r
+ />\r
+ <path name="Fig12.3.1"\r
+ description="org.argouml.uml.diagram.ui.FigFeaturesCompartment$FigSeperator"\r
+ fill="1"\r
+ fillcolor="white"\r
+ stroke="1"\r
+ strokecolor="black"\r
+ >\r
+ <moveto x="889"\r
+ y="357" />\r
+ <lineto x="978"\r
+ y="357" />\r
+ </path>\r
+ </group>\r
+ <group name="Fig12.4"\r
+ description="org.argouml.uml.diagram.ui.FigAttributesCompartment[889, 336, 89, 20]"\r
+ fill="1"\r
+ fillcolor="white"\r
+ stroke="0"\r
+ strokecolor="black"\r
+ >\r
+ <private>\r
+ </private>\r
+ \r
+ <rectangle name="Fig12.4.0"\r
+ x="889"\r
+ y="336"\r
+ width="89"\r
+ height="20"\r
+ fill="1"\r
+ fillcolor="white"\r
+ stroke="0"\r
+ strokecolor="black"\r
+ />\r
+ <path name="Fig12.4.1"\r
+ description="org.argouml.uml.diagram.ui.FigFeaturesCompartment$FigSeperator"\r
+ fill="1"\r
+ fillcolor="white"\r
+ stroke="1"\r
+ strokecolor="black"\r
+ >\r
+ <moveto x="889"\r
+ y="336" />\r
+ <lineto x="978"\r
+ y="336" />\r
+ </path>\r
+ </group>\r
+ <rectangle name="Fig12.5"\r
+ x="888"\r
+ y="312"\r
+ width="90"\r
+ height="65"\r
+ fill="0"\r
+ fillcolor="white"\r
+ stroke="1"\r
+ strokecolor="black"\r
+ />\r
+ </group>\r
+ <group name="Fig13"\r
+ description="org.argouml.uml.diagram.static_structure.ui.FigClass[888, 216, 90, 65]pathVisible=false;operationsVisible=true;attributesVisible=true"\r
+ href="-64--88-1-101-3dc093e3:1157f1866b2:-8000:0000000000000A46"\r
+ fill="1"\r
+ fillcolor="white"\r
+ stroke="1"\r
+ strokecolor="black"\r
+ >\r
+ <private>\r
+ </private>\r
+ \r
+ <rectangle name="Fig13.0"\r
+ x="888"\r
+ y="216"\r
+ width="90"\r
+ height="65"\r
+ fill="1"\r
+ fillcolor="white"\r
+ stroke="0"\r
+ strokecolor="black"\r
+ />\r
+ <group name="Fig13.1"\r
+ description="org.argouml.uml.diagram.ui.FigStereotypesCompartment[888, 216, 90, 2]"\r
+ href="-64--88-1-101-3dc093e3:1157f1866b2:-8000:0000000000000A46"\r
+ fill="1"\r
+ fillcolor="white"\r
+ stroke="1"\r
+ strokecolor="black"\r
+ >\r
+ <private>\r
+ </private>\r
+ \r
+ <rectangle name="Fig13.1.0"\r
+ x="888"\r
+ y="216"\r
+ width="90"\r
+ height="2"\r
+ fill="1"\r
+ fillcolor="white"\r
+ stroke="1"\r
+ strokecolor="black"\r
+ />\r
+ </group>\r
+ <text name="Fig13.2"\r
+ x="888"\r
+ y="218"\r
+ fill="1"\r
+ fillcolor="white"\r
+ stroke="0"\r
+ strokecolor="red"\r
+ font="Dialog"\r
+ textsize="10"\r
+ >MxXmlTestRun</text>\r
+ <group name="Fig13.3"\r
+ description="org.argouml.uml.diagram.ui.FigOperationsCompartment[889, 261, 89, 20]"\r
+ fill="1"\r
+ fillcolor="white"\r
+ stroke="0"\r
+ strokecolor="black"\r
+ >\r
+ <private>\r
+ </private>\r
+ \r
+ <rectangle name="Fig13.3.0"\r
+ x="889"\r
+ y="261"\r
+ width="89"\r
+ height="20"\r
+ fill="1"\r
+ fillcolor="white"\r
+ stroke="0"\r
+ strokecolor="black"\r
+ />\r
+ <path name="Fig13.3.1"\r
+ description="org.argouml.uml.diagram.ui.FigFeaturesCompartment$FigSeperator"\r
+ fill="1"\r
+ fillcolor="white"\r
+ stroke="1"\r
+ strokecolor="black"\r
+ >\r
+ <moveto x="889"\r
+ y="261" />\r
+ <lineto x="978"\r
+ y="261" />\r
+ </path>\r
+ </group>\r
+ <group name="Fig13.4"\r
+ description="org.argouml.uml.diagram.ui.FigAttributesCompartment[889, 240, 89, 20]"\r
+ fill="1"\r
+ fillcolor="white"\r
+ stroke="0"\r
+ strokecolor="black"\r
+ >\r
+ <private>\r
+ </private>\r
+ \r
+ <rectangle name="Fig13.4.0"\r
+ x="889"\r
+ y="240"\r
+ width="89"\r
+ height="20"\r
+ fill="1"\r
+ fillcolor="white"\r
+ stroke="0"\r
+ strokecolor="black"\r
+ />\r
+ <path name="Fig13.4.1"\r
+ description="org.argouml.uml.diagram.ui.FigFeaturesCompartment$FigSeperator"\r
+ fill="1"\r
+ fillcolor="white"\r
+ stroke="1"\r
+ strokecolor="black"\r
+ >\r
+ <moveto x="889"\r
+ y="240" />\r
+ <lineto x="978"\r
+ y="240" />\r
+ </path>\r
+ </group>\r
+ <rectangle name="Fig13.5"\r
+ x="888"\r
+ y="216"\r
+ width="90"\r
+ height="65"\r
+ fill="0"\r
+ fillcolor="white"\r
+ stroke="1"\r
+ strokecolor="black"\r
+ />\r
+ </group>\r
+ <group name="Fig14"\r
+ description="org.argouml.uml.diagram.ui.FigAssociation"\r
+ href="-64--88-1-101-3dc093e3:1157f1866b2:-8000:0000000000000A50"\r
+ stroke="1"\r
+ strokecolor="black"\r
+ >\r
+ <private>\r
+ sourcePortFig="Fig8.0"\r
+ destPortFig="Fig7.0"\r
+ sourceFigNode="Fig8"\r
+ destFigNode="Fig7"\r
+ </private>\r
+ <path name="Fig14.0"\r
+ description="org.tigris.gef.presentation.FigPoly"\r
+ fill="0"\r
+ fillcolor="white"\r
+ stroke="1"\r
+ strokecolor="black"\r
+ >\r
+ <moveto x="232"\r
+ y="672" />\r
+ <lineto x="138"\r
+ y="672" />\r
+ </path>\r
+ </group>\r
+ <group name="Fig15"\r
+ description="org.argouml.uml.diagram.ui.FigAssociation"\r
+ href="-64--88-1-101--7f8968dd:1157f72a2bb:-8000:0000000000000A13"\r
+ stroke="1"\r
+ strokecolor="black"\r
+ >\r
+ <private>\r
+ sourcePortFig="Fig2.0"\r
+ destPortFig="Fig8.0"\r
+ sourceFigNode="Fig2"\r
+ destFigNode="Fig8"\r
+ </private>\r
+ <path name="Fig15.0"\r
+ description="org.tigris.gef.presentation.FigPoly"\r
+ fill="0"\r
+ fillcolor="white"\r
+ stroke="1"\r
+ strokecolor="black"\r
+ >\r
+ <moveto x="536"\r
+ y="792" />\r
+ <lineto x="280"\r
+ y="792" />\r
+ <lineto x="280"\r
+ y="705" />\r
+ </path>\r
+ </group>\r
+ <group name="Fig16"\r
+ description="org.argouml.uml.diagram.ui.FigAssociation"\r
+ href="-64--88-1-101--7f8968dd:1157f72a2bb:-8000:0000000000000A1A"\r
+ stroke="1"\r
+ strokecolor="black"\r
+ >\r
+ <private>\r
+ sourcePortFig="Fig2.0"\r
+ destPortFig="Fig5.0"\r
+ sourceFigNode="Fig2"\r
+ destFigNode="Fig5"\r
+ </private>\r
+ <path name="Fig16.0"\r
+ description="org.tigris.gef.presentation.FigPoly"\r
+ fill="0"\r
+ fillcolor="white"\r
+ stroke="1"\r
+ strokecolor="black"\r
+ >\r
+ <moveto x="626"\r
+ y="792" />\r
+ <lineto x="744"\r
+ y="792" />\r
+ <lineto x="744"\r
+ y="689" />\r
+ </path>\r
+ </group>\r
+ <group name="Fig17"\r
+ description="org.argouml.uml.diagram.ui.FigAssociation"\r
+ href="-64--88-1-101--7f8968dd:1157f72a2bb:-8000:0000000000000A21"\r
+ stroke="1"\r
+ strokecolor="black"\r
+ >\r
+ <private>\r
+ sourcePortFig="Fig4.0"\r
+ destPortFig="Fig5.0"\r
+ sourceFigNode="Fig4"\r
+ destFigNode="Fig5"\r
+ </private>\r
+ <path name="Fig17.0"\r
+ description="org.tigris.gef.presentation.FigPoly"\r
+ fill="0"\r
+ fillcolor="white"\r
+ stroke="1"\r
+ strokecolor="black"\r
+ >\r
+ <moveto x="896"\r
+ y="752" />\r
+ <lineto x="896"\r
+ y="664" />\r
+ <lineto x="778"\r
+ y="664" />\r
+ </path>\r
+ </group>\r
+ <group name="Fig18"\r
+ description="org.argouml.uml.diagram.static_structure.ui.FigClass[376, 472, 94, 65]pathVisible=false;operationsVisible=true;attributesVisible=true"\r
+ href="-64--88-1-101--7f8968dd:1157f72a2bb:-8000:0000000000000A28"\r
+ fill="1"\r
+ fillcolor="white"\r
+ stroke="1"\r
+ strokecolor="black"\r
+ >\r
+ <private>\r
+ </private>\r
+ \r
+ <rectangle name="Fig18.0"\r
+ x="376"\r
+ y="472"\r
+ width="94"\r
+ height="65"\r
+ fill="1"\r
+ fillcolor="white"\r
+ stroke="0"\r
+ strokecolor="black"\r
+ />\r
+ <group name="Fig18.1"\r
+ description="org.argouml.uml.diagram.ui.FigStereotypesCompartment[376, 472, 94, 2]"\r
+ href="-64--88-1-101--7f8968dd:1157f72a2bb:-8000:0000000000000A28"\r
+ fill="1"\r
+ fillcolor="white"\r
+ stroke="1"\r
+ strokecolor="black"\r
+ >\r
+ <private>\r
+ </private>\r
+ \r
+ <rectangle name="Fig18.1.0"\r
+ x="376"\r
+ y="472"\r
+ width="94"\r
+ height="2"\r
+ fill="1"\r
+ fillcolor="white"\r
+ stroke="1"\r
+ strokecolor="black"\r
+ />\r
+ </group>\r
+ <text name="Fig18.2"\r
+ x="376"\r
+ y="474"\r
+ fill="1"\r
+ fillcolor="white"\r
+ stroke="0"\r
+ strokecolor="red"\r
+ font="Dialog"\r
+ textsize="10"\r
+ >DatabaseDeployer</text>\r
+ <group name="Fig18.3"\r
+ description="org.argouml.uml.diagram.ui.FigOperationsCompartment[377, 517, 93, 20]"\r
+ fill="1"\r
+ fillcolor="white"\r
+ stroke="0"\r
+ strokecolor="black"\r
+ >\r
+ <private>\r
+ </private>\r
+ \r
+ <rectangle name="Fig18.3.0"\r
+ x="377"\r
+ y="517"\r
+ width="93"\r
+ height="20"\r
+ fill="1"\r
+ fillcolor="white"\r
+ stroke="0"\r
+ strokecolor="black"\r
+ />\r
+ <path name="Fig18.3.1"\r
+ description="org.argouml.uml.diagram.ui.FigFeaturesCompartment$FigSeperator"\r
+ fill="1"\r
+ fillcolor="white"\r
+ stroke="1"\r
+ strokecolor="black"\r
+ >\r
+ <moveto x="377"\r
+ y="517" />\r
+ <lineto x="470"\r
+ y="517" />\r
+ </path>\r
+ </group>\r
+ <group name="Fig18.4"\r
+ description="org.argouml.uml.diagram.ui.FigAttributesCompartment[377, 496, 93, 20]"\r
+ fill="1"\r
+ fillcolor="white"\r
+ stroke="0"\r
+ strokecolor="black"\r
+ >\r
+ <private>\r
+ </private>\r
+ \r
+ <rectangle name="Fig18.4.0"\r
+ x="377"\r
+ y="496"\r
+ width="93"\r
+ height="20"\r
+ fill="1"\r
+ fillcolor="white"\r
+ stroke="0"\r
+ strokecolor="black"\r
+ />\r
+ <path name="Fig18.4.1"\r
+ description="org.argouml.uml.diagram.ui.FigFeaturesCompartment$FigSeperator"\r
+ fill="1"\r
+ fillcolor="white"\r
+ stroke="1"\r
+ strokecolor="black"\r
+ >\r
+ <moveto x="377"\r
+ y="496" />\r
+ <lineto x="470"\r
+ y="496" />\r
+ </path>\r
+ </group>\r
+ <rectangle name="Fig18.5"\r
+ x="376"\r
+ y="472"\r
+ width="94"\r
+ height="65"\r
+ fill="0"\r
+ fillcolor="white"\r
+ stroke="1"\r
+ strokecolor="black"\r
+ />\r
+ </group>\r
+ <group name="Fig19"\r
+ description="org.argouml.uml.diagram.static_structure.ui.FigClass[376, 568, 131, 65]pathVisible=false;operationsVisible=true;attributesVisible=true"\r
+ href="-64--88-1-101--7f8968dd:1157f72a2bb:-8000:0000000000000A2A"\r
+ fill="1"\r
+ fillcolor="white"\r
+ stroke="1"\r
+ strokecolor="black"\r
+ >\r
+ <private>\r
+ </private>\r
+ \r
+ <rectangle name="Fig19.0"\r
+ x="376"\r
+ y="568"\r
+ width="131"\r
+ height="65"\r
+ fill="1"\r
+ fillcolor="white"\r
+ stroke="0"\r
+ strokecolor="black"\r
+ />\r
+ <group name="Fig19.1"\r
+ description="org.argouml.uml.diagram.ui.FigStereotypesCompartment[376, 568, 131, 2]"\r
+ href="-64--88-1-101--7f8968dd:1157f72a2bb:-8000:0000000000000A2A"\r
+ fill="1"\r
+ fillcolor="white"\r
+ stroke="1"\r
+ strokecolor="black"\r
+ >\r
+ <private>\r
+ </private>\r
+ \r
+ <rectangle name="Fig19.1.0"\r
+ x="376"\r
+ y="568"\r
+ width="131"\r
+ height="2"\r
+ fill="1"\r
+ fillcolor="white"\r
+ stroke="1"\r
+ strokecolor="black"\r
+ />\r
+ </group>\r
+ <text name="Fig19.2"\r
+ x="376"\r
+ y="570"\r
+ fill="1"\r
+ fillcolor="white"\r
+ stroke="0"\r
+ strokecolor="red"\r
+ font="Dialog"\r
+ textsize="10"\r
+ >VersionedFileSetDeployer</text>\r
+ <group name="Fig19.3"\r
+ description="org.argouml.uml.diagram.ui.FigOperationsCompartment[377, 613, 130, 20]"\r
+ fill="1"\r
+ fillcolor="white"\r
+ stroke="0"\r
+ strokecolor="black"\r
+ >\r
+ <private>\r
+ </private>\r
+ \r
+ <rectangle name="Fig19.3.0"\r
+ x="377"\r
+ y="613"\r
+ width="130"\r
+ height="20"\r
+ fill="1"\r
+ fillcolor="white"\r
+ stroke="0"\r
+ strokecolor="black"\r
+ />\r
+ <path name="Fig19.3.1"\r
+ description="org.argouml.uml.diagram.ui.FigFeaturesCompartment$FigSeperator"\r
+ fill="1"\r
+ fillcolor="white"\r
+ stroke="1"\r
+ strokecolor="black"\r
+ >\r
+ <moveto x="377"\r
+ y="613" />\r
+ <lineto x="507"\r
+ y="613" />\r
+ </path>\r
+ </group>\r
+ <group name="Fig19.4"\r
+ description="org.argouml.uml.diagram.ui.FigAttributesCompartment[377, 592, 130, 20]"\r
+ fill="1"\r
+ fillcolor="white"\r
+ stroke="0"\r
+ strokecolor="black"\r
+ >\r
+ <private>\r
+ </private>\r
+ \r
+ <rectangle name="Fig19.4.0"\r
+ x="377"\r
+ y="592"\r
+ width="130"\r
+ height="20"\r
+ fill="1"\r
+ fillcolor="white"\r
+ stroke="0"\r
+ strokecolor="black"\r
+ />\r
+ <path name="Fig19.4.1"\r
+ description="org.argouml.uml.diagram.ui.FigFeaturesCompartment$FigSeperator"\r
+ fill="1"\r
+ fillcolor="white"\r
+ stroke="1"\r
+ strokecolor="black"\r
+ >\r
+ <moveto x="377"\r
+ y="592" />\r
+ <lineto x="507"\r
+ y="592" />\r
+ </path>\r
+ </group>\r
+ <rectangle name="Fig19.5"\r
+ x="376"\r
+ y="568"\r
+ width="131"\r
+ height="65"\r
+ fill="0"\r
+ fillcolor="white"\r
+ stroke="1"\r
+ strokecolor="black"\r
+ />\r
+ </group>\r
+ <group name="Fig20"\r
+ description="org.argouml.uml.diagram.ui.FigAssociation"\r
+ href="-64--88-1-101--7f8968dd:1157f72a2bb:-8000:0000000000000A2C"\r
+ stroke="1"\r
+ strokecolor="black"\r
+ >\r
+ <private>\r
+ sourcePortFig="Fig11.0"\r
+ destPortFig="Fig18.0"\r
+ sourceFigNode="Fig11"\r
+ destFigNode="Fig18"\r
+ </private>\r
+ <path name="Fig20.0"\r
+ description="org.tigris.gef.presentation.FigPoly"\r
+ fill="0"\r
+ fillcolor="white"\r
+ stroke="1"\r
+ strokecolor="black"\r
+ >\r
+ <moveto x="584"\r
+ y="240" />\r
+ <lineto x="400"\r
+ y="240" />\r
+ <lineto x="400"\r
+ y="472" />\r
+ </path>\r
+ </group>\r
+ <group name="Fig21"\r
+ description="org.argouml.uml.diagram.ui.FigAssociation"\r
+ href="-64--88-1-101--7f8968dd:1157f72a2bb:-8000:0000000000000A33"\r
+ stroke="1"\r
+ strokecolor="black"\r
+ >\r
+ <private>\r
+ sourcePortFig="Fig11.0"\r
+ destPortFig="Fig19.0"\r
+ sourceFigNode="Fig11"\r
+ destFigNode="Fig19"\r
+ </private>\r
+ <path name="Fig21.0"\r
+ description="org.tigris.gef.presentation.FigPoly"\r
+ fill="0"\r
+ fillcolor="white"\r
+ stroke="1"\r
+ strokecolor="black"\r
+ >\r
+ <moveto x="584"\r
+ y="272" />\r
+ <lineto x="488"\r
+ y="272" />\r
+ <lineto x="488"\r
+ y="568" />\r
+ </path>\r
+ </group>\r
+ <text name="Fig22"\r
+ x="24"\r
+ y="968"\r
+ fill="1"\r
+ fillcolor="white"\r
+ stroke="1"\r
+ strokecolor="black"\r
+ font="Serif"\r
+ textsize="10"\r
+ >ARGEO SLC</text>\r
+ <text name="Fig23"\r
+ x="24"\r
+ y="144"\r
+ fill="1"\r
+ fillcolor="white"\r
+ stroke="1"\r
+ strokecolor="black"\r
+ font="Serif"\r
+ textsize="10"\r
+ >CAPCO / MUREX SPECIFIC</text>\r
+ <group name="Fig24"\r
+ description="org.argouml.uml.diagram.ui.FigGeneralization"\r
+ href="-64--88-1-101--4a0353a6:1158fc10f03:-8000:0000000000000A42"\r
+ stroke="1"\r
+ strokecolor="black"\r
+ >\r
+ <private>\r
+ sourcePortFig="Fig10.0"\r
+ destPortFig="Fig7.0"\r
+ sourceFigNode="Fig10"\r
+ destFigNode="Fig7"\r
+ </private>\r
+ <path name="Fig24.0"\r
+ description="org.tigris.gef.presentation.FigPoly"\r
+ fill="0"\r
+ fillcolor="white"\r
+ stroke="1"\r
+ strokecolor="black"\r
+ >\r
+ <moveto x="88"\r
+ y="327" />\r
+ <lineto x="88"\r
+ y="640" />\r
+ </path>\r
+ </group>\r
+ <group name="Fig25"\r
+ description="org.argouml.uml.diagram.ui.FigGeneralization"\r
+ href="-64--88-1-101--4a0353a6:1158fc10f03:-8000:0000000000000A43"\r
+ stroke="1"\r
+ strokecolor="black"\r
+ >\r
+ <private>\r
+ sourcePortFig="Fig9.0"\r
+ destPortFig="Fig8.0"\r
+ sourceFigNode="Fig9"\r
+ destFigNode="Fig8"\r
+ </private>\r
+ <path name="Fig25.0"\r
+ description="org.tigris.gef.presentation.FigPoly"\r
+ fill="0"\r
+ fillcolor="white"\r
+ stroke="1"\r
+ strokecolor="black"\r
+ >\r
+ <moveto x="272"\r
+ y="311" />\r
+ <lineto x="272"\r
+ y="640" />\r
+ </path>\r
+ </group>\r
+ <group name="Fig26"\r
+ description="org.argouml.uml.diagram.ui.FigGeneralization"\r
+ href="-64--88-1-101--4a0353a6:1158fc10f03:-8000:0000000000000A44"\r
+ stroke="1"\r
+ strokecolor="black"\r
+ >\r
+ <private>\r
+ sourcePortFig="Fig6.0"\r
+ destPortFig="Fig5.0"\r
+ sourceFigNode="Fig6"\r
+ destFigNode="Fig5"\r
+ </private>\r
+ <path name="Fig26.0"\r
+ description="org.tigris.gef.presentation.FigPoly"\r
+ fill="0"\r
+ fillcolor="white"\r
+ stroke="1"\r
+ strokecolor="black"\r
+ >\r
+ <moveto x="744"\r
+ y="325" />\r
+ <lineto x="744"\r
+ y="624" />\r
+ </path>\r
+ </group>\r
+ <group name="Fig27"\r
+ description="org.argouml.uml.diagram.ui.FigGeneralization"\r
+ href="-64--88-1-101--4a0353a6:1158fc10f03:-8000:0000000000000A46"\r
+ stroke="1"\r
+ strokecolor="black"\r
+ >\r
+ <private>\r
+ sourcePortFig="Fig12.0"\r
+ destPortFig="Fig4.0"\r
+ sourceFigNode="Fig12"\r
+ destFigNode="Fig4"\r
+ </private>\r
+ <path name="Fig27.0"\r
+ description="org.tigris.gef.presentation.FigPoly"\r
+ fill="0"\r
+ fillcolor="white"\r
+ stroke="1"\r
+ strokecolor="black"\r
+ >\r
+ <moveto x="944"\r
+ y="377" />\r
+ <lineto x="944"\r
+ y="752" />\r
+ </path>\r
+ </group>\r
+ <group name="Fig28"\r
+ description="org.argouml.uml.diagram.ui.FigGeneralization"\r
+ href="-64--88-1-101--4a0353a6:1158fc10f03:-8000:0000000000000A47"\r
+ stroke="1"\r
+ strokecolor="black"\r
+ >\r
+ <private>\r
+ sourcePortFig="Fig13.0"\r
+ destPortFig="Fig12.0"\r
+ sourceFigNode="Fig13"\r
+ destFigNode="Fig12"\r
+ </private>\r
+ <path name="Fig28.0"\r
+ description="org.tigris.gef.presentation.FigPoly"\r
+ fill="0"\r
+ fillcolor="white"\r
+ stroke="1"\r
+ strokecolor="black"\r
+ >\r
+ <moveto x="944"\r
+ y="281" />\r
+ <lineto x="944"\r
+ y="312" />\r
+ </path>\r
+ </group>\r
+ <group name="Fig29"\r
+ description="org.argouml.uml.diagram.ui.FigGeneralization"\r
+ href="-64--88-1-101--4a0353a6:1158fc10f03:-8000:0000000000000A48"\r
+ stroke="1"\r
+ strokecolor="black"\r
+ >\r
+ <private>\r
+ sourcePortFig="Fig2.0"\r
+ destPortFig="Fig3.0"\r
+ sourceFigNode="Fig2"\r
+ destFigNode="Fig3"\r
+ </private>\r
+ <path name="Fig29.0"\r
+ description="org.tigris.gef.presentation.FigPoly"\r
+ fill="0"\r
+ fillcolor="white"\r
+ stroke="1"\r
+ strokecolor="black"\r
+ >\r
+ <moveto x="592"\r
+ y="817" />\r
+ <lineto x="592"\r
+ y="864" />\r
+ </path>\r
+ </group>\r
+ <group name="Fig30"\r
+ description="org.argouml.uml.diagram.ui.FigGeneralization"\r
+ href="-64--88-1-101--4a0353a6:1158fc10f03:-8000:0000000000000A49"\r
+ stroke="1"\r
+ strokecolor="black"\r
+ >\r
+ <private>\r
+ sourcePortFig="Fig4.0"\r
+ destPortFig="Fig3.0"\r
+ sourceFigNode="Fig4"\r
+ destFigNode="Fig3"\r
+ </private>\r
+ <path name="Fig30.0"\r
+ description="org.tigris.gef.presentation.FigPoly"\r
+ fill="0"\r
+ fillcolor="white"\r
+ stroke="1"\r
+ strokecolor="black"\r
+ >\r
+ <moveto x="904"\r
+ y="817" />\r
+ <lineto x="904"\r
+ y="840" />\r
+ <lineto x="592"\r
+ y="840" />\r
+ <lineto x="592"\r
+ y="864" />\r
+ </path>\r
+ </group>\r
+</pgml>\r
+<pgml description="org.argouml.uml.diagram.use_case.ui.UMLUseCaseDiagram|-64--88-1-101-3dc093e3:1157f1866b2:-8000:00000000000009EC"\r
+ name="Use Case Diagram 1"\r
+>\r
+</pgml>\r
+<todo>\r
+<todolist>\r
+</todolist>\r
+<resolvedcritics>\r
+</resolvedcritics>\r
+</todo>\r
+</uml>\r
--- /dev/null
+<?xml version = "1.0" encoding = "UTF-8" ?>\r
+<uml version="5">\r
+ <argo version="5">\r
+ <documentation>\r
+ <authorname></authorname>\r
+ <authoremail></authoremail>\r
+ <version>0.24</version>\r
+ <description>\r
+ \r
+ </description>\r
+ </documentation>\r
+ <settings>\r
+ <notationlanguage>UML 1.4</notationlanguage>\r
+ <useguillemots>false</useguillemots>\r
+ <showvisibility>false</showvisibility>\r
+ <showmultiplicity>false</showmultiplicity>\r
+ <showinitialvalue>false</showinitialvalue>\r
+ <showproperties>false</showproperties>\r
+ <showtypes>true</showtypes>\r
+ <showstereotypes>false</showstereotypes>\r
+ <showsingularmultiplicities>true</showsingularmultiplicities>\r
+ <defaultshadowwidth>1</defaultshadowwidth>\r
+ </settings>\r
+ \r
+ <searchpath href="PROJECT_DIR" />\r
+ <member type="xmi"\r
+ name="org.argeo.slc.zargo.xmi" />\r
+ <member type="pgml"\r
+ name="org.argeo.slc.zargo_orgargeoinfrastructure.pgml"\r
+ diagramclass="org.argouml.uml.diagram.static_structure.ui.UMLClassDiagram"\r
+ diagramname="org.argeo.infrastructure" />\r
+ <member type="pgml"\r
+ name="org.argeo.slc.zargo_Diagrammedecasdutilisation1.pgml"\r
+ diagramclass="org.argouml.uml.diagram.use_case.ui.UMLUseCaseDiagram"\r
+ diagramname="Diagramme de cas d'utilisation 1" />\r
+ <member type="todo"\r
+ name="org.argeo.slc.zargo.todo" />\r
+ <historyfile name="" />\r
+ </argo>\r
+<XMI xmi.version = '1.2' xmlns:UML = 'org.omg.xmi.namespace.UML' timestamp = 'Thu Oct 11 18:27:29 CEST 2007'>\r
+ <XMI.header> <XMI.documentation>\r
+ <XMI.exporter>ArgoUML (using Netbeans XMI Writer version 1.0)</XMI.exporter>\r
+ <XMI.exporterVersion>0.24(5) revised on $Date: 2006-11-06 19:55:22 +0100 (Mon, 06 Nov 2006) $ </XMI.exporterVersion>\r
+ </XMI.documentation>\r
+ <XMI.metamodel xmi.name="UML" xmi.version="1.4"/></XMI.header>\r
+ <XMI.content>\r
+ <UML:Model xmi.id = '-64--88-0-11--3bcecc2b:113edff40cb:-8000:000000000000071E'\r
+ name = 'org.argeo.infrastructure' isSpecification = 'false' isRoot = 'false'\r
+ isLeaf = 'false' isAbstract = 'false'>\r
+ <UML:Namespace.ownedElement>\r
+ <UML:Package xmi.id = '-64--88-0-11--3bcecc2b:113edff40cb:-8000:000000000000071F'\r
+ name = 'org.argeo.infrastructure.model' isSpecification = 'false' isRoot = 'false'\r
+ isLeaf = 'false' isAbstract = 'false'>\r
+ <UML:Namespace.ownedElement>\r
+ <UML:Class xmi.id = '-64--88-0-11--3bcecc2b:113edff40cb:-8000:0000000000000720'\r
+ name = 'Project' visibility = 'public' isSpecification = 'false' isRoot = 'false'\r
+ isLeaf = 'false' isAbstract = 'false' isActive = 'false'>\r
+ <UML:Classifier.feature>\r
+ <UML:Attribute xmi.id = '-64--88-0-11--3bcecc2b:113edff40cb:-8000:0000000000000723'\r
+ name = 'name' visibility = 'public' isSpecification = 'false' ownerScope = 'instance'\r
+ changeability = 'changeable' targetScope = 'instance'>\r
+ <UML:StructuralFeature.multiplicity>\r
+ <UML:Multiplicity xmi.id = '-64--88-1-101-3dc093e3:1157f1866b2:-8000:00000000000008CD'>\r
+ <UML:Multiplicity.range>\r
+ <UML:MultiplicityRange xmi.id = '-64--88-1-101-3dc093e3:1157f1866b2:-8000:00000000000008CC'\r
+ lower = '1' upper = '1'/>\r
+ </UML:Multiplicity.range>\r
+ </UML:Multiplicity>\r
+ </UML:StructuralFeature.multiplicity>\r
+ <UML:StructuralFeature.type>\r
+ <UML:Class xmi.idref = '-64--88-0-11--3bcecc2b:113edff40cb:-8000:000000000000073B'/>\r
+ </UML:StructuralFeature.type>\r
+ </UML:Attribute>\r
+ </UML:Classifier.feature>\r
+ </UML:Class>\r
+ <UML:Class xmi.id = '-64--88-0-11-7e9e46a8:113ee067f97:-8000:0000000000000732'\r
+ name = 'Artifact' visibility = 'public' isSpecification = 'false' isRoot = 'false'\r
+ isLeaf = 'false' isAbstract = 'false' isActive = 'false'>\r
+ <UML:Classifier.feature>\r
+ <UML:Attribute xmi.id = '-64--88-0-11-7e9e46a8:113ee067f97:-8000:0000000000000867'\r
+ name = 'name' visibility = 'public' isSpecification = 'false' ownerScope = 'instance'\r
+ changeability = 'changeable' targetScope = 'instance'>\r
+ <UML:StructuralFeature.multiplicity>\r
+ <UML:Multiplicity xmi.id = '-64--88-0-11-7e9e46a8:113ee067f97:-8000:000000000000086D'>\r
+ <UML:Multiplicity.range>\r
+ <UML:MultiplicityRange xmi.id = '-64--88-0-11-7e9e46a8:113ee067f97:-8000:000000000000086C'\r
+ lower = '1' upper = '1'/>\r
+ </UML:Multiplicity.range>\r
+ </UML:Multiplicity>\r
+ </UML:StructuralFeature.multiplicity>\r
+ <UML:StructuralFeature.type>\r
+ <UML:Class xmi.idref = '-64--88-0-11--3bcecc2b:113edff40cb:-8000:000000000000073B'/>\r
+ </UML:StructuralFeature.type>\r
+ </UML:Attribute>\r
+ </UML:Classifier.feature>\r
+ </UML:Class>\r
+ <UML:Class xmi.id = '-64--88-0-11-7e9e46a8:113ee067f97:-8000:000000000000072E'\r
+ name = 'Branch' visibility = 'public' isSpecification = 'false' isRoot = 'false'\r
+ isLeaf = 'false' isAbstract = 'false' isActive = 'false'/>\r
+ <UML:Class xmi.id = '-64--88-0-11-7e9e46a8:113ee067f97:-8000:0000000000000730'\r
+ name = 'Revision' visibility = 'public' isSpecification = 'false' isRoot = 'false'\r
+ isLeaf = 'false' isAbstract = 'false' isActive = 'false'/>\r
+ <UML:Association xmi.id = '-64--88-0-11-7e9e46a8:113ee067f97:-8000:0000000000000734'\r
+ name = '' isSpecification = 'false' isRoot = 'false' isLeaf = 'false' isAbstract = 'false'>\r
+ <UML:Association.connection>\r
+ <UML:AssociationEnd xmi.id = '-64--88-0-11-7e9e46a8:113ee067f97:-8000:0000000000000735'\r
+ name = 'sourceLocation' visibility = 'public' isSpecification = 'false'\r
+ isNavigable = 'true' ordering = 'unordered' aggregation = 'none' targetScope = 'instance'\r
+ changeability = 'changeable'>\r
+ <UML:AssociationEnd.multiplicity>\r
+ <UML:Multiplicity xmi.id = '-64--88-0-11-7e9e46a8:113ee067f97:-8000:000000000000073E'>\r
+ <UML:Multiplicity.range>\r
+ <UML:MultiplicityRange xmi.id = '-64--88-0-11-7e9e46a8:113ee067f97:-8000:000000000000073D'\r
+ lower = '1' upper = '1'/>\r
+ </UML:Multiplicity.range>\r
+ </UML:Multiplicity>\r
+ </UML:AssociationEnd.multiplicity>\r
+ <UML:AssociationEnd.participant>\r
+ <UML:Class xmi.idref = '-64--88-0-11-7e9e46a8:113ee067f97:-8000:00000000000007B5'/>\r
+ </UML:AssociationEnd.participant>\r
+ </UML:AssociationEnd>\r
+ <UML:AssociationEnd xmi.id = '-64--88-0-11-7e9e46a8:113ee067f97:-8000:0000000000000738'\r
+ name = 'branches' visibility = 'public' isSpecification = 'false' isNavigable = 'true'\r
+ ordering = 'unordered' aggregation = 'none' targetScope = 'instance' changeability = 'changeable'>\r
+ <UML:AssociationEnd.multiplicity>\r
+ <UML:Multiplicity xmi.id = '-64--88-0-11-7e9e46a8:113ee067f97:-8000:0000000000000742'>\r
+ <UML:Multiplicity.range>\r
+ <UML:MultiplicityRange xmi.id = '-64--88-0-11-7e9e46a8:113ee067f97:-8000:0000000000000741'\r
+ lower = '1' upper = '-1'/>\r
+ </UML:Multiplicity.range>\r
+ </UML:Multiplicity>\r
+ </UML:AssociationEnd.multiplicity>\r
+ <UML:AssociationEnd.participant>\r
+ <UML:Class xmi.idref = '-64--88-0-11-7e9e46a8:113ee067f97:-8000:000000000000072E'/>\r
+ </UML:AssociationEnd.participant>\r
+ </UML:AssociationEnd>\r
+ </UML:Association.connection>\r
+ </UML:Association>\r
+ <UML:Association xmi.id = '-64--88-0-11-7e9e46a8:113ee067f97:-8000:0000000000000743'\r
+ name = '' isSpecification = 'false' isRoot = 'false' isLeaf = 'false' isAbstract = 'false'>\r
+ <UML:Association.connection>\r
+ <UML:AssociationEnd xmi.id = '-64--88-0-11-7e9e46a8:113ee067f97:-8000:0000000000000744'\r
+ name = 'project' visibility = 'public' isSpecification = 'false' isNavigable = 'true'\r
+ ordering = 'unordered' aggregation = 'none' targetScope = 'instance' changeability = 'changeable'>\r
+ <UML:AssociationEnd.multiplicity>\r
+ <UML:Multiplicity xmi.id = '-64--88-0-11-7e9e46a8:113ee067f97:-8000:0000000000000745'>\r
+ <UML:Multiplicity.range>\r
+ <UML:MultiplicityRange xmi.id = '-64--88-0-11-7e9e46a8:113ee067f97:-8000:0000000000000746'\r
+ lower = '1' upper = '1'/>\r
+ </UML:Multiplicity.range>\r
+ </UML:Multiplicity>\r
+ </UML:AssociationEnd.multiplicity>\r
+ <UML:AssociationEnd.participant>\r
+ <UML:Class xmi.idref = '-64--88-0-11--3bcecc2b:113edff40cb:-8000:0000000000000720'/>\r
+ </UML:AssociationEnd.participant>\r
+ </UML:AssociationEnd>\r
+ <UML:AssociationEnd xmi.id = '-64--88-0-11-7e9e46a8:113ee067f97:-8000:0000000000000747'\r
+ name = 'artifacts' visibility = 'public' isSpecification = 'false' isNavigable = 'true'\r
+ ordering = 'unordered' aggregation = 'none' targetScope = 'instance' changeability = 'changeable'>\r
+ <UML:AssociationEnd.multiplicity>\r
+ <UML:Multiplicity xmi.id = '-64--88-0-11-7e9e46a8:113ee067f97:-8000:000000000000074D'>\r
+ <UML:Multiplicity.range>\r
+ <UML:MultiplicityRange xmi.id = '-64--88-0-11-7e9e46a8:113ee067f97:-8000:000000000000074C'\r
+ lower = '0' upper = '-1'/>\r
+ </UML:Multiplicity.range>\r
+ </UML:Multiplicity>\r
+ </UML:AssociationEnd.multiplicity>\r
+ <UML:AssociationEnd.participant>\r
+ <UML:Class xmi.idref = '-64--88-0-11-7e9e46a8:113ee067f97:-8000:0000000000000732'/>\r
+ </UML:AssociationEnd.participant>\r
+ </UML:AssociationEnd>\r
+ </UML:Association.connection>\r
+ </UML:Association>\r
+ <UML:Class xmi.id = '-64--88-0-11-7e9e46a8:113ee067f97:-8000:000000000000074E'\r
+ name = 'Build' visibility = 'public' isSpecification = 'false' isRoot = 'false'\r
+ isLeaf = 'false' isAbstract = 'false' isActive = 'false'>\r
+ <UML:GeneralizableElement.generalization>\r
+ <UML:Generalization xmi.idref = '-64--88-1-101--4a0353a6:1158fc10f03:-8000:0000000000000962'/>\r
+ </UML:GeneralizableElement.generalization>\r
+ </UML:Class>\r
+ <UML:Class xmi.id = '-64--88-0-11-7e9e46a8:113ee067f97:-8000:000000000000076F'\r
+ name = 'Deployment' visibility = 'public' isSpecification = 'false' isRoot = 'false'\r
+ isLeaf = 'false' isAbstract = 'false' isActive = 'false'>\r
+ <UML:GeneralizableElement.generalization>\r
+ <UML:Generalization xmi.idref = '-64--88-1-101--4a0353a6:1158fc10f03:-8000:0000000000000963'/>\r
+ </UML:GeneralizableElement.generalization>\r
+ </UML:Class>\r
+ <UML:Class xmi.id = '-64--88-0-11-7e9e46a8:113ee067f97:-8000:000000000000077A'\r
+ name = 'TestRun' visibility = 'public' isSpecification = 'false' isRoot = 'false'\r
+ isLeaf = 'false' isAbstract = 'false' isActive = 'false'>\r
+ <UML:GeneralizableElement.generalization>\r
+ <UML:Generalization xmi.idref = '-64--88-1-101--4a0353a6:1158fc10f03:-8000:0000000000000964'/>\r
+ </UML:GeneralizableElement.generalization>\r
+ </UML:Class>\r
+ <UML:Class xmi.id = '-64--88-0-11-7e9e46a8:113ee067f97:-8000:0000000000000785'\r
+ name = 'DeploymentData' visibility = 'public' isSpecification = 'false'\r
+ isRoot = 'false' isLeaf = 'false' isAbstract = 'false' isActive = 'false'/>\r
+ <UML:Class xmi.id = '-64--88-0-11-7e9e46a8:113ee067f97:-8000:0000000000000787'\r
+ name = 'TestDefinition' visibility = 'public' isSpecification = 'false'\r
+ isRoot = 'false' isLeaf = 'false' isAbstract = 'false' isActive = 'false'/>\r
+ <UML:Class xmi.id = '-64--88-0-11-7e9e46a8:113ee067f97:-8000:00000000000007B5'\r
+ name = 'SourceLocation' visibility = 'public' isSpecification = 'false'\r
+ isRoot = 'false' isLeaf = 'false' isAbstract = 'false' isActive = 'false'/>\r
+ <UML:Class xmi.id = '-64--88-0-11-7e9e46a8:113ee067f97:-8000:00000000000007CD'\r
+ name = 'Process' visibility = 'public' isSpecification = 'false' isRoot = 'false'\r
+ isLeaf = 'false' isAbstract = 'true' isActive = 'false'/>\r
+ <UML:Class xmi.id = '-64--88-0-11-7e9e46a8:113ee067f97:-8000:00000000000007CF'\r
+ name = 'ProcessStep' visibility = 'public' isSpecification = 'false' isRoot = 'false'\r
+ isLeaf = 'false' isAbstract = 'false' isActive = 'false'>\r
+ <UML:Namespace.ownedElement>\r
+ <UML:Class xmi.id = '-64--88-0-11-7e9e46a8:113ee067f97:-8000:00000000000007DA'\r
+ name = 'int' visibility = 'public' isSpecification = 'false' isRoot = 'false'\r
+ isLeaf = 'false' isAbstract = 'false' isActive = 'false'/>\r
+ </UML:Namespace.ownedElement>\r
+ <UML:Classifier.feature>\r
+ <UML:Attribute xmi.id = '-64--88-0-11-7e9e46a8:113ee067f97:-8000:00000000000007DB'\r
+ name = 'start' visibility = 'public' isSpecification = 'false' ownerScope = 'instance'\r
+ changeability = 'changeable' targetScope = 'instance'>\r
+ <UML:StructuralFeature.multiplicity>\r
+ <UML:Multiplicity xmi.id = '-64--88-0-11-7e9e46a8:113ee067f97:-8000:0000000000000801'>\r
+ <UML:Multiplicity.range>\r
+ <UML:MultiplicityRange xmi.id = '-64--88-0-11-7e9e46a8:113ee067f97:-8000:0000000000000800'\r
+ lower = '1' upper = '1'/>\r
+ </UML:Multiplicity.range>\r
+ </UML:Multiplicity>\r
+ </UML:StructuralFeature.multiplicity>\r
+ <UML:StructuralFeature.type>\r
+ <UML:Class xmi.idref = '-64--88-0-11-7e9e46a8:113ee067f97:-8000:00000000000007E4'/>\r
+ </UML:StructuralFeature.type>\r
+ </UML:Attribute>\r
+ <UML:Attribute xmi.id = '-64--88-0-11-7e9e46a8:113ee067f97:-8000:00000000000007E5'\r
+ name = 'end' visibility = 'public' isSpecification = 'false' ownerScope = 'instance'\r
+ changeability = 'changeable' targetScope = 'instance'>\r
+ <UML:StructuralFeature.multiplicity>\r
+ <UML:Multiplicity xmi.id = '-64--88-0-11-7e9e46a8:113ee067f97:-8000:00000000000007ED'>\r
+ <UML:Multiplicity.range>\r
+ <UML:MultiplicityRange xmi.id = '-64--88-0-11-7e9e46a8:113ee067f97:-8000:00000000000007EC'\r
+ lower = '1' upper = '1'/>\r
+ </UML:Multiplicity.range>\r
+ </UML:Multiplicity>\r
+ </UML:StructuralFeature.multiplicity>\r
+ <UML:StructuralFeature.type>\r
+ <UML:Class xmi.idref = '-64--88-0-11-7e9e46a8:113ee067f97:-8000:00000000000007E4'/>\r
+ </UML:StructuralFeature.type>\r
+ </UML:Attribute>\r
+ <UML:Attribute xmi.id = '-64--88-0-11-7e9e46a8:113ee067f97:-8000:0000000000000802'\r
+ name = 'description' visibility = 'public' isSpecification = 'false' ownerScope = 'instance'\r
+ changeability = 'changeable' targetScope = 'instance'>\r
+ <UML:StructuralFeature.multiplicity>\r
+ <UML:Multiplicity xmi.id = '-64--88-0-11-7e9e46a8:113ee067f97:-8000:000000000000080A'>\r
+ <UML:Multiplicity.range>\r
+ <UML:MultiplicityRange xmi.id = '-64--88-0-11-7e9e46a8:113ee067f97:-8000:0000000000000809'\r
+ lower = '1' upper = '1'/>\r
+ </UML:Multiplicity.range>\r
+ </UML:Multiplicity>\r
+ </UML:StructuralFeature.multiplicity>\r
+ <UML:StructuralFeature.type>\r
+ <UML:Class xmi.idref = '-64--88-0-11--3bcecc2b:113edff40cb:-8000:000000000000073B'/>\r
+ </UML:StructuralFeature.type>\r
+ </UML:Attribute>\r
+ </UML:Classifier.feature>\r
+ </UML:Class>\r
+ <UML:Class xmi.id = '-64--88-0-11-7e9e46a8:113ee067f97:-8000:00000000000007EE'\r
+ name = 'ProcessStatus' visibility = 'public' isSpecification = 'false' isRoot = 'false'\r
+ isLeaf = 'false' isAbstract = 'false' isActive = 'false'/>\r
+ <UML:Class xmi.id = '-64--88-0-11-7e9e46a8:113ee067f97:-8000:0000000000000817'\r
+ name = 'Log' visibility = 'public' isSpecification = 'false' isRoot = 'false'\r
+ isLeaf = 'false' isAbstract = 'false' isActive = 'false'>\r
+ <UML:Namespace.ownedElement>\r
+ <UML:Class xmi.id = '-64--88-0-11-7e9e46a8:113ee067f97:-8000:0000000000000861'\r
+ name = 'void' visibility = 'public' isSpecification = 'false' isRoot = 'false'\r
+ isLeaf = 'false' isAbstract = 'false' isActive = 'false'/>\r
+ </UML:Namespace.ownedElement>\r
+ <UML:Classifier.feature>\r
+ <UML:Attribute xmi.id = '-64--88-1-101-3dc093e3:1157f1866b2:-8000:000000000000093E'\r
+ name = 'content' visibility = 'public' isSpecification = 'false' ownerScope = 'instance'\r
+ changeability = 'changeable' targetScope = 'instance'>\r
+ <UML:StructuralFeature.multiplicity>\r
+ <UML:Multiplicity xmi.id = '-64--88-1-101-3dc093e3:1157f1866b2:-8000:0000000000000944'>\r
+ <UML:Multiplicity.range>\r
+ <UML:MultiplicityRange xmi.id = '-64--88-1-101-3dc093e3:1157f1866b2:-8000:0000000000000943'\r
+ lower = '1' upper = '1'/>\r
+ </UML:Multiplicity.range>\r
+ </UML:Multiplicity>\r
+ </UML:StructuralFeature.multiplicity>\r
+ <UML:StructuralFeature.type>\r
+ <UML:Class xmi.idref = '-64--88-0-11--3bcecc2b:113edff40cb:-8000:000000000000073B'/>\r
+ </UML:StructuralFeature.type>\r
+ </UML:Attribute>\r
+ </UML:Classifier.feature>\r
+ </UML:Class>\r
+ <UML:Association xmi.id = '-64--88-0-11-7e9e46a8:113ee067f97:-8000:000000000000086E'\r
+ name = '' isSpecification = 'false' isRoot = 'false' isLeaf = 'false' isAbstract = 'false'>\r
+ <UML:Association.connection>\r
+ <UML:AssociationEnd xmi.id = '-64--88-0-11-7e9e46a8:113ee067f97:-8000:000000000000086F'\r
+ visibility = 'public' isSpecification = 'false' isNavigable = 'false' ordering = 'unordered'\r
+ aggregation = 'none' targetScope = 'instance' changeability = 'changeable'>\r
+ <UML:AssociationEnd.multiplicity>\r
+ <UML:Multiplicity xmi.id = '-64--88-1-101-3dc093e3:1157f1866b2:-8000:0000000000000963'>\r
+ <UML:Multiplicity.range>\r
+ <UML:MultiplicityRange xmi.id = '-64--88-1-101-3dc093e3:1157f1866b2:-8000:0000000000000962'\r
+ lower = '1' upper = '1'/>\r
+ </UML:Multiplicity.range>\r
+ </UML:Multiplicity>\r
+ </UML:AssociationEnd.multiplicity>\r
+ <UML:AssociationEnd.participant>\r
+ <UML:Class xmi.idref = '-64--88-1-101-3dc093e3:1157f1866b2:-8000:0000000000000959'/>\r
+ </UML:AssociationEnd.participant>\r
+ </UML:AssociationEnd>\r
+ <UML:AssociationEnd xmi.id = '-64--88-0-11-7e9e46a8:113ee067f97:-8000:0000000000000872'\r
+ name = 'testStatus' visibility = 'public' isSpecification = 'false' isNavigable = 'true'\r
+ ordering = 'unordered' aggregation = 'none' targetScope = 'instance' changeability = 'changeable'>\r
+ <UML:AssociationEnd.multiplicity>\r
+ <UML:Multiplicity xmi.id = '-64--88-0-11-7e9e46a8:113ee067f97:-8000:0000000000000873'>\r
+ <UML:Multiplicity.range>\r
+ <UML:MultiplicityRange xmi.id = '-64--88-0-11-7e9e46a8:113ee067f97:-8000:0000000000000874'\r
+ lower = '1' upper = '1'/>\r
+ </UML:Multiplicity.range>\r
+ </UML:Multiplicity>\r
+ </UML:AssociationEnd.multiplicity>\r
+ <UML:AssociationEnd.participant>\r
+ <UML:Class xmi.idref = '-64--88-0-11-7e9e46a8:113ee067f97:-8000:00000000000007EE'/>\r
+ </UML:AssociationEnd.participant>\r
+ </UML:AssociationEnd>\r
+ </UML:Association.connection>\r
+ </UML:Association>\r
+ <UML:Class xmi.id = '-64--88-0-11-7e9e46a8:113ee067f97:-8000:0000000000000879'\r
+ name = 'ProcessSequence' visibility = 'public' isSpecification = 'false'\r
+ isRoot = 'false' isLeaf = 'false' isAbstract = 'false' isActive = 'false'>\r
+ <UML:GeneralizableElement.generalization>\r
+ <UML:Generalization xmi.idref = '-64--88-1-101--4a0353a6:1158fc10f03:-8000:0000000000000961'/>\r
+ </UML:GeneralizableElement.generalization>\r
+ </UML:Class>\r
+ <UML:Association xmi.id = '-64--88-0-11-7e9e46a8:113ee067f97:-8000:0000000000000880'\r
+ name = '' isSpecification = 'false' isRoot = 'false' isLeaf = 'false' isAbstract = 'false'>\r
+ <UML:Association.connection>\r
+ <UML:AssociationEnd xmi.id = '-64--88-0-11-7e9e46a8:113ee067f97:-8000:0000000000000881'\r
+ visibility = 'public' isSpecification = 'false' isNavigable = 'false' ordering = 'unordered'\r
+ aggregation = 'composite' targetScope = 'instance' changeability = 'changeable'>\r
+ <UML:AssociationEnd.multiplicity>\r
+ <UML:Multiplicity xmi.id = '-64--88-0-11-7e9e46a8:113ee067f97:-8000:0000000000000882'>\r
+ <UML:Multiplicity.range>\r
+ <UML:MultiplicityRange xmi.id = '-64--88-0-11-7e9e46a8:113ee067f97:-8000:0000000000000883'\r
+ lower = '1' upper = '1'/>\r
+ </UML:Multiplicity.range>\r
+ </UML:Multiplicity>\r
+ </UML:AssociationEnd.multiplicity>\r
+ <UML:AssociationEnd.participant>\r
+ <UML:Class xmi.idref = '-64--88-0-11-7e9e46a8:113ee067f97:-8000:0000000000000879'/>\r
+ </UML:AssociationEnd.participant>\r
+ </UML:AssociationEnd>\r
+ <UML:AssociationEnd xmi.id = '-64--88-0-11-7e9e46a8:113ee067f97:-8000:0000000000000884'\r
+ name = 'childrenProcesses' visibility = 'public' isSpecification = 'false'\r
+ isNavigable = 'true' ordering = 'ordered' aggregation = 'none' targetScope = 'instance'\r
+ changeability = 'changeable'>\r
+ <UML:AssociationEnd.multiplicity>\r
+ <UML:Multiplicity xmi.id = '-64--88-0-11-2f324257:11408555da1:-8000:00000000000007F1'>\r
+ <UML:Multiplicity.range>\r
+ <UML:MultiplicityRange xmi.id = '-64--88-0-11-2f324257:11408555da1:-8000:00000000000007F0'\r
+ lower = '1' upper = '-1'/>\r
+ </UML:Multiplicity.range>\r
+ </UML:Multiplicity>\r
+ </UML:AssociationEnd.multiplicity>\r
+ <UML:AssociationEnd.participant>\r
+ <UML:Class xmi.idref = '-64--88-0-11-7e9e46a8:113ee067f97:-8000:00000000000007CD'/>\r
+ </UML:AssociationEnd.participant>\r
+ </UML:AssociationEnd>\r
+ </UML:Association.connection>\r
+ </UML:Association>\r
+ <UML:Generalization xmi.id = '-64--88-1-101-3dc093e3:1157f1866b2:-8000:00000000000008D2'\r
+ isSpecification = 'false'>\r
+ <UML:Generalization.child>\r
+ <UML:Class xmi.idref = '-64--88-1-101-3dc093e3:1157f1866b2:-8000:00000000000008CE'/>\r
+ </UML:Generalization.child>\r
+ <UML:Generalization.parent>\r
+ <UML:Class xmi.idref = '-64--88-0-11-7e9e46a8:113ee067f97:-8000:0000000000000785'/>\r
+ </UML:Generalization.parent>\r
+ </UML:Generalization>\r
+ <UML:Generalization xmi.id = '-64--88-1-101--4a0353a6:1158fc10f03:-8000:0000000000000960'\r
+ isSpecification = 'false'>\r
+ <UML:Generalization.child>\r
+ <UML:Class xmi.idref = '-64--88-1-101-3dc093e3:1157f1866b2:-8000:00000000000008D3'/>\r
+ </UML:Generalization.child>\r
+ <UML:Generalization.parent>\r
+ <UML:Class xmi.idref = '-64--88-0-11-7e9e46a8:113ee067f97:-8000:0000000000000785'/>\r
+ </UML:Generalization.parent>\r
+ </UML:Generalization>\r
+ <UML:Generalization xmi.id = '-64--88-1-101--4a0353a6:1158fc10f03:-8000:0000000000000961'\r
+ isSpecification = 'false'>\r
+ <UML:Generalization.child>\r
+ <UML:Class xmi.idref = '-64--88-0-11-7e9e46a8:113ee067f97:-8000:0000000000000879'/>\r
+ </UML:Generalization.child>\r
+ <UML:Generalization.parent>\r
+ <UML:Class xmi.idref = '-64--88-0-11-7e9e46a8:113ee067f97:-8000:00000000000007CD'/>\r
+ </UML:Generalization.parent>\r
+ </UML:Generalization>\r
+ <UML:Generalization xmi.id = '-64--88-1-101--4a0353a6:1158fc10f03:-8000:0000000000000962'\r
+ isSpecification = 'false'>\r
+ <UML:Generalization.child>\r
+ <UML:Class xmi.idref = '-64--88-0-11-7e9e46a8:113ee067f97:-8000:000000000000074E'/>\r
+ </UML:Generalization.child>\r
+ <UML:Generalization.parent>\r
+ <UML:Class xmi.idref = '-64--88-0-11-7e9e46a8:113ee067f97:-8000:00000000000007CD'/>\r
+ </UML:Generalization.parent>\r
+ </UML:Generalization>\r
+ <UML:Generalization xmi.id = '-64--88-1-101--4a0353a6:1158fc10f03:-8000:0000000000000963'\r
+ isSpecification = 'false'>\r
+ <UML:Generalization.child>\r
+ <UML:Class xmi.idref = '-64--88-0-11-7e9e46a8:113ee067f97:-8000:000000000000076F'/>\r
+ </UML:Generalization.child>\r
+ <UML:Generalization.parent>\r
+ <UML:Class xmi.idref = '-64--88-0-11-7e9e46a8:113ee067f97:-8000:00000000000007CD'/>\r
+ </UML:Generalization.parent>\r
+ </UML:Generalization>\r
+ <UML:Generalization xmi.id = '-64--88-1-101--4a0353a6:1158fc10f03:-8000:0000000000000964'\r
+ isSpecification = 'false'>\r
+ <UML:Generalization.child>\r
+ <UML:Class xmi.idref = '-64--88-0-11-7e9e46a8:113ee067f97:-8000:000000000000077A'/>\r
+ </UML:Generalization.child>\r
+ <UML:Generalization.parent>\r
+ <UML:Class xmi.idref = '-64--88-0-11-7e9e46a8:113ee067f97:-8000:00000000000007CD'/>\r
+ </UML:Generalization.parent>\r
+ </UML:Generalization>\r
+ </UML:Namespace.ownedElement>\r
+ </UML:Package>\r
+ <UML:Package xmi.id = '-64--88-0-11--3bcecc2b:113edff40cb:-8000:000000000000073C'\r
+ name = 'java.lang' isSpecification = 'false' isRoot = 'false' isLeaf = 'false'\r
+ isAbstract = 'false'>\r
+ <UML:Namespace.ownedElement>\r
+ <UML:Class xmi.id = '-64--88-0-11--3bcecc2b:113edff40cb:-8000:000000000000073B'\r
+ name = 'String' visibility = 'public' isSpecification = 'false' isRoot = 'false'\r
+ isLeaf = 'false' isAbstract = 'false' isActive = 'false'/>\r
+ </UML:Namespace.ownedElement>\r
+ </UML:Package>\r
+ <UML:Package xmi.id = '-64--88-0-11-7e9e46a8:113ee067f97:-8000:000000000000072D'\r
+ name = 'java.util' isSpecification = 'false' isRoot = 'false' isLeaf = 'false'\r
+ isAbstract = 'false'>\r
+ <UML:Namespace.ownedElement>\r
+ <UML:Class xmi.id = '-64--88-0-11-7e9e46a8:113ee067f97:-8000:00000000000007E4'\r
+ name = 'Date' visibility = 'public' isSpecification = 'false' isRoot = 'false'\r
+ isLeaf = 'false' isAbstract = 'false' isActive = 'false'/>\r
+ </UML:Namespace.ownedElement>\r
+ </UML:Package>\r
+ <UML:Association xmi.id = '-64--88-0-11-7e9e46a8:113ee067f97:-8000:0000000000000750'\r
+ name = '' isSpecification = 'false' isRoot = 'false' isLeaf = 'false' isAbstract = 'false'>\r
+ <UML:Association.connection>\r
+ <UML:AssociationEnd xmi.id = '-64--88-0-11-7e9e46a8:113ee067f97:-8000:0000000000000751'\r
+ visibility = 'public' isSpecification = 'false' isNavigable = 'false' ordering = 'unordered'\r
+ aggregation = 'none' targetScope = 'instance' changeability = 'changeable'>\r
+ <UML:AssociationEnd.multiplicity>\r
+ <UML:Multiplicity xmi.id = '-64--88-0-11-7e9e46a8:113ee067f97:-8000:000000000000076E'>\r
+ <UML:Multiplicity.range>\r
+ <UML:MultiplicityRange xmi.id = '-64--88-0-11-7e9e46a8:113ee067f97:-8000:000000000000076D'\r
+ lower = '0' upper = '-1'/>\r
+ </UML:Multiplicity.range>\r
+ </UML:Multiplicity>\r
+ </UML:AssociationEnd.multiplicity>\r
+ <UML:AssociationEnd.participant>\r
+ <UML:Class xmi.idref = '-64--88-0-11-7e9e46a8:113ee067f97:-8000:000000000000074E'/>\r
+ </UML:AssociationEnd.participant>\r
+ </UML:AssociationEnd>\r
+ <UML:AssociationEnd xmi.id = '-64--88-0-11-7e9e46a8:113ee067f97:-8000:0000000000000754'\r
+ name = 'artifact' visibility = 'public' isSpecification = 'false' isNavigable = 'true'\r
+ ordering = 'unordered' aggregation = 'none' targetScope = 'instance' changeability = 'changeable'>\r
+ <UML:AssociationEnd.multiplicity>\r
+ <UML:Multiplicity xmi.id = '-64--88-0-11-7e9e46a8:113ee067f97:-8000:0000000000000755'>\r
+ <UML:Multiplicity.range>\r
+ <UML:MultiplicityRange xmi.id = '-64--88-0-11-7e9e46a8:113ee067f97:-8000:0000000000000756'\r
+ lower = '1' upper = '1'/>\r
+ </UML:Multiplicity.range>\r
+ </UML:Multiplicity>\r
+ </UML:AssociationEnd.multiplicity>\r
+ <UML:AssociationEnd.participant>\r
+ <UML:Class xmi.idref = '-64--88-0-11-7e9e46a8:113ee067f97:-8000:0000000000000732'/>\r
+ </UML:AssociationEnd.participant>\r
+ </UML:AssociationEnd>\r
+ </UML:Association.connection>\r
+ </UML:Association>\r
+ <UML:Association xmi.id = '-64--88-0-11-7e9e46a8:113ee067f97:-8000:0000000000000757'\r
+ name = '' isSpecification = 'false' isRoot = 'false' isLeaf = 'false' isAbstract = 'false'>\r
+ <UML:Association.connection>\r
+ <UML:AssociationEnd xmi.id = '-64--88-0-11-7e9e46a8:113ee067f97:-8000:0000000000000758'\r
+ visibility = 'public' isSpecification = 'false' isNavigable = 'false' ordering = 'unordered'\r
+ aggregation = 'none' targetScope = 'instance' changeability = 'changeable'>\r
+ <UML:AssociationEnd.multiplicity>\r
+ <UML:Multiplicity xmi.id = '-64--88-0-11-7e9e46a8:113ee067f97:-8000:000000000000076A'>\r
+ <UML:Multiplicity.range>\r
+ <UML:MultiplicityRange xmi.id = '-64--88-0-11-7e9e46a8:113ee067f97:-8000:0000000000000769'\r
+ lower = '0' upper = '-1'/>\r
+ </UML:Multiplicity.range>\r
+ </UML:Multiplicity>\r
+ </UML:AssociationEnd.multiplicity>\r
+ <UML:AssociationEnd.participant>\r
+ <UML:Class xmi.idref = '-64--88-1-101-3dc093e3:1157f1866b2:-8000:00000000000008E5'/>\r
+ </UML:AssociationEnd.participant>\r
+ </UML:AssociationEnd>\r
+ <UML:AssociationEnd xmi.id = '-64--88-0-11-7e9e46a8:113ee067f97:-8000:000000000000075B'\r
+ name = 'branch' visibility = 'public' isSpecification = 'false' isNavigable = 'true'\r
+ ordering = 'unordered' aggregation = 'none' targetScope = 'instance' changeability = 'changeable'>\r
+ <UML:AssociationEnd.multiplicity>\r
+ <UML:Multiplicity xmi.id = '-64--88-0-11-7e9e46a8:113ee067f97:-8000:0000000000000766'>\r
+ <UML:Multiplicity.range>\r
+ <UML:MultiplicityRange xmi.id = '-64--88-0-11-7e9e46a8:113ee067f97:-8000:0000000000000765'\r
+ lower = '1' upper = '1'/>\r
+ </UML:Multiplicity.range>\r
+ </UML:Multiplicity>\r
+ </UML:AssociationEnd.multiplicity>\r
+ <UML:AssociationEnd.participant>\r
+ <UML:Class xmi.idref = '-64--88-0-11-7e9e46a8:113ee067f97:-8000:000000000000072E'/>\r
+ </UML:AssociationEnd.participant>\r
+ </UML:AssociationEnd>\r
+ </UML:Association.connection>\r
+ </UML:Association>\r
+ <UML:Association xmi.id = '-64--88-0-11-7e9e46a8:113ee067f97:-8000:000000000000075E'\r
+ name = '' isSpecification = 'false' isRoot = 'false' isLeaf = 'false' isAbstract = 'false'>\r
+ <UML:Association.connection>\r
+ <UML:AssociationEnd xmi.id = '-64--88-0-11-7e9e46a8:113ee067f97:-8000:000000000000075F'\r
+ visibility = 'public' isSpecification = 'false' isNavigable = 'false' ordering = 'unordered'\r
+ aggregation = 'none' targetScope = 'instance' changeability = 'changeable'>\r
+ <UML:AssociationEnd.multiplicity>\r
+ <UML:Multiplicity xmi.id = '-64--88-0-11-7e9e46a8:113ee067f97:-8000:000000000000076C'>\r
+ <UML:Multiplicity.range>\r
+ <UML:MultiplicityRange xmi.id = '-64--88-0-11-7e9e46a8:113ee067f97:-8000:000000000000076B'\r
+ lower = '0' upper = '-1'/>\r
+ </UML:Multiplicity.range>\r
+ </UML:Multiplicity>\r
+ </UML:AssociationEnd.multiplicity>\r
+ <UML:AssociationEnd.participant>\r
+ <UML:Class xmi.idref = '-64--88-1-101-3dc093e3:1157f1866b2:-8000:00000000000008E5'/>\r
+ </UML:AssociationEnd.participant>\r
+ </UML:AssociationEnd>\r
+ <UML:AssociationEnd xmi.id = '-64--88-0-11-7e9e46a8:113ee067f97:-8000:0000000000000762'\r
+ name = 'revision' visibility = 'public' isSpecification = 'false' isNavigable = 'true'\r
+ ordering = 'unordered' aggregation = 'none' targetScope = 'instance' changeability = 'changeable'>\r
+ <UML:AssociationEnd.multiplicity>\r
+ <UML:Multiplicity xmi.id = '-64--88-0-11-7e9e46a8:113ee067f97:-8000:0000000000000763'>\r
+ <UML:Multiplicity.range>\r
+ <UML:MultiplicityRange xmi.id = '-64--88-0-11-7e9e46a8:113ee067f97:-8000:0000000000000764'\r
+ lower = '1' upper = '1'/>\r
+ </UML:Multiplicity.range>\r
+ </UML:Multiplicity>\r
+ </UML:AssociationEnd.multiplicity>\r
+ <UML:AssociationEnd.participant>\r
+ <UML:Class xmi.idref = '-64--88-0-11-7e9e46a8:113ee067f97:-8000:0000000000000730'/>\r
+ </UML:AssociationEnd.participant>\r
+ </UML:AssociationEnd>\r
+ </UML:Association.connection>\r
+ </UML:Association>\r
+ <UML:Association xmi.id = '-64--88-0-11-7e9e46a8:113ee067f97:-8000:0000000000000771'\r
+ name = '' isSpecification = 'false' isRoot = 'false' isLeaf = 'false' isAbstract = 'false'>\r
+ <UML:Association.connection>\r
+ <UML:AssociationEnd xmi.id = '-64--88-0-11-7e9e46a8:113ee067f97:-8000:0000000000000772'\r
+ visibility = 'public' isSpecification = 'false' isNavigable = 'false' ordering = 'unordered'\r
+ aggregation = 'none' targetScope = 'instance' changeability = 'changeable'>\r
+ <UML:AssociationEnd.multiplicity>\r
+ <UML:Multiplicity xmi.id = '-64--88-0-11-7e9e46a8:113ee067f97:-8000:0000000000000779'>\r
+ <UML:Multiplicity.range>\r
+ <UML:MultiplicityRange xmi.id = '-64--88-0-11-7e9e46a8:113ee067f97:-8000:0000000000000778'\r
+ lower = '0' upper = '-1'/>\r
+ </UML:Multiplicity.range>\r
+ </UML:Multiplicity>\r
+ </UML:AssociationEnd.multiplicity>\r
+ <UML:AssociationEnd.participant>\r
+ <UML:Class xmi.idref = '-64--88-0-11-7e9e46a8:113ee067f97:-8000:000000000000076F'/>\r
+ </UML:AssociationEnd.participant>\r
+ </UML:AssociationEnd>\r
+ <UML:AssociationEnd xmi.id = '-64--88-0-11-7e9e46a8:113ee067f97:-8000:0000000000000775'\r
+ name = 'distribution' visibility = 'public' isSpecification = 'false' isNavigable = 'true'\r
+ ordering = 'unordered' aggregation = 'none' targetScope = 'instance' changeability = 'changeable'>\r
+ <UML:AssociationEnd.multiplicity>\r
+ <UML:Multiplicity xmi.id = '-64--88-1-101--4a0353a6:1158fc10f03:-8000:0000000000000C36'>\r
+ <UML:Multiplicity.range>\r
+ <UML:MultiplicityRange xmi.id = '-64--88-1-101--4a0353a6:1158fc10f03:-8000:0000000000000C35'\r
+ lower = '1' upper = '1'/>\r
+ </UML:Multiplicity.range>\r
+ </UML:Multiplicity>\r
+ </UML:AssociationEnd.multiplicity>\r
+ <UML:AssociationEnd.participant>\r
+ <UML:Class xmi.idref = '-64--88-1-101--3f3f1022:1157622ef7f:-8000:00000000000008A8'/>\r
+ </UML:AssociationEnd.participant>\r
+ </UML:AssociationEnd>\r
+ </UML:Association.connection>\r
+ </UML:Association>\r
+ <UML:Association xmi.id = '-64--88-0-11-7e9e46a8:113ee067f97:-8000:000000000000077C'\r
+ name = '' isSpecification = 'false' isRoot = 'false' isLeaf = 'false' isAbstract = 'false'>\r
+ <UML:Association.connection>\r
+ <UML:AssociationEnd xmi.id = '-64--88-0-11-7e9e46a8:113ee067f97:-8000:000000000000077D'\r
+ visibility = 'public' isSpecification = 'false' isNavigable = 'false' ordering = 'unordered'\r
+ aggregation = 'none' targetScope = 'instance' changeability = 'changeable'>\r
+ <UML:AssociationEnd.multiplicity>\r
+ <UML:Multiplicity xmi.id = '-64--88-0-11-7e9e46a8:113ee067f97:-8000:0000000000000784'>\r
+ <UML:Multiplicity.range>\r
+ <UML:MultiplicityRange xmi.id = '-64--88-0-11-7e9e46a8:113ee067f97:-8000:0000000000000783'\r
+ lower = '0' upper = '-1'/>\r
+ </UML:Multiplicity.range>\r
+ </UML:Multiplicity>\r
+ </UML:AssociationEnd.multiplicity>\r
+ <UML:AssociationEnd.participant>\r
+ <UML:Class xmi.idref = '-64--88-0-11-7e9e46a8:113ee067f97:-8000:000000000000077A'/>\r
+ </UML:AssociationEnd.participant>\r
+ </UML:AssociationEnd>\r
+ <UML:AssociationEnd xmi.id = '-64--88-0-11-7e9e46a8:113ee067f97:-8000:0000000000000780'\r
+ name = 'deployedSystem' visibility = 'public' isSpecification = 'false'\r
+ isNavigable = 'true' ordering = 'unordered' aggregation = 'none' targetScope = 'instance'\r
+ changeability = 'changeable'>\r
+ <UML:AssociationEnd.multiplicity>\r
+ <UML:Multiplicity xmi.id = '-64--88-1-101--3f3f1022:1157622ef7f:-8000:00000000000008C3'>\r
+ <UML:Multiplicity.range>\r
+ <UML:MultiplicityRange xmi.id = '-64--88-1-101--3f3f1022:1157622ef7f:-8000:00000000000008C2'\r
+ lower = '1' upper = '1'/>\r
+ </UML:Multiplicity.range>\r
+ </UML:Multiplicity>\r
+ </UML:AssociationEnd.multiplicity>\r
+ <UML:AssociationEnd.participant>\r
+ <UML:Class xmi.idref = '-64--88-1-101--3f3f1022:1157622ef7f:-8000:00000000000008AA'/>\r
+ </UML:AssociationEnd.participant>\r
+ </UML:AssociationEnd>\r
+ </UML:Association.connection>\r
+ </UML:Association>\r
+ <UML:Association xmi.id = '-64--88-0-11-7e9e46a8:113ee067f97:-8000:0000000000000789'\r
+ name = '' isSpecification = 'false' isRoot = 'false' isLeaf = 'false' isAbstract = 'false'>\r
+ <UML:Association.connection>\r
+ <UML:AssociationEnd xmi.id = '-64--88-0-11-7e9e46a8:113ee067f97:-8000:000000000000078A'\r
+ visibility = 'public' isSpecification = 'false' isNavigable = 'false' ordering = 'unordered'\r
+ aggregation = 'none' targetScope = 'instance' changeability = 'changeable'>\r
+ <UML:AssociationEnd.multiplicity>\r
+ <UML:Multiplicity xmi.id = '-64--88-0-11-7e9e46a8:113ee067f97:-8000:0000000000000791'>\r
+ <UML:Multiplicity.range>\r
+ <UML:MultiplicityRange xmi.id = '-64--88-0-11-7e9e46a8:113ee067f97:-8000:0000000000000790'\r
+ lower = '0' upper = '-1'/>\r
+ </UML:Multiplicity.range>\r
+ </UML:Multiplicity>\r
+ </UML:AssociationEnd.multiplicity>\r
+ <UML:AssociationEnd.participant>\r
+ <UML:Class xmi.idref = '-64--88-0-11-7e9e46a8:113ee067f97:-8000:000000000000076F'/>\r
+ </UML:AssociationEnd.participant>\r
+ </UML:AssociationEnd>\r
+ <UML:AssociationEnd xmi.id = '-64--88-0-11-7e9e46a8:113ee067f97:-8000:000000000000078D'\r
+ name = 'deploymentData' visibility = 'public' isSpecification = 'false'\r
+ isNavigable = 'true' ordering = 'unordered' aggregation = 'none' targetScope = 'instance'\r
+ changeability = 'changeable'>\r
+ <UML:AssociationEnd.multiplicity>\r
+ <UML:Multiplicity xmi.id = '-64--88-0-11-7e9e46a8:113ee067f97:-8000:000000000000078E'>\r
+ <UML:Multiplicity.range>\r
+ <UML:MultiplicityRange xmi.id = '-64--88-0-11-7e9e46a8:113ee067f97:-8000:000000000000078F'\r
+ lower = '1' upper = '1'/>\r
+ </UML:Multiplicity.range>\r
+ </UML:Multiplicity>\r
+ </UML:AssociationEnd.multiplicity>\r
+ <UML:AssociationEnd.participant>\r
+ <UML:Class xmi.idref = '-64--88-0-11-7e9e46a8:113ee067f97:-8000:0000000000000785'/>\r
+ </UML:AssociationEnd.participant>\r
+ </UML:AssociationEnd>\r
+ </UML:Association.connection>\r
+ </UML:Association>\r
+ <UML:Association xmi.id = '-64--88-0-11-7e9e46a8:113ee067f97:-8000:0000000000000792'\r
+ name = '' isSpecification = 'false' isRoot = 'false' isLeaf = 'false' isAbstract = 'false'>\r
+ <UML:Association.connection>\r
+ <UML:AssociationEnd xmi.id = '-64--88-0-11-7e9e46a8:113ee067f97:-8000:0000000000000793'\r
+ visibility = 'public' isSpecification = 'false' isNavigable = 'false' ordering = 'unordered'\r
+ aggregation = 'none' targetScope = 'instance' changeability = 'changeable'>\r
+ <UML:AssociationEnd.multiplicity>\r
+ <UML:Multiplicity xmi.id = '-64--88-0-11-7e9e46a8:113ee067f97:-8000:000000000000079A'>\r
+ <UML:Multiplicity.range>\r
+ <UML:MultiplicityRange xmi.id = '-64--88-0-11-7e9e46a8:113ee067f97:-8000:0000000000000799'\r
+ lower = '0' upper = '-1'/>\r
+ </UML:Multiplicity.range>\r
+ </UML:Multiplicity>\r
+ </UML:AssociationEnd.multiplicity>\r
+ <UML:AssociationEnd.participant>\r
+ <UML:Class xmi.idref = '-64--88-0-11-7e9e46a8:113ee067f97:-8000:000000000000077A'/>\r
+ </UML:AssociationEnd.participant>\r
+ </UML:AssociationEnd>\r
+ <UML:AssociationEnd xmi.id = '-64--88-0-11-7e9e46a8:113ee067f97:-8000:0000000000000796'\r
+ name = 'testDefinition' visibility = 'public' isSpecification = 'false'\r
+ isNavigable = 'true' ordering = 'unordered' aggregation = 'none' targetScope = 'instance'\r
+ changeability = 'changeable'>\r
+ <UML:AssociationEnd.multiplicity>\r
+ <UML:Multiplicity xmi.id = '-64--88-0-11-7e9e46a8:113ee067f97:-8000:0000000000000797'>\r
+ <UML:Multiplicity.range>\r
+ <UML:MultiplicityRange xmi.id = '-64--88-0-11-7e9e46a8:113ee067f97:-8000:0000000000000798'\r
+ lower = '1' upper = '1'/>\r
+ </UML:Multiplicity.range>\r
+ </UML:Multiplicity>\r
+ </UML:AssociationEnd.multiplicity>\r
+ <UML:AssociationEnd.participant>\r
+ <UML:Class xmi.idref = '-64--88-0-11-7e9e46a8:113ee067f97:-8000:0000000000000787'/>\r
+ </UML:AssociationEnd.participant>\r
+ </UML:AssociationEnd>\r
+ </UML:Association.connection>\r
+ </UML:Association>\r
+ <UML:Association xmi.id = '-64--88-0-11-7e9e46a8:113ee067f97:-8000:000000000000079B'\r
+ name = '' isSpecification = 'false' isRoot = 'false' isLeaf = 'false' isAbstract = 'false'>\r
+ <UML:Association.connection>\r
+ <UML:AssociationEnd xmi.id = '-64--88-0-11-7e9e46a8:113ee067f97:-8000:000000000000079C'\r
+ visibility = 'public' isSpecification = 'false' isNavigable = 'true' ordering = 'unordered'\r
+ aggregation = 'aggregate' targetScope = 'instance' changeability = 'changeable'>\r
+ <UML:AssociationEnd.multiplicity>\r
+ <UML:Multiplicity xmi.id = '-64--88-0-11-7e9e46a8:113ee067f97:-8000:00000000000007B4'>\r
+ <UML:Multiplicity.range>\r
+ <UML:MultiplicityRange xmi.id = '-64--88-0-11-7e9e46a8:113ee067f97:-8000:00000000000007B3'\r
+ lower = '0' upper = '-1'/>\r
+ </UML:Multiplicity.range>\r
+ </UML:Multiplicity>\r
+ </UML:AssociationEnd.multiplicity>\r
+ <UML:AssociationEnd.participant>\r
+ <UML:Class xmi.idref = '-64--88-0-11-7e9e46a8:113ee067f97:-8000:0000000000000732'/>\r
+ </UML:AssociationEnd.participant>\r
+ </UML:AssociationEnd>\r
+ <UML:AssociationEnd xmi.id = '-64--88-0-11-7e9e46a8:113ee067f97:-8000:000000000000079F'\r
+ name = 'deploymentDatas' visibility = 'public' isSpecification = 'false'\r
+ isNavigable = 'true' ordering = 'unordered' aggregation = 'none' targetScope = 'instance'\r
+ changeability = 'changeable'>\r
+ <UML:AssociationEnd.multiplicity>\r
+ <UML:Multiplicity xmi.id = '-64--88-0-11-7e9e46a8:113ee067f97:-8000:00000000000007AC'>\r
+ <UML:Multiplicity.range>\r
+ <UML:MultiplicityRange xmi.id = '-64--88-0-11-7e9e46a8:113ee067f97:-8000:00000000000007AB'\r
+ lower = '0' upper = '-1'/>\r
+ </UML:Multiplicity.range>\r
+ </UML:Multiplicity>\r
+ </UML:AssociationEnd.multiplicity>\r
+ <UML:AssociationEnd.participant>\r
+ <UML:Class xmi.idref = '-64--88-0-11-7e9e46a8:113ee067f97:-8000:0000000000000785'/>\r
+ </UML:AssociationEnd.participant>\r
+ </UML:AssociationEnd>\r
+ </UML:Association.connection>\r
+ </UML:Association>\r
+ <UML:Association xmi.id = '-64--88-0-11-7e9e46a8:113ee067f97:-8000:00000000000007A2'\r
+ name = '' isSpecification = 'false' isRoot = 'false' isLeaf = 'false' isAbstract = 'false'>\r
+ <UML:Association.connection>\r
+ <UML:AssociationEnd xmi.id = '-64--88-0-11-7e9e46a8:113ee067f97:-8000:00000000000007A3'\r
+ visibility = 'public' isSpecification = 'false' isNavigable = 'true' ordering = 'unordered'\r
+ aggregation = 'aggregate' targetScope = 'instance' changeability = 'changeable'>\r
+ <UML:AssociationEnd.multiplicity>\r
+ <UML:Multiplicity xmi.id = '-64--88-0-11-7e9e46a8:113ee067f97:-8000:00000000000007B2'>\r
+ <UML:Multiplicity.range>\r
+ <UML:MultiplicityRange xmi.id = '-64--88-0-11-7e9e46a8:113ee067f97:-8000:00000000000007B1'\r
+ lower = '1' upper = '-1'/>\r
+ </UML:Multiplicity.range>\r
+ </UML:Multiplicity>\r
+ </UML:AssociationEnd.multiplicity>\r
+ <UML:AssociationEnd.participant>\r
+ <UML:Class xmi.idref = '-64--88-0-11-7e9e46a8:113ee067f97:-8000:0000000000000732'/>\r
+ </UML:AssociationEnd.participant>\r
+ </UML:AssociationEnd>\r
+ <UML:AssociationEnd xmi.id = '-64--88-0-11-7e9e46a8:113ee067f97:-8000:00000000000007A6'\r
+ visibility = 'public' isSpecification = 'false' isNavigable = 'true' ordering = 'unordered'\r
+ aggregation = 'none' targetScope = 'instance' changeability = 'changeable'>\r
+ <UML:AssociationEnd.multiplicity>\r
+ <UML:Multiplicity xmi.id = '-64--88-0-11-7e9e46a8:113ee067f97:-8000:00000000000007AA'>\r
+ <UML:Multiplicity.range>\r
+ <UML:MultiplicityRange xmi.id = '-64--88-0-11-7e9e46a8:113ee067f97:-8000:00000000000007A9'\r
+ lower = '0' upper = '-1'/>\r
+ </UML:Multiplicity.range>\r
+ </UML:Multiplicity>\r
+ </UML:AssociationEnd.multiplicity>\r
+ <UML:AssociationEnd.participant>\r
+ <UML:Class xmi.idref = '-64--88-0-11-7e9e46a8:113ee067f97:-8000:0000000000000787'/>\r
+ </UML:AssociationEnd.participant>\r
+ </UML:AssociationEnd>\r
+ </UML:Association.connection>\r
+ </UML:Association>\r
+ <UML:Association xmi.id = '-64--88-0-11-7e9e46a8:113ee067f97:-8000:00000000000007B7'\r
+ name = '' isSpecification = 'false' isRoot = 'false' isLeaf = 'false' isAbstract = 'false'>\r
+ <UML:Association.connection>\r
+ <UML:AssociationEnd xmi.id = '-64--88-0-11-7e9e46a8:113ee067f97:-8000:00000000000007B8'\r
+ visibility = 'public' isSpecification = 'false' isNavigable = 'false' ordering = 'unordered'\r
+ aggregation = 'none' targetScope = 'instance' changeability = 'changeable'>\r
+ <UML:AssociationEnd.multiplicity>\r
+ <UML:Multiplicity xmi.id = '-64--88-0-11-7e9e46a8:113ee067f97:-8000:00000000000007B9'>\r
+ <UML:Multiplicity.range>\r
+ <UML:MultiplicityRange xmi.id = '-64--88-0-11-7e9e46a8:113ee067f97:-8000:00000000000007BA'\r
+ lower = '1' upper = '1'/>\r
+ </UML:Multiplicity.range>\r
+ </UML:Multiplicity>\r
+ </UML:AssociationEnd.multiplicity>\r
+ <UML:AssociationEnd.participant>\r
+ <UML:Class xmi.idref = '-64--88-0-11--3bcecc2b:113edff40cb:-8000:0000000000000720'/>\r
+ </UML:AssociationEnd.participant>\r
+ </UML:AssociationEnd>\r
+ <UML:AssociationEnd xmi.id = '-64--88-0-11-7e9e46a8:113ee067f97:-8000:00000000000007BB'\r
+ name = 'sourceLocation' visibility = 'public' isSpecification = 'false'\r
+ isNavigable = 'true' ordering = 'unordered' aggregation = 'none' targetScope = 'instance'\r
+ changeability = 'changeable'>\r
+ <UML:AssociationEnd.multiplicity>\r
+ <UML:Multiplicity xmi.id = '-64--88-0-11-7e9e46a8:113ee067f97:-8000:00000000000007BF'>\r
+ <UML:Multiplicity.range>\r
+ <UML:MultiplicityRange xmi.id = '-64--88-0-11-7e9e46a8:113ee067f97:-8000:00000000000007BE'\r
+ lower = '1' upper = '1'/>\r
+ </UML:Multiplicity.range>\r
+ </UML:Multiplicity>\r
+ </UML:AssociationEnd.multiplicity>\r
+ <UML:AssociationEnd.participant>\r
+ <UML:Class xmi.idref = '-64--88-0-11-7e9e46a8:113ee067f97:-8000:00000000000007B5'/>\r
+ </UML:AssociationEnd.participant>\r
+ </UML:AssociationEnd>\r
+ </UML:Association.connection>\r
+ </UML:Association>\r
+ <UML:Association xmi.id = '-64--88-0-11-7e9e46a8:113ee067f97:-8000:00000000000007C0'\r
+ name = '' isSpecification = 'false' isRoot = 'false' isLeaf = 'false' isAbstract = 'false'>\r
+ <UML:Association.connection>\r
+ <UML:AssociationEnd xmi.id = '-64--88-0-11-7e9e46a8:113ee067f97:-8000:00000000000007C1'\r
+ name = 'revisions' visibility = 'public' isSpecification = 'false' isNavigable = 'false'\r
+ ordering = 'unordered' aggregation = 'none' targetScope = 'instance' changeability = 'changeable'>\r
+ <UML:AssociationEnd.multiplicity>\r
+ <UML:Multiplicity xmi.id = '-64--88-0-11-7e9e46a8:113ee067f97:-8000:00000000000007CC'>\r
+ <UML:Multiplicity.range>\r
+ <UML:MultiplicityRange xmi.id = '-64--88-0-11-7e9e46a8:113ee067f97:-8000:00000000000007CB'\r
+ lower = '1' upper = '-1'/>\r
+ </UML:Multiplicity.range>\r
+ </UML:Multiplicity>\r
+ </UML:AssociationEnd.multiplicity>\r
+ <UML:AssociationEnd.participant>\r
+ <UML:Class xmi.idref = '-64--88-0-11-7e9e46a8:113ee067f97:-8000:0000000000000730'/>\r
+ </UML:AssociationEnd.participant>\r
+ </UML:AssociationEnd>\r
+ <UML:AssociationEnd xmi.id = '-64--88-0-11-7e9e46a8:113ee067f97:-8000:00000000000007C4'\r
+ name = 'sourceLocation' visibility = 'public' isSpecification = 'false'\r
+ isNavigable = 'false' ordering = 'unordered' aggregation = 'none' targetScope = 'instance'\r
+ changeability = 'changeable'>\r
+ <UML:AssociationEnd.multiplicity>\r
+ <UML:Multiplicity xmi.id = '-64--88-0-11-7e9e46a8:113ee067f97:-8000:00000000000007CA'>\r
+ <UML:Multiplicity.range>\r
+ <UML:MultiplicityRange xmi.id = '-64--88-0-11-7e9e46a8:113ee067f97:-8000:00000000000007C9'\r
+ lower = '1' upper = '1'/>\r
+ </UML:Multiplicity.range>\r
+ </UML:Multiplicity>\r
+ </UML:AssociationEnd.multiplicity>\r
+ <UML:AssociationEnd.participant>\r
+ <UML:Class xmi.idref = '-64--88-0-11-7e9e46a8:113ee067f97:-8000:00000000000007B5'/>\r
+ </UML:AssociationEnd.participant>\r
+ </UML:AssociationEnd>\r
+ </UML:Association.connection>\r
+ </UML:Association>\r
+ <UML:Association xmi.id = '-64--88-0-11-7e9e46a8:113ee067f97:-8000:00000000000007D1'\r
+ name = '' isSpecification = 'false' isRoot = 'false' isLeaf = 'false' isAbstract = 'false'>\r
+ <UML:Association.connection>\r
+ <UML:AssociationEnd xmi.id = '-64--88-0-11-7e9e46a8:113ee067f97:-8000:00000000000007D2'\r
+ visibility = 'public' isSpecification = 'false' isNavigable = 'false' ordering = 'unordered'\r
+ aggregation = 'composite' targetScope = 'instance' changeability = 'changeable'>\r
+ <UML:AssociationEnd.multiplicity>\r
+ <UML:Multiplicity xmi.id = '-64--88-0-11-7e9e46a8:113ee067f97:-8000:00000000000007D3'>\r
+ <UML:Multiplicity.range>\r
+ <UML:MultiplicityRange xmi.id = '-64--88-0-11-7e9e46a8:113ee067f97:-8000:00000000000007D4'\r
+ lower = '1' upper = '1'/>\r
+ </UML:Multiplicity.range>\r
+ </UML:Multiplicity>\r
+ </UML:AssociationEnd.multiplicity>\r
+ <UML:AssociationEnd.participant>\r
+ <UML:Class xmi.idref = '-64--88-0-11-7e9e46a8:113ee067f97:-8000:00000000000007CD'/>\r
+ </UML:AssociationEnd.participant>\r
+ </UML:AssociationEnd>\r
+ <UML:AssociationEnd xmi.id = '-64--88-0-11-7e9e46a8:113ee067f97:-8000:00000000000007D5'\r
+ name = 'steps' visibility = 'public' isSpecification = 'false' isNavigable = 'true'\r
+ ordering = 'ordered' aggregation = 'none' targetScope = 'instance' changeability = 'changeable'>\r
+ <UML:AssociationEnd.multiplicity>\r
+ <UML:Multiplicity xmi.id = '-64--88-0-11-7e9e46a8:113ee067f97:-8000:000000000000088C'>\r
+ <UML:Multiplicity.range>\r
+ <UML:MultiplicityRange xmi.id = '-64--88-0-11-7e9e46a8:113ee067f97:-8000:000000000000088B'\r
+ lower = '1' upper = '-1'/>\r
+ </UML:Multiplicity.range>\r
+ </UML:Multiplicity>\r
+ </UML:AssociationEnd.multiplicity>\r
+ <UML:AssociationEnd.participant>\r
+ <UML:Class xmi.idref = '-64--88-0-11-7e9e46a8:113ee067f97:-8000:00000000000007CF'/>\r
+ </UML:AssociationEnd.participant>\r
+ </UML:AssociationEnd>\r
+ </UML:Association.connection>\r
+ </UML:Association>\r
+ <UML:Association xmi.id = '-64--88-0-11-7e9e46a8:113ee067f97:-8000:00000000000007F0'\r
+ name = '' isSpecification = 'false' isRoot = 'false' isLeaf = 'false' isAbstract = 'false'>\r
+ <UML:Association.connection>\r
+ <UML:AssociationEnd xmi.id = '-64--88-0-11-7e9e46a8:113ee067f97:-8000:00000000000007F1'\r
+ visibility = 'public' isSpecification = 'false' isNavigable = 'false' ordering = 'unordered'\r
+ aggregation = 'none' targetScope = 'instance' changeability = 'changeable'>\r
+ <UML:AssociationEnd.multiplicity>\r
+ <UML:Multiplicity xmi.id = '-64--88-1-101-3dc093e3:1157f1866b2:-8000:0000000000000965'>\r
+ <UML:Multiplicity.range>\r
+ <UML:MultiplicityRange xmi.id = '-64--88-1-101-3dc093e3:1157f1866b2:-8000:0000000000000964'\r
+ lower = '1' upper = '1'/>\r
+ </UML:Multiplicity.range>\r
+ </UML:Multiplicity>\r
+ </UML:AssociationEnd.multiplicity>\r
+ <UML:AssociationEnd.participant>\r
+ <UML:Class xmi.idref = '-64--88-0-11-7e9e46a8:113ee067f97:-8000:00000000000007CD'/>\r
+ </UML:AssociationEnd.participant>\r
+ </UML:AssociationEnd>\r
+ <UML:AssociationEnd xmi.id = '-64--88-0-11-7e9e46a8:113ee067f97:-8000:00000000000007F4'\r
+ name = 'processStatus' visibility = 'public' isSpecification = 'false' isNavigable = 'true'\r
+ ordering = 'unordered' aggregation = 'none' targetScope = 'instance' changeability = 'changeable'>\r
+ <UML:AssociationEnd.multiplicity>\r
+ <UML:Multiplicity xmi.id = '-64--88-0-11-7e9e46a8:113ee067f97:-8000:00000000000007F5'>\r
+ <UML:Multiplicity.range>\r
+ <UML:MultiplicityRange xmi.id = '-64--88-0-11-7e9e46a8:113ee067f97:-8000:00000000000007F6'\r
+ lower = '1' upper = '1'/>\r
+ </UML:Multiplicity.range>\r
+ </UML:Multiplicity>\r
+ </UML:AssociationEnd.multiplicity>\r
+ <UML:AssociationEnd.participant>\r
+ <UML:Class xmi.idref = '-64--88-0-11-7e9e46a8:113ee067f97:-8000:00000000000007EE'/>\r
+ </UML:AssociationEnd.participant>\r
+ </UML:AssociationEnd>\r
+ </UML:Association.connection>\r
+ </UML:Association>\r
+ <UML:Association xmi.id = '-64--88-0-11-7e9e46a8:113ee067f97:-8000:00000000000007F9'\r
+ name = '' isSpecification = 'false' isRoot = 'false' isLeaf = 'false' isAbstract = 'false'>\r
+ <UML:Association.connection>\r
+ <UML:AssociationEnd xmi.id = '-64--88-0-11-7e9e46a8:113ee067f97:-8000:00000000000007FA'\r
+ visibility = 'public' isSpecification = 'false' isNavigable = 'false' ordering = 'unordered'\r
+ aggregation = 'none' targetScope = 'instance' changeability = 'changeable'>\r
+ <UML:AssociationEnd.multiplicity>\r
+ <UML:Multiplicity xmi.id = '-64--88-0-11-7e9e46a8:113ee067f97:-8000:00000000000007FB'>\r
+ <UML:Multiplicity.range>\r
+ <UML:MultiplicityRange xmi.id = '-64--88-0-11-7e9e46a8:113ee067f97:-8000:00000000000007FC'\r
+ lower = '1' upper = '1'/>\r
+ </UML:Multiplicity.range>\r
+ </UML:Multiplicity>\r
+ </UML:AssociationEnd.multiplicity>\r
+ <UML:AssociationEnd.participant>\r
+ <UML:Class xmi.idref = '-64--88-0-11-7e9e46a8:113ee067f97:-8000:00000000000007CF'/>\r
+ </UML:AssociationEnd.participant>\r
+ </UML:AssociationEnd>\r
+ <UML:AssociationEnd xmi.id = '-64--88-0-11-7e9e46a8:113ee067f97:-8000:00000000000007FD'\r
+ name = 'processStatus' visibility = 'public' isSpecification = 'false' isNavigable = 'true'\r
+ ordering = 'unordered' aggregation = 'none' targetScope = 'instance' changeability = 'changeable'>\r
+ <UML:AssociationEnd.multiplicity>\r
+ <UML:Multiplicity xmi.id = '-64--88-0-11-7e9e46a8:113ee067f97:-8000:00000000000007FE'>\r
+ <UML:Multiplicity.range>\r
+ <UML:MultiplicityRange xmi.id = '-64--88-0-11-7e9e46a8:113ee067f97:-8000:00000000000007FF'\r
+ lower = '1' upper = '1'/>\r
+ </UML:Multiplicity.range>\r
+ </UML:Multiplicity>\r
+ </UML:AssociationEnd.multiplicity>\r
+ <UML:AssociationEnd.participant>\r
+ <UML:Class xmi.idref = '-64--88-0-11-7e9e46a8:113ee067f97:-8000:00000000000007EE'/>\r
+ </UML:AssociationEnd.participant>\r
+ </UML:AssociationEnd>\r
+ </UML:Association.connection>\r
+ </UML:Association>\r
+ <UML:Association xmi.id = '-64--88-0-11-7e9e46a8:113ee067f97:-8000:000000000000083A'\r
+ name = '' isSpecification = 'false' isRoot = 'false' isLeaf = 'false' isAbstract = 'false'>\r
+ <UML:Association.connection>\r
+ <UML:AssociationEnd xmi.id = '-64--88-0-11-7e9e46a8:113ee067f97:-8000:000000000000083B'\r
+ visibility = 'public' isSpecification = 'false' isNavigable = 'false' ordering = 'unordered'\r
+ aggregation = 'none' targetScope = 'instance' changeability = 'changeable'>\r
+ <UML:AssociationEnd.multiplicity>\r
+ <UML:Multiplicity xmi.id = '-64--88-0-11-7e9e46a8:113ee067f97:-8000:000000000000083C'>\r
+ <UML:Multiplicity.range>\r
+ <UML:MultiplicityRange xmi.id = '-64--88-0-11-7e9e46a8:113ee067f97:-8000:000000000000083D'\r
+ lower = '1' upper = '1'/>\r
+ </UML:Multiplicity.range>\r
+ </UML:Multiplicity>\r
+ </UML:AssociationEnd.multiplicity>\r
+ <UML:AssociationEnd.participant>\r
+ <UML:Class xmi.idref = '-64--88-0-11-7e9e46a8:113ee067f97:-8000:00000000000007CF'/>\r
+ </UML:AssociationEnd.participant>\r
+ </UML:AssociationEnd>\r
+ <UML:AssociationEnd xmi.id = '-64--88-0-11-7e9e46a8:113ee067f97:-8000:000000000000083E'\r
+ visibility = 'public' isSpecification = 'false' isNavigable = 'true' ordering = 'unordered'\r
+ aggregation = 'none' targetScope = 'instance' changeability = 'changeable'>\r
+ <UML:AssociationEnd.multiplicity>\r
+ <UML:Multiplicity xmi.id = '-64--88-0-11-7e9e46a8:113ee067f97:-8000:000000000000083F'>\r
+ <UML:Multiplicity.range>\r
+ <UML:MultiplicityRange xmi.id = '-64--88-0-11-7e9e46a8:113ee067f97:-8000:0000000000000840'\r
+ lower = '1' upper = '1'/>\r
+ </UML:Multiplicity.range>\r
+ </UML:Multiplicity>\r
+ </UML:AssociationEnd.multiplicity>\r
+ <UML:AssociationEnd.participant>\r
+ <UML:Class xmi.idref = '-64--88-0-11-7e9e46a8:113ee067f97:-8000:0000000000000817'/>\r
+ </UML:AssociationEnd.participant>\r
+ </UML:AssociationEnd>\r
+ </UML:Association.connection>\r
+ </UML:Association>\r
+ <UML:Association xmi.id = '-64--88-0-11-7e9e46a8:113ee067f97:-8000:0000000000000841'\r
+ name = '' isSpecification = 'false' isRoot = 'false' isLeaf = 'false' isAbstract = 'false'>\r
+ <UML:Association.connection>\r
+ <UML:AssociationEnd xmi.id = '-64--88-0-11-7e9e46a8:113ee067f97:-8000:0000000000000842'\r
+ visibility = 'public' isSpecification = 'false' isNavigable = 'false' ordering = 'unordered'\r
+ aggregation = 'composite' targetScope = 'instance' changeability = 'changeable'>\r
+ <UML:AssociationEnd.multiplicity>\r
+ <UML:Multiplicity xmi.id = '-64--88-0-11-7e9e46a8:113ee067f97:-8000:0000000000000843'>\r
+ <UML:Multiplicity.range>\r
+ <UML:MultiplicityRange xmi.id = '-64--88-0-11-7e9e46a8:113ee067f97:-8000:0000000000000844'\r
+ lower = '1' upper = '1'/>\r
+ </UML:Multiplicity.range>\r
+ </UML:Multiplicity>\r
+ </UML:AssociationEnd.multiplicity>\r
+ <UML:AssociationEnd.participant>\r
+ <UML:Class xmi.idref = '-64--88-0-11-7e9e46a8:113ee067f97:-8000:00000000000007CF'/>\r
+ </UML:AssociationEnd.participant>\r
+ </UML:AssociationEnd>\r
+ <UML:AssociationEnd xmi.id = '-64--88-0-11-7e9e46a8:113ee067f97:-8000:0000000000000845'\r
+ name = 'log' visibility = 'public' isSpecification = 'false' isNavigable = 'true'\r
+ ordering = 'unordered' aggregation = 'none' targetScope = 'instance' changeability = 'changeable'>\r
+ <UML:AssociationEnd.multiplicity>\r
+ <UML:Multiplicity xmi.id = '-64--88-0-11-7e9e46a8:113ee067f97:-8000:0000000000000846'>\r
+ <UML:Multiplicity.range>\r
+ <UML:MultiplicityRange xmi.id = '-64--88-0-11-7e9e46a8:113ee067f97:-8000:0000000000000847'\r
+ lower = '1' upper = '1'/>\r
+ </UML:Multiplicity.range>\r
+ </UML:Multiplicity>\r
+ </UML:AssociationEnd.multiplicity>\r
+ <UML:AssociationEnd.participant>\r
+ <UML:Class xmi.idref = '-64--88-0-11-7e9e46a8:113ee067f97:-8000:0000000000000817'/>\r
+ </UML:AssociationEnd.participant>\r
+ </UML:AssociationEnd>\r
+ </UML:Association.connection>\r
+ </UML:Association>\r
+ <UML:Association xmi.id = '-64--88-0-11-7e9e46a8:113ee067f97:-8000:000000000000084C'\r
+ name = '' isSpecification = 'false' isRoot = 'false' isLeaf = 'false' isAbstract = 'false'>\r
+ <UML:Association.connection>\r
+ <UML:AssociationEnd xmi.id = '-64--88-0-11-7e9e46a8:113ee067f97:-8000:000000000000084D'\r
+ visibility = 'public' isSpecification = 'false' isNavigable = 'false' ordering = 'unordered'\r
+ aggregation = 'none' targetScope = 'instance' changeability = 'changeable'>\r
+ <UML:AssociationEnd.multiplicity>\r
+ <UML:Multiplicity xmi.id = '-64--88-0-11-7e9e46a8:113ee067f97:-8000:000000000000084E'>\r
+ <UML:Multiplicity.range>\r
+ <UML:MultiplicityRange xmi.id = '-64--88-0-11-7e9e46a8:113ee067f97:-8000:000000000000084F'\r
+ lower = '1' upper = '1'/>\r
+ </UML:Multiplicity.range>\r
+ </UML:Multiplicity>\r
+ </UML:AssociationEnd.multiplicity>\r
+ <UML:AssociationEnd.participant>\r
+ <UML:Class xmi.idref = '-64--88-0-11-7e9e46a8:113ee067f97:-8000:00000000000007CF'/>\r
+ </UML:AssociationEnd.participant>\r
+ </UML:AssociationEnd>\r
+ <UML:AssociationEnd xmi.id = '-64--88-0-11-7e9e46a8:113ee067f97:-8000:0000000000000850'\r
+ name = 'log' visibility = 'public' isSpecification = 'false' isNavigable = 'true'\r
+ ordering = 'unordered' aggregation = 'none' targetScope = 'instance' changeability = 'changeable'>\r
+ <UML:AssociationEnd.multiplicity>\r
+ <UML:Multiplicity xmi.id = '-64--88-0-11-7e9e46a8:113ee067f97:-8000:0000000000000851'>\r
+ <UML:Multiplicity.range>\r
+ <UML:MultiplicityRange xmi.id = '-64--88-0-11-7e9e46a8:113ee067f97:-8000:0000000000000852'\r
+ lower = '1' upper = '1'/>\r
+ </UML:Multiplicity.range>\r
+ </UML:Multiplicity>\r
+ </UML:AssociationEnd.multiplicity>\r
+ <UML:AssociationEnd.participant>\r
+ <UML:Class xmi.idref = '-64--88-0-11-7e9e46a8:113ee067f97:-8000:0000000000000817'/>\r
+ </UML:AssociationEnd.participant>\r
+ </UML:AssociationEnd>\r
+ </UML:Association.connection>\r
+ </UML:Association>\r
+ <UML:Class xmi.id = '-64--88-1-101--3f3f1022:1157622ef7f:-8000:00000000000008A8'\r
+ name = 'Distribution' visibility = 'public' isSpecification = 'false' isRoot = 'false'\r
+ isLeaf = 'false' isAbstract = 'false' isActive = 'false'/>\r
+ <UML:Class xmi.id = '-64--88-1-101--3f3f1022:1157622ef7f:-8000:00000000000008AA'\r
+ name = 'DeployedSystem' visibility = 'public' isSpecification = 'false'\r
+ isRoot = 'false' isLeaf = 'false' isAbstract = 'false' isActive = 'false'/>\r
+ <UML:Class xmi.id = '-64--88-1-101--3f3f1022:1157622ef7f:-8000:00000000000008AC'\r
+ name = 'DistributionId' visibility = 'public' isSpecification = 'false'\r
+ isRoot = 'false' isLeaf = 'false' isAbstract = 'false' isActive = 'false'/>\r
+ <UML:Class xmi.id = '-64--88-1-101--3f3f1022:1157622ef7f:-8000:00000000000008AE'\r
+ name = 'DeployedSystemId' visibility = 'public' isSpecification = 'false'\r
+ isRoot = 'false' isLeaf = 'false' isAbstract = 'false' isActive = 'false'/>\r
+ <UML:Association xmi.id = '-64--88-1-101--3f3f1022:1157622ef7f:-8000:00000000000008B0'\r
+ name = '' isSpecification = 'false' isRoot = 'false' isLeaf = 'false' isAbstract = 'false'>\r
+ <UML:Association.connection>\r
+ <UML:AssociationEnd xmi.id = '-64--88-1-101--3f3f1022:1157622ef7f:-8000:00000000000008B1'\r
+ name = '' visibility = 'public' isSpecification = 'false' isNavigable = 'false'\r
+ ordering = 'unordered' aggregation = 'none' targetScope = 'instance' changeability = 'changeable'>\r
+ <UML:AssociationEnd.multiplicity>\r
+ <UML:Multiplicity xmi.id = '-64--88-1-101--4a0353a6:1158fc10f03:-8000:0000000000000C32'>\r
+ <UML:Multiplicity.range>\r
+ <UML:MultiplicityRange xmi.id = '-64--88-1-101--4a0353a6:1158fc10f03:-8000:0000000000000C31'\r
+ lower = '1' upper = '1'/>\r
+ </UML:Multiplicity.range>\r
+ </UML:Multiplicity>\r
+ </UML:AssociationEnd.multiplicity>\r
+ <UML:AssociationEnd.participant>\r
+ <UML:Class xmi.idref = '-64--88-0-11-7e9e46a8:113ee067f97:-8000:000000000000074E'/>\r
+ </UML:AssociationEnd.participant>\r
+ </UML:AssociationEnd>\r
+ <UML:AssociationEnd xmi.id = '-64--88-1-101--3f3f1022:1157622ef7f:-8000:00000000000008B4'\r
+ name = 'distribution' visibility = 'public' isSpecification = 'false' isNavigable = 'true'\r
+ ordering = 'unordered' aggregation = 'none' targetScope = 'instance' changeability = 'changeable'>\r
+ <UML:AssociationEnd.multiplicity>\r
+ <UML:Multiplicity xmi.id = '-64--88-1-101--4a0353a6:1158fc10f03:-8000:0000000000000C34'>\r
+ <UML:Multiplicity.range>\r
+ <UML:MultiplicityRange xmi.id = '-64--88-1-101--4a0353a6:1158fc10f03:-8000:0000000000000C33'\r
+ lower = '1' upper = '1'/>\r
+ </UML:Multiplicity.range>\r
+ </UML:Multiplicity>\r
+ </UML:AssociationEnd.multiplicity>\r
+ <UML:AssociationEnd.participant>\r
+ <UML:Class xmi.idref = '-64--88-1-101--3f3f1022:1157622ef7f:-8000:00000000000008A8'/>\r
+ </UML:AssociationEnd.participant>\r
+ </UML:AssociationEnd>\r
+ </UML:Association.connection>\r
+ </UML:Association>\r
+ <UML:Association xmi.id = '-64--88-1-101--3f3f1022:1157622ef7f:-8000:00000000000008BB'\r
+ name = '' isSpecification = 'false' isRoot = 'false' isLeaf = 'false' isAbstract = 'false'>\r
+ <UML:Association.connection>\r
+ <UML:AssociationEnd xmi.id = '-64--88-1-101--3f3f1022:1157622ef7f:-8000:00000000000008BC'\r
+ visibility = 'public' isSpecification = 'false' isNavigable = 'false' ordering = 'unordered'\r
+ aggregation = 'none' targetScope = 'instance' changeability = 'changeable'>\r
+ <UML:AssociationEnd.multiplicity>\r
+ <UML:Multiplicity xmi.id = '-64--88-1-101--3f3f1022:1157622ef7f:-8000:00000000000008BD'>\r
+ <UML:Multiplicity.range>\r
+ <UML:MultiplicityRange xmi.id = '-64--88-1-101--3f3f1022:1157622ef7f:-8000:00000000000008BE'\r
+ lower = '1' upper = '1'/>\r
+ </UML:Multiplicity.range>\r
+ </UML:Multiplicity>\r
+ </UML:AssociationEnd.multiplicity>\r
+ <UML:AssociationEnd.participant>\r
+ <UML:Class xmi.idref = '-64--88-0-11-7e9e46a8:113ee067f97:-8000:000000000000076F'/>\r
+ </UML:AssociationEnd.participant>\r
+ </UML:AssociationEnd>\r
+ <UML:AssociationEnd xmi.id = '-64--88-1-101--3f3f1022:1157622ef7f:-8000:00000000000008BF'\r
+ name = 'deployedSystem' visibility = 'public' isSpecification = 'false'\r
+ isNavigable = 'true' ordering = 'unordered' aggregation = 'none' targetScope = 'instance'\r
+ changeability = 'changeable'>\r
+ <UML:AssociationEnd.multiplicity>\r
+ <UML:Multiplicity xmi.id = '-64--88-1-101--3f3f1022:1157622ef7f:-8000:00000000000008C5'>\r
+ <UML:Multiplicity.range>\r
+ <UML:MultiplicityRange xmi.id = '-64--88-1-101--3f3f1022:1157622ef7f:-8000:00000000000008C4'\r
+ lower = '1' upper = '1'/>\r
+ </UML:Multiplicity.range>\r
+ </UML:Multiplicity>\r
+ </UML:AssociationEnd.multiplicity>\r
+ <UML:AssociationEnd.participant>\r
+ <UML:Class xmi.idref = '-64--88-1-101--3f3f1022:1157622ef7f:-8000:00000000000008AA'/>\r
+ </UML:AssociationEnd.participant>\r
+ </UML:AssociationEnd>\r
+ </UML:Association.connection>\r
+ </UML:Association>\r
+ <UML:Association xmi.id = '-64--88-1-101--3f3f1022:1157622ef7f:-8000:00000000000008C6'\r
+ name = '' isSpecification = 'false' isRoot = 'false' isLeaf = 'false' isAbstract = 'false'>\r
+ <UML:Association.connection>\r
+ <UML:AssociationEnd xmi.id = '-64--88-1-101--3f3f1022:1157622ef7f:-8000:00000000000008C7'\r
+ visibility = 'public' isSpecification = 'false' isNavigable = 'false' ordering = 'unordered'\r
+ aggregation = 'none' targetScope = 'instance' changeability = 'changeable'>\r
+ <UML:AssociationEnd.multiplicity>\r
+ <UML:Multiplicity xmi.id = '-64--88-1-101--3f3f1022:1157622ef7f:-8000:00000000000008C8'>\r
+ <UML:Multiplicity.range>\r
+ <UML:MultiplicityRange xmi.id = '-64--88-1-101--3f3f1022:1157622ef7f:-8000:00000000000008C9'\r
+ lower = '1' upper = '1'/>\r
+ </UML:Multiplicity.range>\r
+ </UML:Multiplicity>\r
+ </UML:AssociationEnd.multiplicity>\r
+ <UML:AssociationEnd.participant>\r
+ <UML:Class xmi.idref = '-64--88-1-101--3f3f1022:1157622ef7f:-8000:00000000000008A8'/>\r
+ </UML:AssociationEnd.participant>\r
+ </UML:AssociationEnd>\r
+ <UML:AssociationEnd xmi.id = '-64--88-1-101--3f3f1022:1157622ef7f:-8000:00000000000008CA'\r
+ name = 'distributionId' visibility = 'public' isSpecification = 'false'\r
+ isNavigable = 'true' ordering = 'unordered' aggregation = 'none' targetScope = 'instance'\r
+ changeability = 'changeable'>\r
+ <UML:AssociationEnd.multiplicity>\r
+ <UML:Multiplicity xmi.id = '-64--88-1-101--3f3f1022:1157622ef7f:-8000:00000000000008CB'>\r
+ <UML:Multiplicity.range>\r
+ <UML:MultiplicityRange xmi.id = '-64--88-1-101--3f3f1022:1157622ef7f:-8000:00000000000008CC'\r
+ lower = '1' upper = '1'/>\r
+ </UML:Multiplicity.range>\r
+ </UML:Multiplicity>\r
+ </UML:AssociationEnd.multiplicity>\r
+ <UML:AssociationEnd.participant>\r
+ <UML:Class xmi.idref = '-64--88-1-101--3f3f1022:1157622ef7f:-8000:00000000000008AC'/>\r
+ </UML:AssociationEnd.participant>\r
+ </UML:AssociationEnd>\r
+ </UML:Association.connection>\r
+ </UML:Association>\r
+ <UML:Association xmi.id = '-64--88-1-101--3f3f1022:1157622ef7f:-8000:00000000000008CD'\r
+ name = '' isSpecification = 'false' isRoot = 'false' isLeaf = 'false' isAbstract = 'false'>\r
+ <UML:Association.connection>\r
+ <UML:AssociationEnd xmi.id = '-64--88-1-101--3f3f1022:1157622ef7f:-8000:00000000000008CE'\r
+ visibility = 'public' isSpecification = 'false' isNavigable = 'false' ordering = 'unordered'\r
+ aggregation = 'none' targetScope = 'instance' changeability = 'changeable'>\r
+ <UML:AssociationEnd.multiplicity>\r
+ <UML:Multiplicity xmi.id = '-64--88-1-101--3f3f1022:1157622ef7f:-8000:00000000000008CF'>\r
+ <UML:Multiplicity.range>\r
+ <UML:MultiplicityRange xmi.id = '-64--88-1-101--3f3f1022:1157622ef7f:-8000:00000000000008D0'\r
+ lower = '1' upper = '1'/>\r
+ </UML:Multiplicity.range>\r
+ </UML:Multiplicity>\r
+ </UML:AssociationEnd.multiplicity>\r
+ <UML:AssociationEnd.participant>\r
+ <UML:Class xmi.idref = '-64--88-1-101--3f3f1022:1157622ef7f:-8000:00000000000008AA'/>\r
+ </UML:AssociationEnd.participant>\r
+ </UML:AssociationEnd>\r
+ <UML:AssociationEnd xmi.id = '-64--88-1-101--3f3f1022:1157622ef7f:-8000:00000000000008D1'\r
+ name = 'deployedSystemId' visibility = 'public' isSpecification = 'false'\r
+ isNavigable = 'true' ordering = 'unordered' aggregation = 'none' targetScope = 'instance'\r
+ changeability = 'changeable'>\r
+ <UML:AssociationEnd.multiplicity>\r
+ <UML:Multiplicity xmi.id = '-64--88-1-101--3f3f1022:1157622ef7f:-8000:00000000000008D2'>\r
+ <UML:Multiplicity.range>\r
+ <UML:MultiplicityRange xmi.id = '-64--88-1-101--3f3f1022:1157622ef7f:-8000:00000000000008D3'\r
+ lower = '1' upper = '1'/>\r
+ </UML:Multiplicity.range>\r
+ </UML:Multiplicity>\r
+ </UML:AssociationEnd.multiplicity>\r
+ <UML:AssociationEnd.participant>\r
+ <UML:Class xmi.idref = '-64--88-1-101--3f3f1022:1157622ef7f:-8000:00000000000008AE'/>\r
+ </UML:AssociationEnd.participant>\r
+ </UML:AssociationEnd>\r
+ </UML:Association.connection>\r
+ </UML:Association>\r
+ <UML:Class xmi.id = '-64--88-1-101-3dc093e3:1157f1866b2:-8000:00000000000008CE'\r
+ name = 'EnterpriseSystemDeploymentData' visibility = 'public' isSpecification = 'false'\r
+ isRoot = 'false' isLeaf = 'false' isAbstract = 'false' isActive = 'false'>\r
+ <UML:GeneralizableElement.generalization>\r
+ <UML:Generalization xmi.idref = '-64--88-1-101-3dc093e3:1157f1866b2:-8000:00000000000008D2'/>\r
+ </UML:GeneralizableElement.generalization>\r
+ </UML:Class>\r
+ <UML:Class xmi.id = '-64--88-1-101-3dc093e3:1157f1866b2:-8000:00000000000008D0'\r
+ name = 'DatabaseDump' visibility = 'public' isSpecification = 'false' isRoot = 'false'\r
+ isLeaf = 'false' isAbstract = 'false' isActive = 'false'>\r
+ <UML:GeneralizableElement.generalization>\r
+ <UML:Generalization xmi.idref = '-64--88-1-101--4a0353a6:1158fc10f03:-8000:000000000000095E'/>\r
+ </UML:GeneralizableElement.generalization>\r
+ </UML:Class>\r
+ <UML:Class xmi.id = '-64--88-1-101-3dc093e3:1157f1866b2:-8000:00000000000008D3'\r
+ name = 'EnterpriseDeploymentData' visibility = 'public' isSpecification = 'false'\r
+ isRoot = 'false' isLeaf = 'false' isAbstract = 'false' isActive = 'false'>\r
+ <UML:GeneralizableElement.generalization>\r
+ <UML:Generalization xmi.idref = '-64--88-1-101--4a0353a6:1158fc10f03:-8000:0000000000000960'/>\r
+ </UML:GeneralizableElement.generalization>\r
+ </UML:Class>\r
+ <UML:Association xmi.id = '-64--88-1-101-3dc093e3:1157f1866b2:-8000:00000000000008D6'\r
+ name = '' isSpecification = 'false' isRoot = 'false' isLeaf = 'false' isAbstract = 'false'>\r
+ <UML:Association.connection>\r
+ <UML:AssociationEnd xmi.id = '-64--88-1-101-3dc093e3:1157f1866b2:-8000:00000000000008D7'\r
+ name = '' visibility = 'public' isSpecification = 'false' isNavigable = 'false'\r
+ ordering = 'unordered' aggregation = 'none' targetScope = 'instance' changeability = 'changeable'>\r
+ <UML:AssociationEnd.multiplicity>\r
+ <UML:Multiplicity xmi.id = '-64--88-1-101-3dc093e3:1157f1866b2:-8000:00000000000008F7'>\r
+ <UML:Multiplicity.range>\r
+ <UML:MultiplicityRange xmi.id = '-64--88-1-101-3dc093e3:1157f1866b2:-8000:00000000000008F6'\r
+ lower = '0' upper = '-1'/>\r
+ </UML:Multiplicity.range>\r
+ </UML:Multiplicity>\r
+ </UML:AssociationEnd.multiplicity>\r
+ <UML:AssociationEnd.participant>\r
+ <UML:Class xmi.idref = '-64--88-1-101-3dc093e3:1157f1866b2:-8000:00000000000008D3'/>\r
+ </UML:AssociationEnd.participant>\r
+ </UML:AssociationEnd>\r
+ <UML:AssociationEnd xmi.id = '-64--88-1-101-3dc093e3:1157f1866b2:-8000:00000000000008DA'\r
+ name = 'databases' visibility = 'public' isSpecification = 'false' isNavigable = 'true'\r
+ ordering = 'unordered' aggregation = 'none' targetScope = 'instance' changeability = 'changeable'>\r
+ <UML:AssociationEnd.multiplicity>\r
+ <UML:Multiplicity xmi.id = '-64--88-1-101-3dc093e3:1157f1866b2:-8000:00000000000008F5'>\r
+ <UML:Multiplicity.range>\r
+ <UML:MultiplicityRange xmi.id = '-64--88-1-101-3dc093e3:1157f1866b2:-8000:00000000000008F4'\r
+ lower = '0' upper = '-1'/>\r
+ </UML:Multiplicity.range>\r
+ </UML:Multiplicity>\r
+ </UML:AssociationEnd.multiplicity>\r
+ <UML:AssociationEnd.participant>\r
+ <UML:Class xmi.idref = '-64--88-1-101-3dc093e3:1157f1866b2:-8000:00000000000008D0'/>\r
+ </UML:AssociationEnd.participant>\r
+ </UML:AssociationEnd>\r
+ </UML:Association.connection>\r
+ </UML:Association>\r
+ <UML:Class xmi.id = '-64--88-1-101-3dc093e3:1157f1866b2:-8000:00000000000008E5'\r
+ name = 'VersionedFileSet' visibility = 'public' isSpecification = 'false'\r
+ isRoot = 'false' isLeaf = 'false' isAbstract = 'false' isActive = 'false'/>\r
+ <UML:Association xmi.id = '-64--88-1-101-3dc093e3:1157f1866b2:-8000:00000000000008E7'\r
+ name = '' isSpecification = 'false' isRoot = 'false' isLeaf = 'false' isAbstract = 'false'>\r
+ <UML:Association.connection>\r
+ <UML:AssociationEnd xmi.id = '-64--88-1-101-3dc093e3:1157f1866b2:-8000:00000000000008E8'\r
+ visibility = 'public' isSpecification = 'false' isNavigable = 'false' ordering = 'unordered'\r
+ aggregation = 'none' targetScope = 'instance' changeability = 'changeable'>\r
+ <UML:AssociationEnd.multiplicity>\r
+ <UML:Multiplicity xmi.id = '-64--88-1-101-3dc093e3:1157f1866b2:-8000:00000000000008EF'>\r
+ <UML:Multiplicity.range>\r
+ <UML:MultiplicityRange xmi.id = '-64--88-1-101-3dc093e3:1157f1866b2:-8000:00000000000008EE'\r
+ lower = '0' upper = '-1'/>\r
+ </UML:Multiplicity.range>\r
+ </UML:Multiplicity>\r
+ </UML:AssociationEnd.multiplicity>\r
+ <UML:AssociationEnd.participant>\r
+ <UML:Class xmi.idref = '-64--88-0-11-7e9e46a8:113ee067f97:-8000:000000000000074E'/>\r
+ </UML:AssociationEnd.participant>\r
+ </UML:AssociationEnd>\r
+ <UML:AssociationEnd xmi.id = '-64--88-1-101-3dc093e3:1157f1866b2:-8000:00000000000008EB'\r
+ name = 'codeFileSet' visibility = 'public' isSpecification = 'false' isNavigable = 'true'\r
+ ordering = 'unordered' aggregation = 'none' targetScope = 'instance' changeability = 'changeable'>\r
+ <UML:AssociationEnd.multiplicity>\r
+ <UML:Multiplicity xmi.id = '-64--88-1-101-3dc093e3:1157f1866b2:-8000:00000000000008EC'>\r
+ <UML:Multiplicity.range>\r
+ <UML:MultiplicityRange xmi.id = '-64--88-1-101-3dc093e3:1157f1866b2:-8000:00000000000008ED'\r
+ lower = '1' upper = '1'/>\r
+ </UML:Multiplicity.range>\r
+ </UML:Multiplicity>\r
+ </UML:AssociationEnd.multiplicity>\r
+ <UML:AssociationEnd.participant>\r
+ <UML:Class xmi.idref = '-64--88-1-101--4a0353a6:1158fc10f03:-8000:0000000000000C44'/>\r
+ </UML:AssociationEnd.participant>\r
+ </UML:AssociationEnd>\r
+ </UML:Association.connection>\r
+ </UML:Association>\r
+ <UML:Class xmi.id = '-64--88-1-101-3dc093e3:1157f1866b2:-8000:00000000000008F8'\r
+ name = 'ConfigurationFileSet' visibility = 'public' isSpecification = 'false'\r
+ isRoot = 'false' isLeaf = 'false' isAbstract = 'false' isActive = 'false'>\r
+ <UML:GeneralizableElement.generalization>\r
+ <UML:Generalization xmi.idref = '-64--88-1-101--4a0353a6:1158fc10f03:-8000:000000000000095F'/>\r
+ </UML:GeneralizableElement.generalization>\r
+ </UML:Class>\r
+ <UML:Association xmi.id = '-64--88-1-101-3dc093e3:1157f1866b2:-8000:00000000000008FB'\r
+ name = '' isSpecification = 'false' isRoot = 'false' isLeaf = 'false' isAbstract = 'false'>\r
+ <UML:Association.connection>\r
+ <UML:AssociationEnd xmi.id = '-64--88-1-101-3dc093e3:1157f1866b2:-8000:00000000000008FC'\r
+ visibility = 'public' isSpecification = 'false' isNavigable = 'false' ordering = 'unordered'\r
+ aggregation = 'none' targetScope = 'instance' changeability = 'changeable'>\r
+ <UML:AssociationEnd.multiplicity>\r
+ <UML:Multiplicity xmi.id = '-64--88-1-101-3dc093e3:1157f1866b2:-8000:0000000000000903'>\r
+ <UML:Multiplicity.range>\r
+ <UML:MultiplicityRange xmi.id = '-64--88-1-101-3dc093e3:1157f1866b2:-8000:0000000000000902'\r
+ lower = '0' upper = '-1'/>\r
+ </UML:Multiplicity.range>\r
+ </UML:Multiplicity>\r
+ </UML:AssociationEnd.multiplicity>\r
+ <UML:AssociationEnd.participant>\r
+ <UML:Class xmi.idref = '-64--88-1-101-3dc093e3:1157f1866b2:-8000:00000000000008D3'/>\r
+ </UML:AssociationEnd.participant>\r
+ </UML:AssociationEnd>\r
+ <UML:AssociationEnd xmi.id = '-64--88-1-101-3dc093e3:1157f1866b2:-8000:00000000000008FF'\r
+ name = 'configurationFileSet' visibility = 'public' isSpecification = 'false'\r
+ isNavigable = 'true' ordering = 'unordered' aggregation = 'none' targetScope = 'instance'\r
+ changeability = 'changeable'>\r
+ <UML:AssociationEnd.multiplicity>\r
+ <UML:Multiplicity xmi.id = '-64--88-1-101-3dc093e3:1157f1866b2:-8000:0000000000000905'>\r
+ <UML:Multiplicity.range>\r
+ <UML:MultiplicityRange xmi.id = '-64--88-1-101-3dc093e3:1157f1866b2:-8000:0000000000000904'\r
+ lower = '0' upper = '1'/>\r
+ </UML:Multiplicity.range>\r
+ </UML:Multiplicity>\r
+ </UML:AssociationEnd.multiplicity>\r
+ <UML:AssociationEnd.participant>\r
+ <UML:Class xmi.idref = '-64--88-1-101-3dc093e3:1157f1866b2:-8000:00000000000008F8'/>\r
+ </UML:AssociationEnd.participant>\r
+ </UML:AssociationEnd>\r
+ </UML:Association.connection>\r
+ </UML:Association>\r
+ <UML:Class xmi.id = '-64--88-1-101-3dc093e3:1157f1866b2:-8000:0000000000000906'\r
+ name = 'VersionedHeavyFile' visibility = 'public' isSpecification = 'false'\r
+ isRoot = 'false' isLeaf = 'false' isAbstract = 'false' isActive = 'false'>\r
+ <UML:Classifier.feature>\r
+ <UML:Attribute xmi.id = '-64--88-1-101-3dc093e3:1157f1866b2:-8000:0000000000000912'\r
+ name = 'id' visibility = 'public' isSpecification = 'false' ownerScope = 'instance'\r
+ changeability = 'changeable' targetScope = 'instance'>\r
+ <UML:StructuralFeature.multiplicity>\r
+ <UML:Multiplicity xmi.id = '-64--88-1-101-3dc093e3:1157f1866b2:-8000:0000000000000924'>\r
+ <UML:Multiplicity.range>\r
+ <UML:MultiplicityRange xmi.id = '-64--88-1-101-3dc093e3:1157f1866b2:-8000:0000000000000923'\r
+ lower = '1' upper = '1'/>\r
+ </UML:Multiplicity.range>\r
+ </UML:Multiplicity>\r
+ </UML:StructuralFeature.multiplicity>\r
+ <UML:StructuralFeature.type>\r
+ <UML:DataType xmi.idref = '-64--88-1-101-3dc093e3:1157f1866b2:-8000:0000000000000925'/>\r
+ </UML:StructuralFeature.type>\r
+ </UML:Attribute>\r
+ <UML:Attribute xmi.id = '-64--88-1-101-3dc093e3:1157f1866b2:-8000:000000000000091C'\r
+ name = 'version' visibility = 'public' isSpecification = 'false' ownerScope = 'instance'\r
+ changeability = 'changeable' targetScope = 'instance'>\r
+ <UML:StructuralFeature.multiplicity>\r
+ <UML:Multiplicity xmi.id = '-64--88-1-101-3dc093e3:1157f1866b2:-8000:0000000000000920'>\r
+ <UML:Multiplicity.range>\r
+ <UML:MultiplicityRange xmi.id = '-64--88-1-101-3dc093e3:1157f1866b2:-8000:000000000000091F'\r
+ lower = '1' upper = '1'/>\r
+ </UML:Multiplicity.range>\r
+ </UML:Multiplicity>\r
+ </UML:StructuralFeature.multiplicity>\r
+ <UML:StructuralFeature.type>\r
+ <UML:Class xmi.idref = '-64--88-0-11-7e9e46a8:113ee067f97:-8000:00000000000007DA'/>\r
+ </UML:StructuralFeature.type>\r
+ </UML:Attribute>\r
+ </UML:Classifier.feature>\r
+ </UML:Class>\r
+ <UML:Class xmi.id = '-64--88-1-101-3dc093e3:1157f1866b2:-8000:0000000000000909'\r
+ name = 'HeavyFilesRepository' visibility = 'public' isSpecification = 'false'\r
+ isRoot = 'false' isLeaf = 'false' isAbstract = 'false' isActive = 'false'/>\r
+ <UML:Association xmi.id = '-64--88-1-101-3dc093e3:1157f1866b2:-8000:000000000000090B'\r
+ name = '' isSpecification = 'false' isRoot = 'false' isLeaf = 'false' isAbstract = 'false'>\r
+ <UML:Association.connection>\r
+ <UML:AssociationEnd xmi.id = '-64--88-1-101-3dc093e3:1157f1866b2:-8000:000000000000090C'\r
+ visibility = 'public' isSpecification = 'false' isNavigable = 'false' ordering = 'unordered'\r
+ aggregation = 'none' targetScope = 'instance' changeability = 'changeable'>\r
+ <UML:AssociationEnd.multiplicity>\r
+ <UML:Multiplicity xmi.id = '-64--88-1-101-3dc093e3:1157f1866b2:-8000:000000000000090D'>\r
+ <UML:Multiplicity.range>\r
+ <UML:MultiplicityRange xmi.id = '-64--88-1-101-3dc093e3:1157f1866b2:-8000:000000000000090E'\r
+ lower = '1' upper = '1'/>\r
+ </UML:Multiplicity.range>\r
+ </UML:Multiplicity>\r
+ </UML:AssociationEnd.multiplicity>\r
+ <UML:AssociationEnd.participant>\r
+ <UML:Class xmi.idref = '-64--88-1-101-3dc093e3:1157f1866b2:-8000:0000000000000909'/>\r
+ </UML:AssociationEnd.participant>\r
+ </UML:AssociationEnd>\r
+ <UML:AssociationEnd xmi.id = '-64--88-1-101-3dc093e3:1157f1866b2:-8000:000000000000090F'\r
+ name = 'files' visibility = 'public' isSpecification = 'false' isNavigable = 'true'\r
+ ordering = 'unordered' aggregation = 'none' targetScope = 'instance' changeability = 'changeable'>\r
+ <UML:AssociationEnd.multiplicity>\r
+ <UML:Multiplicity xmi.id = '-64--88-1-101--4a0353a6:1158fc10f03:-8000:0000000000000C30'>\r
+ <UML:Multiplicity.range>\r
+ <UML:MultiplicityRange xmi.id = '-64--88-1-101--4a0353a6:1158fc10f03:-8000:0000000000000C2F'\r
+ lower = '0' upper = '-1'/>\r
+ </UML:Multiplicity.range>\r
+ </UML:Multiplicity>\r
+ </UML:AssociationEnd.multiplicity>\r
+ <UML:AssociationEnd.participant>\r
+ <UML:Class xmi.idref = '-64--88-1-101-3dc093e3:1157f1866b2:-8000:0000000000000906'/>\r
+ </UML:AssociationEnd.participant>\r
+ </UML:AssociationEnd>\r
+ </UML:Association.connection>\r
+ </UML:Association>\r
+ <UML:Package xmi.id = '-64--88-1-101-3dc093e3:1157f1866b2:-8000:0000000000000919'\r
+ name = 'java' isSpecification = 'false' isRoot = 'false' isLeaf = 'false'\r
+ isAbstract = 'false'>\r
+ <UML:Namespace.ownedElement>\r
+ <UML:Package xmi.id = '-64--88-1-101-3dc093e3:1157f1866b2:-8000:000000000000091A'\r
+ name = 'lang' isSpecification = 'false' isRoot = 'false' isLeaf = 'false'\r
+ isAbstract = 'false'>\r
+ <UML:Namespace.ownedElement>\r
+ <UML:Class xmi.id = '-64--88-1-101-3dc093e3:1157f1866b2:-8000:000000000000091B'\r
+ name = 'Long' isSpecification = 'false' isRoot = 'false' isLeaf = 'false'\r
+ isAbstract = 'false' isActive = 'false'/>\r
+ </UML:Namespace.ownedElement>\r
+ </UML:Package>\r
+ </UML:Namespace.ownedElement>\r
+ </UML:Package>\r
+ <UML:DataType xmi.id = '-64--88-1-101-3dc093e3:1157f1866b2:-8000:0000000000000925'\r
+ name = 'long' isSpecification = 'false' isRoot = 'false' isLeaf = 'false'\r
+ isAbstract = 'false'/>\r
+ <UML:Class xmi.id = '-64--88-1-101-3dc093e3:1157f1866b2:-8000:0000000000000926'\r
+ name = 'TestData' visibility = 'public' isSpecification = 'false' isRoot = 'false'\r
+ isLeaf = 'false' isAbstract = 'false' isActive = 'false'/>\r
+ <UML:Association xmi.id = '-64--88-1-101-3dc093e3:1157f1866b2:-8000:0000000000000928'\r
+ name = '' isSpecification = 'false' isRoot = 'false' isLeaf = 'false' isAbstract = 'false'>\r
+ <UML:Association.connection>\r
+ <UML:AssociationEnd xmi.id = '-64--88-1-101-3dc093e3:1157f1866b2:-8000:0000000000000929'\r
+ visibility = 'public' isSpecification = 'false' isNavigable = 'false' ordering = 'unordered'\r
+ aggregation = 'none' targetScope = 'instance' changeability = 'changeable'>\r
+ <UML:AssociationEnd.multiplicity>\r
+ <UML:Multiplicity xmi.id = '-64--88-1-101-3dc093e3:1157f1866b2:-8000:0000000000000930'>\r
+ <UML:Multiplicity.range>\r
+ <UML:MultiplicityRange xmi.id = '-64--88-1-101-3dc093e3:1157f1866b2:-8000:000000000000092F'\r
+ lower = '0' upper = '-1'/>\r
+ </UML:Multiplicity.range>\r
+ </UML:Multiplicity>\r
+ </UML:AssociationEnd.multiplicity>\r
+ <UML:AssociationEnd.participant>\r
+ <UML:Class xmi.idref = '-64--88-0-11-7e9e46a8:113ee067f97:-8000:000000000000077A'/>\r
+ </UML:AssociationEnd.participant>\r
+ </UML:AssociationEnd>\r
+ <UML:AssociationEnd xmi.id = '-64--88-1-101-3dc093e3:1157f1866b2:-8000:000000000000092C'\r
+ name = 'testData' visibility = 'public' isSpecification = 'false' isNavigable = 'true'\r
+ ordering = 'unordered' aggregation = 'none' targetScope = 'instance' changeability = 'changeable'>\r
+ <UML:AssociationEnd.multiplicity>\r
+ <UML:Multiplicity xmi.id = '-64--88-1-101-3dc093e3:1157f1866b2:-8000:000000000000092D'>\r
+ <UML:Multiplicity.range>\r
+ <UML:MultiplicityRange xmi.id = '-64--88-1-101-3dc093e3:1157f1866b2:-8000:000000000000092E'\r
+ lower = '1' upper = '1'/>\r
+ </UML:Multiplicity.range>\r
+ </UML:Multiplicity>\r
+ </UML:AssociationEnd.multiplicity>\r
+ <UML:AssociationEnd.participant>\r
+ <UML:Class xmi.idref = '-64--88-1-101-3dc093e3:1157f1866b2:-8000:0000000000000926'/>\r
+ </UML:AssociationEnd.participant>\r
+ </UML:AssociationEnd>\r
+ </UML:Association.connection>\r
+ </UML:Association>\r
+ <UML:Class xmi.id = '-64--88-1-101-3dc093e3:1157f1866b2:-8000:0000000000000931'\r
+ name = 'TargetData' visibility = 'public' isSpecification = 'false' isRoot = 'false'\r
+ isLeaf = 'false' isAbstract = 'false' isActive = 'false'/>\r
+ <UML:Association xmi.id = '-64--88-1-101-3dc093e3:1157f1866b2:-8000:0000000000000933'\r
+ name = '' isSpecification = 'false' isRoot = 'false' isLeaf = 'false' isAbstract = 'false'>\r
+ <UML:Association.connection>\r
+ <UML:AssociationEnd xmi.id = '-64--88-1-101-3dc093e3:1157f1866b2:-8000:0000000000000934'\r
+ visibility = 'public' isSpecification = 'false' isNavigable = 'false' ordering = 'unordered'\r
+ aggregation = 'none' targetScope = 'instance' changeability = 'changeable'>\r
+ <UML:AssociationEnd.multiplicity>\r
+ <UML:Multiplicity xmi.id = '-64--88-1-101-3dc093e3:1157f1866b2:-8000:000000000000093B'>\r
+ <UML:Multiplicity.range>\r
+ <UML:MultiplicityRange xmi.id = '-64--88-1-101-3dc093e3:1157f1866b2:-8000:000000000000093A'\r
+ lower = '1' upper = '1'/>\r
+ </UML:Multiplicity.range>\r
+ </UML:Multiplicity>\r
+ </UML:AssociationEnd.multiplicity>\r
+ <UML:AssociationEnd.participant>\r
+ <UML:Class xmi.idref = '-64--88-0-11-7e9e46a8:113ee067f97:-8000:000000000000076F'/>\r
+ </UML:AssociationEnd.participant>\r
+ </UML:AssociationEnd>\r
+ <UML:AssociationEnd xmi.id = '-64--88-1-101-3dc093e3:1157f1866b2:-8000:0000000000000937'\r
+ name = 'targetData' visibility = 'public' isSpecification = 'false' isNavigable = 'true'\r
+ ordering = 'unordered' aggregation = 'none' targetScope = 'instance' changeability = 'changeable'>\r
+ <UML:AssociationEnd.multiplicity>\r
+ <UML:Multiplicity xmi.id = '-64--88-1-101-3dc093e3:1157f1866b2:-8000:0000000000000938'>\r
+ <UML:Multiplicity.range>\r
+ <UML:MultiplicityRange xmi.id = '-64--88-1-101-3dc093e3:1157f1866b2:-8000:0000000000000939'\r
+ lower = '1' upper = '1'/>\r
+ </UML:Multiplicity.range>\r
+ </UML:Multiplicity>\r
+ </UML:AssociationEnd.multiplicity>\r
+ <UML:AssociationEnd.participant>\r
+ <UML:Class xmi.idref = '-64--88-1-101-3dc093e3:1157f1866b2:-8000:0000000000000931'/>\r
+ </UML:AssociationEnd.participant>\r
+ </UML:AssociationEnd>\r
+ </UML:Association.connection>\r
+ </UML:Association>\r
+ <UML:Class xmi.id = '-64--88-1-101-3dc093e3:1157f1866b2:-8000:0000000000000945'\r
+ name = 'Attachement' visibility = 'public' isSpecification = 'false' isRoot = 'false'\r
+ isLeaf = 'false' isAbstract = 'false' isActive = 'false'/>\r
+ <UML:Association xmi.id = '-64--88-1-101-3dc093e3:1157f1866b2:-8000:0000000000000947'\r
+ name = '' isSpecification = 'false' isRoot = 'false' isLeaf = 'false' isAbstract = 'false'>\r
+ <UML:Association.connection>\r
+ <UML:AssociationEnd xmi.id = '-64--88-1-101-3dc093e3:1157f1866b2:-8000:0000000000000948'\r
+ visibility = 'public' isSpecification = 'false' isNavigable = 'false' ordering = 'unordered'\r
+ aggregation = 'none' targetScope = 'instance' changeability = 'changeable'>\r
+ <UML:AssociationEnd.multiplicity>\r
+ <UML:Multiplicity xmi.id = '-64--88-1-101-3dc093e3:1157f1866b2:-8000:0000000000000949'>\r
+ <UML:Multiplicity.range>\r
+ <UML:MultiplicityRange xmi.id = '-64--88-1-101-3dc093e3:1157f1866b2:-8000:000000000000094A'\r
+ lower = '1' upper = '1'/>\r
+ </UML:Multiplicity.range>\r
+ </UML:Multiplicity>\r
+ </UML:AssociationEnd.multiplicity>\r
+ <UML:AssociationEnd.participant>\r
+ <UML:Class xmi.idref = '-64--88-0-11-7e9e46a8:113ee067f97:-8000:00000000000007CF'/>\r
+ </UML:AssociationEnd.participant>\r
+ </UML:AssociationEnd>\r
+ <UML:AssociationEnd xmi.id = '-64--88-1-101-3dc093e3:1157f1866b2:-8000:000000000000094B'\r
+ name = 'attachements' visibility = 'public' isSpecification = 'false' isNavigable = 'true'\r
+ ordering = 'unordered' aggregation = 'none' targetScope = 'instance' changeability = 'changeable'>\r
+ <UML:AssociationEnd.multiplicity>\r
+ <UML:Multiplicity xmi.id = '-64--88-1-101-3dc093e3:1157f1866b2:-8000:000000000000094F'>\r
+ <UML:Multiplicity.range>\r
+ <UML:MultiplicityRange xmi.id = '-64--88-1-101-3dc093e3:1157f1866b2:-8000:000000000000094E'\r
+ lower = '0' upper = '-1'/>\r
+ </UML:Multiplicity.range>\r
+ </UML:Multiplicity>\r
+ </UML:AssociationEnd.multiplicity>\r
+ <UML:AssociationEnd.participant>\r
+ <UML:Class xmi.idref = '-64--88-1-101-3dc093e3:1157f1866b2:-8000:0000000000000945'/>\r
+ </UML:AssociationEnd.participant>\r
+ </UML:AssociationEnd>\r
+ </UML:Association.connection>\r
+ </UML:Association>\r
+ <UML:Class xmi.id = '-64--88-1-101-3dc093e3:1157f1866b2:-8000:0000000000000950'\r
+ name = 'URLAttachement' visibility = 'public' isSpecification = 'false'\r
+ isRoot = 'false' isLeaf = 'false' isAbstract = 'false' isActive = 'false'>\r
+ <UML:GeneralizableElement.generalization>\r
+ <UML:Generalization xmi.idref = '-64--88-1-101--4a0353a6:1158fc10f03:-8000:0000000000000C2B'/>\r
+ </UML:GeneralizableElement.generalization>\r
+ </UML:Class>\r
+ <UML:Class xmi.id = '-64--88-1-101-3dc093e3:1157f1866b2:-8000:0000000000000952'\r
+ name = 'BinaryFileAttachement' visibility = 'public' isSpecification = 'false'\r
+ isRoot = 'false' isLeaf = 'false' isAbstract = 'false' isActive = 'false'>\r
+ <UML:GeneralizableElement.generalization>\r
+ <UML:Generalization xmi.idref = '-64--88-1-101--4a0353a6:1158fc10f03:-8000:0000000000000C2A'/>\r
+ </UML:GeneralizableElement.generalization>\r
+ </UML:Class>\r
+ <UML:Class xmi.id = '-64--88-1-101-3dc093e3:1157f1866b2:-8000:0000000000000954'\r
+ name = 'TestFileAttachement' visibility = 'public' isSpecification = 'false'\r
+ isRoot = 'false' isLeaf = 'false' isAbstract = 'false' isActive = 'false'>\r
+ <UML:GeneralizableElement.generalization>\r
+ <UML:Generalization xmi.idref = '-64--88-1-101--4a0353a6:1158fc10f03:-8000:0000000000000C2C'/>\r
+ </UML:GeneralizableElement.generalization>\r
+ </UML:Class>\r
+ <UML:Class xmi.id = '-64--88-1-101-3dc093e3:1157f1866b2:-8000:0000000000000959'\r
+ name = 'TestResult' visibility = 'public' isSpecification = 'false' isRoot = 'false'\r
+ isLeaf = 'false' isAbstract = 'false' isActive = 'false'/>\r
+ <UML:Association xmi.id = '-64--88-1-101-3dc093e3:1157f1866b2:-8000:000000000000095B'\r
+ name = '' isSpecification = 'false' isRoot = 'false' isLeaf = 'false' isAbstract = 'false'>\r
+ <UML:Association.connection>\r
+ <UML:AssociationEnd xmi.id = '-64--88-1-101-3dc093e3:1157f1866b2:-8000:000000000000095C'\r
+ visibility = 'public' isSpecification = 'false' isNavigable = 'false' ordering = 'unordered'\r
+ aggregation = 'none' targetScope = 'instance' changeability = 'changeable'>\r
+ <UML:AssociationEnd.multiplicity>\r
+ <UML:Multiplicity xmi.id = '-64--88-1-101-3dc093e3:1157f1866b2:-8000:000000000000095D'>\r
+ <UML:Multiplicity.range>\r
+ <UML:MultiplicityRange xmi.id = '-64--88-1-101-3dc093e3:1157f1866b2:-8000:000000000000095E'\r
+ lower = '1' upper = '1'/>\r
+ </UML:Multiplicity.range>\r
+ </UML:Multiplicity>\r
+ </UML:AssociationEnd.multiplicity>\r
+ <UML:AssociationEnd.participant>\r
+ <UML:Class xmi.idref = '-64--88-0-11-7e9e46a8:113ee067f97:-8000:000000000000077A'/>\r
+ </UML:AssociationEnd.participant>\r
+ </UML:AssociationEnd>\r
+ <UML:AssociationEnd xmi.id = '-64--88-1-101-3dc093e3:1157f1866b2:-8000:000000000000095F'\r
+ name = 'testResult' visibility = 'public' isSpecification = 'false' isNavigable = 'true'\r
+ ordering = 'unordered' aggregation = 'none' targetScope = 'instance' changeability = 'changeable'>\r
+ <UML:AssociationEnd.multiplicity>\r
+ <UML:Multiplicity xmi.id = '-64--88-1-101-3dc093e3:1157f1866b2:-8000:0000000000000960'>\r
+ <UML:Multiplicity.range>\r
+ <UML:MultiplicityRange xmi.id = '-64--88-1-101-3dc093e3:1157f1866b2:-8000:0000000000000961'\r
+ lower = '1' upper = '1'/>\r
+ </UML:Multiplicity.range>\r
+ </UML:Multiplicity>\r
+ </UML:AssociationEnd.multiplicity>\r
+ <UML:AssociationEnd.participant>\r
+ <UML:Class xmi.idref = '-64--88-1-101-3dc093e3:1157f1866b2:-8000:0000000000000959'/>\r
+ </UML:AssociationEnd.participant>\r
+ </UML:AssociationEnd>\r
+ </UML:Association.connection>\r
+ </UML:Association>\r
+ <UML:Class xmi.id = '-64--88-1-101-3dc093e3:1157f1866b2:-8000:0000000000000966'\r
+ name = 'TestResultId' visibility = 'public' isSpecification = 'false' isRoot = 'false'\r
+ isLeaf = 'false' isAbstract = 'false' isActive = 'false'/>\r
+ <UML:Association xmi.id = '-64--88-1-101-3dc093e3:1157f1866b2:-8000:0000000000000968'\r
+ name = '' isSpecification = 'false' isRoot = 'false' isLeaf = 'false' isAbstract = 'false'>\r
+ <UML:Association.connection>\r
+ <UML:AssociationEnd xmi.id = '-64--88-1-101-3dc093e3:1157f1866b2:-8000:0000000000000969'\r
+ name = '' visibility = 'public' isSpecification = 'false' isNavigable = 'false'\r
+ ordering = 'unordered' aggregation = 'none' targetScope = 'instance' changeability = 'changeable'>\r
+ <UML:AssociationEnd.multiplicity>\r
+ <UML:Multiplicity xmi.id = '-64--88-1-101--4a0353a6:1158fc10f03:-8000:0000000000000C38'>\r
+ <UML:Multiplicity.range>\r
+ <UML:MultiplicityRange xmi.id = '-64--88-1-101--4a0353a6:1158fc10f03:-8000:0000000000000C37'\r
+ lower = '1' upper = '1'/>\r
+ </UML:Multiplicity.range>\r
+ </UML:Multiplicity>\r
+ </UML:AssociationEnd.multiplicity>\r
+ <UML:AssociationEnd.participant>\r
+ <UML:Class xmi.idref = '-64--88-1-101-3dc093e3:1157f1866b2:-8000:0000000000000959'/>\r
+ </UML:AssociationEnd.participant>\r
+ </UML:AssociationEnd>\r
+ <UML:AssociationEnd xmi.id = '-64--88-1-101-3dc093e3:1157f1866b2:-8000:000000000000096C'\r
+ name = 'testResultId' visibility = 'public' isSpecification = 'false' isNavigable = 'true'\r
+ ordering = 'unordered' aggregation = 'none' targetScope = 'instance' changeability = 'changeable'>\r
+ <UML:AssociationEnd.multiplicity>\r
+ <UML:Multiplicity xmi.id = '-64--88-1-101--4a0353a6:1158fc10f03:-8000:0000000000000C3A'>\r
+ <UML:Multiplicity.range>\r
+ <UML:MultiplicityRange xmi.id = '-64--88-1-101--4a0353a6:1158fc10f03:-8000:0000000000000C39'\r
+ lower = '1' upper = '1'/>\r
+ </UML:Multiplicity.range>\r
+ </UML:Multiplicity>\r
+ </UML:AssociationEnd.multiplicity>\r
+ <UML:AssociationEnd.participant>\r
+ <UML:Class xmi.idref = '-64--88-1-101-3dc093e3:1157f1866b2:-8000:0000000000000966'/>\r
+ </UML:AssociationEnd.participant>\r
+ </UML:AssociationEnd>\r
+ </UML:Association.connection>\r
+ </UML:Association>\r
+ <UML:Association xmi.id = '-64--88-1-101-3dc093e3:1157f1866b2:-8000:000000000000096F'\r
+ name = '' isSpecification = 'false' isRoot = 'false' isLeaf = 'false' isAbstract = 'false'>\r
+ <UML:Association.connection>\r
+ <UML:AssociationEnd xmi.id = '-64--88-1-101-3dc093e3:1157f1866b2:-8000:0000000000000970'\r
+ visibility = 'public' isSpecification = 'false' isNavigable = 'false' ordering = 'unordered'\r
+ aggregation = 'none' targetScope = 'instance' changeability = 'changeable'>\r
+ <UML:AssociationEnd.multiplicity>\r
+ <UML:Multiplicity xmi.id = '-64--88-1-101-3dc093e3:1157f1866b2:-8000:0000000000000971'>\r
+ <UML:Multiplicity.range>\r
+ <UML:MultiplicityRange xmi.id = '-64--88-1-101-3dc093e3:1157f1866b2:-8000:0000000000000972'\r
+ lower = '1' upper = '1'/>\r
+ </UML:Multiplicity.range>\r
+ </UML:Multiplicity>\r
+ </UML:AssociationEnd.multiplicity>\r
+ <UML:AssociationEnd.participant>\r
+ <UML:Class xmi.idref = '-64--88-1-101-3dc093e3:1157f1866b2:-8000:0000000000000966'/>\r
+ </UML:AssociationEnd.participant>\r
+ </UML:AssociationEnd>\r
+ <UML:AssociationEnd xmi.id = '-64--88-1-101-3dc093e3:1157f1866b2:-8000:0000000000000973'\r
+ name = 'deployedSystemId' visibility = 'public' isSpecification = 'false'\r
+ isNavigable = 'true' ordering = 'unordered' aggregation = 'none' targetScope = 'instance'\r
+ changeability = 'changeable'>\r
+ <UML:AssociationEnd.multiplicity>\r
+ <UML:Multiplicity xmi.id = '-64--88-1-101-3dc093e3:1157f1866b2:-8000:0000000000000974'>\r
+ <UML:Multiplicity.range>\r
+ <UML:MultiplicityRange xmi.id = '-64--88-1-101-3dc093e3:1157f1866b2:-8000:0000000000000975'\r
+ lower = '1' upper = '1'/>\r
+ </UML:Multiplicity.range>\r
+ </UML:Multiplicity>\r
+ </UML:AssociationEnd.multiplicity>\r
+ <UML:AssociationEnd.participant>\r
+ <UML:Class xmi.idref = '-64--88-1-101--3f3f1022:1157622ef7f:-8000:00000000000008AE'/>\r
+ </UML:AssociationEnd.participant>\r
+ </UML:AssociationEnd>\r
+ </UML:Association.connection>\r
+ </UML:Association>\r
+ <UML:Association xmi.id = '-64--88-1-101-3dc093e3:1157f1866b2:-8000:0000000000000976'\r
+ name = '' isSpecification = 'false' isRoot = 'false' isLeaf = 'false' isAbstract = 'false'>\r
+ <UML:Association.connection>\r
+ <UML:AssociationEnd xmi.id = '-64--88-1-101-3dc093e3:1157f1866b2:-8000:0000000000000977'\r
+ visibility = 'public' isSpecification = 'false' isNavigable = 'false' ordering = 'unordered'\r
+ aggregation = 'none' targetScope = 'instance' changeability = 'changeable'>\r
+ <UML:AssociationEnd.multiplicity>\r
+ <UML:Multiplicity xmi.id = '-64--88-1-101-3dc093e3:1157f1866b2:-8000:0000000000000980'>\r
+ <UML:Multiplicity.range>\r
+ <UML:MultiplicityRange xmi.id = '-64--88-1-101-3dc093e3:1157f1866b2:-8000:000000000000097F'\r
+ lower = '0' upper = '-1'/>\r
+ </UML:Multiplicity.range>\r
+ </UML:Multiplicity>\r
+ </UML:AssociationEnd.multiplicity>\r
+ <UML:AssociationEnd.participant>\r
+ <UML:Class xmi.idref = '-64--88-1-101--3f3f1022:1157622ef7f:-8000:00000000000008AE'/>\r
+ </UML:AssociationEnd.participant>\r
+ </UML:AssociationEnd>\r
+ <UML:AssociationEnd xmi.id = '-64--88-1-101-3dc093e3:1157f1866b2:-8000:000000000000097A'\r
+ name = 'distributionIds' visibility = 'public' isSpecification = 'false'\r
+ isNavigable = 'true' ordering = 'unordered' aggregation = 'none' targetScope = 'instance'\r
+ changeability = 'changeable'>\r
+ <UML:AssociationEnd.multiplicity>\r
+ <UML:Multiplicity xmi.id = '-64--88-1-101-3dc093e3:1157f1866b2:-8000:0000000000000982'>\r
+ <UML:Multiplicity.range>\r
+ <UML:MultiplicityRange xmi.id = '-64--88-1-101-3dc093e3:1157f1866b2:-8000:0000000000000981'\r
+ lower = '1' upper = '-1'/>\r
+ </UML:Multiplicity.range>\r
+ </UML:Multiplicity>\r
+ </UML:AssociationEnd.multiplicity>\r
+ <UML:AssociationEnd.participant>\r
+ <UML:Class xmi.idref = '-64--88-1-101--3f3f1022:1157622ef7f:-8000:00000000000008AC'/>\r
+ </UML:AssociationEnd.participant>\r
+ </UML:AssociationEnd>\r
+ </UML:Association.connection>\r
+ </UML:Association>\r
+ <UML:Class xmi.id = '-64--88-1-101-3dc093e3:1157f1866b2:-8000:0000000000000983'\r
+ name = 'TestReport' visibility = 'public' isSpecification = 'false' isRoot = 'false'\r
+ isLeaf = 'false' isAbstract = 'false' isActive = 'false'/>\r
+ <UML:Association xmi.id = '-64--88-1-101-3dc093e3:1157f1866b2:-8000:0000000000000985'\r
+ name = '' isSpecification = 'false' isRoot = 'false' isLeaf = 'false' isAbstract = 'false'>\r
+ <UML:Association.connection>\r
+ <UML:AssociationEnd xmi.id = '-64--88-1-101-3dc093e3:1157f1866b2:-8000:0000000000000986'\r
+ visibility = 'public' isSpecification = 'false' isNavigable = 'false' ordering = 'unordered'\r
+ aggregation = 'none' targetScope = 'instance' changeability = 'changeable'>\r
+ <UML:AssociationEnd.multiplicity>\r
+ <UML:Multiplicity xmi.id = '-64--88-1-101-3dc093e3:1157f1866b2:-8000:000000000000098D'>\r
+ <UML:Multiplicity.range>\r
+ <UML:MultiplicityRange xmi.id = '-64--88-1-101-3dc093e3:1157f1866b2:-8000:000000000000098C'\r
+ lower = '0' upper = '-1'/>\r
+ </UML:Multiplicity.range>\r
+ </UML:Multiplicity>\r
+ </UML:AssociationEnd.multiplicity>\r
+ <UML:AssociationEnd.participant>\r
+ <UML:Class xmi.idref = '-64--88-1-101-3dc093e3:1157f1866b2:-8000:0000000000000983'/>\r
+ </UML:AssociationEnd.participant>\r
+ </UML:AssociationEnd>\r
+ <UML:AssociationEnd xmi.id = '-64--88-1-101-3dc093e3:1157f1866b2:-8000:0000000000000989'\r
+ name = 'testResult' visibility = 'public' isSpecification = 'false' isNavigable = 'true'\r
+ ordering = 'unordered' aggregation = 'none' targetScope = 'instance' changeability = 'changeable'>\r
+ <UML:AssociationEnd.multiplicity>\r
+ <UML:Multiplicity xmi.id = '-64--88-1-101-3dc093e3:1157f1866b2:-8000:000000000000098A'>\r
+ <UML:Multiplicity.range>\r
+ <UML:MultiplicityRange xmi.id = '-64--88-1-101-3dc093e3:1157f1866b2:-8000:000000000000098B'\r
+ lower = '1' upper = '1'/>\r
+ </UML:Multiplicity.range>\r
+ </UML:Multiplicity>\r
+ </UML:AssociationEnd.multiplicity>\r
+ <UML:AssociationEnd.participant>\r
+ <UML:Class xmi.idref = '-64--88-1-101-3dc093e3:1157f1866b2:-8000:0000000000000959'/>\r
+ </UML:AssociationEnd.participant>\r
+ </UML:AssociationEnd>\r
+ </UML:Association.connection>\r
+ </UML:Association>\r
+ <UML:Class xmi.id = '-64--88-1-101--7f8968dd:1157f72a2bb:-8000:0000000000000951'\r
+ name = 'DatabaseDeployer' visibility = 'public' isSpecification = 'false'\r
+ isRoot = 'false' isLeaf = 'false' isAbstract = 'false' isActive = 'false'>\r
+ <UML:Classifier.feature>\r
+ <UML:Operation xmi.id = '-64--88-1-101--7f8968dd:1157f72a2bb:-8000:0000000000000953'\r
+ name = 'deploy' visibility = 'public' isSpecification = 'false' ownerScope = 'instance'\r
+ isQuery = 'false' concurrency = 'sequential' isRoot = 'false' isLeaf = 'false'\r
+ isAbstract = 'false'>\r
+ <UML:BehavioralFeature.parameter>\r
+ <UML:Parameter xmi.id = '-64--88-1-101--7f8968dd:1157f72a2bb:-8000:0000000000000954'\r
+ name = 'return' isSpecification = 'false' kind = 'return'>\r
+ <UML:Parameter.type>\r
+ <UML:Class xmi.idref = '-64--88-0-11-7e9e46a8:113ee067f97:-8000:0000000000000861'/>\r
+ </UML:Parameter.type>\r
+ </UML:Parameter>\r
+ <UML:Parameter xmi.id = '-64--88-1-101--7f8968dd:1157f72a2bb:-8000:0000000000000955'\r
+ name = 'dump' isSpecification = 'false'>\r
+ <UML:Parameter.type>\r
+ <UML:Class xmi.idref = '-64--88-1-101-3dc093e3:1157f1866b2:-8000:00000000000008D0'/>\r
+ </UML:Parameter.type>\r
+ </UML:Parameter>\r
+ <UML:Parameter xmi.id = '-64--88-1-101--7f8968dd:1157f72a2bb:-8000:0000000000000956'\r
+ name = 'server' isSpecification = 'false'>\r
+ <UML:Parameter.type>\r
+ <UML:Class xmi.idref = '-64--88-0-11--3bcecc2b:113edff40cb:-8000:000000000000073B'/>\r
+ </UML:Parameter.type>\r
+ </UML:Parameter>\r
+ </UML:BehavioralFeature.parameter>\r
+ </UML:Operation>\r
+ </UML:Classifier.feature>\r
+ </UML:Class>\r
+ <UML:Class xmi.id = '-64--88-1-101--7f8968dd:1157f72a2bb:-8000:0000000000000957'\r
+ name = 'VersionedFileSetDeployer' visibility = 'public' isSpecification = 'false'\r
+ isRoot = 'false' isLeaf = 'false' isAbstract = 'false' isActive = 'false'>\r
+ <UML:Classifier.feature>\r
+ <UML:Operation xmi.id = '-64--88-1-101--7f8968dd:1157f72a2bb:-8000:0000000000000959'\r
+ name = 'deploy' visibility = 'public' isSpecification = 'false' ownerScope = 'instance'\r
+ isQuery = 'false' concurrency = 'sequential' isRoot = 'false' isLeaf = 'false'\r
+ isAbstract = 'false'>\r
+ <UML:BehavioralFeature.parameter>\r
+ <UML:Parameter xmi.id = '-64--88-1-101--7f8968dd:1157f72a2bb:-8000:000000000000095A'\r
+ name = 'return' isSpecification = 'false' kind = 'return'>\r
+ <UML:Parameter.type>\r
+ <UML:Class xmi.idref = '-64--88-0-11-7e9e46a8:113ee067f97:-8000:0000000000000861'/>\r
+ </UML:Parameter.type>\r
+ </UML:Parameter>\r
+ <UML:Parameter xmi.id = '-64--88-1-101--7f8968dd:1157f72a2bb:-8000:000000000000095B'\r
+ name = 'fileSet' isSpecification = 'false'>\r
+ <UML:Parameter.type>\r
+ <UML:Class xmi.idref = '-64--88-1-101-3dc093e3:1157f1866b2:-8000:00000000000008E5'/>\r
+ </UML:Parameter.type>\r
+ </UML:Parameter>\r
+ <UML:Parameter xmi.id = '-64--88-1-101--7f8968dd:1157f72a2bb:-8000:000000000000095C'\r
+ name = 'dir' isSpecification = 'false'>\r
+ <UML:Parameter.type>\r
+ <UML:Class xmi.idref = '-64--88-1-101--7f8968dd:1157f72a2bb:-8000:000000000000095D'/>\r
+ </UML:Parameter.type>\r
+ </UML:Parameter>\r
+ </UML:BehavioralFeature.parameter>\r
+ </UML:Operation>\r
+ </UML:Classifier.feature>\r
+ </UML:Class>\r
+ <UML:Class xmi.id = '-64--88-1-101--7f8968dd:1157f72a2bb:-8000:000000000000095D'\r
+ name = 'File' visibility = 'public' isSpecification = 'false' isRoot = 'false'\r
+ isLeaf = 'false' isAbstract = 'false' isActive = 'false'/>\r
+ <UML:Generalization xmi.id = '-64--88-1-101--4a0353a6:1158fc10f03:-8000:000000000000095E'\r
+ isSpecification = 'false'>\r
+ <UML:Generalization.child>\r
+ <UML:Class xmi.idref = '-64--88-1-101-3dc093e3:1157f1866b2:-8000:00000000000008D0'/>\r
+ </UML:Generalization.child>\r
+ <UML:Generalization.parent>\r
+ <UML:Class xmi.idref = '-64--88-1-101-3dc093e3:1157f1866b2:-8000:0000000000000906'/>\r
+ </UML:Generalization.parent>\r
+ </UML:Generalization>\r
+ <UML:Generalization xmi.id = '-64--88-1-101--4a0353a6:1158fc10f03:-8000:000000000000095F'\r
+ isSpecification = 'false'>\r
+ <UML:Generalization.child>\r
+ <UML:Class xmi.idref = '-64--88-1-101-3dc093e3:1157f1866b2:-8000:00000000000008F8'/>\r
+ </UML:Generalization.child>\r
+ <UML:Generalization.parent>\r
+ <UML:Class xmi.idref = '-64--88-1-101-3dc093e3:1157f1866b2:-8000:00000000000008E5'/>\r
+ </UML:Generalization.parent>\r
+ </UML:Generalization>\r
+ <UML:Generalization xmi.id = '-64--88-1-101--4a0353a6:1158fc10f03:-8000:0000000000000C2A'\r
+ isSpecification = 'false'>\r
+ <UML:Generalization.child>\r
+ <UML:Class xmi.idref = '-64--88-1-101-3dc093e3:1157f1866b2:-8000:0000000000000952'/>\r
+ </UML:Generalization.child>\r
+ <UML:Generalization.parent>\r
+ <UML:Class xmi.idref = '-64--88-1-101-3dc093e3:1157f1866b2:-8000:0000000000000945'/>\r
+ </UML:Generalization.parent>\r
+ </UML:Generalization>\r
+ <UML:Generalization xmi.id = '-64--88-1-101--4a0353a6:1158fc10f03:-8000:0000000000000C2B'\r
+ isSpecification = 'false'>\r
+ <UML:Generalization.child>\r
+ <UML:Class xmi.idref = '-64--88-1-101-3dc093e3:1157f1866b2:-8000:0000000000000950'/>\r
+ </UML:Generalization.child>\r
+ <UML:Generalization.parent>\r
+ <UML:Class xmi.idref = '-64--88-1-101-3dc093e3:1157f1866b2:-8000:0000000000000945'/>\r
+ </UML:Generalization.parent>\r
+ </UML:Generalization>\r
+ <UML:Generalization xmi.id = '-64--88-1-101--4a0353a6:1158fc10f03:-8000:0000000000000C2C'\r
+ isSpecification = 'false'>\r
+ <UML:Generalization.child>\r
+ <UML:Class xmi.idref = '-64--88-1-101-3dc093e3:1157f1866b2:-8000:0000000000000954'/>\r
+ </UML:Generalization.child>\r
+ <UML:Generalization.parent>\r
+ <UML:Class xmi.idref = '-64--88-1-101-3dc093e3:1157f1866b2:-8000:0000000000000945'/>\r
+ </UML:Generalization.parent>\r
+ </UML:Generalization>\r
+ <UML:Class xmi.id = '-64--88-1-101--4a0353a6:1158fc10f03:-8000:0000000000000C3B'\r
+ name = 'BuildDefinition' visibility = 'public' isSpecification = 'false'\r
+ isRoot = 'false' isLeaf = 'false' isAbstract = 'false' isActive = 'false'/>\r
+ <UML:Association xmi.id = '-64--88-1-101--4a0353a6:1158fc10f03:-8000:0000000000000C3D'\r
+ name = '' isSpecification = 'false' isRoot = 'false' isLeaf = 'false' isAbstract = 'false'>\r
+ <UML:Association.connection>\r
+ <UML:AssociationEnd xmi.id = '-64--88-1-101--4a0353a6:1158fc10f03:-8000:0000000000000C3E'\r
+ visibility = 'public' isSpecification = 'false' isNavigable = 'false' ordering = 'unordered'\r
+ aggregation = 'none' targetScope = 'instance' changeability = 'changeable'>\r
+ <UML:AssociationEnd.multiplicity>\r
+ <UML:Multiplicity xmi.id = '-64--88-1-101--4a0353a6:1158fc10f03:-8000:0000000000000C3F'>\r
+ <UML:Multiplicity.range>\r
+ <UML:MultiplicityRange xmi.id = '-64--88-1-101--4a0353a6:1158fc10f03:-8000:0000000000000C40'\r
+ lower = '1' upper = '1'/>\r
+ </UML:Multiplicity.range>\r
+ </UML:Multiplicity>\r
+ </UML:AssociationEnd.multiplicity>\r
+ <UML:AssociationEnd.participant>\r
+ <UML:Class xmi.idref = '-64--88-0-11-7e9e46a8:113ee067f97:-8000:000000000000074E'/>\r
+ </UML:AssociationEnd.participant>\r
+ </UML:AssociationEnd>\r
+ <UML:AssociationEnd xmi.id = '-64--88-1-101--4a0353a6:1158fc10f03:-8000:0000000000000C41'\r
+ name = 'buildDefinition' visibility = 'public' isSpecification = 'false'\r
+ isNavigable = 'true' ordering = 'unordered' aggregation = 'none' targetScope = 'instance'\r
+ changeability = 'changeable'>\r
+ <UML:AssociationEnd.multiplicity>\r
+ <UML:Multiplicity xmi.id = '-64--88-1-101-51c28c3:1158fddd837:-8000:0000000000000969'>\r
+ <UML:Multiplicity.range>\r
+ <UML:MultiplicityRange xmi.id = '-64--88-1-101-51c28c3:1158fddd837:-8000:0000000000000968'\r
+ lower = '1' upper = '1'/>\r
+ </UML:Multiplicity.range>\r
+ </UML:Multiplicity>\r
+ </UML:AssociationEnd.multiplicity>\r
+ <UML:AssociationEnd.participant>\r
+ <UML:Class xmi.idref = '-64--88-1-101--4a0353a6:1158fc10f03:-8000:0000000000000C3B'/>\r
+ </UML:AssociationEnd.participant>\r
+ </UML:AssociationEnd>\r
+ </UML:Association.connection>\r
+ </UML:Association>\r
+ <UML:Class xmi.id = '-64--88-1-101--4a0353a6:1158fc10f03:-8000:0000000000000C44'\r
+ name = 'CodeFileSet' visibility = 'public' isSpecification = 'false' isRoot = 'false'\r
+ isLeaf = 'false' isAbstract = 'false' isActive = 'false'>\r
+ <UML:GeneralizableElement.generalization>\r
+ <UML:Generalization xmi.idref = '-64--88-1-101--4a0353a6:1158fc10f03:-8000:0000000000000C46'/>\r
+ </UML:GeneralizableElement.generalization>\r
+ </UML:Class>\r
+ <UML:Generalization xmi.id = '-64--88-1-101--4a0353a6:1158fc10f03:-8000:0000000000000C46'\r
+ isSpecification = 'false'>\r
+ <UML:Generalization.child>\r
+ <UML:Class xmi.idref = '-64--88-1-101--4a0353a6:1158fc10f03:-8000:0000000000000C44'/>\r
+ </UML:Generalization.child>\r
+ <UML:Generalization.parent>\r
+ <UML:Class xmi.idref = '-64--88-1-101-3dc093e3:1157f1866b2:-8000:00000000000008E5'/>\r
+ </UML:Generalization.parent>\r
+ </UML:Generalization>\r
+ </UML:Namespace.ownedElement>\r
+ </UML:Model>\r
+ </XMI.content>\r
+</XMI>\r
+<pgml description="org.argouml.uml.diagram.static_structure.ui.UMLClassDiagram|-64--88-0-11--3bcecc2b:113edff40cb:-8000:000000000000071E"\r
+ name="org.argeo.infrastructure"\r
+>\r
+ <rectangle name="Fig0"\r
+ x="16"\r
+ y="392"\r
+ width="416"\r
+ height="248"\r
+ fill="1"\r
+ fillcolor="white"\r
+ stroke="1"\r
+ strokecolor="black"\r
+ />\r
+ <rectangle name="Fig1"\r
+ x="1088"\r
+ y="24"\r
+ width="656"\r
+ height="264"\r
+ fill="1"\r
+ fillcolor="white"\r
+ stroke="1"\r
+ strokecolor="black"\r
+ />\r
+ <rectangle name="Fig2"\r
+ x="16"\r
+ y="656"\r
+ width="1336"\r
+ height="576"\r
+ fill="1"\r
+ fillcolor="white"\r
+ stroke="1"\r
+ strokecolor="black"\r
+ />\r
+ <rectangle name="Fig3"\r
+ x="1088"\r
+ y="304"\r
+ width="656"\r
+ height="336"\r
+ fill="1"\r
+ fillcolor="white"\r
+ stroke="1"\r
+ strokecolor="black"\r
+ />\r
+ <rectangle name="Fig4"\r
+ x="448"\r
+ y="24"\r
+ width="624"\r
+ height="616"\r
+ fill="1"\r
+ fillcolor="white"\r
+ stroke="1"\r
+ strokecolor="black"\r
+ />\r
+ <rectangle name="Fig5"\r
+ x="16"\r
+ y="24"\r
+ width="416"\r
+ height="344"\r
+ fill="1"\r
+ fillcolor="white"\r
+ stroke="1"\r
+ strokecolor="black"\r
+ />\r
+ <group name="Fig6"\r
+ description="org.argouml.uml.diagram.static_structure.ui.FigClass[168, 168, 90, 65]pathVisible=false;operationsVisible=true;attributesVisible=true"\r
+ href="-64--88-0-11-7e9e46a8:113ee067f97:-8000:000000000000072E"\r
+ fill="1"\r
+ fillcolor="white"\r
+ stroke="1"\r
+ strokecolor="black"\r
+ >\r
+ <private>\r
+ </private>\r
+ \r
+ <rectangle name="Fig6.0"\r
+ x="168"\r
+ y="168"\r
+ width="90"\r
+ height="65"\r
+ fill="1"\r
+ fillcolor="white"\r
+ stroke="0"\r
+ strokecolor="black"\r
+ />\r
+ <group name="Fig6.1"\r
+ description="org.argouml.uml.diagram.ui.FigStereotypesCompartment[168, 168, 90, 2]"\r
+ href="-64--88-0-11-7e9e46a8:113ee067f97:-8000:000000000000072E"\r
+ fill="1"\r
+ fillcolor="white"\r
+ stroke="1"\r
+ strokecolor="black"\r
+ >\r
+ <private>\r
+ </private>\r
+ \r
+ <rectangle name="Fig6.1.0"\r
+ x="168"\r
+ y="168"\r
+ width="90"\r
+ height="2"\r
+ fill="1"\r
+ fillcolor="white"\r
+ stroke="1"\r
+ strokecolor="black"\r
+ />\r
+ </group>\r
+ <text name="Fig6.2"\r
+ x="168"\r
+ y="170"\r
+ fill="1"\r
+ fillcolor="white"\r
+ stroke="0"\r
+ strokecolor="red"\r
+ font="Dialog"\r
+ textsize="10"\r
+ >Branch</text>\r
+ <group name="Fig6.3"\r
+ description="org.argouml.uml.diagram.ui.FigOperationsCompartment[169, 213, 89, 20]"\r
+ fill="1"\r
+ fillcolor="white"\r
+ stroke="0"\r
+ strokecolor="black"\r
+ >\r
+ <private>\r
+ </private>\r
+ \r
+ <rectangle name="Fig6.3.0"\r
+ x="169"\r
+ y="213"\r
+ width="89"\r
+ height="20"\r
+ fill="1"\r
+ fillcolor="white"\r
+ stroke="0"\r
+ strokecolor="black"\r
+ />\r
+ <path name="Fig6.3.1"\r
+ description="org.argouml.uml.diagram.ui.FigFeaturesCompartment$FigSeperator"\r
+ fill="1"\r
+ fillcolor="white"\r
+ stroke="1"\r
+ strokecolor="black"\r
+ >\r
+ <moveto x="169"\r
+ y="213" />\r
+ <lineto x="258"\r
+ y="213" />\r
+ </path>\r
+ </group>\r
+ <group name="Fig6.4"\r
+ description="org.argouml.uml.diagram.ui.FigAttributesCompartment[169, 192, 89, 20]"\r
+ fill="1"\r
+ fillcolor="white"\r
+ stroke="0"\r
+ strokecolor="black"\r
+ >\r
+ <private>\r
+ </private>\r
+ \r
+ <rectangle name="Fig6.4.0"\r
+ x="169"\r
+ y="192"\r
+ width="89"\r
+ height="20"\r
+ fill="1"\r
+ fillcolor="white"\r
+ stroke="0"\r
+ strokecolor="black"\r
+ />\r
+ <path name="Fig6.4.1"\r
+ description="org.argouml.uml.diagram.ui.FigFeaturesCompartment$FigSeperator"\r
+ fill="1"\r
+ fillcolor="white"\r
+ stroke="1"\r
+ strokecolor="black"\r
+ >\r
+ <moveto x="169"\r
+ y="192" />\r
+ <lineto x="258"\r
+ y="192" />\r
+ </path>\r
+ </group>\r
+ <rectangle name="Fig6.5"\r
+ x="168"\r
+ y="168"\r
+ width="90"\r
+ height="65"\r
+ fill="0"\r
+ fillcolor="white"\r
+ stroke="1"\r
+ strokecolor="black"\r
+ />\r
+ </group>\r
+ <group name="Fig7"\r
+ description="org.argouml.uml.diagram.static_structure.ui.FigClass[168, 272, 90, 65]pathVisible=false;operationsVisible=true;attributesVisible=true"\r
+ href="-64--88-0-11-7e9e46a8:113ee067f97:-8000:0000000000000730"\r
+ fill="1"\r
+ fillcolor="white"\r
+ stroke="1"\r
+ strokecolor="black"\r
+ >\r
+ <private>\r
+ </private>\r
+ \r
+ <rectangle name="Fig7.0"\r
+ x="168"\r
+ y="272"\r
+ width="90"\r
+ height="65"\r
+ fill="1"\r
+ fillcolor="white"\r
+ stroke="0"\r
+ strokecolor="black"\r
+ />\r
+ <group name="Fig7.1"\r
+ description="org.argouml.uml.diagram.ui.FigStereotypesCompartment[168, 272, 90, 2]"\r
+ href="-64--88-0-11-7e9e46a8:113ee067f97:-8000:0000000000000730"\r
+ fill="1"\r
+ fillcolor="white"\r
+ stroke="1"\r
+ strokecolor="black"\r
+ >\r
+ <private>\r
+ </private>\r
+ \r
+ <rectangle name="Fig7.1.0"\r
+ x="168"\r
+ y="272"\r
+ width="90"\r
+ height="2"\r
+ fill="1"\r
+ fillcolor="white"\r
+ stroke="1"\r
+ strokecolor="black"\r
+ />\r
+ </group>\r
+ <text name="Fig7.2"\r
+ x="168"\r
+ y="274"\r
+ fill="1"\r
+ fillcolor="white"\r
+ stroke="0"\r
+ strokecolor="red"\r
+ font="Dialog"\r
+ textsize="10"\r
+ >Revision</text>\r
+ <group name="Fig7.3"\r
+ description="org.argouml.uml.diagram.ui.FigOperationsCompartment[169, 317, 89, 20]"\r
+ fill="1"\r
+ fillcolor="white"\r
+ stroke="0"\r
+ strokecolor="black"\r
+ >\r
+ <private>\r
+ </private>\r
+ \r
+ <rectangle name="Fig7.3.0"\r
+ x="169"\r
+ y="317"\r
+ width="89"\r
+ height="20"\r
+ fill="1"\r
+ fillcolor="white"\r
+ stroke="0"\r
+ strokecolor="black"\r
+ />\r
+ <path name="Fig7.3.1"\r
+ description="org.argouml.uml.diagram.ui.FigFeaturesCompartment$FigSeperator"\r
+ fill="1"\r
+ fillcolor="white"\r
+ stroke="1"\r
+ strokecolor="black"\r
+ >\r
+ <moveto x="169"\r
+ y="317" />\r
+ <lineto x="258"\r
+ y="317" />\r
+ </path>\r
+ </group>\r
+ <group name="Fig7.4"\r
+ description="org.argouml.uml.diagram.ui.FigAttributesCompartment[169, 296, 89, 20]"\r
+ fill="1"\r
+ fillcolor="white"\r
+ stroke="0"\r
+ strokecolor="black"\r
+ >\r
+ <private>\r
+ </private>\r
+ \r
+ <rectangle name="Fig7.4.0"\r
+ x="169"\r
+ y="296"\r
+ width="89"\r
+ height="20"\r
+ fill="1"\r
+ fillcolor="white"\r
+ stroke="0"\r
+ strokecolor="black"\r
+ />\r
+ <path name="Fig7.4.1"\r
+ description="org.argouml.uml.diagram.ui.FigFeaturesCompartment$FigSeperator"\r
+ fill="1"\r
+ fillcolor="white"\r
+ stroke="1"\r
+ strokecolor="black"\r
+ >\r
+ <moveto x="169"\r
+ y="296" />\r
+ <lineto x="258"\r
+ y="296" />\r
+ </path>\r
+ </group>\r
+ <rectangle name="Fig7.5"\r
+ x="168"\r
+ y="272"\r
+ width="90"\r
+ height="65"\r
+ fill="0"\r
+ fillcolor="white"\r
+ stroke="1"\r
+ strokecolor="black"\r
+ />\r
+ </group>\r
+ <group name="Fig8"\r
+ description="org.argouml.uml.diagram.ui.FigAssociation"\r
+ href="-64--88-0-11-7e9e46a8:113ee067f97:-8000:0000000000000734"\r
+ stroke="1"\r
+ strokecolor="black"\r
+ >\r
+ <private>\r
+ sourcePortFig="Fig20"\r
+ destPortFig="Fig6.0"\r
+ sourceFigNode="Fig20"\r
+ destFigNode="Fig6"\r
+ </private>\r
+ <path name="Fig8.0"\r
+ description="org.tigris.gef.presentation.FigPoly"\r
+ fill="0"\r
+ fillcolor="white"\r
+ stroke="1"\r
+ strokecolor="black"\r
+ >\r
+ <moveto x="48"\r
+ y="216" />\r
+ <lineto x="48"\r
+ y="184" />\r
+ <lineto x="168"\r
+ y="184" />\r
+ </path>\r
+ </group>\r
+ <group name="Fig9"\r
+ description="org.argouml.uml.diagram.static_structure.ui.FigClass[320, 690, 90, 65]pathVisible=false;operationsVisible=true;attributesVisible=true"\r
+ href="-64--88-0-11-7e9e46a8:113ee067f97:-8000:000000000000074E"\r
+ fill="1"\r
+ fillcolor="white"\r
+ stroke="1"\r
+ strokecolor="black"\r
+ >\r
+ <private>\r
+ </private>\r
+ \r
+ <rectangle name="Fig9.0"\r
+ x="320"\r
+ y="690"\r
+ width="90"\r
+ height="65"\r
+ fill="1"\r
+ fillcolor="white"\r
+ stroke="0"\r
+ strokecolor="black"\r
+ />\r
+ <group name="Fig9.1"\r
+ description="org.argouml.uml.diagram.ui.FigStereotypesCompartment[320, 690, 90, 2]"\r
+ href="-64--88-0-11-7e9e46a8:113ee067f97:-8000:000000000000074E"\r
+ fill="1"\r
+ fillcolor="white"\r
+ stroke="1"\r
+ strokecolor="black"\r
+ >\r
+ <private>\r
+ </private>\r
+ \r
+ <rectangle name="Fig9.1.0"\r
+ x="320"\r
+ y="690"\r
+ width="90"\r
+ height="2"\r
+ fill="1"\r
+ fillcolor="white"\r
+ stroke="1"\r
+ strokecolor="black"\r
+ />\r
+ </group>\r
+ <text name="Fig9.2"\r
+ x="320"\r
+ y="692"\r
+ fill="1"\r
+ fillcolor="white"\r
+ stroke="0"\r
+ strokecolor="red"\r
+ font="Dialog"\r
+ textsize="10"\r
+ >Build</text>\r
+ <group name="Fig9.3"\r
+ description="org.argouml.uml.diagram.ui.FigOperationsCompartment[321, 735, 89, 20]"\r
+ fill="1"\r
+ fillcolor="white"\r
+ stroke="0"\r
+ strokecolor="black"\r
+ >\r
+ <private>\r
+ </private>\r
+ \r
+ <rectangle name="Fig9.3.0"\r
+ x="321"\r
+ y="735"\r
+ width="89"\r
+ height="20"\r
+ fill="1"\r
+ fillcolor="white"\r
+ stroke="0"\r
+ strokecolor="black"\r
+ />\r
+ <path name="Fig9.3.1"\r
+ description="org.argouml.uml.diagram.ui.FigFeaturesCompartment$FigSeperator"\r
+ fill="1"\r
+ fillcolor="white"\r
+ stroke="1"\r
+ strokecolor="black"\r
+ >\r
+ <moveto x="321"\r
+ y="735" />\r
+ <lineto x="410"\r
+ y="735" />\r
+ </path>\r
+ </group>\r
+ <group name="Fig9.4"\r
+ description="org.argouml.uml.diagram.ui.FigAttributesCompartment[321, 714, 89, 20]"\r
+ fill="1"\r
+ fillcolor="white"\r
+ stroke="0"\r
+ strokecolor="black"\r
+ >\r
+ <private>\r
+ </private>\r
+ \r
+ <rectangle name="Fig9.4.0"\r
+ x="321"\r
+ y="714"\r
+ width="89"\r
+ height="20"\r
+ fill="1"\r
+ fillcolor="white"\r
+ stroke="0"\r
+ strokecolor="black"\r
+ />\r
+ <path name="Fig9.4.1"\r
+ description="org.argouml.uml.diagram.ui.FigFeaturesCompartment$FigSeperator"\r
+ fill="1"\r
+ fillcolor="white"\r
+ stroke="1"\r
+ strokecolor="black"\r
+ >\r
+ <moveto x="321"\r
+ y="714" />\r
+ <lineto x="410"\r
+ y="714" />\r
+ </path>\r
+ </group>\r
+ <rectangle name="Fig9.5"\r
+ x="320"\r
+ y="690"\r
+ width="90"\r
+ height="65"\r
+ fill="0"\r
+ fillcolor="white"\r
+ stroke="1"\r
+ strokecolor="black"\r
+ />\r
+ </group>\r
+ <group name="Fig10"\r
+ description="org.argouml.uml.diagram.ui.FigAssociation"\r
+ href="-64--88-0-11-7e9e46a8:113ee067f97:-8000:0000000000000757"\r
+ stroke="1"\r
+ strokecolor="black"\r
+ >\r
+ <private>\r
+ sourcePortFig="Fig42"\r
+ destPortFig="Fig6"\r
+ sourceFigNode="Fig42"\r
+ destFigNode="Fig6"\r
+ </private>\r
+ <path name="Fig10.0"\r
+ description="org.tigris.gef.presentation.FigPoly"\r
+ fill="0"\r
+ fillcolor="white"\r
+ stroke="1"\r
+ strokecolor="black"\r
+ >\r
+ <moveto x="320"\r
+ y="184" />\r
+ <lineto x="258"\r
+ y="184" />\r
+ </path>\r
+ </group>\r
+ <group name="Fig11"\r
+ description="org.argouml.uml.diagram.ui.FigAssociation"\r
+ href="-64--88-0-11-7e9e46a8:113ee067f97:-8000:000000000000075E"\r
+ stroke="1"\r
+ strokecolor="black"\r
+ >\r
+ <private>\r
+ sourcePortFig="Fig42"\r
+ destPortFig="Fig7.0"\r
+ sourceFigNode="Fig42"\r
+ destFigNode="Fig7"\r
+ </private>\r
+ <path name="Fig11.0"\r
+ description="org.tigris.gef.presentation.FigPoly"\r
+ fill="0"\r
+ fillcolor="white"\r
+ stroke="1"\r
+ strokecolor="black"\r
+ >\r
+ <moveto x="320"\r
+ y="216" />\r
+ <lineto x="296"\r
+ y="216" />\r
+ <lineto x="296"\r
+ y="312" />\r
+ <lineto x="258"\r
+ y="312" />\r
+ </path>\r
+ </group>\r
+ <group name="Fig12"\r
+ description="org.argouml.uml.diagram.static_structure.ui.FigClass[690, 688, 90, 65]pathVisible=false;operationsVisible=true;attributesVisible=true"\r
+ href="-64--88-0-11-7e9e46a8:113ee067f97:-8000:000000000000076F"\r
+ fill="1"\r
+ fillcolor="white"\r
+ stroke="1"\r
+ strokecolor="black"\r
+ >\r
+ <private>\r
+ </private>\r
+ \r
+ <rectangle name="Fig12.0"\r
+ x="690"\r
+ y="688"\r
+ width="90"\r
+ height="65"\r
+ fill="1"\r
+ fillcolor="white"\r
+ stroke="0"\r
+ strokecolor="black"\r
+ />\r
+ <group name="Fig12.1"\r
+ description="org.argouml.uml.diagram.ui.FigStereotypesCompartment[690, 688, 90, 2]"\r
+ href="-64--88-0-11-7e9e46a8:113ee067f97:-8000:000000000000076F"\r
+ fill="1"\r
+ fillcolor="white"\r
+ stroke="1"\r
+ strokecolor="black"\r
+ >\r
+ <private>\r
+ </private>\r
+ \r
+ <rectangle name="Fig12.1.0"\r
+ x="690"\r
+ y="688"\r
+ width="90"\r
+ height="2"\r
+ fill="1"\r
+ fillcolor="white"\r
+ stroke="1"\r
+ strokecolor="black"\r
+ />\r
+ </group>\r
+ <text name="Fig12.2"\r
+ x="690"\r
+ y="690"\r
+ fill="1"\r
+ fillcolor="white"\r
+ stroke="0"\r
+ strokecolor="red"\r
+ font="Dialog"\r
+ textsize="10"\r
+ >Deployment</text>\r
+ <group name="Fig12.3"\r
+ description="org.argouml.uml.diagram.ui.FigOperationsCompartment[691, 733, 89, 20]"\r
+ fill="1"\r
+ fillcolor="white"\r
+ stroke="0"\r
+ strokecolor="black"\r
+ >\r
+ <private>\r
+ </private>\r
+ \r
+ <rectangle name="Fig12.3.0"\r
+ x="691"\r
+ y="733"\r
+ width="89"\r
+ height="20"\r
+ fill="1"\r
+ fillcolor="white"\r
+ stroke="0"\r
+ strokecolor="black"\r
+ />\r
+ <path name="Fig12.3.1"\r
+ description="org.argouml.uml.diagram.ui.FigFeaturesCompartment$FigSeperator"\r
+ fill="1"\r
+ fillcolor="white"\r
+ stroke="1"\r
+ strokecolor="black"\r
+ >\r
+ <moveto x="691"\r
+ y="733" />\r
+ <lineto x="780"\r
+ y="733" />\r
+ </path>\r
+ </group>\r
+ <group name="Fig12.4"\r
+ description="org.argouml.uml.diagram.ui.FigAttributesCompartment[691, 712, 89, 20]"\r
+ fill="1"\r
+ fillcolor="white"\r
+ stroke="0"\r
+ strokecolor="black"\r
+ >\r
+ <private>\r
+ </private>\r
+ \r
+ <rectangle name="Fig12.4.0"\r
+ x="691"\r
+ y="712"\r
+ width="89"\r
+ height="20"\r
+ fill="1"\r
+ fillcolor="white"\r
+ stroke="0"\r
+ strokecolor="black"\r
+ />\r
+ <path name="Fig12.4.1"\r
+ description="org.argouml.uml.diagram.ui.FigFeaturesCompartment$FigSeperator"\r
+ fill="1"\r
+ fillcolor="white"\r
+ stroke="1"\r
+ strokecolor="black"\r
+ >\r
+ <moveto x="691"\r
+ y="712" />\r
+ <lineto x="780"\r
+ y="712" />\r
+ </path>\r
+ </group>\r
+ <rectangle name="Fig12.5"\r
+ x="690"\r
+ y="688"\r
+ width="90"\r
+ height="65"\r
+ fill="0"\r
+ fillcolor="white"\r
+ stroke="1"\r
+ strokecolor="black"\r
+ />\r
+ </group>\r
+ <group name="Fig13"\r
+ description="org.argouml.uml.diagram.ui.FigAssociation"\r
+ href="-64--88-0-11-7e9e46a8:113ee067f97:-8000:0000000000000771"\r
+ stroke="1"\r
+ strokecolor="black"\r
+ >\r
+ <private>\r
+ sourcePortFig="Fig12.0"\r
+ destPortFig="Fig31"\r
+ sourceFigNode="Fig12"\r
+ destFigNode="Fig31"\r
+ </private>\r
+ <path name="Fig13.0"\r
+ description="org.tigris.gef.presentation.FigPoly"\r
+ fill="0"\r
+ fillcolor="white"\r
+ stroke="1"\r
+ strokecolor="black"\r
+ >\r
+ <moveto x="690"\r
+ y="696" />\r
+ <lineto x="512"\r
+ y="696" />\r
+ <lineto x="512"\r
+ y="553" />\r
+ </path>\r
+ </group>\r
+ <group name="Fig14"\r
+ description="org.argouml.uml.diagram.static_structure.ui.FigClass[1200, 688, 90, 65]pathVisible=false;operationsVisible=true;attributesVisible=true"\r
+ href="-64--88-0-11-7e9e46a8:113ee067f97:-8000:000000000000077A"\r
+ fill="1"\r
+ fillcolor="white"\r
+ stroke="1"\r
+ strokecolor="black"\r
+ >\r
+ <private>\r
+ </private>\r
+ \r
+ <rectangle name="Fig14.0"\r
+ x="1200"\r
+ y="688"\r
+ width="90"\r
+ height="65"\r
+ fill="1"\r
+ fillcolor="white"\r
+ stroke="0"\r
+ strokecolor="black"\r
+ />\r
+ <group name="Fig14.1"\r
+ description="org.argouml.uml.diagram.ui.FigStereotypesCompartment[1200, 688, 90, 2]"\r
+ href="-64--88-0-11-7e9e46a8:113ee067f97:-8000:000000000000077A"\r
+ fill="1"\r
+ fillcolor="white"\r
+ stroke="1"\r
+ strokecolor="black"\r
+ >\r
+ <private>\r
+ </private>\r
+ \r
+ <rectangle name="Fig14.1.0"\r
+ x="1200"\r
+ y="688"\r
+ width="90"\r
+ height="2"\r
+ fill="1"\r
+ fillcolor="white"\r
+ stroke="1"\r
+ strokecolor="black"\r
+ />\r
+ </group>\r
+ <text name="Fig14.2"\r
+ x="1200"\r
+ y="690"\r
+ fill="1"\r
+ fillcolor="white"\r
+ stroke="0"\r
+ strokecolor="red"\r
+ font="Dialog"\r
+ textsize="10"\r
+ >TestRun</text>\r
+ <group name="Fig14.3"\r
+ description="org.argouml.uml.diagram.ui.FigOperationsCompartment[1201, 733, 89, 20]"\r
+ fill="1"\r
+ fillcolor="white"\r
+ stroke="0"\r
+ strokecolor="black"\r
+ >\r
+ <private>\r
+ </private>\r
+ \r
+ <rectangle name="Fig14.3.0"\r
+ x="1201"\r
+ y="733"\r
+ width="89"\r
+ height="20"\r
+ fill="1"\r
+ fillcolor="white"\r
+ stroke="0"\r
+ strokecolor="black"\r
+ />\r
+ <path name="Fig14.3.1"\r
+ description="org.argouml.uml.diagram.ui.FigFeaturesCompartment$FigSeperator"\r
+ fill="1"\r
+ fillcolor="white"\r
+ stroke="1"\r
+ strokecolor="black"\r
+ >\r
+ <moveto x="1201"\r
+ y="733" />\r
+ <lineto x="1290"\r
+ y="733" />\r
+ </path>\r
+ </group>\r
+ <group name="Fig14.4"\r
+ description="org.argouml.uml.diagram.ui.FigAttributesCompartment[1201, 712, 89, 20]"\r
+ fill="1"\r
+ fillcolor="white"\r
+ stroke="0"\r
+ strokecolor="black"\r
+ >\r
+ <private>\r
+ </private>\r
+ \r
+ <rectangle name="Fig14.4.0"\r
+ x="1201"\r
+ y="712"\r
+ width="89"\r
+ height="20"\r
+ fill="1"\r
+ fillcolor="white"\r
+ stroke="0"\r
+ strokecolor="black"\r
+ />\r
+ <path name="Fig14.4.1"\r
+ description="org.argouml.uml.diagram.ui.FigFeaturesCompartment$FigSeperator"\r
+ fill="1"\r
+ fillcolor="white"\r
+ stroke="1"\r
+ strokecolor="black"\r
+ >\r
+ <moveto x="1201"\r
+ y="712" />\r
+ <lineto x="1290"\r
+ y="712" />\r
+ </path>\r
+ </group>\r
+ <rectangle name="Fig14.5"\r
+ x="1200"\r
+ y="688"\r
+ width="90"\r
+ height="65"\r
+ fill="0"\r
+ fillcolor="white"\r
+ stroke="1"\r
+ strokecolor="black"\r
+ />\r
+ </group>\r
+ <group name="Fig15"\r
+ description="org.argouml.uml.diagram.ui.FigAssociation"\r
+ href="-64--88-0-11-7e9e46a8:113ee067f97:-8000:000000000000077C"\r
+ stroke="1"\r
+ strokecolor="black"\r
+ >\r
+ <private>\r
+ sourcePortFig="Fig14.0"\r
+ destPortFig="Fig32"\r
+ sourceFigNode="Fig14"\r
+ destFigNode="Fig32"\r
+ </private>\r
+ <path name="Fig15.0"\r
+ description="org.tigris.gef.presentation.FigPoly"\r
+ fill="0"\r
+ fillcolor="white"\r
+ stroke="1"\r
+ strokecolor="black"\r
+ >\r
+ <moveto x="1200"\r
+ y="696" />\r
+ <lineto x="1024"\r
+ y="696" />\r
+ <lineto x="1024"\r
+ y="553" />\r
+ </path>\r
+ </group>\r
+ <group name="Fig16"\r
+ description="org.argouml.uml.diagram.static_structure.ui.FigClass[600, 432, 90, 65]pathVisible=false;operationsVisible=true;attributesVisible=true"\r
+ href="-64--88-0-11-7e9e46a8:113ee067f97:-8000:0000000000000785"\r
+ fill="1"\r
+ fillcolor="white"\r
+ stroke="1"\r
+ strokecolor="black"\r
+ >\r
+ <private>\r
+ </private>\r
+ \r
+ <rectangle name="Fig16.0"\r
+ x="600"\r
+ y="432"\r
+ width="90"\r
+ height="65"\r
+ fill="1"\r
+ fillcolor="white"\r
+ stroke="0"\r
+ strokecolor="black"\r
+ />\r
+ <group name="Fig16.1"\r
+ description="org.argouml.uml.diagram.ui.FigStereotypesCompartment[600, 432, 90, 2]"\r
+ href="-64--88-0-11-7e9e46a8:113ee067f97:-8000:0000000000000785"\r
+ fill="1"\r
+ fillcolor="white"\r
+ stroke="1"\r
+ strokecolor="black"\r
+ >\r
+ <private>\r
+ </private>\r
+ \r
+ <rectangle name="Fig16.1.0"\r
+ x="600"\r
+ y="432"\r
+ width="90"\r
+ height="2"\r
+ fill="1"\r
+ fillcolor="white"\r
+ stroke="1"\r
+ strokecolor="black"\r
+ />\r
+ </group>\r
+ <text name="Fig16.2"\r
+ x="600"\r
+ y="434"\r
+ fill="1"\r
+ fillcolor="white"\r
+ stroke="0"\r
+ strokecolor="red"\r
+ font="Dialog"\r
+ textsize="10"\r
+ >DeploymentData</text>\r
+ <group name="Fig16.3"\r
+ description="org.argouml.uml.diagram.ui.FigOperationsCompartment[601, 477, 89, 20]"\r
+ fill="1"\r
+ fillcolor="white"\r
+ stroke="0"\r
+ strokecolor="black"\r
+ >\r
+ <private>\r
+ </private>\r
+ \r
+ <rectangle name="Fig16.3.0"\r
+ x="601"\r
+ y="477"\r
+ width="89"\r
+ height="20"\r
+ fill="1"\r
+ fillcolor="white"\r
+ stroke="0"\r
+ strokecolor="black"\r
+ />\r
+ <path name="Fig16.3.1"\r
+ description="org.argouml.uml.diagram.ui.FigFeaturesCompartment$FigSeperator"\r
+ fill="1"\r
+ fillcolor="white"\r
+ stroke="1"\r
+ strokecolor="black"\r
+ >\r
+ <moveto x="601"\r
+ y="477" />\r
+ <lineto x="690"\r
+ y="477" />\r
+ </path>\r
+ </group>\r
+ <group name="Fig16.4"\r
+ description="org.argouml.uml.diagram.ui.FigAttributesCompartment[601, 456, 89, 20]"\r
+ fill="1"\r
+ fillcolor="white"\r
+ stroke="0"\r
+ strokecolor="black"\r
+ >\r
+ <private>\r
+ </private>\r
+ \r
+ <rectangle name="Fig16.4.0"\r
+ x="601"\r
+ y="456"\r
+ width="89"\r
+ height="20"\r
+ fill="1"\r
+ fillcolor="white"\r
+ stroke="0"\r
+ strokecolor="black"\r
+ />\r
+ <path name="Fig16.4.1"\r
+ description="org.argouml.uml.diagram.ui.FigFeaturesCompartment$FigSeperator"\r
+ fill="1"\r
+ fillcolor="white"\r
+ stroke="1"\r
+ strokecolor="black"\r
+ >\r
+ <moveto x="601"\r
+ y="456" />\r
+ <lineto x="690"\r
+ y="456" />\r
+ </path>\r
+ </group>\r
+ <rectangle name="Fig16.5"\r
+ x="600"\r
+ y="432"\r
+ width="90"\r
+ height="65"\r
+ fill="0"\r
+ fillcolor="white"\r
+ stroke="1"\r
+ strokecolor="black"\r
+ />\r
+ </group>\r
+ <group name="Fig17"\r
+ description="org.argouml.uml.diagram.static_structure.ui.FigClass[1112, 432, 90, 65]pathVisible=false;operationsVisible=true;attributesVisible=true"\r
+ href="-64--88-0-11-7e9e46a8:113ee067f97:-8000:0000000000000787"\r
+ fill="1"\r
+ fillcolor="white"\r
+ stroke="1"\r
+ strokecolor="black"\r
+ >\r
+ <private>\r
+ </private>\r
+ \r
+ <rectangle name="Fig17.0"\r
+ x="1112"\r
+ y="432"\r
+ width="90"\r
+ height="65"\r
+ fill="1"\r
+ fillcolor="white"\r
+ stroke="0"\r
+ strokecolor="black"\r
+ />\r
+ <group name="Fig17.1"\r
+ description="org.argouml.uml.diagram.ui.FigStereotypesCompartment[1112, 432, 90, 2]"\r
+ href="-64--88-0-11-7e9e46a8:113ee067f97:-8000:0000000000000787"\r
+ fill="1"\r
+ fillcolor="white"\r
+ stroke="1"\r
+ strokecolor="black"\r
+ >\r
+ <private>\r
+ </private>\r
+ \r
+ <rectangle name="Fig17.1.0"\r
+ x="1112"\r
+ y="432"\r
+ width="90"\r
+ height="2"\r
+ fill="1"\r
+ fillcolor="white"\r
+ stroke="1"\r
+ strokecolor="black"\r
+ />\r
+ </group>\r
+ <text name="Fig17.2"\r
+ x="1112"\r
+ y="434"\r
+ fill="1"\r
+ fillcolor="white"\r
+ stroke="0"\r
+ strokecolor="red"\r
+ font="Dialog"\r
+ textsize="10"\r
+ >TestDefinition</text>\r
+ <group name="Fig17.3"\r
+ description="org.argouml.uml.diagram.ui.FigOperationsCompartment[1113, 477, 89, 20]"\r
+ fill="1"\r
+ fillcolor="white"\r
+ stroke="0"\r
+ strokecolor="black"\r
+ >\r
+ <private>\r
+ </private>\r
+ \r
+ <rectangle name="Fig17.3.0"\r
+ x="1113"\r
+ y="477"\r
+ width="89"\r
+ height="20"\r
+ fill="1"\r
+ fillcolor="white"\r
+ stroke="0"\r
+ strokecolor="black"\r
+ />\r
+ <path name="Fig17.3.1"\r
+ description="org.argouml.uml.diagram.ui.FigFeaturesCompartment$FigSeperator"\r
+ fill="1"\r
+ fillcolor="white"\r
+ stroke="1"\r
+ strokecolor="black"\r
+ >\r
+ <moveto x="1113"\r
+ y="477" />\r
+ <lineto x="1202"\r
+ y="477" />\r
+ </path>\r
+ </group>\r
+ <group name="Fig17.4"\r
+ description="org.argouml.uml.diagram.ui.FigAttributesCompartment[1113, 456, 89, 20]"\r
+ fill="1"\r
+ fillcolor="white"\r
+ stroke="0"\r
+ strokecolor="black"\r
+ >\r
+ <private>\r
+ </private>\r
+ \r
+ <rectangle name="Fig17.4.0"\r
+ x="1113"\r
+ y="456"\r
+ width="89"\r
+ height="20"\r
+ fill="1"\r
+ fillcolor="white"\r
+ stroke="0"\r
+ strokecolor="black"\r
+ />\r
+ <path name="Fig17.4.1"\r
+ description="org.argouml.uml.diagram.ui.FigFeaturesCompartment$FigSeperator"\r
+ fill="1"\r
+ fillcolor="white"\r
+ stroke="1"\r
+ strokecolor="black"\r
+ >\r
+ <moveto x="1113"\r
+ y="456" />\r
+ <lineto x="1202"\r
+ y="456" />\r
+ </path>\r
+ </group>\r
+ <rectangle name="Fig17.5"\r
+ x="1112"\r
+ y="432"\r
+ width="90"\r
+ height="65"\r
+ fill="0"\r
+ fillcolor="white"\r
+ stroke="1"\r
+ strokecolor="black"\r
+ />\r
+ </group>\r
+ <group name="Fig18"\r
+ description="org.argouml.uml.diagram.ui.FigAssociation"\r
+ href="-64--88-0-11-7e9e46a8:113ee067f97:-8000:0000000000000789"\r
+ stroke="1"\r
+ strokecolor="black"\r
+ >\r
+ <private>\r
+ sourcePortFig="Fig12.0"\r
+ destPortFig="Fig16.0"\r
+ sourceFigNode="Fig12"\r
+ destFigNode="Fig16"\r
+ </private>\r
+ <path name="Fig18.0"\r
+ description="org.tigris.gef.presentation.FigPoly"\r
+ fill="0"\r
+ fillcolor="white"\r
+ stroke="1"\r
+ strokecolor="black"\r
+ >\r
+ <moveto x="744"\r
+ y="688" />\r
+ <lineto x="744"\r
+ y="480" />\r
+ <lineto x="690"\r
+ y="480" />\r
+ </path>\r
+ </group>\r
+ <group name="Fig19"\r
+ description="org.argouml.uml.diagram.ui.FigAssociation"\r
+ href="-64--88-0-11-7e9e46a8:113ee067f97:-8000:0000000000000792"\r
+ stroke="1"\r
+ strokecolor="black"\r
+ >\r
+ <private>\r
+ sourcePortFig="Fig14.0"\r
+ destPortFig="Fig17.0"\r
+ sourceFigNode="Fig14"\r
+ destFigNode="Fig17"\r
+ </private>\r
+ <path name="Fig19.0"\r
+ description="org.tigris.gef.presentation.FigPoly"\r
+ fill="0"\r
+ fillcolor="white"\r
+ stroke="1"\r
+ strokecolor="black"\r
+ >\r
+ <moveto x="1256"\r
+ y="688" />\r
+ <lineto x="1256"\r
+ y="464" />\r
+ <lineto x="1202"\r
+ y="464" />\r
+ </path>\r
+ </group>\r
+ <group name="Fig20"\r
+ description="org.argouml.uml.diagram.static_structure.ui.FigClass[32, 216, 88, 65]pathVisible=false;operationsVisible=true;attributesVisible=true"\r
+ href="-64--88-0-11-7e9e46a8:113ee067f97:-8000:00000000000007B5"\r
+ fill="1"\r
+ fillcolor="white"\r
+ stroke="1"\r
+ strokecolor="black"\r
+ >\r
+ <private>\r
+ </private>\r
+ \r
+ <rectangle name="Fig20.0"\r
+ x="32"\r
+ y="216"\r
+ width="88"\r
+ height="65"\r
+ fill="1"\r
+ fillcolor="white"\r
+ stroke="0"\r
+ strokecolor="black"\r
+ />\r
+ <group name="Fig20.1"\r
+ description="org.argouml.uml.diagram.ui.FigStereotypesCompartment[32, 216, 88, 2]"\r
+ href="-64--88-0-11-7e9e46a8:113ee067f97:-8000:00000000000007B5"\r
+ fill="1"\r
+ fillcolor="white"\r
+ stroke="1"\r
+ strokecolor="black"\r
+ >\r
+ <private>\r
+ </private>\r
+ \r
+ <rectangle name="Fig20.1.0"\r
+ x="32"\r
+ y="216"\r
+ width="88"\r
+ height="2"\r
+ fill="1"\r
+ fillcolor="white"\r
+ stroke="1"\r
+ strokecolor="black"\r
+ />\r
+ </group>\r
+ <text name="Fig20.2"\r
+ x="32"\r
+ y="218"\r
+ fill="1"\r
+ fillcolor="white"\r
+ stroke="0"\r
+ strokecolor="red"\r
+ font="Dialog"\r
+ textsize="10"\r
+ >SourceLocation</text>\r
+ <group name="Fig20.3"\r
+ description="org.argouml.uml.diagram.ui.FigOperationsCompartment[33, 261, 87, 20]"\r
+ fill="1"\r
+ fillcolor="white"\r
+ stroke="0"\r
+ strokecolor="black"\r
+ >\r
+ <private>\r
+ </private>\r
+ \r
+ <rectangle name="Fig20.3.0"\r
+ x="33"\r
+ y="261"\r
+ width="87"\r
+ height="20"\r
+ fill="1"\r
+ fillcolor="white"\r
+ stroke="0"\r
+ strokecolor="black"\r
+ />\r
+ <path name="Fig20.3.1"\r
+ description="org.argouml.uml.diagram.ui.FigFeaturesCompartment$FigSeperator"\r
+ fill="1"\r
+ fillcolor="white"\r
+ stroke="1"\r
+ strokecolor="black"\r
+ >\r
+ <moveto x="33"\r
+ y="261" />\r
+ <lineto x="120"\r
+ y="261" />\r
+ </path>\r
+ </group>\r
+ <group name="Fig20.4"\r
+ description="org.argouml.uml.diagram.ui.FigAttributesCompartment[33, 240, 87, 20]"\r
+ fill="1"\r
+ fillcolor="white"\r
+ stroke="0"\r
+ strokecolor="black"\r
+ >\r
+ <private>\r
+ </private>\r
+ \r
+ <rectangle name="Fig20.4.0"\r
+ x="33"\r
+ y="240"\r
+ width="87"\r
+ height="20"\r
+ fill="1"\r
+ fillcolor="white"\r
+ stroke="0"\r
+ strokecolor="black"\r
+ />\r
+ <path name="Fig20.4.1"\r
+ description="org.argouml.uml.diagram.ui.FigFeaturesCompartment$FigSeperator"\r
+ fill="1"\r
+ fillcolor="white"\r
+ stroke="1"\r
+ strokecolor="black"\r
+ >\r
+ <moveto x="33"\r
+ y="240" />\r
+ <lineto x="120"\r
+ y="240" />\r
+ </path>\r
+ </group>\r
+ <rectangle name="Fig20.5"\r
+ x="32"\r
+ y="216"\r
+ width="88"\r
+ height="65"\r
+ fill="0"\r
+ fillcolor="white"\r
+ stroke="1"\r
+ strokecolor="black"\r
+ />\r
+ </group>\r
+ <group name="Fig21"\r
+ description="org.argouml.uml.diagram.ui.FigAssociation"\r
+ href="-64--88-0-11-7e9e46a8:113ee067f97:-8000:00000000000007C0"\r
+ stroke="1"\r
+ strokecolor="black"\r
+ >\r
+ <private>\r
+ sourcePortFig="Fig7.0"\r
+ destPortFig="Fig20.0"\r
+ sourceFigNode="Fig7"\r
+ destFigNode="Fig20"\r
+ </private>\r
+ <path name="Fig21.0"\r
+ description="org.tigris.gef.presentation.FigPoly"\r
+ fill="0"\r
+ fillcolor="white"\r
+ stroke="1"\r
+ strokecolor="black"\r
+ >\r
+ <moveto x="168"\r
+ y="312" />\r
+ <lineto x="48"\r
+ y="312" />\r
+ <lineto x="48"\r
+ y="281" />\r
+ </path>\r
+ </group>\r
+ <group name="Fig22"\r
+ description="org.argouml.uml.diagram.static_structure.ui.FigClass[640, 858, 90, 65]pathVisible=false;operationsVisible=true;attributesVisible=true"\r
+ href="-64--88-0-11-7e9e46a8:113ee067f97:-8000:00000000000007CD"\r
+ fill="1"\r
+ fillcolor="white"\r
+ stroke="1"\r
+ strokecolor="black"\r
+ >\r
+ <private>\r
+ </private>\r
+ \r
+ <rectangle name="Fig22.0"\r
+ x="640"\r
+ y="858"\r
+ width="90"\r
+ height="65"\r
+ fill="1"\r
+ fillcolor="white"\r
+ stroke="0"\r
+ strokecolor="black"\r
+ />\r
+ <group name="Fig22.1"\r
+ description="org.argouml.uml.diagram.ui.FigStereotypesCompartment[640, 858, 90, 2]"\r
+ href="-64--88-0-11-7e9e46a8:113ee067f97:-8000:00000000000007CD"\r
+ fill="1"\r
+ fillcolor="white"\r
+ stroke="1"\r
+ strokecolor="black"\r
+ >\r
+ <private>\r
+ </private>\r
+ \r
+ <rectangle name="Fig22.1.0"\r
+ x="640"\r
+ y="858"\r
+ width="90"\r
+ height="2"\r
+ fill="1"\r
+ fillcolor="white"\r
+ stroke="1"\r
+ strokecolor="black"\r
+ />\r
+ </group>\r
+ <text name="Fig22.2"\r
+ x="640"\r
+ y="860"\r
+ fill="1"\r
+ fillcolor="white"\r
+ stroke="0"\r
+ strokecolor="red"\r
+ font="Dialog"\r
+ textsize="10"\r
+ >Process</text>\r
+ <group name="Fig22.3"\r
+ description="org.argouml.uml.diagram.ui.FigOperationsCompartment[641, 903, 89, 20]"\r
+ fill="1"\r
+ fillcolor="white"\r
+ stroke="0"\r
+ strokecolor="black"\r
+ >\r
+ <private>\r
+ </private>\r
+ \r
+ <rectangle name="Fig22.3.0"\r
+ x="641"\r
+ y="903"\r
+ width="89"\r
+ height="20"\r
+ fill="1"\r
+ fillcolor="white"\r
+ stroke="0"\r
+ strokecolor="black"\r
+ />\r
+ <path name="Fig22.3.1"\r
+ description="org.argouml.uml.diagram.ui.FigFeaturesCompartment$FigSeperator"\r
+ fill="1"\r
+ fillcolor="white"\r
+ stroke="1"\r
+ strokecolor="black"\r
+ >\r
+ <moveto x="641"\r
+ y="903" />\r
+ <lineto x="730"\r
+ y="903" />\r
+ </path>\r
+ </group>\r
+ <group name="Fig22.4"\r
+ description="org.argouml.uml.diagram.ui.FigAttributesCompartment[641, 882, 89, 20]"\r
+ fill="1"\r
+ fillcolor="white"\r
+ stroke="0"\r
+ strokecolor="black"\r
+ >\r
+ <private>\r
+ </private>\r
+ \r
+ <rectangle name="Fig22.4.0"\r
+ x="641"\r
+ y="882"\r
+ width="89"\r
+ height="20"\r
+ fill="1"\r
+ fillcolor="white"\r
+ stroke="0"\r
+ strokecolor="black"\r
+ />\r
+ <path name="Fig22.4.1"\r
+ description="org.argouml.uml.diagram.ui.FigFeaturesCompartment$FigSeperator"\r
+ fill="1"\r
+ fillcolor="white"\r
+ stroke="1"\r
+ strokecolor="black"\r
+ >\r
+ <moveto x="641"\r
+ y="882" />\r
+ <lineto x="730"\r
+ y="882" />\r
+ </path>\r
+ </group>\r
+ <rectangle name="Fig22.5"\r
+ x="640"\r
+ y="858"\r
+ width="90"\r
+ height="65"\r
+ fill="0"\r
+ fillcolor="white"\r
+ stroke="1"\r
+ strokecolor="black"\r
+ />\r
+ </group>\r
+ <group name="Fig23"\r
+ description="org.argouml.uml.diagram.static_structure.ui.FigClass[640, 994, 96, 104]pathVisible=false;operationsVisible=true;attributesVisible=true"\r
+ href="-64--88-0-11-7e9e46a8:113ee067f97:-8000:00000000000007CF"\r
+ fill="1"\r
+ fillcolor="white"\r
+ stroke="1"\r
+ strokecolor="black"\r
+ >\r
+ <private>\r
+ </private>\r
+ \r
+ <rectangle name="Fig23.0"\r
+ x="640"\r
+ y="994"\r
+ width="96"\r
+ height="104"\r
+ fill="1"\r
+ fillcolor="white"\r
+ stroke="0"\r
+ strokecolor="black"\r
+ />\r
+ <group name="Fig23.1"\r
+ description="org.argouml.uml.diagram.ui.FigStereotypesCompartment[640, 994, 96, 2]"\r
+ href="-64--88-0-11-7e9e46a8:113ee067f97:-8000:00000000000007CF"\r
+ fill="1"\r
+ fillcolor="white"\r
+ stroke="1"\r
+ strokecolor="black"\r
+ >\r
+ <private>\r
+ </private>\r
+ \r
+ <rectangle name="Fig23.1.0"\r
+ x="640"\r
+ y="994"\r
+ width="96"\r
+ height="2"\r
+ fill="1"\r
+ fillcolor="white"\r
+ stroke="1"\r
+ strokecolor="black"\r
+ />\r
+ </group>\r
+ <text name="Fig23.2"\r
+ x="640"\r
+ y="996"\r
+ fill="1"\r
+ fillcolor="white"\r
+ stroke="0"\r
+ strokecolor="red"\r
+ font="Dialog"\r
+ textsize="10"\r
+ >ProcessStep</text>\r
+ <group name="Fig23.3"\r
+ description="org.argouml.uml.diagram.ui.FigOperationsCompartment[641, 1073, 95, 24]"\r
+ fill="1"\r
+ fillcolor="white"\r
+ stroke="0"\r
+ strokecolor="black"\r
+ >\r
+ <private>\r
+ </private>\r
+ \r
+ <rectangle name="Fig23.3.0"\r
+ x="641"\r
+ y="1073"\r
+ width="95"\r
+ height="24"\r
+ fill="1"\r
+ fillcolor="white"\r
+ stroke="0"\r
+ strokecolor="black"\r
+ />\r
+ <path name="Fig23.3.1"\r
+ description="org.argouml.uml.diagram.ui.FigFeaturesCompartment$FigSeperator"\r
+ fill="1"\r
+ fillcolor="white"\r
+ stroke="1"\r
+ strokecolor="black"\r
+ >\r
+ <moveto x="641"\r
+ y="1073" />\r
+ <lineto x="736"\r
+ y="1073" />\r
+ </path>\r
+ </group>\r
+ <group name="Fig23.4"\r
+ description="org.argouml.uml.diagram.ui.FigAttributesCompartment[641, 1018, 95, 54]"\r
+ fill="1"\r
+ fillcolor="white"\r
+ stroke="0"\r
+ strokecolor="black"\r
+ >\r
+ <private>\r
+ </private>\r
+ \r
+ <rectangle name="Fig23.4.0"\r
+ x="641"\r
+ y="1018"\r
+ width="95"\r
+ height="54"\r
+ fill="1"\r
+ fillcolor="white"\r
+ stroke="0"\r
+ strokecolor="black"\r
+ />\r
+ <path name="Fig23.4.1"\r
+ description="org.argouml.uml.diagram.ui.FigFeaturesCompartment$FigSeperator"\r
+ fill="1"\r
+ fillcolor="white"\r
+ stroke="1"\r
+ strokecolor="black"\r
+ >\r
+ <moveto x="641"\r
+ y="1018" />\r
+ <lineto x="736"\r
+ y="1018" />\r
+ </path>\r
+ <text name="Fig23.4.2"\r
+ x="641"\r
+ y="1019"\r
+ fill="0"\r
+ fillcolor="white"\r
+ stroke="0"\r
+ strokecolor="black"\r
+ font="Dialog"\r
+ textsize="10"\r
+ >start : Date</text>\r
+ <text name="Fig23.4.3"\r
+ x="641"\r
+ y="1033"\r
+ fill="0"\r
+ fillcolor="white"\r
+ stroke="0"\r
+ strokecolor="black"\r
+ font="Dialog"\r
+ textsize="10"\r
+ >end : Date</text>\r
+ <text name="Fig23.4.4"\r
+ x="641"\r
+ y="1047"\r
+ fill="0"\r
+ fillcolor="white"\r
+ stroke="0"\r
+ strokecolor="black"\r
+ font="Dialog"\r
+ textsize="10"\r
+ >description : String</text>\r
+ </group>\r
+ <rectangle name="Fig23.5"\r
+ x="640"\r
+ y="994"\r
+ width="96"\r
+ height="104"\r
+ fill="0"\r
+ fillcolor="white"\r
+ stroke="1"\r
+ strokecolor="black"\r
+ />\r
+ </group>\r
+ <group name="Fig24"\r
+ description="org.argouml.uml.diagram.ui.FigAssociation"\r
+ href="-64--88-0-11-7e9e46a8:113ee067f97:-8000:00000000000007D1"\r
+ stroke="1"\r
+ strokecolor="black"\r
+ >\r
+ <private>\r
+ sourcePortFig="Fig22.0"\r
+ destPortFig="Fig23.0"\r
+ sourceFigNode="Fig22"\r
+ destFigNode="Fig23"\r
+ </private>\r
+ <path name="Fig24.0"\r
+ description="org.tigris.gef.presentation.FigPoly"\r
+ fill="0"\r
+ fillcolor="white"\r
+ stroke="1"\r
+ strokecolor="black"\r
+ >\r
+ <moveto x="688"\r
+ y="923" />\r
+ <lineto x="688"\r
+ y="994" />\r
+ </path>\r
+ </group>\r
+ <group name="Fig25"\r
+ description="org.argouml.uml.diagram.static_structure.ui.FigClass[832, 856, 90, 65]pathVisible=false;operationsVisible=true;attributesVisible=true"\r
+ href="-64--88-0-11-7e9e46a8:113ee067f97:-8000:00000000000007EE"\r
+ fill="1"\r
+ fillcolor="white"\r
+ stroke="1"\r
+ strokecolor="black"\r
+ >\r
+ <private>\r
+ </private>\r
+ \r
+ <rectangle name="Fig25.0"\r
+ x="832"\r
+ y="856"\r
+ width="90"\r
+ height="65"\r
+ fill="1"\r
+ fillcolor="white"\r
+ stroke="0"\r
+ strokecolor="black"\r
+ />\r
+ <group name="Fig25.1"\r
+ description="org.argouml.uml.diagram.ui.FigStereotypesCompartment[832, 856, 90, 2]"\r
+ href="-64--88-0-11-7e9e46a8:113ee067f97:-8000:00000000000007EE"\r
+ fill="1"\r
+ fillcolor="white"\r
+ stroke="1"\r
+ strokecolor="black"\r
+ >\r
+ <private>\r
+ </private>\r
+ \r
+ <rectangle name="Fig25.1.0"\r
+ x="832"\r
+ y="856"\r
+ width="90"\r
+ height="2"\r
+ fill="1"\r
+ fillcolor="white"\r
+ stroke="1"\r
+ strokecolor="black"\r
+ />\r
+ </group>\r
+ <text name="Fig25.2"\r
+ x="832"\r
+ y="858"\r
+ fill="1"\r
+ fillcolor="white"\r
+ stroke="0"\r
+ strokecolor="red"\r
+ font="Dialog"\r
+ textsize="10"\r
+ >ProcessStatus</text>\r
+ <group name="Fig25.3"\r
+ description="org.argouml.uml.diagram.ui.FigOperationsCompartment[833, 901, 89, 20]"\r
+ fill="1"\r
+ fillcolor="white"\r
+ stroke="0"\r
+ strokecolor="black"\r
+ >\r
+ <private>\r
+ </private>\r
+ \r
+ <rectangle name="Fig25.3.0"\r
+ x="833"\r
+ y="901"\r
+ width="89"\r
+ height="20"\r
+ fill="1"\r
+ fillcolor="white"\r
+ stroke="0"\r
+ strokecolor="black"\r
+ />\r
+ <path name="Fig25.3.1"\r
+ description="org.argouml.uml.diagram.ui.FigFeaturesCompartment$FigSeperator"\r
+ fill="1"\r
+ fillcolor="white"\r
+ stroke="1"\r
+ strokecolor="black"\r
+ >\r
+ <moveto x="833"\r
+ y="901" />\r
+ <lineto x="922"\r
+ y="901" />\r
+ </path>\r
+ </group>\r
+ <group name="Fig25.4"\r
+ description="org.argouml.uml.diagram.ui.FigAttributesCompartment[833, 880, 89, 20]"\r
+ fill="1"\r
+ fillcolor="white"\r
+ stroke="0"\r
+ strokecolor="black"\r
+ >\r
+ <private>\r
+ </private>\r
+ \r
+ <rectangle name="Fig25.4.0"\r
+ x="833"\r
+ y="880"\r
+ width="89"\r
+ height="20"\r
+ fill="1"\r
+ fillcolor="white"\r
+ stroke="0"\r
+ strokecolor="black"\r
+ />\r
+ <path name="Fig25.4.1"\r
+ description="org.argouml.uml.diagram.ui.FigFeaturesCompartment$FigSeperator"\r
+ fill="1"\r
+ fillcolor="white"\r
+ stroke="1"\r
+ strokecolor="black"\r
+ >\r
+ <moveto x="833"\r
+ y="880" />\r
+ <lineto x="922"\r
+ y="880" />\r
+ </path>\r
+ </group>\r
+ <rectangle name="Fig25.5"\r
+ x="832"\r
+ y="856"\r
+ width="90"\r
+ height="65"\r
+ fill="0"\r
+ fillcolor="white"\r
+ stroke="1"\r
+ strokecolor="black"\r
+ />\r
+ </group>\r
+ <group name="Fig26"\r
+ description="org.argouml.uml.diagram.ui.FigAssociation"\r
+ href="-64--88-0-11-7e9e46a8:113ee067f97:-8000:00000000000007F0"\r
+ stroke="1"\r
+ strokecolor="black"\r
+ >\r
+ <private>\r
+ sourcePortFig="Fig22.0"\r
+ destPortFig="Fig25.0"\r
+ sourceFigNode="Fig22"\r
+ destFigNode="Fig25"\r
+ </private>\r
+ <path name="Fig26.0"\r
+ description="org.tigris.gef.presentation.FigPoly"\r
+ fill="0"\r
+ fillcolor="white"\r
+ stroke="1"\r
+ strokecolor="black"\r
+ >\r
+ <moveto x="730"\r
+ y="874" />\r
+ <lineto x="832"\r
+ y="874" />\r
+ </path>\r
+ </group>\r
+ <group name="Fig27"\r
+ description="org.argouml.uml.diagram.static_structure.ui.FigClass[824, 1008, 108, 69]pathVisible=false;operationsVisible=true;attributesVisible=true"\r
+ href="-64--88-0-11-7e9e46a8:113ee067f97:-8000:0000000000000817"\r
+ fill="1"\r
+ fillcolor="white"\r
+ stroke="1"\r
+ strokecolor="black"\r
+ >\r
+ <private>\r
+ </private>\r
+ \r
+ <rectangle name="Fig27.0"\r
+ x="824"\r
+ y="1008"\r
+ width="108"\r
+ height="69"\r
+ fill="1"\r
+ fillcolor="white"\r
+ stroke="0"\r
+ strokecolor="black"\r
+ />\r
+ <group name="Fig27.1"\r
+ description="org.argouml.uml.diagram.ui.FigStereotypesCompartment[824, 1008, 108, 2]"\r
+ href="-64--88-0-11-7e9e46a8:113ee067f97:-8000:0000000000000817"\r
+ fill="1"\r
+ fillcolor="white"\r
+ stroke="1"\r
+ strokecolor="black"\r
+ >\r
+ <private>\r
+ </private>\r
+ \r
+ <rectangle name="Fig27.1.0"\r
+ x="824"\r
+ y="1008"\r
+ width="108"\r
+ height="2"\r
+ fill="1"\r
+ fillcolor="white"\r
+ stroke="1"\r
+ strokecolor="black"\r
+ />\r
+ </group>\r
+ <text name="Fig27.2"\r
+ x="824"\r
+ y="1010"\r
+ fill="1"\r
+ fillcolor="white"\r
+ stroke="0"\r
+ strokecolor="red"\r
+ font="Dialog"\r
+ textsize="10"\r
+ >Log</text>\r
+ <group name="Fig27.3"\r
+ description="org.argouml.uml.diagram.ui.FigOperationsCompartment[825, 1056, 107, 20]"\r
+ fill="1"\r
+ fillcolor="white"\r
+ stroke="0"\r
+ strokecolor="black"\r
+ >\r
+ <private>\r
+ </private>\r
+ \r
+ <rectangle name="Fig27.3.0"\r
+ x="825"\r
+ y="1056"\r
+ width="107"\r
+ height="20"\r
+ fill="1"\r
+ fillcolor="white"\r
+ stroke="0"\r
+ strokecolor="black"\r
+ />\r
+ <path name="Fig27.3.1"\r
+ description="org.argouml.uml.diagram.ui.FigFeaturesCompartment$FigSeperator"\r
+ fill="1"\r
+ fillcolor="white"\r
+ stroke="1"\r
+ strokecolor="black"\r
+ >\r
+ <moveto x="825"\r
+ y="1056" />\r
+ <lineto x="932"\r
+ y="1056" />\r
+ </path>\r
+ </group>\r
+ <group name="Fig27.4"\r
+ description="org.argouml.uml.diagram.ui.FigAttributesCompartment[825, 1032, 107, 23]"\r
+ fill="1"\r
+ fillcolor="white"\r
+ stroke="0"\r
+ strokecolor="black"\r
+ >\r
+ <private>\r
+ </private>\r
+ \r
+ <rectangle name="Fig27.4.0"\r
+ x="825"\r
+ y="1032"\r
+ width="107"\r
+ height="23"\r
+ fill="1"\r
+ fillcolor="white"\r
+ stroke="0"\r
+ strokecolor="black"\r
+ />\r
+ <path name="Fig27.4.1"\r
+ description="org.argouml.uml.diagram.ui.FigFeaturesCompartment$FigSeperator"\r
+ fill="1"\r
+ fillcolor="white"\r
+ stroke="1"\r
+ strokecolor="black"\r
+ >\r
+ <moveto x="825"\r
+ y="1032" />\r
+ <lineto x="932"\r
+ y="1032" />\r
+ </path>\r
+ <text name="Fig27.4.2"\r
+ x="825"\r
+ y="1033"\r
+ fill="0"\r
+ fillcolor="white"\r
+ stroke="0"\r
+ strokecolor="black"\r
+ font="Dialog"\r
+ textsize="10"\r
+ >content : String</text>\r
+ </group>\r
+ <rectangle name="Fig27.5"\r
+ x="824"\r
+ y="1008"\r
+ width="108"\r
+ height="69"\r
+ fill="0"\r
+ fillcolor="white"\r
+ stroke="1"\r
+ strokecolor="black"\r
+ />\r
+ </group>\r
+ <group name="Fig28"\r
+ description="org.argouml.uml.diagram.ui.FigAssociation"\r
+ href="-64--88-0-11-7e9e46a8:113ee067f97:-8000:000000000000084C"\r
+ stroke="1"\r
+ strokecolor="black"\r
+ >\r
+ <private>\r
+ sourcePortFig="Fig23.0"\r
+ destPortFig="Fig27.0"\r
+ sourceFigNode="Fig23"\r
+ destFigNode="Fig27"\r
+ </private>\r
+ <path name="Fig28.0"\r
+ description="org.tigris.gef.presentation.FigPoly"\r
+ fill="0"\r
+ fillcolor="white"\r
+ stroke="1"\r
+ strokecolor="black"\r
+ >\r
+ <moveto x="736"\r
+ y="1048" />\r
+ <lineto x="824"\r
+ y="1048" />\r
+ </path>\r
+ </group>\r
+ <group name="Fig29"\r
+ description="org.argouml.uml.diagram.static_structure.ui.FigClass[24, 690, 93, 65]pathVisible=false;operationsVisible=true;attributesVisible=true"\r
+ href="-64--88-0-11-7e9e46a8:113ee067f97:-8000:0000000000000879"\r
+ fill="1"\r
+ fillcolor="white"\r
+ stroke="1"\r
+ strokecolor="black"\r
+ >\r
+ <private>\r
+ </private>\r
+ \r
+ <rectangle name="Fig29.0"\r
+ x="24"\r
+ y="690"\r
+ width="93"\r
+ height="65"\r
+ fill="1"\r
+ fillcolor="white"\r
+ stroke="0"\r
+ strokecolor="black"\r
+ />\r
+ <group name="Fig29.1"\r
+ description="org.argouml.uml.diagram.ui.FigStereotypesCompartment[24, 690, 93, 2]"\r
+ href="-64--88-0-11-7e9e46a8:113ee067f97:-8000:0000000000000879"\r
+ fill="1"\r
+ fillcolor="white"\r
+ stroke="1"\r
+ strokecolor="black"\r
+ >\r
+ <private>\r
+ </private>\r
+ \r
+ <rectangle name="Fig29.1.0"\r
+ x="24"\r
+ y="690"\r
+ width="93"\r
+ height="2"\r
+ fill="1"\r
+ fillcolor="white"\r
+ stroke="1"\r
+ strokecolor="black"\r
+ />\r
+ </group>\r
+ <text name="Fig29.2"\r
+ x="24"\r
+ y="692"\r
+ fill="1"\r
+ fillcolor="white"\r
+ stroke="0"\r
+ strokecolor="red"\r
+ font="Dialog"\r
+ textsize="10"\r
+ >ProcessSequence</text>\r
+ <group name="Fig29.3"\r
+ description="org.argouml.uml.diagram.ui.FigOperationsCompartment[25, 735, 92, 20]"\r
+ fill="1"\r
+ fillcolor="white"\r
+ stroke="0"\r
+ strokecolor="black"\r
+ >\r
+ <private>\r
+ </private>\r
+ \r
+ <rectangle name="Fig29.3.0"\r
+ x="25"\r
+ y="735"\r
+ width="92"\r
+ height="20"\r
+ fill="1"\r
+ fillcolor="white"\r
+ stroke="0"\r
+ strokecolor="black"\r
+ />\r
+ <path name="Fig29.3.1"\r
+ description="org.argouml.uml.diagram.ui.FigFeaturesCompartment$FigSeperator"\r
+ fill="1"\r
+ fillcolor="white"\r
+ stroke="1"\r
+ strokecolor="black"\r
+ >\r
+ <moveto x="25"\r
+ y="735" />\r
+ <lineto x="117"\r
+ y="735" />\r
+ </path>\r
+ </group>\r
+ <group name="Fig29.4"\r
+ description="org.argouml.uml.diagram.ui.FigAttributesCompartment[25, 714, 92, 20]"\r
+ fill="1"\r
+ fillcolor="white"\r
+ stroke="0"\r
+ strokecolor="black"\r
+ >\r
+ <private>\r
+ </private>\r
+ \r
+ <rectangle name="Fig29.4.0"\r
+ x="25"\r
+ y="714"\r
+ width="92"\r
+ height="20"\r
+ fill="1"\r
+ fillcolor="white"\r
+ stroke="0"\r
+ strokecolor="black"\r
+ />\r
+ <path name="Fig29.4.1"\r
+ description="org.argouml.uml.diagram.ui.FigFeaturesCompartment$FigSeperator"\r
+ fill="1"\r
+ fillcolor="white"\r
+ stroke="1"\r
+ strokecolor="black"\r
+ >\r
+ <moveto x="25"\r
+ y="714" />\r
+ <lineto x="117"\r
+ y="714" />\r
+ </path>\r
+ </group>\r
+ <rectangle name="Fig29.5"\r
+ x="24"\r
+ y="690"\r
+ width="93"\r
+ height="65"\r
+ fill="0"\r
+ fillcolor="white"\r
+ stroke="1"\r
+ strokecolor="black"\r
+ />\r
+ </group>\r
+ <group name="Fig30"\r
+ description="org.argouml.uml.diagram.ui.FigAssociation"\r
+ href="-64--88-0-11-7e9e46a8:113ee067f97:-8000:0000000000000880"\r
+ stroke="1"\r
+ strokecolor="black"\r
+ >\r
+ <private>\r
+ sourcePortFig="Fig29.0"\r
+ destPortFig="Fig22.0"\r
+ sourceFigNode="Fig29"\r
+ destFigNode="Fig22"\r
+ </private>\r
+ <path name="Fig30.0"\r
+ description="org.tigris.gef.presentation.FigPoly"\r
+ fill="0"\r
+ fillcolor="white"\r
+ stroke="1"\r
+ strokecolor="black"\r
+ >\r
+ <moveto x="48"\r
+ y="755" />\r
+ <lineto x="48"\r
+ y="874" />\r
+ <lineto x="640"\r
+ y="874" />\r
+ </path>\r
+ </group>\r
+ <group name="Fig31"\r
+ description="org.argouml.uml.diagram.static_structure.ui.FigClass[472, 488, 90, 65]pathVisible=false;operationsVisible=true;attributesVisible=true"\r
+ href="-64--88-1-101--3f3f1022:1157622ef7f:-8000:00000000000008A8"\r
+ fill="1"\r
+ fillcolor="white"\r
+ stroke="1"\r
+ strokecolor="black"\r
+ >\r
+ <private>\r
+ </private>\r
+ \r
+ <rectangle name="Fig31.0"\r
+ x="472"\r
+ y="488"\r
+ width="90"\r
+ height="65"\r
+ fill="1"\r
+ fillcolor="white"\r
+ stroke="0"\r
+ strokecolor="black"\r
+ />\r
+ <group name="Fig31.1"\r
+ description="org.argouml.uml.diagram.ui.FigStereotypesCompartment[472, 488, 90, 2]"\r
+ href="-64--88-1-101--3f3f1022:1157622ef7f:-8000:00000000000008A8"\r
+ fill="1"\r
+ fillcolor="white"\r
+ stroke="1"\r
+ strokecolor="black"\r
+ >\r
+ <private>\r
+ </private>\r
+ \r
+ <rectangle name="Fig31.1.0"\r
+ x="472"\r
+ y="488"\r
+ width="90"\r
+ height="2"\r
+ fill="1"\r
+ fillcolor="white"\r
+ stroke="1"\r
+ strokecolor="black"\r
+ />\r
+ </group>\r
+ <text name="Fig31.2"\r
+ x="472"\r
+ y="490"\r
+ fill="1"\r
+ fillcolor="white"\r
+ stroke="0"\r
+ strokecolor="red"\r
+ font="Dialog"\r
+ textsize="10"\r
+ >Distribution</text>\r
+ <group name="Fig31.3"\r
+ description="org.argouml.uml.diagram.ui.FigOperationsCompartment[473, 533, 89, 20]"\r
+ fill="1"\r
+ fillcolor="white"\r
+ stroke="0"\r
+ strokecolor="black"\r
+ >\r
+ <private>\r
+ </private>\r
+ \r
+ <rectangle name="Fig31.3.0"\r
+ x="473"\r
+ y="533"\r
+ width="89"\r
+ height="20"\r
+ fill="1"\r
+ fillcolor="white"\r
+ stroke="0"\r
+ strokecolor="black"\r
+ />\r
+ <path name="Fig31.3.1"\r
+ description="org.argouml.uml.diagram.ui.FigFeaturesCompartment$FigSeperator"\r
+ fill="1"\r
+ fillcolor="white"\r
+ stroke="1"\r
+ strokecolor="black"\r
+ >\r
+ <moveto x="473"\r
+ y="533" />\r
+ <lineto x="562"\r
+ y="533" />\r
+ </path>\r
+ </group>\r
+ <group name="Fig31.4"\r
+ description="org.argouml.uml.diagram.ui.FigAttributesCompartment[473, 512, 89, 20]"\r
+ fill="1"\r
+ fillcolor="white"\r
+ stroke="0"\r
+ strokecolor="black"\r
+ >\r
+ <private>\r
+ </private>\r
+ \r
+ <rectangle name="Fig31.4.0"\r
+ x="473"\r
+ y="512"\r
+ width="89"\r
+ height="20"\r
+ fill="1"\r
+ fillcolor="white"\r
+ stroke="0"\r
+ strokecolor="black"\r
+ />\r
+ <path name="Fig31.4.1"\r
+ description="org.argouml.uml.diagram.ui.FigFeaturesCompartment$FigSeperator"\r
+ fill="1"\r
+ fillcolor="white"\r
+ stroke="1"\r
+ strokecolor="black"\r
+ >\r
+ <moveto x="473"\r
+ y="512" />\r
+ <lineto x="562"\r
+ y="512" />\r
+ </path>\r
+ </group>\r
+ <rectangle name="Fig31.5"\r
+ x="472"\r
+ y="488"\r
+ width="90"\r
+ height="65"\r
+ fill="0"\r
+ fillcolor="white"\r
+ stroke="1"\r
+ strokecolor="black"\r
+ />\r
+ </group>\r
+ <group name="Fig32"\r
+ description="org.argouml.uml.diagram.static_structure.ui.FigClass[936, 488, 94, 65]pathVisible=false;operationsVisible=true;attributesVisible=true"\r
+ href="-64--88-1-101--3f3f1022:1157622ef7f:-8000:00000000000008AA"\r
+ fill="1"\r
+ fillcolor="white"\r
+ stroke="1"\r
+ strokecolor="black"\r
+ >\r
+ <private>\r
+ </private>\r
+ \r
+ <rectangle name="Fig32.0"\r
+ x="936"\r
+ y="488"\r
+ width="94"\r
+ height="65"\r
+ fill="1"\r
+ fillcolor="white"\r
+ stroke="0"\r
+ strokecolor="black"\r
+ />\r
+ <group name="Fig32.1"\r
+ description="org.argouml.uml.diagram.ui.FigStereotypesCompartment[936, 488, 94, 2]"\r
+ href="-64--88-1-101--3f3f1022:1157622ef7f:-8000:00000000000008AA"\r
+ fill="1"\r
+ fillcolor="white"\r
+ stroke="1"\r
+ strokecolor="black"\r
+ >\r
+ <private>\r
+ </private>\r
+ \r
+ <rectangle name="Fig32.1.0"\r
+ x="936"\r
+ y="488"\r
+ width="94"\r
+ height="2"\r
+ fill="1"\r
+ fillcolor="white"\r
+ stroke="1"\r
+ strokecolor="black"\r
+ />\r
+ </group>\r
+ <text name="Fig32.2"\r
+ x="936"\r
+ y="490"\r
+ fill="1"\r
+ fillcolor="white"\r
+ stroke="0"\r
+ strokecolor="red"\r
+ font="Dialog"\r
+ textsize="10"\r
+ >DeployedSystem</text>\r
+ <group name="Fig32.3"\r
+ description="org.argouml.uml.diagram.ui.FigOperationsCompartment[937, 533, 93, 20]"\r
+ fill="1"\r
+ fillcolor="white"\r
+ stroke="0"\r
+ strokecolor="black"\r
+ >\r
+ <private>\r
+ </private>\r
+ \r
+ <rectangle name="Fig32.3.0"\r
+ x="937"\r
+ y="533"\r
+ width="93"\r
+ height="20"\r
+ fill="1"\r
+ fillcolor="white"\r
+ stroke="0"\r
+ strokecolor="black"\r
+ />\r
+ <path name="Fig32.3.1"\r
+ description="org.argouml.uml.diagram.ui.FigFeaturesCompartment$FigSeperator"\r
+ fill="1"\r
+ fillcolor="white"\r
+ stroke="1"\r
+ strokecolor="black"\r
+ >\r
+ <moveto x="937"\r
+ y="533" />\r
+ <lineto x="1030"\r
+ y="533" />\r
+ </path>\r
+ </group>\r
+ <group name="Fig32.4"\r
+ description="org.argouml.uml.diagram.ui.FigAttributesCompartment[937, 512, 93, 20]"\r
+ fill="1"\r
+ fillcolor="white"\r
+ stroke="0"\r
+ strokecolor="black"\r
+ >\r
+ <private>\r
+ </private>\r
+ \r
+ <rectangle name="Fig32.4.0"\r
+ x="937"\r
+ y="512"\r
+ width="93"\r
+ height="20"\r
+ fill="1"\r
+ fillcolor="white"\r
+ stroke="0"\r
+ strokecolor="black"\r
+ />\r
+ <path name="Fig32.4.1"\r
+ description="org.argouml.uml.diagram.ui.FigFeaturesCompartment$FigSeperator"\r
+ fill="1"\r
+ fillcolor="white"\r
+ stroke="1"\r
+ strokecolor="black"\r
+ >\r
+ <moveto x="937"\r
+ y="512" />\r
+ <lineto x="1030"\r
+ y="512" />\r
+ </path>\r
+ </group>\r
+ <rectangle name="Fig32.5"\r
+ x="936"\r
+ y="488"\r
+ width="94"\r
+ height="65"\r
+ fill="0"\r
+ fillcolor="white"\r
+ stroke="1"\r
+ strokecolor="black"\r
+ />\r
+ </group>\r
+ <group name="Fig33"\r
+ description="org.argouml.uml.diagram.static_structure.ui.FigClass[464, 336, 99, 65]pathVisible=false;operationsVisible=true;attributesVisible=true"\r
+ href="-64--88-1-101--3f3f1022:1157622ef7f:-8000:00000000000008AC"\r
+ fill="1"\r
+ fillcolor="white"\r
+ stroke="1"\r
+ strokecolor="black"\r
+ >\r
+ <private>\r
+ </private>\r
+ \r
+ <rectangle name="Fig33.0"\r
+ x="464"\r
+ y="336"\r
+ width="99"\r
+ height="65"\r
+ fill="1"\r
+ fillcolor="white"\r
+ stroke="0"\r
+ strokecolor="black"\r
+ />\r
+ <group name="Fig33.1"\r
+ description="org.argouml.uml.diagram.ui.FigStereotypesCompartment[464, 336, 99, 2]"\r
+ href="-64--88-1-101--3f3f1022:1157622ef7f:-8000:00000000000008AC"\r
+ fill="1"\r
+ fillcolor="white"\r
+ stroke="1"\r
+ strokecolor="black"\r
+ >\r
+ <private>\r
+ </private>\r
+ \r
+ <rectangle name="Fig33.1.0"\r
+ x="464"\r
+ y="336"\r
+ width="99"\r
+ height="2"\r
+ fill="1"\r
+ fillcolor="white"\r
+ stroke="1"\r
+ strokecolor="black"\r
+ />\r
+ </group>\r
+ <text name="Fig33.2"\r
+ x="464"\r
+ y="338"\r
+ fill="1"\r
+ fillcolor="white"\r
+ stroke="0"\r
+ strokecolor="red"\r
+ font="Dialog"\r
+ textsize="10"\r
+ >DistributionId</text>\r
+ <group name="Fig33.3"\r
+ description="org.argouml.uml.diagram.ui.FigOperationsCompartment[465, 381, 98, 20]"\r
+ fill="1"\r
+ fillcolor="white"\r
+ stroke="0"\r
+ strokecolor="black"\r
+ >\r
+ <private>\r
+ </private>\r
+ \r
+ <rectangle name="Fig33.3.0"\r
+ x="465"\r
+ y="381"\r
+ width="98"\r
+ height="20"\r
+ fill="1"\r
+ fillcolor="white"\r
+ stroke="0"\r
+ strokecolor="black"\r
+ />\r
+ <path name="Fig33.3.1"\r
+ description="org.argouml.uml.diagram.ui.FigFeaturesCompartment$FigSeperator"\r
+ fill="1"\r
+ fillcolor="white"\r
+ stroke="1"\r
+ strokecolor="black"\r
+ >\r
+ <moveto x="465"\r
+ y="381" />\r
+ <lineto x="563"\r
+ y="381" />\r
+ </path>\r
+ </group>\r
+ <group name="Fig33.4"\r
+ description="org.argouml.uml.diagram.ui.FigAttributesCompartment[465, 360, 98, 20]"\r
+ fill="1"\r
+ fillcolor="white"\r
+ stroke="0"\r
+ strokecolor="black"\r
+ >\r
+ <private>\r
+ </private>\r
+ \r
+ <rectangle name="Fig33.4.0"\r
+ x="465"\r
+ y="360"\r
+ width="98"\r
+ height="20"\r
+ fill="1"\r
+ fillcolor="white"\r
+ stroke="0"\r
+ strokecolor="black"\r
+ />\r
+ <path name="Fig33.4.1"\r
+ description="org.argouml.uml.diagram.ui.FigFeaturesCompartment$FigSeperator"\r
+ fill="1"\r
+ fillcolor="white"\r
+ stroke="1"\r
+ strokecolor="black"\r
+ >\r
+ <moveto x="465"\r
+ y="360" />\r
+ <lineto x="563"\r
+ y="360" />\r
+ </path>\r
+ </group>\r
+ <rectangle name="Fig33.5"\r
+ x="464"\r
+ y="336"\r
+ width="99"\r
+ height="65"\r
+ fill="0"\r
+ fillcolor="white"\r
+ stroke="1"\r
+ strokecolor="black"\r
+ />\r
+ </group>\r
+ <group name="Fig34"\r
+ description="org.argouml.uml.diagram.static_structure.ui.FigClass[928, 336, 103, 65]pathVisible=false;operationsVisible=true;attributesVisible=true"\r
+ href="-64--88-1-101--3f3f1022:1157622ef7f:-8000:00000000000008AE"\r
+ fill="1"\r
+ fillcolor="white"\r
+ stroke="1"\r
+ strokecolor="black"\r
+ >\r
+ <private>\r
+ </private>\r
+ \r
+ <rectangle name="Fig34.0"\r
+ x="928"\r
+ y="336"\r
+ width="103"\r
+ height="65"\r
+ fill="1"\r
+ fillcolor="white"\r
+ stroke="0"\r
+ strokecolor="black"\r
+ />\r
+ <group name="Fig34.1"\r
+ description="org.argouml.uml.diagram.ui.FigStereotypesCompartment[928, 336, 103, 2]"\r
+ href="-64--88-1-101--3f3f1022:1157622ef7f:-8000:00000000000008AE"\r
+ fill="1"\r
+ fillcolor="white"\r
+ stroke="1"\r
+ strokecolor="black"\r
+ >\r
+ <private>\r
+ </private>\r
+ \r
+ <rectangle name="Fig34.1.0"\r
+ x="928"\r
+ y="336"\r
+ width="103"\r
+ height="2"\r
+ fill="1"\r
+ fillcolor="white"\r
+ stroke="1"\r
+ strokecolor="black"\r
+ />\r
+ </group>\r
+ <text name="Fig34.2"\r
+ x="928"\r
+ y="338"\r
+ fill="1"\r
+ fillcolor="white"\r
+ stroke="0"\r
+ strokecolor="red"\r
+ font="Dialog"\r
+ textsize="10"\r
+ >DeployedSystemId</text>\r
+ <group name="Fig34.3"\r
+ description="org.argouml.uml.diagram.ui.FigOperationsCompartment[929, 381, 102, 20]"\r
+ fill="1"\r
+ fillcolor="white"\r
+ stroke="0"\r
+ strokecolor="black"\r
+ >\r
+ <private>\r
+ </private>\r
+ \r
+ <rectangle name="Fig34.3.0"\r
+ x="929"\r
+ y="381"\r
+ width="102"\r
+ height="20"\r
+ fill="1"\r
+ fillcolor="white"\r
+ stroke="0"\r
+ strokecolor="black"\r
+ />\r
+ <path name="Fig34.3.1"\r
+ description="org.argouml.uml.diagram.ui.FigFeaturesCompartment$FigSeperator"\r
+ fill="1"\r
+ fillcolor="white"\r
+ stroke="1"\r
+ strokecolor="black"\r
+ >\r
+ <moveto x="929"\r
+ y="381" />\r
+ <lineto x="1031"\r
+ y="381" />\r
+ </path>\r
+ </group>\r
+ <group name="Fig34.4"\r
+ description="org.argouml.uml.diagram.ui.FigAttributesCompartment[929, 360, 102, 20]"\r
+ fill="1"\r
+ fillcolor="white"\r
+ stroke="0"\r
+ strokecolor="black"\r
+ >\r
+ <private>\r
+ </private>\r
+ \r
+ <rectangle name="Fig34.4.0"\r
+ x="929"\r
+ y="360"\r
+ width="102"\r
+ height="20"\r
+ fill="1"\r
+ fillcolor="white"\r
+ stroke="0"\r
+ strokecolor="black"\r
+ />\r
+ <path name="Fig34.4.1"\r
+ description="org.argouml.uml.diagram.ui.FigFeaturesCompartment$FigSeperator"\r
+ fill="1"\r
+ fillcolor="white"\r
+ stroke="1"\r
+ strokecolor="black"\r
+ >\r
+ <moveto x="929"\r
+ y="360" />\r
+ <lineto x="1031"\r
+ y="360" />\r
+ </path>\r
+ </group>\r
+ <rectangle name="Fig34.5"\r
+ x="928"\r
+ y="336"\r
+ width="103"\r
+ height="65"\r
+ fill="0"\r
+ fillcolor="white"\r
+ stroke="1"\r
+ strokecolor="black"\r
+ />\r
+ </group>\r
+ <group name="Fig35"\r
+ description="org.argouml.uml.diagram.ui.FigAssociation"\r
+ href="-64--88-1-101--3f3f1022:1157622ef7f:-8000:00000000000008B0"\r
+ stroke="1"\r
+ strokecolor="black"\r
+ >\r
+ <private>\r
+ sourcePortFig="Fig9.0"\r
+ destPortFig="Fig31.0"\r
+ sourceFigNode="Fig9"\r
+ destFigNode="Fig31"\r
+ </private>\r
+ <path name="Fig35.0"\r
+ description="org.tigris.gef.presentation.FigPoly"\r
+ fill="0"\r
+ fillcolor="white"\r
+ stroke="1"\r
+ strokecolor="black"\r
+ >\r
+ <moveto x="392"\r
+ y="690" />\r
+ <lineto x="392"\r
+ y="520" />\r
+ <lineto x="472"\r
+ y="520" />\r
+ </path>\r
+ </group>\r
+ <group name="Fig36"\r
+ description="org.argouml.uml.diagram.ui.FigAssociation"\r
+ href="-64--88-1-101--3f3f1022:1157622ef7f:-8000:00000000000008BB"\r
+ stroke="1"\r
+ strokecolor="black"\r
+ >\r
+ <private>\r
+ sourcePortFig="Fig12.0"\r
+ destPortFig="Fig32.0"\r
+ sourceFigNode="Fig12"\r
+ destFigNode="Fig32"\r
+ </private>\r
+ <path name="Fig36.0"\r
+ description="org.tigris.gef.presentation.FigPoly"\r
+ fill="0"\r
+ fillcolor="white"\r
+ stroke="1"\r
+ strokecolor="black"\r
+ >\r
+ <moveto x="776"\r
+ y="688" />\r
+ <lineto x="776"\r
+ y="536" />\r
+ <lineto x="936"\r
+ y="536" />\r
+ </path>\r
+ </group>\r
+ <group name="Fig37"\r
+ description="org.argouml.uml.diagram.ui.FigAssociation"\r
+ href="-64--88-1-101--3f3f1022:1157622ef7f:-8000:00000000000008C6"\r
+ stroke="1"\r
+ strokecolor="black"\r
+ >\r
+ <private>\r
+ sourcePortFig="Fig31.0"\r
+ destPortFig="Fig33.0"\r
+ sourceFigNode="Fig31"\r
+ destFigNode="Fig33"\r
+ </private>\r
+ <path name="Fig37.0"\r
+ description="org.tigris.gef.presentation.FigPoly"\r
+ fill="0"\r
+ fillcolor="white"\r
+ stroke="1"\r
+ strokecolor="black"\r
+ >\r
+ <moveto x="512"\r
+ y="488" />\r
+ <lineto x="512"\r
+ y="401" />\r
+ </path>\r
+ </group>\r
+ <group name="Fig38"\r
+ description="org.argouml.uml.diagram.ui.FigAssociation"\r
+ href="-64--88-1-101--3f3f1022:1157622ef7f:-8000:00000000000008CD"\r
+ stroke="1"\r
+ strokecolor="black"\r
+ >\r
+ <private>\r
+ sourcePortFig="Fig32.0"\r
+ destPortFig="Fig34.0"\r
+ sourceFigNode="Fig32"\r
+ destFigNode="Fig34"\r
+ </private>\r
+ <path name="Fig38.0"\r
+ description="org.tigris.gef.presentation.FigPoly"\r
+ fill="0"\r
+ fillcolor="white"\r
+ stroke="1"\r
+ strokecolor="black"\r
+ >\r
+ <moveto x="976"\r
+ y="488" />\r
+ <lineto x="976"\r
+ y="401" />\r
+ </path>\r
+ </group>\r
+ <group name="Fig39"\r
+ description="org.argouml.uml.diagram.static_structure.ui.FigClass[496, 72, 90, 65]pathVisible=false;operationsVisible=true;attributesVisible=true"\r
+ href="-64--88-1-101-3dc093e3:1157f1866b2:-8000:00000000000008D0"\r
+ fill="1"\r
+ fillcolor="white"\r
+ stroke="1"\r
+ strokecolor="black"\r
+ >\r
+ <private>\r
+ </private>\r
+ \r
+ <rectangle name="Fig39.0"\r
+ x="496"\r
+ y="72"\r
+ width="90"\r
+ height="65"\r
+ fill="1"\r
+ fillcolor="white"\r
+ stroke="0"\r
+ strokecolor="black"\r
+ />\r
+ <group name="Fig39.1"\r
+ description="org.argouml.uml.diagram.ui.FigStereotypesCompartment[496, 72, 90, 2]"\r
+ href="-64--88-1-101-3dc093e3:1157f1866b2:-8000:00000000000008D0"\r
+ fill="1"\r
+ fillcolor="white"\r
+ stroke="1"\r
+ strokecolor="black"\r
+ >\r
+ <private>\r
+ </private>\r
+ \r
+ <rectangle name="Fig39.1.0"\r
+ x="496"\r
+ y="72"\r
+ width="90"\r
+ height="2"\r
+ fill="1"\r
+ fillcolor="white"\r
+ stroke="1"\r
+ strokecolor="black"\r
+ />\r
+ </group>\r
+ <text name="Fig39.2"\r
+ x="496"\r
+ y="74"\r
+ fill="1"\r
+ fillcolor="white"\r
+ stroke="0"\r
+ strokecolor="red"\r
+ font="Dialog"\r
+ textsize="10"\r
+ >DatabaseDump</text>\r
+ <group name="Fig39.3"\r
+ description="org.argouml.uml.diagram.ui.FigOperationsCompartment[497, 117, 89, 20]"\r
+ fill="1"\r
+ fillcolor="white"\r
+ stroke="0"\r
+ strokecolor="black"\r
+ >\r
+ <private>\r
+ </private>\r
+ \r
+ <rectangle name="Fig39.3.0"\r
+ x="497"\r
+ y="117"\r
+ width="89"\r
+ height="20"\r
+ fill="1"\r
+ fillcolor="white"\r
+ stroke="0"\r
+ strokecolor="black"\r
+ />\r
+ <path name="Fig39.3.1"\r
+ description="org.argouml.uml.diagram.ui.FigFeaturesCompartment$FigSeperator"\r
+ fill="1"\r
+ fillcolor="white"\r
+ stroke="1"\r
+ strokecolor="black"\r
+ >\r
+ <moveto x="497"\r
+ y="117" />\r
+ <lineto x="586"\r
+ y="117" />\r
+ </path>\r
+ </group>\r
+ <group name="Fig39.4"\r
+ description="org.argouml.uml.diagram.ui.FigAttributesCompartment[497, 96, 89, 20]"\r
+ fill="1"\r
+ fillcolor="white"\r
+ stroke="0"\r
+ strokecolor="black"\r
+ >\r
+ <private>\r
+ </private>\r
+ \r
+ <rectangle name="Fig39.4.0"\r
+ x="497"\r
+ y="96"\r
+ width="89"\r
+ height="20"\r
+ fill="1"\r
+ fillcolor="white"\r
+ stroke="0"\r
+ strokecolor="black"\r
+ />\r
+ <path name="Fig39.4.1"\r
+ description="org.argouml.uml.diagram.ui.FigFeaturesCompartment$FigSeperator"\r
+ fill="1"\r
+ fillcolor="white"\r
+ stroke="1"\r
+ strokecolor="black"\r
+ >\r
+ <moveto x="497"\r
+ y="96" />\r
+ <lineto x="586"\r
+ y="96" />\r
+ </path>\r
+ </group>\r
+ <rectangle name="Fig39.5"\r
+ x="496"\r
+ y="72"\r
+ width="90"\r
+ height="65"\r
+ fill="0"\r
+ fillcolor="white"\r
+ stroke="1"\r
+ strokecolor="black"\r
+ />\r
+ </group>\r
+ <group name="Fig40"\r
+ description="org.argouml.uml.diagram.static_structure.ui.FigClass[768, 240, 134, 65]pathVisible=false;operationsVisible=true;attributesVisible=true"\r
+ href="-64--88-1-101-3dc093e3:1157f1866b2:-8000:00000000000008D3"\r
+ fill="1"\r
+ fillcolor="white"\r
+ stroke="1"\r
+ strokecolor="black"\r
+ >\r
+ <private>\r
+ </private>\r
+ \r
+ <rectangle name="Fig40.0"\r
+ x="768"\r
+ y="240"\r
+ width="134"\r
+ height="65"\r
+ fill="1"\r
+ fillcolor="white"\r
+ stroke="0"\r
+ strokecolor="black"\r
+ />\r
+ <group name="Fig40.1"\r
+ description="org.argouml.uml.diagram.ui.FigStereotypesCompartment[768, 240, 134, 2]"\r
+ href="-64--88-1-101-3dc093e3:1157f1866b2:-8000:00000000000008D3"\r
+ fill="1"\r
+ fillcolor="white"\r
+ stroke="1"\r
+ strokecolor="black"\r
+ >\r
+ <private>\r
+ </private>\r
+ \r
+ <rectangle name="Fig40.1.0"\r
+ x="768"\r
+ y="240"\r
+ width="134"\r
+ height="2"\r
+ fill="1"\r
+ fillcolor="white"\r
+ stroke="1"\r
+ strokecolor="black"\r
+ />\r
+ </group>\r
+ <text name="Fig40.2"\r
+ x="768"\r
+ y="242"\r
+ fill="1"\r
+ fillcolor="white"\r
+ stroke="0"\r
+ strokecolor="red"\r
+ font="Dialog"\r
+ textsize="10"\r
+ >EnterpriseDeploymentData</text>\r
+ <group name="Fig40.3"\r
+ description="org.argouml.uml.diagram.ui.FigOperationsCompartment[769, 285, 133, 20]"\r
+ fill="1"\r
+ fillcolor="white"\r
+ stroke="0"\r
+ strokecolor="black"\r
+ >\r
+ <private>\r
+ </private>\r
+ \r
+ <rectangle name="Fig40.3.0"\r
+ x="769"\r
+ y="285"\r
+ width="133"\r
+ height="20"\r
+ fill="1"\r
+ fillcolor="white"\r
+ stroke="0"\r
+ strokecolor="black"\r
+ />\r
+ <path name="Fig40.3.1"\r
+ description="org.argouml.uml.diagram.ui.FigFeaturesCompartment$FigSeperator"\r
+ fill="1"\r
+ fillcolor="white"\r
+ stroke="1"\r
+ strokecolor="black"\r
+ >\r
+ <moveto x="769"\r
+ y="285" />\r
+ <lineto x="902"\r
+ y="285" />\r
+ </path>\r
+ </group>\r
+ <group name="Fig40.4"\r
+ description="org.argouml.uml.diagram.ui.FigAttributesCompartment[769, 264, 133, 20]"\r
+ fill="1"\r
+ fillcolor="white"\r
+ stroke="0"\r
+ strokecolor="black"\r
+ >\r
+ <private>\r
+ </private>\r
+ \r
+ <rectangle name="Fig40.4.0"\r
+ x="769"\r
+ y="264"\r
+ width="133"\r
+ height="20"\r
+ fill="1"\r
+ fillcolor="white"\r
+ stroke="0"\r
+ strokecolor="black"\r
+ />\r
+ <path name="Fig40.4.1"\r
+ description="org.argouml.uml.diagram.ui.FigFeaturesCompartment$FigSeperator"\r
+ fill="1"\r
+ fillcolor="white"\r
+ stroke="1"\r
+ strokecolor="black"\r
+ >\r
+ <moveto x="769"\r
+ y="264" />\r
+ <lineto x="902"\r
+ y="264" />\r
+ </path>\r
+ </group>\r
+ <rectangle name="Fig40.5"\r
+ x="768"\r
+ y="240"\r
+ width="134"\r
+ height="65"\r
+ fill="0"\r
+ fillcolor="white"\r
+ stroke="1"\r
+ strokecolor="black"\r
+ />\r
+ </group>\r
+ <group name="Fig41"\r
+ description="org.argouml.uml.diagram.ui.FigAssociation"\r
+ href="-64--88-1-101-3dc093e3:1157f1866b2:-8000:00000000000008D6"\r
+ stroke="1"\r
+ strokecolor="black"\r
+ >\r
+ <private>\r
+ sourcePortFig="Fig40.0"\r
+ destPortFig="Fig39.0"\r
+ sourceFigNode="Fig40"\r
+ destFigNode="Fig39"\r
+ </private>\r
+ <path name="Fig41.0"\r
+ description="org.tigris.gef.presentation.FigPoly"\r
+ fill="0"\r
+ fillcolor="white"\r
+ stroke="1"\r
+ strokecolor="black"\r
+ >\r
+ <moveto x="768"\r
+ y="272" />\r
+ <lineto x="720"\r
+ y="272" />\r
+ <lineto x="720"\r
+ y="112" />\r
+ <lineto x="586"\r
+ y="112" />\r
+ </path>\r
+ </group>\r
+ <group name="Fig42"\r
+ description="org.argouml.uml.diagram.static_structure.ui.FigClass[320, 168, 90, 65]pathVisible=false;operationsVisible=true;attributesVisible=true"\r
+ href="-64--88-1-101-3dc093e3:1157f1866b2:-8000:00000000000008E5"\r
+ fill="1"\r
+ fillcolor="white"\r
+ stroke="1"\r
+ strokecolor="black"\r
+ >\r
+ <private>\r
+ </private>\r
+ \r
+ <rectangle name="Fig42.0"\r
+ x="320"\r
+ y="168"\r
+ width="90"\r
+ height="65"\r
+ fill="1"\r
+ fillcolor="white"\r
+ stroke="0"\r
+ strokecolor="black"\r
+ />\r
+ <group name="Fig42.1"\r
+ description="org.argouml.uml.diagram.ui.FigStereotypesCompartment[320, 168, 90, 2]"\r
+ href="-64--88-1-101-3dc093e3:1157f1866b2:-8000:00000000000008E5"\r
+ fill="1"\r
+ fillcolor="white"\r
+ stroke="1"\r
+ strokecolor="black"\r
+ >\r
+ <private>\r
+ </private>\r
+ \r
+ <rectangle name="Fig42.1.0"\r
+ x="320"\r
+ y="168"\r
+ width="90"\r
+ height="2"\r
+ fill="1"\r
+ fillcolor="white"\r
+ stroke="1"\r
+ strokecolor="black"\r
+ />\r
+ </group>\r
+ <text name="Fig42.2"\r
+ x="320"\r
+ y="170"\r
+ fill="1"\r
+ fillcolor="white"\r
+ stroke="0"\r
+ strokecolor="red"\r
+ font="Dialog"\r
+ textsize="10"\r
+ >VersionedFileSet</text>\r
+ <group name="Fig42.3"\r
+ description="org.argouml.uml.diagram.ui.FigOperationsCompartment[321, 213, 89, 20]"\r
+ fill="1"\r
+ fillcolor="white"\r
+ stroke="0"\r
+ strokecolor="black"\r
+ >\r
+ <private>\r
+ </private>\r
+ \r
+ <rectangle name="Fig42.3.0"\r
+ x="321"\r
+ y="213"\r
+ width="89"\r
+ height="20"\r
+ fill="1"\r
+ fillcolor="white"\r
+ stroke="0"\r
+ strokecolor="black"\r
+ />\r
+ <path name="Fig42.3.1"\r
+ description="org.argouml.uml.diagram.ui.FigFeaturesCompartment$FigSeperator"\r
+ fill="1"\r
+ fillcolor="white"\r
+ stroke="1"\r
+ strokecolor="black"\r
+ >\r
+ <moveto x="321"\r
+ y="213" />\r
+ <lineto x="410"\r
+ y="213" />\r
+ </path>\r
+ </group>\r
+ <group name="Fig42.4"\r
+ description="org.argouml.uml.diagram.ui.FigAttributesCompartment[321, 192, 89, 20]"\r
+ fill="1"\r
+ fillcolor="white"\r
+ stroke="0"\r
+ strokecolor="black"\r
+ >\r
+ <private>\r
+ </private>\r
+ \r
+ <rectangle name="Fig42.4.0"\r
+ x="321"\r
+ y="192"\r
+ width="89"\r
+ height="20"\r
+ fill="1"\r
+ fillcolor="white"\r
+ stroke="0"\r
+ strokecolor="black"\r
+ />\r
+ <path name="Fig42.4.1"\r
+ description="org.argouml.uml.diagram.ui.FigFeaturesCompartment$FigSeperator"\r
+ fill="1"\r
+ fillcolor="white"\r
+ stroke="1"\r
+ strokecolor="black"\r
+ >\r
+ <moveto x="321"\r
+ y="192" />\r
+ <lineto x="410"\r
+ y="192" />\r
+ </path>\r
+ </group>\r
+ <rectangle name="Fig42.5"\r
+ x="320"\r
+ y="168"\r
+ width="90"\r
+ height="65"\r
+ fill="0"\r
+ fillcolor="white"\r
+ stroke="1"\r
+ strokecolor="black"\r
+ />\r
+ </group>\r
+ <group name="Fig43"\r
+ description="org.argouml.uml.diagram.ui.FigAssociation"\r
+ href="-64--88-1-101-3dc093e3:1157f1866b2:-8000:00000000000008E7"\r
+ stroke="1"\r
+ strokecolor="black"\r
+ >\r
+ <private>\r
+ sourcePortFig="Fig9.0"\r
+ destPortFig="Fig83"\r
+ sourceFigNode="Fig9"\r
+ destFigNode="Fig83"\r
+ </private>\r
+ <path name="Fig43.0"\r
+ description="org.tigris.gef.presentation.FigPoly"\r
+ fill="0"\r
+ fillcolor="white"\r
+ stroke="1"\r
+ strokecolor="black"\r
+ >\r
+ <moveto x="336"\r
+ y="690" />\r
+ <lineto x="336"\r
+ y="497" />\r
+ </path>\r
+ </group>\r
+ <group name="Fig44"\r
+ description="org.argouml.uml.diagram.static_structure.ui.FigClass[488, 224, 106, 65]pathVisible=false;operationsVisible=true;attributesVisible=true"\r
+ href="-64--88-1-101-3dc093e3:1157f1866b2:-8000:00000000000008F8"\r
+ fill="1"\r
+ fillcolor="white"\r
+ stroke="1"\r
+ strokecolor="black"\r
+ >\r
+ <private>\r
+ </private>\r
+ \r
+ <rectangle name="Fig44.0"\r
+ x="488"\r
+ y="224"\r
+ width="106"\r
+ height="65"\r
+ fill="1"\r
+ fillcolor="white"\r
+ stroke="0"\r
+ strokecolor="black"\r
+ />\r
+ <group name="Fig44.1"\r
+ description="org.argouml.uml.diagram.ui.FigStereotypesCompartment[488, 224, 106, 2]"\r
+ href="-64--88-1-101-3dc093e3:1157f1866b2:-8000:00000000000008F8"\r
+ fill="1"\r
+ fillcolor="white"\r
+ stroke="1"\r
+ strokecolor="black"\r
+ >\r
+ <private>\r
+ </private>\r
+ \r
+ <rectangle name="Fig44.1.0"\r
+ x="488"\r
+ y="224"\r
+ width="106"\r
+ height="2"\r
+ fill="1"\r
+ fillcolor="white"\r
+ stroke="1"\r
+ strokecolor="black"\r
+ />\r
+ </group>\r
+ <text name="Fig44.2"\r
+ x="488"\r
+ y="226"\r
+ fill="1"\r
+ fillcolor="white"\r
+ stroke="0"\r
+ strokecolor="red"\r
+ font="Dialog"\r
+ textsize="10"\r
+ >ConfigurationFileSet</text>\r
+ <group name="Fig44.3"\r
+ description="org.argouml.uml.diagram.ui.FigOperationsCompartment[489, 269, 105, 20]"\r
+ fill="1"\r
+ fillcolor="white"\r
+ stroke="0"\r
+ strokecolor="black"\r
+ >\r
+ <private>\r
+ </private>\r
+ \r
+ <rectangle name="Fig44.3.0"\r
+ x="489"\r
+ y="269"\r
+ width="105"\r
+ height="20"\r
+ fill="1"\r
+ fillcolor="white"\r
+ stroke="0"\r
+ strokecolor="black"\r
+ />\r
+ <path name="Fig44.3.1"\r
+ description="org.argouml.uml.diagram.ui.FigFeaturesCompartment$FigSeperator"\r
+ fill="1"\r
+ fillcolor="white"\r
+ stroke="1"\r
+ strokecolor="black"\r
+ >\r
+ <moveto x="489"\r
+ y="269" />\r
+ <lineto x="594"\r
+ y="269" />\r
+ </path>\r
+ </group>\r
+ <group name="Fig44.4"\r
+ description="org.argouml.uml.diagram.ui.FigAttributesCompartment[489, 248, 105, 20]"\r
+ fill="1"\r
+ fillcolor="white"\r
+ stroke="0"\r
+ strokecolor="black"\r
+ >\r
+ <private>\r
+ </private>\r
+ \r
+ <rectangle name="Fig44.4.0"\r
+ x="489"\r
+ y="248"\r
+ width="105"\r
+ height="20"\r
+ fill="1"\r
+ fillcolor="white"\r
+ stroke="0"\r
+ strokecolor="black"\r
+ />\r
+ <path name="Fig44.4.1"\r
+ description="org.argouml.uml.diagram.ui.FigFeaturesCompartment$FigSeperator"\r
+ fill="1"\r
+ fillcolor="white"\r
+ stroke="1"\r
+ strokecolor="black"\r
+ >\r
+ <moveto x="489"\r
+ y="248" />\r
+ <lineto x="594"\r
+ y="248" />\r
+ </path>\r
+ </group>\r
+ <rectangle name="Fig44.5"\r
+ x="488"\r
+ y="224"\r
+ width="106"\r
+ height="65"\r
+ fill="0"\r
+ fillcolor="white"\r
+ stroke="1"\r
+ strokecolor="black"\r
+ />\r
+ </group>\r
+ <group name="Fig45"\r
+ description="org.argouml.uml.diagram.ui.FigAssociation"\r
+ href="-64--88-1-101-3dc093e3:1157f1866b2:-8000:00000000000008FB"\r
+ stroke="1"\r
+ strokecolor="black"\r
+ >\r
+ <private>\r
+ sourcePortFig="Fig40.0"\r
+ destPortFig="Fig44.0"\r
+ sourceFigNode="Fig40"\r
+ destFigNode="Fig44"\r
+ </private>\r
+ <path name="Fig45.0"\r
+ description="org.tigris.gef.presentation.FigPoly"\r
+ fill="0"\r
+ fillcolor="white"\r
+ stroke="1"\r
+ strokecolor="black"\r
+ >\r
+ <moveto x="768"\r
+ y="272" />\r
+ <lineto x="594"\r
+ y="272" />\r
+ </path>\r
+ </group>\r
+ <group name="Fig46"\r
+ description="org.argouml.uml.diagram.static_structure.ui.FigClass[312, 64, 102, 81]pathVisible=false;operationsVisible=true;attributesVisible=true"\r
+ href="-64--88-1-101-3dc093e3:1157f1866b2:-8000:0000000000000906"\r
+ fill="1"\r
+ fillcolor="white"\r
+ stroke="1"\r
+ strokecolor="black"\r
+ >\r
+ <private>\r
+ </private>\r
+ \r
+ <rectangle name="Fig46.0"\r
+ x="312"\r
+ y="64"\r
+ width="102"\r
+ height="81"\r
+ fill="1"\r
+ fillcolor="white"\r
+ stroke="0"\r
+ strokecolor="black"\r
+ />\r
+ <group name="Fig46.1"\r
+ description="org.argouml.uml.diagram.ui.FigStereotypesCompartment[312, 64, 102, 2]"\r
+ href="-64--88-1-101-3dc093e3:1157f1866b2:-8000:0000000000000906"\r
+ fill="1"\r
+ fillcolor="white"\r
+ stroke="1"\r
+ strokecolor="black"\r
+ >\r
+ <private>\r
+ </private>\r
+ \r
+ <rectangle name="Fig46.1.0"\r
+ x="312"\r
+ y="64"\r
+ width="102"\r
+ height="2"\r
+ fill="1"\r
+ fillcolor="white"\r
+ stroke="1"\r
+ strokecolor="black"\r
+ />\r
+ </group>\r
+ <text name="Fig46.2"\r
+ x="312"\r
+ y="66"\r
+ fill="1"\r
+ fillcolor="white"\r
+ stroke="0"\r
+ strokecolor="red"\r
+ font="Dialog"\r
+ textsize="10"\r
+ >VersionedHeavyFile</text>\r
+ <group name="Fig46.3"\r
+ description="org.argouml.uml.diagram.ui.FigOperationsCompartment[313, 125, 101, 20]"\r
+ fill="1"\r
+ fillcolor="white"\r
+ stroke="0"\r
+ strokecolor="black"\r
+ >\r
+ <private>\r
+ </private>\r
+ \r
+ <rectangle name="Fig46.3.0"\r
+ x="313"\r
+ y="125"\r
+ width="101"\r
+ height="20"\r
+ fill="1"\r
+ fillcolor="white"\r
+ stroke="0"\r
+ strokecolor="black"\r
+ />\r
+ <path name="Fig46.3.1"\r
+ description="org.argouml.uml.diagram.ui.FigFeaturesCompartment$FigSeperator"\r
+ fill="1"\r
+ fillcolor="white"\r
+ stroke="1"\r
+ strokecolor="black"\r
+ >\r
+ <moveto x="313"\r
+ y="125" />\r
+ <lineto x="414"\r
+ y="125" />\r
+ </path>\r
+ </group>\r
+ <group name="Fig46.4"\r
+ description="org.argouml.uml.diagram.ui.FigAttributesCompartment[313, 88, 101, 36]"\r
+ fill="1"\r
+ fillcolor="white"\r
+ stroke="0"\r
+ strokecolor="black"\r
+ >\r
+ <private>\r
+ </private>\r
+ \r
+ <rectangle name="Fig46.4.0"\r
+ x="313"\r
+ y="88"\r
+ width="101"\r
+ height="36"\r
+ fill="1"\r
+ fillcolor="white"\r
+ stroke="0"\r
+ strokecolor="black"\r
+ />\r
+ <path name="Fig46.4.1"\r
+ description="org.argouml.uml.diagram.ui.FigFeaturesCompartment$FigSeperator"\r
+ fill="1"\r
+ fillcolor="white"\r
+ stroke="1"\r
+ strokecolor="black"\r
+ >\r
+ <moveto x="313"\r
+ y="88" />\r
+ <lineto x="414"\r
+ y="88" />\r
+ </path>\r
+ <text name="Fig46.4.2"\r
+ x="313"\r
+ y="89"\r
+ fill="0"\r
+ fillcolor="white"\r
+ stroke="0"\r
+ strokecolor="black"\r
+ font="Dialog"\r
+ textsize="10"\r
+ >id : long</text>\r
+ <text name="Fig46.4.3"\r
+ x="313"\r
+ y="103"\r
+ fill="0"\r
+ fillcolor="white"\r
+ stroke="0"\r
+ strokecolor="black"\r
+ font="Dialog"\r
+ textsize="10"\r
+ >version : int</text>\r
+ </group>\r
+ <rectangle name="Fig46.5"\r
+ x="312"\r
+ y="64"\r
+ width="102"\r
+ height="81"\r
+ fill="0"\r
+ fillcolor="white"\r
+ stroke="1"\r
+ strokecolor="black"\r
+ />\r
+ </group>\r
+ <group name="Fig47"\r
+ description="org.argouml.uml.diagram.static_structure.ui.FigClass[48, 64, 108, 65]pathVisible=false;operationsVisible=true;attributesVisible=true"\r
+ href="-64--88-1-101-3dc093e3:1157f1866b2:-8000:0000000000000909"\r
+ fill="1"\r
+ fillcolor="white"\r
+ stroke="1"\r
+ strokecolor="black"\r
+ >\r
+ <private>\r
+ </private>\r
+ \r
+ <rectangle name="Fig47.0"\r
+ x="48"\r
+ y="64"\r
+ width="108"\r
+ height="65"\r
+ fill="1"\r
+ fillcolor="white"\r
+ stroke="0"\r
+ strokecolor="black"\r
+ />\r
+ <group name="Fig47.1"\r
+ description="org.argouml.uml.diagram.ui.FigStereotypesCompartment[48, 64, 108, 2]"\r
+ href="-64--88-1-101-3dc093e3:1157f1866b2:-8000:0000000000000909"\r
+ fill="1"\r
+ fillcolor="white"\r
+ stroke="1"\r
+ strokecolor="black"\r
+ >\r
+ <private>\r
+ </private>\r
+ \r
+ <rectangle name="Fig47.1.0"\r
+ x="48"\r
+ y="64"\r
+ width="108"\r
+ height="2"\r
+ fill="1"\r
+ fillcolor="white"\r
+ stroke="1"\r
+ strokecolor="black"\r
+ />\r
+ </group>\r
+ <text name="Fig47.2"\r
+ x="48"\r
+ y="66"\r
+ fill="1"\r
+ fillcolor="white"\r
+ stroke="0"\r
+ strokecolor="red"\r
+ font="Dialog"\r
+ textsize="10"\r
+ >HeavyFilesRepository</text>\r
+ <group name="Fig47.3"\r
+ description="org.argouml.uml.diagram.ui.FigOperationsCompartment[49, 109, 107, 20]"\r
+ fill="1"\r
+ fillcolor="white"\r
+ stroke="0"\r
+ strokecolor="black"\r
+ >\r
+ <private>\r
+ </private>\r
+ \r
+ <rectangle name="Fig47.3.0"\r
+ x="49"\r
+ y="109"\r
+ width="107"\r
+ height="20"\r
+ fill="1"\r
+ fillcolor="white"\r
+ stroke="0"\r
+ strokecolor="black"\r
+ />\r
+ <path name="Fig47.3.1"\r
+ description="org.argouml.uml.diagram.ui.FigFeaturesCompartment$FigSeperator"\r
+ fill="1"\r
+ fillcolor="white"\r
+ stroke="1"\r
+ strokecolor="black"\r
+ >\r
+ <moveto x="49"\r
+ y="109" />\r
+ <lineto x="156"\r
+ y="109" />\r
+ </path>\r
+ </group>\r
+ <group name="Fig47.4"\r
+ description="org.argouml.uml.diagram.ui.FigAttributesCompartment[49, 88, 107, 20]"\r
+ fill="1"\r
+ fillcolor="white"\r
+ stroke="0"\r
+ strokecolor="black"\r
+ >\r
+ <private>\r
+ </private>\r
+ \r
+ <rectangle name="Fig47.4.0"\r
+ x="49"\r
+ y="88"\r
+ width="107"\r
+ height="20"\r
+ fill="1"\r
+ fillcolor="white"\r
+ stroke="0"\r
+ strokecolor="black"\r
+ />\r
+ <path name="Fig47.4.1"\r
+ description="org.argouml.uml.diagram.ui.FigFeaturesCompartment$FigSeperator"\r
+ fill="1"\r
+ fillcolor="white"\r
+ stroke="1"\r
+ strokecolor="black"\r
+ >\r
+ <moveto x="49"\r
+ y="88" />\r
+ <lineto x="156"\r
+ y="88" />\r
+ </path>\r
+ </group>\r
+ <rectangle name="Fig47.5"\r
+ x="48"\r
+ y="64"\r
+ width="108"\r
+ height="65"\r
+ fill="0"\r
+ fillcolor="white"\r
+ stroke="1"\r
+ strokecolor="black"\r
+ />\r
+ </group>\r
+ <group name="Fig48"\r
+ description="org.argouml.uml.diagram.ui.FigAssociation"\r
+ href="-64--88-1-101-3dc093e3:1157f1866b2:-8000:000000000000090B"\r
+ stroke="1"\r
+ strokecolor="black"\r
+ >\r
+ <private>\r
+ sourcePortFig="Fig47.0"\r
+ destPortFig="Fig46.0"\r
+ sourceFigNode="Fig47"\r
+ destFigNode="Fig46"\r
+ </private>\r
+ <path name="Fig48.0"\r
+ description="org.tigris.gef.presentation.FigPoly"\r
+ fill="0"\r
+ fillcolor="white"\r
+ stroke="1"\r
+ strokecolor="black"\r
+ >\r
+ <moveto x="156"\r
+ y="104" />\r
+ <lineto x="312"\r
+ y="104" />\r
+ </path>\r
+ </group>\r
+ <group name="Fig49"\r
+ description="org.argouml.uml.diagram.static_structure.ui.FigClass[1112, 520, 90, 65]pathVisible=false;operationsVisible=true;attributesVisible=true"\r
+ href="-64--88-1-101-3dc093e3:1157f1866b2:-8000:0000000000000926"\r
+ fill="1"\r
+ fillcolor="white"\r
+ stroke="1"\r
+ strokecolor="black"\r
+ >\r
+ <private>\r
+ </private>\r
+ \r
+ <rectangle name="Fig49.0"\r
+ x="1112"\r
+ y="520"\r
+ width="90"\r
+ height="65"\r
+ fill="1"\r
+ fillcolor="white"\r
+ stroke="0"\r
+ strokecolor="black"\r
+ />\r
+ <group name="Fig49.1"\r
+ description="org.argouml.uml.diagram.ui.FigStereotypesCompartment[1112, 520, 90, 2]"\r
+ href="-64--88-1-101-3dc093e3:1157f1866b2:-8000:0000000000000926"\r
+ fill="1"\r
+ fillcolor="white"\r
+ stroke="1"\r
+ strokecolor="black"\r
+ >\r
+ <private>\r
+ </private>\r
+ \r
+ <rectangle name="Fig49.1.0"\r
+ x="1112"\r
+ y="520"\r
+ width="90"\r
+ height="2"\r
+ fill="1"\r
+ fillcolor="white"\r
+ stroke="1"\r
+ strokecolor="black"\r
+ />\r
+ </group>\r
+ <text name="Fig49.2"\r
+ x="1112"\r
+ y="522"\r
+ fill="1"\r
+ fillcolor="white"\r
+ stroke="0"\r
+ strokecolor="red"\r
+ font="Dialog"\r
+ textsize="10"\r
+ >TestData</text>\r
+ <group name="Fig49.3"\r
+ description="org.argouml.uml.diagram.ui.FigOperationsCompartment[1113, 565, 89, 20]"\r
+ fill="1"\r
+ fillcolor="white"\r
+ stroke="0"\r
+ strokecolor="black"\r
+ >\r
+ <private>\r
+ </private>\r
+ \r
+ <rectangle name="Fig49.3.0"\r
+ x="1113"\r
+ y="565"\r
+ width="89"\r
+ height="20"\r
+ fill="1"\r
+ fillcolor="white"\r
+ stroke="0"\r
+ strokecolor="black"\r
+ />\r
+ <path name="Fig49.3.1"\r
+ description="org.argouml.uml.diagram.ui.FigFeaturesCompartment$FigSeperator"\r
+ fill="1"\r
+ fillcolor="white"\r
+ stroke="1"\r
+ strokecolor="black"\r
+ >\r
+ <moveto x="1113"\r
+ y="565" />\r
+ <lineto x="1202"\r
+ y="565" />\r
+ </path>\r
+ </group>\r
+ <group name="Fig49.4"\r
+ description="org.argouml.uml.diagram.ui.FigAttributesCompartment[1113, 544, 89, 20]"\r
+ fill="1"\r
+ fillcolor="white"\r
+ stroke="0"\r
+ strokecolor="black"\r
+ >\r
+ <private>\r
+ </private>\r
+ \r
+ <rectangle name="Fig49.4.0"\r
+ x="1113"\r
+ y="544"\r
+ width="89"\r
+ height="20"\r
+ fill="1"\r
+ fillcolor="white"\r
+ stroke="0"\r
+ strokecolor="black"\r
+ />\r
+ <path name="Fig49.4.1"\r
+ description="org.argouml.uml.diagram.ui.FigFeaturesCompartment$FigSeperator"\r
+ fill="1"\r
+ fillcolor="white"\r
+ stroke="1"\r
+ strokecolor="black"\r
+ >\r
+ <moveto x="1113"\r
+ y="544" />\r
+ <lineto x="1202"\r
+ y="544" />\r
+ </path>\r
+ </group>\r
+ <rectangle name="Fig49.5"\r
+ x="1112"\r
+ y="520"\r
+ width="90"\r
+ height="65"\r
+ fill="0"\r
+ fillcolor="white"\r
+ stroke="1"\r
+ strokecolor="black"\r
+ />\r
+ </group>\r
+ <group name="Fig50"\r
+ description="org.argouml.uml.diagram.ui.FigAssociation"\r
+ href="-64--88-1-101-3dc093e3:1157f1866b2:-8000:0000000000000928"\r
+ stroke="1"\r
+ strokecolor="black"\r
+ >\r
+ <private>\r
+ sourcePortFig="Fig14.0"\r
+ destPortFig="Fig49.0"\r
+ sourceFigNode="Fig14"\r
+ destFigNode="Fig49"\r
+ </private>\r
+ <path name="Fig50.0"\r
+ description="org.tigris.gef.presentation.FigPoly"\r
+ fill="0"\r
+ fillcolor="white"\r
+ stroke="1"\r
+ strokecolor="black"\r
+ >\r
+ <moveto x="1224"\r
+ y="688" />\r
+ <lineto x="1224"\r
+ y="552" />\r
+ <lineto x="1202"\r
+ y="552" />\r
+ </path>\r
+ </group>\r
+ <group name="Fig51"\r
+ description="org.argouml.uml.diagram.static_structure.ui.FigClass[600, 528, 90, 65]pathVisible=false;operationsVisible=true;attributesVisible=true"\r
+ href="-64--88-1-101-3dc093e3:1157f1866b2:-8000:0000000000000931"\r
+ fill="1"\r
+ fillcolor="white"\r
+ stroke="1"\r
+ strokecolor="black"\r
+ >\r
+ <private>\r
+ </private>\r
+ \r
+ <rectangle name="Fig51.0"\r
+ x="600"\r
+ y="528"\r
+ width="90"\r
+ height="65"\r
+ fill="1"\r
+ fillcolor="white"\r
+ stroke="0"\r
+ strokecolor="black"\r
+ />\r
+ <group name="Fig51.1"\r
+ description="org.argouml.uml.diagram.ui.FigStereotypesCompartment[600, 528, 90, 2]"\r
+ href="-64--88-1-101-3dc093e3:1157f1866b2:-8000:0000000000000931"\r
+ fill="1"\r
+ fillcolor="white"\r
+ stroke="1"\r
+ strokecolor="black"\r
+ >\r
+ <private>\r
+ </private>\r
+ \r
+ <rectangle name="Fig51.1.0"\r
+ x="600"\r
+ y="528"\r
+ width="90"\r
+ height="2"\r
+ fill="1"\r
+ fillcolor="white"\r
+ stroke="1"\r
+ strokecolor="black"\r
+ />\r
+ </group>\r
+ <text name="Fig51.2"\r
+ x="600"\r
+ y="530"\r
+ fill="1"\r
+ fillcolor="white"\r
+ stroke="0"\r
+ strokecolor="red"\r
+ font="Dialog"\r
+ textsize="10"\r
+ >TargetData</text>\r
+ <group name="Fig51.3"\r
+ description="org.argouml.uml.diagram.ui.FigOperationsCompartment[601, 573, 89, 20]"\r
+ fill="1"\r
+ fillcolor="white"\r
+ stroke="0"\r
+ strokecolor="black"\r
+ >\r
+ <private>\r
+ </private>\r
+ \r
+ <rectangle name="Fig51.3.0"\r
+ x="601"\r
+ y="573"\r
+ width="89"\r
+ height="20"\r
+ fill="1"\r
+ fillcolor="white"\r
+ stroke="0"\r
+ strokecolor="black"\r
+ />\r
+ <path name="Fig51.3.1"\r
+ description="org.argouml.uml.diagram.ui.FigFeaturesCompartment$FigSeperator"\r
+ fill="1"\r
+ fillcolor="white"\r
+ stroke="1"\r
+ strokecolor="black"\r
+ >\r
+ <moveto x="601"\r
+ y="573" />\r
+ <lineto x="690"\r
+ y="573" />\r
+ </path>\r
+ </group>\r
+ <group name="Fig51.4"\r
+ description="org.argouml.uml.diagram.ui.FigAttributesCompartment[601, 552, 89, 20]"\r
+ fill="1"\r
+ fillcolor="white"\r
+ stroke="0"\r
+ strokecolor="black"\r
+ >\r
+ <private>\r
+ </private>\r
+ \r
+ <rectangle name="Fig51.4.0"\r
+ x="601"\r
+ y="552"\r
+ width="89"\r
+ height="20"\r
+ fill="1"\r
+ fillcolor="white"\r
+ stroke="0"\r
+ strokecolor="black"\r
+ />\r
+ <path name="Fig51.4.1"\r
+ description="org.argouml.uml.diagram.ui.FigFeaturesCompartment$FigSeperator"\r
+ fill="1"\r
+ fillcolor="white"\r
+ stroke="1"\r
+ strokecolor="black"\r
+ >\r
+ <moveto x="601"\r
+ y="552" />\r
+ <lineto x="690"\r
+ y="552" />\r
+ </path>\r
+ </group>\r
+ <rectangle name="Fig51.5"\r
+ x="600"\r
+ y="528"\r
+ width="90"\r
+ height="65"\r
+ fill="0"\r
+ fillcolor="white"\r
+ stroke="1"\r
+ strokecolor="black"\r
+ />\r
+ </group>\r
+ <group name="Fig52"\r
+ description="org.argouml.uml.diagram.ui.FigAssociation"\r
+ href="-64--88-1-101-3dc093e3:1157f1866b2:-8000:0000000000000933"\r
+ stroke="1"\r
+ strokecolor="black"\r
+ >\r
+ <private>\r
+ sourcePortFig="Fig12.0"\r
+ destPortFig="Fig51.0"\r
+ sourceFigNode="Fig12"\r
+ destFigNode="Fig51"\r
+ </private>\r
+ <path name="Fig52.0"\r
+ description="org.tigris.gef.presentation.FigPoly"\r
+ fill="0"\r
+ fillcolor="white"\r
+ stroke="1"\r
+ strokecolor="black"\r
+ >\r
+ <moveto x="712"\r
+ y="688" />\r
+ <lineto x="712"\r
+ y="560" />\r
+ <lineto x="690"\r
+ y="560" />\r
+ </path>\r
+ </group>\r
+ <group name="Fig53"\r
+ description="org.argouml.uml.diagram.static_structure.ui.FigClass[448, 1008, 90, 65]pathVisible=false;operationsVisible=true;attributesVisible=true"\r
+ href="-64--88-1-101-3dc093e3:1157f1866b2:-8000:0000000000000945"\r
+ fill="1"\r
+ fillcolor="white"\r
+ stroke="1"\r
+ strokecolor="black"\r
+ >\r
+ <private>\r
+ </private>\r
+ \r
+ <rectangle name="Fig53.0"\r
+ x="448"\r
+ y="1008"\r
+ width="90"\r
+ height="65"\r
+ fill="1"\r
+ fillcolor="white"\r
+ stroke="0"\r
+ strokecolor="black"\r
+ />\r
+ <group name="Fig53.1"\r
+ description="org.argouml.uml.diagram.ui.FigStereotypesCompartment[448, 1008, 90, 2]"\r
+ href="-64--88-1-101-3dc093e3:1157f1866b2:-8000:0000000000000945"\r
+ fill="1"\r
+ fillcolor="white"\r
+ stroke="1"\r
+ strokecolor="black"\r
+ >\r
+ <private>\r
+ </private>\r
+ \r
+ <rectangle name="Fig53.1.0"\r
+ x="448"\r
+ y="1008"\r
+ width="90"\r
+ height="2"\r
+ fill="1"\r
+ fillcolor="white"\r
+ stroke="1"\r
+ strokecolor="black"\r
+ />\r
+ </group>\r
+ <text name="Fig53.2"\r
+ x="448"\r
+ y="1010"\r
+ fill="1"\r
+ fillcolor="white"\r
+ stroke="0"\r
+ strokecolor="red"\r
+ font="Dialog"\r
+ textsize="10"\r
+ >Attachement</text>\r
+ <group name="Fig53.3"\r
+ description="org.argouml.uml.diagram.ui.FigOperationsCompartment[449, 1053, 89, 20]"\r
+ fill="1"\r
+ fillcolor="white"\r
+ stroke="0"\r
+ strokecolor="black"\r
+ >\r
+ <private>\r
+ </private>\r
+ \r
+ <rectangle name="Fig53.3.0"\r
+ x="449"\r
+ y="1053"\r
+ width="89"\r
+ height="20"\r
+ fill="1"\r
+ fillcolor="white"\r
+ stroke="0"\r
+ strokecolor="black"\r
+ />\r
+ <path name="Fig53.3.1"\r
+ description="org.argouml.uml.diagram.ui.FigFeaturesCompartment$FigSeperator"\r
+ fill="1"\r
+ fillcolor="white"\r
+ stroke="1"\r
+ strokecolor="black"\r
+ >\r
+ <moveto x="449"\r
+ y="1053" />\r
+ <lineto x="538"\r
+ y="1053" />\r
+ </path>\r
+ </group>\r
+ <group name="Fig53.4"\r
+ description="org.argouml.uml.diagram.ui.FigAttributesCompartment[449, 1032, 89, 20]"\r
+ fill="1"\r
+ fillcolor="white"\r
+ stroke="0"\r
+ strokecolor="black"\r
+ >\r
+ <private>\r
+ </private>\r
+ \r
+ <rectangle name="Fig53.4.0"\r
+ x="449"\r
+ y="1032"\r
+ width="89"\r
+ height="20"\r
+ fill="1"\r
+ fillcolor="white"\r
+ stroke="0"\r
+ strokecolor="black"\r
+ />\r
+ <path name="Fig53.4.1"\r
+ description="org.argouml.uml.diagram.ui.FigFeaturesCompartment$FigSeperator"\r
+ fill="1"\r
+ fillcolor="white"\r
+ stroke="1"\r
+ strokecolor="black"\r
+ >\r
+ <moveto x="449"\r
+ y="1032" />\r
+ <lineto x="538"\r
+ y="1032" />\r
+ </path>\r
+ </group>\r
+ <rectangle name="Fig53.5"\r
+ x="448"\r
+ y="1008"\r
+ width="90"\r
+ height="65"\r
+ fill="0"\r
+ fillcolor="white"\r
+ stroke="1"\r
+ strokecolor="black"\r
+ />\r
+ </group>\r
+ <group name="Fig54"\r
+ description="org.argouml.uml.diagram.ui.FigAssociation"\r
+ href="-64--88-1-101-3dc093e3:1157f1866b2:-8000:0000000000000947"\r
+ stroke="1"\r
+ strokecolor="black"\r
+ >\r
+ <private>\r
+ sourcePortFig="Fig23.0"\r
+ destPortFig="Fig53.0"\r
+ sourceFigNode="Fig23"\r
+ destFigNode="Fig53"\r
+ </private>\r
+ <path name="Fig54.0"\r
+ description="org.tigris.gef.presentation.FigPoly"\r
+ fill="0"\r
+ fillcolor="white"\r
+ stroke="1"\r
+ strokecolor="black"\r
+ >\r
+ <moveto x="640"\r
+ y="1048" />\r
+ <lineto x="538"\r
+ y="1048" />\r
+ </path>\r
+ </group>\r
+ <group name="Fig55"\r
+ description="org.argouml.uml.diagram.static_structure.ui.FigClass[264, 936, 90, 65]pathVisible=false;operationsVisible=true;attributesVisible=true"\r
+ href="-64--88-1-101-3dc093e3:1157f1866b2:-8000:0000000000000950"\r
+ fill="1"\r
+ fillcolor="white"\r
+ stroke="1"\r
+ strokecolor="black"\r
+ >\r
+ <private>\r
+ </private>\r
+ \r
+ <rectangle name="Fig55.0"\r
+ x="264"\r
+ y="936"\r
+ width="90"\r
+ height="65"\r
+ fill="1"\r
+ fillcolor="white"\r
+ stroke="0"\r
+ strokecolor="black"\r
+ />\r
+ <group name="Fig55.1"\r
+ description="org.argouml.uml.diagram.ui.FigStereotypesCompartment[264, 936, 90, 2]"\r
+ href="-64--88-1-101-3dc093e3:1157f1866b2:-8000:0000000000000950"\r
+ fill="1"\r
+ fillcolor="white"\r
+ stroke="1"\r
+ strokecolor="black"\r
+ >\r
+ <private>\r
+ </private>\r
+ \r
+ <rectangle name="Fig55.1.0"\r
+ x="264"\r
+ y="936"\r
+ width="90"\r
+ height="2"\r
+ fill="1"\r
+ fillcolor="white"\r
+ stroke="1"\r
+ strokecolor="black"\r
+ />\r
+ </group>\r
+ <text name="Fig55.2"\r
+ x="264"\r
+ y="938"\r
+ fill="1"\r
+ fillcolor="white"\r
+ stroke="0"\r
+ strokecolor="red"\r
+ font="Dialog"\r
+ textsize="10"\r
+ >URLAttachement</text>\r
+ <group name="Fig55.3"\r
+ description="org.argouml.uml.diagram.ui.FigOperationsCompartment[265, 981, 89, 20]"\r
+ fill="1"\r
+ fillcolor="white"\r
+ stroke="0"\r
+ strokecolor="black"\r
+ >\r
+ <private>\r
+ </private>\r
+ \r
+ <rectangle name="Fig55.3.0"\r
+ x="265"\r
+ y="981"\r
+ width="89"\r
+ height="20"\r
+ fill="1"\r
+ fillcolor="white"\r
+ stroke="0"\r
+ strokecolor="black"\r
+ />\r
+ <path name="Fig55.3.1"\r
+ description="org.argouml.uml.diagram.ui.FigFeaturesCompartment$FigSeperator"\r
+ fill="1"\r
+ fillcolor="white"\r
+ stroke="1"\r
+ strokecolor="black"\r
+ >\r
+ <moveto x="265"\r
+ y="981" />\r
+ <lineto x="354"\r
+ y="981" />\r
+ </path>\r
+ </group>\r
+ <group name="Fig55.4"\r
+ description="org.argouml.uml.diagram.ui.FigAttributesCompartment[265, 960, 89, 20]"\r
+ fill="1"\r
+ fillcolor="white"\r
+ stroke="0"\r
+ strokecolor="black"\r
+ >\r
+ <private>\r
+ </private>\r
+ \r
+ <rectangle name="Fig55.4.0"\r
+ x="265"\r
+ y="960"\r
+ width="89"\r
+ height="20"\r
+ fill="1"\r
+ fillcolor="white"\r
+ stroke="0"\r
+ strokecolor="black"\r
+ />\r
+ <path name="Fig55.4.1"\r
+ description="org.argouml.uml.diagram.ui.FigFeaturesCompartment$FigSeperator"\r
+ fill="1"\r
+ fillcolor="white"\r
+ stroke="1"\r
+ strokecolor="black"\r
+ >\r
+ <moveto x="265"\r
+ y="960" />\r
+ <lineto x="354"\r
+ y="960" />\r
+ </path>\r
+ </group>\r
+ <rectangle name="Fig55.5"\r
+ x="264"\r
+ y="936"\r
+ width="90"\r
+ height="65"\r
+ fill="0"\r
+ fillcolor="white"\r
+ stroke="1"\r
+ strokecolor="black"\r
+ />\r
+ </group>\r
+ <group name="Fig56"\r
+ description="org.argouml.uml.diagram.static_structure.ui.FigClass[248, 1008, 117, 65]pathVisible=false;operationsVisible=true;attributesVisible=true"\r
+ href="-64--88-1-101-3dc093e3:1157f1866b2:-8000:0000000000000952"\r
+ fill="1"\r
+ fillcolor="white"\r
+ stroke="1"\r
+ strokecolor="black"\r
+ >\r
+ <private>\r
+ </private>\r
+ \r
+ <rectangle name="Fig56.0"\r
+ x="248"\r
+ y="1008"\r
+ width="117"\r
+ height="65"\r
+ fill="1"\r
+ fillcolor="white"\r
+ stroke="0"\r
+ strokecolor="black"\r
+ />\r
+ <group name="Fig56.1"\r
+ description="org.argouml.uml.diagram.ui.FigStereotypesCompartment[248, 1008, 117, 2]"\r
+ href="-64--88-1-101-3dc093e3:1157f1866b2:-8000:0000000000000952"\r
+ fill="1"\r
+ fillcolor="white"\r
+ stroke="1"\r
+ strokecolor="black"\r
+ >\r
+ <private>\r
+ </private>\r
+ \r
+ <rectangle name="Fig56.1.0"\r
+ x="248"\r
+ y="1008"\r
+ width="117"\r
+ height="2"\r
+ fill="1"\r
+ fillcolor="white"\r
+ stroke="1"\r
+ strokecolor="black"\r
+ />\r
+ </group>\r
+ <text name="Fig56.2"\r
+ x="248"\r
+ y="1010"\r
+ fill="1"\r
+ fillcolor="white"\r
+ stroke="0"\r
+ strokecolor="red"\r
+ font="Dialog"\r
+ textsize="10"\r
+ >BinaryFileAttachement</text>\r
+ <group name="Fig56.3"\r
+ description="org.argouml.uml.diagram.ui.FigOperationsCompartment[249, 1053, 116, 20]"\r
+ fill="1"\r
+ fillcolor="white"\r
+ stroke="0"\r
+ strokecolor="black"\r
+ >\r
+ <private>\r
+ </private>\r
+ \r
+ <rectangle name="Fig56.3.0"\r
+ x="249"\r
+ y="1053"\r
+ width="116"\r
+ height="20"\r
+ fill="1"\r
+ fillcolor="white"\r
+ stroke="0"\r
+ strokecolor="black"\r
+ />\r
+ <path name="Fig56.3.1"\r
+ description="org.argouml.uml.diagram.ui.FigFeaturesCompartment$FigSeperator"\r
+ fill="1"\r
+ fillcolor="white"\r
+ stroke="1"\r
+ strokecolor="black"\r
+ >\r
+ <moveto x="249"\r
+ y="1053" />\r
+ <lineto x="365"\r
+ y="1053" />\r
+ </path>\r
+ </group>\r
+ <group name="Fig56.4"\r
+ description="org.argouml.uml.diagram.ui.FigAttributesCompartment[249, 1032, 116, 20]"\r
+ fill="1"\r
+ fillcolor="white"\r
+ stroke="0"\r
+ strokecolor="black"\r
+ >\r
+ <private>\r
+ </private>\r
+ \r
+ <rectangle name="Fig56.4.0"\r
+ x="249"\r
+ y="1032"\r
+ width="116"\r
+ height="20"\r
+ fill="1"\r
+ fillcolor="white"\r
+ stroke="0"\r
+ strokecolor="black"\r
+ />\r
+ <path name="Fig56.4.1"\r
+ description="org.argouml.uml.diagram.ui.FigFeaturesCompartment$FigSeperator"\r
+ fill="1"\r
+ fillcolor="white"\r
+ stroke="1"\r
+ strokecolor="black"\r
+ >\r
+ <moveto x="249"\r
+ y="1032" />\r
+ <lineto x="365"\r
+ y="1032" />\r
+ </path>\r
+ </group>\r
+ <rectangle name="Fig56.5"\r
+ x="248"\r
+ y="1008"\r
+ width="117"\r
+ height="65"\r
+ fill="0"\r
+ fillcolor="white"\r
+ stroke="1"\r
+ strokecolor="black"\r
+ />\r
+ </group>\r
+ <group name="Fig57"\r
+ description="org.argouml.uml.diagram.static_structure.ui.FigClass[256, 1080, 107, 65]pathVisible=false;operationsVisible=true;attributesVisible=true"\r
+ href="-64--88-1-101-3dc093e3:1157f1866b2:-8000:0000000000000954"\r
+ fill="1"\r
+ fillcolor="white"\r
+ stroke="1"\r
+ strokecolor="black"\r
+ >\r
+ <private>\r
+ </private>\r
+ \r
+ <rectangle name="Fig57.0"\r
+ x="256"\r
+ y="1080"\r
+ width="107"\r
+ height="65"\r
+ fill="1"\r
+ fillcolor="white"\r
+ stroke="0"\r
+ strokecolor="black"\r
+ />\r
+ <group name="Fig57.1"\r
+ description="org.argouml.uml.diagram.ui.FigStereotypesCompartment[256, 1080, 107, 2]"\r
+ href="-64--88-1-101-3dc093e3:1157f1866b2:-8000:0000000000000954"\r
+ fill="1"\r
+ fillcolor="white"\r
+ stroke="1"\r
+ strokecolor="black"\r
+ >\r
+ <private>\r
+ </private>\r
+ \r
+ <rectangle name="Fig57.1.0"\r
+ x="256"\r
+ y="1080"\r
+ width="107"\r
+ height="2"\r
+ fill="1"\r
+ fillcolor="white"\r
+ stroke="1"\r
+ strokecolor="black"\r
+ />\r
+ </group>\r
+ <text name="Fig57.2"\r
+ x="256"\r
+ y="1082"\r
+ fill="1"\r
+ fillcolor="white"\r
+ stroke="0"\r
+ strokecolor="red"\r
+ font="Dialog"\r
+ textsize="10"\r
+ >TestFileAttachement</text>\r
+ <group name="Fig57.3"\r
+ description="org.argouml.uml.diagram.ui.FigOperationsCompartment[257, 1125, 106, 20]"\r
+ fill="1"\r
+ fillcolor="white"\r
+ stroke="0"\r
+ strokecolor="black"\r
+ >\r
+ <private>\r
+ </private>\r
+ \r
+ <rectangle name="Fig57.3.0"\r
+ x="257"\r
+ y="1125"\r
+ width="106"\r
+ height="20"\r
+ fill="1"\r
+ fillcolor="white"\r
+ stroke="0"\r
+ strokecolor="black"\r
+ />\r
+ <path name="Fig57.3.1"\r
+ description="org.argouml.uml.diagram.ui.FigFeaturesCompartment$FigSeperator"\r
+ fill="1"\r
+ fillcolor="white"\r
+ stroke="1"\r
+ strokecolor="black"\r
+ >\r
+ <moveto x="257"\r
+ y="1125" />\r
+ <lineto x="363"\r
+ y="1125" />\r
+ </path>\r
+ </group>\r
+ <group name="Fig57.4"\r
+ description="org.argouml.uml.diagram.ui.FigAttributesCompartment[257, 1104, 106, 20]"\r
+ fill="1"\r
+ fillcolor="white"\r
+ stroke="0"\r
+ strokecolor="black"\r
+ >\r
+ <private>\r
+ </private>\r
+ \r
+ <rectangle name="Fig57.4.0"\r
+ x="257"\r
+ y="1104"\r
+ width="106"\r
+ height="20"\r
+ fill="1"\r
+ fillcolor="white"\r
+ stroke="0"\r
+ strokecolor="black"\r
+ />\r
+ <path name="Fig57.4.1"\r
+ description="org.argouml.uml.diagram.ui.FigFeaturesCompartment$FigSeperator"\r
+ fill="1"\r
+ fillcolor="white"\r
+ stroke="1"\r
+ strokecolor="black"\r
+ >\r
+ <moveto x="257"\r
+ y="1104" />\r
+ <lineto x="363"\r
+ y="1104" />\r
+ </path>\r
+ </group>\r
+ <rectangle name="Fig57.5"\r
+ x="256"\r
+ y="1080"\r
+ width="107"\r
+ height="65"\r
+ fill="0"\r
+ fillcolor="white"\r
+ stroke="1"\r
+ strokecolor="black"\r
+ />\r
+ </group>\r
+ <group name="Fig58"\r
+ description="org.argouml.uml.diagram.static_structure.ui.FigClass[1400, 488, 90, 65]pathVisible=false;operationsVisible=true;attributesVisible=true"\r
+ href="-64--88-1-101-3dc093e3:1157f1866b2:-8000:0000000000000959"\r
+ fill="1"\r
+ fillcolor="white"\r
+ stroke="1"\r
+ strokecolor="black"\r
+ >\r
+ <private>\r
+ </private>\r
+ \r
+ <rectangle name="Fig58.0"\r
+ x="1400"\r
+ y="488"\r
+ width="90"\r
+ height="65"\r
+ fill="1"\r
+ fillcolor="white"\r
+ stroke="0"\r
+ strokecolor="black"\r
+ />\r
+ <group name="Fig58.1"\r
+ description="org.argouml.uml.diagram.ui.FigStereotypesCompartment[1400, 488, 90, 2]"\r
+ href="-64--88-1-101-3dc093e3:1157f1866b2:-8000:0000000000000959"\r
+ fill="1"\r
+ fillcolor="white"\r
+ stroke="1"\r
+ strokecolor="black"\r
+ >\r
+ <private>\r
+ </private>\r
+ \r
+ <rectangle name="Fig58.1.0"\r
+ x="1400"\r
+ y="488"\r
+ width="90"\r
+ height="2"\r
+ fill="1"\r
+ fillcolor="white"\r
+ stroke="1"\r
+ strokecolor="black"\r
+ />\r
+ </group>\r
+ <text name="Fig58.2"\r
+ x="1400"\r
+ y="490"\r
+ fill="1"\r
+ fillcolor="white"\r
+ stroke="0"\r
+ strokecolor="red"\r
+ font="Dialog"\r
+ textsize="10"\r
+ >TestResult</text>\r
+ <group name="Fig58.3"\r
+ description="org.argouml.uml.diagram.ui.FigOperationsCompartment[1401, 533, 89, 20]"\r
+ fill="1"\r
+ fillcolor="white"\r
+ stroke="0"\r
+ strokecolor="black"\r
+ >\r
+ <private>\r
+ </private>\r
+ \r
+ <rectangle name="Fig58.3.0"\r
+ x="1401"\r
+ y="533"\r
+ width="89"\r
+ height="20"\r
+ fill="1"\r
+ fillcolor="white"\r
+ stroke="0"\r
+ strokecolor="black"\r
+ />\r
+ <path name="Fig58.3.1"\r
+ description="org.argouml.uml.diagram.ui.FigFeaturesCompartment$FigSeperator"\r
+ fill="1"\r
+ fillcolor="white"\r
+ stroke="1"\r
+ strokecolor="black"\r
+ >\r
+ <moveto x="1401"\r
+ y="533" />\r
+ <lineto x="1490"\r
+ y="533" />\r
+ </path>\r
+ </group>\r
+ <group name="Fig58.4"\r
+ description="org.argouml.uml.diagram.ui.FigAttributesCompartment[1401, 512, 89, 20]"\r
+ fill="1"\r
+ fillcolor="white"\r
+ stroke="0"\r
+ strokecolor="black"\r
+ >\r
+ <private>\r
+ </private>\r
+ \r
+ <rectangle name="Fig58.4.0"\r
+ x="1401"\r
+ y="512"\r
+ width="89"\r
+ height="20"\r
+ fill="1"\r
+ fillcolor="white"\r
+ stroke="0"\r
+ strokecolor="black"\r
+ />\r
+ <path name="Fig58.4.1"\r
+ description="org.argouml.uml.diagram.ui.FigFeaturesCompartment$FigSeperator"\r
+ fill="1"\r
+ fillcolor="white"\r
+ stroke="1"\r
+ strokecolor="black"\r
+ >\r
+ <moveto x="1401"\r
+ y="512" />\r
+ <lineto x="1490"\r
+ y="512" />\r
+ </path>\r
+ </group>\r
+ <rectangle name="Fig58.5"\r
+ x="1400"\r
+ y="488"\r
+ width="90"\r
+ height="65"\r
+ fill="0"\r
+ fillcolor="white"\r
+ stroke="1"\r
+ strokecolor="black"\r
+ />\r
+ </group>\r
+ <group name="Fig59"\r
+ description="org.argouml.uml.diagram.ui.FigAssociation"\r
+ href="-64--88-1-101-3dc093e3:1157f1866b2:-8000:000000000000095B"\r
+ stroke="1"\r
+ strokecolor="black"\r
+ >\r
+ <private>\r
+ sourcePortFig="Fig14.0"\r
+ destPortFig="Fig58.0"\r
+ sourceFigNode="Fig14"\r
+ destFigNode="Fig58"\r
+ </private>\r
+ <path name="Fig59.0"\r
+ description="org.tigris.gef.presentation.FigPoly"\r
+ fill="0"\r
+ fillcolor="white"\r
+ stroke="1"\r
+ strokecolor="black"\r
+ >\r
+ <moveto x="1280"\r
+ y="688" />\r
+ <lineto x="1280"\r
+ y="520" />\r
+ <lineto x="1400"\r
+ y="520" />\r
+ </path>\r
+ </group>\r
+ <group name="Fig60"\r
+ description="org.argouml.uml.diagram.static_structure.ui.FigClass[1400, 336, 90, 65]pathVisible=false;operationsVisible=true;attributesVisible=true"\r
+ href="-64--88-1-101-3dc093e3:1157f1866b2:-8000:0000000000000966"\r
+ fill="1"\r
+ fillcolor="white"\r
+ stroke="1"\r
+ strokecolor="black"\r
+ >\r
+ <private>\r
+ </private>\r
+ \r
+ <rectangle name="Fig60.0"\r
+ x="1400"\r
+ y="336"\r
+ width="90"\r
+ height="65"\r
+ fill="1"\r
+ fillcolor="white"\r
+ stroke="0"\r
+ strokecolor="black"\r
+ />\r
+ <group name="Fig60.1"\r
+ description="org.argouml.uml.diagram.ui.FigStereotypesCompartment[1400, 336, 90, 2]"\r
+ href="-64--88-1-101-3dc093e3:1157f1866b2:-8000:0000000000000966"\r
+ fill="1"\r
+ fillcolor="white"\r
+ stroke="1"\r
+ strokecolor="black"\r
+ >\r
+ <private>\r
+ </private>\r
+ \r
+ <rectangle name="Fig60.1.0"\r
+ x="1400"\r
+ y="336"\r
+ width="90"\r
+ height="2"\r
+ fill="1"\r
+ fillcolor="white"\r
+ stroke="1"\r
+ strokecolor="black"\r
+ />\r
+ </group>\r
+ <text name="Fig60.2"\r
+ x="1400"\r
+ y="338"\r
+ fill="1"\r
+ fillcolor="white"\r
+ stroke="0"\r
+ strokecolor="red"\r
+ font="Dialog"\r
+ textsize="10"\r
+ >TestResultId</text>\r
+ <group name="Fig60.3"\r
+ description="org.argouml.uml.diagram.ui.FigOperationsCompartment[1401, 381, 89, 20]"\r
+ fill="1"\r
+ fillcolor="white"\r
+ stroke="0"\r
+ strokecolor="black"\r
+ >\r
+ <private>\r
+ </private>\r
+ \r
+ <rectangle name="Fig60.3.0"\r
+ x="1401"\r
+ y="381"\r
+ width="89"\r
+ height="20"\r
+ fill="1"\r
+ fillcolor="white"\r
+ stroke="0"\r
+ strokecolor="black"\r
+ />\r
+ <path name="Fig60.3.1"\r
+ description="org.argouml.uml.diagram.ui.FigFeaturesCompartment$FigSeperator"\r
+ fill="1"\r
+ fillcolor="white"\r
+ stroke="1"\r
+ strokecolor="black"\r
+ >\r
+ <moveto x="1401"\r
+ y="381" />\r
+ <lineto x="1490"\r
+ y="381" />\r
+ </path>\r
+ </group>\r
+ <group name="Fig60.4"\r
+ description="org.argouml.uml.diagram.ui.FigAttributesCompartment[1401, 360, 89, 20]"\r
+ fill="1"\r
+ fillcolor="white"\r
+ stroke="0"\r
+ strokecolor="black"\r
+ >\r
+ <private>\r
+ </private>\r
+ \r
+ <rectangle name="Fig60.4.0"\r
+ x="1401"\r
+ y="360"\r
+ width="89"\r
+ height="20"\r
+ fill="1"\r
+ fillcolor="white"\r
+ stroke="0"\r
+ strokecolor="black"\r
+ />\r
+ <path name="Fig60.4.1"\r
+ description="org.argouml.uml.diagram.ui.FigFeaturesCompartment$FigSeperator"\r
+ fill="1"\r
+ fillcolor="white"\r
+ stroke="1"\r
+ strokecolor="black"\r
+ >\r
+ <moveto x="1401"\r
+ y="360" />\r
+ <lineto x="1490"\r
+ y="360" />\r
+ </path>\r
+ </group>\r
+ <rectangle name="Fig60.5"\r
+ x="1400"\r
+ y="336"\r
+ width="90"\r
+ height="65"\r
+ fill="0"\r
+ fillcolor="white"\r
+ stroke="1"\r
+ strokecolor="black"\r
+ />\r
+ </group>\r
+ <group name="Fig61"\r
+ description="org.argouml.uml.diagram.ui.FigAssociation"\r
+ href="-64--88-1-101-3dc093e3:1157f1866b2:-8000:0000000000000968"\r
+ stroke="1"\r
+ strokecolor="black"\r
+ >\r
+ <private>\r
+ sourcePortFig="Fig58.0"\r
+ destPortFig="Fig60.0"\r
+ sourceFigNode="Fig58"\r
+ destFigNode="Fig60"\r
+ </private>\r
+ <path name="Fig61.0"\r
+ description="org.tigris.gef.presentation.FigPoly"\r
+ fill="0"\r
+ fillcolor="white"\r
+ stroke="1"\r
+ strokecolor="black"\r
+ >\r
+ <moveto x="1440"\r
+ y="488" />\r
+ <lineto x="1440"\r
+ y="401" />\r
+ </path>\r
+ </group>\r
+ <group name="Fig62"\r
+ description="org.argouml.uml.diagram.ui.FigAssociation"\r
+ href="-64--88-1-101-3dc093e3:1157f1866b2:-8000:000000000000096F"\r
+ stroke="1"\r
+ strokecolor="black"\r
+ >\r
+ <private>\r
+ sourcePortFig="Fig60.0"\r
+ destPortFig="Fig34.0"\r
+ sourceFigNode="Fig60"\r
+ destFigNode="Fig34"\r
+ </private>\r
+ <path name="Fig62.0"\r
+ description="org.tigris.gef.presentation.FigPoly"\r
+ fill="0"\r
+ fillcolor="white"\r
+ stroke="1"\r
+ strokecolor="black"\r
+ >\r
+ <moveto x="1400"\r
+ y="368" />\r
+ <lineto x="1031"\r
+ y="368" />\r
+ </path>\r
+ </group>\r
+ <group name="Fig63"\r
+ description="org.argouml.uml.diagram.ui.FigAssociation"\r
+ href="-64--88-1-101-3dc093e3:1157f1866b2:-8000:0000000000000976"\r
+ stroke="1"\r
+ strokecolor="black"\r
+ >\r
+ <private>\r
+ sourcePortFig="Fig34.0"\r
+ destPortFig="Fig33.0"\r
+ sourceFigNode="Fig34"\r
+ destFigNode="Fig33"\r
+ </private>\r
+ <path name="Fig63.0"\r
+ description="org.tigris.gef.presentation.FigPoly"\r
+ fill="0"\r
+ fillcolor="white"\r
+ stroke="1"\r
+ strokecolor="black"\r
+ >\r
+ <moveto x="928"\r
+ y="368" />\r
+ <lineto x="563"\r
+ y="368" />\r
+ </path>\r
+ </group>\r
+ <group name="Fig64"\r
+ description="org.argouml.uml.diagram.static_structure.ui.FigClass[1584, 488, 90, 65]pathVisible=false;operationsVisible=true;attributesVisible=true"\r
+ href="-64--88-1-101-3dc093e3:1157f1866b2:-8000:0000000000000983"\r
+ fill="1"\r
+ fillcolor="white"\r
+ stroke="1"\r
+ strokecolor="black"\r
+ >\r
+ <private>\r
+ </private>\r
+ \r
+ <rectangle name="Fig64.0"\r
+ x="1584"\r
+ y="488"\r
+ width="90"\r
+ height="65"\r
+ fill="1"\r
+ fillcolor="white"\r
+ stroke="0"\r
+ strokecolor="black"\r
+ />\r
+ <group name="Fig64.1"\r
+ description="org.argouml.uml.diagram.ui.FigStereotypesCompartment[1584, 488, 90, 2]"\r
+ href="-64--88-1-101-3dc093e3:1157f1866b2:-8000:0000000000000983"\r
+ fill="1"\r
+ fillcolor="white"\r
+ stroke="1"\r
+ strokecolor="black"\r
+ >\r
+ <private>\r
+ </private>\r
+ \r
+ <rectangle name="Fig64.1.0"\r
+ x="1584"\r
+ y="488"\r
+ width="90"\r
+ height="2"\r
+ fill="1"\r
+ fillcolor="white"\r
+ stroke="1"\r
+ strokecolor="black"\r
+ />\r
+ </group>\r
+ <text name="Fig64.2"\r
+ x="1584"\r
+ y="490"\r
+ fill="1"\r
+ fillcolor="white"\r
+ stroke="0"\r
+ strokecolor="red"\r
+ font="Dialog"\r
+ textsize="10"\r
+ >TestReport</text>\r
+ <group name="Fig64.3"\r
+ description="org.argouml.uml.diagram.ui.FigOperationsCompartment[1585, 533, 89, 20]"\r
+ fill="1"\r
+ fillcolor="white"\r
+ stroke="0"\r
+ strokecolor="black"\r
+ >\r
+ <private>\r
+ </private>\r
+ \r
+ <rectangle name="Fig64.3.0"\r
+ x="1585"\r
+ y="533"\r
+ width="89"\r
+ height="20"\r
+ fill="1"\r
+ fillcolor="white"\r
+ stroke="0"\r
+ strokecolor="black"\r
+ />\r
+ <path name="Fig64.3.1"\r
+ description="org.argouml.uml.diagram.ui.FigFeaturesCompartment$FigSeperator"\r
+ fill="1"\r
+ fillcolor="white"\r
+ stroke="1"\r
+ strokecolor="black"\r
+ >\r
+ <moveto x="1585"\r
+ y="533" />\r
+ <lineto x="1674"\r
+ y="533" />\r
+ </path>\r
+ </group>\r
+ <group name="Fig64.4"\r
+ description="org.argouml.uml.diagram.ui.FigAttributesCompartment[1585, 512, 89, 20]"\r
+ fill="1"\r
+ fillcolor="white"\r
+ stroke="0"\r
+ strokecolor="black"\r
+ >\r
+ <private>\r
+ </private>\r
+ \r
+ <rectangle name="Fig64.4.0"\r
+ x="1585"\r
+ y="512"\r
+ width="89"\r
+ height="20"\r
+ fill="1"\r
+ fillcolor="white"\r
+ stroke="0"\r
+ strokecolor="black"\r
+ />\r
+ <path name="Fig64.4.1"\r
+ description="org.argouml.uml.diagram.ui.FigFeaturesCompartment$FigSeperator"\r
+ fill="1"\r
+ fillcolor="white"\r
+ stroke="1"\r
+ strokecolor="black"\r
+ >\r
+ <moveto x="1585"\r
+ y="512" />\r
+ <lineto x="1674"\r
+ y="512" />\r
+ </path>\r
+ </group>\r
+ <rectangle name="Fig64.5"\r
+ x="1584"\r
+ y="488"\r
+ width="90"\r
+ height="65"\r
+ fill="0"\r
+ fillcolor="white"\r
+ stroke="1"\r
+ strokecolor="black"\r
+ />\r
+ </group>\r
+ <group name="Fig65"\r
+ description="org.argouml.uml.diagram.ui.FigAssociation"\r
+ href="-64--88-1-101-3dc093e3:1157f1866b2:-8000:0000000000000985"\r
+ stroke="1"\r
+ strokecolor="black"\r
+ >\r
+ <private>\r
+ sourcePortFig="Fig64.0"\r
+ destPortFig="Fig58.0"\r
+ sourceFigNode="Fig64"\r
+ destFigNode="Fig58"\r
+ </private>\r
+ <path name="Fig65.0"\r
+ description="org.tigris.gef.presentation.FigPoly"\r
+ fill="0"\r
+ fillcolor="white"\r
+ stroke="1"\r
+ strokecolor="black"\r
+ >\r
+ <moveto x="1584"\r
+ y="520" />\r
+ <lineto x="1490"\r
+ y="520" />\r
+ </path>\r
+ </group>\r
+ <text name="Fig66"\r
+ x="24"\r
+ y="16"\r
+ fill="1"\r
+ fillcolor="white"\r
+ stroke="1"\r
+ strokecolor="black"\r
+ font="Serif"\r
+ textsize="10"\r
+ >FILE MANAGEMENT</text>\r
+ <text name="Fig67"\r
+ x="456"\r
+ y="16"\r
+ fill="1"\r
+ fillcolor="white"\r
+ stroke="1"\r
+ strokecolor="black"\r
+ font="Serif"\r
+ textsize="10"\r
+ >DEPLOYMENT</text>\r
+ <text name="Fig68"\r
+ x="1096"\r
+ y="296"\r
+ fill="1"\r
+ fillcolor="white"\r
+ stroke="1"\r
+ strokecolor="black"\r
+ font="Serif"\r
+ textsize="10"\r
+ >TESTING</text>\r
+ <text name="Fig69"\r
+ x="24"\r
+ y="648"\r
+ fill="1"\r
+ fillcolor="white"\r
+ stroke="1"\r
+ strokecolor="black"\r
+ font="Serif"\r
+ textsize="10"\r
+ >PROCESSES</text>\r
+ <group name="Fig70"\r
+ description="org.argouml.uml.diagram.static_structure.ui.FigClass[1208, 72, 275, 67]pathVisible=false;operationsVisible=true;attributesVisible=true"\r
+ href="-64--88-1-101--7f8968dd:1157f72a2bb:-8000:0000000000000951"\r
+ fill="1"\r
+ fillcolor="white"\r
+ stroke="1"\r
+ strokecolor="black"\r
+ >\r
+ <private>\r
+ </private>\r
+ \r
+ <rectangle name="Fig70.0"\r
+ x="1208"\r
+ y="72"\r
+ width="275"\r
+ height="67"\r
+ fill="1"\r
+ fillcolor="white"\r
+ stroke="0"\r
+ strokecolor="black"\r
+ />\r
+ <group name="Fig70.1"\r
+ description="org.argouml.uml.diagram.ui.FigStereotypesCompartment[1208, 72, 275, 2]"\r
+ href="-64--88-1-101--7f8968dd:1157f72a2bb:-8000:0000000000000951"\r
+ fill="1"\r
+ fillcolor="white"\r
+ stroke="1"\r
+ strokecolor="black"\r
+ >\r
+ <private>\r
+ </private>\r
+ \r
+ <rectangle name="Fig70.1.0"\r
+ x="1208"\r
+ y="72"\r
+ width="275"\r
+ height="2"\r
+ fill="1"\r
+ fillcolor="white"\r
+ stroke="1"\r
+ strokecolor="black"\r
+ />\r
+ </group>\r
+ <text name="Fig70.2"\r
+ x="1208"\r
+ y="74"\r
+ fill="1"\r
+ fillcolor="white"\r
+ stroke="0"\r
+ strokecolor="red"\r
+ font="Dialog"\r
+ textsize="10"\r
+ >DatabaseDeployer</text>\r
+ <group name="Fig70.3"\r
+ description="org.argouml.uml.diagram.ui.FigOperationsCompartment[1209, 117, 274, 22]"\r
+ fill="1"\r
+ fillcolor="white"\r
+ stroke="0"\r
+ strokecolor="black"\r
+ >\r
+ <private>\r
+ </private>\r
+ \r
+ <rectangle name="Fig70.3.0"\r
+ x="1209"\r
+ y="117"\r
+ width="274"\r
+ height="22"\r
+ fill="1"\r
+ fillcolor="white"\r
+ stroke="0"\r
+ strokecolor="black"\r
+ />\r
+ <path name="Fig70.3.1"\r
+ description="org.argouml.uml.diagram.ui.FigFeaturesCompartment$FigSeperator"\r
+ fill="1"\r
+ fillcolor="white"\r
+ stroke="1"\r
+ strokecolor="black"\r
+ >\r
+ <moveto x="1209"\r
+ y="117" />\r
+ <lineto x="1483"\r
+ y="117" />\r
+ </path>\r
+ <text name="Fig70.3.2"\r
+ x="1209"\r
+ y="118"\r
+ fill="0"\r
+ fillcolor="white"\r
+ stroke="0"\r
+ strokecolor="black"\r
+ font="Dialog"\r
+ textsize="10"\r
+ >deploy(dump : DatabaseDump,server : String) : void</text>\r
+ </group>\r
+ <group name="Fig70.4"\r
+ description="org.argouml.uml.diagram.ui.FigAttributesCompartment[1209, 96, 274, 20]"\r
+ fill="1"\r
+ fillcolor="white"\r
+ stroke="0"\r
+ strokecolor="black"\r
+ >\r
+ <private>\r
+ </private>\r
+ \r
+ <rectangle name="Fig70.4.0"\r
+ x="1209"\r
+ y="96"\r
+ width="274"\r
+ height="20"\r
+ fill="1"\r
+ fillcolor="white"\r
+ stroke="0"\r
+ strokecolor="black"\r
+ />\r
+ <path name="Fig70.4.1"\r
+ description="org.argouml.uml.diagram.ui.FigFeaturesCompartment$FigSeperator"\r
+ fill="1"\r
+ fillcolor="white"\r
+ stroke="1"\r
+ strokecolor="black"\r
+ >\r
+ <moveto x="1209"\r
+ y="96" />\r
+ <lineto x="1483"\r
+ y="96" />\r
+ </path>\r
+ </group>\r
+ <rectangle name="Fig70.5"\r
+ x="1208"\r
+ y="72"\r
+ width="275"\r
+ height="67"\r
+ fill="0"\r
+ fillcolor="white"\r
+ stroke="1"\r
+ strokecolor="black"\r
+ />\r
+ </group>\r
+ <group name="Fig71"\r
+ description="org.argouml.uml.diagram.static_structure.ui.FigClass[1208, 176, 273, 67]pathVisible=false;operationsVisible=true;attributesVisible=true"\r
+ href="-64--88-1-101--7f8968dd:1157f72a2bb:-8000:0000000000000957"\r
+ fill="1"\r
+ fillcolor="white"\r
+ stroke="1"\r
+ strokecolor="black"\r
+ >\r
+ <private>\r
+ </private>\r
+ \r
+ <rectangle name="Fig71.0"\r
+ x="1208"\r
+ y="176"\r
+ width="273"\r
+ height="67"\r
+ fill="1"\r
+ fillcolor="white"\r
+ stroke="0"\r
+ strokecolor="black"\r
+ />\r
+ <group name="Fig71.1"\r
+ description="org.argouml.uml.diagram.ui.FigStereotypesCompartment[1208, 176, 273, 2]"\r
+ href="-64--88-1-101--7f8968dd:1157f72a2bb:-8000:0000000000000957"\r
+ fill="1"\r
+ fillcolor="white"\r
+ stroke="1"\r
+ strokecolor="black"\r
+ >\r
+ <private>\r
+ </private>\r
+ \r
+ <rectangle name="Fig71.1.0"\r
+ x="1208"\r
+ y="176"\r
+ width="273"\r
+ height="2"\r
+ fill="1"\r
+ fillcolor="white"\r
+ stroke="1"\r
+ strokecolor="black"\r
+ />\r
+ </group>\r
+ <text name="Fig71.2"\r
+ x="1208"\r
+ y="178"\r
+ fill="1"\r
+ fillcolor="white"\r
+ stroke="0"\r
+ strokecolor="red"\r
+ font="Dialog"\r
+ textsize="10"\r
+ >VersionedFileSetDeployer</text>\r
+ <group name="Fig71.3"\r
+ description="org.argouml.uml.diagram.ui.FigOperationsCompartment[1209, 221, 272, 22]"\r
+ fill="1"\r
+ fillcolor="white"\r
+ stroke="0"\r
+ strokecolor="black"\r
+ >\r
+ <private>\r
+ </private>\r
+ \r
+ <rectangle name="Fig71.3.0"\r
+ x="1209"\r
+ y="221"\r
+ width="272"\r
+ height="22"\r
+ fill="1"\r
+ fillcolor="white"\r
+ stroke="0"\r
+ strokecolor="black"\r
+ />\r
+ <path name="Fig71.3.1"\r
+ description="org.argouml.uml.diagram.ui.FigFeaturesCompartment$FigSeperator"\r
+ fill="1"\r
+ fillcolor="white"\r
+ stroke="1"\r
+ strokecolor="black"\r
+ >\r
+ <moveto x="1209"\r
+ y="221" />\r
+ <lineto x="1481"\r
+ y="221" />\r
+ </path>\r
+ <text name="Fig71.3.2"\r
+ x="1209"\r
+ y="222"\r
+ fill="0"\r
+ fillcolor="white"\r
+ stroke="0"\r
+ strokecolor="black"\r
+ font="Dialog"\r
+ textsize="10"\r
+ >deploy(fileSet : VersionedFileSet,dir : File) : void</text>\r
+ </group>\r
+ <group name="Fig71.4"\r
+ description="org.argouml.uml.diagram.ui.FigAttributesCompartment[1209, 200, 272, 20]"\r
+ fill="1"\r
+ fillcolor="white"\r
+ stroke="0"\r
+ strokecolor="black"\r
+ >\r
+ <private>\r
+ </private>\r
+ \r
+ <rectangle name="Fig71.4.0"\r
+ x="1209"\r
+ y="200"\r
+ width="272"\r
+ height="20"\r
+ fill="1"\r
+ fillcolor="white"\r
+ stroke="0"\r
+ strokecolor="black"\r
+ />\r
+ <path name="Fig71.4.1"\r
+ description="org.argouml.uml.diagram.ui.FigFeaturesCompartment$FigSeperator"\r
+ fill="1"\r
+ fillcolor="white"\r
+ stroke="1"\r
+ strokecolor="black"\r
+ >\r
+ <moveto x="1209"\r
+ y="200" />\r
+ <lineto x="1481"\r
+ y="200" />\r
+ </path>\r
+ </group>\r
+ <rectangle name="Fig71.5"\r
+ x="1208"\r
+ y="176"\r
+ width="273"\r
+ height="67"\r
+ fill="0"\r
+ fillcolor="white"\r
+ stroke="1"\r
+ strokecolor="black"\r
+ />\r
+ </group>\r
+ <text name="Fig72"\r
+ x="1096"\r
+ y="16"\r
+ fill="1"\r
+ fillcolor="white"\r
+ stroke="1"\r
+ strokecolor="black"\r
+ font="Serif"\r
+ textsize="10"\r
+ >TOOLS</text>\r
+ <group name="Fig73"\r
+ description="org.argouml.uml.diagram.ui.FigGeneralization"\r
+ href="-64--88-1-101--4a0353a6:1158fc10f03:-8000:000000000000095E"\r
+ stroke="1"\r
+ strokecolor="black"\r
+ >\r
+ <private>\r
+ sourcePortFig="Fig39.0"\r
+ destPortFig="Fig46.0"\r
+ sourceFigNode="Fig39"\r
+ destFigNode="Fig46"\r
+ </private>\r
+ <path name="Fig73.0"\r
+ description="org.tigris.gef.presentation.FigPoly"\r
+ fill="0"\r
+ fillcolor="white"\r
+ stroke="1"\r
+ strokecolor="black"\r
+ >\r
+ <moveto x="496"\r
+ y="104" />\r
+ <lineto x="414"\r
+ y="104" />\r
+ </path>\r
+ </group>\r
+ <group name="Fig74"\r
+ description="org.argouml.uml.diagram.ui.FigGeneralization"\r
+ href="-64--88-1-101--4a0353a6:1158fc10f03:-8000:000000000000095F"\r
+ stroke="1"\r
+ strokecolor="black"\r
+ >\r
+ <private>\r
+ sourcePortFig="Fig44.0"\r
+ destPortFig="Fig42.0"\r
+ sourceFigNode="Fig44"\r
+ destFigNode="Fig42"\r
+ </private>\r
+ <path name="Fig74.0"\r
+ description="org.tigris.gef.presentation.FigPoly"\r
+ fill="0"\r
+ fillcolor="white"\r
+ stroke="1"\r
+ strokecolor="black"\r
+ >\r
+ <moveto x="488"\r
+ y="272" />\r
+ <lineto x="336"\r
+ y="272" />\r
+ <lineto x="336"\r
+ y="233" />\r
+ </path>\r
+ </group>\r
+ <group name="Fig75"\r
+ description="org.argouml.uml.diagram.ui.FigGeneralization"\r
+ href="-64--88-1-101--4a0353a6:1158fc10f03:-8000:0000000000000960"\r
+ stroke="1"\r
+ strokecolor="black"\r
+ >\r
+ <private>\r
+ sourcePortFig="Fig40.0"\r
+ destPortFig="Fig16.0"\r
+ sourceFigNode="Fig40"\r
+ destFigNode="Fig16"\r
+ </private>\r
+ <path name="Fig75.0"\r
+ description="org.tigris.gef.presentation.FigPoly"\r
+ fill="0"\r
+ fillcolor="white"\r
+ stroke="1"\r
+ strokecolor="black"\r
+ >\r
+ <moveto x="840"\r
+ y="305" />\r
+ <lineto x="840"\r
+ y="448" />\r
+ <lineto x="690"\r
+ y="448" />\r
+ </path>\r
+ </group>\r
+ <group name="Fig76"\r
+ description="org.argouml.uml.diagram.ui.FigGeneralization"\r
+ href="-64--88-1-101--4a0353a6:1158fc10f03:-8000:0000000000000961"\r
+ stroke="1"\r
+ strokecolor="black"\r
+ >\r
+ <private>\r
+ sourcePortFig="Fig29.0"\r
+ destPortFig="Fig22.0"\r
+ sourceFigNode="Fig29"\r
+ destFigNode="Fig22"\r
+ </private>\r
+ <path name="Fig76.0"\r
+ description="org.tigris.gef.presentation.FigPoly"\r
+ fill="0"\r
+ fillcolor="white"\r
+ stroke="1"\r
+ strokecolor="black"\r
+ >\r
+ <moveto x="96"\r
+ y="755" />\r
+ <lineto x="96"\r
+ y="800" />\r
+ <lineto x="712"\r
+ y="800" />\r
+ <lineto x="712"\r
+ y="858" />\r
+ </path>\r
+ </group>\r
+ <group name="Fig77"\r
+ description="org.argouml.uml.diagram.ui.FigGeneralization"\r
+ href="-64--88-1-101--4a0353a6:1158fc10f03:-8000:0000000000000962"\r
+ stroke="1"\r
+ strokecolor="black"\r
+ >\r
+ <private>\r
+ sourcePortFig="Fig9.0"\r
+ destPortFig="Fig22.0"\r
+ sourceFigNode="Fig9"\r
+ destFigNode="Fig22"\r
+ </private>\r
+ <path name="Fig77.0"\r
+ description="org.tigris.gef.presentation.FigPoly"\r
+ fill="0"\r
+ fillcolor="white"\r
+ stroke="1"\r
+ strokecolor="black"\r
+ >\r
+ <moveto x="376"\r
+ y="755" />\r
+ <lineto x="376"\r
+ y="800" />\r
+ <lineto x="712"\r
+ y="800" />\r
+ <lineto x="712"\r
+ y="858" />\r
+ </path>\r
+ </group>\r
+ <group name="Fig78"\r
+ description="org.argouml.uml.diagram.ui.FigGeneralization"\r
+ href="-64--88-1-101--4a0353a6:1158fc10f03:-8000:0000000000000963"\r
+ stroke="1"\r
+ strokecolor="black"\r
+ >\r
+ <private>\r
+ sourcePortFig="Fig12.0"\r
+ destPortFig="Fig22.0"\r
+ sourceFigNode="Fig12"\r
+ destFigNode="Fig22"\r
+ </private>\r
+ <path name="Fig78.0"\r
+ description="org.tigris.gef.presentation.FigPoly"\r
+ fill="0"\r
+ fillcolor="white"\r
+ stroke="1"\r
+ strokecolor="black"\r
+ >\r
+ <moveto x="712"\r
+ y="753" />\r
+ <lineto x="712"\r
+ y="858" />\r
+ </path>\r
+ </group>\r
+ <group name="Fig79"\r
+ description="org.argouml.uml.diagram.ui.FigGeneralization"\r
+ href="-64--88-1-101--4a0353a6:1158fc10f03:-8000:0000000000000964"\r
+ stroke="1"\r
+ strokecolor="black"\r
+ >\r
+ <private>\r
+ sourcePortFig="Fig14.0"\r
+ destPortFig="Fig22.0"\r
+ sourceFigNode="Fig14"\r
+ destFigNode="Fig22"\r
+ </private>\r
+ <path name="Fig79.0"\r
+ description="org.tigris.gef.presentation.FigPoly"\r
+ fill="0"\r
+ fillcolor="white"\r
+ stroke="1"\r
+ strokecolor="black"\r
+ >\r
+ <moveto x="1232"\r
+ y="753" />\r
+ <lineto x="1232"\r
+ y="800" />\r
+ <lineto x="712"\r
+ y="800" />\r
+ <lineto x="712"\r
+ y="858" />\r
+ </path>\r
+ </group>\r
+ <group name="Fig80"\r
+ description="org.argouml.uml.diagram.ui.FigGeneralization"\r
+ href="-64--88-1-101--4a0353a6:1158fc10f03:-8000:0000000000000C2A"\r
+ stroke="1"\r
+ strokecolor="black"\r
+ >\r
+ <private>\r
+ sourcePortFig="Fig56.0"\r
+ destPortFig="Fig53.0"\r
+ sourceFigNode="Fig56"\r
+ destFigNode="Fig53"\r
+ </private>\r
+ <path name="Fig80.0"\r
+ description="org.tigris.gef.presentation.FigPoly"\r
+ fill="0"\r
+ fillcolor="white"\r
+ stroke="1"\r
+ strokecolor="black"\r
+ >\r
+ <moveto x="365"\r
+ y="1048" />\r
+ <lineto x="448"\r
+ y="1048" />\r
+ </path>\r
+ </group>\r
+ <group name="Fig81"\r
+ description="org.argouml.uml.diagram.ui.FigGeneralization"\r
+ href="-64--88-1-101--4a0353a6:1158fc10f03:-8000:0000000000000C2B"\r
+ stroke="1"\r
+ strokecolor="black"\r
+ >\r
+ <private>\r
+ sourcePortFig="Fig55.0"\r
+ destPortFig="Fig53.0"\r
+ sourceFigNode="Fig55"\r
+ destFigNode="Fig53"\r
+ </private>\r
+ <path name="Fig81.0"\r
+ description="org.tigris.gef.presentation.FigPoly"\r
+ fill="0"\r
+ fillcolor="white"\r
+ stroke="1"\r
+ strokecolor="black"\r
+ >\r
+ <moveto x="354"\r
+ y="952" />\r
+ <lineto x="392"\r
+ y="952" />\r
+ <lineto x="392"\r
+ y="1048" />\r
+ <lineto x="448"\r
+ y="1048" />\r
+ </path>\r
+ </group>\r
+ <group name="Fig82"\r
+ description="org.argouml.uml.diagram.ui.FigGeneralization"\r
+ href="-64--88-1-101--4a0353a6:1158fc10f03:-8000:0000000000000C2C"\r
+ stroke="1"\r
+ strokecolor="black"\r
+ >\r
+ <private>\r
+ sourcePortFig="Fig57.0"\r
+ destPortFig="Fig53.0"\r
+ sourceFigNode="Fig57"\r
+ destFigNode="Fig53"\r
+ </private>\r
+ <path name="Fig82.0"\r
+ description="org.tigris.gef.presentation.FigPoly"\r
+ fill="0"\r
+ fillcolor="white"\r
+ stroke="1"\r
+ strokecolor="black"\r
+ >\r
+ <moveto x="363"\r
+ y="1080" />\r
+ <lineto x="392"\r
+ y="1080" />\r
+ <lineto x="392"\r
+ y="1048" />\r
+ <lineto x="448"\r
+ y="1048" />\r
+ </path>\r
+ </group>\r
+ <group name="Fig83"\r
+ description="org.argouml.uml.diagram.static_structure.ui.FigClass[280, 432, 90, 65]pathVisible=false;operationsVisible=true;attributesVisible=true"\r
+ href="-64--88-1-101--4a0353a6:1158fc10f03:-8000:0000000000000C44"\r
+ fill="1"\r
+ fillcolor="white"\r
+ stroke="1"\r
+ strokecolor="black"\r
+ >\r
+ <private>\r
+ </private>\r
+ \r
+ <rectangle name="Fig83.0"\r
+ x="280"\r
+ y="432"\r
+ width="90"\r
+ height="65"\r
+ fill="1"\r
+ fillcolor="white"\r
+ stroke="0"\r
+ strokecolor="black"\r
+ />\r
+ <group name="Fig83.1"\r
+ description="org.argouml.uml.diagram.ui.FigStereotypesCompartment[280, 432, 90, 2]"\r
+ href="-64--88-1-101--4a0353a6:1158fc10f03:-8000:0000000000000C44"\r
+ fill="1"\r
+ fillcolor="white"\r
+ stroke="1"\r
+ strokecolor="black"\r
+ >\r
+ <private>\r
+ </private>\r
+ \r
+ <rectangle name="Fig83.1.0"\r
+ x="280"\r
+ y="432"\r
+ width="90"\r
+ height="2"\r
+ fill="1"\r
+ fillcolor="white"\r
+ stroke="1"\r
+ strokecolor="black"\r
+ />\r
+ </group>\r
+ <text name="Fig83.2"\r
+ x="280"\r
+ y="434"\r
+ fill="1"\r
+ fillcolor="white"\r
+ stroke="0"\r
+ strokecolor="red"\r
+ font="Dialog"\r
+ textsize="10"\r
+ >CodeFileSet</text>\r
+ <group name="Fig83.3"\r
+ description="org.argouml.uml.diagram.ui.FigOperationsCompartment[281, 477, 89, 20]"\r
+ fill="1"\r
+ fillcolor="white"\r
+ stroke="0"\r
+ strokecolor="black"\r
+ >\r
+ <private>\r
+ </private>\r
+ \r
+ <rectangle name="Fig83.3.0"\r
+ x="281"\r
+ y="477"\r
+ width="89"\r
+ height="20"\r
+ fill="1"\r
+ fillcolor="white"\r
+ stroke="0"\r
+ strokecolor="black"\r
+ />\r
+ <path name="Fig83.3.1"\r
+ description="org.argouml.uml.diagram.ui.FigFeaturesCompartment$FigSeperator"\r
+ fill="1"\r
+ fillcolor="white"\r
+ stroke="1"\r
+ strokecolor="black"\r
+ >\r
+ <moveto x="281"\r
+ y="477" />\r
+ <lineto x="370"\r
+ y="477" />\r
+ </path>\r
+ </group>\r
+ <group name="Fig83.4"\r
+ description="org.argouml.uml.diagram.ui.FigAttributesCompartment[281, 456, 89, 20]"\r
+ fill="1"\r
+ fillcolor="white"\r
+ stroke="0"\r
+ strokecolor="black"\r
+ >\r
+ <private>\r
+ </private>\r
+ \r
+ <rectangle name="Fig83.4.0"\r
+ x="281"\r
+ y="456"\r
+ width="89"\r
+ height="20"\r
+ fill="1"\r
+ fillcolor="white"\r
+ stroke="0"\r
+ strokecolor="black"\r
+ />\r
+ <path name="Fig83.4.1"\r
+ description="org.argouml.uml.diagram.ui.FigFeaturesCompartment$FigSeperator"\r
+ fill="1"\r
+ fillcolor="white"\r
+ stroke="1"\r
+ strokecolor="black"\r
+ >\r
+ <moveto x="281"\r
+ y="456" />\r
+ <lineto x="370"\r
+ y="456" />\r
+ </path>\r
+ </group>\r
+ <rectangle name="Fig83.5"\r
+ x="280"\r
+ y="432"\r
+ width="90"\r
+ height="65"\r
+ fill="0"\r
+ fillcolor="white"\r
+ stroke="1"\r
+ strokecolor="black"\r
+ />\r
+ </group>\r
+ <group name="Fig84"\r
+ description="org.argouml.uml.diagram.ui.FigGeneralization"\r
+ href="-64--88-1-101--4a0353a6:1158fc10f03:-8000:0000000000000C46"\r
+ stroke="1"\r
+ strokecolor="black"\r
+ >\r
+ <private>\r
+ sourcePortFig="Fig83.0"\r
+ destPortFig="Fig42.0"\r
+ sourceFigNode="Fig83"\r
+ destFigNode="Fig42"\r
+ </private>\r
+ <path name="Fig84.0"\r
+ description="org.tigris.gef.presentation.FigPoly"\r
+ fill="0"\r
+ fillcolor="white"\r
+ stroke="1"\r
+ strokecolor="black"\r
+ >\r
+ <moveto x="336"\r
+ y="432" />\r
+ <lineto x="336"\r
+ y="233" />\r
+ </path>\r
+ </group>\r
+ <text name="Fig85"\r
+ x="24"\r
+ y="384"\r
+ fill="1"\r
+ fillcolor="white"\r
+ stroke="1"\r
+ strokecolor="black"\r
+ font="Serif"\r
+ textsize="10"\r
+ >BUILD</text>\r
+</pgml>\r
+<pgml description="org.argouml.uml.diagram.use_case.ui.UMLUseCaseDiagram|-64--88-0-11--3bcecc2b:113edff40cb:-8000:000000000000071E"\r
+ name="Diagramme de cas d'utilisation 1"\r
+>\r
+</pgml>\r
+<todo>\r
+<todolist>\r
+</todolist>\r
+<resolvedcritics>\r
+</resolvedcritics>\r
+</todo>\r
+</uml>\r
--- /dev/null
+<?xml version="1.0" encoding="UTF-8"?>\r
+<project default="javadoc">\r
+<target name="javadoc">\r
+<javadoc access="public" author="true" classpath="lib/jta.jar;lib/commons-logging.jar;lib/ant-launcher.jar;lib/hibernate3.jar;lib/spring-2.0.6.jar;lib/commons-collections-2.1.1.jar;C:\eclipse\plugins\org.junit_3.8.2.v200706111738\junit.jar;lib/ant.jar;lib/commons-pool.jar;lib/commons-lang.jar;lib/dom4j-1.6.1.jar;lib/log4j-1.2.14.jar;lib/asm.jar;lib/hsqldb.jar;lib/commons-dbcp.jar;lib/cglib-2.1.3.jar;lib/antlr-2.7.6.jar;lib/asm-attrs.jar" destdir="doc" nodeprecated="false" nodeprecatedlist="false" noindex="false" nonavbar="false" notree="false" packagenames="org.argeo.slc.core.structure.tree,org.argeo.slc.ant,org.argeo.slc.ant.test,org.argeo.slc.core,org.argeo.slc.ant.spring,org.argeo.slc.dao.test,org.argeo.slc.ant.structure,org.argeo.slc.core.deploy,org.argeo.slc.core.build,org.argeo.slc.core.test,org.argeo.slc.core.structure,org.argeo.slc.hibernate.test.tree,org.argeo.slc.core.test.tree" source="1.5" sourcepath="src/test/java;src/main/java" splitindex="true" use="true" version="true"/>\r
+</target>\r
+</project>\r
--- /dev/null
+<?xml version="1.0" encoding="UTF-8"?>\r
+<project xmlns="http://maven.apache.org/POM/4.0.0"\r
+ xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"\r
+ xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">\r
+ <modelVersion>4.0.0</modelVersion>\r
+ <groupId>org.argeo.slc</groupId>\r
+ <artifactId>argeo-slc-core</artifactId>\r
+ <name>Argeo SLC Core</name>\r
+ <version>0.5.1-SNAPSHOT</version>\r
+ <description>SLC Core</description>\r
+ <scm>\r
+ <connection>\r
+ scm:svn:https://www.argeo.org/svn/slc/trunk/org.argeo.slc\r
+ </connection>\r
+ <developerConnection>\r
+ scm:svn:https://www.argeo.org/svn/slc/trunk/org.argeo.slc\r
+ </developerConnection>\r
+ <url>https://www.argeo.org/svn/slc/trunk/org.argeo.slc</url>\r
+ </scm>\r
+ <issueManagement>\r
+ <system>Bugzilla</system>\r
+ <url>https://www.argeo.org/bugzilla/</url>\r
+ </issueManagement>\r
+ <licenses>\r
+ <license>\r
+ <name>Apache 2</name>\r
+ <url>http://www.apache.org/licenses/LICENSE-2.0.txt</url>\r
+ <distribution>repo</distribution>\r
+ <comments>A business-friendly OSS license</comments>\r
+ </license>\r
+ </licenses>\r
+ <organization>\r
+ <name>Argeo</name>\r
+ <url>http://www.argeo.org</url>\r
+ </organization>\r
+ <developers>\r
+ <developer>\r
+ <id>mbaudier</id>\r
+ <name>Mathieu Baudier</name>\r
+ <email>mbaudier@argeo.org</email>\r
+ <organization>Argeo</organization>\r
+ <roles>\r
+ <role>architect</role>\r
+ <role>developer</role>\r
+ </roles>\r
+ <timezone>+1</timezone>\r
+ </developer>\r
+ </developers>\r
+ <build>\r
+ <plugins>\r
+ <plugin>\r
+ <groupId>org.apache.maven.plugins</groupId>\r
+ <artifactId>maven-compiler-plugin</artifactId>\r
+ <configuration>\r
+ <source>1.5</source>\r
+ <target>1.5</target>\r
+ </configuration>\r
+ </plugin>\r
+ <plugin>\r
+ <groupId>org.apache.maven.plugins</groupId>\r
+ <artifactId>maven-source-plugin</artifactId>\r
+ <executions>\r
+ <execution>\r
+ <id>attach-sources</id>\r
+ <phase>verify</phase>\r
+ <goals>\r
+ <goal>jar</goal>\r
+ </goals>\r
+ </execution>\r
+ </executions>\r
+ </plugin>\r
+ <plugin>\r
+ <groupId>org.apache.maven.plugins</groupId>\r
+ <artifactId>maven-assembly-plugin</artifactId>\r
+ <configuration>\r
+ <descriptors>\r
+ <descriptor>\r
+ src/assembly/with-dependencies.xml\r
+ </descriptor>\r
+ </descriptors>\r
+ </configuration>\r
+ <executions>\r
+ <execution>\r
+ <id>make-assembly</id>\r
+ <phase>site</phase>\r
+ <goals>\r
+ <goal>attached</goal>\r
+ </goals>\r
+ </execution>\r
+ </executions>\r
+ </plugin>\r
+ </plugins>\r
+ </build>\r
+ <reporting>\r
+ <plugins>\r
+ <plugin>\r
+ <groupId>org.apache.maven.plugins</groupId>\r
+ <artifactId>maven-surefire-report-plugin</artifactId>\r
+ </plugin>\r
+ <plugin>\r
+ <groupId>org.apache.maven.plugins</groupId>\r
+ <artifactId>maven-javadoc-plugin</artifactId>\r
+ </plugin>\r
+ <plugin>\r
+ <groupId>org.apache.maven.plugins</groupId>\r
+ <artifactId>maven-changelog-plugin</artifactId>\r
+ </plugin>\r
+ <plugin>\r
+ <groupId>org.codehaus.mojo</groupId>\r
+ <artifactId>cobertura-maven-plugin</artifactId>\r
+ </plugin>\r
+ </plugins>\r
+ </reporting>\r
+ <dependencies>\r
+ <dependency>\r
+ <groupId>javax.transaction</groupId>\r
+ <artifactId>jta</artifactId>\r
+ <version>1.0.1</version>\r
+ </dependency>\r
+ <dependency>\r
+ <groupId>log4j</groupId>\r
+ <artifactId>log4j</artifactId>\r
+ <version>1.2.14</version>\r
+ </dependency>\r
+ <dependency>\r
+ <groupId>org.hibernate</groupId>\r
+ <artifactId>hibernate</artifactId>\r
+ <version>3.2.5.ga</version>\r
+ </dependency>\r
+ <dependency>\r
+ <groupId>org.springframework</groupId>\r
+ <artifactId>spring</artifactId>\r
+ <version>2.0.6</version>\r
+ </dependency>\r
+ <dependency>\r
+ <groupId>org.apache.ant</groupId>\r
+ <artifactId>ant</artifactId>\r
+ <version>1.7.0</version>\r
+ </dependency>\r
+ <dependency>\r
+ <groupId>org.apache.commons</groupId>\r
+ <artifactId>commons-io</artifactId>\r
+ <version>1.3.2</version>\r
+ </dependency>\r
+ <dependency>\r
+ <groupId>org.dbunit</groupId>\r
+ <artifactId>dbunit</artifactId>\r
+ <version>2.2</version>\r
+ </dependency>\r
+ <dependency>\r
+ <groupId>junit</groupId>\r
+ <artifactId>junit</artifactId>\r
+ <version>3.8.2</version>\r
+ </dependency>\r
+ <dependency>\r
+ <groupId>hsqldb</groupId>\r
+ <artifactId>hsqldb</artifactId>\r
+ <version>1.8.0.9</version>\r
+ </dependency>\r
+ </dependencies>\r
+ <dependencyManagement>\r
+ <dependencies>\r
+ <dependency>\r
+ <groupId>javax.transaction</groupId>\r
+ <artifactId>jta</artifactId>\r
+ <version>1.0.1</version>\r
+ </dependency>\r
+ <dependency>\r
+ <groupId>org.dbunit</groupId>\r
+ <artifactId>dbunit</artifactId>\r
+ <version>2.2</version>\r
+ <exclusions>\r
+ <exclusion>\r
+ <groupId>junit-addons</groupId>\r
+ <artifactId>junit-addons</artifactId>\r
+ </exclusion>\r
+ <exclusion>\r
+ <groupId>poi</groupId>\r
+ <artifactId>poi</artifactId>\r
+ </exclusion>\r
+ </exclusions>\r
+ </dependency>\r
+ </dependencies>\r
+ </dependencyManagement>\r
+ <repositories>\r
+ <repository>\r
+ <id>central</id>\r
+ <url>http://www.argeo.org/maven/repository</url>\r
+ </repository>\r
+ </repositories>\r
+</project>
\ No newline at end of file
--- /dev/null
+<assembly>\r
+ <id>with-dependencies</id>\r
+ <formats>\r
+ <format>zip</format>\r
+ </formats>\r
+ <fileSets>\r
+ <fileSet>\r
+ <directory>src/main/config</directory>\r
+ <outputDirectory></outputDirectory>\r
+ <includes>\r
+ <include>**/*</include>\r
+ </includes>\r
+ </fileSet>\r
+ <fileSet>\r
+ <directory>target</directory>\r
+ <outputDirectory>lib</outputDirectory>\r
+ <includes>\r
+ <include>*.jar</include>\r
+ </includes>\r
+ </fileSet>\r
+ <fileSet>\r
+ <directory>target/site</directory>\r
+ <outputDirectory>doc</outputDirectory>\r
+ <includes>\r
+ <include>**/*</include>\r
+ </includes>\r
+ </fileSet>\r
+ <fileSet>\r
+ <directory>src</directory>\r
+ </fileSet>\r
+ </fileSets>\r
+ <dependencySets>\r
+ <dependencySet>\r
+ <outputDirectory>lib</outputDirectory>\r
+ </dependencySet>\r
+ </dependencySets>\r
+</assembly>
\ No newline at end of file
--- /dev/null
+#! /bin/sh
+
+# Licensed to the Apache Software Foundation (ASF) under one or more
+# contributor license agreements. See the NOTICE file distributed with
+# this work for additional information regarding copyright ownership.
+# The ASF licenses this file to You under the Apache License, Version 2.0
+# (the "License"); you may not use this file except in compliance with
+# the License. You may obtain a copy of the License at
+#
+# http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+
+# Extract launch and ant arguments, (see details below).
+ant_exec_args=
+no_config=false
+use_jikes_default=false
+ant_exec_debug=false
+show_help=false
+for arg in "$@" ; do
+ if [ "$arg" = "--noconfig" ] ; then
+ no_config=true
+ elif [ "$arg" = "--usejikes" ] ; then
+ use_jikes_default=true
+ elif [ "$arg" = "--execdebug" ] ; then
+ ant_exec_debug=true
+ elif [ my"$arg" = my"--h" -o my"$arg" = my"--help" ] ; then
+ show_help=true
+ ant_exec_args="$ant_exec_args -h"
+ else
+ if [ my"$arg" = my"-h" -o my"$arg" = my"-help" ] ; then
+ show_help=true
+ fi
+ ant_exec_args="$ant_exec_args \"$arg\""
+ fi
+done
+
+# Source/default ant configuration
+if $no_config ; then
+ rpm_mode=false
+ usejikes=$use_jikes_default
+else
+ # load system-wide ant configuration (ONLY if ANT_HOME has NOT been set)
+ if [ -z "$ANT_HOME" -o "$ANT_HOME" = "/usr/share/ant" ]; then
+ if [ -f "/etc/ant.conf" ] ; then
+ . /etc/ant.conf
+ fi
+ fi
+
+ # load user ant configuration
+ if [ -f "$HOME/.ant/ant.conf" ] ; then
+ . $HOME/.ant/ant.conf
+ fi
+ if [ -f "$HOME/.antrc" ] ; then
+ . "$HOME/.antrc"
+ fi
+
+ # provide default configuration values
+ if [ -z "$rpm_mode" ] ; then
+ rpm_mode=false
+ fi
+ if [ -z "$usejikes" ] ; then
+ usejikes=$use_jikes_default
+ fi
+fi
+
+# Setup Java environment in rpm mode
+if $rpm_mode ; then
+ if [ -f /usr/share/java-utils/java-functions ] ; then
+ . /usr/share/java-utils/java-functions
+ set_jvm
+ set_javacmd
+ fi
+fi
+
+# OS specific support. $var _must_ be set to either true or false.
+cygwin=false;
+darwin=false;
+case "`uname`" in
+ CYGWIN*) cygwin=true ;;
+ Darwin*) darwin=true
+ if [ -z "$JAVA_HOME" ] ; then
+ JAVA_HOME=/System/Library/Frameworks/JavaVM.framework/Home
+ fi
+ ;;
+esac
+
+if [ -z "$ANT_HOME" -o ! -d "$ANT_HOME" ] ; then
+ ## resolve links - $0 may be a link to ant's home
+ PRG="$0"
+ progname=`basename "$0"`
+
+ # need this for relative symlinks
+ while [ -h "$PRG" ] ; do
+ ls=`ls -ld "$PRG"`
+ link=`expr "$ls" : '.*-> \(.*\)$'`
+ if expr "$link" : '/.*' > /dev/null; then
+ PRG="$link"
+ else
+ PRG=`dirname "$PRG"`"/$link"
+ fi
+ done
+
+ ANT_HOME=`dirname "$PRG"`/..
+
+ # make it fully qualified
+ ANT_HOME=`cd "$ANT_HOME" && pwd`
+fi
+
+# For Cygwin, ensure paths are in UNIX format before anything is touched
+if $cygwin ; then
+ [ -n "$ANT_HOME" ] &&
+ ANT_HOME=`cygpath --unix "$ANT_HOME"`
+ [ -n "$JAVA_HOME" ] &&
+ JAVA_HOME=`cygpath --unix "$JAVA_HOME"`
+fi
+
+# set ANT_LIB location
+ANT_LIB="${ANT_HOME}/lib"
+
+if [ -z "$JAVACMD" ] ; then
+ if [ -n "$JAVA_HOME" ] ; then
+ # IBM's JDK on AIX uses strange locations for the executables
+ if [ -x "$JAVA_HOME/jre/sh/java" ] ; then
+ JAVACMD="$JAVA_HOME/jre/sh/java"
+ elif [ -x "$JAVA_HOME/jre/bin/java" ] ; then
+ JAVACMD="$JAVA_HOME/jre/bin/java"
+ else
+ JAVACMD="$JAVA_HOME/bin/java"
+ fi
+ else
+ JAVACMD=`which java 2> /dev/null `
+ if [ -z "$JAVACMD" ] ; then
+ JAVACMD=java
+ fi
+ fi
+fi
+
+if [ ! -x "$JAVACMD" ] ; then
+ echo "Error: JAVA_HOME is not defined correctly."
+ echo " We cannot execute $JAVACMD"
+ exit 1
+fi
+
+# Build local classpath using just the launcher in non-rpm mode or
+# use the Jpackage helper in rpm mode with basic and default jars
+# specified in the ant.conf configuration. Because the launcher is
+# used, libraries linked in ANT_HOME/lib will also be included, but this
+# is discouraged as it is not java-version safe. A user should
+# request optional jars and their dependencies via the OPT_JAR_LIST
+# variable
+if $rpm_mode && [ -x /usr/bin/build-classpath ] ; then
+ LOCALCLASSPATH="$(/usr/bin/build-classpath ant ant-launcher jaxp_parser_impl xml-commons-apis)"
+
+ # If no optional jars have been specified then build the default list
+ if [ -z "$OPT_JAR_LIST" ] ; then
+ for file in /etc/ant.d/*; do
+ if [ -f "$file" ]; then
+ case "$file" in
+ *~) ;;
+ *#*) ;;
+ *.rpmsave) ;;
+ *.rpmnew) ;;
+ *)
+ for dep in `cat "$file"`; do
+ case "$OPT_JAR_LIST" in
+ *"$dep"*) ;;
+ *) OPT_JAR_LIST="$OPT_JAR_LIST${OPT_JAR_LIST:+ }$dep"
+ esac
+ done
+ esac
+ fi
+ done
+ fi
+
+ # If the user requested to try to add some other jars to the classpath
+ if [ -n "$OPT_JAR_LIST" ] ; then
+ _OPTCLASSPATH="$(/usr/bin/build-classpath $OPT_JAR_LIST 2> /dev/null)"
+ if [ -n "$_OPTCLASSPATH" ] ; then
+ LOCALCLASSPATH="$LOCALCLASSPATH:$_OPTCLASSPATH"
+ fi
+ fi
+
+ # Explicitly add javac path to classpath, assume JAVA_HOME set
+ # properly in rpm mode
+ if [ -f "$JAVA_HOME/lib/tools.jar" ] ; then
+ LOCALCLASSPATH="$LOCALCLASSPATH:$JAVA_HOME/lib/tools.jar"
+ fi
+ if [ -f "$JAVA_HOME/lib/classes.zip" ] ; then
+ LOCALCLASSPATH="$LOCALCLASSPATH:$JAVA_HOME/lib/classes.zip"
+ fi
+
+ # if CLASSPATH_OVERRIDE env var is set, LOCALCLASSPATH will be
+ # user CLASSPATH first and ant-found jars after.
+ # In that case, the user CLASSPATH will override ant-found jars
+ #
+ # if CLASSPATH_OVERRIDE is not set, we'll have the normal behaviour
+ # with ant-found jars first and user CLASSPATH after
+ if [ -n "$CLASSPATH" ] ; then
+ # merge local and specified classpath
+ if [ -z "$LOCALCLASSPATH" ] ; then
+ LOCALCLASSPATH="$CLASSPATH"
+ elif [ -n "$CLASSPATH_OVERRIDE" ] ; then
+ LOCALCLASSPATH="$CLASSPATH:$LOCALCLASSPATH"
+ else
+ LOCALCLASSPATH="$LOCALCLASSPATH:$CLASSPATH"
+ fi
+
+ # remove class path from launcher -cp option
+ CLASSPATH=""
+ fi
+else
+ # not using rpm_mode; use launcher to determine classpaths
+ if [ -z "$LOCALCLASSPATH" ] ; then
+ LOCALCLASSPATH=$ANT_LIB/ant-launcher.jar
+ else
+ LOCALCLASSPATH=$ANT_LIB/ant-launcher.jar:$LOCALCLASSPATH
+ fi
+fi
+
+if [ -n "$JAVA_HOME" ] ; then
+ # OSX hack to make Ant work with jikes
+ if $darwin ; then
+ OSXHACK="${JAVA_HOME}/../Classes"
+ if [ -d "${OSXHACK}" ] ; then
+ for i in "${OSXHACK}"/*.jar
+ do
+ JIKESPATH="$JIKESPATH:$i"
+ done
+ fi
+ fi
+fi
+
+# Allow Jikes support (off by default)
+if $usejikes; then
+ ANT_OPTS="$ANT_OPTS -Dbuild.compiler=jikes"
+fi
+
+# For Cygwin, switch paths to appropriate format before running java
+# For PATHs convert to unix format first, then to windows format to ensure
+# both formats are supported. Probably this will fail on directories with ;
+# in the name in the path. Let's assume that paths containing ; are more
+# rare than windows style paths on cygwin.
+if $cygwin; then
+ if [ "$OS" = "Windows_NT" ] && cygpath -m .>/dev/null 2>/dev/null ; then
+ format=mixed
+ else
+ format=windows
+ fi
+ ANT_HOME=`cygpath --$format "$ANT_HOME"`
+ ANT_LIB=`cygpath --$format "$ANT_LIB"`
+ JAVA_HOME=`cygpath --$format "$JAVA_HOME"`
+ LCP_TEMP=`cygpath --path --unix "$LOCALCLASSPATH"`
+ LOCALCLASSPATH=`cygpath --path --$format "$LCP_TEMP"`
+ if [ -n "$CLASSPATH" ] ; then
+ CP_TEMP=`cygpath --path --unix "$CLASSPATH"`
+ CLASSPATH=`cygpath --path --$format "$CP_TEMP"`
+ fi
+ CYGHOME=`cygpath --$format "$HOME"`
+fi
+
+# Show script help if requested
+if $show_help ; then
+ echo $0 '[script options] [options] [target [target2 [target3] ..]]'
+ echo 'Script Options:'
+ echo ' --help, --h print this message and ant help'
+ echo ' --noconfig suppress sourcing of /etc/ant.conf,'
+ echo ' $HOME/.ant/ant.conf, and $HOME/.antrc'
+ echo ' configuration files'
+ echo ' --usejikes enable use of jikes by default, unless'
+ echo ' set explicitly in configuration files'
+ echo ' --execdebug print ant exec line generated by this'
+ echo ' launch script'
+ echo ' '
+fi
+# add a second backslash to variables terminated by a backslash under cygwin
+if $cygwin; then
+ case "$ANT_HOME" in
+ *\\ )
+ ANT_HOME="$ANT_HOME\\"
+ ;;
+ esac
+ case "$CYGHOME" in
+ *\\ )
+ CYGHOME="$CYGHOME\\"
+ ;;
+ esac
+ case "$JIKESPATH" in
+ *\\ )
+ JIKESPATH="$JIKESPATH\\"
+ ;;
+ esac
+ case "$LOCALCLASSPATH" in
+ *\\ )
+ LOCALCLASSPATH="$LOCALCLASSPATH\\"
+ ;;
+ esac
+ case "$CLASSPATH" in
+ *\\ )
+ CLASSPATH="$CLASSPATH\\"
+ ;;
+ esac
+fi
+# Execute ant using eval/exec to preserve spaces in paths,
+# java options, and ant args
+ant_sys_opts=
+if [ -n "$CYGHOME" ]; then
+ if [ -n "$JIKESPATH" ]; then
+ ant_sys_opts="-Djikes.class.path=\"$JIKESPATH\" -Dcygwin.user.home=\"$CYGHOME\""
+ else
+ ant_sys_opts="-Dcygwin.user.home=\"$CYGHOME\""
+ fi
+else
+ if [ -n "$JIKESPATH" ]; then
+ ant_sys_opts="-Djikes.class.path=\"$JIKESPATH\""
+ fi
+fi
+ant_exec_command="exec \"$JAVACMD\" $ANT_OPTS -classpath \"$LOCALCLASSPATH\" -Dant.home=\"$ANT_HOME\" -Dant.library.dir=\"$ANT_LIB\" $ant_sys_opts org.apache.tools.ant.launch.Launcher $ANT_ARGS -cp \"$CLASSPATH\" $ant_exec_args"
+if $ant_exec_debug ; then
+ echo $ant_exec_command
+fi
+eval $ant_exec_command
--- /dev/null
+@echo off\r
+\r
+REM Licensed to the Apache Software Foundation (ASF) under one or more\r
+REM contributor license agreements. See the NOTICE file distributed with\r
+REM this work for additional information regarding copyright ownership.\r
+REM The ASF licenses this file to You under the Apache License, Version 2.0\r
+REM (the "License"); you may not use this file except in compliance with\r
+REM the License. You may obtain a copy of the License at\r
+REM \r
+REM http://www.apache.org/licenses/LICENSE-2.0\r
+REM \r
+REM Unless required by applicable law or agreed to in writing, software\r
+REM distributed under the License is distributed on an "AS IS" BASIS,\r
+REM WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r
+REM See the License for the specific language governing permissions and\r
+REM limitations under the License.\r
+\r
+REM This is an inordinately troublesome piece of code, particularly because it\r
+REM tries to work on both Win9x and WinNT-based systems. If we could abandon '9x\r
+REM support, things would be much easier, but sadly, it is not yet time.\r
+REM Be cautious about editing this, and only add WinNT specific stuff in code that\r
+REM only runs on WinNT.\r
+\r
+if "%HOME%"=="" goto homeDrivePathPre\r
+if exist "%HOME%\antrc_pre.bat" call "%HOME%\antrc_pre.bat"\r
+\r
+:homeDrivePathPre\r
+if "%HOMEDRIVE%%HOMEPATH%"=="" goto userProfilePre\r
+if "%HOMEDRIVE%%HOMEPATH%"=="%HOME%" goto userProfilePre\r
+if exist "%HOMEDRIVE%%HOMEPATH%\antrc_pre.bat" call "%HOMEDRIVE%%HOMEPATH%\antrc_pre.bat"\r
+\r
+:userProfilePre\r
+if "%USERPROFILE%"=="" goto alpha\r
+if "%USERPROFILE%"=="%HOME%" goto alpha\r
+if "%USERPROFILE%"=="%HOMEDRIVE%%HOMEPATH%" goto alpha\r
+if exist "%USERPROFILE%\antrc_pre.bat" call "%USERPROFILE%\antrc_pre.bat"\r
+\r
+:alpha\r
+\r
+if "%OS%"=="Windows_NT" @setlocal\r
+if "%OS%"=="WINNT" @setlocal\r
+\r
+if "%ANT_HOME%"=="" goto setDefaultAntHome\r
+\r
+:stripAntHome\r
+if not _%ANT_HOME:~-1%==_\ goto checkClasspath\r
+set ANT_HOME=%ANT_HOME:~0,-1%\r
+goto stripAntHome\r
+\r
+:setDefaultAntHome\r
+rem %~dp0 is expanded pathname of the current script under NT\r
+set ANT_HOME=%~dp0..\r
+\r
+:checkClasspath\r
+set _USE_CLASSPATH=yes\r
+rem CLASSPATH must not be used if it is equal to ""\r
+if "%CLASSPATH%"=="""" set _USE_CLASSPATH=no\r
+if "%CLASSPATH%"=="" set _USE_CLASSPATH=no\r
+\r
+rem Slurp the command line arguments. This loop allows for an unlimited number\r
+rem of arguments (up to the command line limit, anyway).\r
+set ANT_CMD_LINE_ARGS=%1\r
+if ""%1""=="""" goto doneStart\r
+shift\r
+:setupArgs\r
+if ""%1""=="""" goto doneStart\r
+if ""%1""==""-noclasspath"" goto clearclasspath\r
+set ANT_CMD_LINE_ARGS=%ANT_CMD_LINE_ARGS% %1\r
+shift\r
+goto setupArgs\r
+\r
+rem here is there is a -noclasspath in the options\r
+:clearclasspath\r
+set _USE_CLASSPATH=no\r
+shift\r
+goto setupArgs\r
+\r
+rem This label provides a place for the argument list loop to break out\r
+rem and for NT handling to skip to.\r
+\r
+:doneStart\r
+\r
+if _USE_CLASSPATH==no goto findAntHome\r
+\r
+:stripClasspath\r
+if not _%CLASSPATH:~-1%==_\ goto findAntHome\r
+set CLASSPATH=%CLASSPATH:~0,-1%\r
+goto stripClasspath\r
+\r
+:findAntHome\r
+rem find ANT_HOME if it does not exist due to either an invalid value passed\r
+rem by the user or the %0 problem on Windows 9x\r
+if exist "%ANT_HOME%\lib\ant.jar" goto checkJava\r
+\r
+rem check for ant in Program Files\r
+if not exist "%ProgramFiles%\ant" goto checkSystemDrive\r
+set ANT_HOME=%ProgramFiles%\ant\r
+goto checkJava\r
+\r
+:checkSystemDrive\r
+rem check for ant in root directory of system drive\r
+if not exist %SystemDrive%\ant\lib\ant.jar goto checkCDrive\r
+set ANT_HOME=%SystemDrive%\ant\r
+goto checkJava\r
+\r
+:checkCDrive\r
+rem check for ant in C:\ant for Win9X users\r
+if not exist C:\ant\lib\ant.jar goto noAntHome\r
+set ANT_HOME=C:\ant\r
+goto checkJava\r
+\r
+:noAntHome\r
+echo ANT_HOME is set incorrectly or ant could not be located. Please set ANT_HOME.\r
+goto end\r
+\r
+:checkJava\r
+set _JAVACMD=%JAVACMD%\r
+\r
+if "%JAVA_HOME%" == "" goto noJavaHome\r
+if not exist "%JAVA_HOME%\bin\java.exe" goto noJavaHome\r
+if "%_JAVACMD%" == "" set _JAVACMD=%JAVA_HOME%\bin\java.exe\r
+goto checkJikes\r
+\r
+:noJavaHome\r
+if "%_JAVACMD%" == "" set _JAVACMD=java.exe\r
+\r
+:checkJikes\r
+if not "%JIKESPATH%"=="" goto runAntWithJikes\r
+\r
+:runAnt\r
+if "%_USE_CLASSPATH%"=="no" goto runAntNoClasspath\r
+:runAntWithClasspath\r
+"%_JAVACMD%" %ANT_OPTS% -classpath "%ANT_HOME%\lib\ant-launcher.jar" "-Dant.home=%ANT_HOME%" org.apache.tools.ant.launch.Launcher %ANT_ARGS% -cp "%CLASSPATH%" %ANT_CMD_LINE_ARGS%\r
+rem Check the error code of the Ant build\r
+if not "%OS%"=="Windows_NT" goto onError\r
+set ANT_ERROR=%ERRORLEVEL%\r
+goto end\r
+\r
+:runAntNoClasspath\r
+"%_JAVACMD%" %ANT_OPTS% -classpath "%ANT_HOME%\lib\ant-launcher.jar" "-Dant.home=%ANT_HOME%" org.apache.tools.ant.launch.Launcher %ANT_ARGS% %ANT_CMD_LINE_ARGS%\r
+rem Check the error code of the Ant build\r
+if not "%OS%"=="Windows_NT" goto onError\r
+set ANT_ERROR=%ERRORLEVEL%\r
+goto end\r
+\r
+:runAntWithJikes\r
+\r
+if not _%JIKESPATH:~-1%==_\ goto checkJikesAndClasspath\r
+set JIKESPATH=%JIKESPATH:~0,-1%\r
+goto runAntWithJikes\r
+\r
+:checkJikesAndClasspath\r
+\r
+if "%_USE_CLASSPATH%"=="no" goto runAntWithJikesNoClasspath\r
+\r
+:runAntWithJikesAndClasspath\r
+"%_JAVACMD%" %ANT_OPTS% -classpath "%ANT_HOME%\lib\ant-launcher.jar" "-Dant.home=%ANT_HOME%" "-Djikes.class.path=%JIKESPATH%" org.apache.tools.ant.launch.Launcher %ANT_ARGS% -cp "%CLASSPATH%" %ANT_CMD_LINE_ARGS%\r
+rem Check the error code of the Ant build\r
+if not "%OS%"=="Windows_NT" goto onError\r
+set ANT_ERROR=%ERRORLEVEL%\r
+goto end\r
+\r
+:runAntWithJikesNoClasspath\r
+"%_JAVACMD%" %ANT_OPTS% -classpath "%ANT_HOME%\lib\ant-launcher.jar" "-Dant.home=%ANT_HOME%" "-Djikes.class.path=%JIKESPATH%" org.apache.tools.ant.launch.Launcher %ANT_ARGS% %ANT_CMD_LINE_ARGS%\r
+rem Check the error code of the Ant build\r
+if not "%OS%"=="Windows_NT" goto onError\r
+set ANT_ERROR=%ERRORLEVEL%\r
+goto end\r
+\r
+:onError\r
+rem Windows 9x way of checking the error code. It matches via brute force.\r
+for %%i in (1 10 100) do set err%%i=\r
+for %%i in (0 1 2) do if errorlevel %%i00 set err100=%%i\r
+if %err100%==2 goto onError200\r
+if %err100%==0 set err100=\r
+for %%i in (0 1 2 3 4 5 6 7 8 9) do if errorlevel %err100%%%i0 set err10=%%i\r
+if "%err100%"=="" if %err10%==0 set err10=\r
+:onError1\r
+for %%i in (0 1 2 3 4 5 6 7 8 9) do if errorlevel %err100%%err10%%%i set err1=%%i\r
+goto onErrorEnd\r
+:onError200\r
+for %%i in (0 1 2 3 4 5) do if errorlevel 2%%i0 set err10=%%i\r
+if err10==5 for %%i in (0 1 2 3 4 5) do if errorlevel 25%%i set err1=%%i\r
+if not err10==5 goto onError1\r
+:onErrorEnd\r
+set ANT_ERROR=%err100%%err10%%err1%\r
+for %%i in (1 10 100) do set err%%i=\r
+\r
+:end\r
+rem bug ID 32069: resetting an undefined env variable changes the errorlevel.\r
+if not "%_JAVACMD%"=="" set _JAVACMD=\r
+if not "%_ANT_CMD_LINE_ARGS%"=="" set ANT_CMD_LINE_ARGS=\r
+\r
+if "%ANT_ERROR%"=="0" goto mainEnd\r
+\r
+rem Set the return code if we are not in NT. We can only set\r
+rem a value of 1, but it's better than nothing.\r
+if not "%OS%"=="Windows_NT" echo 1 > nul | choice /n /c:1\r
+\r
+rem Set the ERRORLEVEL if we are running NT.\r
+if "%OS%"=="Windows_NT" color 00\r
+\r
+goto omega\r
+\r
+:mainEnd\r
+\r
+rem If there were no errors, we run the post script.\r
+if "%OS%"=="Windows_NT" @endlocal\r
+if "%OS%"=="WINNT" @endlocal\r
+\r
+if "%HOME%"=="" goto homeDrivePathPost\r
+if exist "%HOME%\antrc_post.bat" call "%HOME%\antrc_post.bat"\r
+\r
+:homeDrivePathPost\r
+if "%HOMEDRIVE%%HOMEPATH%"=="" goto userProfilePost\r
+if "%HOMEDRIVE%%HOMEPATH%"=="%HOME%" goto userProfilePost\r
+if exist "%HOMEDRIVE%%HOMEPATH%\antrc_post.bat" call "%HOMEDRIVE%%HOMEPATH%\antrc_post.bat"\r
+\r
+:userProfilePost\r
+if "%USERPROFILE%"=="" goto omega\r
+if "%USERPROFILE%"=="%HOME%" goto omega\r
+if "%USERPROFILE%"=="%HOMEDRIVE%%HOMEPATH%" goto omega\r
+if exist "%USERPROFILE%\antrc_post.bat" call "%USERPROFILE%\antrc_post.bat"\r
+\r
+:omega\r
+\r
--- /dev/null
+<!--\r
+$HeadURL$\r
+$Revision$\r
+$LastChangedDate$\r
+-->\r
+<project>\r
+ <macrodef name="compile">\r
+ <attribute name="srcdir" />\r
+ <attribute name="artifact" />\r
+ <attribute name="classpathref" default="cp.main" />\r
+ <sequential>\r
+ <mkdir dir="${compile.base}/@{artifact}" />\r
+ <javac destdir="${compile.base}/@{artifact}"\r
+ srcdir="@{srcdir}" debug="on" fork="true"\r
+ includeantruntime="false">\r
+ <classpath>\r
+ <path refid="@{classpathref}" />\r
+ </classpath>\r
+ </javac>\r
+ </sequential>\r
+ </macrodef>\r
+\r
+ <macrodef name="createJar">\r
+ <attribute name="srcdir" />\r
+ <attribute name="artifact" />\r
+ <sequential>\r
+ <jar destfile="${dist.jar}/@{artifact}.jar">\r
+ <zipfileset dir="@{srcdir}">\r
+ <exclude name="**/*.java" />\r
+ <exclude name="**/package.html" />\r
+ <include name="**/*.*" />\r
+ </zipfileset>\r
+ <zipfileset dir="${compile.base}/@{artifact}">\r
+ <include name="**/*.*" />\r
+ </zipfileset>\r
+ <manifest>\r
+ <attribute name="Specification-Title"\r
+ value="${package.prefix}" />\r
+ <attribute name="Specification-Version"\r
+ value="${package.version}" />\r
+ <attribute name="Implementation-Title"\r
+ value="@{artifact}" />\r
+ <attribute name="Implementation-Version"\r
+ value="${package.releaseId}" />\r
+ </manifest>\r
+ </jar>\r
+ </sequential>\r
+ </macrodef>\r
+ \r
+ <macrodef name="createSourcesJar">\r
+ <attribute name="srcdir" />\r
+ <attribute name="artifact" />\r
+ <sequential>\r
+ <jar destfile="${dist.lib-src}/@{artifact}-sources.jar">\r
+ <zipfileset dir="@{srcdir}">\r
+ <include name="**/*" />\r
+ </zipfileset>\r
+ <manifest>\r
+ <attribute name="Specification-Title"\r
+ value="${package.prefix} Sources" />\r
+ <attribute name="Specification-Version"\r
+ value="${package.version}" />\r
+ <attribute name="Implementation-Title"\r
+ value="@{artifact} Sources" />\r
+ <attribute name="Implementation-Version"\r
+ value="${package.releaseId}" />\r
+ </manifest>\r
+ </jar>\r
+ </sequential>\r
+ </macrodef>\r
+\r
+ <macrodef name="api">\r
+ <attribute name="srcdir" />\r
+ <attribute name="artifact" />\r
+ <attribute name="classpathref" default="cp.main" />\r
+ <element name="links" optional="true" />\r
+ <sequential>\r
+ <javadoc access="protected"\r
+ destdir="${dist.doc}/@{artifact}/api" source="1.5"\r
+ sourcepath="@{srcDir}"\r
+ doctitle="API of @{artifact} (v${package.releaseId})"\r
+ windowtitle="@{artifact} v${package.version}">\r
+ <classpath>\r
+ <path refid="@{classpathref}" />\r
+ </classpath>\r
+ <link href="http://java.sun.com/j2se/1.5.0/docs/api/" />\r
+ <link\r
+ href="http://static.springframework.org/spring/docs/2.0.x/api/" />\r
+ <link href="http://www.hibernate.org/hib_docs/v3/api/" />\r
+ <links />\r
+ </javadoc>\r
+ </sequential>\r
+ </macrodef>\r
+</project>
\ No newline at end of file
--- /dev/null
+<!--\r
+$HeadURL$\r
+$Revision$\r
+$LastChangedDate$\r
+-->\r
+<project default="all">\r
+ <!-- TO BE OVERRIDDEN -->\r
+ <property name="package.type" value="I" />\r
+ <property name="main.artifact" value="${package.prefix}" />\r
+ <property name="test.artifact" value="${package.prefix}-test" />\r
+\r
+ <property name="main.srcdir" location="src/main/java" />\r
+ <property name="main.libdir" location="lib" />\r
+ <property name="main.libdir-src" location="lib-src" />\r
+ <property name="test.srcdir" location="src/test/java" />\r
+\r
+ <property name="package.base" location="target/package/" />\r
+\r
+ <property name="dist.base" location="target/dist/" />\r
+ <property name="dist.doc" location="${dist.base}/doc" />\r
+ <property name="dist.lib" location="${dist.base}/lib" />\r
+ <property name="dist.lib-src" location="${dist.base}/lib-src" />\r
+ <property name="dist.build" location="${dist.base}/build" />\r
+ <property name="dist.junit" location="${dist.build}/junit" />\r
+ <property name="dist.appli" location="${dist.base}/appli" />\r
+\r
+ <property name="dist.jar" location="target/jar" />\r
+\r
+ <property name="compile.base" location="target/compile" />\r
+ <property name="slc.base" location="target/slc" />\r
+\r
+ <path id="cp.main">\r
+ <fileset dir="${main.libdir}">\r
+ <include name="**/*.jar" />\r
+ </fileset>\r
+ </path>\r
+\r
+ <path id="cp.test">\r
+ <fileset dir="${main.libdir}">\r
+ <include name="**/*.jar" />\r
+ </fileset>\r
+ <pathelement location="${dist.jar}/${main.artifact}.jar" />\r
+ </path>\r
+\r
+ <import file="slc-factory-macrodefs.xml" />\r
+\r
+ <target name="all" depends="dist.package">\r
+ <echo message="Build of ${package.name} completed" />\r
+ <record name="${dist.build}/build.log" action="stop" />\r
+ </target>\r
+\r
+ <target name="basePackage" depends="dist.basePackage">\r
+ <echo message="Build of ${package.name} completed" />\r
+ <record name="${dist.build}/build.log" action="stop" />\r
+ </target>\r
+\r
+ <target name="clean">\r
+ <delete dir="${dist.jar}" />\r
+ <delete dir="${slc.base}" />\r
+ <delete dir="${dist.base}" />\r
+ <delete dir="${package.base}" />\r
+ <delete dir="${compile.base}" />\r
+ </target>\r
+\r
+\r
+ <target name="init">\r
+ <!-- To be overriden -->\r
+ </target>\r
+\r
+ <target name="init.internal">\r
+ <mkdir dir="${dist.build}"/>\r
+ <record name="${dist.build}/build.log" action="start" append="true"/>\r
+ <fail unless="package.version"\r
+ message="Property 'package.version' must be set" />\r
+ <fail unless="package.prefix"\r
+ message="Property 'package.prefix' must be set" />\r
+\r
+ <tstamp>\r
+ <format property="package.tstamp" pattern="yyMMddHHmmss" />\r
+ </tstamp>\r
+ <property name="package.releaseId"\r
+ value="${package.version}.${package.tstamp}${package.type}" />\r
+\r
+ <property name="package.name"\r
+ value="${package.prefix}-${package.releaseId}" />\r
+ <property name="basePackage.name" value="${package.prefix}-base" />\r
+\r
+ <mkdir dir="${dist.jar}" />\r
+ <mkdir dir="${slc.base}" />\r
+ <mkdir dir="${dist.base}" />\r
+ <mkdir dir="${dist.lib-src}" />\r
+ <mkdir dir="${package.base}" />\r
+ <mkdir dir="${compile.base}" />\r
+\r
+ <echo message="Build of ${package.name} started." />\r
+ </target>\r
+\r
+ <target name="init.slcbase" if="slc.basePackage">\r
+ <unzip dest="${slc.base}" src="${slc.basePackage}" />\r
+\r
+ <copy todir="${dist.base}" overwrite="true" verbose="true">\r
+ <fileset dir="${slc.base}">\r
+ <include name="doc/argeo-slc/**" />\r
+ <include name="bin/*" />\r
+ </fileset>\r
+ </copy>\r
+\r
+ <copy todir="${main.libdir}" overwrite="true" verbose="true">\r
+ <fileset dir="${slc.base}/lib">\r
+ <include name="*" />\r
+ </fileset>\r
+ </copy>\r
+ <copy todir="${main.libdir-src}" overwrite="true" verbose="true">\r
+ <fileset dir="${slc.base}/lib-src">\r
+ <include name="*" />\r
+ </fileset>\r
+ </copy>\r
+ </target>\r
+\r
+ <target name="build.main" depends="init.internal,init.slcbase,init">\r
+ <compile artifact="${main.artifact}" srcdir="${main.srcdir}" />\r
+ </target>\r
+\r
+ <target name="jar.main" depends="build.main">\r
+ <createJar artifact="${main.artifact}" srcdir="${main.srcdir}" />\r
+ </target>\r
+\r
+ <target name="build.test" depends="jar.main">\r
+ <compile artifact="${test.artifact}"\r
+ srcdir="${test.srcdir}"\r
+ classpathref="cp.test" />\r
+ </target>\r
+\r
+ <target name="jar.sources" unless="flag.noSources">\r
+ <createSourcesJar artifact="${main.artifact}" srcdir="${main.srcdir}" />\r
+ </target>\r
+\r
+ <target name="jar.test" depends="build.test">\r
+ <createJar artifact="${test.artifact}" srcdir="${test.srcdir}" />\r
+ </target>\r
+\r
+ <target name="dist.unittest" depends="jar.test">\r
+ <mkdir dir="${dist.junit}/xml" />\r
+ <junit printsummary="yes" haltonfailure="no">\r
+ <classpath>\r
+ <path refid="cp.test" />\r
+ <path location="${dist.jar}/${test.artifact}.jar" />\r
+ </classpath>\r
+\r
+ <formatter type="xml" />\r
+\r
+ <batchtest fork="yes" todir="${dist.junit}/xml">\r
+ <fileset dir="${test.srcdir}">\r
+ <include name="**/*Test*.java" />\r
+ <exclude name="**/Abstract*.java" />\r
+ <exclude name="**/*TestDef*.java" />\r
+ <exclude name="**/*TestData*.java" />\r
+ </fileset>\r
+ </batchtest>\r
+ </junit>\r
+\r
+ <junitreport todir="${dist.junit}">\r
+ <fileset dir="${dist.junit}/xml">\r
+ <include name="*.xml" />\r
+ </fileset>\r
+ <report format="frames" todir="${dist.junit}" />\r
+ </junitreport>\r
+ </target>\r
+\r
+ <target name="package.common"\r
+ depends="dist.unittest,jar.sources,dist.api,dist.apiWithSlc,dist.dependencies,dist.appli">\r
+ </target>\r
+\r
+ <target name="dist.package" depends="package.common">\r
+ <copy todir="${dist.base}">\r
+ <fileset dir="src/main/config" includes="**/*" />\r
+ </copy>\r
+ <copy todir="${dist.lib}">\r
+ <fileset dir="${dist.jar}" includes="*.jar" excludes="*-test.jar" />\r
+ </copy>\r
+\r
+ <zip destfile="${package.base}/${package.name}.zip">\r
+ <zipfileset dir="${dist.base}"\r
+ prefix="${package.prefix}-${package.version}">\r
+ <include name="**/*" />\r
+ </zipfileset>\r
+ </zip>\r
+ </target>\r
+\r
+ <target name="dist.basePackage" depends="package.common">\r
+ <copy todir="${dist.base}">\r
+ <fileset dir="src/main/config" includes="**/*" />\r
+ </copy>\r
+ <copy todir="${dist.lib}">\r
+ <fileset dir="${dist.jar}" includes="*.jar" excludes="*-test.jar" />\r
+ </copy>\r
+\r
+ <zip destfile="${package.base}/${basePackage.name}.zip">\r
+ <zipfileset dir="${dist.base}">\r
+ <exclude name="build/**" />\r
+ <include name="**/*" />\r
+ </zipfileset>\r
+ </zip>\r
+ </target>\r
+\r
+ <target name="dist.dependencies" if="flag.withDependencies">\r
+ <copy todir="${dist.lib}">\r
+ <fileset dir="${main.libdir}" includes="*.jar" />\r
+ </copy>\r
+\r
+ </target>\r
+\r
+ <target name="dist.appli" if="appli.base">\r
+ <copy todir="${dist.appli}">\r
+ <fileset dir="${appli.base}" includes="**" />\r
+ </copy>\r
+\r
+ </target>\r
+\r
+ <target name="dist.api" unless="slc.basePackage">\r
+ <api artifact="${main.artifact}" srcdir="${main.srcdir}" />\r
+\r
+ </target>\r
+\r
+ <target name="dist.apiWithSlc" if="slc.basePackage">\r
+ <api artifact="${main.artifact}" srcdir="${main.srcdir}">\r
+ <links>\r
+ <link href="../../argeo-slc/api" />
+ </links>\r
+ </api>\r
+\r
+ </target>\r
+</project>
\ No newline at end of file
--- /dev/null
+org.argeo.slc.ant.SlcProjectHelper
\ No newline at end of file
--- /dev/null
+package org.argeo.slc.ant;\r
+\r
+import java.io.File;\r
+import java.util.List;\r
+\r
+import org.apache.commons.logging.Log;\r
+import org.apache.commons.logging.LogFactory;\r
+import org.apache.tools.ant.Project;\r
+import org.apache.tools.ant.ProjectHelper;\r
+\r
+import org.argeo.slc.core.structure.StructurePath;\r
+import org.argeo.slc.core.structure.StructureRegistry;\r
+\r
+/** Utilities to manipulate the structure registry in SLC Ant. */\r
+public class AntRegistryUtil {\r
+ private static Log log = LogFactory.getLog(AntRegistryUtil.class);\r
+\r
+ /** Reads a structure registry from an Ant file without executing it. */\r
+ public static StructureRegistry readRegistry(File antFile) {\r
+ if (log.isDebugEnabled())\r
+ log.debug("Reads registry for Ant file " + antFile);\r
+ Project p = new Project();\r
+ p.setUserProperty("ant.file", antFile.getAbsolutePath());\r
+ p.setBaseDir(antFile.getParentFile());\r
+ p.init();\r
+ ProjectHelper helper = new SlcProjectHelper();\r
+ p.addReference("ant.projectHelper", helper);\r
+ helper.parse(p, antFile);\r
+\r
+ StructureRegistry registry = (StructureRegistry) p\r
+ .getReference(SlcProjectHelper.REF_STRUCTURE_REGISTRY);\r
+ registry.setMode(StructureRegistry.READ);\r
+\r
+ p.executeTarget(p.getDefaultTarget());\r
+ return registry;\r
+ }\r
+\r
+ /** Executes only the active paths of the Ant file. */\r
+ public static Project runActive(File antFile,\r
+ List<StructurePath> activePaths) {\r
+ if (log.isDebugEnabled())\r
+ log.debug("Runs the " + activePaths.size()\r
+ + " provided active paths of Ant file " + antFile);\r
+ Project p = new Project();\r
+ p.setUserProperty("ant.file", antFile.getAbsolutePath());\r
+ p.setBaseDir(antFile.getParentFile());\r
+ p.init();\r
+ ProjectHelper helper = new SlcProjectHelper();\r
+ p.addReference("ant.projectHelper", helper);\r
+ helper.parse(p, antFile);\r
+\r
+ StructureRegistry registry = (StructureRegistry) p\r
+ .getReference(SlcProjectHelper.REF_STRUCTURE_REGISTRY);\r
+ registry.setMode(StructureRegistry.ACTIVE);\r
+ registry.setActivePaths(activePaths);\r
+ p.executeTarget(p.getDefaultTarget());\r
+ return p;\r
+ }\r
+\r
+ /** Executes all paths of the default target of the Ant file. */\r
+ public static Project runAll(File antFile) {\r
+ if (log.isDebugEnabled())\r
+ log.debug("Runs all paths of Ant file " + antFile);\r
+ Project p = new Project();\r
+ p.setUserProperty("ant.file", antFile.getAbsolutePath());\r
+ p.setBaseDir(antFile.getParentFile());\r
+ p.init();\r
+ ProjectHelper helper = new SlcProjectHelper();\r
+ p.addReference("ant.projectHelper", helper);\r
+ helper.parse(p, antFile);\r
+ p.executeTarget(p.getDefaultTarget());\r
+ return p;\r
+ }\r
+}\r
--- /dev/null
+package org.argeo.slc.ant;\r
+\r
+import java.io.File;\r
+import java.io.FileInputStream;\r
+import java.io.IOException;\r
+import java.util.Map;\r
+import java.util.Properties;\r
+import java.util.StringTokenizer;\r
+\r
+import org.springframework.util.Log4jConfigurer;\r
+\r
+import org.apache.tools.ant.Project;\r
+\r
+/**\r
+ * <p>\r
+ * Manager and initializer of the properties required by SLC Ant.\r
+ * </p>\r
+ * \r
+ * <p>\r
+ * All properties described here will get a value one way or another (see below\r
+ * for details)/ Each property will be accessible via Ant or Spring properties.\r
+ * </p>\r
+ * \r
+ * <p>\r
+ * The property <i>slc.rootFile</i> is set based on the location of the SLC\r
+ * root property file found in the directory structure of a called Ant file. The\r
+ * default name of this file is <b>slcRoot.properties</b> (can be set by\r
+ * {@link #setSlcRootFileName(String)}). <br>\r
+ * This property provides the absolute path to the unique SLC root property file\r
+ * which marks the root of an Ant SLC tree structure.\r
+ * </p>\r
+ * \r
+ * <p>\r
+ * The property <i>slc.rootDir</i> is inferred from <i>slc.rootFile</i> and\r
+ * provides a convenient shortcut to the root directory of the Ant files\r
+ * directory structure.\r
+ * </p>\r
+ * \r
+ * <p>\r
+ * A few directory and file related properties can be set in the SLC root\r
+ * property file (if they are not explicitly set their default values will be\r
+ * used):\r
+ * \r
+ * <table border="1" cellspacing="0">\r
+ * <tr>\r
+ * <th>Property</th>\r
+ * <th>Description</th>\r
+ * <th>Default</th>\r
+ * </tr>\r
+ * <tr>\r
+ * <td><i>slc.confDir</i></td>\r
+ * <td>Directory where to find the various configuration files of a given SLC\r
+ * Ant deployment</td>\r
+ * <td>${slc.rootDir}/../conf</td>\r
+ * </tr>\r
+ * <tr>\r
+ * <td><i>slc.workDir</i></td>\r
+ * <td>Directory where data can be retrieved or generated: build outputs, test\r
+ * inputs/outputs, test results, etc. The underlying directory structure is\r
+ * specified by the specific SLC application.</td>\r
+ * <td>${slc.rootDir}/../work</td>\r
+ * </tr>\r
+ * <tr>\r
+ * <td><i>slc.propertyFileNames</i></td>\r
+ * <td>Comma-separated list of the files names of the property files to load\r
+ * from the conf directory. Having various files allows to separate between SLC\r
+ * framework properties and properties specific to a given application built on\r
+ * top of SLC. All will be available across Ant and Spring.</td>\r
+ * <td>slc.properties</td>\r
+ * </tr>\r
+ * </table> <b>Note:</b> Only the properties above can be set in the SLC root\r
+ * properties file. All other properties should be defined in the registered\r
+ * conf files.\r
+ * </p>\r
+ * \r
+ * <p>\r
+ * Any property can be defined in the conf files defined in the SLC root\r
+ * properties file (see above). SLC expects some which will have defaults but\r
+ * can be overriden there. By convention they should be defined in the\r
+ * <b>slc.properties</b> file, while application specific properties should be\r
+ * defined in other conf files. This allows for a clean spearation between SLC\r
+ * and the applications built on top of it:\r
+ * \r
+ * <table border="1" cellspacing="0">\r
+ * <tr>\r
+ * <th>Property</th>\r
+ * <th>Description</th>\r
+ * <th>Default</th>\r
+ * </tr>\r
+ * <tr>\r
+ * <td><i>slc.applicationContext</i></td>\r
+ * <td>Path to the root Spring application context file used by SLC Ant.</td>\r
+ * <td>${slc.confDir}/applicationContext.xml</td>\r
+ * </tr>\r
+ * <tr>\r
+ * <td><i>slc.defaultTestRun</i></td>\r
+ * <td>Name of the {@link WritableTestRun} Spring bean that the\r
+ * <code>slc.test</code> task will use by default. This can be overridden when\r
+ * calling the task from Ant.</td>\r
+ * <td>defaultTestRun</td>\r
+ * </tr>\r
+ * </table>\r
+ * </p>\r
+ */\r
+public class SlcAntConfig {\r
+ // SLC ROOT PROPERTIES\r
+ /** Property for the root file (SLC root property file). */\r
+ public final static String ROOT_FILE_PROPERTY = "slc.rootFile";\r
+ /** Property for the root dir (SLC root property file). */\r
+ public final static String ROOT_DIR_PROPERTY = "slc.rootDir";\r
+ /** Property for the conf dir (SLC root property file). */\r
+ public final static String CONF_DIR_PROPERTY = "slc.confDir";\r
+ /** Property for the work dir (SLC root property file). */\r
+ public final static String WORK_DIR_PROPERTY = "slc.workDir";\r
+ /**\r
+ * Comma-separated list of property file names to load from the conf dir and\r
+ * add to project user properties\r
+ */\r
+ public final static String PROPERTY_FILE_NAMES_PROPERTY = "slc.propertyFileNames";\r
+\r
+ // SLC CONF PROPERTIES\r
+ /** Path to the root Spring application context */\r
+ public static String APPLICATION_CONTEXT_PROPERTY = "slc.applicationContext";\r
+ /** Name of the Spring bean used by default */\r
+ public static String DEFAULT_TEST_RUN_PROPERTY = "slc.defaultTestRun";\r
+\r
+ // SLC LOCAL PROPERTIES\r
+ /** Property for the dir description (SLC local property file). */\r
+ public static String DIR_DESCRIPTION_PROPERTY = "slc.dirDescription";\r
+\r
+ private String slcRootFileName = "slcRoot.properties";\r
+ private String slcLocalFileName = "slcLocal.properties";\r
+\r
+ /**\r
+ * Retrieves or infers all properties and set them as project user\r
+ * properties. All these properties will be set as project properties <b>if\r
+ * they had not been set as project properties before</b> (like by\r
+ * overriding through the standard Ant mechanisms).\r
+ * \r
+ * @param project\r
+ * the Ant <code>Project</code> being run.\r
+ * @return whether the project could be initialized for SLC usage (e.g.\r
+ * presence of an SLC root file)\r
+ */\r
+ public boolean initProject(Project project) {\r
+ File projectBaseDir = project.getBaseDir();\r
+ File slcRootFile = findSlcRootFile(projectBaseDir);\r
+ if (slcRootFile == null) {\r
+ return false;\r
+ }\r
+\r
+ // pass the project properties through the System properties\r
+ System.getProperties().putAll((Map<?, ?>) project.getUserProperties());\r
+ Properties all = prepareAllProperties(slcRootFile);\r
+ for (Object o : all.keySet()) {\r
+ String key = o.toString();\r
+ //System.out.println(key+"="+all.getProperty(key));\r
+ if (project.getUserProperty(key) == null) {// not already set\r
+ project.setUserProperty(key, all.getProperty(key));\r
+ }\r
+ }\r
+ return true;\r
+ }\r
+\r
+ /**\r
+ * Retrieves or infers all required properties.\r
+ * \r
+ * @param slcRootFile\r
+ * the location of the SLC root file\r
+ * \r
+ * @return the prepared properties. Note that it also contains the System\r
+ * and Ant properties which had previously been set.\r
+ */\r
+ protected Properties prepareAllProperties(File slcRootFile) {\r
+ try {\r
+ final String fileUrlPrefix = "";\r
+\r
+ Properties all = new Properties();\r
+ all.putAll(System.getProperties());\r
+ all.put(ROOT_FILE_PROPERTY, slcRootFile.getCanonicalPath());\r
+ // Remove basedir property in order to avoid conflict with Maven\r
+ if (all.containsKey("basedir"))\r
+ all.remove("basedir");\r
+\r
+ Properties rootProps = loadFile(slcRootFile.getCanonicalPath());\r
+\r
+ final File confDir;\r
+ final File workDir;\r
+ // Root dir\r
+ final File rootDir = slcRootFile.getParentFile();\r
+ all.setProperty(ROOT_DIR_PROPERTY, fileUrlPrefix\r
+ + rootDir.getCanonicalPath());\r
+\r
+ // Conf dir\r
+ if (all.getProperty(CONF_DIR_PROPERTY) == null) {\r
+ confDir = new File(rootProps.getProperty(CONF_DIR_PROPERTY,\r
+ rootDir.getAbsolutePath() + "/../conf"))\r
+ .getCanonicalFile();\r
+ all.setProperty(CONF_DIR_PROPERTY, fileUrlPrefix\r
+ + confDir.getAbsolutePath());\r
+ } else {\r
+ confDir = new File(all.getProperty(CONF_DIR_PROPERTY))\r
+ .getCanonicalFile();\r
+ }\r
+\r
+ // Work dir\r
+ if (all.getProperty(WORK_DIR_PROPERTY) == null) {\r
+ workDir = new File(rootProps.getProperty(WORK_DIR_PROPERTY,\r
+ rootDir.getAbsolutePath() + "/../work"))\r
+ .getCanonicalFile();\r
+ all.setProperty(WORK_DIR_PROPERTY, fileUrlPrefix\r
+ + workDir.getAbsolutePath());\r
+ } else {\r
+ workDir = new File(all.getProperty(WORK_DIR_PROPERTY))\r
+ .getCanonicalFile();\r
+ }\r
+\r
+ // Properties from the conf dir files\r
+ Properties properties = new Properties();\r
+ StringTokenizer st = new StringTokenizer(rootProps.getProperty(\r
+ PROPERTY_FILE_NAMES_PROPERTY, "slc.properties"), ",");\r
+ while (st.hasMoreTokens()) {\r
+ String fileName = st.nextToken();\r
+ properties.putAll(loadFile(confDir.getAbsolutePath()\r
+ + File.separator + fileName));\r
+ }\r
+\r
+ for (Object o : properties.keySet()) {\r
+ String key = o.toString();\r
+ if (all.getProperty(key) == null) {// not already set\r
+ all.setProperty(key, properties.getProperty(key));\r
+ }\r
+ }\r
+\r
+ // Default application context\r
+ if (all.getProperty(APPLICATION_CONTEXT_PROPERTY) == null) {\r
+ all.setProperty(APPLICATION_CONTEXT_PROPERTY, confDir\r
+ .getAbsolutePath()\r
+ + "/applicationContext.xml");\r
+ }\r
+ // Default test run\r
+ if (all.getProperty(DEFAULT_TEST_RUN_PROPERTY) == null) {\r
+ all.setProperty(DEFAULT_TEST_RUN_PROPERTY, "defaultTestRun");\r
+ }\r
+\r
+ // Default log4j\r
+ if (all.getProperty("log4j.configuration") == null) {\r
+ System.setProperty("log4j.configuration", confDir\r
+ .getCanonicalPath()\r
+ + File.separator + "log4j.properties");\r
+ // TODO: fix dependency to log4j\r
+ Log4jConfigurer.initLogging(confDir.getCanonicalPath()\r
+ + File.separator + "log4j.properties");\r
+ }\r
+\r
+ return all;\r
+ } catch (Exception e) {\r
+ throw new SlcAntException("Unexpected exception while configuring",\r
+ e);\r
+ }\r
+ }\r
+\r
+ /** Loads the content of a file as <code>Properties</code>. */\r
+ private Properties loadFile(String path) {\r
+ Properties p = new Properties();\r
+ try {\r
+ FileInputStream in = new FileInputStream(path);\r
+ p.load(in);\r
+ in.close();\r
+ } catch (IOException e) {\r
+ throw new SlcAntException("Cannot read SLC root file", e);\r
+ }\r
+ return p;\r
+ }\r
+\r
+ /**\r
+ * Looks for a file named {@link #getSlcLocalFileName()} in the directory,\r
+ * loads it as properties file and return the value of the property\r
+ * {@link #DIR_DESCRIPTION_PROPERTY}.\r
+ */\r
+ public String getDescriptionForDir(File dir) {\r
+ String description = dir.getName();\r
+ File slcLocal = new File(dir.getPath() + File.separator\r
+ + getSlcLocalFileName());\r
+ if (slcLocal.exists()) {\r
+ Properties properties = loadFile(slcLocal.getAbsolutePath());\r
+ description = properties.getProperty(\r
+ SlcAntConfig.DIR_DESCRIPTION_PROPERTY, description);\r
+ }\r
+ return description;\r
+ }\r
+\r
+ /**\r
+ * Recursively scans directories downwards until it find a file names as\r
+ * defined by {@link #getSlcRootFileName()}.\r
+ */\r
+ public File findSlcRootFile(File dir) {\r
+ for (File file : dir.listFiles()) {\r
+ if (!file.isDirectory()\r
+ && file.getName().equals(getSlcRootFileName())) {\r
+ return file;\r
+ }\r
+ }\r
+\r
+ File parentDir = dir.getParentFile();\r
+ if (parentDir == null) {\r
+ return null;// stop condition: not found\r
+ } else {\r
+ return findSlcRootFile(parentDir);\r
+ }\r
+ }\r
+\r
+ /**\r
+ * Gets the file name of the file marking the root directory, default being\r
+ * <i>slcRoot.properties</i>.\r
+ */\r
+ public String getSlcRootFileName() {\r
+ return slcRootFileName;\r
+ }\r
+\r
+ /** Sets the file name of the file marking the root directory. */\r
+ public void setSlcRootFileName(String slcRootFileName) {\r
+ this.slcRootFileName = slcRootFileName;\r
+ }\r
+\r
+ /**\r
+ * Gets the file name of the file containing directory specific properties,\r
+ * default being <i>slcLocal.properties</i>.\r
+ */\r
+ public String getSlcLocalFileName() {\r
+ return slcLocalFileName;\r
+ }\r
+\r
+ /** Sets the file name of the file containing directory specific properties. */\r
+ public void setSlcLocalFileName(String slcLocalFileName) {\r
+ this.slcLocalFileName = slcLocalFileName;\r
+ }\r
+\r
+}\r
--- /dev/null
+package org.argeo.slc.ant;\r
+\r
+import org.argeo.slc.core.SlcException;\r
+\r
+/** Base for all SLC Ant exceptions. */\r
+public class SlcAntException extends SlcException {\r
+ static final long serialVersionUID = 1l;\r
+\r
+ /** Constructor. */\r
+ public SlcAntException(String message) {\r
+ super(message);\r
+ }\r
+\r
+ /** Constructor. */\r
+ public SlcAntException(String message, Throwable cause) {\r
+ super(message, cause);\r
+ }\r
+\r
+}\r
--- /dev/null
+package org.argeo.slc.ant;\r
+\r
+import java.io.File;\r
+import java.io.IOException;\r
+import java.io.InputStream;\r
+import java.util.List;\r
+import java.util.Map;\r
+import java.util.Properties;\r
+import java.util.Vector;\r
+\r
+import org.springframework.context.support.AbstractApplicationContext;\r
+import org.springframework.context.support.FileSystemXmlApplicationContext;\r
+\r
+import org.apache.commons.logging.Log;\r
+import org.apache.commons.logging.LogFactory;\r
+import org.apache.tools.ant.BuildException;\r
+import org.apache.tools.ant.Project;\r
+import org.apache.tools.ant.helper.ProjectHelperImpl;\r
+\r
+import org.argeo.slc.core.UnsupportedException;\r
+import org.argeo.slc.core.structure.DefaultSRegistry;\r
+import org.argeo.slc.core.structure.SimpleSElement;\r
+import org.argeo.slc.core.structure.StructureRegistry;\r
+import org.argeo.slc.core.structure.tree.TreeSPath;\r
+\r
+/**\r
+ * Custom implementation of an Ant <code>ProjectHelper</code> binding a Spring\r
+ * application context and a structure registry with the Ant project.\r
+ */\r
+public class SlcProjectHelper extends ProjectHelperImpl {\r
+ private static Log log;\r
+\r
+ /** The Ant reference to the Spring application context used. */\r
+ public static String REF_ROOT_CONTEXT = "slcApplicationContext";\r
+ /** The Ant reference to the SLC structure registry used. */\r
+ public static String REF_STRUCTURE_REGISTRY = "slcStructureRegistry";\r
+ /** The Ant reference to the <code>TreePath</code> of the current project */\r
+ private static String REF_PROJECT_PATH = "slcProjectPath";\r
+ /**\r
+ * Resource path to the property file listing the SLC specific Ant tasks:\r
+ * /org/argeo/slc/ant/taskdefs.properties\r
+ */\r
+ private static String SLC_TASKDEFS_RESOURCE_PATH = "/org/argeo/slc/ant/taskdefs.properties";\r
+\r
+ @Override\r
+ public void parse(Project project, Object source) throws BuildException {\r
+ if (!(source instanceof File)) {\r
+ throw new UnsupportedException("Ant file", source);\r
+ }\r
+ File sourceFile = (File) source;\r
+\r
+ // initialize config\r
+ SlcAntConfig slcAntConfig = new SlcAntConfig();\r
+\r
+ // Reset basedir property, in order to avoid base dir override when\r
+ // running in Maven\r
+ project.setProperty("basedir", sourceFile.getParentFile()\r
+ .getAbsolutePath());\r
+ if (!slcAntConfig.initProject(project)) {\r
+ // not SLC compatible, do normal Ant\r
+ super.parse(project, source);\r
+ return;\r
+ }\r
+\r
+ if (log == null) {\r
+ // log4j is initialized only now\r
+ log = LogFactory.getLog(SlcProjectHelper.class);\r
+ }\r
+ log.debug("SLC properties are set, starting initialization..");\r
+\r
+ // init Spring application context\r
+ initSpringContext(project);\r
+\r
+ // init structure registry\r
+ DefaultSRegistry registry = new DefaultSRegistry();\r
+ project.addReference(REF_STRUCTURE_REGISTRY, registry);\r
+\r
+ // call the underlying implementation to do the actual work\r
+ super.parse(project, source);\r
+\r
+ // create structure root\r
+ registerProjectAndParents(project, slcAntConfig);\r
+\r
+ addSlcTasks(project);\r
+\r
+ }\r
+\r
+ /** Creates the tree-based structure for this project. */\r
+ private void registerProjectAndParents(Project project,\r
+ SlcAntConfig slcAntConfig) {\r
+ StructureRegistry registry = (StructureRegistry) project\r
+ .getReference(REF_STRUCTURE_REGISTRY);\r
+ File rootDir = new File(project\r
+ .getUserProperty(SlcAntConfig.ROOT_DIR_PROPERTY))\r
+ .getAbsoluteFile();\r
+ File baseDir = project.getBaseDir().getAbsoluteFile();\r
+ List<File> dirs = new Vector<File>();\r
+ File currentDir = baseDir;\r
+ do {\r
+ dirs.add(currentDir);\r
+ currentDir = currentDir.getParentFile();\r
+ if (log.isTraceEnabled())\r
+ log.trace("List " + currentDir);\r
+ } while (!currentDir.equals(rootDir.getParentFile()));\r
+\r
+ // first path is root dir (because of previous algorithm)\r
+ TreeSPath currPath = TreeSPath.createRootPath(rootDir.getName());\r
+ for (int i = dirs.size() - 1; i >= 0; i--) {\r
+ File dir = dirs.get(i);\r
+\r
+ // retrieves description for this path\r
+ final String description;\r
+ if (i == 0) {// project itself\r
+ description = project.getDescription() != null ? project\r
+ .getDescription() : "[no desc]";\r
+ } else {\r
+ description = slcAntConfig.getDescriptionForDir(dir);\r
+ }\r
+ SimpleSElement element = new SimpleSElement(description);\r
+\r
+ // creates and register path\r
+ if (!dir.equals(rootDir)) {// already set\r
+ currPath = currPath.createChild(dir.getName());\r
+ }\r
+ registry.register(currPath, element);\r
+ }\r
+ project.addReference(REF_PROJECT_PATH, currPath);\r
+ }\r
+\r
+ /** Gets the path of a project (root). */\r
+ public static TreeSPath getProjectPath(Project project) {\r
+ return (TreeSPath) project.getReference(REF_PROJECT_PATH);\r
+ }\r
+\r
+ /** Initializes the Spring application context. */\r
+ private void initSpringContext(Project project) {\r
+ System.getProperties().putAll((Map<?, ?>) project.getProperties());\r
+ String acPath = project\r
+ .getUserProperty(SlcAntConfig.APPLICATION_CONTEXT_PROPERTY);\r
+ AbstractApplicationContext context = new FileSystemXmlApplicationContext(\r
+ acPath);\r
+ context.registerShutdownHook();\r
+ project.addReference(REF_ROOT_CONTEXT, context);\r
+ }\r
+\r
+ /** Loads the SLC specific Ant tasks. */\r
+ private void addSlcTasks(Project project) {\r
+ Properties taskdefs = new Properties();\r
+ try {\r
+ InputStream in = project.getClass().getResourceAsStream(\r
+ SLC_TASKDEFS_RESOURCE_PATH);\r
+ taskdefs.load(in);\r
+ in.close();\r
+ } catch (IOException e) {\r
+ throw new SlcAntException("Cannot load task definitions", e);\r
+ }\r
+\r
+ for (Object o : taskdefs.keySet()) {\r
+ String name = o.toString();\r
+ try {\r
+ project.addTaskDefinition(name, Class.forName(taskdefs\r
+ .getProperty(name)));\r
+ } catch (ClassNotFoundException e) {\r
+ log.error("Unknown class for task " + name, e);\r
+ }\r
+ }\r
+ }\r
+}\r
--- /dev/null
+package org.argeo.slc.ant.deploy;\r
+\r
+import org.apache.commons.logging.Log;\r
+import org.apache.commons.logging.LogFactory;\r
+import org.apache.tools.ant.BuildException;\r
+\r
+import org.argeo.slc.ant.spring.AbstractSpringArg;\r
+import org.argeo.slc.ant.structure.SAwareTask;\r
+import org.argeo.slc.core.deploy.DeploymentData;\r
+import org.argeo.slc.core.deploy.TargetData;\r
+import org.argeo.slc.core.deploy.WritableDeployment;\r
+\r
+/** Ant task wrapping a deployment. */\r
+public class SlcDeployTask extends SAwareTask {\r
+ private Log log = LogFactory.getLog(SlcDeployTask.class);\r
+\r
+ private String deploymentBean = null;\r
+\r
+ private DeploymentDataArg deploymentDataArg;\r
+ private TargetDataArg targetDataArg;\r
+\r
+ @Override\r
+ public void executeActions(String mode) throws BuildException {\r
+ WritableDeployment deployment = (WritableDeployment) getContext()\r
+ .getBean(deploymentBean);\r
+\r
+ // set overridden references\r
+ if (deploymentDataArg != null) {\r
+ deployment.setDeploymentData(deploymentDataArg.getDeploymentData());\r
+ log.trace("Overrides deployment data");\r
+ }\r
+\r
+ if (targetDataArg != null) {\r
+ deployment.setTargetData(targetDataArg.getTargetData());\r
+ log.trace("Overrides target data");\r
+ }\r
+\r
+ deployment.execute();\r
+ }\r
+\r
+ /**\r
+ * The bean name of the test run to use. If not set the default is used.\r
+ * \r
+ * @see SlcAntConfig\r
+ */\r
+ public void setDeployment(String deploymentBean) {\r
+ this.deploymentBean = deploymentBean;\r
+ }\r
+\r
+ /** Creates deployment data sub tag. */\r
+ public DeploymentDataArg createDeploymentData() {\r
+ deploymentDataArg = new DeploymentDataArg();\r
+ return deploymentDataArg;\r
+ }\r
+\r
+ /** Creates target data sub tag. */\r
+ public TargetDataArg createTargetData() {\r
+ targetDataArg = new TargetDataArg();\r
+ return targetDataArg;\r
+ }\r
+}\r
+\r
+class DeploymentDataArg extends AbstractSpringArg {\r
+ DeploymentData getDeploymentData() {\r
+ return (DeploymentData) getBeanInstance();\r
+ }\r
+\r
+}\r
+\r
+class TargetDataArg extends AbstractSpringArg {\r
+ TargetData getTargetData() {\r
+ return (TargetData) getBeanInstance();\r
+ }\r
+\r
+}\r
--- /dev/null
+<html>\r
+<head></head>\r
+<body>\r
+Integration of SLC Deploy in Ant.\r
+</body>\r
+</html>
\ No newline at end of file
--- /dev/null
+<html>\r
+<head></head>\r
+<body>\r
+Bases classes for SLC Ant extensions.\r
+<h2>Introduction</h2>\r
+SLC Ant allows to integrate Ant and Spring in order to run an\r
+application based on top of SLC. Sequence of actions are defined in Ant\r
+files with specific Ant tasks referencing Spring beans implementing the\r
+SLC interfaces. The properties of these beans can be overridden at\r
+runtime in the Ant scripts.\r
+<br />\r
+SLC Ant also provides a tree-based implementation of the SLC structure\r
+which allows to uniquely identify and reference the various actions.\r
+\r
+<h2>Installation</h2>\r
+The structure will be first defined by the directory tree where the Ant\r
+files are stored. In order to define the root of this tree, you need to\r
+place in the root directory an\r
+<b>SLC Ant root file</b>\r
+(default name: slcRoot.properties).\r
+<br />\r
+In this root file you can define a configuration directory and a work\r
+directory (default values are provided if they are not explicitly set).\r
+<br />\r
+Additional properties can then be defined in files stored under the\r
+configuration directory.\r
+<br />\r
+For details about the configuration and the various properties, please\r
+refer to {@link org.argeo.slc.ant.SlcAntConfig}.\r
+\r
+<h2>Running SLC Ant</h2>\r
+SLC Ant can be run either via pure Ant scripts or programmatically using\r
+{@link org.argeo.slc.ant.AntRegistryUtil}. In both cases, make sure that\r
+SLC and its dependencies are in the classpath (Spring (always), logging\r
+system such as log4j, Hibernate, etc.).\r
+\r
+</body>\r
+</html>
\ No newline at end of file
--- /dev/null
+package org.argeo.slc.ant.spring;\r
+\r
+import java.util.List;\r
+import java.util.Vector;\r
+\r
+import org.springframework.beans.BeanWrapper;\r
+import org.springframework.beans.BeanWrapperImpl;\r
+import org.springframework.context.ApplicationContext;\r
+\r
+import org.apache.tools.ant.types.DataType;\r
+\r
+import org.argeo.slc.ant.SlcProjectHelper;\r
+\r
+/** Abstract Ant type wrapping a Spring bean. */\r
+public abstract class AbstractSpringArg extends DataType {\r
+ private List<OverrideArg> overrides = new Vector<OverrideArg>();\r
+\r
+ private String bean;\r
+\r
+ // cache bean instance to avoid reading it twice if it is a prototype\r
+ private Object beanInstance = null;\r
+\r
+ /** The <u>name</u> of the underlying bean, as set throught the attribute. */\r
+ public String getBean() {\r
+ return bean;\r
+ }\r
+\r
+ /** Setter for the bean name. */\r
+ public void setBean(String bean) {\r
+ this.bean = bean;\r
+ }\r
+\r
+ /**\r
+ * Retrieve the instance of the bean, and sets the overriden properties.\r
+ * <b>The value is cached.</b>\r
+ */\r
+ public Object getBeanInstance() {\r
+ if (beanInstance == null) {\r
+ beanInstance = getContext().getBean(bean);\r
+\r
+ BeanWrapper wrapper = new BeanWrapperImpl(beanInstance);\r
+ for (OverrideArg override : overrides) {\r
+ wrapper.setPropertyValue(override.getName(), override\r
+ .getObject());\r
+ }\r
+ }\r
+ return beanInstance;\r
+ }\r
+\r
+ /** Creates an override subtag. */\r
+ public OverrideArg createOverride() {\r
+ OverrideArg propertyArg = new OverrideArg();\r
+ overrides.add(propertyArg);\r
+ return propertyArg;\r
+ }\r
+\r
+ /** The related Spring application context. */\r
+ protected ApplicationContext getContext() {\r
+ return (ApplicationContext) getProject().getReference(\r
+ SlcProjectHelper.REF_ROOT_CONTEXT);\r
+ }\r
+\r
+}\r
--- /dev/null
+package org.argeo.slc.ant.spring;\r
+\r
+import org.springframework.context.ApplicationContext;\r
+\r
+import org.apache.tools.ant.Task;\r
+\r
+import org.argeo.slc.ant.SlcProjectHelper;\r
+\r
+/** Abstract Ant task providing access to a Spring context. */\r
+public abstract class AbstractSpringTask extends Task {\r
+\r
+ /** Gets the related Spring context. */\r
+ protected ApplicationContext getContext() {\r
+ return (ApplicationContext) getProject().getReference(\r
+ SlcProjectHelper.REF_ROOT_CONTEXT);\r
+ }\r
+\r
+}\r
--- /dev/null
+package org.argeo.slc.ant.spring;\r
+\r
+import java.util.List;\r
+import java.util.Vector;\r
+\r
+import org.apache.tools.ant.BuildException;\r
+\r
+/** Ant type allowing to override bean properties. */\r
+public class OverrideArg extends AbstractSpringArg {\r
+ private String name;\r
+ private Object value;\r
+ private OverrideList overrideList;\r
+\r
+ /** The name of the property to override. */\r
+ public String getName() {\r
+ return name;\r
+ }\r
+\r
+ /** Sets the name. */\r
+ public void setName(String name) {\r
+ this.name = name;\r
+ }\r
+\r
+ /** Both value and bean cannot be set. */\r
+ public void setValue(String value) {\r
+ if (getBean() != null || overrideList != null) {\r
+ throw new BuildException("Value already set.");\r
+ }\r
+ this.value = value;\r
+ }\r
+\r
+ @Override\r
+ public void setBean(String bean) {\r
+ if (value != null || overrideList != null) {\r
+ throw new BuildException("Value already set.");\r
+ }\r
+ super.setBean(bean);\r
+ }\r
+\r
+ /** Creates override list sub tag. */\r
+ public OverrideList createList() {\r
+ if (value != null || getBean() != null) {\r
+ throw new BuildException("Value already set.");\r
+ }\r
+ if (overrideList == null) {\r
+ overrideList = new OverrideList();\r
+ } else {\r
+ throw new BuildException("Only one list can be declared");\r
+ }\r
+ return overrideList;\r
+ }\r
+\r
+ /**\r
+ * The related object: the value if a value had been set or an instance of\r
+ * the bean if not.\r
+ */\r
+ public Object getObject() {\r
+ if (value != null) {\r
+ return value;\r
+ } else if (getBean() != null) {\r
+ return getBeanInstance();\r
+ } else if (overrideList != null) {\r
+ return overrideList.getAsObjectList();\r
+ } else {\r
+ throw new BuildException("Value or bean not set.");\r
+ }\r
+ }\r
+\r
+ /** List of overrides */\r
+ protected class OverrideList {\r
+ private List<OverrideArg> list = new Vector<OverrideArg>();\r
+\r
+ /** Creates override sub tag. */\r
+ public OverrideArg createOverride() {\r
+ OverrideArg overrideArg = new OverrideArg();\r
+ list.add(overrideArg);\r
+ return overrideArg;\r
+ }\r
+\r
+ /** Gets as list of objects. */\r
+ public List<Object> getAsObjectList() {\r
+ List<Object> objectList = new Vector<Object>();\r
+ for (OverrideArg arg : list) {\r
+ objectList.add(arg.getObject());\r
+ }\r
+ return objectList;\r
+ }\r
+ }\r
+}\r
--- /dev/null
+<html>\r
+<head></head>\r
+<body>\r
+Integration of Spring in Ant.\r
+</body>\r
+</html>
\ No newline at end of file
--- /dev/null
+package org.argeo.slc.ant.structure;\r
+\r
+import java.util.List;\r
+import java.util.Vector;\r
+\r
+import org.apache.tools.ant.BuildException;\r
+import org.apache.tools.ant.Target;\r
+\r
+import org.argeo.slc.ant.SlcProjectHelper;\r
+import org.argeo.slc.ant.spring.AbstractSpringArg;\r
+import org.argeo.slc.ant.spring.AbstractSpringTask;\r
+import org.argeo.slc.core.structure.SimpleSElement;\r
+import org.argeo.slc.core.structure.StructureAware;\r
+import org.argeo.slc.core.structure.StructureElement;\r
+import org.argeo.slc.core.structure.StructurePath;\r
+import org.argeo.slc.core.structure.StructureRegistry;\r
+import org.argeo.slc.core.structure.tree.TreeSPath;\r
+\r
+/** Ant task that can be registered within a structure. */\r
+public abstract class SAwareTask extends AbstractSpringTask implements\r
+ StructureElement {\r
+ private TreeSPath path;\r
+ private final List<AbstractSpringArg> sAwareArgs = new Vector<AbstractSpringArg>();\r
+\r
+ @Override\r
+ public void init() throws BuildException {\r
+ StructureRegistry registry = getRegistry();\r
+ Target target = getOwningTarget();\r
+\r
+ TreeSPath targetPath = createTargetPath(target);\r
+ SimpleSElement targetElement = (SimpleSElement) registry\r
+ .getElement(createTargetPath(target));\r
+\r
+ if (targetElement == null) {\r
+ targetElement = new SimpleSElement(target.getDescription(),\r
+ "<no target desc>");\r
+ registry.register(targetPath, targetElement);\r
+ }\r
+ }\r
+\r
+ /**\r
+ * Includes this arg in the checks for propagation of sstructure related\r
+ * information.\r
+ */\r
+ protected void addSAwareArg(AbstractSpringArg arg) {\r
+ sAwareArgs.add(arg);\r
+ }\r
+\r
+ @Override\r
+ /**\r
+ * Called by Ant at runtime. Decides whether to call the actions depending\r
+ * of the mode of the underlying structure registry.\r
+ * \r
+ * @see #executeActions\r
+ * @see StructureRegistry\r
+ */\r
+ public final void execute() throws BuildException {\r
+ // register the task in the structure\r
+ TreeSPath targetPath = createTargetPath(getOwningTarget());\r
+ TreeSPath taskPath = targetPath.createChild(getTaskName()\r
+ + targetPath.listChildren(getRegistry()).size());\r
+ getRegistry().register(taskPath, this);\r
+ path = taskPath;\r
+\r
+ // notify registered args\r
+ for (AbstractSpringArg arg : sAwareArgs) {\r
+ Object obj = arg.getBeanInstance();\r
+\r
+ if (obj instanceof StructureAware) {\r
+ StructureAware sAwareT = (StructureAware) obj;\r
+ sAwareT.notifyCurrentPath(getRegistry(), taskPath);\r
+ }\r
+ }\r
+\r
+ // execute depending on the registry mode\r
+ String mode = getRegistry().getMode();\r
+ if (mode.equals(StructureRegistry.ALL)) {\r
+ executeActions(mode);\r
+ } else if (mode.equals(StructureRegistry.ACTIVE)) {\r
+ List<StructurePath> activePaths = getRegistry().getActivePaths();\r
+\r
+ if (activePaths.contains(targetPath)) {\r
+ if (activePaths.contains(taskPath)) {\r
+ executeActions(mode);\r
+ }\r
+ }\r
+ }\r
+\r
+ }\r
+\r
+ /** Actions to be executed by the implementor. */\r
+ protected abstract void executeActions(String mode);\r
+\r
+ /** Gets the underlying structure registry. */\r
+ protected StructureRegistry getRegistry() {\r
+ return (StructureRegistry) getProject().getReference(\r
+ SlcProjectHelper.REF_STRUCTURE_REGISTRY);\r
+ }\r
+\r
+ /** Creates the path for a given Ant target. */\r
+ protected static TreeSPath createTargetPath(Target target) {\r
+ TreeSPath projectPath = SlcProjectHelper.getProjectPath(target\r
+ .getProject());\r
+ return projectPath.createChild(target.getName());\r
+ }\r
+\r
+ /** Gets the path under which this task is registered. */\r
+ public TreeSPath getPath() {\r
+ return path;\r
+ }\r
+\r
+ @Override\r
+ public String getDescription() {\r
+ String description = super.getDescription();\r
+ if (description == null) {\r
+ return "<no task def>";\r
+ } else {\r
+ return description;\r
+ }\r
+ }\r
+\r
+}\r
--- /dev/null
+<html>\r
+<head></head>\r
+<body>\r
+Integration of SLC Structure in Ant.\r
+</body>\r
+</html>
\ No newline at end of file
--- /dev/null
+package org.argeo.slc.ant.test;\r
+\r
+import org.argeo.slc.ant.structure.SAwareTask;\r
+import org.argeo.slc.core.structure.StructureRegistry;\r
+import org.argeo.slc.core.test.TestResult;\r
+\r
+/** Ant tasks closing a given result. */\r
+public class SlcCloseTestResultTask extends SAwareTask {\r
+ private String result;\r
+\r
+ @Override\r
+ public void executeActions(String mode) {\r
+ if (!mode.equals(StructureRegistry.READ)) {\r
+ TestResult testResult = (TestResult) getContext().getBean(result);\r
+ testResult.close();\r
+ }\r
+ }\r
+\r
+ /** Sets the bean name of the result to close. */\r
+ public void setResult(String bean) {\r
+ this.result = bean;\r
+ }\r
+\r
+}\r
--- /dev/null
+package org.argeo.slc.ant.test;\r
+\r
+import org.argeo.slc.ant.structure.SAwareTask;\r
+import org.argeo.slc.core.structure.StructureAware;\r
+import org.argeo.slc.core.structure.StructureRegistry;\r
+import org.argeo.slc.core.test.TestReport;\r
+import org.argeo.slc.core.test.TestResult;\r
+\r
+/** Ant tasks generating a report. */\r
+public class SlcReportTask extends SAwareTask {\r
+ private String result;\r
+ private String report;\r
+\r
+ @Override\r
+ public void executeActions(String mode) {\r
+ if (!mode.equals(StructureRegistry.READ)) {\r
+ TestResult testResult = null;\r
+ if (result != null) {\r
+ testResult = (TestResult) getContext().getBean(result);\r
+ }\r
+ TestReport testReport = (TestReport) getContext().getBean(report);\r
+ if (testReport instanceof StructureAware) {\r
+ ((StructureAware) testReport).notifyCurrentPath(getRegistry(),\r
+ null);\r
+ }\r
+ testReport.generateTestReport(testResult);\r
+ }\r
+ }\r
+\r
+ /** Sets the bean name of the result to close. */\r
+ public void setResult(String bean) {\r
+ this.result = bean;\r
+ }\r
+\r
+ /** Sets the bean name of the report to generate. */\r
+ public void setReport(String report) {\r
+ this.report = report;\r
+ }\r
+\r
+}\r
--- /dev/null
+package org.argeo.slc.ant.test;\r
+\r
+import org.apache.commons.logging.Log;\r
+import org.apache.commons.logging.LogFactory;\r
+import org.apache.tools.ant.BuildException;\r
+\r
+import org.argeo.slc.ant.SlcAntConfig;\r
+import org.argeo.slc.ant.spring.AbstractSpringArg;\r
+import org.argeo.slc.ant.structure.SAwareTask;\r
+import org.argeo.slc.core.deploy.DeployedSystem;\r
+import org.argeo.slc.core.structure.StructureAware;\r
+import org.argeo.slc.core.test.ExecutableTestRun;\r
+import org.argeo.slc.core.test.TestData;\r
+import org.argeo.slc.core.test.TestDefinition;\r
+import org.argeo.slc.core.test.TestResult;\r
+import org.argeo.slc.core.test.WritableTestRun;\r
+\r
+/** Ant task wrapping a test run. */\r
+public class SlcTestTask extends SAwareTask {\r
+ private Log log = LogFactory.getLog(SlcTestTask.class);\r
+\r
+ private String testRunBean = null;\r
+\r
+ private TestDefinitionArg testDefinitionArg;\r
+ private TestDataArg testDataArg;\r
+ private DeployedSystemArg deployedSystemArg;\r
+ private TestResultArg testResultArg;\r
+\r
+ @Override\r
+ public void executeActions(String mode) throws BuildException {\r
+ final String testRunBeanT;\r
+ if (testRunBean != null) {\r
+ testRunBeanT = testRunBean;\r
+ } else {\r
+ testRunBeanT = getProject().getUserProperty(\r
+ SlcAntConfig.DEFAULT_TEST_RUN_PROPERTY);\r
+ }\r
+ WritableTestRun testRun = (WritableTestRun) getContext().getBean(\r
+ testRunBeanT);\r
+\r
+ // set overridden references\r
+ if (testDataArg != null) {\r
+ testRun.setTestData(testDataArg.getTestData());\r
+ log.trace("Overrides test data");\r
+ }\r
+\r
+ if (testDefinitionArg != null) {\r
+ testRun.setTestDefinition(testDefinitionArg.getTestDefinition());\r
+ log.trace("Overrides test definition");\r
+ }\r
+\r
+ if (deployedSystemArg != null) {\r
+ testRun.setDeployedSystem(deployedSystemArg.getDeployedSystem());\r
+ log.trace("Overrides deployed system");\r
+ }\r
+\r
+ if (testResultArg != null) {\r
+ testRun.setTestResult(testResultArg.getTestResult());\r
+ log.trace("Overrides test result");\r
+ }\r
+\r
+ // notify path to test result\r
+ TestResult result = testRun.getTestResult();\r
+ if (result != null && result instanceof StructureAware) {\r
+ ((StructureAware) result).notifyCurrentPath(getRegistry(),\r
+ getPath());\r
+ }\r
+\r
+ ((ExecutableTestRun) testRun).execute();\r
+ }\r
+\r
+ /**\r
+ * The bean name of the test run to use. If not set the default is used.\r
+ * \r
+ * @see SlcAntConfig\r
+ */\r
+ public void setTestRun(String testRunBean) {\r
+ this.testRunBean = testRunBean;\r
+ }\r
+\r
+ /** Creates sub tag. */\r
+ public TestDefinitionArg createTestDefinition() {\r
+ testDefinitionArg = new TestDefinitionArg();\r
+ // only test definitions can add to path\r
+ addSAwareArg(testDefinitionArg);\r
+ return testDefinitionArg;\r
+ }\r
+\r
+ /** Creates sub tag. */\r
+ public TestDataArg createTestData() {\r
+ testDataArg = new TestDataArg();\r
+ return testDataArg;\r
+ }\r
+\r
+ /** Creates sub tag. */\r
+ public DeployedSystemArg createDeployedSystem() {\r
+ deployedSystemArg = new DeployedSystemArg();\r
+ return deployedSystemArg;\r
+ }\r
+\r
+ /** Creates sub tag. */\r
+ public TestResultArg createTestResult() {\r
+ testResultArg = new TestResultArg();\r
+ return testResultArg;\r
+ }\r
+\r
+}\r
+\r
+class TestDefinitionArg extends AbstractSpringArg {\r
+ TestDefinition getTestDefinition() {\r
+ return (TestDefinition) getBeanInstance();\r
+ }\r
+}\r
+\r
+class TestDataArg extends AbstractSpringArg {\r
+ TestData getTestData() {\r
+ return (TestData) getBeanInstance();\r
+ }\r
+\r
+}\r
+\r
+class DeployedSystemArg extends AbstractSpringArg {\r
+ DeployedSystem getDeployedSystem() {\r
+ return (DeployedSystem) getBeanInstance();\r
+ }\r
+\r
+}\r
+\r
+class TestResultArg extends AbstractSpringArg {\r
+ TestResult getTestResult() {\r
+ return (TestResult) getBeanInstance();\r
+ }\r
+\r
+}\r
--- /dev/null
+<html>\r
+<head></head>\r
+<body>\r
+Integration of SLC Test in Ant.\r
+</body>\r
+</html>
\ No newline at end of file
--- /dev/null
+package org.argeo.slc.core;\r
+\r
+/** Basis for all SLC exceptions. This is an unchecked exception. */\r
+public class SlcException extends RuntimeException {\r
+ static final long serialVersionUID = 1l;\r
+\r
+ /** Constructor. */\r
+ public SlcException(String message) {\r
+ super(message);\r
+ }\r
+\r
+ /** Constructor. */\r
+ public SlcException(String message, Throwable cause) {\r
+ super(message, cause);\r
+ }\r
+\r
+}\r
--- /dev/null
+package org.argeo.slc.core;\r
+\r
+/** Exception for unsupported features or actions. */\r
+public class UnsupportedException extends SlcException {\r
+ static final long serialVersionUID = 1l;\r
+\r
+ /** Action not supported. */\r
+ public UnsupportedException() {\r
+ this("Action not supported");\r
+ }\r
+\r
+ /** Constructor with a message. */\r
+ public UnsupportedException(String message) {\r
+ super(message);\r
+ }\r
+\r
+ /**\r
+ * Constructor generating a message.\r
+ * \r
+ * @param nature\r
+ * the nature of the unsupported object\r
+ * @param obj\r
+ * the object itself (its class name will be used in message)\r
+ */\r
+ public UnsupportedException(String nature, Object obj) {\r
+ super("Unsupported " + nature + ": " + obj.getClass());\r
+ }\r
+\r
+ /**\r
+ * Constructor generating a message.\r
+ * \r
+ * @param nature\r
+ * the nature of the unsupported object\r
+ * @param value\r
+ * the problematic value itself\r
+ */\r
+ public UnsupportedException(String nature, String value) {\r
+ super("Unsupported " + nature + ": " + value);\r
+ }\r
+\r
+}\r
--- /dev/null
+package org.argeo.slc.core.build;\r
+\r
+/** The id uniquely identifying the distribution of a software system. */\r
+public interface DistributionId {\r
+\r
+}\r
--- /dev/null
+package org.argeo.slc.core.build;\r
+\r
+import java.util.StringTokenizer;\r
+\r
+/**\r
+ * <p>\r
+ * An implementation of the distribution id using the standard\r
+ * Major.Minor.Release notation. And additional arbitrary string can also be\r
+ * added.\r
+ * </p>\r
+ * \r
+ * <p>\r
+ * <b>Examples:</b><br>\r
+ * 0.2.6<br>\r
+ * 2.4.12.RC1\r
+ * </p>\r
+ */\r
+public class VersionDistributionId implements DistributionId {\r
+\r
+ private Integer major;\r
+ private Integer minor;\r
+ private Integer release;\r
+ private String additional;\r
+\r
+ /** Parse the provided string in order to set the various components. */\r
+ public void setVersionString(String str) {\r
+ StringTokenizer st = new StringTokenizer(str, ".");\r
+ if (st.hasMoreTokens())\r
+ major = Integer.parseInt(st.nextToken());\r
+ if (st.hasMoreTokens())\r
+ minor = Integer.parseInt(st.nextToken());\r
+ if (st.hasMoreTokens())\r
+ release = Integer.parseInt(st.nextToken());\r
+ if (st.hasMoreTokens())\r
+ additional = st.nextToken();\r
+ }\r
+\r
+ public Integer getMajor() {\r
+ return major;\r
+ }\r
+\r
+ public void setMajor(Integer major) {\r
+ this.major = major;\r
+ }\r
+\r
+ public Integer getMinor() {\r
+ return minor;\r
+ }\r
+\r
+ public void setMinor(Integer minor) {\r
+ this.minor = minor;\r
+ }\r
+\r
+ public Integer getRelease() {\r
+ return release;\r
+ }\r
+\r
+ public void setRelease(Integer release) {\r
+ this.release = release;\r
+ }\r
+\r
+ public String getAdditional() {\r
+ return additional;\r
+ }\r
+\r
+ public void setAdditional(String additional) {\r
+ this.additional = additional;\r
+ }\r
+\r
+ @Override\r
+ public boolean equals(Object obj) {\r
+ // TODO Auto-generated method stub\r
+ return super.equals(obj);\r
+ }\r
+\r
+ @Override\r
+ public String toString() {\r
+ return major + "." + minor + "." + release\r
+ + (additional != null ? "." + additional : "");\r
+ }\r
+\r
+}\r
--- /dev/null
+<html>\r
+<head></head>\r
+<body>\r
+SLC Build: building of software systems.\r
+</body>\r
+</html>
\ No newline at end of file
--- /dev/null
+package org.argeo.slc.core.deploy;\r
+\r
+/** An instance of a software system. */\r
+public interface DeployedSystem {\r
+ public DeployedSystemId getDeployedSystemId();\r
+}\r
--- /dev/null
+package org.argeo.slc.core.deploy;\r
+\r
+import org.argeo.slc.core.build.DistributionId;\r
+\r
+/** The id uniquely identifying a deployed system. */\r
+public interface DeployedSystemId {\r
+ public DistributionId getDistributionId();\r
+}\r
--- /dev/null
+package org.argeo.slc.core.deploy;\r
+\r
+public interface Deployment {\r
+ public DeployedSystem getDeployedSystem();\r
+\r
+ public TargetData getTargetData();\r
+\r
+ public DeploymentData getDeploymentData();\r
+}\r
--- /dev/null
+package org.argeo.slc.core.deploy;\r
+\r
+public interface DeploymentData {\r
+\r
+}\r
--- /dev/null
+package org.argeo.slc.core.deploy;\r
+\r
+public interface ExecutableDeployment extends Deployment {\r
+ public void execute();\r
+}\r
--- /dev/null
+package org.argeo.slc.core.deploy;\r
+\r
+import org.argeo.slc.core.build.DistributionId;\r
+\r
+/**\r
+ * A basic implementation of a deployed system id, based on a long value and a\r
+ * reference to a distribution id.\r
+ */\r
+public class NumericDSId implements DeployedSystemId {\r
+\r
+ private Long value;\r
+ private DistributionId distributionId;\r
+\r
+ public Long getValue() {\r
+ return value;\r
+ }\r
+\r
+ public void setValue(Long value) {\r
+ this.value = value;\r
+ }\r
+\r
+ public DistributionId getDistributionId() {\r
+ return distributionId;\r
+ }\r
+\r
+ public void setDistributionId(DistributionId distributionId) {\r
+ this.distributionId = distributionId;\r
+ }\r
+\r
+ @Override\r
+ public boolean equals(Object obj) {\r
+ return value.toString().equals(obj.toString());\r
+ }\r
+\r
+ @Override\r
+ public String toString() {\r
+ return value.toString();\r
+ }\r
+\r
+}\r
--- /dev/null
+package org.argeo.slc.core.deploy;\r
+\r
+public interface TargetData {\r
+\r
+}\r
--- /dev/null
+package org.argeo.slc.core.deploy;\r
+\r
+public interface WritableDeployment extends ExecutableDeployment {\r
+ public void setDeployedSystem(DeployedSystem deployedSystem);\r
+\r
+ public void setTargetData(TargetData targetData);\r
+\r
+ public void setDeploymentData(DeploymentData deploymentData);\r
+}\r
--- /dev/null
+<html>\r
+<head></head>\r
+<body>\r
+SLC Deploy: deployment of software systems.\r
+</body>\r
+</html>
\ No newline at end of file
--- /dev/null
+<html>\r
+<head></head>\r
+<body>\r
+Common classes of teh SLC framework.\r
+</body>\r
+</html>
\ No newline at end of file
--- /dev/null
+package org.argeo.slc.core.structure;\r
+\r
+import java.util.List;\r
+import java.util.Vector;\r
+\r
+import org.apache.commons.logging.Log;\r
+import org.apache.commons.logging.LogFactory;\r
+\r
+/** Default implementation of a <code>StructureRegistry</code>. */\r
+public class DefaultSRegistry implements StructureRegistry {\r
+ private static Log log = LogFactory.getLog(DefaultSRegistry.class);\r
+\r
+ private List<StructureElement> elements = new Vector<StructureElement>();\r
+ private List<StructurePath> paths = new Vector<StructurePath>();\r
+ private String mode = StructureRegistry.ALL;\r
+\r
+ private List<StructurePath> activePaths;\r
+\r
+ public List<StructureElement> listElements() {\r
+ return new Vector<StructureElement>(elements);\r
+ }\r
+\r
+ public List<StructurePath> listPaths() {\r
+ return new Vector<StructurePath>(paths);\r
+ }\r
+\r
+ public void register(StructurePath path, StructureElement element) {\r
+ StructureElement treeSElement = element;\r
+ elements.add(treeSElement);\r
+ paths.add(path);\r
+ log.debug("Registered " + path + " (desc: '"\r
+ + treeSElement.getDescription() + "', position: "\r
+ + elements.size() + ")");\r
+ }\r
+\r
+ public StructureElement getElement(StructurePath path) {\r
+ int index = paths.indexOf(path);\r
+ if (index >= 0) {\r
+ return elements.get(index);\r
+ } else {// not found\r
+ return null;\r
+ }\r
+ }\r
+\r
+ public String getMode() {\r
+ return mode;\r
+ }\r
+\r
+ public void setMode(String mode) {\r
+ this.mode = mode;\r
+ }\r
+\r
+ public List<StructurePath> getActivePaths() {\r
+ return activePaths;\r
+ }\r
+\r
+ public void setActivePaths(List<StructurePath> activePaths) {\r
+ this.activePaths = activePaths;\r
+ }\r
+\r
+}\r
--- /dev/null
+package org.argeo.slc.core.structure;\r
+\r
+\r
+/**\r
+ * Basic implementation of <code>StructureElement</code>.\r
+ * \r
+ * @see TreeSPath\r
+ */\r
+public class SimpleSElement implements StructureElement {\r
+ /** For ORM */\r
+ private Long tid;\r
+ private String description;\r
+\r
+ /** For ORM */\r
+ public SimpleSElement() {\r
+ }\r
+\r
+ /** Constructor */\r
+ public SimpleSElement(String description) {\r
+ this.description = description;\r
+ }\r
+\r
+ /** Constructor */\r
+ public SimpleSElement(String description, String defaultDescription) {\r
+ this(description != null ? description : defaultDescription);\r
+ }\r
+\r
+ public String getDescription() {\r
+ return description;\r
+ }\r
+\r
+ /** Sets the description. */\r
+ public void setDescription(String description) {\r
+ this.description = description;\r
+ }\r
+\r
+ Long getTid() {\r
+ return tid;\r
+ }\r
+\r
+ void setTid(Long tid) {\r
+ this.tid = tid;\r
+ }\r
+\r
+}\r
--- /dev/null
+package org.argeo.slc.core.structure;\r
+\r
+/**\r
+ * Wrapper for an element, which is able to propagate registration to\r
+ * sub-elements.\r
+ */\r
+public interface StructureAware {\r
+ /** Called <b>after</b> registration. */\r
+ public void notifyCurrentPath(StructureRegistry registry, StructurePath path);\r
+}\r
--- /dev/null
+package org.argeo.slc.core.structure;\r
+\r
+/**\r
+ * Atomic element holding metadata such as description about the element which\r
+ * registered.\r
+ */\r
+public interface StructureElement {\r
+ /** Description of this element. */\r
+ public String getDescription();\r
+}\r
--- /dev/null
+package org.argeo.slc.core.structure;\r
+\r
+/**\r
+ * Path allowing to uniquely identify a <code>StructureElement</code> within a\r
+ * registry.\r
+ * \r
+ * @see StructureElement\r
+ * @see StructurePath\r
+ */\r
+public interface StructurePath {\r
+ /**\r
+ * Unique representation as a string. Most implementation will also provide\r
+ * a mean to interpret this string.\r
+ */\r
+ public String getAsUniqueString();\r
+}\r
--- /dev/null
+package org.argeo.slc.core.structure;\r
+\r
+import java.util.List;\r
+\r
+/** Registry where the whole structure is stored. */\r
+public interface StructureRegistry {\r
+ /** Read mode: the structure is only read. */\r
+ public static String READ = "READ";\r
+ /** All mode: everything is executed regardless of the active paths. */\r
+ public static String ALL = "ALL";\r
+ /** Active mode: only the active paths are executed. */\r
+ public static String ACTIVE = "ACTIVE";\r
+\r
+ /** Adds an element to the registry. */\r
+ public void register(StructurePath path, StructureElement element);\r
+\r
+ /** Lists <b>all</b> registered elements. */\r
+ public List<StructureElement> listElements();\r
+\r
+ /** Lists <b>all</b> registered elements. */\r
+ public List<StructurePath> listPaths();\r
+\r
+ /** Gets a element based on its path. */\r
+ public StructureElement getElement(StructurePath path);\r
+\r
+ /**\r
+ * Set the interpreter mode: read, all or active.\r
+ * \r
+ * @see #READ\r
+ * @see #ALL\r
+ * @see #ACTIVE\r
+ */\r
+ public void setMode(String mode);\r
+\r
+ /**\r
+ * Gets the current interpreter mode.\r
+ * \r
+ * @see #READ\r
+ * @see #ALL\r
+ * @see #ACTIVE\r
+ */\r
+ public String getMode();\r
+\r
+ /**\r
+ * Gets the list of active paths, which will be run if executed in\r
+ * <code>ACTIVE</code> mode.\r
+ */\r
+ public List<StructurePath> getActivePaths();\r
+\r
+ /**\r
+ * Sets the list of active path, which will be run if executed in\r
+ * <code>ACTIVE</code> mode.\r
+ */\r
+ public void setActivePaths(List<StructurePath> activePaths);\r
+}\r
--- /dev/null
+<html>\r
+<head></head>\r
+<body>\r
+SLC Structure framework allowing to uniquely reference actions.\r
+</body>\r
+</html>
\ No newline at end of file
--- /dev/null
+package org.argeo.slc.core.structure.tree;\r
+\r
+import java.util.List;\r
+import java.util.StringTokenizer;\r
+import java.util.Vector;\r
+\r
+import org.argeo.slc.core.SlcException;\r
+import org.argeo.slc.core.structure.StructurePath;\r
+import org.argeo.slc.core.structure.StructureRegistry;\r
+\r
+/**\r
+ * Path for tree based <code>StructureRegistry</code> implementations.\r
+ */\r
+public class TreeSPath implements StructurePath, Comparable<StructurePath> {\r
+ /** Default character to use a separator: /. */\r
+ public static Character DEFAULT_SEPARATOR = '/';\r
+\r
+ private TreeSPath parent;\r
+ private String name;\r
+ private Character separator = DEFAULT_SEPARATOR;\r
+\r
+ /** For ORM */\r
+ private Long tid;\r
+\r
+ public String getAsUniqueString() {\r
+ String parentStr = parent != null ? parent.getAsUniqueString() : "";\r
+ return parentStr + separator + name;\r
+ }\r
+\r
+ /** Sets all the required data from a string. */\r
+ public void setAsUniqueString(String str) {\r
+ TreeSPath twin = parseToCreatePath(str, getSeparator());\r
+ name = twin.name;\r
+ parent = twin.parent;\r
+ }\r
+\r
+ /** The separator actually used by this path. */\r
+ public Character getSeparator() {\r
+ return separator;\r
+ }\r
+\r
+ /** Gets the parent path. */\r
+ public TreeSPath getParent() {\r
+ return parent;\r
+ }\r
+\r
+ /** Gets the name part of the path. */\r
+ public String getName() {\r
+ return name;\r
+ }\r
+\r
+ /** Create a path without parent. */\r
+ public static TreeSPath createRootPath(String name) {\r
+ TreeSPath path = new TreeSPath();\r
+ path.parent = null;\r
+ path.name = name;\r
+ return path;\r
+ }\r
+\r
+ /** Create a child . */\r
+ public TreeSPath createChild(String name) {\r
+ if (name.indexOf(separator) > -1) {\r
+ throw new SlcException("Tree path name '" + name\r
+ + "' contains separator character " + separator);\r
+ }\r
+ TreeSPath path = new TreeSPath();\r
+ path.parent = this;\r
+ path.name = name;\r
+ return path;\r
+ }\r
+\r
+ /** Parses a string to a path. */\r
+ public static TreeSPath parseToCreatePath(String path) {\r
+ return parseToCreatePath(path, DEFAULT_SEPARATOR);\r
+ }\r
+\r
+ /** Parses a string to a path. */\r
+ public static TreeSPath parseToCreatePath(String path, Character separator) {\r
+ StringTokenizer st = new StringTokenizer(path, Character\r
+ .toString(separator));\r
+\r
+ TreeSPath currPath = null;\r
+ while (st.hasMoreTokens()) {\r
+ if (currPath == null) {// begin\r
+ currPath = createRootPath(st.nextToken());\r
+ } else {\r
+ currPath = currPath.createChild(st.nextToken());\r
+ }\r
+ }\r
+ return currPath;\r
+ }\r
+\r
+ /** Lists the children from a registry. */\r
+ public List<TreeSPath> listChildren(StructureRegistry registry) {\r
+ return listChildrenPaths(registry, this);\r
+ }\r
+\r
+ /** Lists the children from a given path from a registry. */\r
+ public static List<TreeSPath> listChildrenPaths(StructureRegistry registry,\r
+ TreeSPath path) {\r
+ List<TreeSPath> paths = new Vector<TreeSPath>();\r
+ List<StructurePath> allPaths = registry.listPaths();\r
+ for (StructurePath sPath : allPaths) {\r
+ TreeSPath pathT = (TreeSPath) sPath;\r
+ if (pathT.parent != null && pathT.parent.equals(path)) {\r
+ paths.add(pathT);\r
+ }\r
+ }\r
+ return paths;\r
+ }\r
+\r
+ /** Gets the root tree path of this path. */\r
+ public TreeSPath getRoot() {\r
+ TreeSPath root = this;\r
+ while (root.getParent() != null) {\r
+ root = root.getParent();\r
+ }\r
+ return root;\r
+ }\r
+\r
+ /** Depth of this path. */\r
+ public Integer depth() {\r
+ return depthImpl(this);\r
+ }\r
+\r
+ private static int depthImpl(TreeSPath path) {\r
+ if (path.getParent() == null) {\r
+ return 1;\r
+ } else {\r
+ return depthImpl(path.getParent()) + 1;\r
+ }\r
+ }\r
+\r
+ @Override\r
+ public String toString() {\r
+ return getAsUniqueString();\r
+ }\r
+\r
+ @Override\r
+ public boolean equals(Object obj) {\r
+ if (obj instanceof StructurePath) {\r
+ StructurePath path = (StructurePath) obj;\r
+ return getAsUniqueString().equals(path.getAsUniqueString());\r
+ }\r
+ return false;\r
+ }\r
+\r
+ public int compareTo(StructurePath o) {\r
+ return getAsUniqueString().compareTo(o.getAsUniqueString());\r
+ }\r
+\r
+ Long getTid() {\r
+ return tid;\r
+ }\r
+\r
+ void setTid(Long tid) {\r
+ this.tid = tid;\r
+ }\r
+\r
+ /** Sets the separator character to use. */\r
+ public void setSeparator(Character separator) {\r
+ this.separator = separator;\r
+ }\r
+\r
+ /** Sets the parent (for ORM). */\r
+ protected void setParent(TreeSPath parent) {\r
+ this.parent = parent;\r
+ }\r
+\r
+ /** Sets the name (for ORM). */\r
+ protected void setName(String name) {\r
+ this.name = name;\r
+ }\r
+\r
+}\r
--- /dev/null
+package org.argeo.slc.core.structure.tree;\r
+\r
+import java.util.List;\r
+import java.util.Map;\r
+import java.util.TreeMap;\r
+import java.util.Vector;\r
+\r
+import org.argeo.slc.core.UnsupportedException;\r
+import org.argeo.slc.core.structure.SimpleSElement;\r
+import org.argeo.slc.core.structure.StructureElement;\r
+import org.argeo.slc.core.structure.StructurePath;\r
+import org.argeo.slc.core.structure.StructureRegistry;\r
+\r
+/** Tree based implementation of a structure registry. */\r
+public class TreeSRegistry implements StructureRegistry {\r
+ /** For ORM */\r
+ private Long tid;\r
+ private TreeSPath root;\r
+ private Map<TreeSPath, SimpleSElement> elements = new TreeMap<TreeSPath, SimpleSElement>();\r
+\r
+ private String mode = StructureRegistry.ALL;\r
+\r
+ private List<StructurePath> activePaths;\r
+\r
+ public StructureElement getElement(StructurePath path) {\r
+ return elements.get(path);\r
+ }\r
+\r
+ public List<StructureElement> listElements() {\r
+ return new Vector<StructureElement>(elements.values());\r
+ }\r
+\r
+ public List<StructurePath> listPaths() {\r
+ return new Vector<StructurePath>(elements.keySet());\r
+ }\r
+\r
+ public void register(StructurePath path, StructureElement element) {\r
+ final SimpleSElement simpleSElement;\r
+ if (element instanceof SimpleSElement) {\r
+ simpleSElement = (SimpleSElement) element;\r
+ } else {\r
+ simpleSElement = new SimpleSElement(element.getDescription());\r
+ }\r
+\r
+ if (!(path instanceof TreeSPath))\r
+ throw new UnsupportedException("path", path);\r
+\r
+ elements.put((TreeSPath) path, simpleSElement);\r
+\r
+ }\r
+\r
+ public String getMode() {\r
+ return mode;\r
+ }\r
+\r
+ public void setMode(String mode) {\r
+ this.mode = mode;\r
+ }\r
+\r
+ public List<StructurePath> getActivePaths() {\r
+ return activePaths;\r
+ }\r
+\r
+ public void setActivePaths(List<StructurePath> activePaths) {\r
+ this.activePaths = activePaths;\r
+ }\r
+\r
+ /** Gets the related root path. */\r
+ public TreeSPath getRoot() {\r
+ return root;\r
+ }\r
+\r
+ /** Sets the related root path. */\r
+ public void setRoot(TreeSPath root) {\r
+ this.root = root;\r
+ }\r
+\r
+ /** Gets the elements. */\r
+ public Map<TreeSPath, SimpleSElement> getElements() {\r
+ return elements;\r
+ }\r
+\r
+ /** Sets the elements (for ORM). */\r
+ public void setElements(Map<TreeSPath, SimpleSElement> elements) {\r
+ this.elements = elements;\r
+ }\r
+\r
+ Long getTid() {\r
+ return tid;\r
+ }\r
+\r
+ void setTid(Long tid) {\r
+ this.tid = tid;\r
+ }\r
+\r
+}\r
--- /dev/null
+<html>\r
+<head></head>\r
+<body>\r
+Tree-based implementation of the SLC structure framework.\r
+</body>\r
+</html>
\ No newline at end of file
--- /dev/null
+package org.argeo.slc.core.test;\r
+\r
+/** A test run that can be executed */\r
+public interface ExecutableTestRun extends TestRun {\r
+\r
+ /** Executes this test run. */\r
+ public void execute();\r
+\r
+}\r
--- /dev/null
+package org.argeo.slc.core.test;\r
+\r
+import org.argeo.slc.core.SlcException;\r
+\r
+/**\r
+ * Exception to throw when a test definition cannot interpret the provided test\r
+ * data.\r
+ */\r
+public class IncompatibleTestDataException extends SlcException {\r
+ static final long serialVersionUID = 1l;\r
+\r
+ public IncompatibleTestDataException(TestData testData,\r
+ TestDefinition testDefinition) {\r
+ super("TestData " + testData.getClass()\r
+ + " is not compatible with TestDefinition "\r
+ + testDefinition.getClass());\r
+ }\r
+}\r
--- /dev/null
+package org.argeo.slc.core.test;\r
+\r
+import org.argeo.slc.core.deploy.DeployedSystemId;\r
+\r
+/**\r
+ * Basic implementation of test run id based on a long value and a reference to\r
+ * a deployed system id.\r
+ */\r
+public class NumericTRId implements TestResultId {\r
+ /** For ORM */\r
+ private Long tid;\r
+\r
+ private Long value;\r
+ private DeployedSystemId deployedSystemId;\r
+\r
+ /**\r
+ * Initializes the long value with the current time (based on\r
+ * <code>java.lang.System.currentTimeMillis()</code>).\r
+ */\r
+ public void init() {\r
+ if (getValue() == null) {\r
+ setValue(System.currentTimeMillis());\r
+ }\r
+ }\r
+\r
+ public Long getValue() {\r
+ return value;\r
+ }\r
+\r
+ public void setValue(Long value) {\r
+ this.value = value;\r
+ }\r
+\r
+ public DeployedSystemId getDeployedSystemId() {\r
+ return deployedSystemId;\r
+ }\r
+\r
+ public void setDeployedSystemId(DeployedSystemId deployedSystemId) {\r
+ this.deployedSystemId = deployedSystemId;\r
+ }\r
+\r
+ @Override\r
+ public boolean equals(Object obj) {\r
+ return value.toString().equals(obj.toString());\r
+ }\r
+\r
+ @Override\r
+ public String toString() {\r
+ return value.toString();\r
+ }\r
+\r
+ Long getTid() {\r
+ return tid;\r
+ }\r
+\r
+ void setTid(Long tid) {\r
+ this.tid = tid;\r
+ }\r
+\r
+}\r
--- /dev/null
+package org.argeo.slc.core.test;\r
+\r
+/**\r
+ * <p>\r
+ * Basic implementation of a result part, implementing the standard three status\r
+ * approach for test results.\r
+ * </p>\r
+ * \r
+ * @see TestStatus\r
+ */\r
+public class SimpleResultPart implements TestResultPart, TestStatus {\r
+\r
+ /** For ORM */\r
+ private Long tid;\r
+\r
+ private Integer status;\r
+ private String message;\r
+ private Throwable exception;\r
+\r
+ public SimpleResultPart() {\r
+ }\r
+\r
+ public SimpleResultPart(Integer status, String message) {\r
+ this(status, message, null);\r
+ }\r
+\r
+ public SimpleResultPart(Integer status, String message, Throwable exception) {\r
+ this.status = status;\r
+ this.message = message;\r
+ this.exception = exception;\r
+ }\r
+\r
+ public String getMessage() {\r
+ return message;\r
+ }\r
+\r
+ public void setMessage(String message) {\r
+ this.message = message;\r
+ }\r
+\r
+ public void setStatus(Integer status) {\r
+ this.status = status;\r
+ }\r
+\r
+ public Integer getStatus() {\r
+ return status;\r
+ }\r
+\r
+ public Throwable getException() {\r
+ return exception;\r
+ }\r
+\r
+ public void setException(Throwable exception) {\r
+ this.exception = exception;\r
+ }\r
+\r
+ @Override\r
+ public String toString() {\r
+ StringBuffer buf = new StringBuffer("");\r
+ if (status == PASSED) {\r
+ buf.append("PASSED ");\r
+ } else if (status == FAILED) {\r
+ buf.append("FAILED ");\r
+ } else if (status == ERROR) {\r
+ buf.append("ERROR ");\r
+ }\r
+ buf.append(message);\r
+ if (exception != null) {\r
+ buf.append("(").append(exception.getMessage()).append(")");\r
+ }\r
+ return buf.toString();\r
+ }\r
+\r
+ Long getTid() {\r
+ return tid;\r
+ }\r
+\r
+ void setTid(Long tid) {\r
+ this.tid = tid;\r
+ }\r
+\r
+}\r
--- /dev/null
+package org.argeo.slc.core.test;\r
+\r
+import java.util.Date;\r
+import java.util.List;\r
+import java.util.Vector;\r
+\r
+import org.apache.commons.logging.Log;\r
+import org.apache.commons.logging.LogFactory;\r
+\r
+/**\r
+ * Basic implementation of a test result containing only a list of result parts.\r
+ */\r
+public class SimpleTestResult implements TestResult {\r
+ private static Log log = LogFactory.getLog(SimpleTestResult.class);\r
+\r
+ private TestResultId testResultId;\r
+ private Date closeDate;\r
+ private List<TestResultPart> parts = new Vector<TestResultPart>();\r
+\r
+ public void addResultPart(TestResultPart part) {\r
+ parts.add(part);\r
+ if (log.isDebugEnabled())\r
+ log.debug(part);\r
+ }\r
+\r
+ public void close() {\r
+ parts.clear();\r
+ closeDate = new Date();\r
+ }\r
+\r
+ public TestResultId getTestResultId() {\r
+ return testResultId;\r
+ }\r
+\r
+ /** Sets the test result id. */\r
+ public void setTestResultId(TestResultId testResultId) {\r
+ this.testResultId = testResultId;\r
+ }\r
+\r
+ public List<TestResultPart> getParts() {\r
+ return parts;\r
+ }\r
+\r
+ public Date getCloseDate() {\r
+ return closeDate;\r
+ }\r
+\r
+}\r
--- /dev/null
+package org.argeo.slc.core.test;\r
+\r
+import org.argeo.slc.core.deploy.DeployedSystem;\r
+\r
+/**\r
+ * A basic bean implementation of a <code>WritableTestRun</code>, holding\r
+ * references to the various parts of a test run.\r
+ */\r
+public class SimpleTestRun implements WritableTestRun, ExecutableTestRun {\r
+ private DeployedSystem deployedSystem;\r
+ private TestData testData;\r
+ private TestDefinition testDefinition;\r
+ private TestResult testResult;\r
+\r
+ /** Executes the underlying test definition. */\r
+ public void execute() {\r
+ testDefinition.execute(this);\r
+ }\r
+\r
+ public DeployedSystem getDeployedSystem() {\r
+ return deployedSystem;\r
+ }\r
+\r
+ public void setDeployedSystem(DeployedSystem deployedSystem) {\r
+ this.deployedSystem = deployedSystem;\r
+ }\r
+\r
+ public TestData getTestData() {\r
+ return testData;\r
+ }\r
+\r
+ public void setTestData(TestData testData) {\r
+ this.testData = testData;\r
+ }\r
+\r
+ public TestDefinition getTestDefinition() {\r
+ return testDefinition;\r
+ }\r
+\r
+ public void setTestDefinition(TestDefinition testDefinition) {\r
+ this.testDefinition = testDefinition;\r
+ }\r
+\r
+ public TestResult getTestResult() {\r
+ return testResult;\r
+ }\r
+\r
+ public void setTestResult(TestResult testResult) {\r
+ this.testResult = testResult;\r
+ }\r
+\r
+}\r
--- /dev/null
+package org.argeo.slc.core.test;\r
+\r
+/**\r
+ * Any data required by a test in order to run: configuration, expected,\r
+ * reached, etc.\r
+ */\r
+public interface TestData {\r
+\r
+}\r
--- /dev/null
+package org.argeo.slc.core.test;\r
+\r
+/**\r
+ * The programmatic definition of a test, which will be associated with\r
+ * transient objects within a test run.\r
+ */\r
+public interface TestDefinition extends TestStatus {\r
+ /** Performs the test. */\r
+ public void execute(TestRun testRun);\r
+}\r
--- /dev/null
+package org.argeo.slc.core.test;\r
+\r
+/**\r
+ * A report that can be generated based on a given test result. <b>This\r
+ * interface may change in the future.</b>\r
+ */\r
+public interface TestReport {\r
+ /** Performs the actions necessary to generate a report. */\r
+ public void generateTestReport(TestResult result);\r
+}\r
--- /dev/null
+package org.argeo.slc.core.test;\r
+\r
+import java.util.Date;\r
+\r
+/** The result of a test */\r
+public interface TestResult {\r
+ /** Gets the id of the related test result. */\r
+ public TestResultId getTestResultId();\r
+\r
+ /** Adds a part of the result. */\r
+ public void addResultPart(TestResultPart part);\r
+\r
+ /**\r
+ * Marks that the collection of test results is completed and free the\r
+ * related resources (also closing listeners).\r
+ */\r
+ public void close();\r
+\r
+ /**\r
+ * The date when this test result was closed. Can be null, which means the\r
+ * result is not closed.\r
+ */\r
+ public Date getCloseDate();\r
+}\r
--- /dev/null
+package org.argeo.slc.core.test;\r
+\r
+import org.argeo.slc.core.deploy.DeployedSystemId;\r
+\r
+/** The unique id referencing a test result. */\r
+public interface TestResultId {\r
+ /** Gets the id of the related deployed system. */\r
+ public DeployedSystemId getDeployedSystemId();\r
+\r
+}\r
--- /dev/null
+package org.argeo.slc.core.test;\r
+\r
+/** Listener to the operations on a test result. */\r
+public interface TestResultListener {\r
+ /** Notified when a part was added to a test result. */\r
+ public void resultPartAdded(TestResult testResult,\r
+ TestResultPart testResultPart);\r
+\r
+ /** Stops listening and release the related resources. */\r
+ public void close(TestResult testResult);\r
+}\r
--- /dev/null
+package org.argeo.slc.core.test;\r
+\r
+/**\r
+ * Part of a test result.\r
+ * \r
+ * @see TestResult\r
+ */\r
+public interface TestResultPart {\r
+ public Integer getStatus();\r
+\r
+ public String getMessage();\r
+}\r
--- /dev/null
+package org.argeo.slc.core.test;\r
+\r
+import org.argeo.slc.core.deploy.DeployedSystem;\r
+\r
+/** The actual run of a test */\r
+public interface TestRun {\r
+ /** Gets the related test definition. */\r
+ public TestDefinition getTestDefinition();\r
+\r
+ /** Gets the related test data */\r
+ public TestData getTestData();\r
+\r
+ /** Gets the related deployed system. */\r
+ public DeployedSystem getDeployedSystem();\r
+\r
+ /** Gets the related result where to record results. */\r
+ public TestResult getTestResult();\r
+}\r
--- /dev/null
+package org.argeo.slc.core.test;\r
+\r
+/**\r
+ * Simple statuses.\r
+ * <p>\r
+ * <ul>\r
+ * <li>{@link #PASSED}: the test succeeded</li>\r
+ * <li>{@link #FAILED}: the test could run, but did not reach the expected\r
+ * result</li>\r
+ * <li>{@link #ERROR}: an error during the test run prevented to get a\r
+ * significant information on the tested system.</li>\r
+ * </ul>\r
+ * </p>\r
+ */\r
+public interface TestStatus {\r
+ /** The flag for a passed test: 0 */\r
+ public final static int PASSED = 0;\r
+ /** The flag for a failed test: 1 */\r
+ public final static int FAILED = 1;\r
+ /**\r
+ * The flag for a test which could not properly run because of an error\r
+ * (there is no feedback on the behavior of the tested component): 2\r
+ */\r
+ public final static int ERROR = 2;\r
+}\r
--- /dev/null
+package org.argeo.slc.core.test;\r
+\r
+import org.argeo.slc.core.deploy.DeployedSystem;\r
+\r
+/** Test run whose various components can be externally set. */\r
+public interface WritableTestRun extends ExecutableTestRun {\r
+ public void setDeployedSystem(DeployedSystem deployedSystem);\r
+\r
+ public void setTestData(TestData testData);\r
+\r
+ public void setTestDefinition(TestDefinition testDefinition);\r
+\r
+ public void setTestResult(TestResult testResult);\r
+}\r
--- /dev/null
+<html>\r
+<head></head>\r
+<body>\r
+SLC Test: test of software systems.\r
+</body>\r
+</html>
\ No newline at end of file
--- /dev/null
+package org.argeo.slc.core.test.tree;\r
+\r
+import java.util.Vector;\r
+\r
+import org.argeo.slc.core.structure.tree.TreeSPath;\r
+import org.argeo.slc.core.test.NumericTRId;\r
+import org.argeo.slc.core.test.TestResult;\r
+import org.argeo.slc.core.test.TestResultListener;\r
+import org.argeo.slc.core.test.TestResultPart;\r
+\r
+/**\r
+ * Abstract asynchronous implementation of a listener listening to a\r
+ * <code>TreeTestResult</code>.\r
+ * \r
+ * @see TreeTestResult\r
+ */\r
+public abstract class AsynchronousTreeTestResultListener implements\r
+ TestResultListener, Runnable {\r
+ private Vector<PartStruct> partStructs = new Vector<PartStruct>();\r
+ private Thread thread;\r
+\r
+ private Boolean synchronous = false;\r
+ \r
+ protected AsynchronousTreeTestResultListener(){\r
+ this(false);\r
+ }\r
+\r
+ protected AsynchronousTreeTestResultListener(Boolean synchronousByDefault){\r
+ synchronous = synchronousByDefault;\r
+ }\r
+\r
+ /** Starts the underlying thread. */\r
+ public void init() {\r
+ if (!synchronous) {\r
+ thread = new Thread(this);\r
+ thread.start();\r
+ }\r
+ }\r
+\r
+ /** Finish the remaining and destroy */\r
+ public void close(TestResult testResult) {\r
+ // FIXME: make behavior more robust when multiple results are\r
+ // registering this listener.\r
+ synchronized (partStructs) {\r
+ // TODO: put a timeout\r
+ while (partStructs.size() != 0) {\r
+ try {\r
+ partStructs.wait(500);\r
+ } catch (InterruptedException e) {\r
+ // silent\r
+ }\r
+ }\r
+ thread = null;\r
+ partStructs.notifyAll();\r
+ }\r
+ postClose((TreeTestResult) testResult);\r
+ }\r
+\r
+ public final void resultPartAdded(TestResult testResult,\r
+ TestResultPart testResultPart) {\r
+ TreeTestResult result = (TreeTestResult) testResult;\r
+ PartStruct partStruct = new PartStruct(result.getCurrentPath(),\r
+ (NumericTRId) result.getTestResultId(), testResultPart, result);\r
+\r
+ if (!synchronous) {\r
+ synchronized (partStructs) {\r
+ partStructs.add(partStruct);\r
+ partStructs.notifyAll();\r
+ }\r
+ } else {\r
+ resultPartAdded(partStruct);\r
+ }\r
+ }\r
+\r
+ /** Called when a result part has been added. */\r
+ protected abstract void resultPartAdded(PartStruct partStruct);\r
+\r
+ /**\r
+ * Called at the end of close. Default implementation is empty. To be\r
+ * overridden.\r
+ */\r
+ protected void postClose(TreeTestResult testResult) {\r
+\r
+ }\r
+\r
+ public void run() {\r
+ while (thread != null) {\r
+ synchronized (partStructs) {\r
+ for (PartStruct partStruct : partStructs) {\r
+ resultPartAdded(partStruct);\r
+ }\r
+\r
+ partStructs.clear();\r
+ partStructs.notifyAll();\r
+ while (partStructs.size() == 0) {\r
+ try {\r
+ partStructs.wait();\r
+ } catch (InterruptedException e) {\r
+ // silent\r
+ }\r
+ }\r
+ }\r
+ }\r
+ }\r
+\r
+ /** Structure used to pass tree specific information to subclasses. */\r
+ protected static class PartStruct {\r
+ /** The tree path of this part. */\r
+ public final TreeSPath path;\r
+ /** The test result id of the related test result */\r
+ public final NumericTRId resultId;\r
+ /** The part itself */\r
+ public final TestResultPart part;\r
+ /** The tree test result itself. */\r
+ public final TreeTestResult result;\r
+\r
+ /** Constructor */\r
+ public PartStruct(TreeSPath path, NumericTRId resultId,\r
+ TestResultPart part, TreeTestResult result) {\r
+ super();\r
+ this.path = path;\r
+ this.resultId = resultId;\r
+ this.part = part;\r
+ this.result = result;\r
+ }\r
+\r
+ }\r
+\r
+ public Boolean getSynchronous() {\r
+ return synchronous;\r
+ }\r
+\r
+ public void setSynchronous(Boolean synchronous) {\r
+ this.synchronous = synchronous;\r
+ }\r
+\r
+}\r
--- /dev/null
+package org.argeo.slc.core.test.tree;\r
+\r
+import java.util.List;\r
+import java.util.Vector;\r
+\r
+import org.apache.commons.logging.Log;\r
+import org.apache.commons.logging.LogFactory;\r
+\r
+import org.argeo.slc.core.structure.SimpleSElement;\r
+import org.argeo.slc.core.structure.StructureAware;\r
+import org.argeo.slc.core.structure.StructureElement;\r
+import org.argeo.slc.core.structure.StructurePath;\r
+import org.argeo.slc.core.structure.StructureRegistry;\r
+import org.argeo.slc.core.structure.tree.TreeSPath;\r
+import org.argeo.slc.core.test.TestDefinition;\r
+import org.argeo.slc.core.test.TestResult;\r
+import org.argeo.slc.core.test.TestRun;\r
+\r
+/**\r
+ * Collection of test definitions propagating tree structure information to its\r
+ * children.\r
+ */\r
+public class CompositeTreeTestDefinition implements TestDefinition,\r
+ StructureAware {\r
+ private Log log = LogFactory.getLog(CompositeTreeTestDefinition.class);\r
+\r
+ private List<TestDefinition> tasks = null;\r
+ private List<TreeSPath> taskPaths = null;\r
+ private TreeSPath path;\r
+ private StructureRegistry registry;\r
+\r
+ public void execute(TestRun testRun) {\r
+ log.info("Execute sequence of test definitions...");\r
+\r
+ int i = 0;\r
+ for (TestDefinition task : tasks) {\r
+ TestResult result = testRun.getTestResult();\r
+ if (result instanceof StructureAware) {\r
+ ((StructureAware) result).notifyCurrentPath(registry, taskPaths\r
+ .get(i));\r
+ }\r
+\r
+ task.execute(testRun);\r
+\r
+ // Reset current path in case it has been changed\r
+ if (result instanceof StructureAware) {\r
+ ((StructureAware) result).notifyCurrentPath(registry, path);\r
+ }\r
+ i++;\r
+ }\r
+ }\r
+\r
+ /** Sets the list of children test definitions */\r
+ public void setTasks(List<TestDefinition> tasks) {\r
+ this.tasks = tasks;\r
+ if (tasks != null) {\r
+ taskPaths = new Vector<TreeSPath>();\r
+ }\r
+ }\r
+\r
+ public void notifyCurrentPath(StructureRegistry registry, StructurePath path) {\r
+ this.path = (TreeSPath) path;\r
+ this.registry = registry;\r
+ \r
+ // clear task paths\r
+ taskPaths.clear();\r
+\r
+ Integer count = 0;\r
+ for (TestDefinition task : tasks) {\r
+ final StructureElement element;\r
+ if (task instanceof StructureElement) {\r
+ element = (StructureElement) task;\r
+ } else {\r
+ element = new SimpleSElement("[no desc]");\r
+ }\r
+ TreeSPath taskPath = this.path.createChild(count.toString());\r
+ registry.register(taskPath, element);\r
+ taskPaths.add(taskPath);\r
+ if (task instanceof StructureAware) {\r
+ ((StructureAware) task).notifyCurrentPath(registry, taskPath);\r
+ }\r
+ count++;\r
+ }\r
+ }\r
+\r
+}\r
--- /dev/null
+package org.argeo.slc.core.test.tree;\r
+\r
+import java.util.List;\r
+import java.util.Vector;\r
+\r
+import org.argeo.slc.core.test.TestResultPart;\r
+\r
+/**\r
+ * List of <code>TestResultPart</code>. It can be used to build complex\r
+ * <code>TestResult</code> affording the possibility to a\r
+ * <code>TestDefinition</code> to add a list of result part under the same\r
+ * <code>StructurePath</code>.\r
+ * \r
+ * @see TreeTestResult\r
+ */\r
+public class PartSubList {\r
+\r
+ /** For ORM */\r
+ private Long tid;\r
+\r
+ private List<TestResultPart> parts = new Vector<TestResultPart>();\r
+\r
+ /** Gets the result parts. */\r
+ public List<TestResultPart> getParts() {\r
+ return parts;\r
+ }\r
+\r
+ /** Sets the result parts. */\r
+ public void setParts(List<TestResultPart> parts) {\r
+ this.parts = parts;\r
+ }\r
+\r
+ Long getTid() {\r
+ return tid;\r
+ }\r
+\r
+ void setTid(Long tid) {\r
+ this.tid = tid;\r
+ }\r
+\r
+}\r
--- /dev/null
+package org.argeo.slc.core.test.tree;\r
+\r
+import java.util.Date;\r
+import java.util.List;\r
+import java.util.SortedMap;\r
+import java.util.TreeMap;\r
+import java.util.Vector;\r
+\r
+import org.apache.commons.logging.Log;\r
+import org.apache.commons.logging.LogFactory;\r
+\r
+import org.argeo.slc.core.SlcException;\r
+import org.argeo.slc.core.structure.StructureAware;\r
+import org.argeo.slc.core.structure.StructurePath;\r
+import org.argeo.slc.core.structure.StructureRegistry;\r
+import org.argeo.slc.core.structure.tree.TreeSPath;\r
+import org.argeo.slc.core.test.NumericTRId;\r
+import org.argeo.slc.core.test.TestResult;\r
+import org.argeo.slc.core.test.TestResultId;\r
+import org.argeo.slc.core.test.TestResultListener;\r
+import org.argeo.slc.core.test.TestResultPart;\r
+\r
+/**\r
+ * Complex implementation of a test result compatible with a tree based\r
+ * structure.\r
+ */\r
+public class TreeTestResult implements TestResult, StructureAware {\r
+ private Log log = LogFactory.getLog(TreeTestResult.class);\r
+ /** For ORM */\r
+ private Long tid;\r
+\r
+ private NumericTRId testResultId;\r
+ private List<TestResultListener> listeners = new Vector<TestResultListener>();\r
+\r
+ private TreeSPath currentPath;\r
+\r
+ private Date closeDate;\r
+\r
+ private boolean isClosed = false;\r
+\r
+ private SortedMap<TreeSPath, PartSubList> resultParts = new TreeMap<TreeSPath, PartSubList>();\r
+\r
+ private StructureRegistry registry;\r
+\r
+ public TestResultId getTestResultId() {\r
+ return testResultId;\r
+ }\r
+\r
+ /**\r
+ * Use of a <code>NumericTRId</code> is required by Hibernate. <b>It may\r
+ * change in the future.</b>\r
+ */\r
+ public NumericTRId getNumericResultId() {\r
+ return testResultId;\r
+ }\r
+\r
+ /** Sets the test result id as a numeric test result id. */\r
+ public void setNumericResultId(NumericTRId testResultId) {\r
+ this.testResultId = testResultId;\r
+ }\r
+\r
+ /** Sets the list of listeners. */\r
+ public void setListeners(List<TestResultListener> listeners) {\r
+ this.listeners = listeners;\r
+ }\r
+\r
+ public void addResultPart(TestResultPart part) {\r
+ if (currentPath == null) {\r
+ throw new SlcException("No current path set.");\r
+ }\r
+ PartSubList subList = resultParts.get(currentPath);\r
+ if (subList == null) {\r
+ subList = new PartSubList();\r
+ resultParts.put(currentPath, subList);\r
+ }\r
+ subList.getParts().add(part);\r
+\r
+ // notify listeners\r
+ synchronized (listeners) {\r
+ for (TestResultListener listener : listeners) {\r
+ listener.resultPartAdded(this, part);\r
+ }\r
+ }\r
+ }\r
+\r
+ public void notifyCurrentPath(StructureRegistry registry, StructurePath path) {\r
+ currentPath = (TreeSPath) path;\r
+ this.registry = registry;\r
+ }\r
+\r
+ /** Gets the current path. */\r
+ public TreeSPath getCurrentPath() {\r
+ return currentPath;\r
+ }\r
+\r
+ /** Gets all the results structured as a map of <code>PartSubList<code>s. */\r
+ public SortedMap<TreeSPath, PartSubList> getResultParts() {\r
+ return resultParts;\r
+ }\r
+\r
+ /** Used by ORM systems. */\r
+ void setResultParts(SortedMap<TreeSPath, PartSubList> resultParts) {\r
+ this.resultParts = resultParts;\r
+ }\r
+\r
+ public void close() {\r
+ if (isClosed) {\r
+ throw new SlcException("Test Result #" + getTestResultId()\r
+ + " alredy closed.");\r
+ }\r
+ closeDate = new Date();\r
+\r
+ synchronized (listeners) {\r
+ for (TestResultListener listener : listeners) {\r
+ listener.close(this);\r
+ }\r
+ listeners.clear();\r
+ }\r
+ isClosed = true;\r
+\r
+ log.info("Test Result #" + getTestResultId() + " closed.");\r
+ }\r
+\r
+ Long getTid() {\r
+ return tid;\r
+ }\r
+\r
+ void setTid(Long tid) {\r
+ this.tid = tid;\r
+ }\r
+\r
+ /** Gets the related registry (can be null). */\r
+ public StructureRegistry getRegistry() {\r
+ return registry;\r
+ }\r
+\r
+ /** Sets the related registry. */\r
+ public void setRegistry(StructureRegistry registry) {\r
+ this.registry = registry;\r
+ }\r
+\r
+ public Date getCloseDate() {\r
+ return closeDate;\r
+ }\r
+\r
+ /** Sets the close date (for ORM) */\r
+ public void setCloseDate(Date closeDate) {\r
+ this.closeDate = closeDate;\r
+ }\r
+\r
+}\r
--- /dev/null
+package org.argeo.slc.core.test.tree;\r
+\r
+import org.apache.commons.logging.Log;\r
+import org.apache.commons.logging.LogFactory;\r
+\r
+import org.argeo.slc.core.test.SimpleResultPart;\r
+import org.argeo.slc.core.test.TestResultPart;\r
+import org.argeo.slc.core.test.TestStatus;\r
+\r
+/**\r
+ * Listener logging tree-based test results to the underlying logging system.\r
+ * \r
+ * @see TreeTestResult\r
+ * \r
+ */\r
+public class TreeTestResultLogger extends AsynchronousTreeTestResultListener {\r
+\r
+ private static Log log = LogFactory.getLog(TreeTestResultLogger.class);\r
+ \r
+ public TreeTestResultLogger() {\r
+ super(true);\r
+ }\r
+\r
+ @Override\r
+ protected void resultPartAdded(PartStruct partStruct) {\r
+ TestResultPart part = partStruct.part;\r
+ String msg = partStruct.part + " - " + partStruct.resultId + ":"\r
+ + partStruct.path;\r
+ if (part.getStatus().equals(TestStatus.PASSED)) {\r
+ log.info(msg);\r
+ } else if (part.getStatus().equals(TestStatus.FAILED)) {\r
+ log.warn(msg);\r
+ } else if (part.getStatus().equals(TestStatus.ERROR)) {\r
+ log.error(msg, ((SimpleResultPart) part).getException());\r
+ } else {\r
+ log.error("Unknow test status: " + msg);\r
+ }\r
+ }\r
+\r
+}\r
--- /dev/null
+package org.argeo.slc.core.test.tree;\r
+\r
+import org.apache.commons.logging.Log;\r
+import org.apache.commons.logging.LogFactory;\r
+\r
+import org.argeo.slc.core.structure.SimpleSElement;\r
+import org.argeo.slc.core.structure.StructureRegistry;\r
+import org.argeo.slc.core.structure.tree.TreeSPath;\r
+import org.argeo.slc.core.structure.tree.TreeSRegistry;\r
+import org.argeo.slc.dao.structure.tree.TreeSPathDao;\r
+import org.argeo.slc.dao.structure.tree.TreeSRegistryDao;\r
+import org.argeo.slc.dao.test.TestResultDao;\r
+\r
+/**\r
+ * Listener persisting tree-based results.\r
+ * \r
+ * @see TreeTestResult\r
+ */\r
+public class TreeTestResultPersister extends AsynchronousTreeTestResultListener {\r
+ private static Log log = LogFactory.getLog(TreeTestResultPersister.class);\r
+\r
+ private TestResultDao testResultDao;\r
+ private TreeSPathDao treeSPathDao;\r
+ private TreeSRegistryDao treeSRegistryDao;\r
+\r
+ @Override\r
+ protected void resultPartAdded(PartStruct partStruct) {\r
+ try {\r
+ TreeTestResult persistedResult = (TreeTestResult) testResultDao\r
+ .getTestResult(partStruct.resultId);\r
+\r
+ TreeSPath path = treeSPathDao.getOrCreate(partStruct.path);\r
+\r
+ StructureRegistry localRegistry = partStruct.result.getRegistry();\r
+ TreeSRegistry registry = getOrCreateTreeSRegistry(path);\r
+ syncPath(registry, localRegistry, path);\r
+\r
+ if (persistedResult == null) {\r
+ persistedResult = new TreeTestResult();\r
+ persistedResult.setNumericResultId(partStruct.resultId);\r
+ PartSubList subList = new PartSubList();\r
+ subList.getParts().add(partStruct.part);\r
+ persistedResult.getResultParts().put(path, subList);\r
+\r
+ testResultDao.create(persistedResult);\r
+ } else {\r
+ PartSubList subList = persistedResult.getResultParts()\r
+ .get(path);\r
+ if (subList == null) {\r
+ subList = new PartSubList();\r
+ persistedResult.getResultParts().put(path, subList);\r
+ }\r
+ persistedResult.getResultParts().get(path).getParts().add(\r
+ partStruct.part);\r
+\r
+ if (log.isTraceEnabled()) {\r
+ log.trace("ResultId:" + persistedResult.getTestResultId());\r
+ log.trace("ResultParts size:"\r
+ + persistedResult.getResultParts().size());\r
+ log.trace("Sublist size:" + subList.getParts().size());\r
+ log.trace("Part: " + partStruct.part);\r
+ }\r
+ testResultDao.update(persistedResult);\r
+ }\r
+ } catch (Exception e) {\r
+ log.error("Could not persist part for result #"\r
+ + partStruct.resultId, e);\r
+ }\r
+ }\r
+\r
+ @Override\r
+ protected void postClose(TreeTestResult testResult) {\r
+ TreeTestResult persistedResult = (TreeTestResult) testResultDao\r
+ .getTestResult(testResult.getTestResultId());\r
+\r
+ if (persistedResult != null) {\r
+ persistedResult.setCloseDate(testResult.getCloseDate());\r
+ testResultDao.update(persistedResult);\r
+ }\r
+ if (log.isDebugEnabled())\r
+ log.debug("Closed result persister for result "\r
+ + testResult.getNumericResultId());\r
+ }\r
+\r
+ private TreeSRegistry getOrCreateTreeSRegistry(TreeSPath path) {\r
+ TreeSRegistry registry = treeSRegistryDao.getTreeSRegistry(path);\r
+ if (registry == null) {\r
+ registry = new TreeSRegistry();\r
+ TreeSPath root = treeSPathDao.getOrCreate(path.getRoot());\r
+ registry.setRoot(root);\r
+ treeSRegistryDao.create(registry);\r
+ return treeSRegistryDao.getTreeSRegistry(path);\r
+ } else {\r
+ return registry;\r
+ }\r
+ }\r
+\r
+ /** Sets the DAO to use in order to persist the results. */\r
+ public void setTestResultDao(TestResultDao testResultDao) {\r
+ this.testResultDao = testResultDao;\r
+ }\r
+\r
+ /** Sets the tree structure path DAO. */\r
+ public void setTreeSPathDao(TreeSPathDao treeSPathDao) {\r
+ this.treeSPathDao = treeSPathDao;\r
+ }\r
+\r
+ /** Sets the tree structure registry DAO. */\r
+ public void setTreeSRegistryDao(TreeSRegistryDao treeSRegistryDao) {\r
+ this.treeSRegistryDao = treeSRegistryDao;\r
+ }\r
+\r
+ private void syncPath(TreeSRegistry registry,\r
+ StructureRegistry localRegistry, TreeSPath path) {\r
+ if (path.getParent() != null) {\r
+ TreeSPath parent = treeSPathDao.getOrCreate(path.getParent());\r
+ syncPath(registry, localRegistry, parent);\r
+ }\r
+\r
+ if (registry.getElement(path) == null) {\r
+ if (localRegistry != null) {\r
+ registry.register(path, localRegistry.getElement(path));\r
+ } else {\r
+ registry.register(path, new SimpleSElement(path.getName()));\r
+ }\r
+ treeSRegistryDao.update(registry);\r
+ }\r
+\r
+ }\r
+}\r
--- /dev/null
+package org.argeo.slc.core.test.tree.htmlreport;\r
+\r
+import java.io.File;\r
+import java.io.FileOutputStream;\r
+import java.io.IOException;\r
+import java.io.InputStream;\r
+import java.text.SimpleDateFormat;\r
+import java.util.Comparator;\r
+import java.util.List;\r
+import java.util.SortedSet;\r
+import java.util.TreeSet;\r
+\r
+import org.apache.commons.io.IOUtils;\r
+import org.apache.commons.logging.Log;\r
+import org.apache.commons.logging.LogFactory;\r
+\r
+import org.argeo.slc.core.SlcException;\r
+import org.argeo.slc.core.structure.StructureAware;\r
+import org.argeo.slc.core.structure.StructurePath;\r
+import org.argeo.slc.core.structure.StructureRegistry;\r
+import org.argeo.slc.core.structure.tree.TreeSPath;\r
+import org.argeo.slc.core.test.TestReport;\r
+import org.argeo.slc.core.test.TestResult;\r
+import org.argeo.slc.core.test.tree.TreeTestResult;\r
+import org.argeo.slc.dao.structure.tree.TreeSRegistryDao;\r
+import org.argeo.slc.dao.test.TestResultDao;\r
+\r
+/**\r
+ * Basic implementation of TestReport generating static HTML pages. If a\r
+ * <code>TestResultDao</code> is passed, all the data is dumped, otherwise\r
+ * only the passed <code>TestResult</code>.\r
+ */\r
+public class FullHtmlTreeReport implements TestReport, StructureAware {\r
+ private static final Log log = LogFactory.getLog(FullHtmlTreeReport.class);\r
+ SimpleDateFormat sdf = new SimpleDateFormat("yyyy/MM/dd HH:mm:ss");\r
+\r
+ private TestResultDao testResultDao;\r
+ private TreeSRegistryDao treeSRegistryDao;\r
+ private File reportDir;\r
+\r
+ private StructureRegistry localRegistry;\r
+\r
+ public void generateTestReport(TestResult testResult) {\r
+\r
+ if (testResultDao == null) {\r
+ if (testResult == null)\r
+ throw new SlcException(\r
+ "Cannot generate report without DAO or result instance.");\r
+\r
+ TreeTestResult result = (TreeTestResult) testResult;\r
+ ResultPage page = new ResultPage(this, result);\r
+ page.generate(getRegistry(result));\r
+ } else {\r
+ if (reportDir.exists()) {\r
+ // clean\r
+ for (File file : reportDir.listFiles()) {\r
+ file.delete();\r
+ }\r
+ }\r
+ reportDir.mkdirs();\r
+\r
+ resourceToFile("index.html");\r
+\r
+ ResultsList index = new ResultsList(this);\r
+ List<TestResult> list = testResultDao.listTestResults();\r
+ SortedSet<TestResult> sortedSet = new TreeSet<TestResult>(\r
+ new Comparator<TestResult>() {\r
+\r
+ public int compare(TestResult o1, TestResult o2) {\r
+ if (o1.getCloseDate() == null\r
+ || o2.getCloseDate() == null)\r
+ return 0;\r
+ // inverse date order (last first)\r
+ return o2.getCloseDate().compareTo(\r
+ o1.getCloseDate());\r
+ }\r
+\r
+ });\r
+ sortedSet.addAll(list);\r
+ for (TestResult testRes : sortedSet) {\r
+ TreeTestResult result = (TreeTestResult) testRes;\r
+\r
+ index.addTestResult(result);\r
+ ResultPage page = new ResultPage(this, result);\r
+ page.generate(getRegistry(result));\r
+ }\r
+ index.close();\r
+ }\r
+ log.info("Generated HTML test result report to "+reportDir);\r
+ }\r
+\r
+ /**\r
+ * Generates a result file location based on the report dir and the id of\r
+ * the test result.\r
+ */\r
+ protected File getResultFile(TreeTestResult result) {\r
+ return new File(reportDir.getPath() + File.separator + "slc-result-"\r
+ + result.getTestResultId() + ".html");\r
+ }\r
+\r
+ /** Sets the DAO to use to extract all data. */\r
+ public void setTestResultDao(TestResultDao testResultDao) {\r
+ this.testResultDao = testResultDao;\r
+ }\r
+\r
+ /** Sets the tree structure registry DAO. */\r
+ public void setTreeSRegistryDao(TreeSRegistryDao treeSRegistryDao) {\r
+ this.treeSRegistryDao = treeSRegistryDao;\r
+ }\r
+\r
+ /** Sets the directory where to generate all the data. */\r
+ public void setReportDir(File reportDir) {\r
+ this.reportDir = reportDir;\r
+ }\r
+\r
+ private StructureRegistry getRegistry(TreeTestResult result) {\r
+ StructureRegistry registry = null;\r
+ if (treeSRegistryDao != null) {\r
+ TreeSPath path = result.getResultParts().firstKey();\r
+ registry = treeSRegistryDao.getTreeSRegistry(path);\r
+ }\r
+ if (registry == null) {\r
+ registry = localRegistry;\r
+ }\r
+ if (registry == null) {\r
+ throw new SlcException("No structure registry available");\r
+ }\r
+ return registry;\r
+ }\r
+\r
+ public void notifyCurrentPath(StructureRegistry registry, StructurePath path) {\r
+ this.localRegistry = registry;\r
+ }\r
+\r
+ File getReportDir() {\r
+ return reportDir;\r
+ }\r
+\r
+ void addStyles(StringBuffer buf) {\r
+ try {\r
+ buf.append("<style type=\"text/css\">\n");\r
+ InputStream in = FullHtmlTreeReport.class\r
+ .getResourceAsStream("style.css");\r
+ String styles = IOUtils.toString(in);\r
+ IOUtils.closeQuietly(in);\r
+ buf.append(styles);\r
+ buf.append("\n</style>\n");\r
+ } catch (IOException e) {\r
+ throw new SlcException("Cannot load styles", e);\r
+ }\r
+ }\r
+\r
+ private void resourceToFile(String resourceName) {\r
+ try {\r
+ File file = new File(getReportDir() + File.separator + resourceName);\r
+ InputStream in = FullHtmlTreeReport.class\r
+ .getResourceAsStream(resourceName);\r
+ FileOutputStream out = new FileOutputStream(file);\r
+ IOUtils.copy(in, out);\r
+ IOUtils.closeQuietly(in);\r
+ IOUtils.closeQuietly(out);\r
+ } catch (Exception e) {\r
+ throw new SlcException("Cannot load resource", e);\r
+ }\r
+\r
+ }\r
+\r
+}\r
--- /dev/null
+package org.argeo.slc.core.test.tree.htmlreport;\r
+\r
+import java.io.IOException;\r
+import java.io.PrintWriter;\r
+import java.io.StringWriter;\r
+import java.util.Date;\r
+import java.util.SortedMap;\r
+import java.util.TreeMap;\r
+\r
+import org.apache.commons.io.FileUtils;\r
+import org.apache.commons.io.IOUtils;\r
+import org.apache.commons.logging.Log;\r
+import org.apache.commons.logging.LogFactory;\r
+\r
+import org.argeo.slc.core.structure.StructureElement;\r
+import org.argeo.slc.core.structure.StructureRegistry;\r
+import org.argeo.slc.core.structure.tree.TreeSPath;\r
+import org.argeo.slc.core.test.SimpleResultPart;\r
+import org.argeo.slc.core.test.TestResultPart;\r
+import org.argeo.slc.core.test.TestStatus;\r
+import org.argeo.slc.core.test.tree.PartSubList;\r
+import org.argeo.slc.core.test.tree.TreeTestResult;\r
+\r
+class ResultPage {\r
+ private final static Log log = LogFactory.getLog(ResultPage.class);\r
+\r
+ private final FullHtmlTreeReport report;\r
+ private final TreeTestResult result;\r
+\r
+ ResultPage(FullHtmlTreeReport report, TreeTestResult result) {\r
+ this.report = report;\r
+ this.result = result;\r
+ }\r
+\r
+ /**\r
+ * Generates a result page for one test result\r
+ * \r
+ * @param file\r
+ * file to which generate the HTML\r
+ * @param result\r
+ * the result to dump\r
+ */\r
+ protected void generate(StructureRegistry registry) {\r
+ StringBuffer buf = new StringBuffer("");\r
+ buf.append("<html>\n");\r
+ buf.append("<header>");\r
+ buf.append("<title>Result #").append(result.getTestResultId());\r
+ buf.append("</title>\n");\r
+ report.addStyles(buf);\r
+ buf.append("</header>\n");\r
+\r
+ buf.append("<body>\n");\r
+\r
+ // Header\r
+ buf.append("<a name=\"top\"/>\n");\r
+ buf.append("<h1>Result #").append(result.getTestResultId()).append(\r
+ "</h1>\n");\r
+ Date closeDate = result.getCloseDate();\r
+ if (closeDate == null) {\r
+ buf.append("[Not closed]");\r
+ } else {\r
+ buf.append(report.sdf.format(closeDate));\r
+ }\r
+\r
+ // TOC\r
+ generateToc(buf, registry);\r
+\r
+ generatePartsList(buf, registry);\r
+\r
+ buf.append("</body>");\r
+ buf.append("</html>");\r
+\r
+ try {\r
+ FileUtils.writeStringToFile(report.getResultFile(result), buf\r
+ .toString());\r
+ } catch (IOException e) {\r
+ log.error("Could not save result page.", e);\r
+ }\r
+ }\r
+\r
+ private void generateToc(StringBuffer buf, StructureRegistry registry) {\r
+ buf.append("<h2>Overview</h2>\n");\r
+ SortedMap<TreeSPath, Integer> toc = new TreeMap<TreeSPath, Integer>();\r
+ for (TreeSPath path : result.getResultParts().keySet()) {\r
+ PartSubList subList = (PartSubList) result.getResultParts().get(\r
+ path);\r
+ boolean isFailed = false;\r
+ for (TestResultPart part : subList.getParts()) {\r
+ if (!part.getStatus().equals(TestStatus.PASSED)) {\r
+ isFailed = true;\r
+ break;\r
+ }\r
+ }\r
+ fillToc(toc, path, isFailed);\r
+ }\r
+\r
+ buf.append("<table border=\"0\">\n");\r
+ for (TreeSPath path : toc.keySet()) {\r
+ boolean inResult = result.getResultParts().containsKey(path);\r
+ boolean isFailed = !toc.get(path).equals(TestStatus.PASSED);\r
+\r
+ buf.append("<tr><td class=\"").append(\r
+ isFailed ? "failed" : "passed").append("\">");\r
+ int depth = path.depth();\r
+ for (int i = 0; i < depth; i++) {\r
+ buf.append(" ");\r
+ }\r
+\r
+ if (inResult) {\r
+ buf.append("<a href=\"#").append(anchor(path)).append(\r
+ "\" class=\"").append(isFailed ? "failed" : "passed")\r
+ .append("\"><b>");\r
+ }\r
+ if (registry != null) {\r
+ StructureElement element = registry.getElement(path);\r
+ if (element != null) {\r
+ buf.append(element.getDescription());\r
+ } else {\r
+ buf.append(path.getName());\r
+ }\r
+ }\r
+ if (inResult) {\r
+ buf.append("</b></a>");\r
+ }\r
+ buf.append("</td></tr>\n");\r
+ }\r
+ buf.append("</table>\n");\r
+ buf.append("<hr/>\n");\r
+ }\r
+\r
+ private void generatePartsList(StringBuffer buf, StructureRegistry registry) {\r
+ for (TreeSPath path : result.getResultParts().keySet()) {\r
+ buf.append("<p>\n");\r
+ buf.append("<a name=\"").append(anchor(path)).append("\"></a>");\r
+ buf.append("<h2>");\r
+ describedPath(path, registry, buf);\r
+ buf.append("</h2>");\r
+\r
+ PartSubList subList = (PartSubList) result.getResultParts().get(\r
+ path);\r
+ buf.append("<table border=0>\n");\r
+ int displayedIndex = 1;// for display only\r
+ for (TestResultPart part : subList.getParts()) {\r
+ SimpleResultPart sPart = (SimpleResultPart) part;\r
+ String clss = "";\r
+ if (sPart.getStatus().equals(TestStatus.PASSED)) {\r
+ clss = "passed";\r
+ } else {\r
+ clss = "failed";\r
+ }\r
+ buf.append("<tr>");\r
+ buf.append("<td><b>").append(displayedIndex)\r
+ .append("</b></td>");\r
+ buf.append("<td class=\"").append(clss).append("\">");\r
+\r
+ buf.append(sPart.getMessage());\r
+ if (sPart.getStatus().equals(TestStatus.ERROR)) {\r
+ buf\r
+ .append("<p><b>An unexpected error prevented the test to run properly.</b>");\r
+ Throwable exception = sPart.getException();\r
+ if (exception != null) {\r
+ StringWriter writer = new StringWriter();\r
+ exception.printStackTrace(new PrintWriter(writer));\r
+ buf.append("<br/><pre>");\r
+ buf.append(writer.toString());\r
+ buf.append("</pre>");\r
+ IOUtils.closeQuietly(writer);\r
+ }\r
+ buf.append("</p>");\r
+ }\r
+ buf.append("</td>");\r
+ buf.append("</tr>\n");\r
+\r
+ displayedIndex++;\r
+ }\r
+ buf.append("</table>\n");\r
+ buf.append("<a class=\"nav\" href=\"#top\">top</a>\n");\r
+ buf.append("<hr/>\n");\r
+ }\r
+ }\r
+\r
+ private void fillToc(SortedMap<TreeSPath, Integer> toc, TreeSPath path,\r
+ boolean isFailed) {\r
+ if (isFailed) {\r
+ toc.put(path, TestStatus.FAILED);\r
+ } else {\r
+ if (!toc.containsKey(path)) {\r
+ toc.put(path, TestStatus.PASSED);\r
+ }\r
+ }\r
+\r
+ if (path.getParent() != null) {\r
+ fillToc(toc, path.getParent(), isFailed);\r
+ }\r
+ }\r
+\r
+ private String anchor(TreeSPath path) {\r
+ return path.getAsUniqueString().replace(path.getSeparator(), '_');\r
+ }\r
+\r
+ private void describedPath(TreeSPath path, StructureRegistry registry,\r
+ StringBuffer buf) {\r
+ // StringBuffer buf = new StringBuffer("");\r
+ if (path.getParent() != null) {\r
+ describedPath(path.getParent(), registry, buf);\r
+ }\r
+ String description = path.getName();\r
+ if (registry != null) {\r
+ StructureElement element = registry.getElement(path);\r
+ if (element != null) {\r
+ description = element.getDescription();\r
+ }\r
+ }\r
+ buf.append('/').append(description);\r
+ }\r
+}\r
--- /dev/null
+package org.argeo.slc.core.test.tree.htmlreport;\r
+\r
+import java.io.File;\r
+import java.io.FileWriter;\r
+import java.io.IOException;\r
+import java.util.Date;\r
+\r
+import org.argeo.slc.core.test.tree.TreeTestResult;\r
+\r
+class ResultsList {\r
+ private final FullHtmlTreeReport report;\r
+ private final StringBuffer buf = new StringBuffer("");\r
+\r
+ ResultsList(FullHtmlTreeReport report) {\r
+ this.report = report;\r
+\r
+ buf.append("<html><header><title>Results</title></header><body>");\r
+ buf.append("<header>");\r
+ buf.append("<title>Results</title>\n");\r
+ report.addStyles(buf);\r
+ buf.append("</header>\n");\r
+ buf.append("<body>\n");\r
+\r
+ buf.append("<h1>Results</h1>\n");\r
+ buf.append("<table border=\"0\" cellspacing=\"1\">\n");\r
+ buf.append("<tr><th>Date</th><th>Result Id</th></tr>\n");\r
+ }\r
+\r
+ void addTestResult(TreeTestResult result) {\r
+ buf.append("<tr>\n");\r
+ // Date\r
+ buf.append("<td>");\r
+ Date closeDate = result.getCloseDate();\r
+ if (closeDate == null) {\r
+ buf.append("[Not closed]");\r
+ } else {\r
+ buf.append(report.sdf.format(closeDate));\r
+ }\r
+ buf.append("</td>\n");\r
+ // Id and link\r
+ buf.append("<td><a class=\"nav\" href=\"");\r
+ buf.append(report.getResultFile(result).getName());\r
+ buf.append("\" target=\"main\">#");\r
+ buf.append(result.getTestResultId()).append("</a></td>\n");\r
+\r
+ buf.append("</tr>\n");\r
+ }\r
+\r
+ void close() {\r
+ buf.append("</table>\n</body></html>");\r
+\r
+ try {\r
+ FileWriter writer = new FileWriter(report.getReportDir().getPath()\r
+ + File.separator + "slc-resultsList.html");\r
+ writer.write(buf.toString());\r
+ writer.close();\r
+ } catch (IOException e) {\r
+ e.printStackTrace();\r
+ }\r
+\r
+ }\r
+\r
+}\r
--- /dev/null
+<html>\r
+<head></head>\r
+<body>\r
+Static HTML report for tree based test results.\r
+</body>\r
+</html>
\ No newline at end of file
--- /dev/null
+<html>\r
+<head></head>\r
+<body>\r
+Extension of SLC Test integrating tree-based structure.\r
+</body>\r
+</html>
\ No newline at end of file
--- /dev/null
+package org.argeo.slc.dao.structure;\r
+\r
+public interface SimpleSElementDao {\r
+\r
+}\r
--- /dev/null
+<html>\r
+<head></head>\r
+<body>\r
+DAOs for the core structure objects.\r
+</body>\r
+</html>
\ No newline at end of file
--- /dev/null
+package org.argeo.slc.dao.structure.tree;\r
+\r
+import org.argeo.slc.core.structure.tree.TreeSPath;\r
+\r
+public interface TreeSPathDao {\r
+ public void create(TreeSPath path);\r
+\r
+ public TreeSPath getTreeSPath(String pathString);\r
+\r
+ public TreeSPath getOrCreate(TreeSPath pathTransient);\r
+}\r
--- /dev/null
+package org.argeo.slc.dao.structure.tree;\r
+\r
+import org.argeo.slc.core.structure.tree.TreeSPath;\r
+import org.argeo.slc.core.structure.tree.TreeSRegistry;\r
+\r
+/**\r
+ * DAO for tree-base structure registry.\r
+ * \r
+ * @see TreeSRegistry\r
+ */\r
+public interface TreeSRegistryDao {\r
+ /** Gets the TreeSRegistry which has the same root path as the provided path. */\r
+ public TreeSRegistry getTreeSRegistry(TreeSPath treeSPath);\r
+\r
+ /** Creates a new registry. */\r
+ public void create(TreeSRegistry registry);\r
+\r
+ /** Updates an existing registry. */\r
+ public void update(TreeSRegistry registry);\r
+}\r
--- /dev/null
+<html>\r
+<head></head>\r
+<body>\r
+DAOs for the tree-based structure objects.\r
+</body>\r
+</html>
\ No newline at end of file
--- /dev/null
+package org.argeo.slc.dao.test;\r
+\r
+import java.util.List;\r
+\r
+import org.argeo.slc.core.test.TestResult;\r
+import org.argeo.slc.core.test.TestResultId;\r
+\r
+/**\r
+ * The dao for <code>TestResult</code>.\r
+ * \r
+ * @see TestResult\r
+ */\r
+public interface TestResultDao {\r
+ /** Gets a test result based on its id. */\r
+ public TestResult getTestResult(TestResultId id);\r
+\r
+ /** Persists a new test result. */\r
+ public void create(TestResult testResult);\r
+\r
+ /** Updates an already persisted test result. */\r
+ public void update(TestResult testResult);\r
+\r
+ /** Lists all test results. */\r
+ public List<TestResult> listTestResults();\r
+}\r
--- /dev/null
+<html>\r
+<head></head>\r
+<body>\r
+Data Access Objects for SLC Test.\r
+</body>\r
+</html>
\ No newline at end of file
--- /dev/null
+package org.argeo.slc.diff;\r
+\r
+/**\r
+ * Converts data into a format better adapted for comparison. It is typically\r
+ * used to convert <code>String</code> into typed format such as\r
+ * <code>BigDecimal</code>\r
+ */\r
+public interface DataInterpreter {\r
+ /**\r
+ * Converts data\r
+ * \r
+ * @param key\r
+ * any object used to differentiate the type of data (e.g.\r
+ * column, path)\r
+ * @param value\r
+ * the data to convert\r
+ * @return the converted object\r
+ */\r
+ public Object convert(Object key, Object value);\r
+}\r
--- /dev/null
+package org.argeo.slc.diff;\r
+\r
+import org.springframework.core.io.Resource;\r
+\r
+/** A comparator providing structured information about the differences found. */\r
+public interface Diff {\r
+ /** Performs the comparison. */\r
+ public DiffResult compare(Resource expected, Resource reached);\r
+}\r
--- /dev/null
+package org.argeo.slc.diff;\r
+\r
+/** The root class for issues which happened during a diff. */\r
+public abstract class DiffIssue implements Comparable<DiffIssue> {\r
+ /** The position of this issue. */\r
+ protected final DiffPosition position;\r
+\r
+ /** Constructor */\r
+ public DiffIssue(DiffPosition position) {\r
+ super();\r
+ this.position = position;\r
+ }\r
+\r
+ public int compareTo(DiffIssue o) {\r
+ return position.compareTo(o.position);\r
+ }\r
+\r
+ /** The position of this issue within the test file */\r
+ public DiffPosition getPosition() {\r
+ return position;\r
+ }\r
+}\r
--- /dev/null
+package org.argeo.slc.diff;\r
+\r
+/**\r
+ * Object able to uniquely identify an atomic diff part. Used to identify\r
+ * missings and left-overs.\r
+ */\r
+public interface DiffKey {\r
+ public String toString();\r
+}\r
--- /dev/null
+package org.argeo.slc.diff;\r
+\r
+/**\r
+ * A value missing in one of the file. If its position is related to expected,\r
+ * this means it is a left over in the reached, if its position is related to\r
+ * the reached it means that it is missing from the reached. If the value is\r
+ * null it means that the entire line is missing.\r
+ */\r
+public class DiffMissing extends DiffIssue {\r
+ private final DiffKey key;\r
+\r
+ public DiffMissing(DiffPosition position, DiffKey key) {\r
+ super(position);\r
+ this.key = key;\r
+ }\r
+\r
+ public Object getKey() {\r
+ return key;\r
+ }\r
+\r
+ @Override\r
+ public String toString() {\r
+ if (position.relatedFile == RelatedFile.EXPECTED) {\r
+ return position + ": left over " + key;\r
+ } else if (position.relatedFile == RelatedFile.REACHED) {\r
+ return position + ": missing " + key;\r
+ }\r
+ return super.toString();\r
+ }\r
+\r
+}\r
--- /dev/null
+package org.argeo.slc.diff;\r
+\r
+/** Diff issue where reached and expected values are different. */\r
+public class DiffNotMatched extends DiffIssue {\r
+ private final Object expected;\r
+ private final Object reached;\r
+\r
+ public DiffNotMatched(DiffPosition position, Object expected, Object reached) {\r
+ super(position);\r
+ this.expected = expected;\r
+ this.reached = reached;\r
+ }\r
+\r
+ public Object getExpected() {\r
+ return expected;\r
+ }\r
+\r
+ public Object getReached() {\r
+ return reached;\r
+ }\r
+\r
+ @Override\r
+ public String toString() {\r
+ return position + ": not matched " + expected + " <> " + reached;\r
+ }\r
+\r
+}\r
--- /dev/null
+package org.argeo.slc.diff;\r
+\r
+/** The position of a diff issue within the test resource. */\r
+public abstract class DiffPosition implements Comparable<DiffPosition> {\r
+ protected RelatedFile relatedFile;\r
+\r
+ public DiffPosition(RelatedFile relatedFile) {\r
+ super();\r
+ this.relatedFile = relatedFile;\r
+ }\r
+\r
+ public RelatedFile getRelatedFile() {\r
+ return relatedFile;\r
+ }\r
+\r
+}\r
--- /dev/null
+package org.argeo.slc.diff;\r
+\r
+import java.util.List;\r
+\r
+/**\r
+ * The result of a diff. Can be subclassed to provided more structured\r
+ * information.\r
+ */\r
+public interface DiffResult {\r
+ /** The list of issues, a zero size meaning that the diff succeeded. */\r
+ public List<DiffIssue> getIssues();\r
+}\r
--- /dev/null
+package org.argeo.slc.diff;\r
+\r
+/** Enumeration of the types of resource tested. */\r
+public enum RelatedFile {\r
+ /** The expected resource */\r
+ EXPECTED,\r
+ /** The reached resource */\r
+ REACHED\r
+}\r
--- /dev/null
+package org.argeo.slc.diff;\r
+\r
+import java.util.List;\r
+import java.util.Vector;\r
+\r
+/** A basic implementation of <code>DiffResult</code>. */\r
+public class SimpleDiffResult implements DiffResult {\r
+ private List<DiffIssue> issues = new Vector<DiffIssue>();\r
+\r
+ public List<DiffIssue> getIssues() {\r
+ return issues;\r
+ }\r
+\r
+}\r
--- /dev/null
+package org.argeo.slc.diff;\r
+\r
+import org.argeo.slc.core.UnsupportedException;\r
+\r
+/**\r
+ * A diff position within a table structure such a CSV file or an SQL result\r
+ * set.\r
+ */\r
+public class TableDiffPosition extends DiffPosition {\r
+ private Integer line;\r
+ /** Can be null */\r
+ private Integer column;\r
+ /** Can be null */\r
+ private String columnName;\r
+\r
+ public TableDiffPosition(RelatedFile relatedFile, Integer line,\r
+ Integer column, String columnName) {\r
+ super(relatedFile);\r
+ this.line = line;\r
+ this.column = column;\r
+ this.columnName = columnName;\r
+ }\r
+\r
+ public Integer getLine() {\r
+ return line;\r
+ }\r
+\r
+ public Integer getColumn() {\r
+ return column;\r
+ }\r
+\r
+ public String getColumnName() {\r
+ return columnName;\r
+ }\r
+\r
+ public int compareTo(DiffPosition dp) {\r
+ if (!(dp instanceof TableDiffPosition))\r
+ throw new UnsupportedException("position", dp);\r
+\r
+ TableDiffPosition o = (TableDiffPosition) dp;\r
+ if (relatedFile.equals(o.relatedFile)) {\r
+ if (line == o.line) {\r
+ return column.compareTo(o.column);\r
+ } else {\r
+ return line.compareTo(o.line);\r
+ }\r
+ } else {\r
+ return relatedFile.compareTo(o.relatedFile);\r
+ }\r
+ }\r
+\r
+ @Override\r
+ public String toString() {\r
+ StringBuffer buf = new StringBuffer("");\r
+ buf.append(relatedFile).append('[').append(line);\r
+ if (column != null) {\r
+ buf.append(',').append(column);\r
+ if (columnName != null) {\r
+ buf.append('-').append(columnName);\r
+ }\r
+ }\r
+ buf.append(']');\r
+ return buf.toString();\r
+ }\r
+\r
+}\r
--- /dev/null
+package org.argeo.slc.diff;\r
+\r
+/** Compares objects, eventually using tolerance mechanisms. */\r
+public interface Tolerance {\r
+ /**\r
+ * Compares objects\r
+ * \r
+ * @param key\r
+ * any object used to differentiate the type of data (e.g.\r
+ * column, path)\r
+ * @param expected\r
+ * the expected value\r
+ * @param reached\r
+ * the reached value\r
+ * @return the converted object\r
+ */\r
+ public Boolean compare(Object key, Object expected, Object reached);\r
+}\r
--- /dev/null
+package org.argeo.slc.diff;\r
+\r
+import org.argeo.slc.core.UnsupportedException;\r
+\r
+/** A diff position within an Xml file. <b>NOT YET IMPLEMENTED</b>. */\r
+public class XPathDiffPosition extends DiffPosition {\r
+\r
+ private String xPath;\r
+\r
+ public XPathDiffPosition(RelatedFile relatedFile, String path) {\r
+ super(relatedFile);\r
+ xPath = path;\r
+ }\r
+\r
+ public int compareTo(DiffPosition dp) {\r
+ if (!(dp instanceof XPathDiffPosition))\r
+ throw new UnsupportedException("position", dp);\r
+\r
+ XPathDiffPosition o = (XPathDiffPosition) dp;\r
+ if (relatedFile.equals(o.relatedFile)) {\r
+ return xPath.compareTo(o.xPath);\r
+ } else {\r
+ return relatedFile.compareTo(o.relatedFile);\r
+ }\r
+ }\r
+\r
+}\r
--- /dev/null
+<html>\r
+<head></head>\r
+<body>\r
+Abstraction of diff comparison with structured results.\r
+</body>\r
+</html>
\ No newline at end of file
--- /dev/null
+package org.argeo.slc.hibernate.structure.tree;\r
+\r
+import java.util.List;\r
+\r
+import org.springframework.orm.hibernate3.support.HibernateDaoSupport;\r
+\r
+import org.apache.commons.logging.Log;\r
+import org.apache.commons.logging.LogFactory;\r
+\r
+import org.argeo.slc.core.structure.tree.TreeSPath;\r
+import org.argeo.slc.dao.structure.tree.TreeSPathDao;\r
+\r
+/**\r
+ * The Hibernate implementation for tree-based result of the test result dao.\r
+ * \r
+ * @see TreeTestResult\r
+ */\r
+public class TreeSPathDaoHibernate extends HibernateDaoSupport implements\r
+ TreeSPathDao {\r
+\r
+ private static Log log = LogFactory.getLog(TreeSPathDaoHibernate.class);\r
+\r
+ public void create(TreeSPath path) {\r
+ createImpl(path);\r
+ }\r
+\r
+ private void createImpl(TreeSPath path) {\r
+ if (path.getParent() != null) {\r
+ TreeSPath parent = getTreeSPath(path.getParent()\r
+ .getAsUniqueString());\r
+ if (parent == null) {\r
+ createImpl(path.getParent());\r
+ }\r
+ }\r
+ getHibernateTemplate().save(path);\r
+ if (log.isTraceEnabled())\r
+ log.trace("Saved TreeSPath " + path.getAsUniqueString());\r
+ }\r
+\r
+ public TreeSPath getTreeSPath(String pathString) {\r
+ if (log.isTraceEnabled())\r
+ log.trace("Query path: " + pathString);\r
+ List<?> list = getHibernateTemplate().find(\r
+ "from TreeSPath where asUniqueString=?", pathString);\r
+ if (list.size() == 0) {\r
+ return null;\r
+ } else {\r
+ return (TreeSPath) list.get(0);\r
+ }\r
+ }\r
+\r
+ public TreeSPath getOrCreate(TreeSPath pathTransient) {\r
+ TreeSPath path = getTreeSPath(pathTransient.getAsUniqueString());\r
+ if (path != null) {\r
+ return path;\r
+ } else {\r
+ create(pathTransient);\r
+ // TODO: optimize\r
+ return getTreeSPath(pathTransient.getAsUniqueString());\r
+ }\r
+\r
+ }\r
+\r
+}\r
--- /dev/null
+package org.argeo.slc.hibernate.structure.tree;\r
+\r
+import java.util.List;\r
+\r
+import org.springframework.orm.hibernate3.support.HibernateDaoSupport;\r
+\r
+import org.argeo.slc.core.structure.tree.TreeSPath;\r
+import org.argeo.slc.core.structure.tree.TreeSRegistry;\r
+import org.argeo.slc.dao.structure.tree.TreeSRegistryDao;\r
+\r
+/**\r
+ * The Hibernate implementation for tree-based structure registry.\r
+ * \r
+ * @see TreeSRegistry\r
+ */\r
+public class TreeSRegistryDaoHibernate extends HibernateDaoSupport implements\r
+ TreeSRegistryDao {\r
+\r
+ // private static Log log =\r
+ // LogFactory.getLog(TreeSRegistryDaoHibernate.class);\r
+\r
+ public void create(TreeSRegistry registry) {\r
+ getHibernateTemplate().save(registry);\r
+ }\r
+\r
+ public void update(TreeSRegistry registry) {\r
+ getHibernateTemplate().update(registry);\r
+ }\r
+\r
+ public TreeSRegistry getTreeSRegistry(TreeSPath treeSPath) {\r
+ List<?> list = getHibernateTemplate().find(\r
+ "from TreeSRegistry where root.asUniqueString=?",\r
+ treeSPath.getRoot().getAsUniqueString());\r
+ if (list.size() == 0) {\r
+ return null;\r
+ } else {\r
+ return (TreeSRegistry) list.get(0);\r
+ }\r
+ }\r
+\r
+}\r
--- /dev/null
+<html>\r
+<head></head>\r
+<body>\r
+Hibernate based DAO implementations for tree-based structure objects.\r
+</body>\r
+</html>
\ No newline at end of file
--- /dev/null
+package org.argeo.slc.hibernate.test.tree;\r
+\r
+import java.util.List;\r
+\r
+import org.springframework.orm.hibernate3.support.HibernateDaoSupport;\r
+\r
+import org.argeo.slc.core.test.NumericTRId;\r
+import org.argeo.slc.core.test.TestResult;\r
+import org.argeo.slc.core.test.TestResultId;\r
+import org.argeo.slc.dao.test.TestResultDao;\r
+\r
+/**\r
+ * The Hibernate implementation for tree-based result of the test result dao.\r
+ * \r
+ * @see TreeTestResult\r
+ */\r
+public class TestResultDaoHibernate extends HibernateDaoSupport implements\r
+ TestResultDao {\r
+\r
+ public void create(TestResult testResult) {\r
+ getHibernateTemplate().save(testResult);\r
+ }\r
+\r
+ public void update(TestResult testResult) {\r
+ getHibernateTemplate().saveOrUpdate(testResult);\r
+ }\r
+\r
+ public TestResult getTestResult(TestResultId id) {\r
+ NumericTRId ntrid = (NumericTRId) id;\r
+ List<?> list = getHibernateTemplate().find(\r
+ "from TreeTestResult where numericResultId.value=?",\r
+ ntrid.getValue());\r
+ if (list.size() == 0) {\r
+ return null;\r
+ } else {\r
+ return (TestResult) list.get(0);\r
+ }\r
+\r
+ }\r
+\r
+ public List<TestResult> listTestResults() {\r
+ return (List<TestResult>) getHibernateTemplate().find(\r
+ "from TreeTestResult");\r
+ }\r
+\r
+}\r
--- /dev/null
+<html>\r
+<head></head>\r
+<body>\r
+Hibernate based DAO implementations for tree-based SLC Test.\r
+</body>\r
+</html>
\ No newline at end of file
--- /dev/null
+package org.argeo.slc.unit;\r
+\r
+import java.sql.Connection;\r
+import java.util.List;\r
+import java.util.Properties;\r
+\r
+import org.hibernate.cfg.Configuration;\r
+import org.hibernate.cfg.Environment;\r
+import org.hibernate.tool.hbm2ddl.SchemaExport;\r
+\r
+/**\r
+ * Creates a relational data model from Hibernate mapping files. The benefit of\r
+ * this class is to be able to use Hibernate to have test data which are\r
+ * independent from the type of database used.\r
+ */\r
+public class DbModel {\r
+ private String dialect;\r
+ private List<String> mappings;\r
+\r
+ /** Sets the Hibernate dialect to use. */\r
+ public void setDialect(String dialect) {\r
+ this.dialect = dialect;\r
+ }\r
+\r
+ /** Sets the list of mappings to consider. */\r
+ public void setMappings(List<String> mappings) {\r
+ this.mappings = mappings;\r
+ }\r
+\r
+ /**\r
+ * Creates an Hibernate schema export tool, in order to create the\r
+ * underlying datamodel.\r
+ */\r
+ public SchemaExport createSchemaExport(Connection connection) {\r
+ Configuration configuration = new Configuration();\r
+ Properties properties = new Properties();\r
+ properties.setProperty(Environment.DIALECT, dialect);\r
+ properties.setProperty(Environment.HBM2DDL_AUTO, "create");\r
+ configuration.setProperties(properties);\r
+\r
+ for (String mapping : mappings) {\r
+ configuration.addResource(mapping.trim());\r
+ }\r
+\r
+ return new SchemaExport(configuration, connection);\r
+ }\r
+}\r
--- /dev/null
+package org.argeo.slc.unit;\r
+\r
+import java.io.InputStream;\r
+import java.sql.SQLException;\r
+\r
+import javax.sql.DataSource;\r
+\r
+import org.dbunit.DataSourceDatabaseTester;\r
+import org.dbunit.DatabaseUnitException;\r
+import org.dbunit.IDatabaseTester;\r
+import org.dbunit.database.IDatabaseConnection;\r
+import org.dbunit.dataset.IDataSet;\r
+import org.dbunit.dataset.xml.FlatXmlDataSet;\r
+import org.dbunit.operation.DatabaseOperation;\r
+import org.springframework.core.io.ClassPathResource;\r
+import org.springframework.core.io.Resource;\r
+\r
+import org.hibernate.tool.hbm2ddl.SchemaExport;\r
+\r
+import org.argeo.slc.core.SlcException;\r
+\r
+/**\r
+ * Helper to make db vendor independent tests using DbUnit data sets. Based on\r
+ * {@link DbModel}.\r
+ */\r
+public abstract class IndependentDbTestCase extends SpringBasedTestCase {\r
+ private IDatabaseTester databaseTester;\r
+\r
+ /** Creates the DDL of the data model and loads the data. */\r
+ @Override\r
+ protected void setUp() throws Exception {\r
+ super.setUp();\r
+\r
+ databaseTester = new DataSourceDatabaseTester(getDataSource());\r
+ databaseTester.setSetUpOperation(new DatabaseOperation() {\r
+\r
+ @Override\r
+ public void execute(IDatabaseConnection connection, IDataSet dataSet)\r
+ throws DatabaseUnitException, SQLException {\r
+ DbModel dbModel = getDbModel();\r
+ SchemaExport schemaExport = dbModel\r
+ .createSchemaExport(connection.getConnection());\r
+ schemaExport.create(true, true);\r
+\r
+ DatabaseOperation.INSERT.execute(connection, dataSet);\r
+ }\r
+\r
+ });\r
+ databaseTester.setDataSet(createDataSet());\r
+ databaseTester.onSetup();\r
+ }\r
+\r
+ @Override\r
+ protected void tearDown() throws Exception {\r
+ if (databaseTester != null) {\r
+ databaseTester.onTearDown();\r
+ }\r
+ super.tearDown();\r
+ }\r
+\r
+ /**\r
+ * The data source to use. The default implementation returns a bean named\r
+ * {@link #getDataSourceBeanName}\r
+ */\r
+ protected DataSource getDataSource() {\r
+ return (DataSource) getContext().getBean(getDataSourceBeanName());\r
+ }\r
+\r
+ /**\r
+ * The name of the data source bean to use. The default implementation\r
+ * returns <i>dataSource</i>.\r
+ */\r
+ protected String getDataSourceBeanName() {\r
+ return "dataSource";\r
+ }\r
+\r
+ /**\r
+ * Creates the data set to use. The default implementation creates a\r
+ * <code>FlatXmlDataSet</code> load from the resource defined in\r
+ * {@link #getDataSetResource()}\r
+ */\r
+ protected IDataSet createDataSet() {\r
+ try {\r
+ InputStream in = getDataSetResource().getInputStream();\r
+ IDataSet dataSet = new FlatXmlDataSet(in);\r
+ in.close();\r
+ return dataSet;\r
+ } catch (Exception e) {\r
+ throw new SlcException("Cannot create data set", e);\r
+ }\r
+ }\r
+\r
+ /**\r
+ * The resource of the data set to load. The default implementation loads a\r
+ * <code>ClassPathResource</code> located at\r
+ * {@link #getDataSetResourceLocation()}.\r
+ */\r
+ protected Resource getDataSetResource() {\r
+ return new ClassPathResource(getDataSetResourceLocation());\r
+ }\r
+\r
+ /**\r
+ * The location of the data set to load. The default implementation loads\r
+ * <i>dataSet.xml</i> found in the same package as the test.\r
+ */\r
+ protected String getDataSetResourceLocation() {\r
+ return inPackage("dataSet.xml");\r
+ }\r
+\r
+ /**\r
+ * The DB model to us to create the DDL of the testes database. The default\r
+ * implementation loads a bean named after {@link #getDbModelBeanName()}.\r
+ */\r
+ protected DbModel getDbModel() {\r
+ return (DbModel) getContext().getBean(getDbModelBeanName());\r
+ }\r
+\r
+ /**\r
+ * The name of the bean to load. The default implementation returns\r
+ * <i>dbModel</i>.\r
+ */\r
+ protected String getDbModelBeanName() {\r
+ return "dbModel";\r
+ }\r
+}\r
--- /dev/null
+package org.argeo.slc.unit;\r
+\r
+import junit.framework.TestCase;\r
+\r
+import org.springframework.context.ApplicationContext;\r
+import org.springframework.context.support.ClassPathXmlApplicationContext;\r
+\r
+/** Helper for tests using a Spring application co,text. */\r
+public abstract class SpringBasedTestCase extends TestCase {\r
+ private ApplicationContext context;\r
+\r
+ /**\r
+ * Gets (and create if necessary) the application context to use. Default\r
+ * implementation uses a class path xml application context and calls\r
+ * {@link #getApplicationContextLocation()}.\r
+ */\r
+ protected ApplicationContext getContext() {\r
+ if (context == null) {\r
+ context = new ClassPathXmlApplicationContext(\r
+ getApplicationContextLocation());\r
+ }\r
+ return context;\r
+ }\r
+\r
+ /**\r
+ * Th location of the application to load. The default implementation\r
+ * returns <i>applicationContext.xml</i> found in the same package as the\r
+ * test.\r
+ */\r
+ protected String getApplicationContextLocation() {\r
+ return inPackage("applicationContext.xml");\r
+ }\r
+\r
+ /**\r
+ * Prefixes the package of the class after converting the '.' to '/' in\r
+ * order to have a resource path.\r
+ */\r
+ protected String inPackage(String suffix) {\r
+ String prefix = getClass().getPackage().getName().replace('.', '/');\r
+ return prefix + '/' + suffix;\r
+ }\r
+}\r
--- /dev/null
+<html>\r
+<head></head>\r
+<body>\r
+Helpers for unit tests.\r
+</body>\r
+</html>
\ No newline at end of file
--- /dev/null
+# Tasks\r
+slc.test=org.argeo.slc.ant.test.SlcTestTask\r
+slc.deploy=org.argeo.slc.ant.deploy.SlcDeployTask\r
+slc.closeResult=org.argeo.slc.ant.test.SlcCloseTestResultTask\r
+slc.report=org.argeo.slc.ant.test.SlcReportTask\r
--- /dev/null
+<html>\r
+<head>\r
+<META http-equiv="Content-Type" content="text/html; charset=US-ASCII">\r
+<title>SLC test results</title>\r
+</head>\r
+<frameset cols="30%,70%">\r
+ <frame src="slc-resultsList.html" name="navigation">\r
+ <frame src="about:blank" name="main">\r
+ <noframes>\r
+ <h2>Frame Alert</h2>\r
+ <p>This document is designed to be viewed using the frames feature.\r
+ If you see this message, you are using a non-frame-capable web client.\r
+ </p>\r
+ </noframes>\r
+</frameset>\r
+</html>\r
--- /dev/null
+body {\r
+ font-family: sans-serif;\r
+ font-size: 12px;\r
+ color: black;\r
+ background-color: white;\r
+}\r
+\r
+h1 {\r
+ font-family: sans-serif;\r
+ font-size: 16px;\r
+ font-weight: bold;\r
+ color: #000000;\r
+ padding: 0px 0px 5px 0px;\r
+ margin: 0px;\r
+}\r
+\r
+h2 {\r
+ font-family: sans-serif;\r
+ font-size: 14px;\r
+ font-weight: bold;\r
+ color: #000000;\r
+ padding: 5px 0px 5px 0px;\r
+ margin: 0px;\r
+ margin-top: 5px;\r
+}\r
+\r
+table,form {\r
+ margin: 0px;\r
+}\r
+\r
+th {\r
+ font-size: 12px;\r
+ padding: 2px 20px 2px 2px;\r
+ vertical-align: top;\r
+ text-align: left;\r
+}\r
+\r
+td {\r
+ font-size: 12px;\r
+ padding: 1px;\r
+ vertical-align: top;\r
+ text-align: left;\r
+}\r
+\r
+.passed {\r
+ color: green;\r
+}\r
+\r
+.failed {\r
+ color: red;\r
+}\r
+\r
+a {\r
+ text-decoration: none;\r
+}\r
+\r
+a.nav {\r
+ color: #0066CC;\r
+ text-decoration: none;\r
+}\r
+\r
+a:hover {\r
+ text-decoration: underline;\r
+}
\ No newline at end of file
--- /dev/null
+<?xml version="1.0"?>\r
+<!DOCTYPE hibernate-mapping PUBLIC\r
+ "-//Hibernate/Hibernate Mapping DTD 3.0//EN"\r
+ "http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd">\r
+<hibernate-mapping package="org.argeo.slc.core.structure">\r
+ <class name="SimpleSElement" table="SIMPLE_SELEMENT">\r
+ <id name="tid" column="T_ID">\r
+ <generator class="native" />\r
+ </id>\r
+ <property name="description" column="DESCRIPTION"\r
+ not-null="true" />\r
+ </class>\r
+</hibernate-mapping>
\ No newline at end of file
--- /dev/null
+<?xml version="1.0"?>\r
+<!DOCTYPE hibernate-mapping PUBLIC\r
+ "-//Hibernate/Hibernate Mapping DTD 3.0//EN"\r
+ "http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd">\r
+<hibernate-mapping package="org.argeo.slc.core.structure.tree">\r
+ <class name="TreeSPath" table="TREE_SPATH">\r
+ <id name="tid" column="T_ID">\r
+ <generator class="native" />\r
+ </id>\r
+ <property name="asUniqueString" column="PATH" not-null="true"\r
+ unique="true" />\r
+ <property name="separator" column="SEPARATOR" not-null="true" />\r
+ </class>\r
+</hibernate-mapping>
\ No newline at end of file
--- /dev/null
+<?xml version="1.0"?>\r
+<!DOCTYPE hibernate-mapping PUBLIC\r
+ "-//Hibernate/Hibernate Mapping DTD 3.0//EN"\r
+ "http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd">\r
+<hibernate-mapping package="org.argeo.slc.core.structure.tree">\r
+ <class name="TreeSRegistry" table="TREE_SREGISTRY">\r
+ <id name="tid" column="T_ID">\r
+ <generator class="native" />\r
+ </id>\r
+\r
+ <many-to-one name="root" column="ROOT_PATH_ID" unique="true"\r
+ not-null="true" />\r
+ \r
+ <map name="elements" table="REGISTRY_ELEMENTS" cascade="all"\r
+ lazy="false" sort="natural">\r
+ <key column="PARENT_ID" />\r
+ <map-key-many-to-many class="TreeSPath" column="PATH" />\r
+\r
+ <many-to-many\r
+ class="org.argeo.slc.core.structure.SimpleSElement"\r
+ column="ELEMENT_ID" unique="true" lazy="false" />\r
+ </map>\r
+\r
+ </class>\r
+</hibernate-mapping>
\ No newline at end of file
--- /dev/null
+<?xml version="1.0"?>\r
+<!DOCTYPE hibernate-mapping PUBLIC\r
+ "-//Hibernate/Hibernate Mapping DTD 3.0//EN"\r
+ "http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd">\r
+<hibernate-mapping package="org.argeo.slc.core.test">\r
+ <class name="NumericTRId" table="NUMERIC_TR_ID">\r
+\r
+ <id name="tid" column="T_ID">\r
+ <generator class="native" />\r
+ </id>\r
+ <property name="value" column="VALUE" not-null="true"\r
+ unique="true" />\r
+ </class>\r
+</hibernate-mapping>
\ No newline at end of file
--- /dev/null
+<?xml version="1.0"?>\r
+<!DOCTYPE hibernate-mapping PUBLIC\r
+ "-//Hibernate/Hibernate Mapping DTD 3.0//EN"\r
+ "http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd">\r
+<hibernate-mapping package="org.argeo.slc.core.test">\r
+ <class name="SimpleResultPart" table="SIMPLE_RESULT_PART">\r
+ <id name="tid" column="T_ID">\r
+ <generator class="native" />\r
+ </id>\r
+ <property name="status" column="STATUS" not-null="true" />\r
+ <property name="message" column="MESSAGE" not-null="true" />\r
+ <property name="exception" column="EXCEPTION" not-null="false" />\r
+ </class>\r
+</hibernate-mapping>
\ No newline at end of file
--- /dev/null
+<?xml version="1.0"?>\r
+<!DOCTYPE hibernate-mapping PUBLIC\r
+ "-//Hibernate/Hibernate Mapping DTD 3.0//EN"\r
+ "http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd">\r
+<hibernate-mapping package="org.argeo.slc.core.test">\r
+ <class name="TestResultId" table="TEST_RESULT_ID">\r
+ <id name="tid" column="T_ID">\r
+ <generator class="native" />\r
+ </id>\r
+ </class>\r
+</hibernate-mapping>
\ No newline at end of file
--- /dev/null
+<?xml version="1.0"?>\r
+<!DOCTYPE hibernate-mapping PUBLIC\r
+ "-//Hibernate/Hibernate Mapping DTD 3.0//EN"\r
+ "http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd">\r
+<hibernate-mapping package="org.argeo.slc.core.test.tree">\r
+ <class name="PartSubList" table="PART_SUB_LIST">\r
+ <id name="tid" column="T_ID">\r
+ <generator class="native" />\r
+ </id>\r
+ <list name="parts" cascade="all" lazy="false">\r
+ <key column="PART_SUBLIST_ID" />\r
+ <list-index column="INDX" />\r
+\r
+ <one-to-many\r
+ class="org.argeo.slc.core.test.SimpleResultPart" />\r
+ </list>\r
+ </class>\r
+</hibernate-mapping>
\ No newline at end of file
--- /dev/null
+<?xml version="1.0"?>\r
+<!DOCTYPE hibernate-mapping PUBLIC\r
+ "-//Hibernate/Hibernate Mapping DTD 3.0//EN"\r
+ "http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd">\r
+<hibernate-mapping package="org.argeo.slc.core.test.tree">\r
+ <class name="TreeTestResult" table="TREE_TEST_RESULT">\r
+ <id name="tid" column="T_ID">\r
+ <generator class="native" />\r
+ </id>\r
+\r
+ <property name="closeDate" column="CLOSE_DATE" type="timestamp"\r
+ not-null="false" />\r
+\r
+ <many-to-one name="numericResultId" unique="true"\r
+ not-null="true" column="TEST_RESULT_ID" cascade="all" lazy="false" />\r
+\r
+ <map name="resultParts" table="RESULT_PARTS_MAP" cascade="all"\r
+ lazy="false" sort="natural">\r
+ <key column="PARENT_ID" />\r
+ <map-key-many-to-many\r
+ class="org.argeo.slc.core.structure.tree.TreeSPath" column="PATH" />\r
+ <many-to-many class="PartSubList" column="PART_SUB_LIST_ID"\r
+ unique="true" lazy="false" />\r
+ </map>\r
+ </class>\r
+</hibernate-mapping>
\ No newline at end of file
--- /dev/null
+Argeo SLC Site
\ No newline at end of file
--- /dev/null
+package org.argeo.slc.hibernate.structure.tree;\r
+\r
+import org.argeo.slc.core.structure.tree.TreeSPath;\r
+import org.argeo.slc.dao.structure.tree.TreeSPathDao;\r
+import org.argeo.slc.unit.SpringBasedTestCase;\r
+\r
+public class TreeSPathDaoHibernateTest extends SpringBasedTestCase {\r
+\r
+ public void testCreate() {\r
+ TreeSPathDao treeSPathDao = (TreeSPathDao) getContext().getBean(\r
+ "treeSPathDao");\r
+\r
+ String pathParentStr = "/root/testParent";\r
+ String pathStr = pathParentStr + "/test";\r
+ TreeSPath path = TreeSPath.parseToCreatePath(pathStr);\r
+ treeSPathDao.create(path);\r
+\r
+ TreeSPath pathChild = treeSPathDao.getTreeSPath(pathStr);\r
+ assertEquals(path, pathChild);\r
+\r
+ TreeSPath pathParent = treeSPathDao.getTreeSPath(pathParentStr);\r
+ assertEquals(path.getParent(), pathParent);\r
+ }\r
+\r
+ @Override\r
+ protected String getApplicationContextLocation() {\r
+ return "org/argeo/slc/hibernate/applicationContext.xml";\r
+ }\r
+\r
+}\r
--- /dev/null
+package org.argeo.slc.hibernate.structure.tree;\r
+\r
+import org.argeo.slc.core.structure.SimpleSElement;\r
+import org.argeo.slc.core.structure.tree.TreeSPath;\r
+import org.argeo.slc.core.structure.tree.TreeSRegistry;\r
+import org.argeo.slc.dao.structure.tree.TreeSPathDao;\r
+import org.argeo.slc.dao.structure.tree.TreeSRegistryDao;\r
+import org.argeo.slc.unit.SpringBasedTestCase;\r
+\r
+public class TreeSRegistryDaoHibernateTest extends SpringBasedTestCase {\r
+\r
+ public void testCreate() {\r
+ TreeSRegistryDao treeSRegistryDao = (TreeSRegistryDao) getContext()\r
+ .getBean("treeSRegistryDao");\r
+\r
+ TreeSPathDao treeSPathDao = (TreeSPathDao) getContext().getBean(\r
+ "treeSPathDao");\r
+\r
+ TreeSPath root = TreeSPath.parseToCreatePath("/root");\r
+ TreeSPath path = root.createChild("test");\r
+\r
+ treeSPathDao.create(root);\r
+ treeSPathDao.create(path);\r
+\r
+ TreeSRegistry registry = new TreeSRegistry();\r
+ registry.setRoot(root);\r
+ String desc = "desc";\r
+ registry.register(path, new SimpleSElement(desc));\r
+\r
+ treeSRegistryDao.create(registry);\r
+\r
+ TreeSRegistry registry2 = treeSRegistryDao.getTreeSRegistry(path);\r
+ SimpleSElement element = registry2.getElements().get(path);\r
+ assertEquals(desc, element.getDescription());\r
+ }\r
+\r
+ @Override\r
+ protected String getApplicationContextLocation() {\r
+ return "org/argeo/slc/hibernate/applicationContext.xml";\r
+ }\r
+\r
+}\r
--- /dev/null
+package org.argeo.slc.hibernate.test.tree;\r
+\r
+import java.util.Date;\r
+\r
+import org.argeo.slc.core.structure.tree.TreeSPath;\r
+import org.argeo.slc.core.test.NumericTRId;\r
+import org.argeo.slc.core.test.SimpleResultPart;\r
+import org.argeo.slc.core.test.TestStatus;\r
+import org.argeo.slc.core.test.tree.PartSubList;\r
+import org.argeo.slc.core.test.tree.TreeTestResult;\r
+import org.argeo.slc.dao.structure.tree.TreeSPathDao;\r
+import org.argeo.slc.dao.test.TestResultDao;\r
+import org.argeo.slc.unit.SpringBasedTestCase;\r
+\r
+public class TreeTestResultDaoHibernateTest extends SpringBasedTestCase {\r
+\r
+ public void testCreate() {\r
+ TreeSPathDao treeSPathDao = (TreeSPathDao) getContext().getBean(\r
+ "treeSPathDao");\r
+\r
+ TestResultDao testResultDao = (TestResultDao) getContext().getBean(\r
+ "testResultDao");\r
+\r
+ String pathParentStr = "/root/testParent";\r
+ String pathStr = pathParentStr + "/test";\r
+ TreeSPath path = TreeSPath.parseToCreatePath(pathStr);\r
+ treeSPathDao.create(path);\r
+\r
+ TreeTestResult treeTestResult = new TreeTestResult();\r
+ SimpleResultPart partPassed = new SimpleResultPart();\r
+ String msgPassed = "message";\r
+ partPassed.setStatus(TestStatus.PASSED);\r
+ partPassed.setMessage(msgPassed);\r
+\r
+ SimpleResultPart partFailed = new SimpleResultPart();\r
+ String msgFailed = "too bad";\r
+ partFailed.setStatus(TestStatus.FAILED);\r
+ partFailed.setMessage(msgFailed);\r
+\r
+ NumericTRId trId = new NumericTRId();\r
+ trId.setValue(1l);\r
+ treeTestResult.setNumericResultId(trId);\r
+ treeTestResult.notifyCurrentPath(null, path);\r
+ treeTestResult.addResultPart(partPassed);\r
+ treeTestResult.addResultPart(partFailed);\r
+\r
+ Date closeDate = new Date();\r
+ treeTestResult.setCloseDate(closeDate);\r
+\r
+ testResultDao.create(treeTestResult);\r
+\r
+ TreeTestResult treeTestResult2 = (TreeTestResult) testResultDao\r
+ .getTestResult(trId);\r
+ PartSubList list = treeTestResult2.getResultParts().get(path);\r
+\r
+ assertEquals(2, list.getParts().size());\r
+ SimpleResultPart part0 = (SimpleResultPart) list.getParts().get(0);\r
+ assertEquals(TestStatus.PASSED, (int) part0.getStatus());\r
+ assertEquals(msgPassed, part0.getMessage());\r
+\r
+ SimpleResultPart part1 = (SimpleResultPart) list.getParts().get(1);\r
+ assertEquals(TestStatus.FAILED, (int) part1.getStatus());\r
+ assertEquals(msgFailed, part1.getMessage());\r
+\r
+ assertEquals(closeDate, treeTestResult2.getCloseDate());\r
+ }\r
+\r
+ @Override\r
+ protected String getApplicationContextLocation() {\r
+ return "org/argeo/slc/hibernate/applicationContext.xml";\r
+ }\r
+\r
+}\r
--- /dev/null
+# Set root logger level to DEBUG and its only appender to A1.\r
+log4j.rootLogger=INFO, console\r
+\r
+## Levels\r
+# Slc\r
+log4j.logger.org.argeo.slc=TRACE\r
+# Spring\r
+log4j.logger.org.springframework=INFO\r
+# Hibernate\r
+log4j.logger.org.hibernate=WARN\r
+#log4j.logger.org.hibernate.SQL=TRACE\r
+#log4j.logger.org.hibernate.tool.hbm2ddl=TRACE\r
+#log4j.logger.org.hibernate.type=TRACE\r
+\r
+\r
+## Appenders\r
+# A1 is set to be a ConsoleAppender.\r
+log4j.appender.console=org.apache.log4j.ConsoleAppender\r
+\r
+# A1 uses PatternLayout.\r
+log4j.appender.console.layout=org.apache.log4j.PatternLayout\r
+log4j.appender.console.layout.ConversionPattern= %-5p %d{ISO8601} %m - %c %F%L%n\r
+\r
--- /dev/null
+<?xml version="1.0" encoding="UTF-8"?>\r
+<beans xmlns="http://www.springframework.org/schema/beans"\r
+ xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"\r
+ xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-2.0.xsd">\r
+\r
+ <!-- Results -->\r
+ <bean id="dataSource"\r
+ class="org.springframework.jdbc.datasource.SingleConnectionDataSource"\r
+ destroy-method="destroy">\r
+ <property name="driverClassName" value="org.hsqldb.jdbcDriver" />\r
+ <property name="url" value="jdbc:hsqldb:mem:test" />\r
+ <property name="username" value="sa" />\r
+ <property name="password" value="" />\r
+ <property name="suppressClose" value="true" />\r
+ </bean>\r
+\r
+ <bean id="sessionFactory"\r
+ class="org.springframework.orm.hibernate3.LocalSessionFactoryBean">\r
+ <property name="dataSource" ref="dataSource" />\r
+ <property name="mappingResources">\r
+ <list>\r
+ <value>\r
+ org/argeo/slc/hibernate/structure/SimpleSElement.hbm.xml\r
+ </value>\r
+ <value>\r
+ org/argeo/slc/hibernate/structure/tree/TreeSPath.hbm.xml\r
+ </value>\r
+ <value>\r
+ org/argeo/slc/hibernate/structure/tree/TreeSRegistry.hbm.xml\r
+ </value>\r
+ <value>\r
+ org/argeo/slc/hibernate/test/NumericTRId.hbm.xml\r
+ </value>\r
+ <value>\r
+ org/argeo/slc/hibernate/test/SimpleResultPart.hbm.xml\r
+ </value>\r
+ <value>\r
+ org/argeo/slc/hibernate/test/tree/TreeTestResult.hbm.xml\r
+ </value>\r
+ <value>\r
+ org/argeo/slc/hibernate/test/tree/PartSubList.hbm.xml\r
+ </value>\r
+ </list>\r
+ </property>\r
+ <property name="hibernateProperties">\r
+ <value>\r
+ hibernate.dialect=org.hibernate.dialect.HSQLDialect\r
+ hibernate.hbm2ddl.auto=create\r
+ </value>\r
+ </property>\r
+ </bean>\r
+\r
+ <bean id="treeSPathDao"\r
+ class="org.argeo.slc.hibernate.structure.tree.TreeSPathDaoHibernate">\r
+ <property name="sessionFactory" ref="sessionFactory" />\r
+ </bean>\r
+ \r
+ <bean id="treeSRegistryDao"\r
+ class="org.argeo.slc.hibernate.structure.tree.TreeSRegistryDaoHibernate">\r
+ <property name="sessionFactory" ref="sessionFactory" />\r
+ </bean>\r
+ \r
+ <bean id="testResultDao"\r
+ class="org.argeo.slc.hibernate.test.tree.TestResultDaoHibernate">\r
+ <property name="sessionFactory" ref="sessionFactory" />\r
+ </bean>\r
+</beans>
\ No newline at end of file
+++ /dev/null
-<?xml version="1.0" encoding="UTF-8"?>\r
-<classpath>\r
- <classpathentry kind="src" path="src/main/java"/>\r
- <classpathentry kind="src" path="src/main/resources"/>\r
- <classpathentry kind="src" path="src/test/java"/>\r
- <classpathentry kind="src" path="src/test/resources"/>\r
- <classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER"/>\r
- <classpathentry kind="con" path="org.maven.ide.eclipse.MAVEN2_CLASSPATH_CONTAINER"/>\r
- <classpathentry kind="output" path="target/classes"/>\r
-</classpath>\r
+++ /dev/null
-<?xml version="1.0" encoding="UTF-8"?>\r
-<projectDescription>\r
- <name>org.argeo.slc</name>\r
- <comment></comment>\r
- <projects>\r
- </projects>\r
- <buildSpec>\r
- <buildCommand>\r
- <name>org.maven.ide.eclipse.maven2Builder</name>\r
- <arguments>\r
- </arguments>\r
- </buildCommand>\r
- <buildCommand>\r
- <name>org.eclipse.jdt.core.javabuilder</name>\r
- <arguments>\r
- </arguments>\r
- </buildCommand>\r
- </buildSpec>\r
- <natures>\r
- <nature>org.eclipse.jdt.core.javanature</nature>\r
- <nature>org.maven.ide.eclipse.maven2Nature</nature>\r
- </natures>\r
-</projectDescription>\r
+++ /dev/null
-#Sat Dec 01 11:46:50 CET 2007\r
-eclipse.preferences.version=1\r
-org.eclipse.jdt.core.builder.cleanOutputFolder=clean\r
-org.eclipse.jdt.core.builder.duplicateResourceTask=warning\r
-org.eclipse.jdt.core.builder.invalidClasspath=abort\r
-org.eclipse.jdt.core.builder.recreateModifiedClassFileInOutputFolder=ignore\r
-org.eclipse.jdt.core.builder.resourceCopyExclusionFilter=*.launch,*.testsuite,*.deploy,*.location,*.execution,*.datapool,*.artifact,package.html,*.svg\r
-org.eclipse.jdt.core.circularClasspath=error\r
-org.eclipse.jdt.core.classpath.exclusionPatterns=enabled\r
-org.eclipse.jdt.core.classpath.multipleOutputLocations=enabled\r
-org.eclipse.jdt.core.compiler.codegen.inlineJsrBytecode=enabled\r
-org.eclipse.jdt.core.compiler.codegen.targetPlatform=1.5\r
-org.eclipse.jdt.core.compiler.codegen.unusedLocal=preserve\r
-org.eclipse.jdt.core.compiler.compliance=1.5\r
-org.eclipse.jdt.core.compiler.debug.lineNumber=generate\r
-org.eclipse.jdt.core.compiler.debug.localVariable=generate\r
-org.eclipse.jdt.core.compiler.debug.sourceFile=generate\r
-org.eclipse.jdt.core.compiler.maxProblemPerUnit=100\r
-org.eclipse.jdt.core.compiler.problem.assertIdentifier=error\r
-org.eclipse.jdt.core.compiler.problem.enumIdentifier=error\r
-org.eclipse.jdt.core.compiler.source=1.5\r
-org.eclipse.jdt.core.incompatibleJDKLevel=ignore\r
-org.eclipse.jdt.core.incompleteClasspath=error\r
+++ /dev/null
-<project default="basePackage">\r
- <property name="package.version" value="0.5.1" />\r
- <property name="package.prefix" value="argeo-slc" />\r
-\r
- <import file="src/main/config/include/ant/slc-factory-targets.xml" />\r
-\r
-</project>
\ No newline at end of file
+++ /dev/null
-<?xml version = "1.0" encoding = "UTF-8" ?>\r
-<uml version="5">\r
- <argo version="5">\r
- <documentation>\r
- <authorname></authorname>\r
- <authoremail></authoremail>\r
- <version>0.24</version>\r
- <description>\r
- \r
- </description>\r
- </documentation>\r
- <settings>\r
- <notationlanguage>UML 1.4</notationlanguage>\r
- <useguillemots>false</useguillemots>\r
- <showvisibility>false</showvisibility>\r
- <showmultiplicity>false</showmultiplicity>\r
- <showinitialvalue>false</showinitialvalue>\r
- <showproperties>false</showproperties>\r
- <showtypes>true</showtypes>\r
- <showstereotypes>false</showstereotypes>\r
- <showsingularmultiplicities>true</showsingularmultiplicities>\r
- <defaultshadowwidth>1</defaultshadowwidth>\r
- </settings>\r
- \r
- <searchpath href="PROJECT_DIR" />\r
- <member type="xmi"\r
- name="com.capco.slc.murex.zargo.xmi" />\r
- <member type="pgml"\r
- name="com.capco.slc.murex.zargo_ClassDiagram1.pgml"\r
- diagramclass="org.argouml.uml.diagram.static_structure.ui.UMLClassDiagram"\r
- diagramname="Class Diagram 1" />\r
- <member type="pgml"\r
- name="com.capco.slc.murex.zargo_UseCaseDiagram1.pgml"\r
- diagramclass="org.argouml.uml.diagram.use_case.ui.UMLUseCaseDiagram"\r
- diagramname="Use Case Diagram 1" />\r
- <member type="todo"\r
- name="com.capco.slc.murex.zargo.todo" />\r
- <historyfile name="" />\r
- </argo>\r
-<XMI xmi.version = '1.2' xmlns:UML = 'org.omg.xmi.namespace.UML' timestamp = 'Thu Oct 11 17:57:16 CEST 2007'>\r
- <XMI.header> <XMI.documentation>\r
- <XMI.exporter>ArgoUML (using Netbeans XMI Writer version 1.0)</XMI.exporter>\r
- <XMI.exporterVersion>0.24(5) revised on $Date: 2006-11-06 19:55:22 +0100 (Mon, 06 Nov 2006) $ </XMI.exporterVersion>\r
- </XMI.documentation>\r
- <XMI.metamodel xmi.name="UML" xmi.version="1.4"/></XMI.header>\r
- <XMI.content>\r
- <UML:Model xmi.id = '-64--88-1-101-3dc093e3:1157f1866b2:-8000:00000000000009EC'\r
- name = 'untitledModel' isSpecification = 'false' isRoot = 'false' isLeaf = 'false'\r
- isAbstract = 'false'>\r
- <UML:Namespace.ownedElement>\r
- <UML:Class xmi.id = '-64--88-1-101-3dc093e3:1157f1866b2:-8000:00000000000009ED'\r
- name = 'Deployment' visibility = 'public' isSpecification = 'false' isRoot = 'false'\r
- isLeaf = 'false' isAbstract = 'false' isActive = 'false'>\r
- <UML:GeneralizableElement.generalization>\r
- <UML:Generalization xmi.idref = '-64--88-1-101--4a0353a6:1158fc10f03:-8000:0000000000000A48'/>\r
- </UML:GeneralizableElement.generalization>\r
- </UML:Class>\r
- <UML:Class xmi.id = '-64--88-1-101-3dc093e3:1157f1866b2:-8000:00000000000009EF'\r
- name = 'Process' visibility = 'public' isSpecification = 'false' isRoot = 'false'\r
- isLeaf = 'false' isAbstract = 'false' isActive = 'false'/>\r
- <UML:Class xmi.id = '-64--88-1-101-3dc093e3:1157f1866b2:-8000:00000000000009F1'\r
- name = 'TestRun' visibility = 'public' isSpecification = 'false' isRoot = 'false'\r
- isLeaf = 'false' isAbstract = 'false' isActive = 'false'>\r
- <UML:GeneralizableElement.generalization>\r
- <UML:Generalization xmi.idref = '-64--88-1-101--4a0353a6:1158fc10f03:-8000:0000000000000A49'/>\r
- </UML:GeneralizableElement.generalization>\r
- </UML:Class>\r
- <UML:Class xmi.id = '-64--88-1-101-3dc093e3:1157f1866b2:-8000:00000000000009F3'\r
- name = 'DeployedSystemId' visibility = 'public' isSpecification = 'false'\r
- isRoot = 'false' isLeaf = 'false' isAbstract = 'false' isActive = 'false'/>\r
- <UML:Class xmi.id = '-64--88-1-101-3dc093e3:1157f1866b2:-8000:00000000000009F5'\r
- name = 'DeployedSystem' visibility = 'public' isSpecification = 'false'\r
- isRoot = 'false' isLeaf = 'false' isAbstract = 'false' isActive = 'false'/>\r
- <UML:Class xmi.id = '-64--88-1-101-3dc093e3:1157f1866b2:-8000:00000000000009F7'\r
- name = 'MxDeployedSystem' visibility = 'public' isSpecification = 'false'\r
- isRoot = 'false' isLeaf = 'false' isAbstract = 'false' isActive = 'false'>\r
- <UML:GeneralizableElement.generalization>\r
- <UML:Generalization xmi.idref = '-64--88-1-101--4a0353a6:1158fc10f03:-8000:0000000000000A44'/>\r
- </UML:GeneralizableElement.generalization>\r
- <UML:Classifier.feature>\r
- <UML:Attribute xmi.id = '-64--88-1-101-3dc093e3:1157f1866b2:-8000:00000000000009FA'\r
- name = 'fsPort' visibility = 'public' isSpecification = 'false' ownerScope = 'instance'\r
- changeability = 'changeable' targetScope = 'instance'>\r
- <UML:StructuralFeature.multiplicity>\r
- <UML:Multiplicity xmi.id = '-64--88-1-101-3dc093e3:1157f1866b2:-8000:0000000000000A00'>\r
- <UML:Multiplicity.range>\r
- <UML:MultiplicityRange xmi.id = '-64--88-1-101-3dc093e3:1157f1866b2:-8000:00000000000009FF'\r
- lower = '1' upper = '1'/>\r
- </UML:Multiplicity.range>\r
- </UML:Multiplicity>\r
- </UML:StructuralFeature.multiplicity>\r
- <UML:StructuralFeature.type>\r
- <UML:DataType xmi.idref = '-64--88-1-101-3dc093e3:1157f1866b2:-8000:00000000000009F9'/>\r
- </UML:StructuralFeature.type>\r
- </UML:Attribute>\r
- <UML:Attribute xmi.id = '-64--88-1-101-3dc093e3:1157f1866b2:-8000:0000000000000A01'\r
- name = 'xmlsPort' visibility = 'public' isSpecification = 'false' ownerScope = 'instance'\r
- changeability = 'changeable' targetScope = 'instance'>\r
- <UML:StructuralFeature.multiplicity>\r
- <UML:Multiplicity xmi.id = '-64--88-1-101-3dc093e3:1157f1866b2:-8000:0000000000000A05'>\r
- <UML:Multiplicity.range>\r
- <UML:MultiplicityRange xmi.id = '-64--88-1-101-3dc093e3:1157f1866b2:-8000:0000000000000A04'\r
- lower = '1' upper = '1'/>\r
- </UML:Multiplicity.range>\r
- </UML:Multiplicity>\r
- </UML:StructuralFeature.multiplicity>\r
- <UML:StructuralFeature.type>\r
- <UML:DataType xmi.idref = '-64--88-1-101-3dc093e3:1157f1866b2:-8000:00000000000009F9'/>\r
- </UML:StructuralFeature.type>\r
- </UML:Attribute>\r
- <UML:Attribute xmi.id = '-64--88-1-101-3dc093e3:1157f1866b2:-8000:0000000000000A06'\r
- name = 'murexnetPort' visibility = 'public' isSpecification = 'false' ownerScope = 'instance'\r
- changeability = 'changeable' targetScope = 'instance'>\r
- <UML:StructuralFeature.multiplicity>\r
- <UML:Multiplicity xmi.id = '-64--88-1-101-3dc093e3:1157f1866b2:-8000:0000000000000A0A'>\r
- <UML:Multiplicity.range>\r
- <UML:MultiplicityRange xmi.id = '-64--88-1-101-3dc093e3:1157f1866b2:-8000:0000000000000A09'\r
- lower = '1' upper = '1'/>\r
- </UML:Multiplicity.range>\r
- </UML:Multiplicity>\r
- </UML:StructuralFeature.multiplicity>\r
- <UML:StructuralFeature.type>\r
- <UML:DataType xmi.idref = '-64--88-1-101-3dc093e3:1157f1866b2:-8000:00000000000009F9'/>\r
- </UML:StructuralFeature.type>\r
- </UML:Attribute>\r
- <UML:Attribute xmi.id = '-64--88-1-101-3dc093e3:1157f1866b2:-8000:0000000000000A0B'\r
- name = 'installDir' visibility = 'public' isSpecification = 'false' ownerScope = 'instance'\r
- changeability = 'changeable' targetScope = 'instance'>\r
- <UML:StructuralFeature.multiplicity>\r
- <UML:Multiplicity xmi.id = '-64--88-1-101-3dc093e3:1157f1866b2:-8000:0000000000000A0F'>\r
- <UML:Multiplicity.range>\r
- <UML:MultiplicityRange xmi.id = '-64--88-1-101-3dc093e3:1157f1866b2:-8000:0000000000000A0E'\r
- lower = '1' upper = '1'/>\r
- </UML:Multiplicity.range>\r
- </UML:Multiplicity>\r
- </UML:StructuralFeature.multiplicity>\r
- <UML:StructuralFeature.type>\r
- <UML:Class xmi.idref = '-64--88-1-101-3dc093e3:1157f1866b2:-8000:0000000000000A10'/>\r
- </UML:StructuralFeature.type>\r
- </UML:Attribute>\r
- </UML:Classifier.feature>\r
- </UML:Class>\r
- <UML:DataType xmi.id = '-64--88-1-101-3dc093e3:1157f1866b2:-8000:00000000000009F9'\r
- name = 'int' isSpecification = 'false' isRoot = 'false' isLeaf = 'false'\r
- isAbstract = 'false'/>\r
- <UML:Class xmi.id = '-64--88-1-101-3dc093e3:1157f1866b2:-8000:0000000000000A10'\r
- name = 'File' visibility = 'public' isSpecification = 'false' isRoot = 'false'\r
- isLeaf = 'false' isAbstract = 'false' isActive = 'false'/>\r
- <UML:Class xmi.id = '-64--88-1-101-3dc093e3:1157f1866b2:-8000:0000000000000A11'\r
- name = 'DeploymentData' visibility = 'public' isSpecification = 'false'\r
- isRoot = 'false' isLeaf = 'false' isAbstract = 'false' isActive = 'false'/>\r
- <UML:Class xmi.id = '-64--88-1-101-3dc093e3:1157f1866b2:-8000:0000000000000A13'\r
- name = 'EnterpriseDeploymentData' visibility = 'public' isSpecification = 'false'\r
- isRoot = 'false' isLeaf = 'false' isAbstract = 'false' isActive = 'false'/>\r
- <UML:Class xmi.id = '-64--88-1-101-3dc093e3:1157f1866b2:-8000:0000000000000A15'\r
- name = 'DistributionId' visibility = 'public' isSpecification = 'false'\r
- isRoot = 'false' isLeaf = 'false' isAbstract = 'false' isActive = 'false'/>\r
- <UML:Class xmi.id = '-64--88-1-101-3dc093e3:1157f1866b2:-8000:0000000000000A17'\r
- name = 'Distribution' visibility = 'public' isSpecification = 'false' isRoot = 'false'\r
- isLeaf = 'false' isAbstract = 'false' isActive = 'false'/>\r
- <UML:Class xmi.id = '-64--88-1-101-3dc093e3:1157f1866b2:-8000:0000000000000A19'\r
- name = 'MxDeploymentData' visibility = 'public' isSpecification = 'false'\r
- isRoot = 'false' isLeaf = 'false' isAbstract = 'false' isActive = 'false'/>\r
- <UML:Class xmi.id = '-64--88-1-101-3dc093e3:1157f1866b2:-8000:0000000000000A1B'\r
- name = 'MxSetups' visibility = 'public' isSpecification = 'false' isRoot = 'false'\r
- isLeaf = 'false' isAbstract = 'false' isActive = 'false'>\r
- <UML:GeneralizableElement.generalization>\r
- <UML:Generalization xmi.idref = '-64--88-1-101--4a0353a6:1158fc10f03:-8000:0000000000000A43'/>\r
- </UML:GeneralizableElement.generalization>\r
- <UML:Classifier.feature>\r
- <UML:Attribute xmi.id = '-64--88-1-101-3dc093e3:1157f1866b2:-8000:0000000000000A1D'\r
- name = 'primarySetupFile' visibility = 'public' isSpecification = 'false'\r
- ownerScope = 'instance' changeability = 'changeable' targetScope = 'instance'>\r
- <UML:StructuralFeature.multiplicity>\r
- <UML:Multiplicity xmi.id = '-64--88-1-101-3dc093e3:1157f1866b2:-8000:0000000000000A2D'>\r
- <UML:Multiplicity.range>\r
- <UML:MultiplicityRange xmi.id = '-64--88-1-101-3dc093e3:1157f1866b2:-8000:0000000000000A2C'\r
- lower = '1' upper = '1'/>\r
- </UML:Multiplicity.range>\r
- </UML:Multiplicity>\r
- </UML:StructuralFeature.multiplicity>\r
- <UML:StructuralFeature.type>\r
- <UML:Class xmi.idref = '-64--88-1-101-3dc093e3:1157f1866b2:-8000:0000000000000A10'/>\r
- </UML:StructuralFeature.type>\r
- </UML:Attribute>\r
- <UML:Attribute xmi.id = '-64--88-1-101-3dc093e3:1157f1866b2:-8000:0000000000000A2E'\r
- name = 'secondarySetupFile' visibility = 'public' isSpecification = 'false'\r
- ownerScope = 'instance' changeability = 'changeable' targetScope = 'instance'>\r
- <UML:StructuralFeature.multiplicity>\r
- <UML:Multiplicity xmi.id = '-64--88-1-101-3dc093e3:1157f1866b2:-8000:0000000000000A36'>\r
- <UML:Multiplicity.range>\r
- <UML:MultiplicityRange xmi.id = '-64--88-1-101-3dc093e3:1157f1866b2:-8000:0000000000000A35'\r
- lower = '1' upper = '1'/>\r
- </UML:Multiplicity.range>\r
- </UML:Multiplicity>\r
- </UML:StructuralFeature.multiplicity>\r
- <UML:StructuralFeature.type>\r
- <UML:Class xmi.idref = '-64--88-1-101-3dc093e3:1157f1866b2:-8000:0000000000000A10'/>\r
- </UML:StructuralFeature.type>\r
- </UML:Attribute>\r
- <UML:Attribute xmi.id = '-64--88-1-101-3dc093e3:1157f1866b2:-8000:0000000000000A37'\r
- name = 'clientSetupFile' visibility = 'public' isSpecification = 'false'\r
- ownerScope = 'instance' changeability = 'changeable' targetScope = 'instance'>\r
- <UML:StructuralFeature.multiplicity>\r
- <UML:Multiplicity xmi.id = '-64--88-1-101-3dc093e3:1157f1866b2:-8000:0000000000000A3F'>\r
- <UML:Multiplicity.range>\r
- <UML:MultiplicityRange xmi.id = '-64--88-1-101-3dc093e3:1157f1866b2:-8000:0000000000000A3E'\r
- lower = '1' upper = '1'/>\r
- </UML:Multiplicity.range>\r
- </UML:Multiplicity>\r
- </UML:StructuralFeature.multiplicity>\r
- <UML:StructuralFeature.type>\r
- <UML:Class xmi.idref = '-64--88-1-101-3dc093e3:1157f1866b2:-8000:0000000000000A10'/>\r
- </UML:StructuralFeature.type>\r
- </UML:Attribute>\r
- </UML:Classifier.feature>\r
- </UML:Class>\r
- <UML:Class xmi.id = '-64--88-1-101-3dc093e3:1157f1866b2:-8000:0000000000000A40'\r
- name = 'MxBuildId' visibility = 'public' isSpecification = 'false' isRoot = 'false'\r
- isLeaf = 'false' isAbstract = 'false' isActive = 'false'>\r
- <UML:GeneralizableElement.generalization>\r
- <UML:Generalization xmi.idref = '-64--88-1-101--4a0353a6:1158fc10f03:-8000:0000000000000A42'/>\r
- </UML:GeneralizableElement.generalization>\r
- <UML:Classifier.feature>\r
- <UML:Attribute xmi.id = '-64--88-1-101-3dc093e3:1157f1866b2:-8000:0000000000000A57'\r
- name = 'changeList' visibility = 'public' isSpecification = 'false' ownerScope = 'instance'\r
- changeability = 'changeable' targetScope = 'instance'>\r
- <UML:StructuralFeature.multiplicity>\r
- <UML:Multiplicity xmi.id = '-64--88-1-101-3dc093e3:1157f1866b2:-8000:0000000000000A5D'>\r
- <UML:Multiplicity.range>\r
- <UML:MultiplicityRange xmi.id = '-64--88-1-101-3dc093e3:1157f1866b2:-8000:0000000000000A5C'\r
- lower = '1' upper = '1'/>\r
- </UML:Multiplicity.range>\r
- </UML:Multiplicity>\r
- </UML:StructuralFeature.multiplicity>\r
- <UML:StructuralFeature.type>\r
- <UML:DataType xmi.idref = '-64--88-1-101-3dc093e3:1157f1866b2:-8000:0000000000000A5E'/>\r
- </UML:StructuralFeature.type>\r
- </UML:Attribute>\r
- <UML:Attribute xmi.id = '-64--88-1-101-3dc093e3:1157f1866b2:-8000:0000000000000A5F'\r
- name = 'buildDate' visibility = 'public' isSpecification = 'false' ownerScope = 'instance'\r
- changeability = 'changeable' targetScope = 'instance'>\r
- <UML:StructuralFeature.multiplicity>\r
- <UML:Multiplicity xmi.id = '-64--88-1-101-3dc093e3:1157f1866b2:-8000:0000000000000A6C'>\r
- <UML:Multiplicity.range>\r
- <UML:MultiplicityRange xmi.id = '-64--88-1-101-3dc093e3:1157f1866b2:-8000:0000000000000A6B'\r
- lower = '1' upper = '1'/>\r
- </UML:Multiplicity.range>\r
- </UML:Multiplicity>\r
- </UML:StructuralFeature.multiplicity>\r
- <UML:StructuralFeature.type>\r
- <UML:Class xmi.idref = '-64--88-1-101-3dc093e3:1157f1866b2:-8000:0000000000000A6F'/>\r
- </UML:StructuralFeature.type>\r
- </UML:Attribute>\r
- <UML:Attribute xmi.id = '-64--88-1-101-3dc093e3:1157f1866b2:-8000:0000000000000A64'\r
- name = 'UID' visibility = 'public' isSpecification = 'false' ownerScope = 'instance'\r
- changeability = 'changeable' targetScope = 'instance'>\r
- <UML:StructuralFeature.multiplicity>\r
- <UML:Multiplicity xmi.id = '-64--88-1-101-3dc093e3:1157f1866b2:-8000:0000000000000A75'>\r
- <UML:Multiplicity.range>\r
- <UML:MultiplicityRange xmi.id = '-64--88-1-101-3dc093e3:1157f1866b2:-8000:0000000000000A74'\r
- lower = '1' upper = '1'/>\r
- </UML:Multiplicity.range>\r
- </UML:Multiplicity>\r
- </UML:StructuralFeature.multiplicity>\r
- <UML:StructuralFeature.type>\r
- <UML:DataType xmi.idref = '-64--88-1-101-3dc093e3:1157f1866b2:-8000:0000000000000A5E'/>\r
- </UML:StructuralFeature.type>\r
- </UML:Attribute>\r
- <UML:Operation xmi.id = '-64--88-1-101-3dc093e3:1157f1866b2:-8000:0000000000000A77'\r
- name = 'serialize' visibility = 'public' isSpecification = 'false' ownerScope = 'instance'\r
- isQuery = 'false' concurrency = 'sequential' isRoot = 'false' isLeaf = 'false'\r
- isAbstract = 'false'>\r
- <UML:BehavioralFeature.parameter>\r
- <UML:Parameter xmi.id = '-64--88-1-101-3dc093e3:1157f1866b2:-8000:0000000000000A78'\r
- name = 'return' isSpecification = 'false' kind = 'return'>\r
- <UML:Parameter.type>\r
- <UML:Class xmi.idref = '-64--88-1-101-3dc093e3:1157f1866b2:-8000:0000000000000A7A'/>\r
- </UML:Parameter.type>\r
- </UML:Parameter>\r
- </UML:BehavioralFeature.parameter>\r
- </UML:Operation>\r
- <UML:Operation xmi.id = '-64--88-1-101-3dc093e3:1157f1866b2:-8000:0000000000000A7B'\r
- name = 'newOperation' visibility = 'public' isSpecification = 'false' ownerScope = 'instance'\r
- isQuery = 'false' concurrency = 'sequential' isRoot = 'false' isLeaf = 'false'\r
- isAbstract = 'false'>\r
- <UML:BehavioralFeature.parameter>\r
- <UML:Parameter xmi.id = '-64--88-1-101-3dc093e3:1157f1866b2:-8000:0000000000000A7C'\r
- name = 'return' isSpecification = 'false' kind = 'return'>\r
- <UML:Parameter.type>\r
- <UML:DataType xmi.idref = '-64--88-1-101-3dc093e3:1157f1866b2:-8000:0000000000000A76'/>\r
- </UML:Parameter.type>\r
- </UML:Parameter>\r
- </UML:BehavioralFeature.parameter>\r
- </UML:Operation>\r
- </UML:Classifier.feature>\r
- </UML:Class>\r
- <UML:Class xmi.id = '-64--88-1-101-3dc093e3:1157f1866b2:-8000:0000000000000A42'\r
- name = 'MxDeployment' visibility = 'public' isSpecification = 'false' isRoot = 'false'\r
- isLeaf = 'false' isAbstract = 'false' isActive = 'false'/>\r
- <UML:Class xmi.id = '-64--88-1-101-3dc093e3:1157f1866b2:-8000:0000000000000A44'\r
- name = 'CapCoTestRun' visibility = 'public' isSpecification = 'false' isRoot = 'false'\r
- isLeaf = 'false' isAbstract = 'false' isActive = 'false'>\r
- <UML:GeneralizableElement.generalization>\r
- <UML:Generalization xmi.idref = '-64--88-1-101--4a0353a6:1158fc10f03:-8000:0000000000000A46'/>\r
- </UML:GeneralizableElement.generalization>\r
- </UML:Class>\r
- <UML:Class xmi.id = '-64--88-1-101-3dc093e3:1157f1866b2:-8000:0000000000000A46'\r
- name = 'MxXmlTestRun' visibility = 'public' isSpecification = 'false' isRoot = 'false'\r
- isLeaf = 'false' isAbstract = 'false' isActive = 'false'>\r
- <UML:GeneralizableElement.generalization>\r
- <UML:Generalization xmi.idref = '-64--88-1-101--4a0353a6:1158fc10f03:-8000:0000000000000A47'/>\r
- </UML:GeneralizableElement.generalization>\r
- </UML:Class>\r
- <UML:Association xmi.id = '-64--88-1-101-3dc093e3:1157f1866b2:-8000:0000000000000A50'\r
- name = '' isSpecification = 'false' isRoot = 'false' isLeaf = 'false' isAbstract = 'false'>\r
- <UML:Association.connection>\r
- <UML:AssociationEnd xmi.id = '-64--88-1-101-3dc093e3:1157f1866b2:-8000:0000000000000A51'\r
- visibility = 'public' isSpecification = 'false' isNavigable = 'false' ordering = 'unordered'\r
- aggregation = 'none' targetScope = 'instance' changeability = 'changeable'>\r
- <UML:AssociationEnd.multiplicity>\r
- <UML:Multiplicity xmi.id = '-64--88-1-101-3dc093e3:1157f1866b2:-8000:0000000000000A52'>\r
- <UML:Multiplicity.range>\r
- <UML:MultiplicityRange xmi.id = '-64--88-1-101-3dc093e3:1157f1866b2:-8000:0000000000000A53'\r
- lower = '1' upper = '1'/>\r
- </UML:Multiplicity.range>\r
- </UML:Multiplicity>\r
- </UML:AssociationEnd.multiplicity>\r
- <UML:AssociationEnd.participant>\r
- <UML:Class xmi.idref = '-64--88-1-101-3dc093e3:1157f1866b2:-8000:0000000000000A17'/>\r
- </UML:AssociationEnd.participant>\r
- </UML:AssociationEnd>\r
- <UML:AssociationEnd xmi.id = '-64--88-1-101-3dc093e3:1157f1866b2:-8000:0000000000000A54'\r
- visibility = 'public' isSpecification = 'false' isNavigable = 'true' ordering = 'unordered'\r
- aggregation = 'none' targetScope = 'instance' changeability = 'changeable'>\r
- <UML:AssociationEnd.multiplicity>\r
- <UML:Multiplicity xmi.id = '-64--88-1-101-3dc093e3:1157f1866b2:-8000:0000000000000A55'>\r
- <UML:Multiplicity.range>\r
- <UML:MultiplicityRange xmi.id = '-64--88-1-101-3dc093e3:1157f1866b2:-8000:0000000000000A56'\r
- lower = '1' upper = '1'/>\r
- </UML:Multiplicity.range>\r
- </UML:Multiplicity>\r
- </UML:AssociationEnd.multiplicity>\r
- <UML:AssociationEnd.participant>\r
- <UML:Class xmi.idref = '-64--88-1-101-3dc093e3:1157f1866b2:-8000:0000000000000A15'/>\r
- </UML:AssociationEnd.participant>\r
- </UML:AssociationEnd>\r
- </UML:Association.connection>\r
- </UML:Association>\r
- <UML:DataType xmi.id = '-64--88-1-101-3dc093e3:1157f1866b2:-8000:0000000000000A5E'\r
- name = 'long' isSpecification = 'false' isRoot = 'false' isLeaf = 'false'\r
- isAbstract = 'false'/>\r
- <UML:Package xmi.id = '-64--88-1-101-3dc093e3:1157f1866b2:-8000:0000000000000A6D'\r
- name = 'java' isSpecification = 'false' isRoot = 'false' isLeaf = 'false'\r
- isAbstract = 'false'>\r
- <UML:Namespace.ownedElement>\r
- <UML:Package xmi.id = '-64--88-1-101-3dc093e3:1157f1866b2:-8000:0000000000000A6E'\r
- name = 'util' isSpecification = 'false' isRoot = 'false' isLeaf = 'false'\r
- isAbstract = 'false'>\r
- <UML:Namespace.ownedElement>\r
- <UML:Class xmi.id = '-64--88-1-101-3dc093e3:1157f1866b2:-8000:0000000000000A6F'\r
- name = 'Date' isSpecification = 'false' isRoot = 'false' isLeaf = 'false'\r
- isAbstract = 'false' isActive = 'false'/>\r
- </UML:Namespace.ownedElement>\r
- </UML:Package>\r
- <UML:Package xmi.id = '-64--88-1-101-3dc093e3:1157f1866b2:-8000:0000000000000A79'\r
- name = 'lang' isSpecification = 'false' isRoot = 'false' isLeaf = 'false'\r
- isAbstract = 'false'>\r
- <UML:Namespace.ownedElement>\r
- <UML:Class xmi.id = '-64--88-1-101-3dc093e3:1157f1866b2:-8000:0000000000000A7A'\r
- name = 'String' isSpecification = 'false' isRoot = 'false' isLeaf = 'false'\r
- isAbstract = 'false' isActive = 'false'/>\r
- </UML:Namespace.ownedElement>\r
- </UML:Package>\r
- </UML:Namespace.ownedElement>\r
- </UML:Package>\r
- <UML:DataType xmi.id = '-64--88-1-101-3dc093e3:1157f1866b2:-8000:0000000000000A76'\r
- name = 'void' isSpecification = 'false' isRoot = 'false' isLeaf = 'false'\r
- isAbstract = 'false'/>\r
- <UML:Association xmi.id = '-64--88-1-101--7f8968dd:1157f72a2bb:-8000:0000000000000A13'\r
- name = '' isSpecification = 'false' isRoot = 'false' isLeaf = 'false' isAbstract = 'false'>\r
- <UML:Association.connection>\r
- <UML:AssociationEnd xmi.id = '-64--88-1-101--7f8968dd:1157f72a2bb:-8000:0000000000000A14'\r
- visibility = 'public' isSpecification = 'false' isNavigable = 'false' ordering = 'unordered'\r
- aggregation = 'none' targetScope = 'instance' changeability = 'changeable'>\r
- <UML:AssociationEnd.multiplicity>\r
- <UML:Multiplicity xmi.id = '-64--88-1-101--7f8968dd:1157f72a2bb:-8000:0000000000000A3B'>\r
- <UML:Multiplicity.range>\r
- <UML:MultiplicityRange xmi.id = '-64--88-1-101--7f8968dd:1157f72a2bb:-8000:0000000000000A3A'\r
- lower = '0' upper = '-1'/>\r
- </UML:Multiplicity.range>\r
- </UML:Multiplicity>\r
- </UML:AssociationEnd.multiplicity>\r
- <UML:AssociationEnd.participant>\r
- <UML:Class xmi.idref = '-64--88-1-101-3dc093e3:1157f1866b2:-8000:00000000000009ED'/>\r
- </UML:AssociationEnd.participant>\r
- </UML:AssociationEnd>\r
- <UML:AssociationEnd xmi.id = '-64--88-1-101--7f8968dd:1157f72a2bb:-8000:0000000000000A17'\r
- visibility = 'public' isSpecification = 'false' isNavigable = 'true' ordering = 'unordered'\r
- aggregation = 'none' targetScope = 'instance' changeability = 'changeable'>\r
- <UML:AssociationEnd.multiplicity>\r
- <UML:Multiplicity xmi.id = '-64--88-1-101--7f8968dd:1157f72a2bb:-8000:0000000000000A18'>\r
- <UML:Multiplicity.range>\r
- <UML:MultiplicityRange xmi.id = '-64--88-1-101--7f8968dd:1157f72a2bb:-8000:0000000000000A19'\r
- lower = '1' upper = '1'/>\r
- </UML:Multiplicity.range>\r
- </UML:Multiplicity>\r
- </UML:AssociationEnd.multiplicity>\r
- <UML:AssociationEnd.participant>\r
- <UML:Class xmi.idref = '-64--88-1-101-3dc093e3:1157f1866b2:-8000:0000000000000A17'/>\r
- </UML:AssociationEnd.participant>\r
- </UML:AssociationEnd>\r
- </UML:Association.connection>\r
- </UML:Association>\r
- <UML:Association xmi.id = '-64--88-1-101--7f8968dd:1157f72a2bb:-8000:0000000000000A1A'\r
- name = '' isSpecification = 'false' isRoot = 'false' isLeaf = 'false' isAbstract = 'false'>\r
- <UML:Association.connection>\r
- <UML:AssociationEnd xmi.id = '-64--88-1-101--7f8968dd:1157f72a2bb:-8000:0000000000000A1B'\r
- visibility = 'public' isSpecification = 'false' isNavigable = 'false' ordering = 'unordered'\r
- aggregation = 'none' targetScope = 'instance' changeability = 'changeable'>\r
- <UML:AssociationEnd.multiplicity>\r
- <UML:Multiplicity xmi.id = '-64--88-1-101--7f8968dd:1157f72a2bb:-8000:0000000000000A3D'>\r
- <UML:Multiplicity.range>\r
- <UML:MultiplicityRange xmi.id = '-64--88-1-101--7f8968dd:1157f72a2bb:-8000:0000000000000A3C'\r
- lower = '0' upper = '1'/>\r
- </UML:Multiplicity.range>\r
- </UML:Multiplicity>\r
- </UML:AssociationEnd.multiplicity>\r
- <UML:AssociationEnd.participant>\r
- <UML:Class xmi.idref = '-64--88-1-101-3dc093e3:1157f1866b2:-8000:00000000000009ED'/>\r
- </UML:AssociationEnd.participant>\r
- </UML:AssociationEnd>\r
- <UML:AssociationEnd xmi.id = '-64--88-1-101--7f8968dd:1157f72a2bb:-8000:0000000000000A1E'\r
- visibility = 'public' isSpecification = 'false' isNavigable = 'true' ordering = 'unordered'\r
- aggregation = 'none' targetScope = 'instance' changeability = 'changeable'>\r
- <UML:AssociationEnd.multiplicity>\r
- <UML:Multiplicity xmi.id = '-64--88-1-101--7f8968dd:1157f72a2bb:-8000:0000000000000A1F'>\r
- <UML:Multiplicity.range>\r
- <UML:MultiplicityRange xmi.id = '-64--88-1-101--7f8968dd:1157f72a2bb:-8000:0000000000000A20'\r
- lower = '1' upper = '1'/>\r
- </UML:Multiplicity.range>\r
- </UML:Multiplicity>\r
- </UML:AssociationEnd.multiplicity>\r
- <UML:AssociationEnd.participant>\r
- <UML:Class xmi.idref = '-64--88-1-101-3dc093e3:1157f1866b2:-8000:00000000000009F5'/>\r
- </UML:AssociationEnd.participant>\r
- </UML:AssociationEnd>\r
- </UML:Association.connection>\r
- </UML:Association>\r
- <UML:Association xmi.id = '-64--88-1-101--7f8968dd:1157f72a2bb:-8000:0000000000000A21'\r
- name = '' isSpecification = 'false' isRoot = 'false' isLeaf = 'false' isAbstract = 'false'>\r
- <UML:Association.connection>\r
- <UML:AssociationEnd xmi.id = '-64--88-1-101--7f8968dd:1157f72a2bb:-8000:0000000000000A22'\r
- visibility = 'public' isSpecification = 'false' isNavigable = 'false' ordering = 'unordered'\r
- aggregation = 'none' targetScope = 'instance' changeability = 'changeable'>\r
- <UML:AssociationEnd.multiplicity>\r
- <UML:Multiplicity xmi.id = '-64--88-1-101--7f8968dd:1157f72a2bb:-8000:0000000000000A3F'>\r
- <UML:Multiplicity.range>\r
- <UML:MultiplicityRange xmi.id = '-64--88-1-101--7f8968dd:1157f72a2bb:-8000:0000000000000A3E'\r
- lower = '0' upper = '-1'/>\r
- </UML:Multiplicity.range>\r
- </UML:Multiplicity>\r
- </UML:AssociationEnd.multiplicity>\r
- <UML:AssociationEnd.participant>\r
- <UML:Class xmi.idref = '-64--88-1-101-3dc093e3:1157f1866b2:-8000:00000000000009F1'/>\r
- </UML:AssociationEnd.participant>\r
- </UML:AssociationEnd>\r
- <UML:AssociationEnd xmi.id = '-64--88-1-101--7f8968dd:1157f72a2bb:-8000:0000000000000A25'\r
- visibility = 'public' isSpecification = 'false' isNavigable = 'true' ordering = 'unordered'\r
- aggregation = 'none' targetScope = 'instance' changeability = 'changeable'>\r
- <UML:AssociationEnd.multiplicity>\r
- <UML:Multiplicity xmi.id = '-64--88-1-101--7f8968dd:1157f72a2bb:-8000:0000000000000A26'>\r
- <UML:Multiplicity.range>\r
- <UML:MultiplicityRange xmi.id = '-64--88-1-101--7f8968dd:1157f72a2bb:-8000:0000000000000A27'\r
- lower = '1' upper = '1'/>\r
- </UML:Multiplicity.range>\r
- </UML:Multiplicity>\r
- </UML:AssociationEnd.multiplicity>\r
- <UML:AssociationEnd.participant>\r
- <UML:Class xmi.idref = '-64--88-1-101-3dc093e3:1157f1866b2:-8000:00000000000009F5'/>\r
- </UML:AssociationEnd.participant>\r
- </UML:AssociationEnd>\r
- </UML:Association.connection>\r
- </UML:Association>\r
- <UML:Class xmi.id = '-64--88-1-101--7f8968dd:1157f72a2bb:-8000:0000000000000A28'\r
- name = 'DatabaseDeployer' visibility = 'public' isSpecification = 'false'\r
- isRoot = 'false' isLeaf = 'false' isAbstract = 'false' isActive = 'false'/>\r
- <UML:Class xmi.id = '-64--88-1-101--7f8968dd:1157f72a2bb:-8000:0000000000000A2A'\r
- name = 'VersionedFileSetDeployer' visibility = 'public' isSpecification = 'false'\r
- isRoot = 'false' isLeaf = 'false' isAbstract = 'false' isActive = 'false'/>\r
- <UML:Association xmi.id = '-64--88-1-101--7f8968dd:1157f72a2bb:-8000:0000000000000A2C'\r
- name = '' isSpecification = 'false' isRoot = 'false' isLeaf = 'false' isAbstract = 'false'>\r
- <UML:Association.connection>\r
- <UML:AssociationEnd xmi.id = '-64--88-1-101--7f8968dd:1157f72a2bb:-8000:0000000000000A2D'\r
- visibility = 'public' isSpecification = 'false' isNavigable = 'false' ordering = 'unordered'\r
- aggregation = 'none' targetScope = 'instance' changeability = 'changeable'>\r
- <UML:AssociationEnd.multiplicity>\r
- <UML:Multiplicity xmi.id = '-64--88-1-101--7f8968dd:1157f72a2bb:-8000:0000000000000A2E'>\r
- <UML:Multiplicity.range>\r
- <UML:MultiplicityRange xmi.id = '-64--88-1-101--7f8968dd:1157f72a2bb:-8000:0000000000000A2F'\r
- lower = '1' upper = '1'/>\r
- </UML:Multiplicity.range>\r
- </UML:Multiplicity>\r
- </UML:AssociationEnd.multiplicity>\r
- <UML:AssociationEnd.participant>\r
- <UML:Class xmi.idref = '-64--88-1-101-3dc093e3:1157f1866b2:-8000:0000000000000A42'/>\r
- </UML:AssociationEnd.participant>\r
- </UML:AssociationEnd>\r
- <UML:AssociationEnd xmi.id = '-64--88-1-101--7f8968dd:1157f72a2bb:-8000:0000000000000A30'\r
- visibility = 'public' isSpecification = 'false' isNavigable = 'true' ordering = 'unordered'\r
- aggregation = 'none' targetScope = 'instance' changeability = 'changeable'>\r
- <UML:AssociationEnd.multiplicity>\r
- <UML:Multiplicity xmi.id = '-64--88-1-101--7f8968dd:1157f72a2bb:-8000:0000000000000A31'>\r
- <UML:Multiplicity.range>\r
- <UML:MultiplicityRange xmi.id = '-64--88-1-101--7f8968dd:1157f72a2bb:-8000:0000000000000A32'\r
- lower = '1' upper = '1'/>\r
- </UML:Multiplicity.range>\r
- </UML:Multiplicity>\r
- </UML:AssociationEnd.multiplicity>\r
- <UML:AssociationEnd.participant>\r
- <UML:Class xmi.idref = '-64--88-1-101--7f8968dd:1157f72a2bb:-8000:0000000000000A28'/>\r
- </UML:AssociationEnd.participant>\r
- </UML:AssociationEnd>\r
- </UML:Association.connection>\r
- </UML:Association>\r
- <UML:Association xmi.id = '-64--88-1-101--7f8968dd:1157f72a2bb:-8000:0000000000000A33'\r
- name = '' isSpecification = 'false' isRoot = 'false' isLeaf = 'false' isAbstract = 'false'>\r
- <UML:Association.connection>\r
- <UML:AssociationEnd xmi.id = '-64--88-1-101--7f8968dd:1157f72a2bb:-8000:0000000000000A34'\r
- visibility = 'public' isSpecification = 'false' isNavigable = 'false' ordering = 'unordered'\r
- aggregation = 'none' targetScope = 'instance' changeability = 'changeable'>\r
- <UML:AssociationEnd.multiplicity>\r
- <UML:Multiplicity xmi.id = '-64--88-1-101--7f8968dd:1157f72a2bb:-8000:0000000000000A35'>\r
- <UML:Multiplicity.range>\r
- <UML:MultiplicityRange xmi.id = '-64--88-1-101--7f8968dd:1157f72a2bb:-8000:0000000000000A36'\r
- lower = '1' upper = '1'/>\r
- </UML:Multiplicity.range>\r
- </UML:Multiplicity>\r
- </UML:AssociationEnd.multiplicity>\r
- <UML:AssociationEnd.participant>\r
- <UML:Class xmi.idref = '-64--88-1-101-3dc093e3:1157f1866b2:-8000:0000000000000A42'/>\r
- </UML:AssociationEnd.participant>\r
- </UML:AssociationEnd>\r
- <UML:AssociationEnd xmi.id = '-64--88-1-101--7f8968dd:1157f72a2bb:-8000:0000000000000A37'\r
- visibility = 'public' isSpecification = 'false' isNavigable = 'true' ordering = 'unordered'\r
- aggregation = 'none' targetScope = 'instance' changeability = 'changeable'>\r
- <UML:AssociationEnd.multiplicity>\r
- <UML:Multiplicity xmi.id = '-64--88-1-101--7f8968dd:1157f72a2bb:-8000:0000000000000A38'>\r
- <UML:Multiplicity.range>\r
- <UML:MultiplicityRange xmi.id = '-64--88-1-101--7f8968dd:1157f72a2bb:-8000:0000000000000A39'\r
- lower = '1' upper = '1'/>\r
- </UML:Multiplicity.range>\r
- </UML:Multiplicity>\r
- </UML:AssociationEnd.multiplicity>\r
- <UML:AssociationEnd.participant>\r
- <UML:Class xmi.idref = '-64--88-1-101--7f8968dd:1157f72a2bb:-8000:0000000000000A2A'/>\r
- </UML:AssociationEnd.participant>\r
- </UML:AssociationEnd>\r
- </UML:Association.connection>\r
- </UML:Association>\r
- <UML:Class xmi.id = '-64--88-1-101--7f8968dd:1157f72a2bb:-8000:0000000000000A40'\r
- name = '' visibility = 'public' isSpecification = 'false' isRoot = 'false'\r
- isLeaf = 'false' isAbstract = 'false' isActive = 'false'/>\r
- <UML:Generalization xmi.id = '-64--88-1-101--4a0353a6:1158fc10f03:-8000:0000000000000A42'\r
- isSpecification = 'false'>\r
- <UML:Generalization.child>\r
- <UML:Class xmi.idref = '-64--88-1-101-3dc093e3:1157f1866b2:-8000:0000000000000A40'/>\r
- </UML:Generalization.child>\r
- <UML:Generalization.parent>\r
- <UML:Class xmi.idref = '-64--88-1-101-3dc093e3:1157f1866b2:-8000:0000000000000A15'/>\r
- </UML:Generalization.parent>\r
- </UML:Generalization>\r
- <UML:Generalization xmi.id = '-64--88-1-101--4a0353a6:1158fc10f03:-8000:0000000000000A43'\r
- isSpecification = 'false'>\r
- <UML:Generalization.child>\r
- <UML:Class xmi.idref = '-64--88-1-101-3dc093e3:1157f1866b2:-8000:0000000000000A1B'/>\r
- </UML:Generalization.child>\r
- <UML:Generalization.parent>\r
- <UML:Class xmi.idref = '-64--88-1-101-3dc093e3:1157f1866b2:-8000:0000000000000A17'/>\r
- </UML:Generalization.parent>\r
- </UML:Generalization>\r
- <UML:Generalization xmi.id = '-64--88-1-101--4a0353a6:1158fc10f03:-8000:0000000000000A44'\r
- isSpecification = 'false'>\r
- <UML:Generalization.child>\r
- <UML:Class xmi.idref = '-64--88-1-101-3dc093e3:1157f1866b2:-8000:00000000000009F7'/>\r
- </UML:Generalization.child>\r
- <UML:Generalization.parent>\r
- <UML:Class xmi.idref = '-64--88-1-101-3dc093e3:1157f1866b2:-8000:00000000000009F5'/>\r
- </UML:Generalization.parent>\r
- </UML:Generalization>\r
- <UML:Generalization xmi.id = '-64--88-1-101--4a0353a6:1158fc10f03:-8000:0000000000000A46'\r
- isSpecification = 'false'>\r
- <UML:Generalization.child>\r
- <UML:Class xmi.idref = '-64--88-1-101-3dc093e3:1157f1866b2:-8000:0000000000000A44'/>\r
- </UML:Generalization.child>\r
- <UML:Generalization.parent>\r
- <UML:Class xmi.idref = '-64--88-1-101-3dc093e3:1157f1866b2:-8000:00000000000009F1'/>\r
- </UML:Generalization.parent>\r
- </UML:Generalization>\r
- <UML:Generalization xmi.id = '-64--88-1-101--4a0353a6:1158fc10f03:-8000:0000000000000A47'\r
- isSpecification = 'false'>\r
- <UML:Generalization.child>\r
- <UML:Class xmi.idref = '-64--88-1-101-3dc093e3:1157f1866b2:-8000:0000000000000A46'/>\r
- </UML:Generalization.child>\r
- <UML:Generalization.parent>\r
- <UML:Class xmi.idref = '-64--88-1-101-3dc093e3:1157f1866b2:-8000:0000000000000A44'/>\r
- </UML:Generalization.parent>\r
- </UML:Generalization>\r
- <UML:Generalization xmi.id = '-64--88-1-101--4a0353a6:1158fc10f03:-8000:0000000000000A48'\r
- isSpecification = 'false'>\r
- <UML:Generalization.child>\r
- <UML:Class xmi.idref = '-64--88-1-101-3dc093e3:1157f1866b2:-8000:00000000000009ED'/>\r
- </UML:Generalization.child>\r
- <UML:Generalization.parent>\r
- <UML:Class xmi.idref = '-64--88-1-101-3dc093e3:1157f1866b2:-8000:00000000000009EF'/>\r
- </UML:Generalization.parent>\r
- </UML:Generalization>\r
- <UML:Generalization xmi.id = '-64--88-1-101--4a0353a6:1158fc10f03:-8000:0000000000000A49'\r
- isSpecification = 'false'>\r
- <UML:Generalization.child>\r
- <UML:Class xmi.idref = '-64--88-1-101-3dc093e3:1157f1866b2:-8000:00000000000009F1'/>\r
- </UML:Generalization.child>\r
- <UML:Generalization.parent>\r
- <UML:Class xmi.idref = '-64--88-1-101-3dc093e3:1157f1866b2:-8000:00000000000009EF'/>\r
- </UML:Generalization.parent>\r
- </UML:Generalization>\r
- </UML:Namespace.ownedElement>\r
- </UML:Model>\r
- </XMI.content>\r
-</XMI>\r
-<pgml description="org.argouml.uml.diagram.static_structure.ui.UMLClassDiagram|-64--88-1-101-3dc093e3:1157f1866b2:-8000:00000000000009EC"\r
- name="Class Diagram 1"\r
->\r
- <rectangle name="Fig0"\r
- x="0"\r
- y="152"\r
- width="1056"\r
- height="272"\r
- fill="1"\r
- fillcolor="white"\r
- stroke="1"\r
- strokecolor="black"\r
- />\r
- <rectangle name="Fig1"\r
- x="8"\r
- y="440"\r
- width="1048"\r
- height="536"\r
- fill="1"\r
- fillcolor="white"\r
- stroke="1"\r
- strokecolor="black"\r
- />\r
- <group name="Fig2"\r
- description="org.argouml.uml.diagram.static_structure.ui.FigClass[536, 752, 90, 65]pathVisible=false;operationsVisible=true;attributesVisible=true"\r
- href="-64--88-1-101-3dc093e3:1157f1866b2:-8000:00000000000009ED"\r
- fill="1"\r
- fillcolor="white"\r
- stroke="1"\r
- strokecolor="black"\r
- >\r
- <private>\r
- </private>\r
- \r
- <rectangle name="Fig2.0"\r
- x="536"\r
- y="752"\r
- width="90"\r
- height="65"\r
- fill="1"\r
- fillcolor="white"\r
- stroke="0"\r
- strokecolor="black"\r
- />\r
- <group name="Fig2.1"\r
- description="org.argouml.uml.diagram.ui.FigStereotypesCompartment[536, 752, 90, 2]"\r
- href="-64--88-1-101-3dc093e3:1157f1866b2:-8000:00000000000009ED"\r
- fill="1"\r
- fillcolor="white"\r
- stroke="1"\r
- strokecolor="black"\r
- >\r
- <private>\r
- </private>\r
- \r
- <rectangle name="Fig2.1.0"\r
- x="536"\r
- y="752"\r
- width="90"\r
- height="2"\r
- fill="1"\r
- fillcolor="white"\r
- stroke="1"\r
- strokecolor="black"\r
- />\r
- </group>\r
- <text name="Fig2.2"\r
- x="536"\r
- y="754"\r
- fill="1"\r
- fillcolor="white"\r
- stroke="0"\r
- strokecolor="red"\r
- font="Dialog"\r
- textsize="10"\r
- >Deployment</text>\r
- <group name="Fig2.3"\r
- description="org.argouml.uml.diagram.ui.FigOperationsCompartment[537, 797, 89, 20]"\r
- fill="1"\r
- fillcolor="white"\r
- stroke="0"\r
- strokecolor="black"\r
- >\r
- <private>\r
- </private>\r
- \r
- <rectangle name="Fig2.3.0"\r
- x="537"\r
- y="797"\r
- width="89"\r
- height="20"\r
- fill="1"\r
- fillcolor="white"\r
- stroke="0"\r
- strokecolor="black"\r
- />\r
- <path name="Fig2.3.1"\r
- description="org.argouml.uml.diagram.ui.FigFeaturesCompartment$FigSeperator"\r
- fill="1"\r
- fillcolor="white"\r
- stroke="1"\r
- strokecolor="black"\r
- >\r
- <moveto x="537"\r
- y="797" />\r
- <lineto x="626"\r
- y="797" />\r
- </path>\r
- </group>\r
- <group name="Fig2.4"\r
- description="org.argouml.uml.diagram.ui.FigAttributesCompartment[537, 776, 89, 20]"\r
- fill="1"\r
- fillcolor="white"\r
- stroke="0"\r
- strokecolor="black"\r
- >\r
- <private>\r
- </private>\r
- \r
- <rectangle name="Fig2.4.0"\r
- x="537"\r
- y="776"\r
- width="89"\r
- height="20"\r
- fill="1"\r
- fillcolor="white"\r
- stroke="0"\r
- strokecolor="black"\r
- />\r
- <path name="Fig2.4.1"\r
- description="org.argouml.uml.diagram.ui.FigFeaturesCompartment$FigSeperator"\r
- fill="1"\r
- fillcolor="white"\r
- stroke="1"\r
- strokecolor="black"\r
- >\r
- <moveto x="537"\r
- y="776" />\r
- <lineto x="626"\r
- y="776" />\r
- </path>\r
- </group>\r
- <rectangle name="Fig2.5"\r
- x="536"\r
- y="752"\r
- width="90"\r
- height="65"\r
- fill="0"\r
- fillcolor="white"\r
- stroke="1"\r
- strokecolor="black"\r
- />\r
- </group>\r
- <group name="Fig3"\r
- description="org.argouml.uml.diagram.static_structure.ui.FigClass[544, 864, 90, 65]pathVisible=false;operationsVisible=true;attributesVisible=true"\r
- href="-64--88-1-101-3dc093e3:1157f1866b2:-8000:00000000000009EF"\r
- fill="1"\r
- fillcolor="white"\r
- stroke="1"\r
- strokecolor="black"\r
- >\r
- <private>\r
- </private>\r
- \r
- <rectangle name="Fig3.0"\r
- x="544"\r
- y="864"\r
- width="90"\r
- height="65"\r
- fill="1"\r
- fillcolor="white"\r
- stroke="0"\r
- strokecolor="black"\r
- />\r
- <group name="Fig3.1"\r
- description="org.argouml.uml.diagram.ui.FigStereotypesCompartment[544, 864, 90, 2]"\r
- href="-64--88-1-101-3dc093e3:1157f1866b2:-8000:00000000000009EF"\r
- fill="1"\r
- fillcolor="white"\r
- stroke="1"\r
- strokecolor="black"\r
- >\r
- <private>\r
- </private>\r
- \r
- <rectangle name="Fig3.1.0"\r
- x="544"\r
- y="864"\r
- width="90"\r
- height="2"\r
- fill="1"\r
- fillcolor="white"\r
- stroke="1"\r
- strokecolor="black"\r
- />\r
- </group>\r
- <text name="Fig3.2"\r
- x="544"\r
- y="866"\r
- fill="1"\r
- fillcolor="white"\r
- stroke="0"\r
- strokecolor="red"\r
- font="Dialog"\r
- textsize="10"\r
- >Process</text>\r
- <group name="Fig3.3"\r
- description="org.argouml.uml.diagram.ui.FigOperationsCompartment[545, 909, 89, 20]"\r
- fill="1"\r
- fillcolor="white"\r
- stroke="0"\r
- strokecolor="black"\r
- >\r
- <private>\r
- </private>\r
- \r
- <rectangle name="Fig3.3.0"\r
- x="545"\r
- y="909"\r
- width="89"\r
- height="20"\r
- fill="1"\r
- fillcolor="white"\r
- stroke="0"\r
- strokecolor="black"\r
- />\r
- <path name="Fig3.3.1"\r
- description="org.argouml.uml.diagram.ui.FigFeaturesCompartment$FigSeperator"\r
- fill="1"\r
- fillcolor="white"\r
- stroke="1"\r
- strokecolor="black"\r
- >\r
- <moveto x="545"\r
- y="909" />\r
- <lineto x="634"\r
- y="909" />\r
- </path>\r
- </group>\r
- <group name="Fig3.4"\r
- description="org.argouml.uml.diagram.ui.FigAttributesCompartment[545, 888, 89, 20]"\r
- fill="1"\r
- fillcolor="white"\r
- stroke="0"\r
- strokecolor="black"\r
- >\r
- <private>\r
- </private>\r
- \r
- <rectangle name="Fig3.4.0"\r
- x="545"\r
- y="888"\r
- width="89"\r
- height="20"\r
- fill="1"\r
- fillcolor="white"\r
- stroke="0"\r
- strokecolor="black"\r
- />\r
- <path name="Fig3.4.1"\r
- description="org.argouml.uml.diagram.ui.FigFeaturesCompartment$FigSeperator"\r
- fill="1"\r
- fillcolor="white"\r
- stroke="1"\r
- strokecolor="black"\r
- >\r
- <moveto x="545"\r
- y="888" />\r
- <lineto x="634"\r
- y="888" />\r
- </path>\r
- </group>\r
- <rectangle name="Fig3.5"\r
- x="544"\r
- y="864"\r
- width="90"\r
- height="65"\r
- fill="0"\r
- fillcolor="white"\r
- stroke="1"\r
- strokecolor="black"\r
- />\r
- </group>\r
- <group name="Fig4"\r
- description="org.argouml.uml.diagram.static_structure.ui.FigClass[880, 752, 90, 65]pathVisible=false;operationsVisible=true;attributesVisible=true"\r
- href="-64--88-1-101-3dc093e3:1157f1866b2:-8000:00000000000009F1"\r
- fill="1"\r
- fillcolor="white"\r
- stroke="1"\r
- strokecolor="black"\r
- >\r
- <private>\r
- </private>\r
- \r
- <rectangle name="Fig4.0"\r
- x="880"\r
- y="752"\r
- width="90"\r
- height="65"\r
- fill="1"\r
- fillcolor="white"\r
- stroke="0"\r
- strokecolor="black"\r
- />\r
- <group name="Fig4.1"\r
- description="org.argouml.uml.diagram.ui.FigStereotypesCompartment[880, 752, 90, 2]"\r
- href="-64--88-1-101-3dc093e3:1157f1866b2:-8000:00000000000009F1"\r
- fill="1"\r
- fillcolor="white"\r
- stroke="1"\r
- strokecolor="black"\r
- >\r
- <private>\r
- </private>\r
- \r
- <rectangle name="Fig4.1.0"\r
- x="880"\r
- y="752"\r
- width="90"\r
- height="2"\r
- fill="1"\r
- fillcolor="white"\r
- stroke="1"\r
- strokecolor="black"\r
- />\r
- </group>\r
- <text name="Fig4.2"\r
- x="880"\r
- y="754"\r
- fill="1"\r
- fillcolor="white"\r
- stroke="0"\r
- strokecolor="red"\r
- font="Dialog"\r
- textsize="10"\r
- >TestRun</text>\r
- <group name="Fig4.3"\r
- description="org.argouml.uml.diagram.ui.FigOperationsCompartment[881, 797, 89, 20]"\r
- fill="1"\r
- fillcolor="white"\r
- stroke="0"\r
- strokecolor="black"\r
- >\r
- <private>\r
- </private>\r
- \r
- <rectangle name="Fig4.3.0"\r
- x="881"\r
- y="797"\r
- width="89"\r
- height="20"\r
- fill="1"\r
- fillcolor="white"\r
- stroke="0"\r
- strokecolor="black"\r
- />\r
- <path name="Fig4.3.1"\r
- description="org.argouml.uml.diagram.ui.FigFeaturesCompartment$FigSeperator"\r
- fill="1"\r
- fillcolor="white"\r
- stroke="1"\r
- strokecolor="black"\r
- >\r
- <moveto x="881"\r
- y="797" />\r
- <lineto x="970"\r
- y="797" />\r
- </path>\r
- </group>\r
- <group name="Fig4.4"\r
- description="org.argouml.uml.diagram.ui.FigAttributesCompartment[881, 776, 89, 20]"\r
- fill="1"\r
- fillcolor="white"\r
- stroke="0"\r
- strokecolor="black"\r
- >\r
- <private>\r
- </private>\r
- \r
- <rectangle name="Fig4.4.0"\r
- x="881"\r
- y="776"\r
- width="89"\r
- height="20"\r
- fill="1"\r
- fillcolor="white"\r
- stroke="0"\r
- strokecolor="black"\r
- />\r
- <path name="Fig4.4.1"\r
- description="org.argouml.uml.diagram.ui.FigFeaturesCompartment$FigSeperator"\r
- fill="1"\r
- fillcolor="white"\r
- stroke="1"\r
- strokecolor="black"\r
- >\r
- <moveto x="881"\r
- y="776" />\r
- <lineto x="970"\r
- y="776" />\r
- </path>\r
- </group>\r
- <rectangle name="Fig4.5"\r
- x="880"\r
- y="752"\r
- width="90"\r
- height="65"\r
- fill="0"\r
- fillcolor="white"\r
- stroke="1"\r
- strokecolor="black"\r
- />\r
- </group>\r
- <group name="Fig5"\r
- description="org.argouml.uml.diagram.static_structure.ui.FigClass[688, 624, 90, 65]pathVisible=false;operationsVisible=true;attributesVisible=true"\r
- href="-64--88-1-101-3dc093e3:1157f1866b2:-8000:00000000000009F5"\r
- fill="1"\r
- fillcolor="white"\r
- stroke="1"\r
- strokecolor="black"\r
- >\r
- <private>\r
- </private>\r
- \r
- <rectangle name="Fig5.0"\r
- x="688"\r
- y="624"\r
- width="90"\r
- height="65"\r
- fill="1"\r
- fillcolor="white"\r
- stroke="0"\r
- strokecolor="black"\r
- />\r
- <group name="Fig5.1"\r
- description="org.argouml.uml.diagram.ui.FigStereotypesCompartment[688, 624, 90, 2]"\r
- href="-64--88-1-101-3dc093e3:1157f1866b2:-8000:00000000000009F5"\r
- fill="1"\r
- fillcolor="white"\r
- stroke="1"\r
- strokecolor="black"\r
- >\r
- <private>\r
- </private>\r
- \r
- <rectangle name="Fig5.1.0"\r
- x="688"\r
- y="624"\r
- width="90"\r
- height="2"\r
- fill="1"\r
- fillcolor="white"\r
- stroke="1"\r
- strokecolor="black"\r
- />\r
- </group>\r
- <text name="Fig5.2"\r
- x="688"\r
- y="626"\r
- fill="1"\r
- fillcolor="white"\r
- stroke="0"\r
- strokecolor="red"\r
- font="Dialog"\r
- textsize="10"\r
- >DeployedSystem</text>\r
- <group name="Fig5.3"\r
- description="org.argouml.uml.diagram.ui.FigOperationsCompartment[689, 669, 89, 20]"\r
- fill="1"\r
- fillcolor="white"\r
- stroke="0"\r
- strokecolor="black"\r
- >\r
- <private>\r
- </private>\r
- \r
- <rectangle name="Fig5.3.0"\r
- x="689"\r
- y="669"\r
- width="89"\r
- height="20"\r
- fill="1"\r
- fillcolor="white"\r
- stroke="0"\r
- strokecolor="black"\r
- />\r
- <path name="Fig5.3.1"\r
- description="org.argouml.uml.diagram.ui.FigFeaturesCompartment$FigSeperator"\r
- fill="1"\r
- fillcolor="white"\r
- stroke="1"\r
- strokecolor="black"\r
- >\r
- <moveto x="689"\r
- y="669" />\r
- <lineto x="778"\r
- y="669" />\r
- </path>\r
- </group>\r
- <group name="Fig5.4"\r
- description="org.argouml.uml.diagram.ui.FigAttributesCompartment[689, 648, 89, 20]"\r
- fill="1"\r
- fillcolor="white"\r
- stroke="0"\r
- strokecolor="black"\r
- >\r
- <private>\r
- </private>\r
- \r
- <rectangle name="Fig5.4.0"\r
- x="689"\r
- y="648"\r
- width="89"\r
- height="20"\r
- fill="1"\r
- fillcolor="white"\r
- stroke="0"\r
- strokecolor="black"\r
- />\r
- <path name="Fig5.4.1"\r
- description="org.argouml.uml.diagram.ui.FigFeaturesCompartment$FigSeperator"\r
- fill="1"\r
- fillcolor="white"\r
- stroke="1"\r
- strokecolor="black"\r
- >\r
- <moveto x="689"\r
- y="648" />\r
- <lineto x="778"\r
- y="648" />\r
- </path>\r
- </group>\r
- <rectangle name="Fig5.5"\r
- x="688"\r
- y="624"\r
- width="90"\r
- height="65"\r
- fill="0"\r
- fillcolor="white"\r
- stroke="1"\r
- strokecolor="black"\r
- />\r
- </group>\r
- <group name="Fig6"\r
- description="org.argouml.uml.diagram.static_structure.ui.FigClass[688, 216, 101, 109]pathVisible=false;operationsVisible=true;attributesVisible=true"\r
- href="-64--88-1-101-3dc093e3:1157f1866b2:-8000:00000000000009F7"\r
- fill="1"\r
- fillcolor="white"\r
- stroke="1"\r
- strokecolor="black"\r
- >\r
- <private>\r
- </private>\r
- \r
- <rectangle name="Fig6.0"\r
- x="688"\r
- y="216"\r
- width="101"\r
- height="109"\r
- fill="1"\r
- fillcolor="white"\r
- stroke="0"\r
- strokecolor="black"\r
- />\r
- <group name="Fig6.1"\r
- description="org.argouml.uml.diagram.ui.FigStereotypesCompartment[688, 216, 101, 2]"\r
- href="-64--88-1-101-3dc093e3:1157f1866b2:-8000:00000000000009F7"\r
- fill="1"\r
- fillcolor="white"\r
- stroke="1"\r
- strokecolor="black"\r
- >\r
- <private>\r
- </private>\r
- \r
- <rectangle name="Fig6.1.0"\r
- x="688"\r
- y="216"\r
- width="101"\r
- height="2"\r
- fill="1"\r
- fillcolor="white"\r
- stroke="1"\r
- strokecolor="black"\r
- />\r
- </group>\r
- <text name="Fig6.2"\r
- x="688"\r
- y="218"\r
- fill="1"\r
- fillcolor="white"\r
- stroke="0"\r
- strokecolor="red"\r
- font="Dialog"\r
- textsize="10"\r
- >MxDeployedSystem</text>\r
- <group name="Fig6.3"\r
- description="org.argouml.uml.diagram.ui.FigOperationsCompartment[689, 305, 100, 20]"\r
- fill="1"\r
- fillcolor="white"\r
- stroke="0"\r
- strokecolor="black"\r
- >\r
- <private>\r
- </private>\r
- \r
- <rectangle name="Fig6.3.0"\r
- x="689"\r
- y="305"\r
- width="100"\r
- height="20"\r
- fill="1"\r
- fillcolor="white"\r
- stroke="0"\r
- strokecolor="black"\r
- />\r
- <path name="Fig6.3.1"\r
- description="org.argouml.uml.diagram.ui.FigFeaturesCompartment$FigSeperator"\r
- fill="1"\r
- fillcolor="white"\r
- stroke="1"\r
- strokecolor="black"\r
- >\r
- <moveto x="689"\r
- y="305" />\r
- <lineto x="789"\r
- y="305" />\r
- </path>\r
- </group>\r
- <group name="Fig6.4"\r
- description="org.argouml.uml.diagram.ui.FigAttributesCompartment[689, 240, 100, 64]"\r
- fill="1"\r
- fillcolor="white"\r
- stroke="0"\r
- strokecolor="black"\r
- >\r
- <private>\r
- </private>\r
- \r
- <rectangle name="Fig6.4.0"\r
- x="689"\r
- y="240"\r
- width="100"\r
- height="64"\r
- fill="1"\r
- fillcolor="white"\r
- stroke="0"\r
- strokecolor="black"\r
- />\r
- <path name="Fig6.4.1"\r
- description="org.argouml.uml.diagram.ui.FigFeaturesCompartment$FigSeperator"\r
- fill="1"\r
- fillcolor="white"\r
- stroke="1"\r
- strokecolor="black"\r
- >\r
- <moveto x="689"\r
- y="240" />\r
- <lineto x="789"\r
- y="240" />\r
- </path>\r
- <text name="Fig6.4.2"\r
- x="689"\r
- y="241"\r
- fill="0"\r
- fillcolor="white"\r
- stroke="0"\r
- strokecolor="black"\r
- font="Dialog"\r
- textsize="10"\r
- >fsPort : int</text>\r
- <text name="Fig6.4.3"\r
- x="689"\r
- y="255"\r
- fill="0"\r
- fillcolor="white"\r
- stroke="0"\r
- strokecolor="black"\r
- font="Dialog"\r
- textsize="10"\r
- >xmlsPort : int</text>\r
- <text name="Fig6.4.4"\r
- x="689"\r
- y="269"\r
- fill="0"\r
- fillcolor="white"\r
- stroke="0"\r
- strokecolor="black"\r
- font="Dialog"\r
- textsize="10"\r
- >murexnetPort : int</text>\r
- <text name="Fig6.4.5"\r
- x="689"\r
- y="283"\r
- fill="0"\r
- fillcolor="white"\r
- stroke="0"\r
- strokecolor="black"\r
- font="Dialog"\r
- textsize="10"\r
- >installDir : File</text>\r
- </group>\r
- <rectangle name="Fig6.5"\r
- x="688"\r
- y="216"\r
- width="101"\r
- height="109"\r
- fill="0"\r
- fillcolor="white"\r
- stroke="1"\r
- strokecolor="black"\r
- />\r
- </group>\r
- <group name="Fig7"\r
- description="org.argouml.uml.diagram.static_structure.ui.FigClass[48, 640, 90, 65]pathVisible=false;operationsVisible=true;attributesVisible=true"\r
- href="-64--88-1-101-3dc093e3:1157f1866b2:-8000:0000000000000A15"\r
- fill="1"\r
- fillcolor="white"\r
- stroke="1"\r
- strokecolor="black"\r
- >\r
- <private>\r
- </private>\r
- \r
- <rectangle name="Fig7.0"\r
- x="48"\r
- y="640"\r
- width="90"\r
- height="65"\r
- fill="1"\r
- fillcolor="white"\r
- stroke="0"\r
- strokecolor="black"\r
- />\r
- <group name="Fig7.1"\r
- description="org.argouml.uml.diagram.ui.FigStereotypesCompartment[48, 640, 90, 2]"\r
- href="-64--88-1-101-3dc093e3:1157f1866b2:-8000:0000000000000A15"\r
- fill="1"\r
- fillcolor="white"\r
- stroke="1"\r
- strokecolor="black"\r
- >\r
- <private>\r
- </private>\r
- \r
- <rectangle name="Fig7.1.0"\r
- x="48"\r
- y="640"\r
- width="90"\r
- height="2"\r
- fill="1"\r
- fillcolor="white"\r
- stroke="1"\r
- strokecolor="black"\r
- />\r
- </group>\r
- <text name="Fig7.2"\r
- x="48"\r
- y="642"\r
- fill="1"\r
- fillcolor="white"\r
- stroke="0"\r
- strokecolor="red"\r
- font="Dialog"\r
- textsize="10"\r
- >DistributionId</text>\r
- <group name="Fig7.3"\r
- description="org.argouml.uml.diagram.ui.FigOperationsCompartment[49, 685, 89, 20]"\r
- fill="1"\r
- fillcolor="white"\r
- stroke="0"\r
- strokecolor="black"\r
- >\r
- <private>\r
- </private>\r
- \r
- <rectangle name="Fig7.3.0"\r
- x="49"\r
- y="685"\r
- width="89"\r
- height="20"\r
- fill="1"\r
- fillcolor="white"\r
- stroke="0"\r
- strokecolor="black"\r
- />\r
- <path name="Fig7.3.1"\r
- description="org.argouml.uml.diagram.ui.FigFeaturesCompartment$FigSeperator"\r
- fill="1"\r
- fillcolor="white"\r
- stroke="1"\r
- strokecolor="black"\r
- >\r
- <moveto x="49"\r
- y="685" />\r
- <lineto x="138"\r
- y="685" />\r
- </path>\r
- </group>\r
- <group name="Fig7.4"\r
- description="org.argouml.uml.diagram.ui.FigAttributesCompartment[49, 664, 89, 20]"\r
- fill="1"\r
- fillcolor="white"\r
- stroke="0"\r
- strokecolor="black"\r
- >\r
- <private>\r
- </private>\r
- \r
- <rectangle name="Fig7.4.0"\r
- x="49"\r
- y="664"\r
- width="89"\r
- height="20"\r
- fill="1"\r
- fillcolor="white"\r
- stroke="0"\r
- strokecolor="black"\r
- />\r
- <path name="Fig7.4.1"\r
- description="org.argouml.uml.diagram.ui.FigFeaturesCompartment$FigSeperator"\r
- fill="1"\r
- fillcolor="white"\r
- stroke="1"\r
- strokecolor="black"\r
- >\r
- <moveto x="49"\r
- y="664" />\r
- <lineto x="138"\r
- y="664" />\r
- </path>\r
- </group>\r
- <rectangle name="Fig7.5"\r
- x="48"\r
- y="640"\r
- width="90"\r
- height="65"\r
- fill="0"\r
- fillcolor="white"\r
- stroke="1"\r
- strokecolor="black"\r
- />\r
- </group>\r
- <group name="Fig8"\r
- description="org.argouml.uml.diagram.static_structure.ui.FigClass[232, 640, 90, 65]pathVisible=false;operationsVisible=true;attributesVisible=true"\r
- href="-64--88-1-101-3dc093e3:1157f1866b2:-8000:0000000000000A17"\r
- fill="1"\r
- fillcolor="white"\r
- stroke="1"\r
- strokecolor="black"\r
- >\r
- <private>\r
- </private>\r
- \r
- <rectangle name="Fig8.0"\r
- x="232"\r
- y="640"\r
- width="90"\r
- height="65"\r
- fill="1"\r
- fillcolor="white"\r
- stroke="0"\r
- strokecolor="black"\r
- />\r
- <group name="Fig8.1"\r
- description="org.argouml.uml.diagram.ui.FigStereotypesCompartment[232, 640, 90, 2]"\r
- href="-64--88-1-101-3dc093e3:1157f1866b2:-8000:0000000000000A17"\r
- fill="1"\r
- fillcolor="white"\r
- stroke="1"\r
- strokecolor="black"\r
- >\r
- <private>\r
- </private>\r
- \r
- <rectangle name="Fig8.1.0"\r
- x="232"\r
- y="640"\r
- width="90"\r
- height="2"\r
- fill="1"\r
- fillcolor="white"\r
- stroke="1"\r
- strokecolor="black"\r
- />\r
- </group>\r
- <text name="Fig8.2"\r
- x="232"\r
- y="642"\r
- fill="1"\r
- fillcolor="white"\r
- stroke="0"\r
- strokecolor="red"\r
- font="Dialog"\r
- textsize="10"\r
- >Distribution</text>\r
- <group name="Fig8.3"\r
- description="org.argouml.uml.diagram.ui.FigOperationsCompartment[233, 685, 89, 20]"\r
- fill="1"\r
- fillcolor="white"\r
- stroke="0"\r
- strokecolor="black"\r
- >\r
- <private>\r
- </private>\r
- \r
- <rectangle name="Fig8.3.0"\r
- x="233"\r
- y="685"\r
- width="89"\r
- height="20"\r
- fill="1"\r
- fillcolor="white"\r
- stroke="0"\r
- strokecolor="black"\r
- />\r
- <path name="Fig8.3.1"\r
- description="org.argouml.uml.diagram.ui.FigFeaturesCompartment$FigSeperator"\r
- fill="1"\r
- fillcolor="white"\r
- stroke="1"\r
- strokecolor="black"\r
- >\r
- <moveto x="233"\r
- y="685" />\r
- <lineto x="322"\r
- y="685" />\r
- </path>\r
- </group>\r
- <group name="Fig8.4"\r
- description="org.argouml.uml.diagram.ui.FigAttributesCompartment[233, 664, 89, 20]"\r
- fill="1"\r
- fillcolor="white"\r
- stroke="0"\r
- strokecolor="black"\r
- >\r
- <private>\r
- </private>\r
- \r
- <rectangle name="Fig8.4.0"\r
- x="233"\r
- y="664"\r
- width="89"\r
- height="20"\r
- fill="1"\r
- fillcolor="white"\r
- stroke="0"\r
- strokecolor="black"\r
- />\r
- <path name="Fig8.4.1"\r
- description="org.argouml.uml.diagram.ui.FigFeaturesCompartment$FigSeperator"\r
- fill="1"\r
- fillcolor="white"\r
- stroke="1"\r
- strokecolor="black"\r
- >\r
- <moveto x="233"\r
- y="664" />\r
- <lineto x="322"\r
- y="664" />\r
- </path>\r
- </group>\r
- <rectangle name="Fig8.5"\r
- x="232"\r
- y="640"\r
- width="90"\r
- height="65"\r
- fill="0"\r
- fillcolor="white"\r
- stroke="1"\r
- strokecolor="black"\r
- />\r
- </group>\r
- <group name="Fig9"\r
- description="org.argouml.uml.diagram.static_structure.ui.FigClass[184, 216, 128, 95]pathVisible=false;operationsVisible=true;attributesVisible=true"\r
- href="-64--88-1-101-3dc093e3:1157f1866b2:-8000:0000000000000A1B"\r
- fill="1"\r
- fillcolor="white"\r
- stroke="1"\r
- strokecolor="black"\r
- >\r
- <private>\r
- </private>\r
- \r
- <rectangle name="Fig9.0"\r
- x="184"\r
- y="216"\r
- width="128"\r
- height="95"\r
- fill="1"\r
- fillcolor="white"\r
- stroke="0"\r
- strokecolor="black"\r
- />\r
- <group name="Fig9.1"\r
- description="org.argouml.uml.diagram.ui.FigStereotypesCompartment[184, 216, 128, 2]"\r
- href="-64--88-1-101-3dc093e3:1157f1866b2:-8000:0000000000000A1B"\r
- fill="1"\r
- fillcolor="white"\r
- stroke="1"\r
- strokecolor="black"\r
- >\r
- <private>\r
- </private>\r
- \r
- <rectangle name="Fig9.1.0"\r
- x="184"\r
- y="216"\r
- width="128"\r
- height="2"\r
- fill="1"\r
- fillcolor="white"\r
- stroke="1"\r
- strokecolor="black"\r
- />\r
- </group>\r
- <text name="Fig9.2"\r
- x="184"\r
- y="218"\r
- fill="1"\r
- fillcolor="white"\r
- stroke="0"\r
- strokecolor="red"\r
- font="Dialog"\r
- textsize="10"\r
- >MxSetups</text>\r
- <group name="Fig9.3"\r
- description="org.argouml.uml.diagram.ui.FigOperationsCompartment[185, 291, 127, 20]"\r
- fill="1"\r
- fillcolor="white"\r
- stroke="0"\r
- strokecolor="black"\r
- >\r
- <private>\r
- </private>\r
- \r
- <rectangle name="Fig9.3.0"\r
- x="185"\r
- y="291"\r
- width="127"\r
- height="20"\r
- fill="1"\r
- fillcolor="white"\r
- stroke="0"\r
- strokecolor="black"\r
- />\r
- <path name="Fig9.3.1"\r
- description="org.argouml.uml.diagram.ui.FigFeaturesCompartment$FigSeperator"\r
- fill="1"\r
- fillcolor="white"\r
- stroke="1"\r
- strokecolor="black"\r
- >\r
- <moveto x="185"\r
- y="291" />\r
- <lineto x="312"\r
- y="291" />\r
- </path>\r
- </group>\r
- <group name="Fig9.4"\r
- description="org.argouml.uml.diagram.ui.FigAttributesCompartment[185, 240, 127, 50]"\r
- fill="1"\r
- fillcolor="white"\r
- stroke="0"\r
- strokecolor="black"\r
- >\r
- <private>\r
- </private>\r
- \r
- <rectangle name="Fig9.4.0"\r
- x="185"\r
- y="240"\r
- width="127"\r
- height="50"\r
- fill="1"\r
- fillcolor="white"\r
- stroke="0"\r
- strokecolor="black"\r
- />\r
- <path name="Fig9.4.1"\r
- description="org.argouml.uml.diagram.ui.FigFeaturesCompartment$FigSeperator"\r
- fill="1"\r
- fillcolor="white"\r
- stroke="1"\r
- strokecolor="black"\r
- >\r
- <moveto x="185"\r
- y="240" />\r
- <lineto x="312"\r
- y="240" />\r
- </path>\r
- <text name="Fig9.4.2"\r
- x="185"\r
- y="241"\r
- fill="0"\r
- fillcolor="white"\r
- stroke="0"\r
- strokecolor="black"\r
- font="Dialog"\r
- textsize="10"\r
- >primarySetupFile : File</text>\r
- <text name="Fig9.4.3"\r
- x="185"\r
- y="255"\r
- fill="0"\r
- fillcolor="white"\r
- stroke="0"\r
- strokecolor="black"\r
- font="Dialog"\r
- textsize="10"\r
- >secondarySetupFile : File</text>\r
- <text name="Fig9.4.4"\r
- x="185"\r
- y="269"\r
- fill="0"\r
- fillcolor="white"\r
- stroke="0"\r
- strokecolor="black"\r
- font="Dialog"\r
- textsize="10"\r
- >clientSetupFile : File</text>\r
- </group>\r
- <rectangle name="Fig9.5"\r
- x="184"\r
- y="216"\r
- width="128"\r
- height="95"\r
- fill="0"\r
- fillcolor="white"\r
- stroke="1"\r
- strokecolor="black"\r
- />\r
- </group>\r
- <group name="Fig10"\r
- description="org.argouml.uml.diagram.static_structure.ui.FigClass[40, 216, 108, 111]pathVisible=false;operationsVisible=true;attributesVisible=true"\r
- href="-64--88-1-101-3dc093e3:1157f1866b2:-8000:0000000000000A40"\r
- fill="1"\r
- fillcolor="white"\r
- stroke="1"\r
- strokecolor="black"\r
- >\r
- <private>\r
- </private>\r
- \r
- <rectangle name="Fig10.0"\r
- x="40"\r
- y="216"\r
- width="108"\r
- height="111"\r
- fill="1"\r
- fillcolor="white"\r
- stroke="0"\r
- strokecolor="black"\r
- />\r
- <group name="Fig10.1"\r
- description="org.argouml.uml.diagram.ui.FigStereotypesCompartment[40, 216, 108, 2]"\r
- href="-64--88-1-101-3dc093e3:1157f1866b2:-8000:0000000000000A40"\r
- fill="1"\r
- fillcolor="white"\r
- stroke="1"\r
- strokecolor="black"\r
- >\r
- <private>\r
- </private>\r
- \r
- <rectangle name="Fig10.1.0"\r
- x="40"\r
- y="216"\r
- width="108"\r
- height="2"\r
- fill="1"\r
- fillcolor="white"\r
- stroke="1"\r
- strokecolor="black"\r
- />\r
- </group>\r
- <text name="Fig10.2"\r
- x="40"\r
- y="218"\r
- fill="1"\r
- fillcolor="white"\r
- stroke="0"\r
- strokecolor="red"\r
- font="Dialog"\r
- textsize="10"\r
- >MxBuildId</text>\r
- <group name="Fig10.3"\r
- description="org.argouml.uml.diagram.ui.FigOperationsCompartment[41, 291, 107, 36]"\r
- fill="1"\r
- fillcolor="white"\r
- stroke="0"\r
- strokecolor="black"\r
- >\r
- <private>\r
- </private>\r
- \r
- <rectangle name="Fig10.3.0"\r
- x="41"\r
- y="291"\r
- width="107"\r
- height="36"\r
- fill="1"\r
- fillcolor="white"\r
- stroke="0"\r
- strokecolor="black"\r
- />\r
- <path name="Fig10.3.1"\r
- description="org.argouml.uml.diagram.ui.FigFeaturesCompartment$FigSeperator"\r
- fill="1"\r
- fillcolor="white"\r
- stroke="1"\r
- strokecolor="black"\r
- >\r
- <moveto x="41"\r
- y="291" />\r
- <lineto x="148"\r
- y="291" />\r
- </path>\r
- <text name="Fig10.3.2"\r
- x="41"\r
- y="292"\r
- fill="0"\r
- fillcolor="white"\r
- stroke="0"\r
- strokecolor="black"\r
- font="Dialog"\r
- textsize="10"\r
- >serialize() : String</text>\r
- <text name="Fig10.3.3"\r
- x="41"\r
- y="306"\r
- fill="0"\r
- fillcolor="white"\r
- stroke="0"\r
- strokecolor="black"\r
- font="Dialog"\r
- textsize="10"\r
- >newOperation() : void</text>\r
- </group>\r
- <group name="Fig10.4"\r
- description="org.argouml.uml.diagram.ui.FigAttributesCompartment[41, 240, 107, 50]"\r
- fill="1"\r
- fillcolor="white"\r
- stroke="0"\r
- strokecolor="black"\r
- >\r
- <private>\r
- </private>\r
- \r
- <rectangle name="Fig10.4.0"\r
- x="41"\r
- y="240"\r
- width="107"\r
- height="50"\r
- fill="1"\r
- fillcolor="white"\r
- stroke="0"\r
- strokecolor="black"\r
- />\r
- <path name="Fig10.4.1"\r
- description="org.argouml.uml.diagram.ui.FigFeaturesCompartment$FigSeperator"\r
- fill="1"\r
- fillcolor="white"\r
- stroke="1"\r
- strokecolor="black"\r
- >\r
- <moveto x="41"\r
- y="240" />\r
- <lineto x="148"\r
- y="240" />\r
- </path>\r
- <text name="Fig10.4.2"\r
- x="41"\r
- y="241"\r
- fill="0"\r
- fillcolor="white"\r
- stroke="0"\r
- strokecolor="black"\r
- font="Dialog"\r
- textsize="10"\r
- >changeList : long</text>\r
- <text name="Fig10.4.3"\r
- x="41"\r
- y="255"\r
- fill="0"\r
- fillcolor="white"\r
- stroke="0"\r
- strokecolor="black"\r
- font="Dialog"\r
- textsize="10"\r
- >buildDate : Date</text>\r
- <text name="Fig10.4.4"\r
- x="41"\r
- y="269"\r
- fill="0"\r
- fillcolor="white"\r
- stroke="0"\r
- strokecolor="black"\r
- font="Dialog"\r
- textsize="10"\r
- >UID : long</text>\r
- </group>\r
- <rectangle name="Fig10.5"\r
- x="40"\r
- y="216"\r
- width="108"\r
- height="111"\r
- fill="0"\r
- fillcolor="white"\r
- stroke="1"\r
- strokecolor="black"\r
- />\r
- </group>\r
- <group name="Fig11"\r
- description="org.argouml.uml.diagram.static_structure.ui.FigClass[584, 216, 90, 65]pathVisible=false;operationsVisible=true;attributesVisible=true"\r
- href="-64--88-1-101-3dc093e3:1157f1866b2:-8000:0000000000000A42"\r
- fill="1"\r
- fillcolor="white"\r
- stroke="1"\r
- strokecolor="black"\r
- >\r
- <private>\r
- </private>\r
- \r
- <rectangle name="Fig11.0"\r
- x="584"\r
- y="216"\r
- width="90"\r
- height="65"\r
- fill="1"\r
- fillcolor="white"\r
- stroke="0"\r
- strokecolor="black"\r
- />\r
- <group name="Fig11.1"\r
- description="org.argouml.uml.diagram.ui.FigStereotypesCompartment[584, 216, 90, 2]"\r
- href="-64--88-1-101-3dc093e3:1157f1866b2:-8000:0000000000000A42"\r
- fill="1"\r
- fillcolor="white"\r
- stroke="1"\r
- strokecolor="black"\r
- >\r
- <private>\r
- </private>\r
- \r
- <rectangle name="Fig11.1.0"\r
- x="584"\r
- y="216"\r
- width="90"\r
- height="2"\r
- fill="1"\r
- fillcolor="white"\r
- stroke="1"\r
- strokecolor="black"\r
- />\r
- </group>\r
- <text name="Fig11.2"\r
- x="584"\r
- y="218"\r
- fill="1"\r
- fillcolor="white"\r
- stroke="0"\r
- strokecolor="red"\r
- font="Dialog"\r
- textsize="10"\r
- >MxDeployment</text>\r
- <group name="Fig11.3"\r
- description="org.argouml.uml.diagram.ui.FigOperationsCompartment[585, 261, 89, 20]"\r
- fill="1"\r
- fillcolor="white"\r
- stroke="0"\r
- strokecolor="black"\r
- >\r
- <private>\r
- </private>\r
- \r
- <rectangle name="Fig11.3.0"\r
- x="585"\r
- y="261"\r
- width="89"\r
- height="20"\r
- fill="1"\r
- fillcolor="white"\r
- stroke="0"\r
- strokecolor="black"\r
- />\r
- <path name="Fig11.3.1"\r
- description="org.argouml.uml.diagram.ui.FigFeaturesCompartment$FigSeperator"\r
- fill="1"\r
- fillcolor="white"\r
- stroke="1"\r
- strokecolor="black"\r
- >\r
- <moveto x="585"\r
- y="261" />\r
- <lineto x="674"\r
- y="261" />\r
- </path>\r
- </group>\r
- <group name="Fig11.4"\r
- description="org.argouml.uml.diagram.ui.FigAttributesCompartment[585, 240, 89, 20]"\r
- fill="1"\r
- fillcolor="white"\r
- stroke="0"\r
- strokecolor="black"\r
- >\r
- <private>\r
- </private>\r
- \r
- <rectangle name="Fig11.4.0"\r
- x="585"\r
- y="240"\r
- width="89"\r
- height="20"\r
- fill="1"\r
- fillcolor="white"\r
- stroke="0"\r
- strokecolor="black"\r
- />\r
- <path name="Fig11.4.1"\r
- description="org.argouml.uml.diagram.ui.FigFeaturesCompartment$FigSeperator"\r
- fill="1"\r
- fillcolor="white"\r
- stroke="1"\r
- strokecolor="black"\r
- >\r
- <moveto x="585"\r
- y="240" />\r
- <lineto x="674"\r
- y="240" />\r
- </path>\r
- </group>\r
- <rectangle name="Fig11.5"\r
- x="584"\r
- y="216"\r
- width="90"\r
- height="65"\r
- fill="0"\r
- fillcolor="white"\r
- stroke="1"\r
- strokecolor="black"\r
- />\r
- </group>\r
- <group name="Fig12"\r
- description="org.argouml.uml.diagram.static_structure.ui.FigClass[888, 312, 90, 65]pathVisible=false;operationsVisible=true;attributesVisible=true"\r
- href="-64--88-1-101-3dc093e3:1157f1866b2:-8000:0000000000000A44"\r
- fill="1"\r
- fillcolor="white"\r
- stroke="1"\r
- strokecolor="black"\r
- >\r
- <private>\r
- </private>\r
- \r
- <rectangle name="Fig12.0"\r
- x="888"\r
- y="312"\r
- width="90"\r
- height="65"\r
- fill="1"\r
- fillcolor="white"\r
- stroke="0"\r
- strokecolor="black"\r
- />\r
- <group name="Fig12.1"\r
- description="org.argouml.uml.diagram.ui.FigStereotypesCompartment[888, 312, 90, 2]"\r
- href="-64--88-1-101-3dc093e3:1157f1866b2:-8000:0000000000000A44"\r
- fill="1"\r
- fillcolor="white"\r
- stroke="1"\r
- strokecolor="black"\r
- >\r
- <private>\r
- </private>\r
- \r
- <rectangle name="Fig12.1.0"\r
- x="888"\r
- y="312"\r
- width="90"\r
- height="2"\r
- fill="1"\r
- fillcolor="white"\r
- stroke="1"\r
- strokecolor="black"\r
- />\r
- </group>\r
- <text name="Fig12.2"\r
- x="888"\r
- y="314"\r
- fill="1"\r
- fillcolor="white"\r
- stroke="0"\r
- strokecolor="red"\r
- font="Dialog"\r
- textsize="10"\r
- >CapCoTestRun</text>\r
- <group name="Fig12.3"\r
- description="org.argouml.uml.diagram.ui.FigOperationsCompartment[889, 357, 89, 20]"\r
- fill="1"\r
- fillcolor="white"\r
- stroke="0"\r
- strokecolor="black"\r
- >\r
- <private>\r
- </private>\r
- \r
- <rectangle name="Fig12.3.0"\r
- x="889"\r
- y="357"\r
- width="89"\r
- height="20"\r
- fill="1"\r
- fillcolor="white"\r
- stroke="0"\r
- strokecolor="black"\r
- />\r
- <path name="Fig12.3.1"\r
- description="org.argouml.uml.diagram.ui.FigFeaturesCompartment$FigSeperator"\r
- fill="1"\r
- fillcolor="white"\r
- stroke="1"\r
- strokecolor="black"\r
- >\r
- <moveto x="889"\r
- y="357" />\r
- <lineto x="978"\r
- y="357" />\r
- </path>\r
- </group>\r
- <group name="Fig12.4"\r
- description="org.argouml.uml.diagram.ui.FigAttributesCompartment[889, 336, 89, 20]"\r
- fill="1"\r
- fillcolor="white"\r
- stroke="0"\r
- strokecolor="black"\r
- >\r
- <private>\r
- </private>\r
- \r
- <rectangle name="Fig12.4.0"\r
- x="889"\r
- y="336"\r
- width="89"\r
- height="20"\r
- fill="1"\r
- fillcolor="white"\r
- stroke="0"\r
- strokecolor="black"\r
- />\r
- <path name="Fig12.4.1"\r
- description="org.argouml.uml.diagram.ui.FigFeaturesCompartment$FigSeperator"\r
- fill="1"\r
- fillcolor="white"\r
- stroke="1"\r
- strokecolor="black"\r
- >\r
- <moveto x="889"\r
- y="336" />\r
- <lineto x="978"\r
- y="336" />\r
- </path>\r
- </group>\r
- <rectangle name="Fig12.5"\r
- x="888"\r
- y="312"\r
- width="90"\r
- height="65"\r
- fill="0"\r
- fillcolor="white"\r
- stroke="1"\r
- strokecolor="black"\r
- />\r
- </group>\r
- <group name="Fig13"\r
- description="org.argouml.uml.diagram.static_structure.ui.FigClass[888, 216, 90, 65]pathVisible=false;operationsVisible=true;attributesVisible=true"\r
- href="-64--88-1-101-3dc093e3:1157f1866b2:-8000:0000000000000A46"\r
- fill="1"\r
- fillcolor="white"\r
- stroke="1"\r
- strokecolor="black"\r
- >\r
- <private>\r
- </private>\r
- \r
- <rectangle name="Fig13.0"\r
- x="888"\r
- y="216"\r
- width="90"\r
- height="65"\r
- fill="1"\r
- fillcolor="white"\r
- stroke="0"\r
- strokecolor="black"\r
- />\r
- <group name="Fig13.1"\r
- description="org.argouml.uml.diagram.ui.FigStereotypesCompartment[888, 216, 90, 2]"\r
- href="-64--88-1-101-3dc093e3:1157f1866b2:-8000:0000000000000A46"\r
- fill="1"\r
- fillcolor="white"\r
- stroke="1"\r
- strokecolor="black"\r
- >\r
- <private>\r
- </private>\r
- \r
- <rectangle name="Fig13.1.0"\r
- x="888"\r
- y="216"\r
- width="90"\r
- height="2"\r
- fill="1"\r
- fillcolor="white"\r
- stroke="1"\r
- strokecolor="black"\r
- />\r
- </group>\r
- <text name="Fig13.2"\r
- x="888"\r
- y="218"\r
- fill="1"\r
- fillcolor="white"\r
- stroke="0"\r
- strokecolor="red"\r
- font="Dialog"\r
- textsize="10"\r
- >MxXmlTestRun</text>\r
- <group name="Fig13.3"\r
- description="org.argouml.uml.diagram.ui.FigOperationsCompartment[889, 261, 89, 20]"\r
- fill="1"\r
- fillcolor="white"\r
- stroke="0"\r
- strokecolor="black"\r
- >\r
- <private>\r
- </private>\r
- \r
- <rectangle name="Fig13.3.0"\r
- x="889"\r
- y="261"\r
- width="89"\r
- height="20"\r
- fill="1"\r
- fillcolor="white"\r
- stroke="0"\r
- strokecolor="black"\r
- />\r
- <path name="Fig13.3.1"\r
- description="org.argouml.uml.diagram.ui.FigFeaturesCompartment$FigSeperator"\r
- fill="1"\r
- fillcolor="white"\r
- stroke="1"\r
- strokecolor="black"\r
- >\r
- <moveto x="889"\r
- y="261" />\r
- <lineto x="978"\r
- y="261" />\r
- </path>\r
- </group>\r
- <group name="Fig13.4"\r
- description="org.argouml.uml.diagram.ui.FigAttributesCompartment[889, 240, 89, 20]"\r
- fill="1"\r
- fillcolor="white"\r
- stroke="0"\r
- strokecolor="black"\r
- >\r
- <private>\r
- </private>\r
- \r
- <rectangle name="Fig13.4.0"\r
- x="889"\r
- y="240"\r
- width="89"\r
- height="20"\r
- fill="1"\r
- fillcolor="white"\r
- stroke="0"\r
- strokecolor="black"\r
- />\r
- <path name="Fig13.4.1"\r
- description="org.argouml.uml.diagram.ui.FigFeaturesCompartment$FigSeperator"\r
- fill="1"\r
- fillcolor="white"\r
- stroke="1"\r
- strokecolor="black"\r
- >\r
- <moveto x="889"\r
- y="240" />\r
- <lineto x="978"\r
- y="240" />\r
- </path>\r
- </group>\r
- <rectangle name="Fig13.5"\r
- x="888"\r
- y="216"\r
- width="90"\r
- height="65"\r
- fill="0"\r
- fillcolor="white"\r
- stroke="1"\r
- strokecolor="black"\r
- />\r
- </group>\r
- <group name="Fig14"\r
- description="org.argouml.uml.diagram.ui.FigAssociation"\r
- href="-64--88-1-101-3dc093e3:1157f1866b2:-8000:0000000000000A50"\r
- stroke="1"\r
- strokecolor="black"\r
- >\r
- <private>\r
- sourcePortFig="Fig8.0"\r
- destPortFig="Fig7.0"\r
- sourceFigNode="Fig8"\r
- destFigNode="Fig7"\r
- </private>\r
- <path name="Fig14.0"\r
- description="org.tigris.gef.presentation.FigPoly"\r
- fill="0"\r
- fillcolor="white"\r
- stroke="1"\r
- strokecolor="black"\r
- >\r
- <moveto x="232"\r
- y="672" />\r
- <lineto x="138"\r
- y="672" />\r
- </path>\r
- </group>\r
- <group name="Fig15"\r
- description="org.argouml.uml.diagram.ui.FigAssociation"\r
- href="-64--88-1-101--7f8968dd:1157f72a2bb:-8000:0000000000000A13"\r
- stroke="1"\r
- strokecolor="black"\r
- >\r
- <private>\r
- sourcePortFig="Fig2.0"\r
- destPortFig="Fig8.0"\r
- sourceFigNode="Fig2"\r
- destFigNode="Fig8"\r
- </private>\r
- <path name="Fig15.0"\r
- description="org.tigris.gef.presentation.FigPoly"\r
- fill="0"\r
- fillcolor="white"\r
- stroke="1"\r
- strokecolor="black"\r
- >\r
- <moveto x="536"\r
- y="792" />\r
- <lineto x="280"\r
- y="792" />\r
- <lineto x="280"\r
- y="705" />\r
- </path>\r
- </group>\r
- <group name="Fig16"\r
- description="org.argouml.uml.diagram.ui.FigAssociation"\r
- href="-64--88-1-101--7f8968dd:1157f72a2bb:-8000:0000000000000A1A"\r
- stroke="1"\r
- strokecolor="black"\r
- >\r
- <private>\r
- sourcePortFig="Fig2.0"\r
- destPortFig="Fig5.0"\r
- sourceFigNode="Fig2"\r
- destFigNode="Fig5"\r
- </private>\r
- <path name="Fig16.0"\r
- description="org.tigris.gef.presentation.FigPoly"\r
- fill="0"\r
- fillcolor="white"\r
- stroke="1"\r
- strokecolor="black"\r
- >\r
- <moveto x="626"\r
- y="792" />\r
- <lineto x="744"\r
- y="792" />\r
- <lineto x="744"\r
- y="689" />\r
- </path>\r
- </group>\r
- <group name="Fig17"\r
- description="org.argouml.uml.diagram.ui.FigAssociation"\r
- href="-64--88-1-101--7f8968dd:1157f72a2bb:-8000:0000000000000A21"\r
- stroke="1"\r
- strokecolor="black"\r
- >\r
- <private>\r
- sourcePortFig="Fig4.0"\r
- destPortFig="Fig5.0"\r
- sourceFigNode="Fig4"\r
- destFigNode="Fig5"\r
- </private>\r
- <path name="Fig17.0"\r
- description="org.tigris.gef.presentation.FigPoly"\r
- fill="0"\r
- fillcolor="white"\r
- stroke="1"\r
- strokecolor="black"\r
- >\r
- <moveto x="896"\r
- y="752" />\r
- <lineto x="896"\r
- y="664" />\r
- <lineto x="778"\r
- y="664" />\r
- </path>\r
- </group>\r
- <group name="Fig18"\r
- description="org.argouml.uml.diagram.static_structure.ui.FigClass[376, 472, 94, 65]pathVisible=false;operationsVisible=true;attributesVisible=true"\r
- href="-64--88-1-101--7f8968dd:1157f72a2bb:-8000:0000000000000A28"\r
- fill="1"\r
- fillcolor="white"\r
- stroke="1"\r
- strokecolor="black"\r
- >\r
- <private>\r
- </private>\r
- \r
- <rectangle name="Fig18.0"\r
- x="376"\r
- y="472"\r
- width="94"\r
- height="65"\r
- fill="1"\r
- fillcolor="white"\r
- stroke="0"\r
- strokecolor="black"\r
- />\r
- <group name="Fig18.1"\r
- description="org.argouml.uml.diagram.ui.FigStereotypesCompartment[376, 472, 94, 2]"\r
- href="-64--88-1-101--7f8968dd:1157f72a2bb:-8000:0000000000000A28"\r
- fill="1"\r
- fillcolor="white"\r
- stroke="1"\r
- strokecolor="black"\r
- >\r
- <private>\r
- </private>\r
- \r
- <rectangle name="Fig18.1.0"\r
- x="376"\r
- y="472"\r
- width="94"\r
- height="2"\r
- fill="1"\r
- fillcolor="white"\r
- stroke="1"\r
- strokecolor="black"\r
- />\r
- </group>\r
- <text name="Fig18.2"\r
- x="376"\r
- y="474"\r
- fill="1"\r
- fillcolor="white"\r
- stroke="0"\r
- strokecolor="red"\r
- font="Dialog"\r
- textsize="10"\r
- >DatabaseDeployer</text>\r
- <group name="Fig18.3"\r
- description="org.argouml.uml.diagram.ui.FigOperationsCompartment[377, 517, 93, 20]"\r
- fill="1"\r
- fillcolor="white"\r
- stroke="0"\r
- strokecolor="black"\r
- >\r
- <private>\r
- </private>\r
- \r
- <rectangle name="Fig18.3.0"\r
- x="377"\r
- y="517"\r
- width="93"\r
- height="20"\r
- fill="1"\r
- fillcolor="white"\r
- stroke="0"\r
- strokecolor="black"\r
- />\r
- <path name="Fig18.3.1"\r
- description="org.argouml.uml.diagram.ui.FigFeaturesCompartment$FigSeperator"\r
- fill="1"\r
- fillcolor="white"\r
- stroke="1"\r
- strokecolor="black"\r
- >\r
- <moveto x="377"\r
- y="517" />\r
- <lineto x="470"\r
- y="517" />\r
- </path>\r
- </group>\r
- <group name="Fig18.4"\r
- description="org.argouml.uml.diagram.ui.FigAttributesCompartment[377, 496, 93, 20]"\r
- fill="1"\r
- fillcolor="white"\r
- stroke="0"\r
- strokecolor="black"\r
- >\r
- <private>\r
- </private>\r
- \r
- <rectangle name="Fig18.4.0"\r
- x="377"\r
- y="496"\r
- width="93"\r
- height="20"\r
- fill="1"\r
- fillcolor="white"\r
- stroke="0"\r
- strokecolor="black"\r
- />\r
- <path name="Fig18.4.1"\r
- description="org.argouml.uml.diagram.ui.FigFeaturesCompartment$FigSeperator"\r
- fill="1"\r
- fillcolor="white"\r
- stroke="1"\r
- strokecolor="black"\r
- >\r
- <moveto x="377"\r
- y="496" />\r
- <lineto x="470"\r
- y="496" />\r
- </path>\r
- </group>\r
- <rectangle name="Fig18.5"\r
- x="376"\r
- y="472"\r
- width="94"\r
- height="65"\r
- fill="0"\r
- fillcolor="white"\r
- stroke="1"\r
- strokecolor="black"\r
- />\r
- </group>\r
- <group name="Fig19"\r
- description="org.argouml.uml.diagram.static_structure.ui.FigClass[376, 568, 131, 65]pathVisible=false;operationsVisible=true;attributesVisible=true"\r
- href="-64--88-1-101--7f8968dd:1157f72a2bb:-8000:0000000000000A2A"\r
- fill="1"\r
- fillcolor="white"\r
- stroke="1"\r
- strokecolor="black"\r
- >\r
- <private>\r
- </private>\r
- \r
- <rectangle name="Fig19.0"\r
- x="376"\r
- y="568"\r
- width="131"\r
- height="65"\r
- fill="1"\r
- fillcolor="white"\r
- stroke="0"\r
- strokecolor="black"\r
- />\r
- <group name="Fig19.1"\r
- description="org.argouml.uml.diagram.ui.FigStereotypesCompartment[376, 568, 131, 2]"\r
- href="-64--88-1-101--7f8968dd:1157f72a2bb:-8000:0000000000000A2A"\r
- fill="1"\r
- fillcolor="white"\r
- stroke="1"\r
- strokecolor="black"\r
- >\r
- <private>\r
- </private>\r
- \r
- <rectangle name="Fig19.1.0"\r
- x="376"\r
- y="568"\r
- width="131"\r
- height="2"\r
- fill="1"\r
- fillcolor="white"\r
- stroke="1"\r
- strokecolor="black"\r
- />\r
- </group>\r
- <text name="Fig19.2"\r
- x="376"\r
- y="570"\r
- fill="1"\r
- fillcolor="white"\r
- stroke="0"\r
- strokecolor="red"\r
- font="Dialog"\r
- textsize="10"\r
- >VersionedFileSetDeployer</text>\r
- <group name="Fig19.3"\r
- description="org.argouml.uml.diagram.ui.FigOperationsCompartment[377, 613, 130, 20]"\r
- fill="1"\r
- fillcolor="white"\r
- stroke="0"\r
- strokecolor="black"\r
- >\r
- <private>\r
- </private>\r
- \r
- <rectangle name="Fig19.3.0"\r
- x="377"\r
- y="613"\r
- width="130"\r
- height="20"\r
- fill="1"\r
- fillcolor="white"\r
- stroke="0"\r
- strokecolor="black"\r
- />\r
- <path name="Fig19.3.1"\r
- description="org.argouml.uml.diagram.ui.FigFeaturesCompartment$FigSeperator"\r
- fill="1"\r
- fillcolor="white"\r
- stroke="1"\r
- strokecolor="black"\r
- >\r
- <moveto x="377"\r
- y="613" />\r
- <lineto x="507"\r
- y="613" />\r
- </path>\r
- </group>\r
- <group name="Fig19.4"\r
- description="org.argouml.uml.diagram.ui.FigAttributesCompartment[377, 592, 130, 20]"\r
- fill="1"\r
- fillcolor="white"\r
- stroke="0"\r
- strokecolor="black"\r
- >\r
- <private>\r
- </private>\r
- \r
- <rectangle name="Fig19.4.0"\r
- x="377"\r
- y="592"\r
- width="130"\r
- height="20"\r
- fill="1"\r
- fillcolor="white"\r
- stroke="0"\r
- strokecolor="black"\r
- />\r
- <path name="Fig19.4.1"\r
- description="org.argouml.uml.diagram.ui.FigFeaturesCompartment$FigSeperator"\r
- fill="1"\r
- fillcolor="white"\r
- stroke="1"\r
- strokecolor="black"\r
- >\r
- <moveto x="377"\r
- y="592" />\r
- <lineto x="507"\r
- y="592" />\r
- </path>\r
- </group>\r
- <rectangle name="Fig19.5"\r
- x="376"\r
- y="568"\r
- width="131"\r
- height="65"\r
- fill="0"\r
- fillcolor="white"\r
- stroke="1"\r
- strokecolor="black"\r
- />\r
- </group>\r
- <group name="Fig20"\r
- description="org.argouml.uml.diagram.ui.FigAssociation"\r
- href="-64--88-1-101--7f8968dd:1157f72a2bb:-8000:0000000000000A2C"\r
- stroke="1"\r
- strokecolor="black"\r
- >\r
- <private>\r
- sourcePortFig="Fig11.0"\r
- destPortFig="Fig18.0"\r
- sourceFigNode="Fig11"\r
- destFigNode="Fig18"\r
- </private>\r
- <path name="Fig20.0"\r
- description="org.tigris.gef.presentation.FigPoly"\r
- fill="0"\r
- fillcolor="white"\r
- stroke="1"\r
- strokecolor="black"\r
- >\r
- <moveto x="584"\r
- y="240" />\r
- <lineto x="400"\r
- y="240" />\r
- <lineto x="400"\r
- y="472" />\r
- </path>\r
- </group>\r
- <group name="Fig21"\r
- description="org.argouml.uml.diagram.ui.FigAssociation"\r
- href="-64--88-1-101--7f8968dd:1157f72a2bb:-8000:0000000000000A33"\r
- stroke="1"\r
- strokecolor="black"\r
- >\r
- <private>\r
- sourcePortFig="Fig11.0"\r
- destPortFig="Fig19.0"\r
- sourceFigNode="Fig11"\r
- destFigNode="Fig19"\r
- </private>\r
- <path name="Fig21.0"\r
- description="org.tigris.gef.presentation.FigPoly"\r
- fill="0"\r
- fillcolor="white"\r
- stroke="1"\r
- strokecolor="black"\r
- >\r
- <moveto x="584"\r
- y="272" />\r
- <lineto x="488"\r
- y="272" />\r
- <lineto x="488"\r
- y="568" />\r
- </path>\r
- </group>\r
- <text name="Fig22"\r
- x="24"\r
- y="968"\r
- fill="1"\r
- fillcolor="white"\r
- stroke="1"\r
- strokecolor="black"\r
- font="Serif"\r
- textsize="10"\r
- >ARGEO SLC</text>\r
- <text name="Fig23"\r
- x="24"\r
- y="144"\r
- fill="1"\r
- fillcolor="white"\r
- stroke="1"\r
- strokecolor="black"\r
- font="Serif"\r
- textsize="10"\r
- >CAPCO / MUREX SPECIFIC</text>\r
- <group name="Fig24"\r
- description="org.argouml.uml.diagram.ui.FigGeneralization"\r
- href="-64--88-1-101--4a0353a6:1158fc10f03:-8000:0000000000000A42"\r
- stroke="1"\r
- strokecolor="black"\r
- >\r
- <private>\r
- sourcePortFig="Fig10.0"\r
- destPortFig="Fig7.0"\r
- sourceFigNode="Fig10"\r
- destFigNode="Fig7"\r
- </private>\r
- <path name="Fig24.0"\r
- description="org.tigris.gef.presentation.FigPoly"\r
- fill="0"\r
- fillcolor="white"\r
- stroke="1"\r
- strokecolor="black"\r
- >\r
- <moveto x="88"\r
- y="327" />\r
- <lineto x="88"\r
- y="640" />\r
- </path>\r
- </group>\r
- <group name="Fig25"\r
- description="org.argouml.uml.diagram.ui.FigGeneralization"\r
- href="-64--88-1-101--4a0353a6:1158fc10f03:-8000:0000000000000A43"\r
- stroke="1"\r
- strokecolor="black"\r
- >\r
- <private>\r
- sourcePortFig="Fig9.0"\r
- destPortFig="Fig8.0"\r
- sourceFigNode="Fig9"\r
- destFigNode="Fig8"\r
- </private>\r
- <path name="Fig25.0"\r
- description="org.tigris.gef.presentation.FigPoly"\r
- fill="0"\r
- fillcolor="white"\r
- stroke="1"\r
- strokecolor="black"\r
- >\r
- <moveto x="272"\r
- y="311" />\r
- <lineto x="272"\r
- y="640" />\r
- </path>\r
- </group>\r
- <group name="Fig26"\r
- description="org.argouml.uml.diagram.ui.FigGeneralization"\r
- href="-64--88-1-101--4a0353a6:1158fc10f03:-8000:0000000000000A44"\r
- stroke="1"\r
- strokecolor="black"\r
- >\r
- <private>\r
- sourcePortFig="Fig6.0"\r
- destPortFig="Fig5.0"\r
- sourceFigNode="Fig6"\r
- destFigNode="Fig5"\r
- </private>\r
- <path name="Fig26.0"\r
- description="org.tigris.gef.presentation.FigPoly"\r
- fill="0"\r
- fillcolor="white"\r
- stroke="1"\r
- strokecolor="black"\r
- >\r
- <moveto x="744"\r
- y="325" />\r
- <lineto x="744"\r
- y="624" />\r
- </path>\r
- </group>\r
- <group name="Fig27"\r
- description="org.argouml.uml.diagram.ui.FigGeneralization"\r
- href="-64--88-1-101--4a0353a6:1158fc10f03:-8000:0000000000000A46"\r
- stroke="1"\r
- strokecolor="black"\r
- >\r
- <private>\r
- sourcePortFig="Fig12.0"\r
- destPortFig="Fig4.0"\r
- sourceFigNode="Fig12"\r
- destFigNode="Fig4"\r
- </private>\r
- <path name="Fig27.0"\r
- description="org.tigris.gef.presentation.FigPoly"\r
- fill="0"\r
- fillcolor="white"\r
- stroke="1"\r
- strokecolor="black"\r
- >\r
- <moveto x="944"\r
- y="377" />\r
- <lineto x="944"\r
- y="752" />\r
- </path>\r
- </group>\r
- <group name="Fig28"\r
- description="org.argouml.uml.diagram.ui.FigGeneralization"\r
- href="-64--88-1-101--4a0353a6:1158fc10f03:-8000:0000000000000A47"\r
- stroke="1"\r
- strokecolor="black"\r
- >\r
- <private>\r
- sourcePortFig="Fig13.0"\r
- destPortFig="Fig12.0"\r
- sourceFigNode="Fig13"\r
- destFigNode="Fig12"\r
- </private>\r
- <path name="Fig28.0"\r
- description="org.tigris.gef.presentation.FigPoly"\r
- fill="0"\r
- fillcolor="white"\r
- stroke="1"\r
- strokecolor="black"\r
- >\r
- <moveto x="944"\r
- y="281" />\r
- <lineto x="944"\r
- y="312" />\r
- </path>\r
- </group>\r
- <group name="Fig29"\r
- description="org.argouml.uml.diagram.ui.FigGeneralization"\r
- href="-64--88-1-101--4a0353a6:1158fc10f03:-8000:0000000000000A48"\r
- stroke="1"\r
- strokecolor="black"\r
- >\r
- <private>\r
- sourcePortFig="Fig2.0"\r
- destPortFig="Fig3.0"\r
- sourceFigNode="Fig2"\r
- destFigNode="Fig3"\r
- </private>\r
- <path name="Fig29.0"\r
- description="org.tigris.gef.presentation.FigPoly"\r
- fill="0"\r
- fillcolor="white"\r
- stroke="1"\r
- strokecolor="black"\r
- >\r
- <moveto x="592"\r
- y="817" />\r
- <lineto x="592"\r
- y="864" />\r
- </path>\r
- </group>\r
- <group name="Fig30"\r
- description="org.argouml.uml.diagram.ui.FigGeneralization"\r
- href="-64--88-1-101--4a0353a6:1158fc10f03:-8000:0000000000000A49"\r
- stroke="1"\r
- strokecolor="black"\r
- >\r
- <private>\r
- sourcePortFig="Fig4.0"\r
- destPortFig="Fig3.0"\r
- sourceFigNode="Fig4"\r
- destFigNode="Fig3"\r
- </private>\r
- <path name="Fig30.0"\r
- description="org.tigris.gef.presentation.FigPoly"\r
- fill="0"\r
- fillcolor="white"\r
- stroke="1"\r
- strokecolor="black"\r
- >\r
- <moveto x="904"\r
- y="817" />\r
- <lineto x="904"\r
- y="840" />\r
- <lineto x="592"\r
- y="840" />\r
- <lineto x="592"\r
- y="864" />\r
- </path>\r
- </group>\r
-</pgml>\r
-<pgml description="org.argouml.uml.diagram.use_case.ui.UMLUseCaseDiagram|-64--88-1-101-3dc093e3:1157f1866b2:-8000:00000000000009EC"\r
- name="Use Case Diagram 1"\r
->\r
-</pgml>\r
-<todo>\r
-<todolist>\r
-</todolist>\r
-<resolvedcritics>\r
-</resolvedcritics>\r
-</todo>\r
-</uml>\r
+++ /dev/null
-<?xml version = "1.0" encoding = "UTF-8" ?>\r
-<uml version="5">\r
- <argo version="5">\r
- <documentation>\r
- <authorname></authorname>\r
- <authoremail></authoremail>\r
- <version>0.24</version>\r
- <description>\r
- \r
- </description>\r
- </documentation>\r
- <settings>\r
- <notationlanguage>UML 1.4</notationlanguage>\r
- <useguillemots>false</useguillemots>\r
- <showvisibility>false</showvisibility>\r
- <showmultiplicity>false</showmultiplicity>\r
- <showinitialvalue>false</showinitialvalue>\r
- <showproperties>false</showproperties>\r
- <showtypes>true</showtypes>\r
- <showstereotypes>false</showstereotypes>\r
- <showsingularmultiplicities>true</showsingularmultiplicities>\r
- <defaultshadowwidth>1</defaultshadowwidth>\r
- </settings>\r
- \r
- <searchpath href="PROJECT_DIR" />\r
- <member type="xmi"\r
- name="org.argeo.slc.zargo.xmi" />\r
- <member type="pgml"\r
- name="org.argeo.slc.zargo_orgargeoinfrastructure.pgml"\r
- diagramclass="org.argouml.uml.diagram.static_structure.ui.UMLClassDiagram"\r
- diagramname="org.argeo.infrastructure" />\r
- <member type="pgml"\r
- name="org.argeo.slc.zargo_Diagrammedecasdutilisation1.pgml"\r
- diagramclass="org.argouml.uml.diagram.use_case.ui.UMLUseCaseDiagram"\r
- diagramname="Diagramme de cas d'utilisation 1" />\r
- <member type="todo"\r
- name="org.argeo.slc.zargo.todo" />\r
- <historyfile name="" />\r
- </argo>\r
-<XMI xmi.version = '1.2' xmlns:UML = 'org.omg.xmi.namespace.UML' timestamp = 'Thu Oct 11 18:27:29 CEST 2007'>\r
- <XMI.header> <XMI.documentation>\r
- <XMI.exporter>ArgoUML (using Netbeans XMI Writer version 1.0)</XMI.exporter>\r
- <XMI.exporterVersion>0.24(5) revised on $Date: 2006-11-06 19:55:22 +0100 (Mon, 06 Nov 2006) $ </XMI.exporterVersion>\r
- </XMI.documentation>\r
- <XMI.metamodel xmi.name="UML" xmi.version="1.4"/></XMI.header>\r
- <XMI.content>\r
- <UML:Model xmi.id = '-64--88-0-11--3bcecc2b:113edff40cb:-8000:000000000000071E'\r
- name = 'org.argeo.infrastructure' isSpecification = 'false' isRoot = 'false'\r
- isLeaf = 'false' isAbstract = 'false'>\r
- <UML:Namespace.ownedElement>\r
- <UML:Package xmi.id = '-64--88-0-11--3bcecc2b:113edff40cb:-8000:000000000000071F'\r
- name = 'org.argeo.infrastructure.model' isSpecification = 'false' isRoot = 'false'\r
- isLeaf = 'false' isAbstract = 'false'>\r
- <UML:Namespace.ownedElement>\r
- <UML:Class xmi.id = '-64--88-0-11--3bcecc2b:113edff40cb:-8000:0000000000000720'\r
- name = 'Project' visibility = 'public' isSpecification = 'false' isRoot = 'false'\r
- isLeaf = 'false' isAbstract = 'false' isActive = 'false'>\r
- <UML:Classifier.feature>\r
- <UML:Attribute xmi.id = '-64--88-0-11--3bcecc2b:113edff40cb:-8000:0000000000000723'\r
- name = 'name' visibility = 'public' isSpecification = 'false' ownerScope = 'instance'\r
- changeability = 'changeable' targetScope = 'instance'>\r
- <UML:StructuralFeature.multiplicity>\r
- <UML:Multiplicity xmi.id = '-64--88-1-101-3dc093e3:1157f1866b2:-8000:00000000000008CD'>\r
- <UML:Multiplicity.range>\r
- <UML:MultiplicityRange xmi.id = '-64--88-1-101-3dc093e3:1157f1866b2:-8000:00000000000008CC'\r
- lower = '1' upper = '1'/>\r
- </UML:Multiplicity.range>\r
- </UML:Multiplicity>\r
- </UML:StructuralFeature.multiplicity>\r
- <UML:StructuralFeature.type>\r
- <UML:Class xmi.idref = '-64--88-0-11--3bcecc2b:113edff40cb:-8000:000000000000073B'/>\r
- </UML:StructuralFeature.type>\r
- </UML:Attribute>\r
- </UML:Classifier.feature>\r
- </UML:Class>\r
- <UML:Class xmi.id = '-64--88-0-11-7e9e46a8:113ee067f97:-8000:0000000000000732'\r
- name = 'Artifact' visibility = 'public' isSpecification = 'false' isRoot = 'false'\r
- isLeaf = 'false' isAbstract = 'false' isActive = 'false'>\r
- <UML:Classifier.feature>\r
- <UML:Attribute xmi.id = '-64--88-0-11-7e9e46a8:113ee067f97:-8000:0000000000000867'\r
- name = 'name' visibility = 'public' isSpecification = 'false' ownerScope = 'instance'\r
- changeability = 'changeable' targetScope = 'instance'>\r
- <UML:StructuralFeature.multiplicity>\r
- <UML:Multiplicity xmi.id = '-64--88-0-11-7e9e46a8:113ee067f97:-8000:000000000000086D'>\r
- <UML:Multiplicity.range>\r
- <UML:MultiplicityRange xmi.id = '-64--88-0-11-7e9e46a8:113ee067f97:-8000:000000000000086C'\r
- lower = '1' upper = '1'/>\r
- </UML:Multiplicity.range>\r
- </UML:Multiplicity>\r
- </UML:StructuralFeature.multiplicity>\r
- <UML:StructuralFeature.type>\r
- <UML:Class xmi.idref = '-64--88-0-11--3bcecc2b:113edff40cb:-8000:000000000000073B'/>\r
- </UML:StructuralFeature.type>\r
- </UML:Attribute>\r
- </UML:Classifier.feature>\r
- </UML:Class>\r
- <UML:Class xmi.id = '-64--88-0-11-7e9e46a8:113ee067f97:-8000:000000000000072E'\r
- name = 'Branch' visibility = 'public' isSpecification = 'false' isRoot = 'false'\r
- isLeaf = 'false' isAbstract = 'false' isActive = 'false'/>\r
- <UML:Class xmi.id = '-64--88-0-11-7e9e46a8:113ee067f97:-8000:0000000000000730'\r
- name = 'Revision' visibility = 'public' isSpecification = 'false' isRoot = 'false'\r
- isLeaf = 'false' isAbstract = 'false' isActive = 'false'/>\r
- <UML:Association xmi.id = '-64--88-0-11-7e9e46a8:113ee067f97:-8000:0000000000000734'\r
- name = '' isSpecification = 'false' isRoot = 'false' isLeaf = 'false' isAbstract = 'false'>\r
- <UML:Association.connection>\r
- <UML:AssociationEnd xmi.id = '-64--88-0-11-7e9e46a8:113ee067f97:-8000:0000000000000735'\r
- name = 'sourceLocation' visibility = 'public' isSpecification = 'false'\r
- isNavigable = 'true' ordering = 'unordered' aggregation = 'none' targetScope = 'instance'\r
- changeability = 'changeable'>\r
- <UML:AssociationEnd.multiplicity>\r
- <UML:Multiplicity xmi.id = '-64--88-0-11-7e9e46a8:113ee067f97:-8000:000000000000073E'>\r
- <UML:Multiplicity.range>\r
- <UML:MultiplicityRange xmi.id = '-64--88-0-11-7e9e46a8:113ee067f97:-8000:000000000000073D'\r
- lower = '1' upper = '1'/>\r
- </UML:Multiplicity.range>\r
- </UML:Multiplicity>\r
- </UML:AssociationEnd.multiplicity>\r
- <UML:AssociationEnd.participant>\r
- <UML:Class xmi.idref = '-64--88-0-11-7e9e46a8:113ee067f97:-8000:00000000000007B5'/>\r
- </UML:AssociationEnd.participant>\r
- </UML:AssociationEnd>\r
- <UML:AssociationEnd xmi.id = '-64--88-0-11-7e9e46a8:113ee067f97:-8000:0000000000000738'\r
- name = 'branches' visibility = 'public' isSpecification = 'false' isNavigable = 'true'\r
- ordering = 'unordered' aggregation = 'none' targetScope = 'instance' changeability = 'changeable'>\r
- <UML:AssociationEnd.multiplicity>\r
- <UML:Multiplicity xmi.id = '-64--88-0-11-7e9e46a8:113ee067f97:-8000:0000000000000742'>\r
- <UML:Multiplicity.range>\r
- <UML:MultiplicityRange xmi.id = '-64--88-0-11-7e9e46a8:113ee067f97:-8000:0000000000000741'\r
- lower = '1' upper = '-1'/>\r
- </UML:Multiplicity.range>\r
- </UML:Multiplicity>\r
- </UML:AssociationEnd.multiplicity>\r
- <UML:AssociationEnd.participant>\r
- <UML:Class xmi.idref = '-64--88-0-11-7e9e46a8:113ee067f97:-8000:000000000000072E'/>\r
- </UML:AssociationEnd.participant>\r
- </UML:AssociationEnd>\r
- </UML:Association.connection>\r
- </UML:Association>\r
- <UML:Association xmi.id = '-64--88-0-11-7e9e46a8:113ee067f97:-8000:0000000000000743'\r
- name = '' isSpecification = 'false' isRoot = 'false' isLeaf = 'false' isAbstract = 'false'>\r
- <UML:Association.connection>\r
- <UML:AssociationEnd xmi.id = '-64--88-0-11-7e9e46a8:113ee067f97:-8000:0000000000000744'\r
- name = 'project' visibility = 'public' isSpecification = 'false' isNavigable = 'true'\r
- ordering = 'unordered' aggregation = 'none' targetScope = 'instance' changeability = 'changeable'>\r
- <UML:AssociationEnd.multiplicity>\r
- <UML:Multiplicity xmi.id = '-64--88-0-11-7e9e46a8:113ee067f97:-8000:0000000000000745'>\r
- <UML:Multiplicity.range>\r
- <UML:MultiplicityRange xmi.id = '-64--88-0-11-7e9e46a8:113ee067f97:-8000:0000000000000746'\r
- lower = '1' upper = '1'/>\r
- </UML:Multiplicity.range>\r
- </UML:Multiplicity>\r
- </UML:AssociationEnd.multiplicity>\r
- <UML:AssociationEnd.participant>\r
- <UML:Class xmi.idref = '-64--88-0-11--3bcecc2b:113edff40cb:-8000:0000000000000720'/>\r
- </UML:AssociationEnd.participant>\r
- </UML:AssociationEnd>\r
- <UML:AssociationEnd xmi.id = '-64--88-0-11-7e9e46a8:113ee067f97:-8000:0000000000000747'\r
- name = 'artifacts' visibility = 'public' isSpecification = 'false' isNavigable = 'true'\r
- ordering = 'unordered' aggregation = 'none' targetScope = 'instance' changeability = 'changeable'>\r
- <UML:AssociationEnd.multiplicity>\r
- <UML:Multiplicity xmi.id = '-64--88-0-11-7e9e46a8:113ee067f97:-8000:000000000000074D'>\r
- <UML:Multiplicity.range>\r
- <UML:MultiplicityRange xmi.id = '-64--88-0-11-7e9e46a8:113ee067f97:-8000:000000000000074C'\r
- lower = '0' upper = '-1'/>\r
- </UML:Multiplicity.range>\r
- </UML:Multiplicity>\r
- </UML:AssociationEnd.multiplicity>\r
- <UML:AssociationEnd.participant>\r
- <UML:Class xmi.idref = '-64--88-0-11-7e9e46a8:113ee067f97:-8000:0000000000000732'/>\r
- </UML:AssociationEnd.participant>\r
- </UML:AssociationEnd>\r
- </UML:Association.connection>\r
- </UML:Association>\r
- <UML:Class xmi.id = '-64--88-0-11-7e9e46a8:113ee067f97:-8000:000000000000074E'\r
- name = 'Build' visibility = 'public' isSpecification = 'false' isRoot = 'false'\r
- isLeaf = 'false' isAbstract = 'false' isActive = 'false'>\r
- <UML:GeneralizableElement.generalization>\r
- <UML:Generalization xmi.idref = '-64--88-1-101--4a0353a6:1158fc10f03:-8000:0000000000000962'/>\r
- </UML:GeneralizableElement.generalization>\r
- </UML:Class>\r
- <UML:Class xmi.id = '-64--88-0-11-7e9e46a8:113ee067f97:-8000:000000000000076F'\r
- name = 'Deployment' visibility = 'public' isSpecification = 'false' isRoot = 'false'\r
- isLeaf = 'false' isAbstract = 'false' isActive = 'false'>\r
- <UML:GeneralizableElement.generalization>\r
- <UML:Generalization xmi.idref = '-64--88-1-101--4a0353a6:1158fc10f03:-8000:0000000000000963'/>\r
- </UML:GeneralizableElement.generalization>\r
- </UML:Class>\r
- <UML:Class xmi.id = '-64--88-0-11-7e9e46a8:113ee067f97:-8000:000000000000077A'\r
- name = 'TestRun' visibility = 'public' isSpecification = 'false' isRoot = 'false'\r
- isLeaf = 'false' isAbstract = 'false' isActive = 'false'>\r
- <UML:GeneralizableElement.generalization>\r
- <UML:Generalization xmi.idref = '-64--88-1-101--4a0353a6:1158fc10f03:-8000:0000000000000964'/>\r
- </UML:GeneralizableElement.generalization>\r
- </UML:Class>\r
- <UML:Class xmi.id = '-64--88-0-11-7e9e46a8:113ee067f97:-8000:0000000000000785'\r
- name = 'DeploymentData' visibility = 'public' isSpecification = 'false'\r
- isRoot = 'false' isLeaf = 'false' isAbstract = 'false' isActive = 'false'/>\r
- <UML:Class xmi.id = '-64--88-0-11-7e9e46a8:113ee067f97:-8000:0000000000000787'\r
- name = 'TestDefinition' visibility = 'public' isSpecification = 'false'\r
- isRoot = 'false' isLeaf = 'false' isAbstract = 'false' isActive = 'false'/>\r
- <UML:Class xmi.id = '-64--88-0-11-7e9e46a8:113ee067f97:-8000:00000000000007B5'\r
- name = 'SourceLocation' visibility = 'public' isSpecification = 'false'\r
- isRoot = 'false' isLeaf = 'false' isAbstract = 'false' isActive = 'false'/>\r
- <UML:Class xmi.id = '-64--88-0-11-7e9e46a8:113ee067f97:-8000:00000000000007CD'\r
- name = 'Process' visibility = 'public' isSpecification = 'false' isRoot = 'false'\r
- isLeaf = 'false' isAbstract = 'true' isActive = 'false'/>\r
- <UML:Class xmi.id = '-64--88-0-11-7e9e46a8:113ee067f97:-8000:00000000000007CF'\r
- name = 'ProcessStep' visibility = 'public' isSpecification = 'false' isRoot = 'false'\r
- isLeaf = 'false' isAbstract = 'false' isActive = 'false'>\r
- <UML:Namespace.ownedElement>\r
- <UML:Class xmi.id = '-64--88-0-11-7e9e46a8:113ee067f97:-8000:00000000000007DA'\r
- name = 'int' visibility = 'public' isSpecification = 'false' isRoot = 'false'\r
- isLeaf = 'false' isAbstract = 'false' isActive = 'false'/>\r
- </UML:Namespace.ownedElement>\r
- <UML:Classifier.feature>\r
- <UML:Attribute xmi.id = '-64--88-0-11-7e9e46a8:113ee067f97:-8000:00000000000007DB'\r
- name = 'start' visibility = 'public' isSpecification = 'false' ownerScope = 'instance'\r
- changeability = 'changeable' targetScope = 'instance'>\r
- <UML:StructuralFeature.multiplicity>\r
- <UML:Multiplicity xmi.id = '-64--88-0-11-7e9e46a8:113ee067f97:-8000:0000000000000801'>\r
- <UML:Multiplicity.range>\r
- <UML:MultiplicityRange xmi.id = '-64--88-0-11-7e9e46a8:113ee067f97:-8000:0000000000000800'\r
- lower = '1' upper = '1'/>\r
- </UML:Multiplicity.range>\r
- </UML:Multiplicity>\r
- </UML:StructuralFeature.multiplicity>\r
- <UML:StructuralFeature.type>\r
- <UML:Class xmi.idref = '-64--88-0-11-7e9e46a8:113ee067f97:-8000:00000000000007E4'/>\r
- </UML:StructuralFeature.type>\r
- </UML:Attribute>\r
- <UML:Attribute xmi.id = '-64--88-0-11-7e9e46a8:113ee067f97:-8000:00000000000007E5'\r
- name = 'end' visibility = 'public' isSpecification = 'false' ownerScope = 'instance'\r
- changeability = 'changeable' targetScope = 'instance'>\r
- <UML:StructuralFeature.multiplicity>\r
- <UML:Multiplicity xmi.id = '-64--88-0-11-7e9e46a8:113ee067f97:-8000:00000000000007ED'>\r
- <UML:Multiplicity.range>\r
- <UML:MultiplicityRange xmi.id = '-64--88-0-11-7e9e46a8:113ee067f97:-8000:00000000000007EC'\r
- lower = '1' upper = '1'/>\r
- </UML:Multiplicity.range>\r
- </UML:Multiplicity>\r
- </UML:StructuralFeature.multiplicity>\r
- <UML:StructuralFeature.type>\r
- <UML:Class xmi.idref = '-64--88-0-11-7e9e46a8:113ee067f97:-8000:00000000000007E4'/>\r
- </UML:StructuralFeature.type>\r
- </UML:Attribute>\r
- <UML:Attribute xmi.id = '-64--88-0-11-7e9e46a8:113ee067f97:-8000:0000000000000802'\r
- name = 'description' visibility = 'public' isSpecification = 'false' ownerScope = 'instance'\r
- changeability = 'changeable' targetScope = 'instance'>\r
- <UML:StructuralFeature.multiplicity>\r
- <UML:Multiplicity xmi.id = '-64--88-0-11-7e9e46a8:113ee067f97:-8000:000000000000080A'>\r
- <UML:Multiplicity.range>\r
- <UML:MultiplicityRange xmi.id = '-64--88-0-11-7e9e46a8:113ee067f97:-8000:0000000000000809'\r
- lower = '1' upper = '1'/>\r
- </UML:Multiplicity.range>\r
- </UML:Multiplicity>\r
- </UML:StructuralFeature.multiplicity>\r
- <UML:StructuralFeature.type>\r
- <UML:Class xmi.idref = '-64--88-0-11--3bcecc2b:113edff40cb:-8000:000000000000073B'/>\r
- </UML:StructuralFeature.type>\r
- </UML:Attribute>\r
- </UML:Classifier.feature>\r
- </UML:Class>\r
- <UML:Class xmi.id = '-64--88-0-11-7e9e46a8:113ee067f97:-8000:00000000000007EE'\r
- name = 'ProcessStatus' visibility = 'public' isSpecification = 'false' isRoot = 'false'\r
- isLeaf = 'false' isAbstract = 'false' isActive = 'false'/>\r
- <UML:Class xmi.id = '-64--88-0-11-7e9e46a8:113ee067f97:-8000:0000000000000817'\r
- name = 'Log' visibility = 'public' isSpecification = 'false' isRoot = 'false'\r
- isLeaf = 'false' isAbstract = 'false' isActive = 'false'>\r
- <UML:Namespace.ownedElement>\r
- <UML:Class xmi.id = '-64--88-0-11-7e9e46a8:113ee067f97:-8000:0000000000000861'\r
- name = 'void' visibility = 'public' isSpecification = 'false' isRoot = 'false'\r
- isLeaf = 'false' isAbstract = 'false' isActive = 'false'/>\r
- </UML:Namespace.ownedElement>\r
- <UML:Classifier.feature>\r
- <UML:Attribute xmi.id = '-64--88-1-101-3dc093e3:1157f1866b2:-8000:000000000000093E'\r
- name = 'content' visibility = 'public' isSpecification = 'false' ownerScope = 'instance'\r
- changeability = 'changeable' targetScope = 'instance'>\r
- <UML:StructuralFeature.multiplicity>\r
- <UML:Multiplicity xmi.id = '-64--88-1-101-3dc093e3:1157f1866b2:-8000:0000000000000944'>\r
- <UML:Multiplicity.range>\r
- <UML:MultiplicityRange xmi.id = '-64--88-1-101-3dc093e3:1157f1866b2:-8000:0000000000000943'\r
- lower = '1' upper = '1'/>\r
- </UML:Multiplicity.range>\r
- </UML:Multiplicity>\r
- </UML:StructuralFeature.multiplicity>\r
- <UML:StructuralFeature.type>\r
- <UML:Class xmi.idref = '-64--88-0-11--3bcecc2b:113edff40cb:-8000:000000000000073B'/>\r
- </UML:StructuralFeature.type>\r
- </UML:Attribute>\r
- </UML:Classifier.feature>\r
- </UML:Class>\r
- <UML:Association xmi.id = '-64--88-0-11-7e9e46a8:113ee067f97:-8000:000000000000086E'\r
- name = '' isSpecification = 'false' isRoot = 'false' isLeaf = 'false' isAbstract = 'false'>\r
- <UML:Association.connection>\r
- <UML:AssociationEnd xmi.id = '-64--88-0-11-7e9e46a8:113ee067f97:-8000:000000000000086F'\r
- visibility = 'public' isSpecification = 'false' isNavigable = 'false' ordering = 'unordered'\r
- aggregation = 'none' targetScope = 'instance' changeability = 'changeable'>\r
- <UML:AssociationEnd.multiplicity>\r
- <UML:Multiplicity xmi.id = '-64--88-1-101-3dc093e3:1157f1866b2:-8000:0000000000000963'>\r
- <UML:Multiplicity.range>\r
- <UML:MultiplicityRange xmi.id = '-64--88-1-101-3dc093e3:1157f1866b2:-8000:0000000000000962'\r
- lower = '1' upper = '1'/>\r
- </UML:Multiplicity.range>\r
- </UML:Multiplicity>\r
- </UML:AssociationEnd.multiplicity>\r
- <UML:AssociationEnd.participant>\r
- <UML:Class xmi.idref = '-64--88-1-101-3dc093e3:1157f1866b2:-8000:0000000000000959'/>\r
- </UML:AssociationEnd.participant>\r
- </UML:AssociationEnd>\r
- <UML:AssociationEnd xmi.id = '-64--88-0-11-7e9e46a8:113ee067f97:-8000:0000000000000872'\r
- name = 'testStatus' visibility = 'public' isSpecification = 'false' isNavigable = 'true'\r
- ordering = 'unordered' aggregation = 'none' targetScope = 'instance' changeability = 'changeable'>\r
- <UML:AssociationEnd.multiplicity>\r
- <UML:Multiplicity xmi.id = '-64--88-0-11-7e9e46a8:113ee067f97:-8000:0000000000000873'>\r
- <UML:Multiplicity.range>\r
- <UML:MultiplicityRange xmi.id = '-64--88-0-11-7e9e46a8:113ee067f97:-8000:0000000000000874'\r
- lower = '1' upper = '1'/>\r
- </UML:Multiplicity.range>\r
- </UML:Multiplicity>\r
- </UML:AssociationEnd.multiplicity>\r
- <UML:AssociationEnd.participant>\r
- <UML:Class xmi.idref = '-64--88-0-11-7e9e46a8:113ee067f97:-8000:00000000000007EE'/>\r
- </UML:AssociationEnd.participant>\r
- </UML:AssociationEnd>\r
- </UML:Association.connection>\r
- </UML:Association>\r
- <UML:Class xmi.id = '-64--88-0-11-7e9e46a8:113ee067f97:-8000:0000000000000879'\r
- name = 'ProcessSequence' visibility = 'public' isSpecification = 'false'\r
- isRoot = 'false' isLeaf = 'false' isAbstract = 'false' isActive = 'false'>\r
- <UML:GeneralizableElement.generalization>\r
- <UML:Generalization xmi.idref = '-64--88-1-101--4a0353a6:1158fc10f03:-8000:0000000000000961'/>\r
- </UML:GeneralizableElement.generalization>\r
- </UML:Class>\r
- <UML:Association xmi.id = '-64--88-0-11-7e9e46a8:113ee067f97:-8000:0000000000000880'\r
- name = '' isSpecification = 'false' isRoot = 'false' isLeaf = 'false' isAbstract = 'false'>\r
- <UML:Association.connection>\r
- <UML:AssociationEnd xmi.id = '-64--88-0-11-7e9e46a8:113ee067f97:-8000:0000000000000881'\r
- visibility = 'public' isSpecification = 'false' isNavigable = 'false' ordering = 'unordered'\r
- aggregation = 'composite' targetScope = 'instance' changeability = 'changeable'>\r
- <UML:AssociationEnd.multiplicity>\r
- <UML:Multiplicity xmi.id = '-64--88-0-11-7e9e46a8:113ee067f97:-8000:0000000000000882'>\r
- <UML:Multiplicity.range>\r
- <UML:MultiplicityRange xmi.id = '-64--88-0-11-7e9e46a8:113ee067f97:-8000:0000000000000883'\r
- lower = '1' upper = '1'/>\r
- </UML:Multiplicity.range>\r
- </UML:Multiplicity>\r
- </UML:AssociationEnd.multiplicity>\r
- <UML:AssociationEnd.participant>\r
- <UML:Class xmi.idref = '-64--88-0-11-7e9e46a8:113ee067f97:-8000:0000000000000879'/>\r
- </UML:AssociationEnd.participant>\r
- </UML:AssociationEnd>\r
- <UML:AssociationEnd xmi.id = '-64--88-0-11-7e9e46a8:113ee067f97:-8000:0000000000000884'\r
- name = 'childrenProcesses' visibility = 'public' isSpecification = 'false'\r
- isNavigable = 'true' ordering = 'ordered' aggregation = 'none' targetScope = 'instance'\r
- changeability = 'changeable'>\r
- <UML:AssociationEnd.multiplicity>\r
- <UML:Multiplicity xmi.id = '-64--88-0-11-2f324257:11408555da1:-8000:00000000000007F1'>\r
- <UML:Multiplicity.range>\r
- <UML:MultiplicityRange xmi.id = '-64--88-0-11-2f324257:11408555da1:-8000:00000000000007F0'\r
- lower = '1' upper = '-1'/>\r
- </UML:Multiplicity.range>\r
- </UML:Multiplicity>\r
- </UML:AssociationEnd.multiplicity>\r
- <UML:AssociationEnd.participant>\r
- <UML:Class xmi.idref = '-64--88-0-11-7e9e46a8:113ee067f97:-8000:00000000000007CD'/>\r
- </UML:AssociationEnd.participant>\r
- </UML:AssociationEnd>\r
- </UML:Association.connection>\r
- </UML:Association>\r
- <UML:Generalization xmi.id = '-64--88-1-101-3dc093e3:1157f1866b2:-8000:00000000000008D2'\r
- isSpecification = 'false'>\r
- <UML:Generalization.child>\r
- <UML:Class xmi.idref = '-64--88-1-101-3dc093e3:1157f1866b2:-8000:00000000000008CE'/>\r
- </UML:Generalization.child>\r
- <UML:Generalization.parent>\r
- <UML:Class xmi.idref = '-64--88-0-11-7e9e46a8:113ee067f97:-8000:0000000000000785'/>\r
- </UML:Generalization.parent>\r
- </UML:Generalization>\r
- <UML:Generalization xmi.id = '-64--88-1-101--4a0353a6:1158fc10f03:-8000:0000000000000960'\r
- isSpecification = 'false'>\r
- <UML:Generalization.child>\r
- <UML:Class xmi.idref = '-64--88-1-101-3dc093e3:1157f1866b2:-8000:00000000000008D3'/>\r
- </UML:Generalization.child>\r
- <UML:Generalization.parent>\r
- <UML:Class xmi.idref = '-64--88-0-11-7e9e46a8:113ee067f97:-8000:0000000000000785'/>\r
- </UML:Generalization.parent>\r
- </UML:Generalization>\r
- <UML:Generalization xmi.id = '-64--88-1-101--4a0353a6:1158fc10f03:-8000:0000000000000961'\r
- isSpecification = 'false'>\r
- <UML:Generalization.child>\r
- <UML:Class xmi.idref = '-64--88-0-11-7e9e46a8:113ee067f97:-8000:0000000000000879'/>\r
- </UML:Generalization.child>\r
- <UML:Generalization.parent>\r
- <UML:Class xmi.idref = '-64--88-0-11-7e9e46a8:113ee067f97:-8000:00000000000007CD'/>\r
- </UML:Generalization.parent>\r
- </UML:Generalization>\r
- <UML:Generalization xmi.id = '-64--88-1-101--4a0353a6:1158fc10f03:-8000:0000000000000962'\r
- isSpecification = 'false'>\r
- <UML:Generalization.child>\r
- <UML:Class xmi.idref = '-64--88-0-11-7e9e46a8:113ee067f97:-8000:000000000000074E'/>\r
- </UML:Generalization.child>\r
- <UML:Generalization.parent>\r
- <UML:Class xmi.idref = '-64--88-0-11-7e9e46a8:113ee067f97:-8000:00000000000007CD'/>\r
- </UML:Generalization.parent>\r
- </UML:Generalization>\r
- <UML:Generalization xmi.id = '-64--88-1-101--4a0353a6:1158fc10f03:-8000:0000000000000963'\r
- isSpecification = 'false'>\r
- <UML:Generalization.child>\r
- <UML:Class xmi.idref = '-64--88-0-11-7e9e46a8:113ee067f97:-8000:000000000000076F'/>\r
- </UML:Generalization.child>\r
- <UML:Generalization.parent>\r
- <UML:Class xmi.idref = '-64--88-0-11-7e9e46a8:113ee067f97:-8000:00000000000007CD'/>\r
- </UML:Generalization.parent>\r
- </UML:Generalization>\r
- <UML:Generalization xmi.id = '-64--88-1-101--4a0353a6:1158fc10f03:-8000:0000000000000964'\r
- isSpecification = 'false'>\r
- <UML:Generalization.child>\r
- <UML:Class xmi.idref = '-64--88-0-11-7e9e46a8:113ee067f97:-8000:000000000000077A'/>\r
- </UML:Generalization.child>\r
- <UML:Generalization.parent>\r
- <UML:Class xmi.idref = '-64--88-0-11-7e9e46a8:113ee067f97:-8000:00000000000007CD'/>\r
- </UML:Generalization.parent>\r
- </UML:Generalization>\r
- </UML:Namespace.ownedElement>\r
- </UML:Package>\r
- <UML:Package xmi.id = '-64--88-0-11--3bcecc2b:113edff40cb:-8000:000000000000073C'\r
- name = 'java.lang' isSpecification = 'false' isRoot = 'false' isLeaf = 'false'\r
- isAbstract = 'false'>\r
- <UML:Namespace.ownedElement>\r
- <UML:Class xmi.id = '-64--88-0-11--3bcecc2b:113edff40cb:-8000:000000000000073B'\r
- name = 'String' visibility = 'public' isSpecification = 'false' isRoot = 'false'\r
- isLeaf = 'false' isAbstract = 'false' isActive = 'false'/>\r
- </UML:Namespace.ownedElement>\r
- </UML:Package>\r
- <UML:Package xmi.id = '-64--88-0-11-7e9e46a8:113ee067f97:-8000:000000000000072D'\r
- name = 'java.util' isSpecification = 'false' isRoot = 'false' isLeaf = 'false'\r
- isAbstract = 'false'>\r
- <UML:Namespace.ownedElement>\r
- <UML:Class xmi.id = '-64--88-0-11-7e9e46a8:113ee067f97:-8000:00000000000007E4'\r
- name = 'Date' visibility = 'public' isSpecification = 'false' isRoot = 'false'\r
- isLeaf = 'false' isAbstract = 'false' isActive = 'false'/>\r
- </UML:Namespace.ownedElement>\r
- </UML:Package>\r
- <UML:Association xmi.id = '-64--88-0-11-7e9e46a8:113ee067f97:-8000:0000000000000750'\r
- name = '' isSpecification = 'false' isRoot = 'false' isLeaf = 'false' isAbstract = 'false'>\r
- <UML:Association.connection>\r
- <UML:AssociationEnd xmi.id = '-64--88-0-11-7e9e46a8:113ee067f97:-8000:0000000000000751'\r
- visibility = 'public' isSpecification = 'false' isNavigable = 'false' ordering = 'unordered'\r
- aggregation = 'none' targetScope = 'instance' changeability = 'changeable'>\r
- <UML:AssociationEnd.multiplicity>\r
- <UML:Multiplicity xmi.id = '-64--88-0-11-7e9e46a8:113ee067f97:-8000:000000000000076E'>\r
- <UML:Multiplicity.range>\r
- <UML:MultiplicityRange xmi.id = '-64--88-0-11-7e9e46a8:113ee067f97:-8000:000000000000076D'\r
- lower = '0' upper = '-1'/>\r
- </UML:Multiplicity.range>\r
- </UML:Multiplicity>\r
- </UML:AssociationEnd.multiplicity>\r
- <UML:AssociationEnd.participant>\r
- <UML:Class xmi.idref = '-64--88-0-11-7e9e46a8:113ee067f97:-8000:000000000000074E'/>\r
- </UML:AssociationEnd.participant>\r
- </UML:AssociationEnd>\r
- <UML:AssociationEnd xmi.id = '-64--88-0-11-7e9e46a8:113ee067f97:-8000:0000000000000754'\r
- name = 'artifact' visibility = 'public' isSpecification = 'false' isNavigable = 'true'\r
- ordering = 'unordered' aggregation = 'none' targetScope = 'instance' changeability = 'changeable'>\r
- <UML:AssociationEnd.multiplicity>\r
- <UML:Multiplicity xmi.id = '-64--88-0-11-7e9e46a8:113ee067f97:-8000:0000000000000755'>\r
- <UML:Multiplicity.range>\r
- <UML:MultiplicityRange xmi.id = '-64--88-0-11-7e9e46a8:113ee067f97:-8000:0000000000000756'\r
- lower = '1' upper = '1'/>\r
- </UML:Multiplicity.range>\r
- </UML:Multiplicity>\r
- </UML:AssociationEnd.multiplicity>\r
- <UML:AssociationEnd.participant>\r
- <UML:Class xmi.idref = '-64--88-0-11-7e9e46a8:113ee067f97:-8000:0000000000000732'/>\r
- </UML:AssociationEnd.participant>\r
- </UML:AssociationEnd>\r
- </UML:Association.connection>\r
- </UML:Association>\r
- <UML:Association xmi.id = '-64--88-0-11-7e9e46a8:113ee067f97:-8000:0000000000000757'\r
- name = '' isSpecification = 'false' isRoot = 'false' isLeaf = 'false' isAbstract = 'false'>\r
- <UML:Association.connection>\r
- <UML:AssociationEnd xmi.id = '-64--88-0-11-7e9e46a8:113ee067f97:-8000:0000000000000758'\r
- visibility = 'public' isSpecification = 'false' isNavigable = 'false' ordering = 'unordered'\r
- aggregation = 'none' targetScope = 'instance' changeability = 'changeable'>\r
- <UML:AssociationEnd.multiplicity>\r
- <UML:Multiplicity xmi.id = '-64--88-0-11-7e9e46a8:113ee067f97:-8000:000000000000076A'>\r
- <UML:Multiplicity.range>\r
- <UML:MultiplicityRange xmi.id = '-64--88-0-11-7e9e46a8:113ee067f97:-8000:0000000000000769'\r
- lower = '0' upper = '-1'/>\r
- </UML:Multiplicity.range>\r
- </UML:Multiplicity>\r
- </UML:AssociationEnd.multiplicity>\r
- <UML:AssociationEnd.participant>\r
- <UML:Class xmi.idref = '-64--88-1-101-3dc093e3:1157f1866b2:-8000:00000000000008E5'/>\r
- </UML:AssociationEnd.participant>\r
- </UML:AssociationEnd>\r
- <UML:AssociationEnd xmi.id = '-64--88-0-11-7e9e46a8:113ee067f97:-8000:000000000000075B'\r
- name = 'branch' visibility = 'public' isSpecification = 'false' isNavigable = 'true'\r
- ordering = 'unordered' aggregation = 'none' targetScope = 'instance' changeability = 'changeable'>\r
- <UML:AssociationEnd.multiplicity>\r
- <UML:Multiplicity xmi.id = '-64--88-0-11-7e9e46a8:113ee067f97:-8000:0000000000000766'>\r
- <UML:Multiplicity.range>\r
- <UML:MultiplicityRange xmi.id = '-64--88-0-11-7e9e46a8:113ee067f97:-8000:0000000000000765'\r
- lower = '1' upper = '1'/>\r
- </UML:Multiplicity.range>\r
- </UML:Multiplicity>\r
- </UML:AssociationEnd.multiplicity>\r
- <UML:AssociationEnd.participant>\r
- <UML:Class xmi.idref = '-64--88-0-11-7e9e46a8:113ee067f97:-8000:000000000000072E'/>\r
- </UML:AssociationEnd.participant>\r
- </UML:AssociationEnd>\r
- </UML:Association.connection>\r
- </UML:Association>\r
- <UML:Association xmi.id = '-64--88-0-11-7e9e46a8:113ee067f97:-8000:000000000000075E'\r
- name = '' isSpecification = 'false' isRoot = 'false' isLeaf = 'false' isAbstract = 'false'>\r
- <UML:Association.connection>\r
- <UML:AssociationEnd xmi.id = '-64--88-0-11-7e9e46a8:113ee067f97:-8000:000000000000075F'\r
- visibility = 'public' isSpecification = 'false' isNavigable = 'false' ordering = 'unordered'\r
- aggregation = 'none' targetScope = 'instance' changeability = 'changeable'>\r
- <UML:AssociationEnd.multiplicity>\r
- <UML:Multiplicity xmi.id = '-64--88-0-11-7e9e46a8:113ee067f97:-8000:000000000000076C'>\r
- <UML:Multiplicity.range>\r
- <UML:MultiplicityRange xmi.id = '-64--88-0-11-7e9e46a8:113ee067f97:-8000:000000000000076B'\r
- lower = '0' upper = '-1'/>\r
- </UML:Multiplicity.range>\r
- </UML:Multiplicity>\r
- </UML:AssociationEnd.multiplicity>\r
- <UML:AssociationEnd.participant>\r
- <UML:Class xmi.idref = '-64--88-1-101-3dc093e3:1157f1866b2:-8000:00000000000008E5'/>\r
- </UML:AssociationEnd.participant>\r
- </UML:AssociationEnd>\r
- <UML:AssociationEnd xmi.id = '-64--88-0-11-7e9e46a8:113ee067f97:-8000:0000000000000762'\r
- name = 'revision' visibility = 'public' isSpecification = 'false' isNavigable = 'true'\r
- ordering = 'unordered' aggregation = 'none' targetScope = 'instance' changeability = 'changeable'>\r
- <UML:AssociationEnd.multiplicity>\r
- <UML:Multiplicity xmi.id = '-64--88-0-11-7e9e46a8:113ee067f97:-8000:0000000000000763'>\r
- <UML:Multiplicity.range>\r
- <UML:MultiplicityRange xmi.id = '-64--88-0-11-7e9e46a8:113ee067f97:-8000:0000000000000764'\r
- lower = '1' upper = '1'/>\r
- </UML:Multiplicity.range>\r
- </UML:Multiplicity>\r
- </UML:AssociationEnd.multiplicity>\r
- <UML:AssociationEnd.participant>\r
- <UML:Class xmi.idref = '-64--88-0-11-7e9e46a8:113ee067f97:-8000:0000000000000730'/>\r
- </UML:AssociationEnd.participant>\r
- </UML:AssociationEnd>\r
- </UML:Association.connection>\r
- </UML:Association>\r
- <UML:Association xmi.id = '-64--88-0-11-7e9e46a8:113ee067f97:-8000:0000000000000771'\r
- name = '' isSpecification = 'false' isRoot = 'false' isLeaf = 'false' isAbstract = 'false'>\r
- <UML:Association.connection>\r
- <UML:AssociationEnd xmi.id = '-64--88-0-11-7e9e46a8:113ee067f97:-8000:0000000000000772'\r
- visibility = 'public' isSpecification = 'false' isNavigable = 'false' ordering = 'unordered'\r
- aggregation = 'none' targetScope = 'instance' changeability = 'changeable'>\r
- <UML:AssociationEnd.multiplicity>\r
- <UML:Multiplicity xmi.id = '-64--88-0-11-7e9e46a8:113ee067f97:-8000:0000000000000779'>\r
- <UML:Multiplicity.range>\r
- <UML:MultiplicityRange xmi.id = '-64--88-0-11-7e9e46a8:113ee067f97:-8000:0000000000000778'\r
- lower = '0' upper = '-1'/>\r
- </UML:Multiplicity.range>\r
- </UML:Multiplicity>\r
- </UML:AssociationEnd.multiplicity>\r
- <UML:AssociationEnd.participant>\r
- <UML:Class xmi.idref = '-64--88-0-11-7e9e46a8:113ee067f97:-8000:000000000000076F'/>\r
- </UML:AssociationEnd.participant>\r
- </UML:AssociationEnd>\r
- <UML:AssociationEnd xmi.id = '-64--88-0-11-7e9e46a8:113ee067f97:-8000:0000000000000775'\r
- name = 'distribution' visibility = 'public' isSpecification = 'false' isNavigable = 'true'\r
- ordering = 'unordered' aggregation = 'none' targetScope = 'instance' changeability = 'changeable'>\r
- <UML:AssociationEnd.multiplicity>\r
- <UML:Multiplicity xmi.id = '-64--88-1-101--4a0353a6:1158fc10f03:-8000:0000000000000C36'>\r
- <UML:Multiplicity.range>\r
- <UML:MultiplicityRange xmi.id = '-64--88-1-101--4a0353a6:1158fc10f03:-8000:0000000000000C35'\r
- lower = '1' upper = '1'/>\r
- </UML:Multiplicity.range>\r
- </UML:Multiplicity>\r
- </UML:AssociationEnd.multiplicity>\r
- <UML:AssociationEnd.participant>\r
- <UML:Class xmi.idref = '-64--88-1-101--3f3f1022:1157622ef7f:-8000:00000000000008A8'/>\r
- </UML:AssociationEnd.participant>\r
- </UML:AssociationEnd>\r
- </UML:Association.connection>\r
- </UML:Association>\r
- <UML:Association xmi.id = '-64--88-0-11-7e9e46a8:113ee067f97:-8000:000000000000077C'\r
- name = '' isSpecification = 'false' isRoot = 'false' isLeaf = 'false' isAbstract = 'false'>\r
- <UML:Association.connection>\r
- <UML:AssociationEnd xmi.id = '-64--88-0-11-7e9e46a8:113ee067f97:-8000:000000000000077D'\r
- visibility = 'public' isSpecification = 'false' isNavigable = 'false' ordering = 'unordered'\r
- aggregation = 'none' targetScope = 'instance' changeability = 'changeable'>\r
- <UML:AssociationEnd.multiplicity>\r
- <UML:Multiplicity xmi.id = '-64--88-0-11-7e9e46a8:113ee067f97:-8000:0000000000000784'>\r
- <UML:Multiplicity.range>\r
- <UML:MultiplicityRange xmi.id = '-64--88-0-11-7e9e46a8:113ee067f97:-8000:0000000000000783'\r
- lower = '0' upper = '-1'/>\r
- </UML:Multiplicity.range>\r
- </UML:Multiplicity>\r
- </UML:AssociationEnd.multiplicity>\r
- <UML:AssociationEnd.participant>\r
- <UML:Class xmi.idref = '-64--88-0-11-7e9e46a8:113ee067f97:-8000:000000000000077A'/>\r
- </UML:AssociationEnd.participant>\r
- </UML:AssociationEnd>\r
- <UML:AssociationEnd xmi.id = '-64--88-0-11-7e9e46a8:113ee067f97:-8000:0000000000000780'\r
- name = 'deployedSystem' visibility = 'public' isSpecification = 'false'\r
- isNavigable = 'true' ordering = 'unordered' aggregation = 'none' targetScope = 'instance'\r
- changeability = 'changeable'>\r
- <UML:AssociationEnd.multiplicity>\r
- <UML:Multiplicity xmi.id = '-64--88-1-101--3f3f1022:1157622ef7f:-8000:00000000000008C3'>\r
- <UML:Multiplicity.range>\r
- <UML:MultiplicityRange xmi.id = '-64--88-1-101--3f3f1022:1157622ef7f:-8000:00000000000008C2'\r
- lower = '1' upper = '1'/>\r
- </UML:Multiplicity.range>\r
- </UML:Multiplicity>\r
- </UML:AssociationEnd.multiplicity>\r
- <UML:AssociationEnd.participant>\r
- <UML:Class xmi.idref = '-64--88-1-101--3f3f1022:1157622ef7f:-8000:00000000000008AA'/>\r
- </UML:AssociationEnd.participant>\r
- </UML:AssociationEnd>\r
- </UML:Association.connection>\r
- </UML:Association>\r
- <UML:Association xmi.id = '-64--88-0-11-7e9e46a8:113ee067f97:-8000:0000000000000789'\r
- name = '' isSpecification = 'false' isRoot = 'false' isLeaf = 'false' isAbstract = 'false'>\r
- <UML:Association.connection>\r
- <UML:AssociationEnd xmi.id = '-64--88-0-11-7e9e46a8:113ee067f97:-8000:000000000000078A'\r
- visibility = 'public' isSpecification = 'false' isNavigable = 'false' ordering = 'unordered'\r
- aggregation = 'none' targetScope = 'instance' changeability = 'changeable'>\r
- <UML:AssociationEnd.multiplicity>\r
- <UML:Multiplicity xmi.id = '-64--88-0-11-7e9e46a8:113ee067f97:-8000:0000000000000791'>\r
- <UML:Multiplicity.range>\r
- <UML:MultiplicityRange xmi.id = '-64--88-0-11-7e9e46a8:113ee067f97:-8000:0000000000000790'\r
- lower = '0' upper = '-1'/>\r
- </UML:Multiplicity.range>\r
- </UML:Multiplicity>\r
- </UML:AssociationEnd.multiplicity>\r
- <UML:AssociationEnd.participant>\r
- <UML:Class xmi.idref = '-64--88-0-11-7e9e46a8:113ee067f97:-8000:000000000000076F'/>\r
- </UML:AssociationEnd.participant>\r
- </UML:AssociationEnd>\r
- <UML:AssociationEnd xmi.id = '-64--88-0-11-7e9e46a8:113ee067f97:-8000:000000000000078D'\r
- name = 'deploymentData' visibility = 'public' isSpecification = 'false'\r
- isNavigable = 'true' ordering = 'unordered' aggregation = 'none' targetScope = 'instance'\r
- changeability = 'changeable'>\r
- <UML:AssociationEnd.multiplicity>\r
- <UML:Multiplicity xmi.id = '-64--88-0-11-7e9e46a8:113ee067f97:-8000:000000000000078E'>\r
- <UML:Multiplicity.range>\r
- <UML:MultiplicityRange xmi.id = '-64--88-0-11-7e9e46a8:113ee067f97:-8000:000000000000078F'\r
- lower = '1' upper = '1'/>\r
- </UML:Multiplicity.range>\r
- </UML:Multiplicity>\r
- </UML:AssociationEnd.multiplicity>\r
- <UML:AssociationEnd.participant>\r
- <UML:Class xmi.idref = '-64--88-0-11-7e9e46a8:113ee067f97:-8000:0000000000000785'/>\r
- </UML:AssociationEnd.participant>\r
- </UML:AssociationEnd>\r
- </UML:Association.connection>\r
- </UML:Association>\r
- <UML:Association xmi.id = '-64--88-0-11-7e9e46a8:113ee067f97:-8000:0000000000000792'\r
- name = '' isSpecification = 'false' isRoot = 'false' isLeaf = 'false' isAbstract = 'false'>\r
- <UML:Association.connection>\r
- <UML:AssociationEnd xmi.id = '-64--88-0-11-7e9e46a8:113ee067f97:-8000:0000000000000793'\r
- visibility = 'public' isSpecification = 'false' isNavigable = 'false' ordering = 'unordered'\r
- aggregation = 'none' targetScope = 'instance' changeability = 'changeable'>\r
- <UML:AssociationEnd.multiplicity>\r
- <UML:Multiplicity xmi.id = '-64--88-0-11-7e9e46a8:113ee067f97:-8000:000000000000079A'>\r
- <UML:Multiplicity.range>\r
- <UML:MultiplicityRange xmi.id = '-64--88-0-11-7e9e46a8:113ee067f97:-8000:0000000000000799'\r
- lower = '0' upper = '-1'/>\r
- </UML:Multiplicity.range>\r
- </UML:Multiplicity>\r
- </UML:AssociationEnd.multiplicity>\r
- <UML:AssociationEnd.participant>\r
- <UML:Class xmi.idref = '-64--88-0-11-7e9e46a8:113ee067f97:-8000:000000000000077A'/>\r
- </UML:AssociationEnd.participant>\r
- </UML:AssociationEnd>\r
- <UML:AssociationEnd xmi.id = '-64--88-0-11-7e9e46a8:113ee067f97:-8000:0000000000000796'\r
- name = 'testDefinition' visibility = 'public' isSpecification = 'false'\r
- isNavigable = 'true' ordering = 'unordered' aggregation = 'none' targetScope = 'instance'\r
- changeability = 'changeable'>\r
- <UML:AssociationEnd.multiplicity>\r
- <UML:Multiplicity xmi.id = '-64--88-0-11-7e9e46a8:113ee067f97:-8000:0000000000000797'>\r
- <UML:Multiplicity.range>\r
- <UML:MultiplicityRange xmi.id = '-64--88-0-11-7e9e46a8:113ee067f97:-8000:0000000000000798'\r
- lower = '1' upper = '1'/>\r
- </UML:Multiplicity.range>\r
- </UML:Multiplicity>\r
- </UML:AssociationEnd.multiplicity>\r
- <UML:AssociationEnd.participant>\r
- <UML:Class xmi.idref = '-64--88-0-11-7e9e46a8:113ee067f97:-8000:0000000000000787'/>\r
- </UML:AssociationEnd.participant>\r
- </UML:AssociationEnd>\r
- </UML:Association.connection>\r
- </UML:Association>\r
- <UML:Association xmi.id = '-64--88-0-11-7e9e46a8:113ee067f97:-8000:000000000000079B'\r
- name = '' isSpecification = 'false' isRoot = 'false' isLeaf = 'false' isAbstract = 'false'>\r
- <UML:Association.connection>\r
- <UML:AssociationEnd xmi.id = '-64--88-0-11-7e9e46a8:113ee067f97:-8000:000000000000079C'\r
- visibility = 'public' isSpecification = 'false' isNavigable = 'true' ordering = 'unordered'\r
- aggregation = 'aggregate' targetScope = 'instance' changeability = 'changeable'>\r
- <UML:AssociationEnd.multiplicity>\r
- <UML:Multiplicity xmi.id = '-64--88-0-11-7e9e46a8:113ee067f97:-8000:00000000000007B4'>\r
- <UML:Multiplicity.range>\r
- <UML:MultiplicityRange xmi.id = '-64--88-0-11-7e9e46a8:113ee067f97:-8000:00000000000007B3'\r
- lower = '0' upper = '-1'/>\r
- </UML:Multiplicity.range>\r
- </UML:Multiplicity>\r
- </UML:AssociationEnd.multiplicity>\r
- <UML:AssociationEnd.participant>\r
- <UML:Class xmi.idref = '-64--88-0-11-7e9e46a8:113ee067f97:-8000:0000000000000732'/>\r
- </UML:AssociationEnd.participant>\r
- </UML:AssociationEnd>\r
- <UML:AssociationEnd xmi.id = '-64--88-0-11-7e9e46a8:113ee067f97:-8000:000000000000079F'\r
- name = 'deploymentDatas' visibility = 'public' isSpecification = 'false'\r
- isNavigable = 'true' ordering = 'unordered' aggregation = 'none' targetScope = 'instance'\r
- changeability = 'changeable'>\r
- <UML:AssociationEnd.multiplicity>\r
- <UML:Multiplicity xmi.id = '-64--88-0-11-7e9e46a8:113ee067f97:-8000:00000000000007AC'>\r
- <UML:Multiplicity.range>\r
- <UML:MultiplicityRange xmi.id = '-64--88-0-11-7e9e46a8:113ee067f97:-8000:00000000000007AB'\r
- lower = '0' upper = '-1'/>\r
- </UML:Multiplicity.range>\r
- </UML:Multiplicity>\r
- </UML:AssociationEnd.multiplicity>\r
- <UML:AssociationEnd.participant>\r
- <UML:Class xmi.idref = '-64--88-0-11-7e9e46a8:113ee067f97:-8000:0000000000000785'/>\r
- </UML:AssociationEnd.participant>\r
- </UML:AssociationEnd>\r
- </UML:Association.connection>\r
- </UML:Association>\r
- <UML:Association xmi.id = '-64--88-0-11-7e9e46a8:113ee067f97:-8000:00000000000007A2'\r
- name = '' isSpecification = 'false' isRoot = 'false' isLeaf = 'false' isAbstract = 'false'>\r
- <UML:Association.connection>\r
- <UML:AssociationEnd xmi.id = '-64--88-0-11-7e9e46a8:113ee067f97:-8000:00000000000007A3'\r
- visibility = 'public' isSpecification = 'false' isNavigable = 'true' ordering = 'unordered'\r
- aggregation = 'aggregate' targetScope = 'instance' changeability = 'changeable'>\r
- <UML:AssociationEnd.multiplicity>\r
- <UML:Multiplicity xmi.id = '-64--88-0-11-7e9e46a8:113ee067f97:-8000:00000000000007B2'>\r
- <UML:Multiplicity.range>\r
- <UML:MultiplicityRange xmi.id = '-64--88-0-11-7e9e46a8:113ee067f97:-8000:00000000000007B1'\r
- lower = '1' upper = '-1'/>\r
- </UML:Multiplicity.range>\r
- </UML:Multiplicity>\r
- </UML:AssociationEnd.multiplicity>\r
- <UML:AssociationEnd.participant>\r
- <UML:Class xmi.idref = '-64--88-0-11-7e9e46a8:113ee067f97:-8000:0000000000000732'/>\r
- </UML:AssociationEnd.participant>\r
- </UML:AssociationEnd>\r
- <UML:AssociationEnd xmi.id = '-64--88-0-11-7e9e46a8:113ee067f97:-8000:00000000000007A6'\r
- visibility = 'public' isSpecification = 'false' isNavigable = 'true' ordering = 'unordered'\r
- aggregation = 'none' targetScope = 'instance' changeability = 'changeable'>\r
- <UML:AssociationEnd.multiplicity>\r
- <UML:Multiplicity xmi.id = '-64--88-0-11-7e9e46a8:113ee067f97:-8000:00000000000007AA'>\r
- <UML:Multiplicity.range>\r
- <UML:MultiplicityRange xmi.id = '-64--88-0-11-7e9e46a8:113ee067f97:-8000:00000000000007A9'\r
- lower = '0' upper = '-1'/>\r
- </UML:Multiplicity.range>\r
- </UML:Multiplicity>\r
- </UML:AssociationEnd.multiplicity>\r
- <UML:AssociationEnd.participant>\r
- <UML:Class xmi.idref = '-64--88-0-11-7e9e46a8:113ee067f97:-8000:0000000000000787'/>\r
- </UML:AssociationEnd.participant>\r
- </UML:AssociationEnd>\r
- </UML:Association.connection>\r
- </UML:Association>\r
- <UML:Association xmi.id = '-64--88-0-11-7e9e46a8:113ee067f97:-8000:00000000000007B7'\r
- name = '' isSpecification = 'false' isRoot = 'false' isLeaf = 'false' isAbstract = 'false'>\r
- <UML:Association.connection>\r
- <UML:AssociationEnd xmi.id = '-64--88-0-11-7e9e46a8:113ee067f97:-8000:00000000000007B8'\r
- visibility = 'public' isSpecification = 'false' isNavigable = 'false' ordering = 'unordered'\r
- aggregation = 'none' targetScope = 'instance' changeability = 'changeable'>\r
- <UML:AssociationEnd.multiplicity>\r
- <UML:Multiplicity xmi.id = '-64--88-0-11-7e9e46a8:113ee067f97:-8000:00000000000007B9'>\r
- <UML:Multiplicity.range>\r
- <UML:MultiplicityRange xmi.id = '-64--88-0-11-7e9e46a8:113ee067f97:-8000:00000000000007BA'\r
- lower = '1' upper = '1'/>\r
- </UML:Multiplicity.range>\r
- </UML:Multiplicity>\r
- </UML:AssociationEnd.multiplicity>\r
- <UML:AssociationEnd.participant>\r
- <UML:Class xmi.idref = '-64--88-0-11--3bcecc2b:113edff40cb:-8000:0000000000000720'/>\r
- </UML:AssociationEnd.participant>\r
- </UML:AssociationEnd>\r
- <UML:AssociationEnd xmi.id = '-64--88-0-11-7e9e46a8:113ee067f97:-8000:00000000000007BB'\r
- name = 'sourceLocation' visibility = 'public' isSpecification = 'false'\r
- isNavigable = 'true' ordering = 'unordered' aggregation = 'none' targetScope = 'instance'\r
- changeability = 'changeable'>\r
- <UML:AssociationEnd.multiplicity>\r
- <UML:Multiplicity xmi.id = '-64--88-0-11-7e9e46a8:113ee067f97:-8000:00000000000007BF'>\r
- <UML:Multiplicity.range>\r
- <UML:MultiplicityRange xmi.id = '-64--88-0-11-7e9e46a8:113ee067f97:-8000:00000000000007BE'\r
- lower = '1' upper = '1'/>\r
- </UML:Multiplicity.range>\r
- </UML:Multiplicity>\r
- </UML:AssociationEnd.multiplicity>\r
- <UML:AssociationEnd.participant>\r
- <UML:Class xmi.idref = '-64--88-0-11-7e9e46a8:113ee067f97:-8000:00000000000007B5'/>\r
- </UML:AssociationEnd.participant>\r
- </UML:AssociationEnd>\r
- </UML:Association.connection>\r
- </UML:Association>\r
- <UML:Association xmi.id = '-64--88-0-11-7e9e46a8:113ee067f97:-8000:00000000000007C0'\r
- name = '' isSpecification = 'false' isRoot = 'false' isLeaf = 'false' isAbstract = 'false'>\r
- <UML:Association.connection>\r
- <UML:AssociationEnd xmi.id = '-64--88-0-11-7e9e46a8:113ee067f97:-8000:00000000000007C1'\r
- name = 'revisions' visibility = 'public' isSpecification = 'false' isNavigable = 'false'\r
- ordering = 'unordered' aggregation = 'none' targetScope = 'instance' changeability = 'changeable'>\r
- <UML:AssociationEnd.multiplicity>\r
- <UML:Multiplicity xmi.id = '-64--88-0-11-7e9e46a8:113ee067f97:-8000:00000000000007CC'>\r
- <UML:Multiplicity.range>\r
- <UML:MultiplicityRange xmi.id = '-64--88-0-11-7e9e46a8:113ee067f97:-8000:00000000000007CB'\r
- lower = '1' upper = '-1'/>\r
- </UML:Multiplicity.range>\r
- </UML:Multiplicity>\r
- </UML:AssociationEnd.multiplicity>\r
- <UML:AssociationEnd.participant>\r
- <UML:Class xmi.idref = '-64--88-0-11-7e9e46a8:113ee067f97:-8000:0000000000000730'/>\r
- </UML:AssociationEnd.participant>\r
- </UML:AssociationEnd>\r
- <UML:AssociationEnd xmi.id = '-64--88-0-11-7e9e46a8:113ee067f97:-8000:00000000000007C4'\r
- name = 'sourceLocation' visibility = 'public' isSpecification = 'false'\r
- isNavigable = 'false' ordering = 'unordered' aggregation = 'none' targetScope = 'instance'\r
- changeability = 'changeable'>\r
- <UML:AssociationEnd.multiplicity>\r
- <UML:Multiplicity xmi.id = '-64--88-0-11-7e9e46a8:113ee067f97:-8000:00000000000007CA'>\r
- <UML:Multiplicity.range>\r
- <UML:MultiplicityRange xmi.id = '-64--88-0-11-7e9e46a8:113ee067f97:-8000:00000000000007C9'\r
- lower = '1' upper = '1'/>\r
- </UML:Multiplicity.range>\r
- </UML:Multiplicity>\r
- </UML:AssociationEnd.multiplicity>\r
- <UML:AssociationEnd.participant>\r
- <UML:Class xmi.idref = '-64--88-0-11-7e9e46a8:113ee067f97:-8000:00000000000007B5'/>\r
- </UML:AssociationEnd.participant>\r
- </UML:AssociationEnd>\r
- </UML:Association.connection>\r
- </UML:Association>\r
- <UML:Association xmi.id = '-64--88-0-11-7e9e46a8:113ee067f97:-8000:00000000000007D1'\r
- name = '' isSpecification = 'false' isRoot = 'false' isLeaf = 'false' isAbstract = 'false'>\r
- <UML:Association.connection>\r
- <UML:AssociationEnd xmi.id = '-64--88-0-11-7e9e46a8:113ee067f97:-8000:00000000000007D2'\r
- visibility = 'public' isSpecification = 'false' isNavigable = 'false' ordering = 'unordered'\r
- aggregation = 'composite' targetScope = 'instance' changeability = 'changeable'>\r
- <UML:AssociationEnd.multiplicity>\r
- <UML:Multiplicity xmi.id = '-64--88-0-11-7e9e46a8:113ee067f97:-8000:00000000000007D3'>\r
- <UML:Multiplicity.range>\r
- <UML:MultiplicityRange xmi.id = '-64--88-0-11-7e9e46a8:113ee067f97:-8000:00000000000007D4'\r
- lower = '1' upper = '1'/>\r
- </UML:Multiplicity.range>\r
- </UML:Multiplicity>\r
- </UML:AssociationEnd.multiplicity>\r
- <UML:AssociationEnd.participant>\r
- <UML:Class xmi.idref = '-64--88-0-11-7e9e46a8:113ee067f97:-8000:00000000000007CD'/>\r
- </UML:AssociationEnd.participant>\r
- </UML:AssociationEnd>\r
- <UML:AssociationEnd xmi.id = '-64--88-0-11-7e9e46a8:113ee067f97:-8000:00000000000007D5'\r
- name = 'steps' visibility = 'public' isSpecification = 'false' isNavigable = 'true'\r
- ordering = 'ordered' aggregation = 'none' targetScope = 'instance' changeability = 'changeable'>\r
- <UML:AssociationEnd.multiplicity>\r
- <UML:Multiplicity xmi.id = '-64--88-0-11-7e9e46a8:113ee067f97:-8000:000000000000088C'>\r
- <UML:Multiplicity.range>\r
- <UML:MultiplicityRange xmi.id = '-64--88-0-11-7e9e46a8:113ee067f97:-8000:000000000000088B'\r
- lower = '1' upper = '-1'/>\r
- </UML:Multiplicity.range>\r
- </UML:Multiplicity>\r
- </UML:AssociationEnd.multiplicity>\r
- <UML:AssociationEnd.participant>\r
- <UML:Class xmi.idref = '-64--88-0-11-7e9e46a8:113ee067f97:-8000:00000000000007CF'/>\r
- </UML:AssociationEnd.participant>\r
- </UML:AssociationEnd>\r
- </UML:Association.connection>\r
- </UML:Association>\r
- <UML:Association xmi.id = '-64--88-0-11-7e9e46a8:113ee067f97:-8000:00000000000007F0'\r
- name = '' isSpecification = 'false' isRoot = 'false' isLeaf = 'false' isAbstract = 'false'>\r
- <UML:Association.connection>\r
- <UML:AssociationEnd xmi.id = '-64--88-0-11-7e9e46a8:113ee067f97:-8000:00000000000007F1'\r
- visibility = 'public' isSpecification = 'false' isNavigable = 'false' ordering = 'unordered'\r
- aggregation = 'none' targetScope = 'instance' changeability = 'changeable'>\r
- <UML:AssociationEnd.multiplicity>\r
- <UML:Multiplicity xmi.id = '-64--88-1-101-3dc093e3:1157f1866b2:-8000:0000000000000965'>\r
- <UML:Multiplicity.range>\r
- <UML:MultiplicityRange xmi.id = '-64--88-1-101-3dc093e3:1157f1866b2:-8000:0000000000000964'\r
- lower = '1' upper = '1'/>\r
- </UML:Multiplicity.range>\r
- </UML:Multiplicity>\r
- </UML:AssociationEnd.multiplicity>\r
- <UML:AssociationEnd.participant>\r
- <UML:Class xmi.idref = '-64--88-0-11-7e9e46a8:113ee067f97:-8000:00000000000007CD'/>\r
- </UML:AssociationEnd.participant>\r
- </UML:AssociationEnd>\r
- <UML:AssociationEnd xmi.id = '-64--88-0-11-7e9e46a8:113ee067f97:-8000:00000000000007F4'\r
- name = 'processStatus' visibility = 'public' isSpecification = 'false' isNavigable = 'true'\r
- ordering = 'unordered' aggregation = 'none' targetScope = 'instance' changeability = 'changeable'>\r
- <UML:AssociationEnd.multiplicity>\r
- <UML:Multiplicity xmi.id = '-64--88-0-11-7e9e46a8:113ee067f97:-8000:00000000000007F5'>\r
- <UML:Multiplicity.range>\r
- <UML:MultiplicityRange xmi.id = '-64--88-0-11-7e9e46a8:113ee067f97:-8000:00000000000007F6'\r
- lower = '1' upper = '1'/>\r
- </UML:Multiplicity.range>\r
- </UML:Multiplicity>\r
- </UML:AssociationEnd.multiplicity>\r
- <UML:AssociationEnd.participant>\r
- <UML:Class xmi.idref = '-64--88-0-11-7e9e46a8:113ee067f97:-8000:00000000000007EE'/>\r
- </UML:AssociationEnd.participant>\r
- </UML:AssociationEnd>\r
- </UML:Association.connection>\r
- </UML:Association>\r
- <UML:Association xmi.id = '-64--88-0-11-7e9e46a8:113ee067f97:-8000:00000000000007F9'\r
- name = '' isSpecification = 'false' isRoot = 'false' isLeaf = 'false' isAbstract = 'false'>\r
- <UML:Association.connection>\r
- <UML:AssociationEnd xmi.id = '-64--88-0-11-7e9e46a8:113ee067f97:-8000:00000000000007FA'\r
- visibility = 'public' isSpecification = 'false' isNavigable = 'false' ordering = 'unordered'\r
- aggregation = 'none' targetScope = 'instance' changeability = 'changeable'>\r
- <UML:AssociationEnd.multiplicity>\r
- <UML:Multiplicity xmi.id = '-64--88-0-11-7e9e46a8:113ee067f97:-8000:00000000000007FB'>\r
- <UML:Multiplicity.range>\r
- <UML:MultiplicityRange xmi.id = '-64--88-0-11-7e9e46a8:113ee067f97:-8000:00000000000007FC'\r
- lower = '1' upper = '1'/>\r
- </UML:Multiplicity.range>\r
- </UML:Multiplicity>\r
- </UML:AssociationEnd.multiplicity>\r
- <UML:AssociationEnd.participant>\r
- <UML:Class xmi.idref = '-64--88-0-11-7e9e46a8:113ee067f97:-8000:00000000000007CF'/>\r
- </UML:AssociationEnd.participant>\r
- </UML:AssociationEnd>\r
- <UML:AssociationEnd xmi.id = '-64--88-0-11-7e9e46a8:113ee067f97:-8000:00000000000007FD'\r
- name = 'processStatus' visibility = 'public' isSpecification = 'false' isNavigable = 'true'\r
- ordering = 'unordered' aggregation = 'none' targetScope = 'instance' changeability = 'changeable'>\r
- <UML:AssociationEnd.multiplicity>\r
- <UML:Multiplicity xmi.id = '-64--88-0-11-7e9e46a8:113ee067f97:-8000:00000000000007FE'>\r
- <UML:Multiplicity.range>\r
- <UML:MultiplicityRange xmi.id = '-64--88-0-11-7e9e46a8:113ee067f97:-8000:00000000000007FF'\r
- lower = '1' upper = '1'/>\r
- </UML:Multiplicity.range>\r
- </UML:Multiplicity>\r
- </UML:AssociationEnd.multiplicity>\r
- <UML:AssociationEnd.participant>\r
- <UML:Class xmi.idref = '-64--88-0-11-7e9e46a8:113ee067f97:-8000:00000000000007EE'/>\r
- </UML:AssociationEnd.participant>\r
- </UML:AssociationEnd>\r
- </UML:Association.connection>\r
- </UML:Association>\r
- <UML:Association xmi.id = '-64--88-0-11-7e9e46a8:113ee067f97:-8000:000000000000083A'\r
- name = '' isSpecification = 'false' isRoot = 'false' isLeaf = 'false' isAbstract = 'false'>\r
- <UML:Association.connection>\r
- <UML:AssociationEnd xmi.id = '-64--88-0-11-7e9e46a8:113ee067f97:-8000:000000000000083B'\r
- visibility = 'public' isSpecification = 'false' isNavigable = 'false' ordering = 'unordered'\r
- aggregation = 'none' targetScope = 'instance' changeability = 'changeable'>\r
- <UML:AssociationEnd.multiplicity>\r
- <UML:Multiplicity xmi.id = '-64--88-0-11-7e9e46a8:113ee067f97:-8000:000000000000083C'>\r
- <UML:Multiplicity.range>\r
- <UML:MultiplicityRange xmi.id = '-64--88-0-11-7e9e46a8:113ee067f97:-8000:000000000000083D'\r
- lower = '1' upper = '1'/>\r
- </UML:Multiplicity.range>\r
- </UML:Multiplicity>\r
- </UML:AssociationEnd.multiplicity>\r
- <UML:AssociationEnd.participant>\r
- <UML:Class xmi.idref = '-64--88-0-11-7e9e46a8:113ee067f97:-8000:00000000000007CF'/>\r
- </UML:AssociationEnd.participant>\r
- </UML:AssociationEnd>\r
- <UML:AssociationEnd xmi.id = '-64--88-0-11-7e9e46a8:113ee067f97:-8000:000000000000083E'\r
- visibility = 'public' isSpecification = 'false' isNavigable = 'true' ordering = 'unordered'\r
- aggregation = 'none' targetScope = 'instance' changeability = 'changeable'>\r
- <UML:AssociationEnd.multiplicity>\r
- <UML:Multiplicity xmi.id = '-64--88-0-11-7e9e46a8:113ee067f97:-8000:000000000000083F'>\r
- <UML:Multiplicity.range>\r
- <UML:MultiplicityRange xmi.id = '-64--88-0-11-7e9e46a8:113ee067f97:-8000:0000000000000840'\r
- lower = '1' upper = '1'/>\r
- </UML:Multiplicity.range>\r
- </UML:Multiplicity>\r
- </UML:AssociationEnd.multiplicity>\r
- <UML:AssociationEnd.participant>\r
- <UML:Class xmi.idref = '-64--88-0-11-7e9e46a8:113ee067f97:-8000:0000000000000817'/>\r
- </UML:AssociationEnd.participant>\r
- </UML:AssociationEnd>\r
- </UML:Association.connection>\r
- </UML:Association>\r
- <UML:Association xmi.id = '-64--88-0-11-7e9e46a8:113ee067f97:-8000:0000000000000841'\r
- name = '' isSpecification = 'false' isRoot = 'false' isLeaf = 'false' isAbstract = 'false'>\r
- <UML:Association.connection>\r
- <UML:AssociationEnd xmi.id = '-64--88-0-11-7e9e46a8:113ee067f97:-8000:0000000000000842'\r
- visibility = 'public' isSpecification = 'false' isNavigable = 'false' ordering = 'unordered'\r
- aggregation = 'composite' targetScope = 'instance' changeability = 'changeable'>\r
- <UML:AssociationEnd.multiplicity>\r
- <UML:Multiplicity xmi.id = '-64--88-0-11-7e9e46a8:113ee067f97:-8000:0000000000000843'>\r
- <UML:Multiplicity.range>\r
- <UML:MultiplicityRange xmi.id = '-64--88-0-11-7e9e46a8:113ee067f97:-8000:0000000000000844'\r
- lower = '1' upper = '1'/>\r
- </UML:Multiplicity.range>\r
- </UML:Multiplicity>\r
- </UML:AssociationEnd.multiplicity>\r
- <UML:AssociationEnd.participant>\r
- <UML:Class xmi.idref = '-64--88-0-11-7e9e46a8:113ee067f97:-8000:00000000000007CF'/>\r
- </UML:AssociationEnd.participant>\r
- </UML:AssociationEnd>\r
- <UML:AssociationEnd xmi.id = '-64--88-0-11-7e9e46a8:113ee067f97:-8000:0000000000000845'\r
- name = 'log' visibility = 'public' isSpecification = 'false' isNavigable = 'true'\r
- ordering = 'unordered' aggregation = 'none' targetScope = 'instance' changeability = 'changeable'>\r
- <UML:AssociationEnd.multiplicity>\r
- <UML:Multiplicity xmi.id = '-64--88-0-11-7e9e46a8:113ee067f97:-8000:0000000000000846'>\r
- <UML:Multiplicity.range>\r
- <UML:MultiplicityRange xmi.id = '-64--88-0-11-7e9e46a8:113ee067f97:-8000:0000000000000847'\r
- lower = '1' upper = '1'/>\r
- </UML:Multiplicity.range>\r
- </UML:Multiplicity>\r
- </UML:AssociationEnd.multiplicity>\r
- <UML:AssociationEnd.participant>\r
- <UML:Class xmi.idref = '-64--88-0-11-7e9e46a8:113ee067f97:-8000:0000000000000817'/>\r
- </UML:AssociationEnd.participant>\r
- </UML:AssociationEnd>\r
- </UML:Association.connection>\r
- </UML:Association>\r
- <UML:Association xmi.id = '-64--88-0-11-7e9e46a8:113ee067f97:-8000:000000000000084C'\r
- name = '' isSpecification = 'false' isRoot = 'false' isLeaf = 'false' isAbstract = 'false'>\r
- <UML:Association.connection>\r
- <UML:AssociationEnd xmi.id = '-64--88-0-11-7e9e46a8:113ee067f97:-8000:000000000000084D'\r
- visibility = 'public' isSpecification = 'false' isNavigable = 'false' ordering = 'unordered'\r
- aggregation = 'none' targetScope = 'instance' changeability = 'changeable'>\r
- <UML:AssociationEnd.multiplicity>\r
- <UML:Multiplicity xmi.id = '-64--88-0-11-7e9e46a8:113ee067f97:-8000:000000000000084E'>\r
- <UML:Multiplicity.range>\r
- <UML:MultiplicityRange xmi.id = '-64--88-0-11-7e9e46a8:113ee067f97:-8000:000000000000084F'\r
- lower = '1' upper = '1'/>\r
- </UML:Multiplicity.range>\r
- </UML:Multiplicity>\r
- </UML:AssociationEnd.multiplicity>\r
- <UML:AssociationEnd.participant>\r
- <UML:Class xmi.idref = '-64--88-0-11-7e9e46a8:113ee067f97:-8000:00000000000007CF'/>\r
- </UML:AssociationEnd.participant>\r
- </UML:AssociationEnd>\r
- <UML:AssociationEnd xmi.id = '-64--88-0-11-7e9e46a8:113ee067f97:-8000:0000000000000850'\r
- name = 'log' visibility = 'public' isSpecification = 'false' isNavigable = 'true'\r
- ordering = 'unordered' aggregation = 'none' targetScope = 'instance' changeability = 'changeable'>\r
- <UML:AssociationEnd.multiplicity>\r
- <UML:Multiplicity xmi.id = '-64--88-0-11-7e9e46a8:113ee067f97:-8000:0000000000000851'>\r
- <UML:Multiplicity.range>\r
- <UML:MultiplicityRange xmi.id = '-64--88-0-11-7e9e46a8:113ee067f97:-8000:0000000000000852'\r
- lower = '1' upper = '1'/>\r
- </UML:Multiplicity.range>\r
- </UML:Multiplicity>\r
- </UML:AssociationEnd.multiplicity>\r
- <UML:AssociationEnd.participant>\r
- <UML:Class xmi.idref = '-64--88-0-11-7e9e46a8:113ee067f97:-8000:0000000000000817'/>\r
- </UML:AssociationEnd.participant>\r
- </UML:AssociationEnd>\r
- </UML:Association.connection>\r
- </UML:Association>\r
- <UML:Class xmi.id = '-64--88-1-101--3f3f1022:1157622ef7f:-8000:00000000000008A8'\r
- name = 'Distribution' visibility = 'public' isSpecification = 'false' isRoot = 'false'\r
- isLeaf = 'false' isAbstract = 'false' isActive = 'false'/>\r
- <UML:Class xmi.id = '-64--88-1-101--3f3f1022:1157622ef7f:-8000:00000000000008AA'\r
- name = 'DeployedSystem' visibility = 'public' isSpecification = 'false'\r
- isRoot = 'false' isLeaf = 'false' isAbstract = 'false' isActive = 'false'/>\r
- <UML:Class xmi.id = '-64--88-1-101--3f3f1022:1157622ef7f:-8000:00000000000008AC'\r
- name = 'DistributionId' visibility = 'public' isSpecification = 'false'\r
- isRoot = 'false' isLeaf = 'false' isAbstract = 'false' isActive = 'false'/>\r
- <UML:Class xmi.id = '-64--88-1-101--3f3f1022:1157622ef7f:-8000:00000000000008AE'\r
- name = 'DeployedSystemId' visibility = 'public' isSpecification = 'false'\r
- isRoot = 'false' isLeaf = 'false' isAbstract = 'false' isActive = 'false'/>\r
- <UML:Association xmi.id = '-64--88-1-101--3f3f1022:1157622ef7f:-8000:00000000000008B0'\r
- name = '' isSpecification = 'false' isRoot = 'false' isLeaf = 'false' isAbstract = 'false'>\r
- <UML:Association.connection>\r
- <UML:AssociationEnd xmi.id = '-64--88-1-101--3f3f1022:1157622ef7f:-8000:00000000000008B1'\r
- name = '' visibility = 'public' isSpecification = 'false' isNavigable = 'false'\r
- ordering = 'unordered' aggregation = 'none' targetScope = 'instance' changeability = 'changeable'>\r
- <UML:AssociationEnd.multiplicity>\r
- <UML:Multiplicity xmi.id = '-64--88-1-101--4a0353a6:1158fc10f03:-8000:0000000000000C32'>\r
- <UML:Multiplicity.range>\r
- <UML:MultiplicityRange xmi.id = '-64--88-1-101--4a0353a6:1158fc10f03:-8000:0000000000000C31'\r
- lower = '1' upper = '1'/>\r
- </UML:Multiplicity.range>\r
- </UML:Multiplicity>\r
- </UML:AssociationEnd.multiplicity>\r
- <UML:AssociationEnd.participant>\r
- <UML:Class xmi.idref = '-64--88-0-11-7e9e46a8:113ee067f97:-8000:000000000000074E'/>\r
- </UML:AssociationEnd.participant>\r
- </UML:AssociationEnd>\r
- <UML:AssociationEnd xmi.id = '-64--88-1-101--3f3f1022:1157622ef7f:-8000:00000000000008B4'\r
- name = 'distribution' visibility = 'public' isSpecification = 'false' isNavigable = 'true'\r
- ordering = 'unordered' aggregation = 'none' targetScope = 'instance' changeability = 'changeable'>\r
- <UML:AssociationEnd.multiplicity>\r
- <UML:Multiplicity xmi.id = '-64--88-1-101--4a0353a6:1158fc10f03:-8000:0000000000000C34'>\r
- <UML:Multiplicity.range>\r
- <UML:MultiplicityRange xmi.id = '-64--88-1-101--4a0353a6:1158fc10f03:-8000:0000000000000C33'\r
- lower = '1' upper = '1'/>\r
- </UML:Multiplicity.range>\r
- </UML:Multiplicity>\r
- </UML:AssociationEnd.multiplicity>\r
- <UML:AssociationEnd.participant>\r
- <UML:Class xmi.idref = '-64--88-1-101--3f3f1022:1157622ef7f:-8000:00000000000008A8'/>\r
- </UML:AssociationEnd.participant>\r
- </UML:AssociationEnd>\r
- </UML:Association.connection>\r
- </UML:Association>\r
- <UML:Association xmi.id = '-64--88-1-101--3f3f1022:1157622ef7f:-8000:00000000000008BB'\r
- name = '' isSpecification = 'false' isRoot = 'false' isLeaf = 'false' isAbstract = 'false'>\r
- <UML:Association.connection>\r
- <UML:AssociationEnd xmi.id = '-64--88-1-101--3f3f1022:1157622ef7f:-8000:00000000000008BC'\r
- visibility = 'public' isSpecification = 'false' isNavigable = 'false' ordering = 'unordered'\r
- aggregation = 'none' targetScope = 'instance' changeability = 'changeable'>\r
- <UML:AssociationEnd.multiplicity>\r
- <UML:Multiplicity xmi.id = '-64--88-1-101--3f3f1022:1157622ef7f:-8000:00000000000008BD'>\r
- <UML:Multiplicity.range>\r
- <UML:MultiplicityRange xmi.id = '-64--88-1-101--3f3f1022:1157622ef7f:-8000:00000000000008BE'\r
- lower = '1' upper = '1'/>\r
- </UML:Multiplicity.range>\r
- </UML:Multiplicity>\r
- </UML:AssociationEnd.multiplicity>\r
- <UML:AssociationEnd.participant>\r
- <UML:Class xmi.idref = '-64--88-0-11-7e9e46a8:113ee067f97:-8000:000000000000076F'/>\r
- </UML:AssociationEnd.participant>\r
- </UML:AssociationEnd>\r
- <UML:AssociationEnd xmi.id = '-64--88-1-101--3f3f1022:1157622ef7f:-8000:00000000000008BF'\r
- name = 'deployedSystem' visibility = 'public' isSpecification = 'false'\r
- isNavigable = 'true' ordering = 'unordered' aggregation = 'none' targetScope = 'instance'\r
- changeability = 'changeable'>\r
- <UML:AssociationEnd.multiplicity>\r
- <UML:Multiplicity xmi.id = '-64--88-1-101--3f3f1022:1157622ef7f:-8000:00000000000008C5'>\r
- <UML:Multiplicity.range>\r
- <UML:MultiplicityRange xmi.id = '-64--88-1-101--3f3f1022:1157622ef7f:-8000:00000000000008C4'\r
- lower = '1' upper = '1'/>\r
- </UML:Multiplicity.range>\r
- </UML:Multiplicity>\r
- </UML:AssociationEnd.multiplicity>\r
- <UML:AssociationEnd.participant>\r
- <UML:Class xmi.idref = '-64--88-1-101--3f3f1022:1157622ef7f:-8000:00000000000008AA'/>\r
- </UML:AssociationEnd.participant>\r
- </UML:AssociationEnd>\r
- </UML:Association.connection>\r
- </UML:Association>\r
- <UML:Association xmi.id = '-64--88-1-101--3f3f1022:1157622ef7f:-8000:00000000000008C6'\r
- name = '' isSpecification = 'false' isRoot = 'false' isLeaf = 'false' isAbstract = 'false'>\r
- <UML:Association.connection>\r
- <UML:AssociationEnd xmi.id = '-64--88-1-101--3f3f1022:1157622ef7f:-8000:00000000000008C7'\r
- visibility = 'public' isSpecification = 'false' isNavigable = 'false' ordering = 'unordered'\r
- aggregation = 'none' targetScope = 'instance' changeability = 'changeable'>\r
- <UML:AssociationEnd.multiplicity>\r
- <UML:Multiplicity xmi.id = '-64--88-1-101--3f3f1022:1157622ef7f:-8000:00000000000008C8'>\r
- <UML:Multiplicity.range>\r
- <UML:MultiplicityRange xmi.id = '-64--88-1-101--3f3f1022:1157622ef7f:-8000:00000000000008C9'\r
- lower = '1' upper = '1'/>\r
- </UML:Multiplicity.range>\r
- </UML:Multiplicity>\r
- </UML:AssociationEnd.multiplicity>\r
- <UML:AssociationEnd.participant>\r
- <UML:Class xmi.idref = '-64--88-1-101--3f3f1022:1157622ef7f:-8000:00000000000008A8'/>\r
- </UML:AssociationEnd.participant>\r
- </UML:AssociationEnd>\r
- <UML:AssociationEnd xmi.id = '-64--88-1-101--3f3f1022:1157622ef7f:-8000:00000000000008CA'\r
- name = 'distributionId' visibility = 'public' isSpecification = 'false'\r
- isNavigable = 'true' ordering = 'unordered' aggregation = 'none' targetScope = 'instance'\r
- changeability = 'changeable'>\r
- <UML:AssociationEnd.multiplicity>\r
- <UML:Multiplicity xmi.id = '-64--88-1-101--3f3f1022:1157622ef7f:-8000:00000000000008CB'>\r
- <UML:Multiplicity.range>\r
- <UML:MultiplicityRange xmi.id = '-64--88-1-101--3f3f1022:1157622ef7f:-8000:00000000000008CC'\r
- lower = '1' upper = '1'/>\r
- </UML:Multiplicity.range>\r
- </UML:Multiplicity>\r
- </UML:AssociationEnd.multiplicity>\r
- <UML:AssociationEnd.participant>\r
- <UML:Class xmi.idref = '-64--88-1-101--3f3f1022:1157622ef7f:-8000:00000000000008AC'/>\r
- </UML:AssociationEnd.participant>\r
- </UML:AssociationEnd>\r
- </UML:Association.connection>\r
- </UML:Association>\r
- <UML:Association xmi.id = '-64--88-1-101--3f3f1022:1157622ef7f:-8000:00000000000008CD'\r
- name = '' isSpecification = 'false' isRoot = 'false' isLeaf = 'false' isAbstract = 'false'>\r
- <UML:Association.connection>\r
- <UML:AssociationEnd xmi.id = '-64--88-1-101--3f3f1022:1157622ef7f:-8000:00000000000008CE'\r
- visibility = 'public' isSpecification = 'false' isNavigable = 'false' ordering = 'unordered'\r
- aggregation = 'none' targetScope = 'instance' changeability = 'changeable'>\r
- <UML:AssociationEnd.multiplicity>\r
- <UML:Multiplicity xmi.id = '-64--88-1-101--3f3f1022:1157622ef7f:-8000:00000000000008CF'>\r
- <UML:Multiplicity.range>\r
- <UML:MultiplicityRange xmi.id = '-64--88-1-101--3f3f1022:1157622ef7f:-8000:00000000000008D0'\r
- lower = '1' upper = '1'/>\r
- </UML:Multiplicity.range>\r
- </UML:Multiplicity>\r
- </UML:AssociationEnd.multiplicity>\r
- <UML:AssociationEnd.participant>\r
- <UML:Class xmi.idref = '-64--88-1-101--3f3f1022:1157622ef7f:-8000:00000000000008AA'/>\r
- </UML:AssociationEnd.participant>\r
- </UML:AssociationEnd>\r
- <UML:AssociationEnd xmi.id = '-64--88-1-101--3f3f1022:1157622ef7f:-8000:00000000000008D1'\r
- name = 'deployedSystemId' visibility = 'public' isSpecification = 'false'\r
- isNavigable = 'true' ordering = 'unordered' aggregation = 'none' targetScope = 'instance'\r
- changeability = 'changeable'>\r
- <UML:AssociationEnd.multiplicity>\r
- <UML:Multiplicity xmi.id = '-64--88-1-101--3f3f1022:1157622ef7f:-8000:00000000000008D2'>\r
- <UML:Multiplicity.range>\r
- <UML:MultiplicityRange xmi.id = '-64--88-1-101--3f3f1022:1157622ef7f:-8000:00000000000008D3'\r
- lower = '1' upper = '1'/>\r
- </UML:Multiplicity.range>\r
- </UML:Multiplicity>\r
- </UML:AssociationEnd.multiplicity>\r
- <UML:AssociationEnd.participant>\r
- <UML:Class xmi.idref = '-64--88-1-101--3f3f1022:1157622ef7f:-8000:00000000000008AE'/>\r
- </UML:AssociationEnd.participant>\r
- </UML:AssociationEnd>\r
- </UML:Association.connection>\r
- </UML:Association>\r
- <UML:Class xmi.id = '-64--88-1-101-3dc093e3:1157f1866b2:-8000:00000000000008CE'\r
- name = 'EnterpriseSystemDeploymentData' visibility = 'public' isSpecification = 'false'\r
- isRoot = 'false' isLeaf = 'false' isAbstract = 'false' isActive = 'false'>\r
- <UML:GeneralizableElement.generalization>\r
- <UML:Generalization xmi.idref = '-64--88-1-101-3dc093e3:1157f1866b2:-8000:00000000000008D2'/>\r
- </UML:GeneralizableElement.generalization>\r
- </UML:Class>\r
- <UML:Class xmi.id = '-64--88-1-101-3dc093e3:1157f1866b2:-8000:00000000000008D0'\r
- name = 'DatabaseDump' visibility = 'public' isSpecification = 'false' isRoot = 'false'\r
- isLeaf = 'false' isAbstract = 'false' isActive = 'false'>\r
- <UML:GeneralizableElement.generalization>\r
- <UML:Generalization xmi.idref = '-64--88-1-101--4a0353a6:1158fc10f03:-8000:000000000000095E'/>\r
- </UML:GeneralizableElement.generalization>\r
- </UML:Class>\r
- <UML:Class xmi.id = '-64--88-1-101-3dc093e3:1157f1866b2:-8000:00000000000008D3'\r
- name = 'EnterpriseDeploymentData' visibility = 'public' isSpecification = 'false'\r
- isRoot = 'false' isLeaf = 'false' isAbstract = 'false' isActive = 'false'>\r
- <UML:GeneralizableElement.generalization>\r
- <UML:Generalization xmi.idref = '-64--88-1-101--4a0353a6:1158fc10f03:-8000:0000000000000960'/>\r
- </UML:GeneralizableElement.generalization>\r
- </UML:Class>\r
- <UML:Association xmi.id = '-64--88-1-101-3dc093e3:1157f1866b2:-8000:00000000000008D6'\r
- name = '' isSpecification = 'false' isRoot = 'false' isLeaf = 'false' isAbstract = 'false'>\r
- <UML:Association.connection>\r
- <UML:AssociationEnd xmi.id = '-64--88-1-101-3dc093e3:1157f1866b2:-8000:00000000000008D7'\r
- name = '' visibility = 'public' isSpecification = 'false' isNavigable = 'false'\r
- ordering = 'unordered' aggregation = 'none' targetScope = 'instance' changeability = 'changeable'>\r
- <UML:AssociationEnd.multiplicity>\r
- <UML:Multiplicity xmi.id = '-64--88-1-101-3dc093e3:1157f1866b2:-8000:00000000000008F7'>\r
- <UML:Multiplicity.range>\r
- <UML:MultiplicityRange xmi.id = '-64--88-1-101-3dc093e3:1157f1866b2:-8000:00000000000008F6'\r
- lower = '0' upper = '-1'/>\r
- </UML:Multiplicity.range>\r
- </UML:Multiplicity>\r
- </UML:AssociationEnd.multiplicity>\r
- <UML:AssociationEnd.participant>\r
- <UML:Class xmi.idref = '-64--88-1-101-3dc093e3:1157f1866b2:-8000:00000000000008D3'/>\r
- </UML:AssociationEnd.participant>\r
- </UML:AssociationEnd>\r
- <UML:AssociationEnd xmi.id = '-64--88-1-101-3dc093e3:1157f1866b2:-8000:00000000000008DA'\r
- name = 'databases' visibility = 'public' isSpecification = 'false' isNavigable = 'true'\r
- ordering = 'unordered' aggregation = 'none' targetScope = 'instance' changeability = 'changeable'>\r
- <UML:AssociationEnd.multiplicity>\r
- <UML:Multiplicity xmi.id = '-64--88-1-101-3dc093e3:1157f1866b2:-8000:00000000000008F5'>\r
- <UML:Multiplicity.range>\r
- <UML:MultiplicityRange xmi.id = '-64--88-1-101-3dc093e3:1157f1866b2:-8000:00000000000008F4'\r
- lower = '0' upper = '-1'/>\r
- </UML:Multiplicity.range>\r
- </UML:Multiplicity>\r
- </UML:AssociationEnd.multiplicity>\r
- <UML:AssociationEnd.participant>\r
- <UML:Class xmi.idref = '-64--88-1-101-3dc093e3:1157f1866b2:-8000:00000000000008D0'/>\r
- </UML:AssociationEnd.participant>\r
- </UML:AssociationEnd>\r
- </UML:Association.connection>\r
- </UML:Association>\r
- <UML:Class xmi.id = '-64--88-1-101-3dc093e3:1157f1866b2:-8000:00000000000008E5'\r
- name = 'VersionedFileSet' visibility = 'public' isSpecification = 'false'\r
- isRoot = 'false' isLeaf = 'false' isAbstract = 'false' isActive = 'false'/>\r
- <UML:Association xmi.id = '-64--88-1-101-3dc093e3:1157f1866b2:-8000:00000000000008E7'\r
- name = '' isSpecification = 'false' isRoot = 'false' isLeaf = 'false' isAbstract = 'false'>\r
- <UML:Association.connection>\r
- <UML:AssociationEnd xmi.id = '-64--88-1-101-3dc093e3:1157f1866b2:-8000:00000000000008E8'\r
- visibility = 'public' isSpecification = 'false' isNavigable = 'false' ordering = 'unordered'\r
- aggregation = 'none' targetScope = 'instance' changeability = 'changeable'>\r
- <UML:AssociationEnd.multiplicity>\r
- <UML:Multiplicity xmi.id = '-64--88-1-101-3dc093e3:1157f1866b2:-8000:00000000000008EF'>\r
- <UML:Multiplicity.range>\r
- <UML:MultiplicityRange xmi.id = '-64--88-1-101-3dc093e3:1157f1866b2:-8000:00000000000008EE'\r
- lower = '0' upper = '-1'/>\r
- </UML:Multiplicity.range>\r
- </UML:Multiplicity>\r
- </UML:AssociationEnd.multiplicity>\r
- <UML:AssociationEnd.participant>\r
- <UML:Class xmi.idref = '-64--88-0-11-7e9e46a8:113ee067f97:-8000:000000000000074E'/>\r
- </UML:AssociationEnd.participant>\r
- </UML:AssociationEnd>\r
- <UML:AssociationEnd xmi.id = '-64--88-1-101-3dc093e3:1157f1866b2:-8000:00000000000008EB'\r
- name = 'codeFileSet' visibility = 'public' isSpecification = 'false' isNavigable = 'true'\r
- ordering = 'unordered' aggregation = 'none' targetScope = 'instance' changeability = 'changeable'>\r
- <UML:AssociationEnd.multiplicity>\r
- <UML:Multiplicity xmi.id = '-64--88-1-101-3dc093e3:1157f1866b2:-8000:00000000000008EC'>\r
- <UML:Multiplicity.range>\r
- <UML:MultiplicityRange xmi.id = '-64--88-1-101-3dc093e3:1157f1866b2:-8000:00000000000008ED'\r
- lower = '1' upper = '1'/>\r
- </UML:Multiplicity.range>\r
- </UML:Multiplicity>\r
- </UML:AssociationEnd.multiplicity>\r
- <UML:AssociationEnd.participant>\r
- <UML:Class xmi.idref = '-64--88-1-101--4a0353a6:1158fc10f03:-8000:0000000000000C44'/>\r
- </UML:AssociationEnd.participant>\r
- </UML:AssociationEnd>\r
- </UML:Association.connection>\r
- </UML:Association>\r
- <UML:Class xmi.id = '-64--88-1-101-3dc093e3:1157f1866b2:-8000:00000000000008F8'\r
- name = 'ConfigurationFileSet' visibility = 'public' isSpecification = 'false'\r
- isRoot = 'false' isLeaf = 'false' isAbstract = 'false' isActive = 'false'>\r
- <UML:GeneralizableElement.generalization>\r
- <UML:Generalization xmi.idref = '-64--88-1-101--4a0353a6:1158fc10f03:-8000:000000000000095F'/>\r
- </UML:GeneralizableElement.generalization>\r
- </UML:Class>\r
- <UML:Association xmi.id = '-64--88-1-101-3dc093e3:1157f1866b2:-8000:00000000000008FB'\r
- name = '' isSpecification = 'false' isRoot = 'false' isLeaf = 'false' isAbstract = 'false'>\r
- <UML:Association.connection>\r
- <UML:AssociationEnd xmi.id = '-64--88-1-101-3dc093e3:1157f1866b2:-8000:00000000000008FC'\r
- visibility = 'public' isSpecification = 'false' isNavigable = 'false' ordering = 'unordered'\r
- aggregation = 'none' targetScope = 'instance' changeability = 'changeable'>\r
- <UML:AssociationEnd.multiplicity>\r
- <UML:Multiplicity xmi.id = '-64--88-1-101-3dc093e3:1157f1866b2:-8000:0000000000000903'>\r
- <UML:Multiplicity.range>\r
- <UML:MultiplicityRange xmi.id = '-64--88-1-101-3dc093e3:1157f1866b2:-8000:0000000000000902'\r
- lower = '0' upper = '-1'/>\r
- </UML:Multiplicity.range>\r
- </UML:Multiplicity>\r
- </UML:AssociationEnd.multiplicity>\r
- <UML:AssociationEnd.participant>\r
- <UML:Class xmi.idref = '-64--88-1-101-3dc093e3:1157f1866b2:-8000:00000000000008D3'/>\r
- </UML:AssociationEnd.participant>\r
- </UML:AssociationEnd>\r
- <UML:AssociationEnd xmi.id = '-64--88-1-101-3dc093e3:1157f1866b2:-8000:00000000000008FF'\r
- name = 'configurationFileSet' visibility = 'public' isSpecification = 'false'\r
- isNavigable = 'true' ordering = 'unordered' aggregation = 'none' targetScope = 'instance'\r
- changeability = 'changeable'>\r
- <UML:AssociationEnd.multiplicity>\r
- <UML:Multiplicity xmi.id = '-64--88-1-101-3dc093e3:1157f1866b2:-8000:0000000000000905'>\r
- <UML:Multiplicity.range>\r
- <UML:MultiplicityRange xmi.id = '-64--88-1-101-3dc093e3:1157f1866b2:-8000:0000000000000904'\r
- lower = '0' upper = '1'/>\r
- </UML:Multiplicity.range>\r
- </UML:Multiplicity>\r
- </UML:AssociationEnd.multiplicity>\r
- <UML:AssociationEnd.participant>\r
- <UML:Class xmi.idref = '-64--88-1-101-3dc093e3:1157f1866b2:-8000:00000000000008F8'/>\r
- </UML:AssociationEnd.participant>\r
- </UML:AssociationEnd>\r
- </UML:Association.connection>\r
- </UML:Association>\r
- <UML:Class xmi.id = '-64--88-1-101-3dc093e3:1157f1866b2:-8000:0000000000000906'\r
- name = 'VersionedHeavyFile' visibility = 'public' isSpecification = 'false'\r
- isRoot = 'false' isLeaf = 'false' isAbstract = 'false' isActive = 'false'>\r
- <UML:Classifier.feature>\r
- <UML:Attribute xmi.id = '-64--88-1-101-3dc093e3:1157f1866b2:-8000:0000000000000912'\r
- name = 'id' visibility = 'public' isSpecification = 'false' ownerScope = 'instance'\r
- changeability = 'changeable' targetScope = 'instance'>\r
- <UML:StructuralFeature.multiplicity>\r
- <UML:Multiplicity xmi.id = '-64--88-1-101-3dc093e3:1157f1866b2:-8000:0000000000000924'>\r
- <UML:Multiplicity.range>\r
- <UML:MultiplicityRange xmi.id = '-64--88-1-101-3dc093e3:1157f1866b2:-8000:0000000000000923'\r
- lower = '1' upper = '1'/>\r
- </UML:Multiplicity.range>\r
- </UML:Multiplicity>\r
- </UML:StructuralFeature.multiplicity>\r
- <UML:StructuralFeature.type>\r
- <UML:DataType xmi.idref = '-64--88-1-101-3dc093e3:1157f1866b2:-8000:0000000000000925'/>\r
- </UML:StructuralFeature.type>\r
- </UML:Attribute>\r
- <UML:Attribute xmi.id = '-64--88-1-101-3dc093e3:1157f1866b2:-8000:000000000000091C'\r
- name = 'version' visibility = 'public' isSpecification = 'false' ownerScope = 'instance'\r
- changeability = 'changeable' targetScope = 'instance'>\r
- <UML:StructuralFeature.multiplicity>\r
- <UML:Multiplicity xmi.id = '-64--88-1-101-3dc093e3:1157f1866b2:-8000:0000000000000920'>\r
- <UML:Multiplicity.range>\r
- <UML:MultiplicityRange xmi.id = '-64--88-1-101-3dc093e3:1157f1866b2:-8000:000000000000091F'\r
- lower = '1' upper = '1'/>\r
- </UML:Multiplicity.range>\r
- </UML:Multiplicity>\r
- </UML:StructuralFeature.multiplicity>\r
- <UML:StructuralFeature.type>\r
- <UML:Class xmi.idref = '-64--88-0-11-7e9e46a8:113ee067f97:-8000:00000000000007DA'/>\r
- </UML:StructuralFeature.type>\r
- </UML:Attribute>\r
- </UML:Classifier.feature>\r
- </UML:Class>\r
- <UML:Class xmi.id = '-64--88-1-101-3dc093e3:1157f1866b2:-8000:0000000000000909'\r
- name = 'HeavyFilesRepository' visibility = 'public' isSpecification = 'false'\r
- isRoot = 'false' isLeaf = 'false' isAbstract = 'false' isActive = 'false'/>\r
- <UML:Association xmi.id = '-64--88-1-101-3dc093e3:1157f1866b2:-8000:000000000000090B'\r
- name = '' isSpecification = 'false' isRoot = 'false' isLeaf = 'false' isAbstract = 'false'>\r
- <UML:Association.connection>\r
- <UML:AssociationEnd xmi.id = '-64--88-1-101-3dc093e3:1157f1866b2:-8000:000000000000090C'\r
- visibility = 'public' isSpecification = 'false' isNavigable = 'false' ordering = 'unordered'\r
- aggregation = 'none' targetScope = 'instance' changeability = 'changeable'>\r
- <UML:AssociationEnd.multiplicity>\r
- <UML:Multiplicity xmi.id = '-64--88-1-101-3dc093e3:1157f1866b2:-8000:000000000000090D'>\r
- <UML:Multiplicity.range>\r
- <UML:MultiplicityRange xmi.id = '-64--88-1-101-3dc093e3:1157f1866b2:-8000:000000000000090E'\r
- lower = '1' upper = '1'/>\r
- </UML:Multiplicity.range>\r
- </UML:Multiplicity>\r
- </UML:AssociationEnd.multiplicity>\r
- <UML:AssociationEnd.participant>\r
- <UML:Class xmi.idref = '-64--88-1-101-3dc093e3:1157f1866b2:-8000:0000000000000909'/>\r
- </UML:AssociationEnd.participant>\r
- </UML:AssociationEnd>\r
- <UML:AssociationEnd xmi.id = '-64--88-1-101-3dc093e3:1157f1866b2:-8000:000000000000090F'\r
- name = 'files' visibility = 'public' isSpecification = 'false' isNavigable = 'true'\r
- ordering = 'unordered' aggregation = 'none' targetScope = 'instance' changeability = 'changeable'>\r
- <UML:AssociationEnd.multiplicity>\r
- <UML:Multiplicity xmi.id = '-64--88-1-101--4a0353a6:1158fc10f03:-8000:0000000000000C30'>\r
- <UML:Multiplicity.range>\r
- <UML:MultiplicityRange xmi.id = '-64--88-1-101--4a0353a6:1158fc10f03:-8000:0000000000000C2F'\r
- lower = '0' upper = '-1'/>\r
- </UML:Multiplicity.range>\r
- </UML:Multiplicity>\r
- </UML:AssociationEnd.multiplicity>\r
- <UML:AssociationEnd.participant>\r
- <UML:Class xmi.idref = '-64--88-1-101-3dc093e3:1157f1866b2:-8000:0000000000000906'/>\r
- </UML:AssociationEnd.participant>\r
- </UML:AssociationEnd>\r
- </UML:Association.connection>\r
- </UML:Association>\r
- <UML:Package xmi.id = '-64--88-1-101-3dc093e3:1157f1866b2:-8000:0000000000000919'\r
- name = 'java' isSpecification = 'false' isRoot = 'false' isLeaf = 'false'\r
- isAbstract = 'false'>\r
- <UML:Namespace.ownedElement>\r
- <UML:Package xmi.id = '-64--88-1-101-3dc093e3:1157f1866b2:-8000:000000000000091A'\r
- name = 'lang' isSpecification = 'false' isRoot = 'false' isLeaf = 'false'\r
- isAbstract = 'false'>\r
- <UML:Namespace.ownedElement>\r
- <UML:Class xmi.id = '-64--88-1-101-3dc093e3:1157f1866b2:-8000:000000000000091B'\r
- name = 'Long' isSpecification = 'false' isRoot = 'false' isLeaf = 'false'\r
- isAbstract = 'false' isActive = 'false'/>\r
- </UML:Namespace.ownedElement>\r
- </UML:Package>\r
- </UML:Namespace.ownedElement>\r
- </UML:Package>\r
- <UML:DataType xmi.id = '-64--88-1-101-3dc093e3:1157f1866b2:-8000:0000000000000925'\r
- name = 'long' isSpecification = 'false' isRoot = 'false' isLeaf = 'false'\r
- isAbstract = 'false'/>\r
- <UML:Class xmi.id = '-64--88-1-101-3dc093e3:1157f1866b2:-8000:0000000000000926'\r
- name = 'TestData' visibility = 'public' isSpecification = 'false' isRoot = 'false'\r
- isLeaf = 'false' isAbstract = 'false' isActive = 'false'/>\r
- <UML:Association xmi.id = '-64--88-1-101-3dc093e3:1157f1866b2:-8000:0000000000000928'\r
- name = '' isSpecification = 'false' isRoot = 'false' isLeaf = 'false' isAbstract = 'false'>\r
- <UML:Association.connection>\r
- <UML:AssociationEnd xmi.id = '-64--88-1-101-3dc093e3:1157f1866b2:-8000:0000000000000929'\r
- visibility = 'public' isSpecification = 'false' isNavigable = 'false' ordering = 'unordered'\r
- aggregation = 'none' targetScope = 'instance' changeability = 'changeable'>\r
- <UML:AssociationEnd.multiplicity>\r
- <UML:Multiplicity xmi.id = '-64--88-1-101-3dc093e3:1157f1866b2:-8000:0000000000000930'>\r
- <UML:Multiplicity.range>\r
- <UML:MultiplicityRange xmi.id = '-64--88-1-101-3dc093e3:1157f1866b2:-8000:000000000000092F'\r
- lower = '0' upper = '-1'/>\r
- </UML:Multiplicity.range>\r
- </UML:Multiplicity>\r
- </UML:AssociationEnd.multiplicity>\r
- <UML:AssociationEnd.participant>\r
- <UML:Class xmi.idref = '-64--88-0-11-7e9e46a8:113ee067f97:-8000:000000000000077A'/>\r
- </UML:AssociationEnd.participant>\r
- </UML:AssociationEnd>\r
- <UML:AssociationEnd xmi.id = '-64--88-1-101-3dc093e3:1157f1866b2:-8000:000000000000092C'\r
- name = 'testData' visibility = 'public' isSpecification = 'false' isNavigable = 'true'\r
- ordering = 'unordered' aggregation = 'none' targetScope = 'instance' changeability = 'changeable'>\r
- <UML:AssociationEnd.multiplicity>\r
- <UML:Multiplicity xmi.id = '-64--88-1-101-3dc093e3:1157f1866b2:-8000:000000000000092D'>\r
- <UML:Multiplicity.range>\r
- <UML:MultiplicityRange xmi.id = '-64--88-1-101-3dc093e3:1157f1866b2:-8000:000000000000092E'\r
- lower = '1' upper = '1'/>\r
- </UML:Multiplicity.range>\r
- </UML:Multiplicity>\r
- </UML:AssociationEnd.multiplicity>\r
- <UML:AssociationEnd.participant>\r
- <UML:Class xmi.idref = '-64--88-1-101-3dc093e3:1157f1866b2:-8000:0000000000000926'/>\r
- </UML:AssociationEnd.participant>\r
- </UML:AssociationEnd>\r
- </UML:Association.connection>\r
- </UML:Association>\r
- <UML:Class xmi.id = '-64--88-1-101-3dc093e3:1157f1866b2:-8000:0000000000000931'\r
- name = 'TargetData' visibility = 'public' isSpecification = 'false' isRoot = 'false'\r
- isLeaf = 'false' isAbstract = 'false' isActive = 'false'/>\r
- <UML:Association xmi.id = '-64--88-1-101-3dc093e3:1157f1866b2:-8000:0000000000000933'\r
- name = '' isSpecification = 'false' isRoot = 'false' isLeaf = 'false' isAbstract = 'false'>\r
- <UML:Association.connection>\r
- <UML:AssociationEnd xmi.id = '-64--88-1-101-3dc093e3:1157f1866b2:-8000:0000000000000934'\r
- visibility = 'public' isSpecification = 'false' isNavigable = 'false' ordering = 'unordered'\r
- aggregation = 'none' targetScope = 'instance' changeability = 'changeable'>\r
- <UML:AssociationEnd.multiplicity>\r
- <UML:Multiplicity xmi.id = '-64--88-1-101-3dc093e3:1157f1866b2:-8000:000000000000093B'>\r
- <UML:Multiplicity.range>\r
- <UML:MultiplicityRange xmi.id = '-64--88-1-101-3dc093e3:1157f1866b2:-8000:000000000000093A'\r
- lower = '1' upper = '1'/>\r
- </UML:Multiplicity.range>\r
- </UML:Multiplicity>\r
- </UML:AssociationEnd.multiplicity>\r
- <UML:AssociationEnd.participant>\r
- <UML:Class xmi.idref = '-64--88-0-11-7e9e46a8:113ee067f97:-8000:000000000000076F'/>\r
- </UML:AssociationEnd.participant>\r
- </UML:AssociationEnd>\r
- <UML:AssociationEnd xmi.id = '-64--88-1-101-3dc093e3:1157f1866b2:-8000:0000000000000937'\r
- name = 'targetData' visibility = 'public' isSpecification = 'false' isNavigable = 'true'\r
- ordering = 'unordered' aggregation = 'none' targetScope = 'instance' changeability = 'changeable'>\r
- <UML:AssociationEnd.multiplicity>\r
- <UML:Multiplicity xmi.id = '-64--88-1-101-3dc093e3:1157f1866b2:-8000:0000000000000938'>\r
- <UML:Multiplicity.range>\r
- <UML:MultiplicityRange xmi.id = '-64--88-1-101-3dc093e3:1157f1866b2:-8000:0000000000000939'\r
- lower = '1' upper = '1'/>\r
- </UML:Multiplicity.range>\r
- </UML:Multiplicity>\r
- </UML:AssociationEnd.multiplicity>\r
- <UML:AssociationEnd.participant>\r
- <UML:Class xmi.idref = '-64--88-1-101-3dc093e3:1157f1866b2:-8000:0000000000000931'/>\r
- </UML:AssociationEnd.participant>\r
- </UML:AssociationEnd>\r
- </UML:Association.connection>\r
- </UML:Association>\r
- <UML:Class xmi.id = '-64--88-1-101-3dc093e3:1157f1866b2:-8000:0000000000000945'\r
- name = 'Attachement' visibility = 'public' isSpecification = 'false' isRoot = 'false'\r
- isLeaf = 'false' isAbstract = 'false' isActive = 'false'/>\r
- <UML:Association xmi.id = '-64--88-1-101-3dc093e3:1157f1866b2:-8000:0000000000000947'\r
- name = '' isSpecification = 'false' isRoot = 'false' isLeaf = 'false' isAbstract = 'false'>\r
- <UML:Association.connection>\r
- <UML:AssociationEnd xmi.id = '-64--88-1-101-3dc093e3:1157f1866b2:-8000:0000000000000948'\r
- visibility = 'public' isSpecification = 'false' isNavigable = 'false' ordering = 'unordered'\r
- aggregation = 'none' targetScope = 'instance' changeability = 'changeable'>\r
- <UML:AssociationEnd.multiplicity>\r
- <UML:Multiplicity xmi.id = '-64--88-1-101-3dc093e3:1157f1866b2:-8000:0000000000000949'>\r
- <UML:Multiplicity.range>\r
- <UML:MultiplicityRange xmi.id = '-64--88-1-101-3dc093e3:1157f1866b2:-8000:000000000000094A'\r
- lower = '1' upper = '1'/>\r
- </UML:Multiplicity.range>\r
- </UML:Multiplicity>\r
- </UML:AssociationEnd.multiplicity>\r
- <UML:AssociationEnd.participant>\r
- <UML:Class xmi.idref = '-64--88-0-11-7e9e46a8:113ee067f97:-8000:00000000000007CF'/>\r
- </UML:AssociationEnd.participant>\r
- </UML:AssociationEnd>\r
- <UML:AssociationEnd xmi.id = '-64--88-1-101-3dc093e3:1157f1866b2:-8000:000000000000094B'\r
- name = 'attachements' visibility = 'public' isSpecification = 'false' isNavigable = 'true'\r
- ordering = 'unordered' aggregation = 'none' targetScope = 'instance' changeability = 'changeable'>\r
- <UML:AssociationEnd.multiplicity>\r
- <UML:Multiplicity xmi.id = '-64--88-1-101-3dc093e3:1157f1866b2:-8000:000000000000094F'>\r
- <UML:Multiplicity.range>\r
- <UML:MultiplicityRange xmi.id = '-64--88-1-101-3dc093e3:1157f1866b2:-8000:000000000000094E'\r
- lower = '0' upper = '-1'/>\r
- </UML:Multiplicity.range>\r
- </UML:Multiplicity>\r
- </UML:AssociationEnd.multiplicity>\r
- <UML:AssociationEnd.participant>\r
- <UML:Class xmi.idref = '-64--88-1-101-3dc093e3:1157f1866b2:-8000:0000000000000945'/>\r
- </UML:AssociationEnd.participant>\r
- </UML:AssociationEnd>\r
- </UML:Association.connection>\r
- </UML:Association>\r
- <UML:Class xmi.id = '-64--88-1-101-3dc093e3:1157f1866b2:-8000:0000000000000950'\r
- name = 'URLAttachement' visibility = 'public' isSpecification = 'false'\r
- isRoot = 'false' isLeaf = 'false' isAbstract = 'false' isActive = 'false'>\r
- <UML:GeneralizableElement.generalization>\r
- <UML:Generalization xmi.idref = '-64--88-1-101--4a0353a6:1158fc10f03:-8000:0000000000000C2B'/>\r
- </UML:GeneralizableElement.generalization>\r
- </UML:Class>\r
- <UML:Class xmi.id = '-64--88-1-101-3dc093e3:1157f1866b2:-8000:0000000000000952'\r
- name = 'BinaryFileAttachement' visibility = 'public' isSpecification = 'false'\r
- isRoot = 'false' isLeaf = 'false' isAbstract = 'false' isActive = 'false'>\r
- <UML:GeneralizableElement.generalization>\r
- <UML:Generalization xmi.idref = '-64--88-1-101--4a0353a6:1158fc10f03:-8000:0000000000000C2A'/>\r
- </UML:GeneralizableElement.generalization>\r
- </UML:Class>\r
- <UML:Class xmi.id = '-64--88-1-101-3dc093e3:1157f1866b2:-8000:0000000000000954'\r
- name = 'TestFileAttachement' visibility = 'public' isSpecification = 'false'\r
- isRoot = 'false' isLeaf = 'false' isAbstract = 'false' isActive = 'false'>\r
- <UML:GeneralizableElement.generalization>\r
- <UML:Generalization xmi.idref = '-64--88-1-101--4a0353a6:1158fc10f03:-8000:0000000000000C2C'/>\r
- </UML:GeneralizableElement.generalization>\r
- </UML:Class>\r
- <UML:Class xmi.id = '-64--88-1-101-3dc093e3:1157f1866b2:-8000:0000000000000959'\r
- name = 'TestResult' visibility = 'public' isSpecification = 'false' isRoot = 'false'\r
- isLeaf = 'false' isAbstract = 'false' isActive = 'false'/>\r
- <UML:Association xmi.id = '-64--88-1-101-3dc093e3:1157f1866b2:-8000:000000000000095B'\r
- name = '' isSpecification = 'false' isRoot = 'false' isLeaf = 'false' isAbstract = 'false'>\r
- <UML:Association.connection>\r
- <UML:AssociationEnd xmi.id = '-64--88-1-101-3dc093e3:1157f1866b2:-8000:000000000000095C'\r
- visibility = 'public' isSpecification = 'false' isNavigable = 'false' ordering = 'unordered'\r
- aggregation = 'none' targetScope = 'instance' changeability = 'changeable'>\r
- <UML:AssociationEnd.multiplicity>\r
- <UML:Multiplicity xmi.id = '-64--88-1-101-3dc093e3:1157f1866b2:-8000:000000000000095D'>\r
- <UML:Multiplicity.range>\r
- <UML:MultiplicityRange xmi.id = '-64--88-1-101-3dc093e3:1157f1866b2:-8000:000000000000095E'\r
- lower = '1' upper = '1'/>\r
- </UML:Multiplicity.range>\r
- </UML:Multiplicity>\r
- </UML:AssociationEnd.multiplicity>\r
- <UML:AssociationEnd.participant>\r
- <UML:Class xmi.idref = '-64--88-0-11-7e9e46a8:113ee067f97:-8000:000000000000077A'/>\r
- </UML:AssociationEnd.participant>\r
- </UML:AssociationEnd>\r
- <UML:AssociationEnd xmi.id = '-64--88-1-101-3dc093e3:1157f1866b2:-8000:000000000000095F'\r
- name = 'testResult' visibility = 'public' isSpecification = 'false' isNavigable = 'true'\r
- ordering = 'unordered' aggregation = 'none' targetScope = 'instance' changeability = 'changeable'>\r
- <UML:AssociationEnd.multiplicity>\r
- <UML:Multiplicity xmi.id = '-64--88-1-101-3dc093e3:1157f1866b2:-8000:0000000000000960'>\r
- <UML:Multiplicity.range>\r
- <UML:MultiplicityRange xmi.id = '-64--88-1-101-3dc093e3:1157f1866b2:-8000:0000000000000961'\r
- lower = '1' upper = '1'/>\r
- </UML:Multiplicity.range>\r
- </UML:Multiplicity>\r
- </UML:AssociationEnd.multiplicity>\r
- <UML:AssociationEnd.participant>\r
- <UML:Class xmi.idref = '-64--88-1-101-3dc093e3:1157f1866b2:-8000:0000000000000959'/>\r
- </UML:AssociationEnd.participant>\r
- </UML:AssociationEnd>\r
- </UML:Association.connection>\r
- </UML:Association>\r
- <UML:Class xmi.id = '-64--88-1-101-3dc093e3:1157f1866b2:-8000:0000000000000966'\r
- name = 'TestResultId' visibility = 'public' isSpecification = 'false' isRoot = 'false'\r
- isLeaf = 'false' isAbstract = 'false' isActive = 'false'/>\r
- <UML:Association xmi.id = '-64--88-1-101-3dc093e3:1157f1866b2:-8000:0000000000000968'\r
- name = '' isSpecification = 'false' isRoot = 'false' isLeaf = 'false' isAbstract = 'false'>\r
- <UML:Association.connection>\r
- <UML:AssociationEnd xmi.id = '-64--88-1-101-3dc093e3:1157f1866b2:-8000:0000000000000969'\r
- name = '' visibility = 'public' isSpecification = 'false' isNavigable = 'false'\r
- ordering = 'unordered' aggregation = 'none' targetScope = 'instance' changeability = 'changeable'>\r
- <UML:AssociationEnd.multiplicity>\r
- <UML:Multiplicity xmi.id = '-64--88-1-101--4a0353a6:1158fc10f03:-8000:0000000000000C38'>\r
- <UML:Multiplicity.range>\r
- <UML:MultiplicityRange xmi.id = '-64--88-1-101--4a0353a6:1158fc10f03:-8000:0000000000000C37'\r
- lower = '1' upper = '1'/>\r
- </UML:Multiplicity.range>\r
- </UML:Multiplicity>\r
- </UML:AssociationEnd.multiplicity>\r
- <UML:AssociationEnd.participant>\r
- <UML:Class xmi.idref = '-64--88-1-101-3dc093e3:1157f1866b2:-8000:0000000000000959'/>\r
- </UML:AssociationEnd.participant>\r
- </UML:AssociationEnd>\r
- <UML:AssociationEnd xmi.id = '-64--88-1-101-3dc093e3:1157f1866b2:-8000:000000000000096C'\r
- name = 'testResultId' visibility = 'public' isSpecification = 'false' isNavigable = 'true'\r
- ordering = 'unordered' aggregation = 'none' targetScope = 'instance' changeability = 'changeable'>\r
- <UML:AssociationEnd.multiplicity>\r
- <UML:Multiplicity xmi.id = '-64--88-1-101--4a0353a6:1158fc10f03:-8000:0000000000000C3A'>\r
- <UML:Multiplicity.range>\r
- <UML:MultiplicityRange xmi.id = '-64--88-1-101--4a0353a6:1158fc10f03:-8000:0000000000000C39'\r
- lower = '1' upper = '1'/>\r
- </UML:Multiplicity.range>\r
- </UML:Multiplicity>\r
- </UML:AssociationEnd.multiplicity>\r
- <UML:AssociationEnd.participant>\r
- <UML:Class xmi.idref = '-64--88-1-101-3dc093e3:1157f1866b2:-8000:0000000000000966'/>\r
- </UML:AssociationEnd.participant>\r
- </UML:AssociationEnd>\r
- </UML:Association.connection>\r
- </UML:Association>\r
- <UML:Association xmi.id = '-64--88-1-101-3dc093e3:1157f1866b2:-8000:000000000000096F'\r
- name = '' isSpecification = 'false' isRoot = 'false' isLeaf = 'false' isAbstract = 'false'>\r
- <UML:Association.connection>\r
- <UML:AssociationEnd xmi.id = '-64--88-1-101-3dc093e3:1157f1866b2:-8000:0000000000000970'\r
- visibility = 'public' isSpecification = 'false' isNavigable = 'false' ordering = 'unordered'\r
- aggregation = 'none' targetScope = 'instance' changeability = 'changeable'>\r
- <UML:AssociationEnd.multiplicity>\r
- <UML:Multiplicity xmi.id = '-64--88-1-101-3dc093e3:1157f1866b2:-8000:0000000000000971'>\r
- <UML:Multiplicity.range>\r
- <UML:MultiplicityRange xmi.id = '-64--88-1-101-3dc093e3:1157f1866b2:-8000:0000000000000972'\r
- lower = '1' upper = '1'/>\r
- </UML:Multiplicity.range>\r
- </UML:Multiplicity>\r
- </UML:AssociationEnd.multiplicity>\r
- <UML:AssociationEnd.participant>\r
- <UML:Class xmi.idref = '-64--88-1-101-3dc093e3:1157f1866b2:-8000:0000000000000966'/>\r
- </UML:AssociationEnd.participant>\r
- </UML:AssociationEnd>\r
- <UML:AssociationEnd xmi.id = '-64--88-1-101-3dc093e3:1157f1866b2:-8000:0000000000000973'\r
- name = 'deployedSystemId' visibility = 'public' isSpecification = 'false'\r
- isNavigable = 'true' ordering = 'unordered' aggregation = 'none' targetScope = 'instance'\r
- changeability = 'changeable'>\r
- <UML:AssociationEnd.multiplicity>\r
- <UML:Multiplicity xmi.id = '-64--88-1-101-3dc093e3:1157f1866b2:-8000:0000000000000974'>\r
- <UML:Multiplicity.range>\r
- <UML:MultiplicityRange xmi.id = '-64--88-1-101-3dc093e3:1157f1866b2:-8000:0000000000000975'\r
- lower = '1' upper = '1'/>\r
- </UML:Multiplicity.range>\r
- </UML:Multiplicity>\r
- </UML:AssociationEnd.multiplicity>\r
- <UML:AssociationEnd.participant>\r
- <UML:Class xmi.idref = '-64--88-1-101--3f3f1022:1157622ef7f:-8000:00000000000008AE'/>\r
- </UML:AssociationEnd.participant>\r
- </UML:AssociationEnd>\r
- </UML:Association.connection>\r
- </UML:Association>\r
- <UML:Association xmi.id = '-64--88-1-101-3dc093e3:1157f1866b2:-8000:0000000000000976'\r
- name = '' isSpecification = 'false' isRoot = 'false' isLeaf = 'false' isAbstract = 'false'>\r
- <UML:Association.connection>\r
- <UML:AssociationEnd xmi.id = '-64--88-1-101-3dc093e3:1157f1866b2:-8000:0000000000000977'\r
- visibility = 'public' isSpecification = 'false' isNavigable = 'false' ordering = 'unordered'\r
- aggregation = 'none' targetScope = 'instance' changeability = 'changeable'>\r
- <UML:AssociationEnd.multiplicity>\r
- <UML:Multiplicity xmi.id = '-64--88-1-101-3dc093e3:1157f1866b2:-8000:0000000000000980'>\r
- <UML:Multiplicity.range>\r
- <UML:MultiplicityRange xmi.id = '-64--88-1-101-3dc093e3:1157f1866b2:-8000:000000000000097F'\r
- lower = '0' upper = '-1'/>\r
- </UML:Multiplicity.range>\r
- </UML:Multiplicity>\r
- </UML:AssociationEnd.multiplicity>\r
- <UML:AssociationEnd.participant>\r
- <UML:Class xmi.idref = '-64--88-1-101--3f3f1022:1157622ef7f:-8000:00000000000008AE'/>\r
- </UML:AssociationEnd.participant>\r
- </UML:AssociationEnd>\r
- <UML:AssociationEnd xmi.id = '-64--88-1-101-3dc093e3:1157f1866b2:-8000:000000000000097A'\r
- name = 'distributionIds' visibility = 'public' isSpecification = 'false'\r
- isNavigable = 'true' ordering = 'unordered' aggregation = 'none' targetScope = 'instance'\r
- changeability = 'changeable'>\r
- <UML:AssociationEnd.multiplicity>\r
- <UML:Multiplicity xmi.id = '-64--88-1-101-3dc093e3:1157f1866b2:-8000:0000000000000982'>\r
- <UML:Multiplicity.range>\r
- <UML:MultiplicityRange xmi.id = '-64--88-1-101-3dc093e3:1157f1866b2:-8000:0000000000000981'\r
- lower = '1' upper = '-1'/>\r
- </UML:Multiplicity.range>\r
- </UML:Multiplicity>\r
- </UML:AssociationEnd.multiplicity>\r
- <UML:AssociationEnd.participant>\r
- <UML:Class xmi.idref = '-64--88-1-101--3f3f1022:1157622ef7f:-8000:00000000000008AC'/>\r
- </UML:AssociationEnd.participant>\r
- </UML:AssociationEnd>\r
- </UML:Association.connection>\r
- </UML:Association>\r
- <UML:Class xmi.id = '-64--88-1-101-3dc093e3:1157f1866b2:-8000:0000000000000983'\r
- name = 'TestReport' visibility = 'public' isSpecification = 'false' isRoot = 'false'\r
- isLeaf = 'false' isAbstract = 'false' isActive = 'false'/>\r
- <UML:Association xmi.id = '-64--88-1-101-3dc093e3:1157f1866b2:-8000:0000000000000985'\r
- name = '' isSpecification = 'false' isRoot = 'false' isLeaf = 'false' isAbstract = 'false'>\r
- <UML:Association.connection>\r
- <UML:AssociationEnd xmi.id = '-64--88-1-101-3dc093e3:1157f1866b2:-8000:0000000000000986'\r
- visibility = 'public' isSpecification = 'false' isNavigable = 'false' ordering = 'unordered'\r
- aggregation = 'none' targetScope = 'instance' changeability = 'changeable'>\r
- <UML:AssociationEnd.multiplicity>\r
- <UML:Multiplicity xmi.id = '-64--88-1-101-3dc093e3:1157f1866b2:-8000:000000000000098D'>\r
- <UML:Multiplicity.range>\r
- <UML:MultiplicityRange xmi.id = '-64--88-1-101-3dc093e3:1157f1866b2:-8000:000000000000098C'\r
- lower = '0' upper = '-1'/>\r
- </UML:Multiplicity.range>\r
- </UML:Multiplicity>\r
- </UML:AssociationEnd.multiplicity>\r
- <UML:AssociationEnd.participant>\r
- <UML:Class xmi.idref = '-64--88-1-101-3dc093e3:1157f1866b2:-8000:0000000000000983'/>\r
- </UML:AssociationEnd.participant>\r
- </UML:AssociationEnd>\r
- <UML:AssociationEnd xmi.id = '-64--88-1-101-3dc093e3:1157f1866b2:-8000:0000000000000989'\r
- name = 'testResult' visibility = 'public' isSpecification = 'false' isNavigable = 'true'\r
- ordering = 'unordered' aggregation = 'none' targetScope = 'instance' changeability = 'changeable'>\r
- <UML:AssociationEnd.multiplicity>\r
- <UML:Multiplicity xmi.id = '-64--88-1-101-3dc093e3:1157f1866b2:-8000:000000000000098A'>\r
- <UML:Multiplicity.range>\r
- <UML:MultiplicityRange xmi.id = '-64--88-1-101-3dc093e3:1157f1866b2:-8000:000000000000098B'\r
- lower = '1' upper = '1'/>\r
- </UML:Multiplicity.range>\r
- </UML:Multiplicity>\r
- </UML:AssociationEnd.multiplicity>\r
- <UML:AssociationEnd.participant>\r
- <UML:Class xmi.idref = '-64--88-1-101-3dc093e3:1157f1866b2:-8000:0000000000000959'/>\r
- </UML:AssociationEnd.participant>\r
- </UML:AssociationEnd>\r
- </UML:Association.connection>\r
- </UML:Association>\r
- <UML:Class xmi.id = '-64--88-1-101--7f8968dd:1157f72a2bb:-8000:0000000000000951'\r
- name = 'DatabaseDeployer' visibility = 'public' isSpecification = 'false'\r
- isRoot = 'false' isLeaf = 'false' isAbstract = 'false' isActive = 'false'>\r
- <UML:Classifier.feature>\r
- <UML:Operation xmi.id = '-64--88-1-101--7f8968dd:1157f72a2bb:-8000:0000000000000953'\r
- name = 'deploy' visibility = 'public' isSpecification = 'false' ownerScope = 'instance'\r
- isQuery = 'false' concurrency = 'sequential' isRoot = 'false' isLeaf = 'false'\r
- isAbstract = 'false'>\r
- <UML:BehavioralFeature.parameter>\r
- <UML:Parameter xmi.id = '-64--88-1-101--7f8968dd:1157f72a2bb:-8000:0000000000000954'\r
- name = 'return' isSpecification = 'false' kind = 'return'>\r
- <UML:Parameter.type>\r
- <UML:Class xmi.idref = '-64--88-0-11-7e9e46a8:113ee067f97:-8000:0000000000000861'/>\r
- </UML:Parameter.type>\r
- </UML:Parameter>\r
- <UML:Parameter xmi.id = '-64--88-1-101--7f8968dd:1157f72a2bb:-8000:0000000000000955'\r
- name = 'dump' isSpecification = 'false'>\r
- <UML:Parameter.type>\r
- <UML:Class xmi.idref = '-64--88-1-101-3dc093e3:1157f1866b2:-8000:00000000000008D0'/>\r
- </UML:Parameter.type>\r
- </UML:Parameter>\r
- <UML:Parameter xmi.id = '-64--88-1-101--7f8968dd:1157f72a2bb:-8000:0000000000000956'\r
- name = 'server' isSpecification = 'false'>\r
- <UML:Parameter.type>\r
- <UML:Class xmi.idref = '-64--88-0-11--3bcecc2b:113edff40cb:-8000:000000000000073B'/>\r
- </UML:Parameter.type>\r
- </UML:Parameter>\r
- </UML:BehavioralFeature.parameter>\r
- </UML:Operation>\r
- </UML:Classifier.feature>\r
- </UML:Class>\r
- <UML:Class xmi.id = '-64--88-1-101--7f8968dd:1157f72a2bb:-8000:0000000000000957'\r
- name = 'VersionedFileSetDeployer' visibility = 'public' isSpecification = 'false'\r
- isRoot = 'false' isLeaf = 'false' isAbstract = 'false' isActive = 'false'>\r
- <UML:Classifier.feature>\r
- <UML:Operation xmi.id = '-64--88-1-101--7f8968dd:1157f72a2bb:-8000:0000000000000959'\r
- name = 'deploy' visibility = 'public' isSpecification = 'false' ownerScope = 'instance'\r
- isQuery = 'false' concurrency = 'sequential' isRoot = 'false' isLeaf = 'false'\r
- isAbstract = 'false'>\r
- <UML:BehavioralFeature.parameter>\r
- <UML:Parameter xmi.id = '-64--88-1-101--7f8968dd:1157f72a2bb:-8000:000000000000095A'\r
- name = 'return' isSpecification = 'false' kind = 'return'>\r
- <UML:Parameter.type>\r
- <UML:Class xmi.idref = '-64--88-0-11-7e9e46a8:113ee067f97:-8000:0000000000000861'/>\r
- </UML:Parameter.type>\r
- </UML:Parameter>\r
- <UML:Parameter xmi.id = '-64--88-1-101--7f8968dd:1157f72a2bb:-8000:000000000000095B'\r
- name = 'fileSet' isSpecification = 'false'>\r
- <UML:Parameter.type>\r
- <UML:Class xmi.idref = '-64--88-1-101-3dc093e3:1157f1866b2:-8000:00000000000008E5'/>\r
- </UML:Parameter.type>\r
- </UML:Parameter>\r
- <UML:Parameter xmi.id = '-64--88-1-101--7f8968dd:1157f72a2bb:-8000:000000000000095C'\r
- name = 'dir' isSpecification = 'false'>\r
- <UML:Parameter.type>\r
- <UML:Class xmi.idref = '-64--88-1-101--7f8968dd:1157f72a2bb:-8000:000000000000095D'/>\r
- </UML:Parameter.type>\r
- </UML:Parameter>\r
- </UML:BehavioralFeature.parameter>\r
- </UML:Operation>\r
- </UML:Classifier.feature>\r
- </UML:Class>\r
- <UML:Class xmi.id = '-64--88-1-101--7f8968dd:1157f72a2bb:-8000:000000000000095D'\r
- name = 'File' visibility = 'public' isSpecification = 'false' isRoot = 'false'\r
- isLeaf = 'false' isAbstract = 'false' isActive = 'false'/>\r
- <UML:Generalization xmi.id = '-64--88-1-101--4a0353a6:1158fc10f03:-8000:000000000000095E'\r
- isSpecification = 'false'>\r
- <UML:Generalization.child>\r
- <UML:Class xmi.idref = '-64--88-1-101-3dc093e3:1157f1866b2:-8000:00000000000008D0'/>\r
- </UML:Generalization.child>\r
- <UML:Generalization.parent>\r
- <UML:Class xmi.idref = '-64--88-1-101-3dc093e3:1157f1866b2:-8000:0000000000000906'/>\r
- </UML:Generalization.parent>\r
- </UML:Generalization>\r
- <UML:Generalization xmi.id = '-64--88-1-101--4a0353a6:1158fc10f03:-8000:000000000000095F'\r
- isSpecification = 'false'>\r
- <UML:Generalization.child>\r
- <UML:Class xmi.idref = '-64--88-1-101-3dc093e3:1157f1866b2:-8000:00000000000008F8'/>\r
- </UML:Generalization.child>\r
- <UML:Generalization.parent>\r
- <UML:Class xmi.idref = '-64--88-1-101-3dc093e3:1157f1866b2:-8000:00000000000008E5'/>\r
- </UML:Generalization.parent>\r
- </UML:Generalization>\r
- <UML:Generalization xmi.id = '-64--88-1-101--4a0353a6:1158fc10f03:-8000:0000000000000C2A'\r
- isSpecification = 'false'>\r
- <UML:Generalization.child>\r
- <UML:Class xmi.idref = '-64--88-1-101-3dc093e3:1157f1866b2:-8000:0000000000000952'/>\r
- </UML:Generalization.child>\r
- <UML:Generalization.parent>\r
- <UML:Class xmi.idref = '-64--88-1-101-3dc093e3:1157f1866b2:-8000:0000000000000945'/>\r
- </UML:Generalization.parent>\r
- </UML:Generalization>\r
- <UML:Generalization xmi.id = '-64--88-1-101--4a0353a6:1158fc10f03:-8000:0000000000000C2B'\r
- isSpecification = 'false'>\r
- <UML:Generalization.child>\r
- <UML:Class xmi.idref = '-64--88-1-101-3dc093e3:1157f1866b2:-8000:0000000000000950'/>\r
- </UML:Generalization.child>\r
- <UML:Generalization.parent>\r
- <UML:Class xmi.idref = '-64--88-1-101-3dc093e3:1157f1866b2:-8000:0000000000000945'/>\r
- </UML:Generalization.parent>\r
- </UML:Generalization>\r
- <UML:Generalization xmi.id = '-64--88-1-101--4a0353a6:1158fc10f03:-8000:0000000000000C2C'\r
- isSpecification = 'false'>\r
- <UML:Generalization.child>\r
- <UML:Class xmi.idref = '-64--88-1-101-3dc093e3:1157f1866b2:-8000:0000000000000954'/>\r
- </UML:Generalization.child>\r
- <UML:Generalization.parent>\r
- <UML:Class xmi.idref = '-64--88-1-101-3dc093e3:1157f1866b2:-8000:0000000000000945'/>\r
- </UML:Generalization.parent>\r
- </UML:Generalization>\r
- <UML:Class xmi.id = '-64--88-1-101--4a0353a6:1158fc10f03:-8000:0000000000000C3B'\r
- name = 'BuildDefinition' visibility = 'public' isSpecification = 'false'\r
- isRoot = 'false' isLeaf = 'false' isAbstract = 'false' isActive = 'false'/>\r
- <UML:Association xmi.id = '-64--88-1-101--4a0353a6:1158fc10f03:-8000:0000000000000C3D'\r
- name = '' isSpecification = 'false' isRoot = 'false' isLeaf = 'false' isAbstract = 'false'>\r
- <UML:Association.connection>\r
- <UML:AssociationEnd xmi.id = '-64--88-1-101--4a0353a6:1158fc10f03:-8000:0000000000000C3E'\r
- visibility = 'public' isSpecification = 'false' isNavigable = 'false' ordering = 'unordered'\r
- aggregation = 'none' targetScope = 'instance' changeability = 'changeable'>\r
- <UML:AssociationEnd.multiplicity>\r
- <UML:Multiplicity xmi.id = '-64--88-1-101--4a0353a6:1158fc10f03:-8000:0000000000000C3F'>\r
- <UML:Multiplicity.range>\r
- <UML:MultiplicityRange xmi.id = '-64--88-1-101--4a0353a6:1158fc10f03:-8000:0000000000000C40'\r
- lower = '1' upper = '1'/>\r
- </UML:Multiplicity.range>\r
- </UML:Multiplicity>\r
- </UML:AssociationEnd.multiplicity>\r
- <UML:AssociationEnd.participant>\r
- <UML:Class xmi.idref = '-64--88-0-11-7e9e46a8:113ee067f97:-8000:000000000000074E'/>\r
- </UML:AssociationEnd.participant>\r
- </UML:AssociationEnd>\r
- <UML:AssociationEnd xmi.id = '-64--88-1-101--4a0353a6:1158fc10f03:-8000:0000000000000C41'\r
- name = 'buildDefinition' visibility = 'public' isSpecification = 'false'\r
- isNavigable = 'true' ordering = 'unordered' aggregation = 'none' targetScope = 'instance'\r
- changeability = 'changeable'>\r
- <UML:AssociationEnd.multiplicity>\r
- <UML:Multiplicity xmi.id = '-64--88-1-101-51c28c3:1158fddd837:-8000:0000000000000969'>\r
- <UML:Multiplicity.range>\r
- <UML:MultiplicityRange xmi.id = '-64--88-1-101-51c28c3:1158fddd837:-8000:0000000000000968'\r
- lower = '1' upper = '1'/>\r
- </UML:Multiplicity.range>\r
- </UML:Multiplicity>\r
- </UML:AssociationEnd.multiplicity>\r
- <UML:AssociationEnd.participant>\r
- <UML:Class xmi.idref = '-64--88-1-101--4a0353a6:1158fc10f03:-8000:0000000000000C3B'/>\r
- </UML:AssociationEnd.participant>\r
- </UML:AssociationEnd>\r
- </UML:Association.connection>\r
- </UML:Association>\r
- <UML:Class xmi.id = '-64--88-1-101--4a0353a6:1158fc10f03:-8000:0000000000000C44'\r
- name = 'CodeFileSet' visibility = 'public' isSpecification = 'false' isRoot = 'false'\r
- isLeaf = 'false' isAbstract = 'false' isActive = 'false'>\r
- <UML:GeneralizableElement.generalization>\r
- <UML:Generalization xmi.idref = '-64--88-1-101--4a0353a6:1158fc10f03:-8000:0000000000000C46'/>\r
- </UML:GeneralizableElement.generalization>\r
- </UML:Class>\r
- <UML:Generalization xmi.id = '-64--88-1-101--4a0353a6:1158fc10f03:-8000:0000000000000C46'\r
- isSpecification = 'false'>\r
- <UML:Generalization.child>\r
- <UML:Class xmi.idref = '-64--88-1-101--4a0353a6:1158fc10f03:-8000:0000000000000C44'/>\r
- </UML:Generalization.child>\r
- <UML:Generalization.parent>\r
- <UML:Class xmi.idref = '-64--88-1-101-3dc093e3:1157f1866b2:-8000:00000000000008E5'/>\r
- </UML:Generalization.parent>\r
- </UML:Generalization>\r
- </UML:Namespace.ownedElement>\r
- </UML:Model>\r
- </XMI.content>\r
-</XMI>\r
-<pgml description="org.argouml.uml.diagram.static_structure.ui.UMLClassDiagram|-64--88-0-11--3bcecc2b:113edff40cb:-8000:000000000000071E"\r
- name="org.argeo.infrastructure"\r
->\r
- <rectangle name="Fig0"\r
- x="16"\r
- y="392"\r
- width="416"\r
- height="248"\r
- fill="1"\r
- fillcolor="white"\r
- stroke="1"\r
- strokecolor="black"\r
- />\r
- <rectangle name="Fig1"\r
- x="1088"\r
- y="24"\r
- width="656"\r
- height="264"\r
- fill="1"\r
- fillcolor="white"\r
- stroke="1"\r
- strokecolor="black"\r
- />\r
- <rectangle name="Fig2"\r
- x="16"\r
- y="656"\r
- width="1336"\r
- height="576"\r
- fill="1"\r
- fillcolor="white"\r
- stroke="1"\r
- strokecolor="black"\r
- />\r
- <rectangle name="Fig3"\r
- x="1088"\r
- y="304"\r
- width="656"\r
- height="336"\r
- fill="1"\r
- fillcolor="white"\r
- stroke="1"\r
- strokecolor="black"\r
- />\r
- <rectangle name="Fig4"\r
- x="448"\r
- y="24"\r
- width="624"\r
- height="616"\r
- fill="1"\r
- fillcolor="white"\r
- stroke="1"\r
- strokecolor="black"\r
- />\r
- <rectangle name="Fig5"\r
- x="16"\r
- y="24"\r
- width="416"\r
- height="344"\r
- fill="1"\r
- fillcolor="white"\r
- stroke="1"\r
- strokecolor="black"\r
- />\r
- <group name="Fig6"\r
- description="org.argouml.uml.diagram.static_structure.ui.FigClass[168, 168, 90, 65]pathVisible=false;operationsVisible=true;attributesVisible=true"\r
- href="-64--88-0-11-7e9e46a8:113ee067f97:-8000:000000000000072E"\r
- fill="1"\r
- fillcolor="white"\r
- stroke="1"\r
- strokecolor="black"\r
- >\r
- <private>\r
- </private>\r
- \r
- <rectangle name="Fig6.0"\r
- x="168"\r
- y="168"\r
- width="90"\r
- height="65"\r
- fill="1"\r
- fillcolor="white"\r
- stroke="0"\r
- strokecolor="black"\r
- />\r
- <group name="Fig6.1"\r
- description="org.argouml.uml.diagram.ui.FigStereotypesCompartment[168, 168, 90, 2]"\r
- href="-64--88-0-11-7e9e46a8:113ee067f97:-8000:000000000000072E"\r
- fill="1"\r
- fillcolor="white"\r
- stroke="1"\r
- strokecolor="black"\r
- >\r
- <private>\r
- </private>\r
- \r
- <rectangle name="Fig6.1.0"\r
- x="168"\r
- y="168"\r
- width="90"\r
- height="2"\r
- fill="1"\r
- fillcolor="white"\r
- stroke="1"\r
- strokecolor="black"\r
- />\r
- </group>\r
- <text name="Fig6.2"\r
- x="168"\r
- y="170"\r
- fill="1"\r
- fillcolor="white"\r
- stroke="0"\r
- strokecolor="red"\r
- font="Dialog"\r
- textsize="10"\r
- >Branch</text>\r
- <group name="Fig6.3"\r
- description="org.argouml.uml.diagram.ui.FigOperationsCompartment[169, 213, 89, 20]"\r
- fill="1"\r
- fillcolor="white"\r
- stroke="0"\r
- strokecolor="black"\r
- >\r
- <private>\r
- </private>\r
- \r
- <rectangle name="Fig6.3.0"\r
- x="169"\r
- y="213"\r
- width="89"\r
- height="20"\r
- fill="1"\r
- fillcolor="white"\r
- stroke="0"\r
- strokecolor="black"\r
- />\r
- <path name="Fig6.3.1"\r
- description="org.argouml.uml.diagram.ui.FigFeaturesCompartment$FigSeperator"\r
- fill="1"\r
- fillcolor="white"\r
- stroke="1"\r
- strokecolor="black"\r
- >\r
- <moveto x="169"\r
- y="213" />\r
- <lineto x="258"\r
- y="213" />\r
- </path>\r
- </group>\r
- <group name="Fig6.4"\r
- description="org.argouml.uml.diagram.ui.FigAttributesCompartment[169, 192, 89, 20]"\r
- fill="1"\r
- fillcolor="white"\r
- stroke="0"\r
- strokecolor="black"\r
- >\r
- <private>\r
- </private>\r
- \r
- <rectangle name="Fig6.4.0"\r
- x="169"\r
- y="192"\r
- width="89"\r
- height="20"\r
- fill="1"\r
- fillcolor="white"\r
- stroke="0"\r
- strokecolor="black"\r
- />\r
- <path name="Fig6.4.1"\r
- description="org.argouml.uml.diagram.ui.FigFeaturesCompartment$FigSeperator"\r
- fill="1"\r
- fillcolor="white"\r
- stroke="1"\r
- strokecolor="black"\r
- >\r
- <moveto x="169"\r
- y="192" />\r
- <lineto x="258"\r
- y="192" />\r
- </path>\r
- </group>\r
- <rectangle name="Fig6.5"\r
- x="168"\r
- y="168"\r
- width="90"\r
- height="65"\r
- fill="0"\r
- fillcolor="white"\r
- stroke="1"\r
- strokecolor="black"\r
- />\r
- </group>\r
- <group name="Fig7"\r
- description="org.argouml.uml.diagram.static_structure.ui.FigClass[168, 272, 90, 65]pathVisible=false;operationsVisible=true;attributesVisible=true"\r
- href="-64--88-0-11-7e9e46a8:113ee067f97:-8000:0000000000000730"\r
- fill="1"\r
- fillcolor="white"\r
- stroke="1"\r
- strokecolor="black"\r
- >\r
- <private>\r
- </private>\r
- \r
- <rectangle name="Fig7.0"\r
- x="168"\r
- y="272"\r
- width="90"\r
- height="65"\r
- fill="1"\r
- fillcolor="white"\r
- stroke="0"\r
- strokecolor="black"\r
- />\r
- <group name="Fig7.1"\r
- description="org.argouml.uml.diagram.ui.FigStereotypesCompartment[168, 272, 90, 2]"\r
- href="-64--88-0-11-7e9e46a8:113ee067f97:-8000:0000000000000730"\r
- fill="1"\r
- fillcolor="white"\r
- stroke="1"\r
- strokecolor="black"\r
- >\r
- <private>\r
- </private>\r
- \r
- <rectangle name="Fig7.1.0"\r
- x="168"\r
- y="272"\r
- width="90"\r
- height="2"\r
- fill="1"\r
- fillcolor="white"\r
- stroke="1"\r
- strokecolor="black"\r
- />\r
- </group>\r
- <text name="Fig7.2"\r
- x="168"\r
- y="274"\r
- fill="1"\r
- fillcolor="white"\r
- stroke="0"\r
- strokecolor="red"\r
- font="Dialog"\r
- textsize="10"\r
- >Revision</text>\r
- <group name="Fig7.3"\r
- description="org.argouml.uml.diagram.ui.FigOperationsCompartment[169, 317, 89, 20]"\r
- fill="1"\r
- fillcolor="white"\r
- stroke="0"\r
- strokecolor="black"\r
- >\r
- <private>\r
- </private>\r
- \r
- <rectangle name="Fig7.3.0"\r
- x="169"\r
- y="317"\r
- width="89"\r
- height="20"\r
- fill="1"\r
- fillcolor="white"\r
- stroke="0"\r
- strokecolor="black"\r
- />\r
- <path name="Fig7.3.1"\r
- description="org.argouml.uml.diagram.ui.FigFeaturesCompartment$FigSeperator"\r
- fill="1"\r
- fillcolor="white"\r
- stroke="1"\r
- strokecolor="black"\r
- >\r
- <moveto x="169"\r
- y="317" />\r
- <lineto x="258"\r
- y="317" />\r
- </path>\r
- </group>\r
- <group name="Fig7.4"\r
- description="org.argouml.uml.diagram.ui.FigAttributesCompartment[169, 296, 89, 20]"\r
- fill="1"\r
- fillcolor="white"\r
- stroke="0"\r
- strokecolor="black"\r
- >\r
- <private>\r
- </private>\r
- \r
- <rectangle name="Fig7.4.0"\r
- x="169"\r
- y="296"\r
- width="89"\r
- height="20"\r
- fill="1"\r
- fillcolor="white"\r
- stroke="0"\r
- strokecolor="black"\r
- />\r
- <path name="Fig7.4.1"\r
- description="org.argouml.uml.diagram.ui.FigFeaturesCompartment$FigSeperator"\r
- fill="1"\r
- fillcolor="white"\r
- stroke="1"\r
- strokecolor="black"\r
- >\r
- <moveto x="169"\r
- y="296" />\r
- <lineto x="258"\r
- y="296" />\r
- </path>\r
- </group>\r
- <rectangle name="Fig7.5"\r
- x="168"\r
- y="272"\r
- width="90"\r
- height="65"\r
- fill="0"\r
- fillcolor="white"\r
- stroke="1"\r
- strokecolor="black"\r
- />\r
- </group>\r
- <group name="Fig8"\r
- description="org.argouml.uml.diagram.ui.FigAssociation"\r
- href="-64--88-0-11-7e9e46a8:113ee067f97:-8000:0000000000000734"\r
- stroke="1"\r
- strokecolor="black"\r
- >\r
- <private>\r
- sourcePortFig="Fig20"\r
- destPortFig="Fig6.0"\r
- sourceFigNode="Fig20"\r
- destFigNode="Fig6"\r
- </private>\r
- <path name="Fig8.0"\r
- description="org.tigris.gef.presentation.FigPoly"\r
- fill="0"\r
- fillcolor="white"\r
- stroke="1"\r
- strokecolor="black"\r
- >\r
- <moveto x="48"\r
- y="216" />\r
- <lineto x="48"\r
- y="184" />\r
- <lineto x="168"\r
- y="184" />\r
- </path>\r
- </group>\r
- <group name="Fig9"\r
- description="org.argouml.uml.diagram.static_structure.ui.FigClass[320, 690, 90, 65]pathVisible=false;operationsVisible=true;attributesVisible=true"\r
- href="-64--88-0-11-7e9e46a8:113ee067f97:-8000:000000000000074E"\r
- fill="1"\r
- fillcolor="white"\r
- stroke="1"\r
- strokecolor="black"\r
- >\r
- <private>\r
- </private>\r
- \r
- <rectangle name="Fig9.0"\r
- x="320"\r
- y="690"\r
- width="90"\r
- height="65"\r
- fill="1"\r
- fillcolor="white"\r
- stroke="0"\r
- strokecolor="black"\r
- />\r
- <group name="Fig9.1"\r
- description="org.argouml.uml.diagram.ui.FigStereotypesCompartment[320, 690, 90, 2]"\r
- href="-64--88-0-11-7e9e46a8:113ee067f97:-8000:000000000000074E"\r
- fill="1"\r
- fillcolor="white"\r
- stroke="1"\r
- strokecolor="black"\r
- >\r
- <private>\r
- </private>\r
- \r
- <rectangle name="Fig9.1.0"\r
- x="320"\r
- y="690"\r
- width="90"\r
- height="2"\r
- fill="1"\r
- fillcolor="white"\r
- stroke="1"\r
- strokecolor="black"\r
- />\r
- </group>\r
- <text name="Fig9.2"\r
- x="320"\r
- y="692"\r
- fill="1"\r
- fillcolor="white"\r
- stroke="0"\r
- strokecolor="red"\r
- font="Dialog"\r
- textsize="10"\r
- >Build</text>\r
- <group name="Fig9.3"\r
- description="org.argouml.uml.diagram.ui.FigOperationsCompartment[321, 735, 89, 20]"\r
- fill="1"\r
- fillcolor="white"\r
- stroke="0"\r
- strokecolor="black"\r
- >\r
- <private>\r
- </private>\r
- \r
- <rectangle name="Fig9.3.0"\r
- x="321"\r
- y="735"\r
- width="89"\r
- height="20"\r
- fill="1"\r
- fillcolor="white"\r
- stroke="0"\r
- strokecolor="black"\r
- />\r
- <path name="Fig9.3.1"\r
- description="org.argouml.uml.diagram.ui.FigFeaturesCompartment$FigSeperator"\r
- fill="1"\r
- fillcolor="white"\r
- stroke="1"\r
- strokecolor="black"\r
- >\r
- <moveto x="321"\r
- y="735" />\r
- <lineto x="410"\r
- y="735" />\r
- </path>\r
- </group>\r
- <group name="Fig9.4"\r
- description="org.argouml.uml.diagram.ui.FigAttributesCompartment[321, 714, 89, 20]"\r
- fill="1"\r
- fillcolor="white"\r
- stroke="0"\r
- strokecolor="black"\r
- >\r
- <private>\r
- </private>\r
- \r
- <rectangle name="Fig9.4.0"\r
- x="321"\r
- y="714"\r
- width="89"\r
- height="20"\r
- fill="1"\r
- fillcolor="white"\r
- stroke="0"\r
- strokecolor="black"\r
- />\r
- <path name="Fig9.4.1"\r
- description="org.argouml.uml.diagram.ui.FigFeaturesCompartment$FigSeperator"\r
- fill="1"\r
- fillcolor="white"\r
- stroke="1"\r
- strokecolor="black"\r
- >\r
- <moveto x="321"\r
- y="714" />\r
- <lineto x="410"\r
- y="714" />\r
- </path>\r
- </group>\r
- <rectangle name="Fig9.5"\r
- x="320"\r
- y="690"\r
- width="90"\r
- height="65"\r
- fill="0"\r
- fillcolor="white"\r
- stroke="1"\r
- strokecolor="black"\r
- />\r
- </group>\r
- <group name="Fig10"\r
- description="org.argouml.uml.diagram.ui.FigAssociation"\r
- href="-64--88-0-11-7e9e46a8:113ee067f97:-8000:0000000000000757"\r
- stroke="1"\r
- strokecolor="black"\r
- >\r
- <private>\r
- sourcePortFig="Fig42"\r
- destPortFig="Fig6"\r
- sourceFigNode="Fig42"\r
- destFigNode="Fig6"\r
- </private>\r
- <path name="Fig10.0"\r
- description="org.tigris.gef.presentation.FigPoly"\r
- fill="0"\r
- fillcolor="white"\r
- stroke="1"\r
- strokecolor="black"\r
- >\r
- <moveto x="320"\r
- y="184" />\r
- <lineto x="258"\r
- y="184" />\r
- </path>\r
- </group>\r
- <group name="Fig11"\r
- description="org.argouml.uml.diagram.ui.FigAssociation"\r
- href="-64--88-0-11-7e9e46a8:113ee067f97:-8000:000000000000075E"\r
- stroke="1"\r
- strokecolor="black"\r
- >\r
- <private>\r
- sourcePortFig="Fig42"\r
- destPortFig="Fig7.0"\r
- sourceFigNode="Fig42"\r
- destFigNode="Fig7"\r
- </private>\r
- <path name="Fig11.0"\r
- description="org.tigris.gef.presentation.FigPoly"\r
- fill="0"\r
- fillcolor="white"\r
- stroke="1"\r
- strokecolor="black"\r
- >\r
- <moveto x="320"\r
- y="216" />\r
- <lineto x="296"\r
- y="216" />\r
- <lineto x="296"\r
- y="312" />\r
- <lineto x="258"\r
- y="312" />\r
- </path>\r
- </group>\r
- <group name="Fig12"\r
- description="org.argouml.uml.diagram.static_structure.ui.FigClass[690, 688, 90, 65]pathVisible=false;operationsVisible=true;attributesVisible=true"\r
- href="-64--88-0-11-7e9e46a8:113ee067f97:-8000:000000000000076F"\r
- fill="1"\r
- fillcolor="white"\r
- stroke="1"\r
- strokecolor="black"\r
- >\r
- <private>\r
- </private>\r
- \r
- <rectangle name="Fig12.0"\r
- x="690"\r
- y="688"\r
- width="90"\r
- height="65"\r
- fill="1"\r
- fillcolor="white"\r
- stroke="0"\r
- strokecolor="black"\r
- />\r
- <group name="Fig12.1"\r
- description="org.argouml.uml.diagram.ui.FigStereotypesCompartment[690, 688, 90, 2]"\r
- href="-64--88-0-11-7e9e46a8:113ee067f97:-8000:000000000000076F"\r
- fill="1"\r
- fillcolor="white"\r
- stroke="1"\r
- strokecolor="black"\r
- >\r
- <private>\r
- </private>\r
- \r
- <rectangle name="Fig12.1.0"\r
- x="690"\r
- y="688"\r
- width="90"\r
- height="2"\r
- fill="1"\r
- fillcolor="white"\r
- stroke="1"\r
- strokecolor="black"\r
- />\r
- </group>\r
- <text name="Fig12.2"\r
- x="690"\r
- y="690"\r
- fill="1"\r
- fillcolor="white"\r
- stroke="0"\r
- strokecolor="red"\r
- font="Dialog"\r
- textsize="10"\r
- >Deployment</text>\r
- <group name="Fig12.3"\r
- description="org.argouml.uml.diagram.ui.FigOperationsCompartment[691, 733, 89, 20]"\r
- fill="1"\r
- fillcolor="white"\r
- stroke="0"\r
- strokecolor="black"\r
- >\r
- <private>\r
- </private>\r
- \r
- <rectangle name="Fig12.3.0"\r
- x="691"\r
- y="733"\r
- width="89"\r
- height="20"\r
- fill="1"\r
- fillcolor="white"\r
- stroke="0"\r
- strokecolor="black"\r
- />\r
- <path name="Fig12.3.1"\r
- description="org.argouml.uml.diagram.ui.FigFeaturesCompartment$FigSeperator"\r
- fill="1"\r
- fillcolor="white"\r
- stroke="1"\r
- strokecolor="black"\r
- >\r
- <moveto x="691"\r
- y="733" />\r
- <lineto x="780"\r
- y="733" />\r
- </path>\r
- </group>\r
- <group name="Fig12.4"\r
- description="org.argouml.uml.diagram.ui.FigAttributesCompartment[691, 712, 89, 20]"\r
- fill="1"\r
- fillcolor="white"\r
- stroke="0"\r
- strokecolor="black"\r
- >\r
- <private>\r
- </private>\r
- \r
- <rectangle name="Fig12.4.0"\r
- x="691"\r
- y="712"\r
- width="89"\r
- height="20"\r
- fill="1"\r
- fillcolor="white"\r
- stroke="0"\r
- strokecolor="black"\r
- />\r
- <path name="Fig12.4.1"\r
- description="org.argouml.uml.diagram.ui.FigFeaturesCompartment$FigSeperator"\r
- fill="1"\r
- fillcolor="white"\r
- stroke="1"\r
- strokecolor="black"\r
- >\r
- <moveto x="691"\r
- y="712" />\r
- <lineto x="780"\r
- y="712" />\r
- </path>\r
- </group>\r
- <rectangle name="Fig12.5"\r
- x="690"\r
- y="688"\r
- width="90"\r
- height="65"\r
- fill="0"\r
- fillcolor="white"\r
- stroke="1"\r
- strokecolor="black"\r
- />\r
- </group>\r
- <group name="Fig13"\r
- description="org.argouml.uml.diagram.ui.FigAssociation"\r
- href="-64--88-0-11-7e9e46a8:113ee067f97:-8000:0000000000000771"\r
- stroke="1"\r
- strokecolor="black"\r
- >\r
- <private>\r
- sourcePortFig="Fig12.0"\r
- destPortFig="Fig31"\r
- sourceFigNode="Fig12"\r
- destFigNode="Fig31"\r
- </private>\r
- <path name="Fig13.0"\r
- description="org.tigris.gef.presentation.FigPoly"\r
- fill="0"\r
- fillcolor="white"\r
- stroke="1"\r
- strokecolor="black"\r
- >\r
- <moveto x="690"\r
- y="696" />\r
- <lineto x="512"\r
- y="696" />\r
- <lineto x="512"\r
- y="553" />\r
- </path>\r
- </group>\r
- <group name="Fig14"\r
- description="org.argouml.uml.diagram.static_structure.ui.FigClass[1200, 688, 90, 65]pathVisible=false;operationsVisible=true;attributesVisible=true"\r
- href="-64--88-0-11-7e9e46a8:113ee067f97:-8000:000000000000077A"\r
- fill="1"\r
- fillcolor="white"\r
- stroke="1"\r
- strokecolor="black"\r
- >\r
- <private>\r
- </private>\r
- \r
- <rectangle name="Fig14.0"\r
- x="1200"\r
- y="688"\r
- width="90"\r
- height="65"\r
- fill="1"\r
- fillcolor="white"\r
- stroke="0"\r
- strokecolor="black"\r
- />\r
- <group name="Fig14.1"\r
- description="org.argouml.uml.diagram.ui.FigStereotypesCompartment[1200, 688, 90, 2]"\r
- href="-64--88-0-11-7e9e46a8:113ee067f97:-8000:000000000000077A"\r
- fill="1"\r
- fillcolor="white"\r
- stroke="1"\r
- strokecolor="black"\r
- >\r
- <private>\r
- </private>\r
- \r
- <rectangle name="Fig14.1.0"\r
- x="1200"\r
- y="688"\r
- width="90"\r
- height="2"\r
- fill="1"\r
- fillcolor="white"\r
- stroke="1"\r
- strokecolor="black"\r
- />\r
- </group>\r
- <text name="Fig14.2"\r
- x="1200"\r
- y="690"\r
- fill="1"\r
- fillcolor="white"\r
- stroke="0"\r
- strokecolor="red"\r
- font="Dialog"\r
- textsize="10"\r
- >TestRun</text>\r
- <group name="Fig14.3"\r
- description="org.argouml.uml.diagram.ui.FigOperationsCompartment[1201, 733, 89, 20]"\r
- fill="1"\r
- fillcolor="white"\r
- stroke="0"\r
- strokecolor="black"\r
- >\r
- <private>\r
- </private>\r
- \r
- <rectangle name="Fig14.3.0"\r
- x="1201"\r
- y="733"\r
- width="89"\r
- height="20"\r
- fill="1"\r
- fillcolor="white"\r
- stroke="0"\r
- strokecolor="black"\r
- />\r
- <path name="Fig14.3.1"\r
- description="org.argouml.uml.diagram.ui.FigFeaturesCompartment$FigSeperator"\r
- fill="1"\r
- fillcolor="white"\r
- stroke="1"\r
- strokecolor="black"\r
- >\r
- <moveto x="1201"\r
- y="733" />\r
- <lineto x="1290"\r
- y="733" />\r
- </path>\r
- </group>\r
- <group name="Fig14.4"\r
- description="org.argouml.uml.diagram.ui.FigAttributesCompartment[1201, 712, 89, 20]"\r
- fill="1"\r
- fillcolor="white"\r
- stroke="0"\r
- strokecolor="black"\r
- >\r
- <private>\r
- </private>\r
- \r
- <rectangle name="Fig14.4.0"\r
- x="1201"\r
- y="712"\r
- width="89"\r
- height="20"\r
- fill="1"\r
- fillcolor="white"\r
- stroke="0"\r
- strokecolor="black"\r
- />\r
- <path name="Fig14.4.1"\r
- description="org.argouml.uml.diagram.ui.FigFeaturesCompartment$FigSeperator"\r
- fill="1"\r
- fillcolor="white"\r
- stroke="1"\r
- strokecolor="black"\r
- >\r
- <moveto x="1201"\r
- y="712" />\r
- <lineto x="1290"\r
- y="712" />\r
- </path>\r
- </group>\r
- <rectangle name="Fig14.5"\r
- x="1200"\r
- y="688"\r
- width="90"\r
- height="65"\r
- fill="0"\r
- fillcolor="white"\r
- stroke="1"\r
- strokecolor="black"\r
- />\r
- </group>\r
- <group name="Fig15"\r
- description="org.argouml.uml.diagram.ui.FigAssociation"\r
- href="-64--88-0-11-7e9e46a8:113ee067f97:-8000:000000000000077C"\r
- stroke="1"\r
- strokecolor="black"\r
- >\r
- <private>\r
- sourcePortFig="Fig14.0"\r
- destPortFig="Fig32"\r
- sourceFigNode="Fig14"\r
- destFigNode="Fig32"\r
- </private>\r
- <path name="Fig15.0"\r
- description="org.tigris.gef.presentation.FigPoly"\r
- fill="0"\r
- fillcolor="white"\r
- stroke="1"\r
- strokecolor="black"\r
- >\r
- <moveto x="1200"\r
- y="696" />\r
- <lineto x="1024"\r
- y="696" />\r
- <lineto x="1024"\r
- y="553" />\r
- </path>\r
- </group>\r
- <group name="Fig16"\r
- description="org.argouml.uml.diagram.static_structure.ui.FigClass[600, 432, 90, 65]pathVisible=false;operationsVisible=true;attributesVisible=true"\r
- href="-64--88-0-11-7e9e46a8:113ee067f97:-8000:0000000000000785"\r
- fill="1"\r
- fillcolor="white"\r
- stroke="1"\r
- strokecolor="black"\r
- >\r
- <private>\r
- </private>\r
- \r
- <rectangle name="Fig16.0"\r
- x="600"\r
- y="432"\r
- width="90"\r
- height="65"\r
- fill="1"\r
- fillcolor="white"\r
- stroke="0"\r
- strokecolor="black"\r
- />\r
- <group name="Fig16.1"\r
- description="org.argouml.uml.diagram.ui.FigStereotypesCompartment[600, 432, 90, 2]"\r
- href="-64--88-0-11-7e9e46a8:113ee067f97:-8000:0000000000000785"\r
- fill="1"\r
- fillcolor="white"\r
- stroke="1"\r
- strokecolor="black"\r
- >\r
- <private>\r
- </private>\r
- \r
- <rectangle name="Fig16.1.0"\r
- x="600"\r
- y="432"\r
- width="90"\r
- height="2"\r
- fill="1"\r
- fillcolor="white"\r
- stroke="1"\r
- strokecolor="black"\r
- />\r
- </group>\r
- <text name="Fig16.2"\r
- x="600"\r
- y="434"\r
- fill="1"\r
- fillcolor="white"\r
- stroke="0"\r
- strokecolor="red"\r
- font="Dialog"\r
- textsize="10"\r
- >DeploymentData</text>\r
- <group name="Fig16.3"\r
- description="org.argouml.uml.diagram.ui.FigOperationsCompartment[601, 477, 89, 20]"\r
- fill="1"\r
- fillcolor="white"\r
- stroke="0"\r
- strokecolor="black"\r
- >\r
- <private>\r
- </private>\r
- \r
- <rectangle name="Fig16.3.0"\r
- x="601"\r
- y="477"\r
- width="89"\r
- height="20"\r
- fill="1"\r
- fillcolor="white"\r
- stroke="0"\r
- strokecolor="black"\r
- />\r
- <path name="Fig16.3.1"\r
- description="org.argouml.uml.diagram.ui.FigFeaturesCompartment$FigSeperator"\r
- fill="1"\r
- fillcolor="white"\r
- stroke="1"\r
- strokecolor="black"\r
- >\r
- <moveto x="601"\r
- y="477" />\r
- <lineto x="690"\r
- y="477" />\r
- </path>\r
- </group>\r
- <group name="Fig16.4"\r
- description="org.argouml.uml.diagram.ui.FigAttributesCompartment[601, 456, 89, 20]"\r
- fill="1"\r
- fillcolor="white"\r
- stroke="0"\r
- strokecolor="black"\r
- >\r
- <private>\r
- </private>\r
- \r
- <rectangle name="Fig16.4.0"\r
- x="601"\r
- y="456"\r
- width="89"\r
- height="20"\r
- fill="1"\r
- fillcolor="white"\r
- stroke="0"\r
- strokecolor="black"\r
- />\r
- <path name="Fig16.4.1"\r
- description="org.argouml.uml.diagram.ui.FigFeaturesCompartment$FigSeperator"\r
- fill="1"\r
- fillcolor="white"\r
- stroke="1"\r
- strokecolor="black"\r
- >\r
- <moveto x="601"\r
- y="456" />\r
- <lineto x="690"\r
- y="456" />\r
- </path>\r
- </group>\r
- <rectangle name="Fig16.5"\r
- x="600"\r
- y="432"\r
- width="90"\r
- height="65"\r
- fill="0"\r
- fillcolor="white"\r
- stroke="1"\r
- strokecolor="black"\r
- />\r
- </group>\r
- <group name="Fig17"\r
- description="org.argouml.uml.diagram.static_structure.ui.FigClass[1112, 432, 90, 65]pathVisible=false;operationsVisible=true;attributesVisible=true"\r
- href="-64--88-0-11-7e9e46a8:113ee067f97:-8000:0000000000000787"\r
- fill="1"\r
- fillcolor="white"\r
- stroke="1"\r
- strokecolor="black"\r
- >\r
- <private>\r
- </private>\r
- \r
- <rectangle name="Fig17.0"\r
- x="1112"\r
- y="432"\r
- width="90"\r
- height="65"\r
- fill="1"\r
- fillcolor="white"\r
- stroke="0"\r
- strokecolor="black"\r
- />\r
- <group name="Fig17.1"\r
- description="org.argouml.uml.diagram.ui.FigStereotypesCompartment[1112, 432, 90, 2]"\r
- href="-64--88-0-11-7e9e46a8:113ee067f97:-8000:0000000000000787"\r
- fill="1"\r
- fillcolor="white"\r
- stroke="1"\r
- strokecolor="black"\r
- >\r
- <private>\r
- </private>\r
- \r
- <rectangle name="Fig17.1.0"\r
- x="1112"\r
- y="432"\r
- width="90"\r
- height="2"\r
- fill="1"\r
- fillcolor="white"\r
- stroke="1"\r
- strokecolor="black"\r
- />\r
- </group>\r
- <text name="Fig17.2"\r
- x="1112"\r
- y="434"\r
- fill="1"\r
- fillcolor="white"\r
- stroke="0"\r
- strokecolor="red"\r
- font="Dialog"\r
- textsize="10"\r
- >TestDefinition</text>\r
- <group name="Fig17.3"\r
- description="org.argouml.uml.diagram.ui.FigOperationsCompartment[1113, 477, 89, 20]"\r
- fill="1"\r
- fillcolor="white"\r
- stroke="0"\r
- strokecolor="black"\r
- >\r
- <private>\r
- </private>\r
- \r
- <rectangle name="Fig17.3.0"\r
- x="1113"\r
- y="477"\r
- width="89"\r
- height="20"\r
- fill="1"\r
- fillcolor="white"\r
- stroke="0"\r
- strokecolor="black"\r
- />\r
- <path name="Fig17.3.1"\r
- description="org.argouml.uml.diagram.ui.FigFeaturesCompartment$FigSeperator"\r
- fill="1"\r
- fillcolor="white"\r
- stroke="1"\r
- strokecolor="black"\r
- >\r
- <moveto x="1113"\r
- y="477" />\r
- <lineto x="1202"\r
- y="477" />\r
- </path>\r
- </group>\r
- <group name="Fig17.4"\r
- description="org.argouml.uml.diagram.ui.FigAttributesCompartment[1113, 456, 89, 20]"\r
- fill="1"\r
- fillcolor="white"\r
- stroke="0"\r
- strokecolor="black"\r
- >\r
- <private>\r
- </private>\r
- \r
- <rectangle name="Fig17.4.0"\r
- x="1113"\r
- y="456"\r
- width="89"\r
- height="20"\r
- fill="1"\r
- fillcolor="white"\r
- stroke="0"\r
- strokecolor="black"\r
- />\r
- <path name="Fig17.4.1"\r
- description="org.argouml.uml.diagram.ui.FigFeaturesCompartment$FigSeperator"\r
- fill="1"\r
- fillcolor="white"\r
- stroke="1"\r
- strokecolor="black"\r
- >\r
- <moveto x="1113"\r
- y="456" />\r
- <lineto x="1202"\r
- y="456" />\r
- </path>\r
- </group>\r
- <rectangle name="Fig17.5"\r
- x="1112"\r
- y="432"\r
- width="90"\r
- height="65"\r
- fill="0"\r
- fillcolor="white"\r
- stroke="1"\r
- strokecolor="black"\r
- />\r
- </group>\r
- <group name="Fig18"\r
- description="org.argouml.uml.diagram.ui.FigAssociation"\r
- href="-64--88-0-11-7e9e46a8:113ee067f97:-8000:0000000000000789"\r
- stroke="1"\r
- strokecolor="black"\r
- >\r
- <private>\r
- sourcePortFig="Fig12.0"\r
- destPortFig="Fig16.0"\r
- sourceFigNode="Fig12"\r
- destFigNode="Fig16"\r
- </private>\r
- <path name="Fig18.0"\r
- description="org.tigris.gef.presentation.FigPoly"\r
- fill="0"\r
- fillcolor="white"\r
- stroke="1"\r
- strokecolor="black"\r
- >\r
- <moveto x="744"\r
- y="688" />\r
- <lineto x="744"\r
- y="480" />\r
- <lineto x="690"\r
- y="480" />\r
- </path>\r
- </group>\r
- <group name="Fig19"\r
- description="org.argouml.uml.diagram.ui.FigAssociation"\r
- href="-64--88-0-11-7e9e46a8:113ee067f97:-8000:0000000000000792"\r
- stroke="1"\r
- strokecolor="black"\r
- >\r
- <private>\r
- sourcePortFig="Fig14.0"\r
- destPortFig="Fig17.0"\r
- sourceFigNode="Fig14"\r
- destFigNode="Fig17"\r
- </private>\r
- <path name="Fig19.0"\r
- description="org.tigris.gef.presentation.FigPoly"\r
- fill="0"\r
- fillcolor="white"\r
- stroke="1"\r
- strokecolor="black"\r
- >\r
- <moveto x="1256"\r
- y="688" />\r
- <lineto x="1256"\r
- y="464" />\r
- <lineto x="1202"\r
- y="464" />\r
- </path>\r
- </group>\r
- <group name="Fig20"\r
- description="org.argouml.uml.diagram.static_structure.ui.FigClass[32, 216, 88, 65]pathVisible=false;operationsVisible=true;attributesVisible=true"\r
- href="-64--88-0-11-7e9e46a8:113ee067f97:-8000:00000000000007B5"\r
- fill="1"\r
- fillcolor="white"\r
- stroke="1"\r
- strokecolor="black"\r
- >\r
- <private>\r
- </private>\r
- \r
- <rectangle name="Fig20.0"\r
- x="32"\r
- y="216"\r
- width="88"\r
- height="65"\r
- fill="1"\r
- fillcolor="white"\r
- stroke="0"\r
- strokecolor="black"\r
- />\r
- <group name="Fig20.1"\r
- description="org.argouml.uml.diagram.ui.FigStereotypesCompartment[32, 216, 88, 2]"\r
- href="-64--88-0-11-7e9e46a8:113ee067f97:-8000:00000000000007B5"\r
- fill="1"\r
- fillcolor="white"\r
- stroke="1"\r
- strokecolor="black"\r
- >\r
- <private>\r
- </private>\r
- \r
- <rectangle name="Fig20.1.0"\r
- x="32"\r
- y="216"\r
- width="88"\r
- height="2"\r
- fill="1"\r
- fillcolor="white"\r
- stroke="1"\r
- strokecolor="black"\r
- />\r
- </group>\r
- <text name="Fig20.2"\r
- x="32"\r
- y="218"\r
- fill="1"\r
- fillcolor="white"\r
- stroke="0"\r
- strokecolor="red"\r
- font="Dialog"\r
- textsize="10"\r
- >SourceLocation</text>\r
- <group name="Fig20.3"\r
- description="org.argouml.uml.diagram.ui.FigOperationsCompartment[33, 261, 87, 20]"\r
- fill="1"\r
- fillcolor="white"\r
- stroke="0"\r
- strokecolor="black"\r
- >\r
- <private>\r
- </private>\r
- \r
- <rectangle name="Fig20.3.0"\r
- x="33"\r
- y="261"\r
- width="87"\r
- height="20"\r
- fill="1"\r
- fillcolor="white"\r
- stroke="0"\r
- strokecolor="black"\r
- />\r
- <path name="Fig20.3.1"\r
- description="org.argouml.uml.diagram.ui.FigFeaturesCompartment$FigSeperator"\r
- fill="1"\r
- fillcolor="white"\r
- stroke="1"\r
- strokecolor="black"\r
- >\r
- <moveto x="33"\r
- y="261" />\r
- <lineto x="120"\r
- y="261" />\r
- </path>\r
- </group>\r
- <group name="Fig20.4"\r
- description="org.argouml.uml.diagram.ui.FigAttributesCompartment[33, 240, 87, 20]"\r
- fill="1"\r
- fillcolor="white"\r
- stroke="0"\r
- strokecolor="black"\r
- >\r
- <private>\r
- </private>\r
- \r
- <rectangle name="Fig20.4.0"\r
- x="33"\r
- y="240"\r
- width="87"\r
- height="20"\r
- fill="1"\r
- fillcolor="white"\r
- stroke="0"\r
- strokecolor="black"\r
- />\r
- <path name="Fig20.4.1"\r
- description="org.argouml.uml.diagram.ui.FigFeaturesCompartment$FigSeperator"\r
- fill="1"\r
- fillcolor="white"\r
- stroke="1"\r
- strokecolor="black"\r
- >\r
- <moveto x="33"\r
- y="240" />\r
- <lineto x="120"\r
- y="240" />\r
- </path>\r
- </group>\r
- <rectangle name="Fig20.5"\r
- x="32"\r
- y="216"\r
- width="88"\r
- height="65"\r
- fill="0"\r
- fillcolor="white"\r
- stroke="1"\r
- strokecolor="black"\r
- />\r
- </group>\r
- <group name="Fig21"\r
- description="org.argouml.uml.diagram.ui.FigAssociation"\r
- href="-64--88-0-11-7e9e46a8:113ee067f97:-8000:00000000000007C0"\r
- stroke="1"\r
- strokecolor="black"\r
- >\r
- <private>\r
- sourcePortFig="Fig7.0"\r
- destPortFig="Fig20.0"\r
- sourceFigNode="Fig7"\r
- destFigNode="Fig20"\r
- </private>\r
- <path name="Fig21.0"\r
- description="org.tigris.gef.presentation.FigPoly"\r
- fill="0"\r
- fillcolor="white"\r
- stroke="1"\r
- strokecolor="black"\r
- >\r
- <moveto x="168"\r
- y="312" />\r
- <lineto x="48"\r
- y="312" />\r
- <lineto x="48"\r
- y="281" />\r
- </path>\r
- </group>\r
- <group name="Fig22"\r
- description="org.argouml.uml.diagram.static_structure.ui.FigClass[640, 858, 90, 65]pathVisible=false;operationsVisible=true;attributesVisible=true"\r
- href="-64--88-0-11-7e9e46a8:113ee067f97:-8000:00000000000007CD"\r
- fill="1"\r
- fillcolor="white"\r
- stroke="1"\r
- strokecolor="black"\r
- >\r
- <private>\r
- </private>\r
- \r
- <rectangle name="Fig22.0"\r
- x="640"\r
- y="858"\r
- width="90"\r
- height="65"\r
- fill="1"\r
- fillcolor="white"\r
- stroke="0"\r
- strokecolor="black"\r
- />\r
- <group name="Fig22.1"\r
- description="org.argouml.uml.diagram.ui.FigStereotypesCompartment[640, 858, 90, 2]"\r
- href="-64--88-0-11-7e9e46a8:113ee067f97:-8000:00000000000007CD"\r
- fill="1"\r
- fillcolor="white"\r
- stroke="1"\r
- strokecolor="black"\r
- >\r
- <private>\r
- </private>\r
- \r
- <rectangle name="Fig22.1.0"\r
- x="640"\r
- y="858"\r
- width="90"\r
- height="2"\r
- fill="1"\r
- fillcolor="white"\r
- stroke="1"\r
- strokecolor="black"\r
- />\r
- </group>\r
- <text name="Fig22.2"\r
- x="640"\r
- y="860"\r
- fill="1"\r
- fillcolor="white"\r
- stroke="0"\r
- strokecolor="red"\r
- font="Dialog"\r
- textsize="10"\r
- >Process</text>\r
- <group name="Fig22.3"\r
- description="org.argouml.uml.diagram.ui.FigOperationsCompartment[641, 903, 89, 20]"\r
- fill="1"\r
- fillcolor="white"\r
- stroke="0"\r
- strokecolor="black"\r
- >\r
- <private>\r
- </private>\r
- \r
- <rectangle name="Fig22.3.0"\r
- x="641"\r
- y="903"\r
- width="89"\r
- height="20"\r
- fill="1"\r
- fillcolor="white"\r
- stroke="0"\r
- strokecolor="black"\r
- />\r
- <path name="Fig22.3.1"\r
- description="org.argouml.uml.diagram.ui.FigFeaturesCompartment$FigSeperator"\r
- fill="1"\r
- fillcolor="white"\r
- stroke="1"\r
- strokecolor="black"\r
- >\r
- <moveto x="641"\r
- y="903" />\r
- <lineto x="730"\r
- y="903" />\r
- </path>\r
- </group>\r
- <group name="Fig22.4"\r
- description="org.argouml.uml.diagram.ui.FigAttributesCompartment[641, 882, 89, 20]"\r
- fill="1"\r
- fillcolor="white"\r
- stroke="0"\r
- strokecolor="black"\r
- >\r
- <private>\r
- </private>\r
- \r
- <rectangle name="Fig22.4.0"\r
- x="641"\r
- y="882"\r
- width="89"\r
- height="20"\r
- fill="1"\r
- fillcolor="white"\r
- stroke="0"\r
- strokecolor="black"\r
- />\r
- <path name="Fig22.4.1"\r
- description="org.argouml.uml.diagram.ui.FigFeaturesCompartment$FigSeperator"\r
- fill="1"\r
- fillcolor="white"\r
- stroke="1"\r
- strokecolor="black"\r
- >\r
- <moveto x="641"\r
- y="882" />\r
- <lineto x="730"\r
- y="882" />\r
- </path>\r
- </group>\r
- <rectangle name="Fig22.5"\r
- x="640"\r
- y="858"\r
- width="90"\r
- height="65"\r
- fill="0"\r
- fillcolor="white"\r
- stroke="1"\r
- strokecolor="black"\r
- />\r
- </group>\r
- <group name="Fig23"\r
- description="org.argouml.uml.diagram.static_structure.ui.FigClass[640, 994, 96, 104]pathVisible=false;operationsVisible=true;attributesVisible=true"\r
- href="-64--88-0-11-7e9e46a8:113ee067f97:-8000:00000000000007CF"\r
- fill="1"\r
- fillcolor="white"\r
- stroke="1"\r
- strokecolor="black"\r
- >\r
- <private>\r
- </private>\r
- \r
- <rectangle name="Fig23.0"\r
- x="640"\r
- y="994"\r
- width="96"\r
- height="104"\r
- fill="1"\r
- fillcolor="white"\r
- stroke="0"\r
- strokecolor="black"\r
- />\r
- <group name="Fig23.1"\r
- description="org.argouml.uml.diagram.ui.FigStereotypesCompartment[640, 994, 96, 2]"\r
- href="-64--88-0-11-7e9e46a8:113ee067f97:-8000:00000000000007CF"\r
- fill="1"\r
- fillcolor="white"\r
- stroke="1"\r
- strokecolor="black"\r
- >\r
- <private>\r
- </private>\r
- \r
- <rectangle name="Fig23.1.0"\r
- x="640"\r
- y="994"\r
- width="96"\r
- height="2"\r
- fill="1"\r
- fillcolor="white"\r
- stroke="1"\r
- strokecolor="black"\r
- />\r
- </group>\r
- <text name="Fig23.2"\r
- x="640"\r
- y="996"\r
- fill="1"\r
- fillcolor="white"\r
- stroke="0"\r
- strokecolor="red"\r
- font="Dialog"\r
- textsize="10"\r
- >ProcessStep</text>\r
- <group name="Fig23.3"\r
- description="org.argouml.uml.diagram.ui.FigOperationsCompartment[641, 1073, 95, 24]"\r
- fill="1"\r
- fillcolor="white"\r
- stroke="0"\r
- strokecolor="black"\r
- >\r
- <private>\r
- </private>\r
- \r
- <rectangle name="Fig23.3.0"\r
- x="641"\r
- y="1073"\r
- width="95"\r
- height="24"\r
- fill="1"\r
- fillcolor="white"\r
- stroke="0"\r
- strokecolor="black"\r
- />\r
- <path name="Fig23.3.1"\r
- description="org.argouml.uml.diagram.ui.FigFeaturesCompartment$FigSeperator"\r
- fill="1"\r
- fillcolor="white"\r
- stroke="1"\r
- strokecolor="black"\r
- >\r
- <moveto x="641"\r
- y="1073" />\r
- <lineto x="736"\r
- y="1073" />\r
- </path>\r
- </group>\r
- <group name="Fig23.4"\r
- description="org.argouml.uml.diagram.ui.FigAttributesCompartment[641, 1018, 95, 54]"\r
- fill="1"\r
- fillcolor="white"\r
- stroke="0"\r
- strokecolor="black"\r
- >\r
- <private>\r
- </private>\r
- \r
- <rectangle name="Fig23.4.0"\r
- x="641"\r
- y="1018"\r
- width="95"\r
- height="54"\r
- fill="1"\r
- fillcolor="white"\r
- stroke="0"\r
- strokecolor="black"\r
- />\r
- <path name="Fig23.4.1"\r
- description="org.argouml.uml.diagram.ui.FigFeaturesCompartment$FigSeperator"\r
- fill="1"\r
- fillcolor="white"\r
- stroke="1"\r
- strokecolor="black"\r
- >\r
- <moveto x="641"\r
- y="1018" />\r
- <lineto x="736"\r
- y="1018" />\r
- </path>\r
- <text name="Fig23.4.2"\r
- x="641"\r
- y="1019"\r
- fill="0"\r
- fillcolor="white"\r
- stroke="0"\r
- strokecolor="black"\r
- font="Dialog"\r
- textsize="10"\r
- >start : Date</text>\r
- <text name="Fig23.4.3"\r
- x="641"\r
- y="1033"\r
- fill="0"\r
- fillcolor="white"\r
- stroke="0"\r
- strokecolor="black"\r
- font="Dialog"\r
- textsize="10"\r
- >end : Date</text>\r
- <text name="Fig23.4.4"\r
- x="641"\r
- y="1047"\r
- fill="0"\r
- fillcolor="white"\r
- stroke="0"\r
- strokecolor="black"\r
- font="Dialog"\r
- textsize="10"\r
- >description : String</text>\r
- </group>\r
- <rectangle name="Fig23.5"\r
- x="640"\r
- y="994"\r
- width="96"\r
- height="104"\r
- fill="0"\r
- fillcolor="white"\r
- stroke="1"\r
- strokecolor="black"\r
- />\r
- </group>\r
- <group name="Fig24"\r
- description="org.argouml.uml.diagram.ui.FigAssociation"\r
- href="-64--88-0-11-7e9e46a8:113ee067f97:-8000:00000000000007D1"\r
- stroke="1"\r
- strokecolor="black"\r
- >\r
- <private>\r
- sourcePortFig="Fig22.0"\r
- destPortFig="Fig23.0"\r
- sourceFigNode="Fig22"\r
- destFigNode="Fig23"\r
- </private>\r
- <path name="Fig24.0"\r
- description="org.tigris.gef.presentation.FigPoly"\r
- fill="0"\r
- fillcolor="white"\r
- stroke="1"\r
- strokecolor="black"\r
- >\r
- <moveto x="688"\r
- y="923" />\r
- <lineto x="688"\r
- y="994" />\r
- </path>\r
- </group>\r
- <group name="Fig25"\r
- description="org.argouml.uml.diagram.static_structure.ui.FigClass[832, 856, 90, 65]pathVisible=false;operationsVisible=true;attributesVisible=true"\r
- href="-64--88-0-11-7e9e46a8:113ee067f97:-8000:00000000000007EE"\r
- fill="1"\r
- fillcolor="white"\r
- stroke="1"\r
- strokecolor="black"\r
- >\r
- <private>\r
- </private>\r
- \r
- <rectangle name="Fig25.0"\r
- x="832"\r
- y="856"\r
- width="90"\r
- height="65"\r
- fill="1"\r
- fillcolor="white"\r
- stroke="0"\r
- strokecolor="black"\r
- />\r
- <group name="Fig25.1"\r
- description="org.argouml.uml.diagram.ui.FigStereotypesCompartment[832, 856, 90, 2]"\r
- href="-64--88-0-11-7e9e46a8:113ee067f97:-8000:00000000000007EE"\r
- fill="1"\r
- fillcolor="white"\r
- stroke="1"\r
- strokecolor="black"\r
- >\r
- <private>\r
- </private>\r
- \r
- <rectangle name="Fig25.1.0"\r
- x="832"\r
- y="856"\r
- width="90"\r
- height="2"\r
- fill="1"\r
- fillcolor="white"\r
- stroke="1"\r
- strokecolor="black"\r
- />\r
- </group>\r
- <text name="Fig25.2"\r
- x="832"\r
- y="858"\r
- fill="1"\r
- fillcolor="white"\r
- stroke="0"\r
- strokecolor="red"\r
- font="Dialog"\r
- textsize="10"\r
- >ProcessStatus</text>\r
- <group name="Fig25.3"\r
- description="org.argouml.uml.diagram.ui.FigOperationsCompartment[833, 901, 89, 20]"\r
- fill="1"\r
- fillcolor="white"\r
- stroke="0"\r
- strokecolor="black"\r
- >\r
- <private>\r
- </private>\r
- \r
- <rectangle name="Fig25.3.0"\r
- x="833"\r
- y="901"\r
- width="89"\r
- height="20"\r
- fill="1"\r
- fillcolor="white"\r
- stroke="0"\r
- strokecolor="black"\r
- />\r
- <path name="Fig25.3.1"\r
- description="org.argouml.uml.diagram.ui.FigFeaturesCompartment$FigSeperator"\r
- fill="1"\r
- fillcolor="white"\r
- stroke="1"\r
- strokecolor="black"\r
- >\r
- <moveto x="833"\r
- y="901" />\r
- <lineto x="922"\r
- y="901" />\r
- </path>\r
- </group>\r
- <group name="Fig25.4"\r
- description="org.argouml.uml.diagram.ui.FigAttributesCompartment[833, 880, 89, 20]"\r
- fill="1"\r
- fillcolor="white"\r
- stroke="0"\r
- strokecolor="black"\r
- >\r
- <private>\r
- </private>\r
- \r
- <rectangle name="Fig25.4.0"\r
- x="833"\r
- y="880"\r
- width="89"\r
- height="20"\r
- fill="1"\r
- fillcolor="white"\r
- stroke="0"\r
- strokecolor="black"\r
- />\r
- <path name="Fig25.4.1"\r
- description="org.argouml.uml.diagram.ui.FigFeaturesCompartment$FigSeperator"\r
- fill="1"\r
- fillcolor="white"\r
- stroke="1"\r
- strokecolor="black"\r
- >\r
- <moveto x="833"\r
- y="880" />\r
- <lineto x="922"\r
- y="880" />\r
- </path>\r
- </group>\r
- <rectangle name="Fig25.5"\r
- x="832"\r
- y="856"\r
- width="90"\r
- height="65"\r
- fill="0"\r
- fillcolor="white"\r
- stroke="1"\r
- strokecolor="black"\r
- />\r
- </group>\r
- <group name="Fig26"\r
- description="org.argouml.uml.diagram.ui.FigAssociation"\r
- href="-64--88-0-11-7e9e46a8:113ee067f97:-8000:00000000000007F0"\r
- stroke="1"\r
- strokecolor="black"\r
- >\r
- <private>\r
- sourcePortFig="Fig22.0"\r
- destPortFig="Fig25.0"\r
- sourceFigNode="Fig22"\r
- destFigNode="Fig25"\r
- </private>\r
- <path name="Fig26.0"\r
- description="org.tigris.gef.presentation.FigPoly"\r
- fill="0"\r
- fillcolor="white"\r
- stroke="1"\r
- strokecolor="black"\r
- >\r
- <moveto x="730"\r
- y="874" />\r
- <lineto x="832"\r
- y="874" />\r
- </path>\r
- </group>\r
- <group name="Fig27"\r
- description="org.argouml.uml.diagram.static_structure.ui.FigClass[824, 1008, 108, 69]pathVisible=false;operationsVisible=true;attributesVisible=true"\r
- href="-64--88-0-11-7e9e46a8:113ee067f97:-8000:0000000000000817"\r
- fill="1"\r
- fillcolor="white"\r
- stroke="1"\r
- strokecolor="black"\r
- >\r
- <private>\r
- </private>\r
- \r
- <rectangle name="Fig27.0"\r
- x="824"\r
- y="1008"\r
- width="108"\r
- height="69"\r
- fill="1"\r
- fillcolor="white"\r
- stroke="0"\r
- strokecolor="black"\r
- />\r
- <group name="Fig27.1"\r
- description="org.argouml.uml.diagram.ui.FigStereotypesCompartment[824, 1008, 108, 2]"\r
- href="-64--88-0-11-7e9e46a8:113ee067f97:-8000:0000000000000817"\r
- fill="1"\r
- fillcolor="white"\r
- stroke="1"\r
- strokecolor="black"\r
- >\r
- <private>\r
- </private>\r
- \r
- <rectangle name="Fig27.1.0"\r
- x="824"\r
- y="1008"\r
- width="108"\r
- height="2"\r
- fill="1"\r
- fillcolor="white"\r
- stroke="1"\r
- strokecolor="black"\r
- />\r
- </group>\r
- <text name="Fig27.2"\r
- x="824"\r
- y="1010"\r
- fill="1"\r
- fillcolor="white"\r
- stroke="0"\r
- strokecolor="red"\r
- font="Dialog"\r
- textsize="10"\r
- >Log</text>\r
- <group name="Fig27.3"\r
- description="org.argouml.uml.diagram.ui.FigOperationsCompartment[825, 1056, 107, 20]"\r
- fill="1"\r
- fillcolor="white"\r
- stroke="0"\r
- strokecolor="black"\r
- >\r
- <private>\r
- </private>\r
- \r
- <rectangle name="Fig27.3.0"\r
- x="825"\r
- y="1056"\r
- width="107"\r
- height="20"\r
- fill="1"\r
- fillcolor="white"\r
- stroke="0"\r
- strokecolor="black"\r
- />\r
- <path name="Fig27.3.1"\r
- description="org.argouml.uml.diagram.ui.FigFeaturesCompartment$FigSeperator"\r
- fill="1"\r
- fillcolor="white"\r
- stroke="1"\r
- strokecolor="black"\r
- >\r
- <moveto x="825"\r
- y="1056" />\r
- <lineto x="932"\r
- y="1056" />\r
- </path>\r
- </group>\r
- <group name="Fig27.4"\r
- description="org.argouml.uml.diagram.ui.FigAttributesCompartment[825, 1032, 107, 23]"\r
- fill="1"\r
- fillcolor="white"\r
- stroke="0"\r
- strokecolor="black"\r
- >\r
- <private>\r
- </private>\r
- \r
- <rectangle name="Fig27.4.0"\r
- x="825"\r
- y="1032"\r
- width="107"\r
- height="23"\r
- fill="1"\r
- fillcolor="white"\r
- stroke="0"\r
- strokecolor="black"\r
- />\r
- <path name="Fig27.4.1"\r
- description="org.argouml.uml.diagram.ui.FigFeaturesCompartment$FigSeperator"\r
- fill="1"\r
- fillcolor="white"\r
- stroke="1"\r
- strokecolor="black"\r
- >\r
- <moveto x="825"\r
- y="1032" />\r
- <lineto x="932"\r
- y="1032" />\r
- </path>\r
- <text name="Fig27.4.2"\r
- x="825"\r
- y="1033"\r
- fill="0"\r
- fillcolor="white"\r
- stroke="0"\r
- strokecolor="black"\r
- font="Dialog"\r
- textsize="10"\r
- >content : String</text>\r
- </group>\r
- <rectangle name="Fig27.5"\r
- x="824"\r
- y="1008"\r
- width="108"\r
- height="69"\r
- fill="0"\r
- fillcolor="white"\r
- stroke="1"\r
- strokecolor="black"\r
- />\r
- </group>\r
- <group name="Fig28"\r
- description="org.argouml.uml.diagram.ui.FigAssociation"\r
- href="-64--88-0-11-7e9e46a8:113ee067f97:-8000:000000000000084C"\r
- stroke="1"\r
- strokecolor="black"\r
- >\r
- <private>\r
- sourcePortFig="Fig23.0"\r
- destPortFig="Fig27.0"\r
- sourceFigNode="Fig23"\r
- destFigNode="Fig27"\r
- </private>\r
- <path name="Fig28.0"\r
- description="org.tigris.gef.presentation.FigPoly"\r
- fill="0"\r
- fillcolor="white"\r
- stroke="1"\r
- strokecolor="black"\r
- >\r
- <moveto x="736"\r
- y="1048" />\r
- <lineto x="824"\r
- y="1048" />\r
- </path>\r
- </group>\r
- <group name="Fig29"\r
- description="org.argouml.uml.diagram.static_structure.ui.FigClass[24, 690, 93, 65]pathVisible=false;operationsVisible=true;attributesVisible=true"\r
- href="-64--88-0-11-7e9e46a8:113ee067f97:-8000:0000000000000879"\r
- fill="1"\r
- fillcolor="white"\r
- stroke="1"\r
- strokecolor="black"\r
- >\r
- <private>\r
- </private>\r
- \r
- <rectangle name="Fig29.0"\r
- x="24"\r
- y="690"\r
- width="93"\r
- height="65"\r
- fill="1"\r
- fillcolor="white"\r
- stroke="0"\r
- strokecolor="black"\r
- />\r
- <group name="Fig29.1"\r
- description="org.argouml.uml.diagram.ui.FigStereotypesCompartment[24, 690, 93, 2]"\r
- href="-64--88-0-11-7e9e46a8:113ee067f97:-8000:0000000000000879"\r
- fill="1"\r
- fillcolor="white"\r
- stroke="1"\r
- strokecolor="black"\r
- >\r
- <private>\r
- </private>\r
- \r
- <rectangle name="Fig29.1.0"\r
- x="24"\r
- y="690"\r
- width="93"\r
- height="2"\r
- fill="1"\r
- fillcolor="white"\r
- stroke="1"\r
- strokecolor="black"\r
- />\r
- </group>\r
- <text name="Fig29.2"\r
- x="24"\r
- y="692"\r
- fill="1"\r
- fillcolor="white"\r
- stroke="0"\r
- strokecolor="red"\r
- font="Dialog"\r
- textsize="10"\r
- >ProcessSequence</text>\r
- <group name="Fig29.3"\r
- description="org.argouml.uml.diagram.ui.FigOperationsCompartment[25, 735, 92, 20]"\r
- fill="1"\r
- fillcolor="white"\r
- stroke="0"\r
- strokecolor="black"\r
- >\r
- <private>\r
- </private>\r
- \r
- <rectangle name="Fig29.3.0"\r
- x="25"\r
- y="735"\r
- width="92"\r
- height="20"\r
- fill="1"\r
- fillcolor="white"\r
- stroke="0"\r
- strokecolor="black"\r
- />\r
- <path name="Fig29.3.1"\r
- description="org.argouml.uml.diagram.ui.FigFeaturesCompartment$FigSeperator"\r
- fill="1"\r
- fillcolor="white"\r
- stroke="1"\r
- strokecolor="black"\r
- >\r
- <moveto x="25"\r
- y="735" />\r
- <lineto x="117"\r
- y="735" />\r
- </path>\r
- </group>\r
- <group name="Fig29.4"\r
- description="org.argouml.uml.diagram.ui.FigAttributesCompartment[25, 714, 92, 20]"\r
- fill="1"\r
- fillcolor="white"\r
- stroke="0"\r
- strokecolor="black"\r
- >\r
- <private>\r
- </private>\r
- \r
- <rectangle name="Fig29.4.0"\r
- x="25"\r
- y="714"\r
- width="92"\r
- height="20"\r
- fill="1"\r
- fillcolor="white"\r
- stroke="0"\r
- strokecolor="black"\r
- />\r
- <path name="Fig29.4.1"\r
- description="org.argouml.uml.diagram.ui.FigFeaturesCompartment$FigSeperator"\r
- fill="1"\r
- fillcolor="white"\r
- stroke="1"\r
- strokecolor="black"\r
- >\r
- <moveto x="25"\r
- y="714" />\r
- <lineto x="117"\r
- y="714" />\r
- </path>\r
- </group>\r
- <rectangle name="Fig29.5"\r
- x="24"\r
- y="690"\r
- width="93"\r
- height="65"\r
- fill="0"\r
- fillcolor="white"\r
- stroke="1"\r
- strokecolor="black"\r
- />\r
- </group>\r
- <group name="Fig30"\r
- description="org.argouml.uml.diagram.ui.FigAssociation"\r
- href="-64--88-0-11-7e9e46a8:113ee067f97:-8000:0000000000000880"\r
- stroke="1"\r
- strokecolor="black"\r
- >\r
- <private>\r
- sourcePortFig="Fig29.0"\r
- destPortFig="Fig22.0"\r
- sourceFigNode="Fig29"\r
- destFigNode="Fig22"\r
- </private>\r
- <path name="Fig30.0"\r
- description="org.tigris.gef.presentation.FigPoly"\r
- fill="0"\r
- fillcolor="white"\r
- stroke="1"\r
- strokecolor="black"\r
- >\r
- <moveto x="48"\r
- y="755" />\r
- <lineto x="48"\r
- y="874" />\r
- <lineto x="640"\r
- y="874" />\r
- </path>\r
- </group>\r
- <group name="Fig31"\r
- description="org.argouml.uml.diagram.static_structure.ui.FigClass[472, 488, 90, 65]pathVisible=false;operationsVisible=true;attributesVisible=true"\r
- href="-64--88-1-101--3f3f1022:1157622ef7f:-8000:00000000000008A8"\r
- fill="1"\r
- fillcolor="white"\r
- stroke="1"\r
- strokecolor="black"\r
- >\r
- <private>\r
- </private>\r
- \r
- <rectangle name="Fig31.0"\r
- x="472"\r
- y="488"\r
- width="90"\r
- height="65"\r
- fill="1"\r
- fillcolor="white"\r
- stroke="0"\r
- strokecolor="black"\r
- />\r
- <group name="Fig31.1"\r
- description="org.argouml.uml.diagram.ui.FigStereotypesCompartment[472, 488, 90, 2]"\r
- href="-64--88-1-101--3f3f1022:1157622ef7f:-8000:00000000000008A8"\r
- fill="1"\r
- fillcolor="white"\r
- stroke="1"\r
- strokecolor="black"\r
- >\r
- <private>\r
- </private>\r
- \r
- <rectangle name="Fig31.1.0"\r
- x="472"\r
- y="488"\r
- width="90"\r
- height="2"\r
- fill="1"\r
- fillcolor="white"\r
- stroke="1"\r
- strokecolor="black"\r
- />\r
- </group>\r
- <text name="Fig31.2"\r
- x="472"\r
- y="490"\r
- fill="1"\r
- fillcolor="white"\r
- stroke="0"\r
- strokecolor="red"\r
- font="Dialog"\r
- textsize="10"\r
- >Distribution</text>\r
- <group name="Fig31.3"\r
- description="org.argouml.uml.diagram.ui.FigOperationsCompartment[473, 533, 89, 20]"\r
- fill="1"\r
- fillcolor="white"\r
- stroke="0"\r
- strokecolor="black"\r
- >\r
- <private>\r
- </private>\r
- \r
- <rectangle name="Fig31.3.0"\r
- x="473"\r
- y="533"\r
- width="89"\r
- height="20"\r
- fill="1"\r
- fillcolor="white"\r
- stroke="0"\r
- strokecolor="black"\r
- />\r
- <path name="Fig31.3.1"\r
- description="org.argouml.uml.diagram.ui.FigFeaturesCompartment$FigSeperator"\r
- fill="1"\r
- fillcolor="white"\r
- stroke="1"\r
- strokecolor="black"\r
- >\r
- <moveto x="473"\r
- y="533" />\r
- <lineto x="562"\r
- y="533" />\r
- </path>\r
- </group>\r
- <group name="Fig31.4"\r
- description="org.argouml.uml.diagram.ui.FigAttributesCompartment[473, 512, 89, 20]"\r
- fill="1"\r
- fillcolor="white"\r
- stroke="0"\r
- strokecolor="black"\r
- >\r
- <private>\r
- </private>\r
- \r
- <rectangle name="Fig31.4.0"\r
- x="473"\r
- y="512"\r
- width="89"\r
- height="20"\r
- fill="1"\r
- fillcolor="white"\r
- stroke="0"\r
- strokecolor="black"\r
- />\r
- <path name="Fig31.4.1"\r
- description="org.argouml.uml.diagram.ui.FigFeaturesCompartment$FigSeperator"\r
- fill="1"\r
- fillcolor="white"\r
- stroke="1"\r
- strokecolor="black"\r
- >\r
- <moveto x="473"\r
- y="512" />\r
- <lineto x="562"\r
- y="512" />\r
- </path>\r
- </group>\r
- <rectangle name="Fig31.5"\r
- x="472"\r
- y="488"\r
- width="90"\r
- height="65"\r
- fill="0"\r
- fillcolor="white"\r
- stroke="1"\r
- strokecolor="black"\r
- />\r
- </group>\r
- <group name="Fig32"\r
- description="org.argouml.uml.diagram.static_structure.ui.FigClass[936, 488, 94, 65]pathVisible=false;operationsVisible=true;attributesVisible=true"\r
- href="-64--88-1-101--3f3f1022:1157622ef7f:-8000:00000000000008AA"\r
- fill="1"\r
- fillcolor="white"\r
- stroke="1"\r
- strokecolor="black"\r
- >\r
- <private>\r
- </private>\r
- \r
- <rectangle name="Fig32.0"\r
- x="936"\r
- y="488"\r
- width="94"\r
- height="65"\r
- fill="1"\r
- fillcolor="white"\r
- stroke="0"\r
- strokecolor="black"\r
- />\r
- <group name="Fig32.1"\r
- description="org.argouml.uml.diagram.ui.FigStereotypesCompartment[936, 488, 94, 2]"\r
- href="-64--88-1-101--3f3f1022:1157622ef7f:-8000:00000000000008AA"\r
- fill="1"\r
- fillcolor="white"\r
- stroke="1"\r
- strokecolor="black"\r
- >\r
- <private>\r
- </private>\r
- \r
- <rectangle name="Fig32.1.0"\r
- x="936"\r
- y="488"\r
- width="94"\r
- height="2"\r
- fill="1"\r
- fillcolor="white"\r
- stroke="1"\r
- strokecolor="black"\r
- />\r
- </group>\r
- <text name="Fig32.2"\r
- x="936"\r
- y="490"\r
- fill="1"\r
- fillcolor="white"\r
- stroke="0"\r
- strokecolor="red"\r
- font="Dialog"\r
- textsize="10"\r
- >DeployedSystem</text>\r
- <group name="Fig32.3"\r
- description="org.argouml.uml.diagram.ui.FigOperationsCompartment[937, 533, 93, 20]"\r
- fill="1"\r
- fillcolor="white"\r
- stroke="0"\r
- strokecolor="black"\r
- >\r
- <private>\r
- </private>\r
- \r
- <rectangle name="Fig32.3.0"\r
- x="937"\r
- y="533"\r
- width="93"\r
- height="20"\r
- fill="1"\r
- fillcolor="white"\r
- stroke="0"\r
- strokecolor="black"\r
- />\r
- <path name="Fig32.3.1"\r
- description="org.argouml.uml.diagram.ui.FigFeaturesCompartment$FigSeperator"\r
- fill="1"\r
- fillcolor="white"\r
- stroke="1"\r
- strokecolor="black"\r
- >\r
- <moveto x="937"\r
- y="533" />\r
- <lineto x="1030"\r
- y="533" />\r
- </path>\r
- </group>\r
- <group name="Fig32.4"\r
- description="org.argouml.uml.diagram.ui.FigAttributesCompartment[937, 512, 93, 20]"\r
- fill="1"\r
- fillcolor="white"\r
- stroke="0"\r
- strokecolor="black"\r
- >\r
- <private>\r
- </private>\r
- \r
- <rectangle name="Fig32.4.0"\r
- x="937"\r
- y="512"\r
- width="93"\r
- height="20"\r
- fill="1"\r
- fillcolor="white"\r
- stroke="0"\r
- strokecolor="black"\r
- />\r
- <path name="Fig32.4.1"\r
- description="org.argouml.uml.diagram.ui.FigFeaturesCompartment$FigSeperator"\r
- fill="1"\r
- fillcolor="white"\r
- stroke="1"\r
- strokecolor="black"\r
- >\r
- <moveto x="937"\r
- y="512" />\r
- <lineto x="1030"\r
- y="512" />\r
- </path>\r
- </group>\r
- <rectangle name="Fig32.5"\r
- x="936"\r
- y="488"\r
- width="94"\r
- height="65"\r
- fill="0"\r
- fillcolor="white"\r
- stroke="1"\r
- strokecolor="black"\r
- />\r
- </group>\r
- <group name="Fig33"\r
- description="org.argouml.uml.diagram.static_structure.ui.FigClass[464, 336, 99, 65]pathVisible=false;operationsVisible=true;attributesVisible=true"\r
- href="-64--88-1-101--3f3f1022:1157622ef7f:-8000:00000000000008AC"\r
- fill="1"\r
- fillcolor="white"\r
- stroke="1"\r
- strokecolor="black"\r
- >\r
- <private>\r
- </private>\r
- \r
- <rectangle name="Fig33.0"\r
- x="464"\r
- y="336"\r
- width="99"\r
- height="65"\r
- fill="1"\r
- fillcolor="white"\r
- stroke="0"\r
- strokecolor="black"\r
- />\r
- <group name="Fig33.1"\r
- description="org.argouml.uml.diagram.ui.FigStereotypesCompartment[464, 336, 99, 2]"\r
- href="-64--88-1-101--3f3f1022:1157622ef7f:-8000:00000000000008AC"\r
- fill="1"\r
- fillcolor="white"\r
- stroke="1"\r
- strokecolor="black"\r
- >\r
- <private>\r
- </private>\r
- \r
- <rectangle name="Fig33.1.0"\r
- x="464"\r
- y="336"\r
- width="99"\r
- height="2"\r
- fill="1"\r
- fillcolor="white"\r
- stroke="1"\r
- strokecolor="black"\r
- />\r
- </group>\r
- <text name="Fig33.2"\r
- x="464"\r
- y="338"\r
- fill="1"\r
- fillcolor="white"\r
- stroke="0"\r
- strokecolor="red"\r
- font="Dialog"\r
- textsize="10"\r
- >DistributionId</text>\r
- <group name="Fig33.3"\r
- description="org.argouml.uml.diagram.ui.FigOperationsCompartment[465, 381, 98, 20]"\r
- fill="1"\r
- fillcolor="white"\r
- stroke="0"\r
- strokecolor="black"\r
- >\r
- <private>\r
- </private>\r
- \r
- <rectangle name="Fig33.3.0"\r
- x="465"\r
- y="381"\r
- width="98"\r
- height="20"\r
- fill="1"\r
- fillcolor="white"\r
- stroke="0"\r
- strokecolor="black"\r
- />\r
- <path name="Fig33.3.1"\r
- description="org.argouml.uml.diagram.ui.FigFeaturesCompartment$FigSeperator"\r
- fill="1"\r
- fillcolor="white"\r
- stroke="1"\r
- strokecolor="black"\r
- >\r
- <moveto x="465"\r
- y="381" />\r
- <lineto x="563"\r
- y="381" />\r
- </path>\r
- </group>\r
- <group name="Fig33.4"\r
- description="org.argouml.uml.diagram.ui.FigAttributesCompartment[465, 360, 98, 20]"\r
- fill="1"\r
- fillcolor="white"\r
- stroke="0"\r
- strokecolor="black"\r
- >\r
- <private>\r
- </private>\r
- \r
- <rectangle name="Fig33.4.0"\r
- x="465"\r
- y="360"\r
- width="98"\r
- height="20"\r
- fill="1"\r
- fillcolor="white"\r
- stroke="0"\r
- strokecolor="black"\r
- />\r
- <path name="Fig33.4.1"\r
- description="org.argouml.uml.diagram.ui.FigFeaturesCompartment$FigSeperator"\r
- fill="1"\r
- fillcolor="white"\r
- stroke="1"\r
- strokecolor="black"\r
- >\r
- <moveto x="465"\r
- y="360" />\r
- <lineto x="563"\r
- y="360" />\r
- </path>\r
- </group>\r
- <rectangle name="Fig33.5"\r
- x="464"\r
- y="336"\r
- width="99"\r
- height="65"\r
- fill="0"\r
- fillcolor="white"\r
- stroke="1"\r
- strokecolor="black"\r
- />\r
- </group>\r
- <group name="Fig34"\r
- description="org.argouml.uml.diagram.static_structure.ui.FigClass[928, 336, 103, 65]pathVisible=false;operationsVisible=true;attributesVisible=true"\r
- href="-64--88-1-101--3f3f1022:1157622ef7f:-8000:00000000000008AE"\r
- fill="1"\r
- fillcolor="white"\r
- stroke="1"\r
- strokecolor="black"\r
- >\r
- <private>\r
- </private>\r
- \r
- <rectangle name="Fig34.0"\r
- x="928"\r
- y="336"\r
- width="103"\r
- height="65"\r
- fill="1"\r
- fillcolor="white"\r
- stroke="0"\r
- strokecolor="black"\r
- />\r
- <group name="Fig34.1"\r
- description="org.argouml.uml.diagram.ui.FigStereotypesCompartment[928, 336, 103, 2]"\r
- href="-64--88-1-101--3f3f1022:1157622ef7f:-8000:00000000000008AE"\r
- fill="1"\r
- fillcolor="white"\r
- stroke="1"\r
- strokecolor="black"\r
- >\r
- <private>\r
- </private>\r
- \r
- <rectangle name="Fig34.1.0"\r
- x="928"\r
- y="336"\r
- width="103"\r
- height="2"\r
- fill="1"\r
- fillcolor="white"\r
- stroke="1"\r
- strokecolor="black"\r
- />\r
- </group>\r
- <text name="Fig34.2"\r
- x="928"\r
- y="338"\r
- fill="1"\r
- fillcolor="white"\r
- stroke="0"\r
- strokecolor="red"\r
- font="Dialog"\r
- textsize="10"\r
- >DeployedSystemId</text>\r
- <group name="Fig34.3"\r
- description="org.argouml.uml.diagram.ui.FigOperationsCompartment[929, 381, 102, 20]"\r
- fill="1"\r
- fillcolor="white"\r
- stroke="0"\r
- strokecolor="black"\r
- >\r
- <private>\r
- </private>\r
- \r
- <rectangle name="Fig34.3.0"\r
- x="929"\r
- y="381"\r
- width="102"\r
- height="20"\r
- fill="1"\r
- fillcolor="white"\r
- stroke="0"\r
- strokecolor="black"\r
- />\r
- <path name="Fig34.3.1"\r
- description="org.argouml.uml.diagram.ui.FigFeaturesCompartment$FigSeperator"\r
- fill="1"\r
- fillcolor="white"\r
- stroke="1"\r
- strokecolor="black"\r
- >\r
- <moveto x="929"\r
- y="381" />\r
- <lineto x="1031"\r
- y="381" />\r
- </path>\r
- </group>\r
- <group name="Fig34.4"\r
- description="org.argouml.uml.diagram.ui.FigAttributesCompartment[929, 360, 102, 20]"\r
- fill="1"\r
- fillcolor="white"\r
- stroke="0"\r
- strokecolor="black"\r
- >\r
- <private>\r
- </private>\r
- \r
- <rectangle name="Fig34.4.0"\r
- x="929"\r
- y="360"\r
- width="102"\r
- height="20"\r
- fill="1"\r
- fillcolor="white"\r
- stroke="0"\r
- strokecolor="black"\r
- />\r
- <path name="Fig34.4.1"\r
- description="org.argouml.uml.diagram.ui.FigFeaturesCompartment$FigSeperator"\r
- fill="1"\r
- fillcolor="white"\r
- stroke="1"\r
- strokecolor="black"\r
- >\r
- <moveto x="929"\r
- y="360" />\r
- <lineto x="1031"\r
- y="360" />\r
- </path>\r
- </group>\r
- <rectangle name="Fig34.5"\r
- x="928"\r
- y="336"\r
- width="103"\r
- height="65"\r
- fill="0"\r
- fillcolor="white"\r
- stroke="1"\r
- strokecolor="black"\r
- />\r
- </group>\r
- <group name="Fig35"\r
- description="org.argouml.uml.diagram.ui.FigAssociation"\r
- href="-64--88-1-101--3f3f1022:1157622ef7f:-8000:00000000000008B0"\r
- stroke="1"\r
- strokecolor="black"\r
- >\r
- <private>\r
- sourcePortFig="Fig9.0"\r
- destPortFig="Fig31.0"\r
- sourceFigNode="Fig9"\r
- destFigNode="Fig31"\r
- </private>\r
- <path name="Fig35.0"\r
- description="org.tigris.gef.presentation.FigPoly"\r
- fill="0"\r
- fillcolor="white"\r
- stroke="1"\r
- strokecolor="black"\r
- >\r
- <moveto x="392"\r
- y="690" />\r
- <lineto x="392"\r
- y="520" />\r
- <lineto x="472"\r
- y="520" />\r
- </path>\r
- </group>\r
- <group name="Fig36"\r
- description="org.argouml.uml.diagram.ui.FigAssociation"\r
- href="-64--88-1-101--3f3f1022:1157622ef7f:-8000:00000000000008BB"\r
- stroke="1"\r
- strokecolor="black"\r
- >\r
- <private>\r
- sourcePortFig="Fig12.0"\r
- destPortFig="Fig32.0"\r
- sourceFigNode="Fig12"\r
- destFigNode="Fig32"\r
- </private>\r
- <path name="Fig36.0"\r
- description="org.tigris.gef.presentation.FigPoly"\r
- fill="0"\r
- fillcolor="white"\r
- stroke="1"\r
- strokecolor="black"\r
- >\r
- <moveto x="776"\r
- y="688" />\r
- <lineto x="776"\r
- y="536" />\r
- <lineto x="936"\r
- y="536" />\r
- </path>\r
- </group>\r
- <group name="Fig37"\r
- description="org.argouml.uml.diagram.ui.FigAssociation"\r
- href="-64--88-1-101--3f3f1022:1157622ef7f:-8000:00000000000008C6"\r
- stroke="1"\r
- strokecolor="black"\r
- >\r
- <private>\r
- sourcePortFig="Fig31.0"\r
- destPortFig="Fig33.0"\r
- sourceFigNode="Fig31"\r
- destFigNode="Fig33"\r
- </private>\r
- <path name="Fig37.0"\r
- description="org.tigris.gef.presentation.FigPoly"\r
- fill="0"\r
- fillcolor="white"\r
- stroke="1"\r
- strokecolor="black"\r
- >\r
- <moveto x="512"\r
- y="488" />\r
- <lineto x="512"\r
- y="401" />\r
- </path>\r
- </group>\r
- <group name="Fig38"\r
- description="org.argouml.uml.diagram.ui.FigAssociation"\r
- href="-64--88-1-101--3f3f1022:1157622ef7f:-8000:00000000000008CD"\r
- stroke="1"\r
- strokecolor="black"\r
- >\r
- <private>\r
- sourcePortFig="Fig32.0"\r
- destPortFig="Fig34.0"\r
- sourceFigNode="Fig32"\r
- destFigNode="Fig34"\r
- </private>\r
- <path name="Fig38.0"\r
- description="org.tigris.gef.presentation.FigPoly"\r
- fill="0"\r
- fillcolor="white"\r
- stroke="1"\r
- strokecolor="black"\r
- >\r
- <moveto x="976"\r
- y="488" />\r
- <lineto x="976"\r
- y="401" />\r
- </path>\r
- </group>\r
- <group name="Fig39"\r
- description="org.argouml.uml.diagram.static_structure.ui.FigClass[496, 72, 90, 65]pathVisible=false;operationsVisible=true;attributesVisible=true"\r
- href="-64--88-1-101-3dc093e3:1157f1866b2:-8000:00000000000008D0"\r
- fill="1"\r
- fillcolor="white"\r
- stroke="1"\r
- strokecolor="black"\r
- >\r
- <private>\r
- </private>\r
- \r
- <rectangle name="Fig39.0"\r
- x="496"\r
- y="72"\r
- width="90"\r
- height="65"\r
- fill="1"\r
- fillcolor="white"\r
- stroke="0"\r
- strokecolor="black"\r
- />\r
- <group name="Fig39.1"\r
- description="org.argouml.uml.diagram.ui.FigStereotypesCompartment[496, 72, 90, 2]"\r
- href="-64--88-1-101-3dc093e3:1157f1866b2:-8000:00000000000008D0"\r
- fill="1"\r
- fillcolor="white"\r
- stroke="1"\r
- strokecolor="black"\r
- >\r
- <private>\r
- </private>\r
- \r
- <rectangle name="Fig39.1.0"\r
- x="496"\r
- y="72"\r
- width="90"\r
- height="2"\r
- fill="1"\r
- fillcolor="white"\r
- stroke="1"\r
- strokecolor="black"\r
- />\r
- </group>\r
- <text name="Fig39.2"\r
- x="496"\r
- y="74"\r
- fill="1"\r
- fillcolor="white"\r
- stroke="0"\r
- strokecolor="red"\r
- font="Dialog"\r
- textsize="10"\r
- >DatabaseDump</text>\r
- <group name="Fig39.3"\r
- description="org.argouml.uml.diagram.ui.FigOperationsCompartment[497, 117, 89, 20]"\r
- fill="1"\r
- fillcolor="white"\r
- stroke="0"\r
- strokecolor="black"\r
- >\r
- <private>\r
- </private>\r
- \r
- <rectangle name="Fig39.3.0"\r
- x="497"\r
- y="117"\r
- width="89"\r
- height="20"\r
- fill="1"\r
- fillcolor="white"\r
- stroke="0"\r
- strokecolor="black"\r
- />\r
- <path name="Fig39.3.1"\r
- description="org.argouml.uml.diagram.ui.FigFeaturesCompartment$FigSeperator"\r
- fill="1"\r
- fillcolor="white"\r
- stroke="1"\r
- strokecolor="black"\r
- >\r
- <moveto x="497"\r
- y="117" />\r
- <lineto x="586"\r
- y="117" />\r
- </path>\r
- </group>\r
- <group name="Fig39.4"\r
- description="org.argouml.uml.diagram.ui.FigAttributesCompartment[497, 96, 89, 20]"\r
- fill="1"\r
- fillcolor="white"\r
- stroke="0"\r
- strokecolor="black"\r
- >\r
- <private>\r
- </private>\r
- \r
- <rectangle name="Fig39.4.0"\r
- x="497"\r
- y="96"\r
- width="89"\r
- height="20"\r
- fill="1"\r
- fillcolor="white"\r
- stroke="0"\r
- strokecolor="black"\r
- />\r
- <path name="Fig39.4.1"\r
- description="org.argouml.uml.diagram.ui.FigFeaturesCompartment$FigSeperator"\r
- fill="1"\r
- fillcolor="white"\r
- stroke="1"\r
- strokecolor="black"\r
- >\r
- <moveto x="497"\r
- y="96" />\r
- <lineto x="586"\r
- y="96" />\r
- </path>\r
- </group>\r
- <rectangle name="Fig39.5"\r
- x="496"\r
- y="72"\r
- width="90"\r
- height="65"\r
- fill="0"\r
- fillcolor="white"\r
- stroke="1"\r
- strokecolor="black"\r
- />\r
- </group>\r
- <group name="Fig40"\r
- description="org.argouml.uml.diagram.static_structure.ui.FigClass[768, 240, 134, 65]pathVisible=false;operationsVisible=true;attributesVisible=true"\r
- href="-64--88-1-101-3dc093e3:1157f1866b2:-8000:00000000000008D3"\r
- fill="1"\r
- fillcolor="white"\r
- stroke="1"\r
- strokecolor="black"\r
- >\r
- <private>\r
- </private>\r
- \r
- <rectangle name="Fig40.0"\r
- x="768"\r
- y="240"\r
- width="134"\r
- height="65"\r
- fill="1"\r
- fillcolor="white"\r
- stroke="0"\r
- strokecolor="black"\r
- />\r
- <group name="Fig40.1"\r
- description="org.argouml.uml.diagram.ui.FigStereotypesCompartment[768, 240, 134, 2]"\r
- href="-64--88-1-101-3dc093e3:1157f1866b2:-8000:00000000000008D3"\r
- fill="1"\r
- fillcolor="white"\r
- stroke="1"\r
- strokecolor="black"\r
- >\r
- <private>\r
- </private>\r
- \r
- <rectangle name="Fig40.1.0"\r
- x="768"\r
- y="240"\r
- width="134"\r
- height="2"\r
- fill="1"\r
- fillcolor="white"\r
- stroke="1"\r
- strokecolor="black"\r
- />\r
- </group>\r
- <text name="Fig40.2"\r
- x="768"\r
- y="242"\r
- fill="1"\r
- fillcolor="white"\r
- stroke="0"\r
- strokecolor="red"\r
- font="Dialog"\r
- textsize="10"\r
- >EnterpriseDeploymentData</text>\r
- <group name="Fig40.3"\r
- description="org.argouml.uml.diagram.ui.FigOperationsCompartment[769, 285, 133, 20]"\r
- fill="1"\r
- fillcolor="white"\r
- stroke="0"\r
- strokecolor="black"\r
- >\r
- <private>\r
- </private>\r
- \r
- <rectangle name="Fig40.3.0"\r
- x="769"\r
- y="285"\r
- width="133"\r
- height="20"\r
- fill="1"\r
- fillcolor="white"\r
- stroke="0"\r
- strokecolor="black"\r
- />\r
- <path name="Fig40.3.1"\r
- description="org.argouml.uml.diagram.ui.FigFeaturesCompartment$FigSeperator"\r
- fill="1"\r
- fillcolor="white"\r
- stroke="1"\r
- strokecolor="black"\r
- >\r
- <moveto x="769"\r
- y="285" />\r
- <lineto x="902"\r
- y="285" />\r
- </path>\r
- </group>\r
- <group name="Fig40.4"\r
- description="org.argouml.uml.diagram.ui.FigAttributesCompartment[769, 264, 133, 20]"\r
- fill="1"\r
- fillcolor="white"\r
- stroke="0"\r
- strokecolor="black"\r
- >\r
- <private>\r
- </private>\r
- \r
- <rectangle name="Fig40.4.0"\r
- x="769"\r
- y="264"\r
- width="133"\r
- height="20"\r
- fill="1"\r
- fillcolor="white"\r
- stroke="0"\r
- strokecolor="black"\r
- />\r
- <path name="Fig40.4.1"\r
- description="org.argouml.uml.diagram.ui.FigFeaturesCompartment$FigSeperator"\r
- fill="1"\r
- fillcolor="white"\r
- stroke="1"\r
- strokecolor="black"\r
- >\r
- <moveto x="769"\r
- y="264" />\r
- <lineto x="902"\r
- y="264" />\r
- </path>\r
- </group>\r
- <rectangle name="Fig40.5"\r
- x="768"\r
- y="240"\r
- width="134"\r
- height="65"\r
- fill="0"\r
- fillcolor="white"\r
- stroke="1"\r
- strokecolor="black"\r
- />\r
- </group>\r
- <group name="Fig41"\r
- description="org.argouml.uml.diagram.ui.FigAssociation"\r
- href="-64--88-1-101-3dc093e3:1157f1866b2:-8000:00000000000008D6"\r
- stroke="1"\r
- strokecolor="black"\r
- >\r
- <private>\r
- sourcePortFig="Fig40.0"\r
- destPortFig="Fig39.0"\r
- sourceFigNode="Fig40"\r
- destFigNode="Fig39"\r
- </private>\r
- <path name="Fig41.0"\r
- description="org.tigris.gef.presentation.FigPoly"\r
- fill="0"\r
- fillcolor="white"\r
- stroke="1"\r
- strokecolor="black"\r
- >\r
- <moveto x="768"\r
- y="272" />\r
- <lineto x="720"\r
- y="272" />\r
- <lineto x="720"\r
- y="112" />\r
- <lineto x="586"\r
- y="112" />\r
- </path>\r
- </group>\r
- <group name="Fig42"\r
- description="org.argouml.uml.diagram.static_structure.ui.FigClass[320, 168, 90, 65]pathVisible=false;operationsVisible=true;attributesVisible=true"\r
- href="-64--88-1-101-3dc093e3:1157f1866b2:-8000:00000000000008E5"\r
- fill="1"\r
- fillcolor="white"\r
- stroke="1"\r
- strokecolor="black"\r
- >\r
- <private>\r
- </private>\r
- \r
- <rectangle name="Fig42.0"\r
- x="320"\r
- y="168"\r
- width="90"\r
- height="65"\r
- fill="1"\r
- fillcolor="white"\r
- stroke="0"\r
- strokecolor="black"\r
- />\r
- <group name="Fig42.1"\r
- description="org.argouml.uml.diagram.ui.FigStereotypesCompartment[320, 168, 90, 2]"\r
- href="-64--88-1-101-3dc093e3:1157f1866b2:-8000:00000000000008E5"\r
- fill="1"\r
- fillcolor="white"\r
- stroke="1"\r
- strokecolor="black"\r
- >\r
- <private>\r
- </private>\r
- \r
- <rectangle name="Fig42.1.0"\r
- x="320"\r
- y="168"\r
- width="90"\r
- height="2"\r
- fill="1"\r
- fillcolor="white"\r
- stroke="1"\r
- strokecolor="black"\r
- />\r
- </group>\r
- <text name="Fig42.2"\r
- x="320"\r
- y="170"\r
- fill="1"\r
- fillcolor="white"\r
- stroke="0"\r
- strokecolor="red"\r
- font="Dialog"\r
- textsize="10"\r
- >VersionedFileSet</text>\r
- <group name="Fig42.3"\r
- description="org.argouml.uml.diagram.ui.FigOperationsCompartment[321, 213, 89, 20]"\r
- fill="1"\r
- fillcolor="white"\r
- stroke="0"\r
- strokecolor="black"\r
- >\r
- <private>\r
- </private>\r
- \r
- <rectangle name="Fig42.3.0"\r
- x="321"\r
- y="213"\r
- width="89"\r
- height="20"\r
- fill="1"\r
- fillcolor="white"\r
- stroke="0"\r
- strokecolor="black"\r
- />\r
- <path name="Fig42.3.1"\r
- description="org.argouml.uml.diagram.ui.FigFeaturesCompartment$FigSeperator"\r
- fill="1"\r
- fillcolor="white"\r
- stroke="1"\r
- strokecolor="black"\r
- >\r
- <moveto x="321"\r
- y="213" />\r
- <lineto x="410"\r
- y="213" />\r
- </path>\r
- </group>\r
- <group name="Fig42.4"\r
- description="org.argouml.uml.diagram.ui.FigAttributesCompartment[321, 192, 89, 20]"\r
- fill="1"\r
- fillcolor="white"\r
- stroke="0"\r
- strokecolor="black"\r
- >\r
- <private>\r
- </private>\r
- \r
- <rectangle name="Fig42.4.0"\r
- x="321"\r
- y="192"\r
- width="89"\r
- height="20"\r
- fill="1"\r
- fillcolor="white"\r
- stroke="0"\r
- strokecolor="black"\r
- />\r
- <path name="Fig42.4.1"\r
- description="org.argouml.uml.diagram.ui.FigFeaturesCompartment$FigSeperator"\r
- fill="1"\r
- fillcolor="white"\r
- stroke="1"\r
- strokecolor="black"\r
- >\r
- <moveto x="321"\r
- y="192" />\r
- <lineto x="410"\r
- y="192" />\r
- </path>\r
- </group>\r
- <rectangle name="Fig42.5"\r
- x="320"\r
- y="168"\r
- width="90"\r
- height="65"\r
- fill="0"\r
- fillcolor="white"\r
- stroke="1"\r
- strokecolor="black"\r
- />\r
- </group>\r
- <group name="Fig43"\r
- description="org.argouml.uml.diagram.ui.FigAssociation"\r
- href="-64--88-1-101-3dc093e3:1157f1866b2:-8000:00000000000008E7"\r
- stroke="1"\r
- strokecolor="black"\r
- >\r
- <private>\r
- sourcePortFig="Fig9.0"\r
- destPortFig="Fig83"\r
- sourceFigNode="Fig9"\r
- destFigNode="Fig83"\r
- </private>\r
- <path name="Fig43.0"\r
- description="org.tigris.gef.presentation.FigPoly"\r
- fill="0"\r
- fillcolor="white"\r
- stroke="1"\r
- strokecolor="black"\r
- >\r
- <moveto x="336"\r
- y="690" />\r
- <lineto x="336"\r
- y="497" />\r
- </path>\r
- </group>\r
- <group name="Fig44"\r
- description="org.argouml.uml.diagram.static_structure.ui.FigClass[488, 224, 106, 65]pathVisible=false;operationsVisible=true;attributesVisible=true"\r
- href="-64--88-1-101-3dc093e3:1157f1866b2:-8000:00000000000008F8"\r
- fill="1"\r
- fillcolor="white"\r
- stroke="1"\r
- strokecolor="black"\r
- >\r
- <private>\r
- </private>\r
- \r
- <rectangle name="Fig44.0"\r
- x="488"\r
- y="224"\r
- width="106"\r
- height="65"\r
- fill="1"\r
- fillcolor="white"\r
- stroke="0"\r
- strokecolor="black"\r
- />\r
- <group name="Fig44.1"\r
- description="org.argouml.uml.diagram.ui.FigStereotypesCompartment[488, 224, 106, 2]"\r
- href="-64--88-1-101-3dc093e3:1157f1866b2:-8000:00000000000008F8"\r
- fill="1"\r
- fillcolor="white"\r
- stroke="1"\r
- strokecolor="black"\r
- >\r
- <private>\r
- </private>\r
- \r
- <rectangle name="Fig44.1.0"\r
- x="488"\r
- y="224"\r
- width="106"\r
- height="2"\r
- fill="1"\r
- fillcolor="white"\r
- stroke="1"\r
- strokecolor="black"\r
- />\r
- </group>\r
- <text name="Fig44.2"\r
- x="488"\r
- y="226"\r
- fill="1"\r
- fillcolor="white"\r
- stroke="0"\r
- strokecolor="red"\r
- font="Dialog"\r
- textsize="10"\r
- >ConfigurationFileSet</text>\r
- <group name="Fig44.3"\r
- description="org.argouml.uml.diagram.ui.FigOperationsCompartment[489, 269, 105, 20]"\r
- fill="1"\r
- fillcolor="white"\r
- stroke="0"\r
- strokecolor="black"\r
- >\r
- <private>\r
- </private>\r
- \r
- <rectangle name="Fig44.3.0"\r
- x="489"\r
- y="269"\r
- width="105"\r
- height="20"\r
- fill="1"\r
- fillcolor="white"\r
- stroke="0"\r
- strokecolor="black"\r
- />\r
- <path name="Fig44.3.1"\r
- description="org.argouml.uml.diagram.ui.FigFeaturesCompartment$FigSeperator"\r
- fill="1"\r
- fillcolor="white"\r
- stroke="1"\r
- strokecolor="black"\r
- >\r
- <moveto x="489"\r
- y="269" />\r
- <lineto x="594"\r
- y="269" />\r
- </path>\r
- </group>\r
- <group name="Fig44.4"\r
- description="org.argouml.uml.diagram.ui.FigAttributesCompartment[489, 248, 105, 20]"\r
- fill="1"\r
- fillcolor="white"\r
- stroke="0"\r
- strokecolor="black"\r
- >\r
- <private>\r
- </private>\r
- \r
- <rectangle name="Fig44.4.0"\r
- x="489"\r
- y="248"\r
- width="105"\r
- height="20"\r
- fill="1"\r
- fillcolor="white"\r
- stroke="0"\r
- strokecolor="black"\r
- />\r
- <path name="Fig44.4.1"\r
- description="org.argouml.uml.diagram.ui.FigFeaturesCompartment$FigSeperator"\r
- fill="1"\r
- fillcolor="white"\r
- stroke="1"\r
- strokecolor="black"\r
- >\r
- <moveto x="489"\r
- y="248" />\r
- <lineto x="594"\r
- y="248" />\r
- </path>\r
- </group>\r
- <rectangle name="Fig44.5"\r
- x="488"\r
- y="224"\r
- width="106"\r
- height="65"\r
- fill="0"\r
- fillcolor="white"\r
- stroke="1"\r
- strokecolor="black"\r
- />\r
- </group>\r
- <group name="Fig45"\r
- description="org.argouml.uml.diagram.ui.FigAssociation"\r
- href="-64--88-1-101-3dc093e3:1157f1866b2:-8000:00000000000008FB"\r
- stroke="1"\r
- strokecolor="black"\r
- >\r
- <private>\r
- sourcePortFig="Fig40.0"\r
- destPortFig="Fig44.0"\r
- sourceFigNode="Fig40"\r
- destFigNode="Fig44"\r
- </private>\r
- <path name="Fig45.0"\r
- description="org.tigris.gef.presentation.FigPoly"\r
- fill="0"\r
- fillcolor="white"\r
- stroke="1"\r
- strokecolor="black"\r
- >\r
- <moveto x="768"\r
- y="272" />\r
- <lineto x="594"\r
- y="272" />\r
- </path>\r
- </group>\r
- <group name="Fig46"\r
- description="org.argouml.uml.diagram.static_structure.ui.FigClass[312, 64, 102, 81]pathVisible=false;operationsVisible=true;attributesVisible=true"\r
- href="-64--88-1-101-3dc093e3:1157f1866b2:-8000:0000000000000906"\r
- fill="1"\r
- fillcolor="white"\r
- stroke="1"\r
- strokecolor="black"\r
- >\r
- <private>\r
- </private>\r
- \r
- <rectangle name="Fig46.0"\r
- x="312"\r
- y="64"\r
- width="102"\r
- height="81"\r
- fill="1"\r
- fillcolor="white"\r
- stroke="0"\r
- strokecolor="black"\r
- />\r
- <group name="Fig46.1"\r
- description="org.argouml.uml.diagram.ui.FigStereotypesCompartment[312, 64, 102, 2]"\r
- href="-64--88-1-101-3dc093e3:1157f1866b2:-8000:0000000000000906"\r
- fill="1"\r
- fillcolor="white"\r
- stroke="1"\r
- strokecolor="black"\r
- >\r
- <private>\r
- </private>\r
- \r
- <rectangle name="Fig46.1.0"\r
- x="312"\r
- y="64"\r
- width="102"\r
- height="2"\r
- fill="1"\r
- fillcolor="white"\r
- stroke="1"\r
- strokecolor="black"\r
- />\r
- </group>\r
- <text name="Fig46.2"\r
- x="312"\r
- y="66"\r
- fill="1"\r
- fillcolor="white"\r
- stroke="0"\r
- strokecolor="red"\r
- font="Dialog"\r
- textsize="10"\r
- >VersionedHeavyFile</text>\r
- <group name="Fig46.3"\r
- description="org.argouml.uml.diagram.ui.FigOperationsCompartment[313, 125, 101, 20]"\r
- fill="1"\r
- fillcolor="white"\r
- stroke="0"\r
- strokecolor="black"\r
- >\r
- <private>\r
- </private>\r
- \r
- <rectangle name="Fig46.3.0"\r
- x="313"\r
- y="125"\r
- width="101"\r
- height="20"\r
- fill="1"\r
- fillcolor="white"\r
- stroke="0"\r
- strokecolor="black"\r
- />\r
- <path name="Fig46.3.1"\r
- description="org.argouml.uml.diagram.ui.FigFeaturesCompartment$FigSeperator"\r
- fill="1"\r
- fillcolor="white"\r
- stroke="1"\r
- strokecolor="black"\r
- >\r
- <moveto x="313"\r
- y="125" />\r
- <lineto x="414"\r
- y="125" />\r
- </path>\r
- </group>\r
- <group name="Fig46.4"\r
- description="org.argouml.uml.diagram.ui.FigAttributesCompartment[313, 88, 101, 36]"\r
- fill="1"\r
- fillcolor="white"\r
- stroke="0"\r
- strokecolor="black"\r
- >\r
- <private>\r
- </private>\r
- \r
- <rectangle name="Fig46.4.0"\r
- x="313"\r
- y="88"\r
- width="101"\r
- height="36"\r
- fill="1"\r
- fillcolor="white"\r
- stroke="0"\r
- strokecolor="black"\r
- />\r
- <path name="Fig46.4.1"\r
- description="org.argouml.uml.diagram.ui.FigFeaturesCompartment$FigSeperator"\r
- fill="1"\r
- fillcolor="white"\r
- stroke="1"\r
- strokecolor="black"\r
- >\r
- <moveto x="313"\r
- y="88" />\r
- <lineto x="414"\r
- y="88" />\r
- </path>\r
- <text name="Fig46.4.2"\r
- x="313"\r
- y="89"\r
- fill="0"\r
- fillcolor="white"\r
- stroke="0"\r
- strokecolor="black"\r
- font="Dialog"\r
- textsize="10"\r
- >id : long</text>\r
- <text name="Fig46.4.3"\r
- x="313"\r
- y="103"\r
- fill="0"\r
- fillcolor="white"\r
- stroke="0"\r
- strokecolor="black"\r
- font="Dialog"\r
- textsize="10"\r
- >version : int</text>\r
- </group>\r
- <rectangle name="Fig46.5"\r
- x="312"\r
- y="64"\r
- width="102"\r
- height="81"\r
- fill="0"\r
- fillcolor="white"\r
- stroke="1"\r
- strokecolor="black"\r
- />\r
- </group>\r
- <group name="Fig47"\r
- description="org.argouml.uml.diagram.static_structure.ui.FigClass[48, 64, 108, 65]pathVisible=false;operationsVisible=true;attributesVisible=true"\r
- href="-64--88-1-101-3dc093e3:1157f1866b2:-8000:0000000000000909"\r
- fill="1"\r
- fillcolor="white"\r
- stroke="1"\r
- strokecolor="black"\r
- >\r
- <private>\r
- </private>\r
- \r
- <rectangle name="Fig47.0"\r
- x="48"\r
- y="64"\r
- width="108"\r
- height="65"\r
- fill="1"\r
- fillcolor="white"\r
- stroke="0"\r
- strokecolor="black"\r
- />\r
- <group name="Fig47.1"\r
- description="org.argouml.uml.diagram.ui.FigStereotypesCompartment[48, 64, 108, 2]"\r
- href="-64--88-1-101-3dc093e3:1157f1866b2:-8000:0000000000000909"\r
- fill="1"\r
- fillcolor="white"\r
- stroke="1"\r
- strokecolor="black"\r
- >\r
- <private>\r
- </private>\r
- \r
- <rectangle name="Fig47.1.0"\r
- x="48"\r
- y="64"\r
- width="108"\r
- height="2"\r
- fill="1"\r
- fillcolor="white"\r
- stroke="1"\r
- strokecolor="black"\r
- />\r
- </group>\r
- <text name="Fig47.2"\r
- x="48"\r
- y="66"\r
- fill="1"\r
- fillcolor="white"\r
- stroke="0"\r
- strokecolor="red"\r
- font="Dialog"\r
- textsize="10"\r
- >HeavyFilesRepository</text>\r
- <group name="Fig47.3"\r
- description="org.argouml.uml.diagram.ui.FigOperationsCompartment[49, 109, 107, 20]"\r
- fill="1"\r
- fillcolor="white"\r
- stroke="0"\r
- strokecolor="black"\r
- >\r
- <private>\r
- </private>\r
- \r
- <rectangle name="Fig47.3.0"\r
- x="49"\r
- y="109"\r
- width="107"\r
- height="20"\r
- fill="1"\r
- fillcolor="white"\r
- stroke="0"\r
- strokecolor="black"\r
- />\r
- <path name="Fig47.3.1"\r
- description="org.argouml.uml.diagram.ui.FigFeaturesCompartment$FigSeperator"\r
- fill="1"\r
- fillcolor="white"\r
- stroke="1"\r
- strokecolor="black"\r
- >\r
- <moveto x="49"\r
- y="109" />\r
- <lineto x="156"\r
- y="109" />\r
- </path>\r
- </group>\r
- <group name="Fig47.4"\r
- description="org.argouml.uml.diagram.ui.FigAttributesCompartment[49, 88, 107, 20]"\r
- fill="1"\r
- fillcolor="white"\r
- stroke="0"\r
- strokecolor="black"\r
- >\r
- <private>\r
- </private>\r
- \r
- <rectangle name="Fig47.4.0"\r
- x="49"\r
- y="88"\r
- width="107"\r
- height="20"\r
- fill="1"\r
- fillcolor="white"\r
- stroke="0"\r
- strokecolor="black"\r
- />\r
- <path name="Fig47.4.1"\r
- description="org.argouml.uml.diagram.ui.FigFeaturesCompartment$FigSeperator"\r
- fill="1"\r
- fillcolor="white"\r
- stroke="1"\r
- strokecolor="black"\r
- >\r
- <moveto x="49"\r
- y="88" />\r
- <lineto x="156"\r
- y="88" />\r
- </path>\r
- </group>\r
- <rectangle name="Fig47.5"\r
- x="48"\r
- y="64"\r
- width="108"\r
- height="65"\r
- fill="0"\r
- fillcolor="white"\r
- stroke="1"\r
- strokecolor="black"\r
- />\r
- </group>\r
- <group name="Fig48"\r
- description="org.argouml.uml.diagram.ui.FigAssociation"\r
- href="-64--88-1-101-3dc093e3:1157f1866b2:-8000:000000000000090B"\r
- stroke="1"\r
- strokecolor="black"\r
- >\r
- <private>\r
- sourcePortFig="Fig47.0"\r
- destPortFig="Fig46.0"\r
- sourceFigNode="Fig47"\r
- destFigNode="Fig46"\r
- </private>\r
- <path name="Fig48.0"\r
- description="org.tigris.gef.presentation.FigPoly"\r
- fill="0"\r
- fillcolor="white"\r
- stroke="1"\r
- strokecolor="black"\r
- >\r
- <moveto x="156"\r
- y="104" />\r
- <lineto x="312"\r
- y="104" />\r
- </path>\r
- </group>\r
- <group name="Fig49"\r
- description="org.argouml.uml.diagram.static_structure.ui.FigClass[1112, 520, 90, 65]pathVisible=false;operationsVisible=true;attributesVisible=true"\r
- href="-64--88-1-101-3dc093e3:1157f1866b2:-8000:0000000000000926"\r
- fill="1"\r
- fillcolor="white"\r
- stroke="1"\r
- strokecolor="black"\r
- >\r
- <private>\r
- </private>\r
- \r
- <rectangle name="Fig49.0"\r
- x="1112"\r
- y="520"\r
- width="90"\r
- height="65"\r
- fill="1"\r
- fillcolor="white"\r
- stroke="0"\r
- strokecolor="black"\r
- />\r
- <group name="Fig49.1"\r
- description="org.argouml.uml.diagram.ui.FigStereotypesCompartment[1112, 520, 90, 2]"\r
- href="-64--88-1-101-3dc093e3:1157f1866b2:-8000:0000000000000926"\r
- fill="1"\r
- fillcolor="white"\r
- stroke="1"\r
- strokecolor="black"\r
- >\r
- <private>\r
- </private>\r
- \r
- <rectangle name="Fig49.1.0"\r
- x="1112"\r
- y="520"\r
- width="90"\r
- height="2"\r
- fill="1"\r
- fillcolor="white"\r
- stroke="1"\r
- strokecolor="black"\r
- />\r
- </group>\r
- <text name="Fig49.2"\r
- x="1112"\r
- y="522"\r
- fill="1"\r
- fillcolor="white"\r
- stroke="0"\r
- strokecolor="red"\r
- font="Dialog"\r
- textsize="10"\r
- >TestData</text>\r
- <group name="Fig49.3"\r
- description="org.argouml.uml.diagram.ui.FigOperationsCompartment[1113, 565, 89, 20]"\r
- fill="1"\r
- fillcolor="white"\r
- stroke="0"\r
- strokecolor="black"\r
- >\r
- <private>\r
- </private>\r
- \r
- <rectangle name="Fig49.3.0"\r
- x="1113"\r
- y="565"\r
- width="89"\r
- height="20"\r
- fill="1"\r
- fillcolor="white"\r
- stroke="0"\r
- strokecolor="black"\r
- />\r
- <path name="Fig49.3.1"\r
- description="org.argouml.uml.diagram.ui.FigFeaturesCompartment$FigSeperator"\r
- fill="1"\r
- fillcolor="white"\r
- stroke="1"\r
- strokecolor="black"\r
- >\r
- <moveto x="1113"\r
- y="565" />\r
- <lineto x="1202"\r
- y="565" />\r
- </path>\r
- </group>\r
- <group name="Fig49.4"\r
- description="org.argouml.uml.diagram.ui.FigAttributesCompartment[1113, 544, 89, 20]"\r
- fill="1"\r
- fillcolor="white"\r
- stroke="0"\r
- strokecolor="black"\r
- >\r
- <private>\r
- </private>\r
- \r
- <rectangle name="Fig49.4.0"\r
- x="1113"\r
- y="544"\r
- width="89"\r
- height="20"\r
- fill="1"\r
- fillcolor="white"\r
- stroke="0"\r
- strokecolor="black"\r
- />\r
- <path name="Fig49.4.1"\r
- description="org.argouml.uml.diagram.ui.FigFeaturesCompartment$FigSeperator"\r
- fill="1"\r
- fillcolor="white"\r
- stroke="1"\r
- strokecolor="black"\r
- >\r
- <moveto x="1113"\r
- y="544" />\r
- <lineto x="1202"\r
- y="544" />\r
- </path>\r
- </group>\r
- <rectangle name="Fig49.5"\r
- x="1112"\r
- y="520"\r
- width="90"\r
- height="65"\r
- fill="0"\r
- fillcolor="white"\r
- stroke="1"\r
- strokecolor="black"\r
- />\r
- </group>\r
- <group name="Fig50"\r
- description="org.argouml.uml.diagram.ui.FigAssociation"\r
- href="-64--88-1-101-3dc093e3:1157f1866b2:-8000:0000000000000928"\r
- stroke="1"\r
- strokecolor="black"\r
- >\r
- <private>\r
- sourcePortFig="Fig14.0"\r
- destPortFig="Fig49.0"\r
- sourceFigNode="Fig14"\r
- destFigNode="Fig49"\r
- </private>\r
- <path name="Fig50.0"\r
- description="org.tigris.gef.presentation.FigPoly"\r
- fill="0"\r
- fillcolor="white"\r
- stroke="1"\r
- strokecolor="black"\r
- >\r
- <moveto x="1224"\r
- y="688" />\r
- <lineto x="1224"\r
- y="552" />\r
- <lineto x="1202"\r
- y="552" />\r
- </path>\r
- </group>\r
- <group name="Fig51"\r
- description="org.argouml.uml.diagram.static_structure.ui.FigClass[600, 528, 90, 65]pathVisible=false;operationsVisible=true;attributesVisible=true"\r
- href="-64--88-1-101-3dc093e3:1157f1866b2:-8000:0000000000000931"\r
- fill="1"\r
- fillcolor="white"\r
- stroke="1"\r
- strokecolor="black"\r
- >\r
- <private>\r
- </private>\r
- \r
- <rectangle name="Fig51.0"\r
- x="600"\r
- y="528"\r
- width="90"\r
- height="65"\r
- fill="1"\r
- fillcolor="white"\r
- stroke="0"\r
- strokecolor="black"\r
- />\r
- <group name="Fig51.1"\r
- description="org.argouml.uml.diagram.ui.FigStereotypesCompartment[600, 528, 90, 2]"\r
- href="-64--88-1-101-3dc093e3:1157f1866b2:-8000:0000000000000931"\r
- fill="1"\r
- fillcolor="white"\r
- stroke="1"\r
- strokecolor="black"\r
- >\r
- <private>\r
- </private>\r
- \r
- <rectangle name="Fig51.1.0"\r
- x="600"\r
- y="528"\r
- width="90"\r
- height="2"\r
- fill="1"\r
- fillcolor="white"\r
- stroke="1"\r
- strokecolor="black"\r
- />\r
- </group>\r
- <text name="Fig51.2"\r
- x="600"\r
- y="530"\r
- fill="1"\r
- fillcolor="white"\r
- stroke="0"\r
- strokecolor="red"\r
- font="Dialog"\r
- textsize="10"\r
- >TargetData</text>\r
- <group name="Fig51.3"\r
- description="org.argouml.uml.diagram.ui.FigOperationsCompartment[601, 573, 89, 20]"\r
- fill="1"\r
- fillcolor="white"\r
- stroke="0"\r
- strokecolor="black"\r
- >\r
- <private>\r
- </private>\r
- \r
- <rectangle name="Fig51.3.0"\r
- x="601"\r
- y="573"\r
- width="89"\r
- height="20"\r
- fill="1"\r
- fillcolor="white"\r
- stroke="0"\r
- strokecolor="black"\r
- />\r
- <path name="Fig51.3.1"\r
- description="org.argouml.uml.diagram.ui.FigFeaturesCompartment$FigSeperator"\r
- fill="1"\r
- fillcolor="white"\r
- stroke="1"\r
- strokecolor="black"\r
- >\r
- <moveto x="601"\r
- y="573" />\r
- <lineto x="690"\r
- y="573" />\r
- </path>\r
- </group>\r
- <group name="Fig51.4"\r
- description="org.argouml.uml.diagram.ui.FigAttributesCompartment[601, 552, 89, 20]"\r
- fill="1"\r
- fillcolor="white"\r
- stroke="0"\r
- strokecolor="black"\r
- >\r
- <private>\r
- </private>\r
- \r
- <rectangle name="Fig51.4.0"\r
- x="601"\r
- y="552"\r
- width="89"\r
- height="20"\r
- fill="1"\r
- fillcolor="white"\r
- stroke="0"\r
- strokecolor="black"\r
- />\r
- <path name="Fig51.4.1"\r
- description="org.argouml.uml.diagram.ui.FigFeaturesCompartment$FigSeperator"\r
- fill="1"\r
- fillcolor="white"\r
- stroke="1"\r
- strokecolor="black"\r
- >\r
- <moveto x="601"\r
- y="552" />\r
- <lineto x="690"\r
- y="552" />\r
- </path>\r
- </group>\r
- <rectangle name="Fig51.5"\r
- x="600"\r
- y="528"\r
- width="90"\r
- height="65"\r
- fill="0"\r
- fillcolor="white"\r
- stroke="1"\r
- strokecolor="black"\r
- />\r
- </group>\r
- <group name="Fig52"\r
- description="org.argouml.uml.diagram.ui.FigAssociation"\r
- href="-64--88-1-101-3dc093e3:1157f1866b2:-8000:0000000000000933"\r
- stroke="1"\r
- strokecolor="black"\r
- >\r
- <private>\r
- sourcePortFig="Fig12.0"\r
- destPortFig="Fig51.0"\r
- sourceFigNode="Fig12"\r
- destFigNode="Fig51"\r
- </private>\r
- <path name="Fig52.0"\r
- description="org.tigris.gef.presentation.FigPoly"\r
- fill="0"\r
- fillcolor="white"\r
- stroke="1"\r
- strokecolor="black"\r
- >\r
- <moveto x="712"\r
- y="688" />\r
- <lineto x="712"\r
- y="560" />\r
- <lineto x="690"\r
- y="560" />\r
- </path>\r
- </group>\r
- <group name="Fig53"\r
- description="org.argouml.uml.diagram.static_structure.ui.FigClass[448, 1008, 90, 65]pathVisible=false;operationsVisible=true;attributesVisible=true"\r
- href="-64--88-1-101-3dc093e3:1157f1866b2:-8000:0000000000000945"\r
- fill="1"\r
- fillcolor="white"\r
- stroke="1"\r
- strokecolor="black"\r
- >\r
- <private>\r
- </private>\r
- \r
- <rectangle name="Fig53.0"\r
- x="448"\r
- y="1008"\r
- width="90"\r
- height="65"\r
- fill="1"\r
- fillcolor="white"\r
- stroke="0"\r
- strokecolor="black"\r
- />\r
- <group name="Fig53.1"\r
- description="org.argouml.uml.diagram.ui.FigStereotypesCompartment[448, 1008, 90, 2]"\r
- href="-64--88-1-101-3dc093e3:1157f1866b2:-8000:0000000000000945"\r
- fill="1"\r
- fillcolor="white"\r
- stroke="1"\r
- strokecolor="black"\r
- >\r
- <private>\r
- </private>\r
- \r
- <rectangle name="Fig53.1.0"\r
- x="448"\r
- y="1008"\r
- width="90"\r
- height="2"\r
- fill="1"\r
- fillcolor="white"\r
- stroke="1"\r
- strokecolor="black"\r
- />\r
- </group>\r
- <text name="Fig53.2"\r
- x="448"\r
- y="1010"\r
- fill="1"\r
- fillcolor="white"\r
- stroke="0"\r
- strokecolor="red"\r
- font="Dialog"\r
- textsize="10"\r
- >Attachement</text>\r
- <group name="Fig53.3"\r
- description="org.argouml.uml.diagram.ui.FigOperationsCompartment[449, 1053, 89, 20]"\r
- fill="1"\r
- fillcolor="white"\r
- stroke="0"\r
- strokecolor="black"\r
- >\r
- <private>\r
- </private>\r
- \r
- <rectangle name="Fig53.3.0"\r
- x="449"\r
- y="1053"\r
- width="89"\r
- height="20"\r
- fill="1"\r
- fillcolor="white"\r
- stroke="0"\r
- strokecolor="black"\r
- />\r
- <path name="Fig53.3.1"\r
- description="org.argouml.uml.diagram.ui.FigFeaturesCompartment$FigSeperator"\r
- fill="1"\r
- fillcolor="white"\r
- stroke="1"\r
- strokecolor="black"\r
- >\r
- <moveto x="449"\r
- y="1053" />\r
- <lineto x="538"\r
- y="1053" />\r
- </path>\r
- </group>\r
- <group name="Fig53.4"\r
- description="org.argouml.uml.diagram.ui.FigAttributesCompartment[449, 1032, 89, 20]"\r
- fill="1"\r
- fillcolor="white"\r
- stroke="0"\r
- strokecolor="black"\r
- >\r
- <private>\r
- </private>\r
- \r
- <rectangle name="Fig53.4.0"\r
- x="449"\r
- y="1032"\r
- width="89"\r
- height="20"\r
- fill="1"\r
- fillcolor="white"\r
- stroke="0"\r
- strokecolor="black"\r
- />\r
- <path name="Fig53.4.1"\r
- description="org.argouml.uml.diagram.ui.FigFeaturesCompartment$FigSeperator"\r
- fill="1"\r
- fillcolor="white"\r
- stroke="1"\r
- strokecolor="black"\r
- >\r
- <moveto x="449"\r
- y="1032" />\r
- <lineto x="538"\r
- y="1032" />\r
- </path>\r
- </group>\r
- <rectangle name="Fig53.5"\r
- x="448"\r
- y="1008"\r
- width="90"\r
- height="65"\r
- fill="0"\r
- fillcolor="white"\r
- stroke="1"\r
- strokecolor="black"\r
- />\r
- </group>\r
- <group name="Fig54"\r
- description="org.argouml.uml.diagram.ui.FigAssociation"\r
- href="-64--88-1-101-3dc093e3:1157f1866b2:-8000:0000000000000947"\r
- stroke="1"\r
- strokecolor="black"\r
- >\r
- <private>\r
- sourcePortFig="Fig23.0"\r
- destPortFig="Fig53.0"\r
- sourceFigNode="Fig23"\r
- destFigNode="Fig53"\r
- </private>\r
- <path name="Fig54.0"\r
- description="org.tigris.gef.presentation.FigPoly"\r
- fill="0"\r
- fillcolor="white"\r
- stroke="1"\r
- strokecolor="black"\r
- >\r
- <moveto x="640"\r
- y="1048" />\r
- <lineto x="538"\r
- y="1048" />\r
- </path>\r
- </group>\r
- <group name="Fig55"\r
- description="org.argouml.uml.diagram.static_structure.ui.FigClass[264, 936, 90, 65]pathVisible=false;operationsVisible=true;attributesVisible=true"\r
- href="-64--88-1-101-3dc093e3:1157f1866b2:-8000:0000000000000950"\r
- fill="1"\r
- fillcolor="white"\r
- stroke="1"\r
- strokecolor="black"\r
- >\r
- <private>\r
- </private>\r
- \r
- <rectangle name="Fig55.0"\r
- x="264"\r
- y="936"\r
- width="90"\r
- height="65"\r
- fill="1"\r
- fillcolor="white"\r
- stroke="0"\r
- strokecolor="black"\r
- />\r
- <group name="Fig55.1"\r
- description="org.argouml.uml.diagram.ui.FigStereotypesCompartment[264, 936, 90, 2]"\r
- href="-64--88-1-101-3dc093e3:1157f1866b2:-8000:0000000000000950"\r
- fill="1"\r
- fillcolor="white"\r
- stroke="1"\r
- strokecolor="black"\r
- >\r
- <private>\r
- </private>\r
- \r
- <rectangle name="Fig55.1.0"\r
- x="264"\r
- y="936"\r
- width="90"\r
- height="2"\r
- fill="1"\r
- fillcolor="white"\r
- stroke="1"\r
- strokecolor="black"\r
- />\r
- </group>\r
- <text name="Fig55.2"\r
- x="264"\r
- y="938"\r
- fill="1"\r
- fillcolor="white"\r
- stroke="0"\r
- strokecolor="red"\r
- font="Dialog"\r
- textsize="10"\r
- >URLAttachement</text>\r
- <group name="Fig55.3"\r
- description="org.argouml.uml.diagram.ui.FigOperationsCompartment[265, 981, 89, 20]"\r
- fill="1"\r
- fillcolor="white"\r
- stroke="0"\r
- strokecolor="black"\r
- >\r
- <private>\r
- </private>\r
- \r
- <rectangle name="Fig55.3.0"\r
- x="265"\r
- y="981"\r
- width="89"\r
- height="20"\r
- fill="1"\r
- fillcolor="white"\r
- stroke="0"\r
- strokecolor="black"\r
- />\r
- <path name="Fig55.3.1"\r
- description="org.argouml.uml.diagram.ui.FigFeaturesCompartment$FigSeperator"\r
- fill="1"\r
- fillcolor="white"\r
- stroke="1"\r
- strokecolor="black"\r
- >\r
- <moveto x="265"\r
- y="981" />\r
- <lineto x="354"\r
- y="981" />\r
- </path>\r
- </group>\r
- <group name="Fig55.4"\r
- description="org.argouml.uml.diagram.ui.FigAttributesCompartment[265, 960, 89, 20]"\r
- fill="1"\r
- fillcolor="white"\r
- stroke="0"\r
- strokecolor="black"\r
- >\r
- <private>\r
- </private>\r
- \r
- <rectangle name="Fig55.4.0"\r
- x="265"\r
- y="960"\r
- width="89"\r
- height="20"\r
- fill="1"\r
- fillcolor="white"\r
- stroke="0"\r
- strokecolor="black"\r
- />\r
- <path name="Fig55.4.1"\r
- description="org.argouml.uml.diagram.ui.FigFeaturesCompartment$FigSeperator"\r
- fill="1"\r
- fillcolor="white"\r
- stroke="1"\r
- strokecolor="black"\r
- >\r
- <moveto x="265"\r
- y="960" />\r
- <lineto x="354"\r
- y="960" />\r
- </path>\r
- </group>\r
- <rectangle name="Fig55.5"\r
- x="264"\r
- y="936"\r
- width="90"\r
- height="65"\r
- fill="0"\r
- fillcolor="white"\r
- stroke="1"\r
- strokecolor="black"\r
- />\r
- </group>\r
- <group name="Fig56"\r
- description="org.argouml.uml.diagram.static_structure.ui.FigClass[248, 1008, 117, 65]pathVisible=false;operationsVisible=true;attributesVisible=true"\r
- href="-64--88-1-101-3dc093e3:1157f1866b2:-8000:0000000000000952"\r
- fill="1"\r
- fillcolor="white"\r
- stroke="1"\r
- strokecolor="black"\r
- >\r
- <private>\r
- </private>\r
- \r
- <rectangle name="Fig56.0"\r
- x="248"\r
- y="1008"\r
- width="117"\r
- height="65"\r
- fill="1"\r
- fillcolor="white"\r
- stroke="0"\r
- strokecolor="black"\r
- />\r
- <group name="Fig56.1"\r
- description="org.argouml.uml.diagram.ui.FigStereotypesCompartment[248, 1008, 117, 2]"\r
- href="-64--88-1-101-3dc093e3:1157f1866b2:-8000:0000000000000952"\r
- fill="1"\r
- fillcolor="white"\r
- stroke="1"\r
- strokecolor="black"\r
- >\r
- <private>\r
- </private>\r
- \r
- <rectangle name="Fig56.1.0"\r
- x="248"\r
- y="1008"\r
- width="117"\r
- height="2"\r
- fill="1"\r
- fillcolor="white"\r
- stroke="1"\r
- strokecolor="black"\r
- />\r
- </group>\r
- <text name="Fig56.2"\r
- x="248"\r
- y="1010"\r
- fill="1"\r
- fillcolor="white"\r
- stroke="0"\r
- strokecolor="red"\r
- font="Dialog"\r
- textsize="10"\r
- >BinaryFileAttachement</text>\r
- <group name="Fig56.3"\r
- description="org.argouml.uml.diagram.ui.FigOperationsCompartment[249, 1053, 116, 20]"\r
- fill="1"\r
- fillcolor="white"\r
- stroke="0"\r
- strokecolor="black"\r
- >\r
- <private>\r
- </private>\r
- \r
- <rectangle name="Fig56.3.0"\r
- x="249"\r
- y="1053"\r
- width="116"\r
- height="20"\r
- fill="1"\r
- fillcolor="white"\r
- stroke="0"\r
- strokecolor="black"\r
- />\r
- <path name="Fig56.3.1"\r
- description="org.argouml.uml.diagram.ui.FigFeaturesCompartment$FigSeperator"\r
- fill="1"\r
- fillcolor="white"\r
- stroke="1"\r
- strokecolor="black"\r
- >\r
- <moveto x="249"\r
- y="1053" />\r
- <lineto x="365"\r
- y="1053" />\r
- </path>\r
- </group>\r
- <group name="Fig56.4"\r
- description="org.argouml.uml.diagram.ui.FigAttributesCompartment[249, 1032, 116, 20]"\r
- fill="1"\r
- fillcolor="white"\r
- stroke="0"\r
- strokecolor="black"\r
- >\r
- <private>\r
- </private>\r
- \r
- <rectangle name="Fig56.4.0"\r
- x="249"\r
- y="1032"\r
- width="116"\r
- height="20"\r
- fill="1"\r
- fillcolor="white"\r
- stroke="0"\r
- strokecolor="black"\r
- />\r
- <path name="Fig56.4.1"\r
- description="org.argouml.uml.diagram.ui.FigFeaturesCompartment$FigSeperator"\r
- fill="1"\r
- fillcolor="white"\r
- stroke="1"\r
- strokecolor="black"\r
- >\r
- <moveto x="249"\r
- y="1032" />\r
- <lineto x="365"\r
- y="1032" />\r
- </path>\r
- </group>\r
- <rectangle name="Fig56.5"\r
- x="248"\r
- y="1008"\r
- width="117"\r
- height="65"\r
- fill="0"\r
- fillcolor="white"\r
- stroke="1"\r
- strokecolor="black"\r
- />\r
- </group>\r
- <group name="Fig57"\r
- description="org.argouml.uml.diagram.static_structure.ui.FigClass[256, 1080, 107, 65]pathVisible=false;operationsVisible=true;attributesVisible=true"\r
- href="-64--88-1-101-3dc093e3:1157f1866b2:-8000:0000000000000954"\r
- fill="1"\r
- fillcolor="white"\r
- stroke="1"\r
- strokecolor="black"\r
- >\r
- <private>\r
- </private>\r
- \r
- <rectangle name="Fig57.0"\r
- x="256"\r
- y="1080"\r
- width="107"\r
- height="65"\r
- fill="1"\r
- fillcolor="white"\r
- stroke="0"\r
- strokecolor="black"\r
- />\r
- <group name="Fig57.1"\r
- description="org.argouml.uml.diagram.ui.FigStereotypesCompartment[256, 1080, 107, 2]"\r
- href="-64--88-1-101-3dc093e3:1157f1866b2:-8000:0000000000000954"\r
- fill="1"\r
- fillcolor="white"\r
- stroke="1"\r
- strokecolor="black"\r
- >\r
- <private>\r
- </private>\r
- \r
- <rectangle name="Fig57.1.0"\r
- x="256"\r
- y="1080"\r
- width="107"\r
- height="2"\r
- fill="1"\r
- fillcolor="white"\r
- stroke="1"\r
- strokecolor="black"\r
- />\r
- </group>\r
- <text name="Fig57.2"\r
- x="256"\r
- y="1082"\r
- fill="1"\r
- fillcolor="white"\r
- stroke="0"\r
- strokecolor="red"\r
- font="Dialog"\r
- textsize="10"\r
- >TestFileAttachement</text>\r
- <group name="Fig57.3"\r
- description="org.argouml.uml.diagram.ui.FigOperationsCompartment[257, 1125, 106, 20]"\r
- fill="1"\r
- fillcolor="white"\r
- stroke="0"\r
- strokecolor="black"\r
- >\r
- <private>\r
- </private>\r
- \r
- <rectangle name="Fig57.3.0"\r
- x="257"\r
- y="1125"\r
- width="106"\r
- height="20"\r
- fill="1"\r
- fillcolor="white"\r
- stroke="0"\r
- strokecolor="black"\r
- />\r
- <path name="Fig57.3.1"\r
- description="org.argouml.uml.diagram.ui.FigFeaturesCompartment$FigSeperator"\r
- fill="1"\r
- fillcolor="white"\r
- stroke="1"\r
- strokecolor="black"\r
- >\r
- <moveto x="257"\r
- y="1125" />\r
- <lineto x="363"\r
- y="1125" />\r
- </path>\r
- </group>\r
- <group name="Fig57.4"\r
- description="org.argouml.uml.diagram.ui.FigAttributesCompartment[257, 1104, 106, 20]"\r
- fill="1"\r
- fillcolor="white"\r
- stroke="0"\r
- strokecolor="black"\r
- >\r
- <private>\r
- </private>\r
- \r
- <rectangle name="Fig57.4.0"\r
- x="257"\r
- y="1104"\r
- width="106"\r
- height="20"\r
- fill="1"\r
- fillcolor="white"\r
- stroke="0"\r
- strokecolor="black"\r
- />\r
- <path name="Fig57.4.1"\r
- description="org.argouml.uml.diagram.ui.FigFeaturesCompartment$FigSeperator"\r
- fill="1"\r
- fillcolor="white"\r
- stroke="1"\r
- strokecolor="black"\r
- >\r
- <moveto x="257"\r
- y="1104" />\r
- <lineto x="363"\r
- y="1104" />\r
- </path>\r
- </group>\r
- <rectangle name="Fig57.5"\r
- x="256"\r
- y="1080"\r
- width="107"\r
- height="65"\r
- fill="0"\r
- fillcolor="white"\r
- stroke="1"\r
- strokecolor="black"\r
- />\r
- </group>\r
- <group name="Fig58"\r
- description="org.argouml.uml.diagram.static_structure.ui.FigClass[1400, 488, 90, 65]pathVisible=false;operationsVisible=true;attributesVisible=true"\r
- href="-64--88-1-101-3dc093e3:1157f1866b2:-8000:0000000000000959"\r
- fill="1"\r
- fillcolor="white"\r
- stroke="1"\r
- strokecolor="black"\r
- >\r
- <private>\r
- </private>\r
- \r
- <rectangle name="Fig58.0"\r
- x="1400"\r
- y="488"\r
- width="90"\r
- height="65"\r
- fill="1"\r
- fillcolor="white"\r
- stroke="0"\r
- strokecolor="black"\r
- />\r
- <group name="Fig58.1"\r
- description="org.argouml.uml.diagram.ui.FigStereotypesCompartment[1400, 488, 90, 2]"\r
- href="-64--88-1-101-3dc093e3:1157f1866b2:-8000:0000000000000959"\r
- fill="1"\r
- fillcolor="white"\r
- stroke="1"\r
- strokecolor="black"\r
- >\r
- <private>\r
- </private>\r
- \r
- <rectangle name="Fig58.1.0"\r
- x="1400"\r
- y="488"\r
- width="90"\r
- height="2"\r
- fill="1"\r
- fillcolor="white"\r
- stroke="1"\r
- strokecolor="black"\r
- />\r
- </group>\r
- <text name="Fig58.2"\r
- x="1400"\r
- y="490"\r
- fill="1"\r
- fillcolor="white"\r
- stroke="0"\r
- strokecolor="red"\r
- font="Dialog"\r
- textsize="10"\r
- >TestResult</text>\r
- <group name="Fig58.3"\r
- description="org.argouml.uml.diagram.ui.FigOperationsCompartment[1401, 533, 89, 20]"\r
- fill="1"\r
- fillcolor="white"\r
- stroke="0"\r
- strokecolor="black"\r
- >\r
- <private>\r
- </private>\r
- \r
- <rectangle name="Fig58.3.0"\r
- x="1401"\r
- y="533"\r
- width="89"\r
- height="20"\r
- fill="1"\r
- fillcolor="white"\r
- stroke="0"\r
- strokecolor="black"\r
- />\r
- <path name="Fig58.3.1"\r
- description="org.argouml.uml.diagram.ui.FigFeaturesCompartment$FigSeperator"\r
- fill="1"\r
- fillcolor="white"\r
- stroke="1"\r
- strokecolor="black"\r
- >\r
- <moveto x="1401"\r
- y="533" />\r
- <lineto x="1490"\r
- y="533" />\r
- </path>\r
- </group>\r
- <group name="Fig58.4"\r
- description="org.argouml.uml.diagram.ui.FigAttributesCompartment[1401, 512, 89, 20]"\r
- fill="1"\r
- fillcolor="white"\r
- stroke="0"\r
- strokecolor="black"\r
- >\r
- <private>\r
- </private>\r
- \r
- <rectangle name="Fig58.4.0"\r
- x="1401"\r
- y="512"\r
- width="89"\r
- height="20"\r
- fill="1"\r
- fillcolor="white"\r
- stroke="0"\r
- strokecolor="black"\r
- />\r
- <path name="Fig58.4.1"\r
- description="org.argouml.uml.diagram.ui.FigFeaturesCompartment$FigSeperator"\r
- fill="1"\r
- fillcolor="white"\r
- stroke="1"\r
- strokecolor="black"\r
- >\r
- <moveto x="1401"\r
- y="512" />\r
- <lineto x="1490"\r
- y="512" />\r
- </path>\r
- </group>\r
- <rectangle name="Fig58.5"\r
- x="1400"\r
- y="488"\r
- width="90"\r
- height="65"\r
- fill="0"\r
- fillcolor="white"\r
- stroke="1"\r
- strokecolor="black"\r
- />\r
- </group>\r
- <group name="Fig59"\r
- description="org.argouml.uml.diagram.ui.FigAssociation"\r
- href="-64--88-1-101-3dc093e3:1157f1866b2:-8000:000000000000095B"\r
- stroke="1"\r
- strokecolor="black"\r
- >\r
- <private>\r
- sourcePortFig="Fig14.0"\r
- destPortFig="Fig58.0"\r
- sourceFigNode="Fig14"\r
- destFigNode="Fig58"\r
- </private>\r
- <path name="Fig59.0"\r
- description="org.tigris.gef.presentation.FigPoly"\r
- fill="0"\r
- fillcolor="white"\r
- stroke="1"\r
- strokecolor="black"\r
- >\r
- <moveto x="1280"\r
- y="688" />\r
- <lineto x="1280"\r
- y="520" />\r
- <lineto x="1400"\r
- y="520" />\r
- </path>\r
- </group>\r
- <group name="Fig60"\r
- description="org.argouml.uml.diagram.static_structure.ui.FigClass[1400, 336, 90, 65]pathVisible=false;operationsVisible=true;attributesVisible=true"\r
- href="-64--88-1-101-3dc093e3:1157f1866b2:-8000:0000000000000966"\r
- fill="1"\r
- fillcolor="white"\r
- stroke="1"\r
- strokecolor="black"\r
- >\r
- <private>\r
- </private>\r
- \r
- <rectangle name="Fig60.0"\r
- x="1400"\r
- y="336"\r
- width="90"\r
- height="65"\r
- fill="1"\r
- fillcolor="white"\r
- stroke="0"\r
- strokecolor="black"\r
- />\r
- <group name="Fig60.1"\r
- description="org.argouml.uml.diagram.ui.FigStereotypesCompartment[1400, 336, 90, 2]"\r
- href="-64--88-1-101-3dc093e3:1157f1866b2:-8000:0000000000000966"\r
- fill="1"\r
- fillcolor="white"\r
- stroke="1"\r
- strokecolor="black"\r
- >\r
- <private>\r
- </private>\r
- \r
- <rectangle name="Fig60.1.0"\r
- x="1400"\r
- y="336"\r
- width="90"\r
- height="2"\r
- fill="1"\r
- fillcolor="white"\r
- stroke="1"\r
- strokecolor="black"\r
- />\r
- </group>\r
- <text name="Fig60.2"\r
- x="1400"\r
- y="338"\r
- fill="1"\r
- fillcolor="white"\r
- stroke="0"\r
- strokecolor="red"\r
- font="Dialog"\r
- textsize="10"\r
- >TestResultId</text>\r
- <group name="Fig60.3"\r
- description="org.argouml.uml.diagram.ui.FigOperationsCompartment[1401, 381, 89, 20]"\r
- fill="1"\r
- fillcolor="white"\r
- stroke="0"\r
- strokecolor="black"\r
- >\r
- <private>\r
- </private>\r
- \r
- <rectangle name="Fig60.3.0"\r
- x="1401"\r
- y="381"\r
- width="89"\r
- height="20"\r
- fill="1"\r
- fillcolor="white"\r
- stroke="0"\r
- strokecolor="black"\r
- />\r
- <path name="Fig60.3.1"\r
- description="org.argouml.uml.diagram.ui.FigFeaturesCompartment$FigSeperator"\r
- fill="1"\r
- fillcolor="white"\r
- stroke="1"\r
- strokecolor="black"\r
- >\r
- <moveto x="1401"\r
- y="381" />\r
- <lineto x="1490"\r
- y="381" />\r
- </path>\r
- </group>\r
- <group name="Fig60.4"\r
- description="org.argouml.uml.diagram.ui.FigAttributesCompartment[1401, 360, 89, 20]"\r
- fill="1"\r
- fillcolor="white"\r
- stroke="0"\r
- strokecolor="black"\r
- >\r
- <private>\r
- </private>\r
- \r
- <rectangle name="Fig60.4.0"\r
- x="1401"\r
- y="360"\r
- width="89"\r
- height="20"\r
- fill="1"\r
- fillcolor="white"\r
- stroke="0"\r
- strokecolor="black"\r
- />\r
- <path name="Fig60.4.1"\r
- description="org.argouml.uml.diagram.ui.FigFeaturesCompartment$FigSeperator"\r
- fill="1"\r
- fillcolor="white"\r
- stroke="1"\r
- strokecolor="black"\r
- >\r
- <moveto x="1401"\r
- y="360" />\r
- <lineto x="1490"\r
- y="360" />\r
- </path>\r
- </group>\r
- <rectangle name="Fig60.5"\r
- x="1400"\r
- y="336"\r
- width="90"\r
- height="65"\r
- fill="0"\r
- fillcolor="white"\r
- stroke="1"\r
- strokecolor="black"\r
- />\r
- </group>\r
- <group name="Fig61"\r
- description="org.argouml.uml.diagram.ui.FigAssociation"\r
- href="-64--88-1-101-3dc093e3:1157f1866b2:-8000:0000000000000968"\r
- stroke="1"\r
- strokecolor="black"\r
- >\r
- <private>\r
- sourcePortFig="Fig58.0"\r
- destPortFig="Fig60.0"\r
- sourceFigNode="Fig58"\r
- destFigNode="Fig60"\r
- </private>\r
- <path name="Fig61.0"\r
- description="org.tigris.gef.presentation.FigPoly"\r
- fill="0"\r
- fillcolor="white"\r
- stroke="1"\r
- strokecolor="black"\r
- >\r
- <moveto x="1440"\r
- y="488" />\r
- <lineto x="1440"\r
- y="401" />\r
- </path>\r
- </group>\r
- <group name="Fig62"\r
- description="org.argouml.uml.diagram.ui.FigAssociation"\r
- href="-64--88-1-101-3dc093e3:1157f1866b2:-8000:000000000000096F"\r
- stroke="1"\r
- strokecolor="black"\r
- >\r
- <private>\r
- sourcePortFig="Fig60.0"\r
- destPortFig="Fig34.0"\r
- sourceFigNode="Fig60"\r
- destFigNode="Fig34"\r
- </private>\r
- <path name="Fig62.0"\r
- description="org.tigris.gef.presentation.FigPoly"\r
- fill="0"\r
- fillcolor="white"\r
- stroke="1"\r
- strokecolor="black"\r
- >\r
- <moveto x="1400"\r
- y="368" />\r
- <lineto x="1031"\r
- y="368" />\r
- </path>\r
- </group>\r
- <group name="Fig63"\r
- description="org.argouml.uml.diagram.ui.FigAssociation"\r
- href="-64--88-1-101-3dc093e3:1157f1866b2:-8000:0000000000000976"\r
- stroke="1"\r
- strokecolor="black"\r
- >\r
- <private>\r
- sourcePortFig="Fig34.0"\r
- destPortFig="Fig33.0"\r
- sourceFigNode="Fig34"\r
- destFigNode="Fig33"\r
- </private>\r
- <path name="Fig63.0"\r
- description="org.tigris.gef.presentation.FigPoly"\r
- fill="0"\r
- fillcolor="white"\r
- stroke="1"\r
- strokecolor="black"\r
- >\r
- <moveto x="928"\r
- y="368" />\r
- <lineto x="563"\r
- y="368" />\r
- </path>\r
- </group>\r
- <group name="Fig64"\r
- description="org.argouml.uml.diagram.static_structure.ui.FigClass[1584, 488, 90, 65]pathVisible=false;operationsVisible=true;attributesVisible=true"\r
- href="-64--88-1-101-3dc093e3:1157f1866b2:-8000:0000000000000983"\r
- fill="1"\r
- fillcolor="white"\r
- stroke="1"\r
- strokecolor="black"\r
- >\r
- <private>\r
- </private>\r
- \r
- <rectangle name="Fig64.0"\r
- x="1584"\r
- y="488"\r
- width="90"\r
- height="65"\r
- fill="1"\r
- fillcolor="white"\r
- stroke="0"\r
- strokecolor="black"\r
- />\r
- <group name="Fig64.1"\r
- description="org.argouml.uml.diagram.ui.FigStereotypesCompartment[1584, 488, 90, 2]"\r
- href="-64--88-1-101-3dc093e3:1157f1866b2:-8000:0000000000000983"\r
- fill="1"\r
- fillcolor="white"\r
- stroke="1"\r
- strokecolor="black"\r
- >\r
- <private>\r
- </private>\r
- \r
- <rectangle name="Fig64.1.0"\r
- x="1584"\r
- y="488"\r
- width="90"\r
- height="2"\r
- fill="1"\r
- fillcolor="white"\r
- stroke="1"\r
- strokecolor="black"\r
- />\r
- </group>\r
- <text name="Fig64.2"\r
- x="1584"\r
- y="490"\r
- fill="1"\r
- fillcolor="white"\r
- stroke="0"\r
- strokecolor="red"\r
- font="Dialog"\r
- textsize="10"\r
- >TestReport</text>\r
- <group name="Fig64.3"\r
- description="org.argouml.uml.diagram.ui.FigOperationsCompartment[1585, 533, 89, 20]"\r
- fill="1"\r
- fillcolor="white"\r
- stroke="0"\r
- strokecolor="black"\r
- >\r
- <private>\r
- </private>\r
- \r
- <rectangle name="Fig64.3.0"\r
- x="1585"\r
- y="533"\r
- width="89"\r
- height="20"\r
- fill="1"\r
- fillcolor="white"\r
- stroke="0"\r
- strokecolor="black"\r
- />\r
- <path name="Fig64.3.1"\r
- description="org.argouml.uml.diagram.ui.FigFeaturesCompartment$FigSeperator"\r
- fill="1"\r
- fillcolor="white"\r
- stroke="1"\r
- strokecolor="black"\r
- >\r
- <moveto x="1585"\r
- y="533" />\r
- <lineto x="1674"\r
- y="533" />\r
- </path>\r
- </group>\r
- <group name="Fig64.4"\r
- description="org.argouml.uml.diagram.ui.FigAttributesCompartment[1585, 512, 89, 20]"\r
- fill="1"\r
- fillcolor="white"\r
- stroke="0"\r
- strokecolor="black"\r
- >\r
- <private>\r
- </private>\r
- \r
- <rectangle name="Fig64.4.0"\r
- x="1585"\r
- y="512"\r
- width="89"\r
- height="20"\r
- fill="1"\r
- fillcolor="white"\r
- stroke="0"\r
- strokecolor="black"\r
- />\r
- <path name="Fig64.4.1"\r
- description="org.argouml.uml.diagram.ui.FigFeaturesCompartment$FigSeperator"\r
- fill="1"\r
- fillcolor="white"\r
- stroke="1"\r
- strokecolor="black"\r
- >\r
- <moveto x="1585"\r
- y="512" />\r
- <lineto x="1674"\r
- y="512" />\r
- </path>\r
- </group>\r
- <rectangle name="Fig64.5"\r
- x="1584"\r
- y="488"\r
- width="90"\r
- height="65"\r
- fill="0"\r
- fillcolor="white"\r
- stroke="1"\r
- strokecolor="black"\r
- />\r
- </group>\r
- <group name="Fig65"\r
- description="org.argouml.uml.diagram.ui.FigAssociation"\r
- href="-64--88-1-101-3dc093e3:1157f1866b2:-8000:0000000000000985"\r
- stroke="1"\r
- strokecolor="black"\r
- >\r
- <private>\r
- sourcePortFig="Fig64.0"\r
- destPortFig="Fig58.0"\r
- sourceFigNode="Fig64"\r
- destFigNode="Fig58"\r
- </private>\r
- <path name="Fig65.0"\r
- description="org.tigris.gef.presentation.FigPoly"\r
- fill="0"\r
- fillcolor="white"\r
- stroke="1"\r
- strokecolor="black"\r
- >\r
- <moveto x="1584"\r
- y="520" />\r
- <lineto x="1490"\r
- y="520" />\r
- </path>\r
- </group>\r
- <text name="Fig66"\r
- x="24"\r
- y="16"\r
- fill="1"\r
- fillcolor="white"\r
- stroke="1"\r
- strokecolor="black"\r
- font="Serif"\r
- textsize="10"\r
- >FILE MANAGEMENT</text>\r
- <text name="Fig67"\r
- x="456"\r
- y="16"\r
- fill="1"\r
- fillcolor="white"\r
- stroke="1"\r
- strokecolor="black"\r
- font="Serif"\r
- textsize="10"\r
- >DEPLOYMENT</text>\r
- <text name="Fig68"\r
- x="1096"\r
- y="296"\r
- fill="1"\r
- fillcolor="white"\r
- stroke="1"\r
- strokecolor="black"\r
- font="Serif"\r
- textsize="10"\r
- >TESTING</text>\r
- <text name="Fig69"\r
- x="24"\r
- y="648"\r
- fill="1"\r
- fillcolor="white"\r
- stroke="1"\r
- strokecolor="black"\r
- font="Serif"\r
- textsize="10"\r
- >PROCESSES</text>\r
- <group name="Fig70"\r
- description="org.argouml.uml.diagram.static_structure.ui.FigClass[1208, 72, 275, 67]pathVisible=false;operationsVisible=true;attributesVisible=true"\r
- href="-64--88-1-101--7f8968dd:1157f72a2bb:-8000:0000000000000951"\r
- fill="1"\r
- fillcolor="white"\r
- stroke="1"\r
- strokecolor="black"\r
- >\r
- <private>\r
- </private>\r
- \r
- <rectangle name="Fig70.0"\r
- x="1208"\r
- y="72"\r
- width="275"\r
- height="67"\r
- fill="1"\r
- fillcolor="white"\r
- stroke="0"\r
- strokecolor="black"\r
- />\r
- <group name="Fig70.1"\r
- description="org.argouml.uml.diagram.ui.FigStereotypesCompartment[1208, 72, 275, 2]"\r
- href="-64--88-1-101--7f8968dd:1157f72a2bb:-8000:0000000000000951"\r
- fill="1"\r
- fillcolor="white"\r
- stroke="1"\r
- strokecolor="black"\r
- >\r
- <private>\r
- </private>\r
- \r
- <rectangle name="Fig70.1.0"\r
- x="1208"\r
- y="72"\r
- width="275"\r
- height="2"\r
- fill="1"\r
- fillcolor="white"\r
- stroke="1"\r
- strokecolor="black"\r
- />\r
- </group>\r
- <text name="Fig70.2"\r
- x="1208"\r
- y="74"\r
- fill="1"\r
- fillcolor="white"\r
- stroke="0"\r
- strokecolor="red"\r
- font="Dialog"\r
- textsize="10"\r
- >DatabaseDeployer</text>\r
- <group name="Fig70.3"\r
- description="org.argouml.uml.diagram.ui.FigOperationsCompartment[1209, 117, 274, 22]"\r
- fill="1"\r
- fillcolor="white"\r
- stroke="0"\r
- strokecolor="black"\r
- >\r
- <private>\r
- </private>\r
- \r
- <rectangle name="Fig70.3.0"\r
- x="1209"\r
- y="117"\r
- width="274"\r
- height="22"\r
- fill="1"\r
- fillcolor="white"\r
- stroke="0"\r
- strokecolor="black"\r
- />\r
- <path name="Fig70.3.1"\r
- description="org.argouml.uml.diagram.ui.FigFeaturesCompartment$FigSeperator"\r
- fill="1"\r
- fillcolor="white"\r
- stroke="1"\r
- strokecolor="black"\r
- >\r
- <moveto x="1209"\r
- y="117" />\r
- <lineto x="1483"\r
- y="117" />\r
- </path>\r
- <text name="Fig70.3.2"\r
- x="1209"\r
- y="118"\r
- fill="0"\r
- fillcolor="white"\r
- stroke="0"\r
- strokecolor="black"\r
- font="Dialog"\r
- textsize="10"\r
- >deploy(dump : DatabaseDump,server : String) : void</text>\r
- </group>\r
- <group name="Fig70.4"\r
- description="org.argouml.uml.diagram.ui.FigAttributesCompartment[1209, 96, 274, 20]"\r
- fill="1"\r
- fillcolor="white"\r
- stroke="0"\r
- strokecolor="black"\r
- >\r
- <private>\r
- </private>\r
- \r
- <rectangle name="Fig70.4.0"\r
- x="1209"\r
- y="96"\r
- width="274"\r
- height="20"\r
- fill="1"\r
- fillcolor="white"\r
- stroke="0"\r
- strokecolor="black"\r
- />\r
- <path name="Fig70.4.1"\r
- description="org.argouml.uml.diagram.ui.FigFeaturesCompartment$FigSeperator"\r
- fill="1"\r
- fillcolor="white"\r
- stroke="1"\r
- strokecolor="black"\r
- >\r
- <moveto x="1209"\r
- y="96" />\r
- <lineto x="1483"\r
- y="96" />\r
- </path>\r
- </group>\r
- <rectangle name="Fig70.5"\r
- x="1208"\r
- y="72"\r
- width="275"\r
- height="67"\r
- fill="0"\r
- fillcolor="white"\r
- stroke="1"\r
- strokecolor="black"\r
- />\r
- </group>\r
- <group name="Fig71"\r
- description="org.argouml.uml.diagram.static_structure.ui.FigClass[1208, 176, 273, 67]pathVisible=false;operationsVisible=true;attributesVisible=true"\r
- href="-64--88-1-101--7f8968dd:1157f72a2bb:-8000:0000000000000957"\r
- fill="1"\r
- fillcolor="white"\r
- stroke="1"\r
- strokecolor="black"\r
- >\r
- <private>\r
- </private>\r
- \r
- <rectangle name="Fig71.0"\r
- x="1208"\r
- y="176"\r
- width="273"\r
- height="67"\r
- fill="1"\r
- fillcolor="white"\r
- stroke="0"\r
- strokecolor="black"\r
- />\r
- <group name="Fig71.1"\r
- description="org.argouml.uml.diagram.ui.FigStereotypesCompartment[1208, 176, 273, 2]"\r
- href="-64--88-1-101--7f8968dd:1157f72a2bb:-8000:0000000000000957"\r
- fill="1"\r
- fillcolor="white"\r
- stroke="1"\r
- strokecolor="black"\r
- >\r
- <private>\r
- </private>\r
- \r
- <rectangle name="Fig71.1.0"\r
- x="1208"\r
- y="176"\r
- width="273"\r
- height="2"\r
- fill="1"\r
- fillcolor="white"\r
- stroke="1"\r
- strokecolor="black"\r
- />\r
- </group>\r
- <text name="Fig71.2"\r
- x="1208"\r
- y="178"\r
- fill="1"\r
- fillcolor="white"\r
- stroke="0"\r
- strokecolor="red"\r
- font="Dialog"\r
- textsize="10"\r
- >VersionedFileSetDeployer</text>\r
- <group name="Fig71.3"\r
- description="org.argouml.uml.diagram.ui.FigOperationsCompartment[1209, 221, 272, 22]"\r
- fill="1"\r
- fillcolor="white"\r
- stroke="0"\r
- strokecolor="black"\r
- >\r
- <private>\r
- </private>\r
- \r
- <rectangle name="Fig71.3.0"\r
- x="1209"\r
- y="221"\r
- width="272"\r
- height="22"\r
- fill="1"\r
- fillcolor="white"\r
- stroke="0"\r
- strokecolor="black"\r
- />\r
- <path name="Fig71.3.1"\r
- description="org.argouml.uml.diagram.ui.FigFeaturesCompartment$FigSeperator"\r
- fill="1"\r
- fillcolor="white"\r
- stroke="1"\r
- strokecolor="black"\r
- >\r
- <moveto x="1209"\r
- y="221" />\r
- <lineto x="1481"\r
- y="221" />\r
- </path>\r
- <text name="Fig71.3.2"\r
- x="1209"\r
- y="222"\r
- fill="0"\r
- fillcolor="white"\r
- stroke="0"\r
- strokecolor="black"\r
- font="Dialog"\r
- textsize="10"\r
- >deploy(fileSet : VersionedFileSet,dir : File) : void</text>\r
- </group>\r
- <group name="Fig71.4"\r
- description="org.argouml.uml.diagram.ui.FigAttributesCompartment[1209, 200, 272, 20]"\r
- fill="1"\r
- fillcolor="white"\r
- stroke="0"\r
- strokecolor="black"\r
- >\r
- <private>\r
- </private>\r
- \r
- <rectangle name="Fig71.4.0"\r
- x="1209"\r
- y="200"\r
- width="272"\r
- height="20"\r
- fill="1"\r
- fillcolor="white"\r
- stroke="0"\r
- strokecolor="black"\r
- />\r
- <path name="Fig71.4.1"\r
- description="org.argouml.uml.diagram.ui.FigFeaturesCompartment$FigSeperator"\r
- fill="1"\r
- fillcolor="white"\r
- stroke="1"\r
- strokecolor="black"\r
- >\r
- <moveto x="1209"\r
- y="200" />\r
- <lineto x="1481"\r
- y="200" />\r
- </path>\r
- </group>\r
- <rectangle name="Fig71.5"\r
- x="1208"\r
- y="176"\r
- width="273"\r
- height="67"\r
- fill="0"\r
- fillcolor="white"\r
- stroke="1"\r
- strokecolor="black"\r
- />\r
- </group>\r
- <text name="Fig72"\r
- x="1096"\r
- y="16"\r
- fill="1"\r
- fillcolor="white"\r
- stroke="1"\r
- strokecolor="black"\r
- font="Serif"\r
- textsize="10"\r
- >TOOLS</text>\r
- <group name="Fig73"\r
- description="org.argouml.uml.diagram.ui.FigGeneralization"\r
- href="-64--88-1-101--4a0353a6:1158fc10f03:-8000:000000000000095E"\r
- stroke="1"\r
- strokecolor="black"\r
- >\r
- <private>\r
- sourcePortFig="Fig39.0"\r
- destPortFig="Fig46.0"\r
- sourceFigNode="Fig39"\r
- destFigNode="Fig46"\r
- </private>\r
- <path name="Fig73.0"\r
- description="org.tigris.gef.presentation.FigPoly"\r
- fill="0"\r
- fillcolor="white"\r
- stroke="1"\r
- strokecolor="black"\r
- >\r
- <moveto x="496"\r
- y="104" />\r
- <lineto x="414"\r
- y="104" />\r
- </path>\r
- </group>\r
- <group name="Fig74"\r
- description="org.argouml.uml.diagram.ui.FigGeneralization"\r
- href="-64--88-1-101--4a0353a6:1158fc10f03:-8000:000000000000095F"\r
- stroke="1"\r
- strokecolor="black"\r
- >\r
- <private>\r
- sourcePortFig="Fig44.0"\r
- destPortFig="Fig42.0"\r
- sourceFigNode="Fig44"\r
- destFigNode="Fig42"\r
- </private>\r
- <path name="Fig74.0"\r
- description="org.tigris.gef.presentation.FigPoly"\r
- fill="0"\r
- fillcolor="white"\r
- stroke="1"\r
- strokecolor="black"\r
- >\r
- <moveto x="488"\r
- y="272" />\r
- <lineto x="336"\r
- y="272" />\r
- <lineto x="336"\r
- y="233" />\r
- </path>\r
- </group>\r
- <group name="Fig75"\r
- description="org.argouml.uml.diagram.ui.FigGeneralization"\r
- href="-64--88-1-101--4a0353a6:1158fc10f03:-8000:0000000000000960"\r
- stroke="1"\r
- strokecolor="black"\r
- >\r
- <private>\r
- sourcePortFig="Fig40.0"\r
- destPortFig="Fig16.0"\r
- sourceFigNode="Fig40"\r
- destFigNode="Fig16"\r
- </private>\r
- <path name="Fig75.0"\r
- description="org.tigris.gef.presentation.FigPoly"\r
- fill="0"\r
- fillcolor="white"\r
- stroke="1"\r
- strokecolor="black"\r
- >\r
- <moveto x="840"\r
- y="305" />\r
- <lineto x="840"\r
- y="448" />\r
- <lineto x="690"\r
- y="448" />\r
- </path>\r
- </group>\r
- <group name="Fig76"\r
- description="org.argouml.uml.diagram.ui.FigGeneralization"\r
- href="-64--88-1-101--4a0353a6:1158fc10f03:-8000:0000000000000961"\r
- stroke="1"\r
- strokecolor="black"\r
- >\r
- <private>\r
- sourcePortFig="Fig29.0"\r
- destPortFig="Fig22.0"\r
- sourceFigNode="Fig29"\r
- destFigNode="Fig22"\r
- </private>\r
- <path name="Fig76.0"\r
- description="org.tigris.gef.presentation.FigPoly"\r
- fill="0"\r
- fillcolor="white"\r
- stroke="1"\r
- strokecolor="black"\r
- >\r
- <moveto x="96"\r
- y="755" />\r
- <lineto x="96"\r
- y="800" />\r
- <lineto x="712"\r
- y="800" />\r
- <lineto x="712"\r
- y="858" />\r
- </path>\r
- </group>\r
- <group name="Fig77"\r
- description="org.argouml.uml.diagram.ui.FigGeneralization"\r
- href="-64--88-1-101--4a0353a6:1158fc10f03:-8000:0000000000000962"\r
- stroke="1"\r
- strokecolor="black"\r
- >\r
- <private>\r
- sourcePortFig="Fig9.0"\r
- destPortFig="Fig22.0"\r
- sourceFigNode="Fig9"\r
- destFigNode="Fig22"\r
- </private>\r
- <path name="Fig77.0"\r
- description="org.tigris.gef.presentation.FigPoly"\r
- fill="0"\r
- fillcolor="white"\r
- stroke="1"\r
- strokecolor="black"\r
- >\r
- <moveto x="376"\r
- y="755" />\r
- <lineto x="376"\r
- y="800" />\r
- <lineto x="712"\r
- y="800" />\r
- <lineto x="712"\r
- y="858" />\r
- </path>\r
- </group>\r
- <group name="Fig78"\r
- description="org.argouml.uml.diagram.ui.FigGeneralization"\r
- href="-64--88-1-101--4a0353a6:1158fc10f03:-8000:0000000000000963"\r
- stroke="1"\r
- strokecolor="black"\r
- >\r
- <private>\r
- sourcePortFig="Fig12.0"\r
- destPortFig="Fig22.0"\r
- sourceFigNode="Fig12"\r
- destFigNode="Fig22"\r
- </private>\r
- <path name="Fig78.0"\r
- description="org.tigris.gef.presentation.FigPoly"\r
- fill="0"\r
- fillcolor="white"\r
- stroke="1"\r
- strokecolor="black"\r
- >\r
- <moveto x="712"\r
- y="753" />\r
- <lineto x="712"\r
- y="858" />\r
- </path>\r
- </group>\r
- <group name="Fig79"\r
- description="org.argouml.uml.diagram.ui.FigGeneralization"\r
- href="-64--88-1-101--4a0353a6:1158fc10f03:-8000:0000000000000964"\r
- stroke="1"\r
- strokecolor="black"\r
- >\r
- <private>\r
- sourcePortFig="Fig14.0"\r
- destPortFig="Fig22.0"\r
- sourceFigNode="Fig14"\r
- destFigNode="Fig22"\r
- </private>\r
- <path name="Fig79.0"\r
- description="org.tigris.gef.presentation.FigPoly"\r
- fill="0"\r
- fillcolor="white"\r
- stroke="1"\r
- strokecolor="black"\r
- >\r
- <moveto x="1232"\r
- y="753" />\r
- <lineto x="1232"\r
- y="800" />\r
- <lineto x="712"\r
- y="800" />\r
- <lineto x="712"\r
- y="858" />\r
- </path>\r
- </group>\r
- <group name="Fig80"\r
- description="org.argouml.uml.diagram.ui.FigGeneralization"\r
- href="-64--88-1-101--4a0353a6:1158fc10f03:-8000:0000000000000C2A"\r
- stroke="1"\r
- strokecolor="black"\r
- >\r
- <private>\r
- sourcePortFig="Fig56.0"\r
- destPortFig="Fig53.0"\r
- sourceFigNode="Fig56"\r
- destFigNode="Fig53"\r
- </private>\r
- <path name="Fig80.0"\r
- description="org.tigris.gef.presentation.FigPoly"\r
- fill="0"\r
- fillcolor="white"\r
- stroke="1"\r
- strokecolor="black"\r
- >\r
- <moveto x="365"\r
- y="1048" />\r
- <lineto x="448"\r
- y="1048" />\r
- </path>\r
- </group>\r
- <group name="Fig81"\r
- description="org.argouml.uml.diagram.ui.FigGeneralization"\r
- href="-64--88-1-101--4a0353a6:1158fc10f03:-8000:0000000000000C2B"\r
- stroke="1"\r
- strokecolor="black"\r
- >\r
- <private>\r
- sourcePortFig="Fig55.0"\r
- destPortFig="Fig53.0"\r
- sourceFigNode="Fig55"\r
- destFigNode="Fig53"\r
- </private>\r
- <path name="Fig81.0"\r
- description="org.tigris.gef.presentation.FigPoly"\r
- fill="0"\r
- fillcolor="white"\r
- stroke="1"\r
- strokecolor="black"\r
- >\r
- <moveto x="354"\r
- y="952" />\r
- <lineto x="392"\r
- y="952" />\r
- <lineto x="392"\r
- y="1048" />\r
- <lineto x="448"\r
- y="1048" />\r
- </path>\r
- </group>\r
- <group name="Fig82"\r
- description="org.argouml.uml.diagram.ui.FigGeneralization"\r
- href="-64--88-1-101--4a0353a6:1158fc10f03:-8000:0000000000000C2C"\r
- stroke="1"\r
- strokecolor="black"\r
- >\r
- <private>\r
- sourcePortFig="Fig57.0"\r
- destPortFig="Fig53.0"\r
- sourceFigNode="Fig57"\r
- destFigNode="Fig53"\r
- </private>\r
- <path name="Fig82.0"\r
- description="org.tigris.gef.presentation.FigPoly"\r
- fill="0"\r
- fillcolor="white"\r
- stroke="1"\r
- strokecolor="black"\r
- >\r
- <moveto x="363"\r
- y="1080" />\r
- <lineto x="392"\r
- y="1080" />\r
- <lineto x="392"\r
- y="1048" />\r
- <lineto x="448"\r
- y="1048" />\r
- </path>\r
- </group>\r
- <group name="Fig83"\r
- description="org.argouml.uml.diagram.static_structure.ui.FigClass[280, 432, 90, 65]pathVisible=false;operationsVisible=true;attributesVisible=true"\r
- href="-64--88-1-101--4a0353a6:1158fc10f03:-8000:0000000000000C44"\r
- fill="1"\r
- fillcolor="white"\r
- stroke="1"\r
- strokecolor="black"\r
- >\r
- <private>\r
- </private>\r
- \r
- <rectangle name="Fig83.0"\r
- x="280"\r
- y="432"\r
- width="90"\r
- height="65"\r
- fill="1"\r
- fillcolor="white"\r
- stroke="0"\r
- strokecolor="black"\r
- />\r
- <group name="Fig83.1"\r
- description="org.argouml.uml.diagram.ui.FigStereotypesCompartment[280, 432, 90, 2]"\r
- href="-64--88-1-101--4a0353a6:1158fc10f03:-8000:0000000000000C44"\r
- fill="1"\r
- fillcolor="white"\r
- stroke="1"\r
- strokecolor="black"\r
- >\r
- <private>\r
- </private>\r
- \r
- <rectangle name="Fig83.1.0"\r
- x="280"\r
- y="432"\r
- width="90"\r
- height="2"\r
- fill="1"\r
- fillcolor="white"\r
- stroke="1"\r
- strokecolor="black"\r
- />\r
- </group>\r
- <text name="Fig83.2"\r
- x="280"\r
- y="434"\r
- fill="1"\r
- fillcolor="white"\r
- stroke="0"\r
- strokecolor="red"\r
- font="Dialog"\r
- textsize="10"\r
- >CodeFileSet</text>\r
- <group name="Fig83.3"\r
- description="org.argouml.uml.diagram.ui.FigOperationsCompartment[281, 477, 89, 20]"\r
- fill="1"\r
- fillcolor="white"\r
- stroke="0"\r
- strokecolor="black"\r
- >\r
- <private>\r
- </private>\r
- \r
- <rectangle name="Fig83.3.0"\r
- x="281"\r
- y="477"\r
- width="89"\r
- height="20"\r
- fill="1"\r
- fillcolor="white"\r
- stroke="0"\r
- strokecolor="black"\r
- />\r
- <path name="Fig83.3.1"\r
- description="org.argouml.uml.diagram.ui.FigFeaturesCompartment$FigSeperator"\r
- fill="1"\r
- fillcolor="white"\r
- stroke="1"\r
- strokecolor="black"\r
- >\r
- <moveto x="281"\r
- y="477" />\r
- <lineto x="370"\r
- y="477" />\r
- </path>\r
- </group>\r
- <group name="Fig83.4"\r
- description="org.argouml.uml.diagram.ui.FigAttributesCompartment[281, 456, 89, 20]"\r
- fill="1"\r
- fillcolor="white"\r
- stroke="0"\r
- strokecolor="black"\r
- >\r
- <private>\r
- </private>\r
- \r
- <rectangle name="Fig83.4.0"\r
- x="281"\r
- y="456"\r
- width="89"\r
- height="20"\r
- fill="1"\r
- fillcolor="white"\r
- stroke="0"\r
- strokecolor="black"\r
- />\r
- <path name="Fig83.4.1"\r
- description="org.argouml.uml.diagram.ui.FigFeaturesCompartment$FigSeperator"\r
- fill="1"\r
- fillcolor="white"\r
- stroke="1"\r
- strokecolor="black"\r
- >\r
- <moveto x="281"\r
- y="456" />\r
- <lineto x="370"\r
- y="456" />\r
- </path>\r
- </group>\r
- <rectangle name="Fig83.5"\r
- x="280"\r
- y="432"\r
- width="90"\r
- height="65"\r
- fill="0"\r
- fillcolor="white"\r
- stroke="1"\r
- strokecolor="black"\r
- />\r
- </group>\r
- <group name="Fig84"\r
- description="org.argouml.uml.diagram.ui.FigGeneralization"\r
- href="-64--88-1-101--4a0353a6:1158fc10f03:-8000:0000000000000C46"\r
- stroke="1"\r
- strokecolor="black"\r
- >\r
- <private>\r
- sourcePortFig="Fig83.0"\r
- destPortFig="Fig42.0"\r
- sourceFigNode="Fig83"\r
- destFigNode="Fig42"\r
- </private>\r
- <path name="Fig84.0"\r
- description="org.tigris.gef.presentation.FigPoly"\r
- fill="0"\r
- fillcolor="white"\r
- stroke="1"\r
- strokecolor="black"\r
- >\r
- <moveto x="336"\r
- y="432" />\r
- <lineto x="336"\r
- y="233" />\r
- </path>\r
- </group>\r
- <text name="Fig85"\r
- x="24"\r
- y="384"\r
- fill="1"\r
- fillcolor="white"\r
- stroke="1"\r
- strokecolor="black"\r
- font="Serif"\r
- textsize="10"\r
- >BUILD</text>\r
-</pgml>\r
-<pgml description="org.argouml.uml.diagram.use_case.ui.UMLUseCaseDiagram|-64--88-0-11--3bcecc2b:113edff40cb:-8000:000000000000071E"\r
- name="Diagramme de cas d'utilisation 1"\r
->\r
-</pgml>\r
-<todo>\r
-<todolist>\r
-</todolist>\r
-<resolvedcritics>\r
-</resolvedcritics>\r
-</todo>\r
-</uml>\r
+++ /dev/null
-<?xml version="1.0" encoding="UTF-8"?>\r
-<project default="javadoc">\r
-<target name="javadoc">\r
-<javadoc access="public" author="true" classpath="lib/jta.jar;lib/commons-logging.jar;lib/ant-launcher.jar;lib/hibernate3.jar;lib/spring-2.0.6.jar;lib/commons-collections-2.1.1.jar;C:\eclipse\plugins\org.junit_3.8.2.v200706111738\junit.jar;lib/ant.jar;lib/commons-pool.jar;lib/commons-lang.jar;lib/dom4j-1.6.1.jar;lib/log4j-1.2.14.jar;lib/asm.jar;lib/hsqldb.jar;lib/commons-dbcp.jar;lib/cglib-2.1.3.jar;lib/antlr-2.7.6.jar;lib/asm-attrs.jar" destdir="doc" nodeprecated="false" nodeprecatedlist="false" noindex="false" nonavbar="false" notree="false" packagenames="org.argeo.slc.core.structure.tree,org.argeo.slc.ant,org.argeo.slc.ant.test,org.argeo.slc.core,org.argeo.slc.ant.spring,org.argeo.slc.dao.test,org.argeo.slc.ant.structure,org.argeo.slc.core.deploy,org.argeo.slc.core.build,org.argeo.slc.core.test,org.argeo.slc.core.structure,org.argeo.slc.hibernate.test.tree,org.argeo.slc.core.test.tree" source="1.5" sourcepath="src/test/java;src/main/java" splitindex="true" use="true" version="true"/>\r
-</target>\r
-</project>\r
+++ /dev/null
-<?xml version="1.0" encoding="UTF-8"?>\r
-<project xmlns="http://maven.apache.org/POM/4.0.0"\r
- xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"\r
- xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">\r
- <modelVersion>4.0.0</modelVersion>\r
- <groupId>org.argeo.slc</groupId>\r
- <artifactId>argeo-slc-core</artifactId>\r
- <name>Argeo SLC Core</name>\r
- <version>0.5.1-SNAPSHOT</version>\r
- <description>SLC Core</description>\r
- <scm>\r
- <connection>\r
- scm:svn:https://www.argeo.org/svn/slc/trunk/org.argeo.slc\r
- </connection>\r
- <developerConnection>\r
- scm:svn:https://www.argeo.org/svn/slc/trunk/org.argeo.slc\r
- </developerConnection>\r
- <url>https://www.argeo.org/svn/slc/trunk/org.argeo.slc</url>\r
- </scm>\r
- <issueManagement>\r
- <system>Bugzilla</system>\r
- <url>https://www.argeo.org/bugzilla/</url>\r
- </issueManagement>\r
- <licenses>\r
- <license>\r
- <name>Apache 2</name>\r
- <url>http://www.apache.org/licenses/LICENSE-2.0.txt</url>\r
- <distribution>repo</distribution>\r
- <comments>A business-friendly OSS license</comments>\r
- </license>\r
- </licenses>\r
- <organization>\r
- <name>Argeo</name>\r
- <url>http://www.argeo.org</url>\r
- </organization>\r
- <developers>\r
- <developer>\r
- <id>mbaudier</id>\r
- <name>Mathieu Baudier</name>\r
- <email>mbaudier@argeo.org</email>\r
- <organization>Argeo</organization>\r
- <roles>\r
- <role>architect</role>\r
- <role>developer</role>\r
- </roles>\r
- <timezone>+1</timezone>\r
- </developer>\r
- </developers>\r
- <build>\r
- <plugins>\r
- <plugin>\r
- <groupId>org.apache.maven.plugins</groupId>\r
- <artifactId>maven-compiler-plugin</artifactId>\r
- <configuration>\r
- <source>1.5</source>\r
- <target>1.5</target>\r
- </configuration>\r
- </plugin>\r
- <plugin>\r
- <groupId>org.apache.maven.plugins</groupId>\r
- <artifactId>maven-source-plugin</artifactId>\r
- <executions>\r
- <execution>\r
- <id>attach-sources</id>\r
- <phase>verify</phase>\r
- <goals>\r
- <goal>jar</goal>\r
- </goals>\r
- </execution>\r
- </executions>\r
- </plugin>\r
- <plugin>\r
- <groupId>org.apache.maven.plugins</groupId>\r
- <artifactId>maven-assembly-plugin</artifactId>\r
- <configuration>\r
- <descriptors>\r
- <descriptor>\r
- src/assembly/with-dependencies.xml\r
- </descriptor>\r
- </descriptors>\r
- </configuration>\r
- <executions>\r
- <execution>\r
- <id>make-assembly</id>\r
- <phase>site</phase>\r
- <goals>\r
- <goal>attached</goal>\r
- </goals>\r
- </execution>\r
- </executions>\r
- </plugin>\r
- </plugins>\r
- </build>\r
- <reporting>\r
- <plugins>\r
- <plugin>\r
- <groupId>org.apache.maven.plugins</groupId>\r
- <artifactId>maven-surefire-report-plugin</artifactId>\r
- </plugin>\r
- <plugin>\r
- <groupId>org.apache.maven.plugins</groupId>\r
- <artifactId>maven-javadoc-plugin</artifactId>\r
- </plugin>\r
- <plugin>\r
- <groupId>org.apache.maven.plugins</groupId>\r
- <artifactId>maven-changelog-plugin</artifactId>\r
- </plugin>\r
- <plugin>\r
- <groupId>org.codehaus.mojo</groupId>\r
- <artifactId>cobertura-maven-plugin</artifactId>\r
- </plugin>\r
- </plugins>\r
- </reporting>\r
- <dependencies>\r
- <dependency>\r
- <groupId>javax.transaction</groupId>\r
- <artifactId>jta</artifactId>\r
- <version>1.0.1</version>\r
- </dependency>\r
- <dependency>\r
- <groupId>log4j</groupId>\r
- <artifactId>log4j</artifactId>\r
- <version>1.2.14</version>\r
- </dependency>\r
- <dependency>\r
- <groupId>org.hibernate</groupId>\r
- <artifactId>hibernate</artifactId>\r
- <version>3.2.5.ga</version>\r
- </dependency>\r
- <dependency>\r
- <groupId>org.springframework</groupId>\r
- <artifactId>spring</artifactId>\r
- <version>2.0.6</version>\r
- </dependency>\r
- <dependency>\r
- <groupId>org.apache.ant</groupId>\r
- <artifactId>ant</artifactId>\r
- <version>1.7.0</version>\r
- </dependency>\r
- <dependency>\r
- <groupId>org.apache.commons</groupId>\r
- <artifactId>commons-io</artifactId>\r
- <version>1.3.2</version>\r
- </dependency>\r
- <dependency>\r
- <groupId>org.dbunit</groupId>\r
- <artifactId>dbunit</artifactId>\r
- <version>2.2</version>\r
- </dependency>\r
- <dependency>\r
- <groupId>junit</groupId>\r
- <artifactId>junit</artifactId>\r
- <version>3.8.2</version>\r
- </dependency>\r
- <dependency>\r
- <groupId>hsqldb</groupId>\r
- <artifactId>hsqldb</artifactId>\r
- <version>1.8.0.9</version>\r
- </dependency>\r
- </dependencies>\r
- <dependencyManagement>\r
- <dependencies>\r
- <dependency>\r
- <groupId>javax.transaction</groupId>\r
- <artifactId>jta</artifactId>\r
- <version>1.0.1</version>\r
- </dependency>\r
- <dependency>\r
- <groupId>org.dbunit</groupId>\r
- <artifactId>dbunit</artifactId>\r
- <version>2.2</version>\r
- <exclusions>\r
- <exclusion>\r
- <groupId>junit-addons</groupId>\r
- <artifactId>junit-addons</artifactId>\r
- </exclusion>\r
- <exclusion>\r
- <groupId>poi</groupId>\r
- <artifactId>poi</artifactId>\r
- </exclusion>\r
- </exclusions>\r
- </dependency>\r
- </dependencies>\r
- </dependencyManagement>\r
- <repositories>\r
- <repository>\r
- <id>central</id>\r
- <url>http://www.argeo.org/maven/repository</url>\r
- </repository>\r
- </repositories>\r
-</project>
\ No newline at end of file
+++ /dev/null
-<assembly>\r
- <id>with-dependencies</id>\r
- <formats>\r
- <format>zip</format>\r
- </formats>\r
- <fileSets>\r
- <fileSet>\r
- <directory>src/main/config</directory>\r
- <outputDirectory></outputDirectory>\r
- <includes>\r
- <include>**/*</include>\r
- </includes>\r
- </fileSet>\r
- <fileSet>\r
- <directory>target</directory>\r
- <outputDirectory>lib</outputDirectory>\r
- <includes>\r
- <include>*.jar</include>\r
- </includes>\r
- </fileSet>\r
- <fileSet>\r
- <directory>target/site</directory>\r
- <outputDirectory>doc</outputDirectory>\r
- <includes>\r
- <include>**/*</include>\r
- </includes>\r
- </fileSet>\r
- <fileSet>\r
- <directory>src</directory>\r
- </fileSet>\r
- </fileSets>\r
- <dependencySets>\r
- <dependencySet>\r
- <outputDirectory>lib</outputDirectory>\r
- </dependencySet>\r
- </dependencySets>\r
-</assembly>
\ No newline at end of file
+++ /dev/null
-#! /bin/sh
-
-# Licensed to the Apache Software Foundation (ASF) under one or more
-# contributor license agreements. See the NOTICE file distributed with
-# this work for additional information regarding copyright ownership.
-# The ASF licenses this file to You under the Apache License, Version 2.0
-# (the "License"); you may not use this file except in compliance with
-# the License. You may obtain a copy of the License at
-#
-# http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-
-# Extract launch and ant arguments, (see details below).
-ant_exec_args=
-no_config=false
-use_jikes_default=false
-ant_exec_debug=false
-show_help=false
-for arg in "$@" ; do
- if [ "$arg" = "--noconfig" ] ; then
- no_config=true
- elif [ "$arg" = "--usejikes" ] ; then
- use_jikes_default=true
- elif [ "$arg" = "--execdebug" ] ; then
- ant_exec_debug=true
- elif [ my"$arg" = my"--h" -o my"$arg" = my"--help" ] ; then
- show_help=true
- ant_exec_args="$ant_exec_args -h"
- else
- if [ my"$arg" = my"-h" -o my"$arg" = my"-help" ] ; then
- show_help=true
- fi
- ant_exec_args="$ant_exec_args \"$arg\""
- fi
-done
-
-# Source/default ant configuration
-if $no_config ; then
- rpm_mode=false
- usejikes=$use_jikes_default
-else
- # load system-wide ant configuration (ONLY if ANT_HOME has NOT been set)
- if [ -z "$ANT_HOME" -o "$ANT_HOME" = "/usr/share/ant" ]; then
- if [ -f "/etc/ant.conf" ] ; then
- . /etc/ant.conf
- fi
- fi
-
- # load user ant configuration
- if [ -f "$HOME/.ant/ant.conf" ] ; then
- . $HOME/.ant/ant.conf
- fi
- if [ -f "$HOME/.antrc" ] ; then
- . "$HOME/.antrc"
- fi
-
- # provide default configuration values
- if [ -z "$rpm_mode" ] ; then
- rpm_mode=false
- fi
- if [ -z "$usejikes" ] ; then
- usejikes=$use_jikes_default
- fi
-fi
-
-# Setup Java environment in rpm mode
-if $rpm_mode ; then
- if [ -f /usr/share/java-utils/java-functions ] ; then
- . /usr/share/java-utils/java-functions
- set_jvm
- set_javacmd
- fi
-fi
-
-# OS specific support. $var _must_ be set to either true or false.
-cygwin=false;
-darwin=false;
-case "`uname`" in
- CYGWIN*) cygwin=true ;;
- Darwin*) darwin=true
- if [ -z "$JAVA_HOME" ] ; then
- JAVA_HOME=/System/Library/Frameworks/JavaVM.framework/Home
- fi
- ;;
-esac
-
-if [ -z "$ANT_HOME" -o ! -d "$ANT_HOME" ] ; then
- ## resolve links - $0 may be a link to ant's home
- PRG="$0"
- progname=`basename "$0"`
-
- # need this for relative symlinks
- while [ -h "$PRG" ] ; do
- ls=`ls -ld "$PRG"`
- link=`expr "$ls" : '.*-> \(.*\)$'`
- if expr "$link" : '/.*' > /dev/null; then
- PRG="$link"
- else
- PRG=`dirname "$PRG"`"/$link"
- fi
- done
-
- ANT_HOME=`dirname "$PRG"`/..
-
- # make it fully qualified
- ANT_HOME=`cd "$ANT_HOME" && pwd`
-fi
-
-# For Cygwin, ensure paths are in UNIX format before anything is touched
-if $cygwin ; then
- [ -n "$ANT_HOME" ] &&
- ANT_HOME=`cygpath --unix "$ANT_HOME"`
- [ -n "$JAVA_HOME" ] &&
- JAVA_HOME=`cygpath --unix "$JAVA_HOME"`
-fi
-
-# set ANT_LIB location
-ANT_LIB="${ANT_HOME}/lib"
-
-if [ -z "$JAVACMD" ] ; then
- if [ -n "$JAVA_HOME" ] ; then
- # IBM's JDK on AIX uses strange locations for the executables
- if [ -x "$JAVA_HOME/jre/sh/java" ] ; then
- JAVACMD="$JAVA_HOME/jre/sh/java"
- elif [ -x "$JAVA_HOME/jre/bin/java" ] ; then
- JAVACMD="$JAVA_HOME/jre/bin/java"
- else
- JAVACMD="$JAVA_HOME/bin/java"
- fi
- else
- JAVACMD=`which java 2> /dev/null `
- if [ -z "$JAVACMD" ] ; then
- JAVACMD=java
- fi
- fi
-fi
-
-if [ ! -x "$JAVACMD" ] ; then
- echo "Error: JAVA_HOME is not defined correctly."
- echo " We cannot execute $JAVACMD"
- exit 1
-fi
-
-# Build local classpath using just the launcher in non-rpm mode or
-# use the Jpackage helper in rpm mode with basic and default jars
-# specified in the ant.conf configuration. Because the launcher is
-# used, libraries linked in ANT_HOME/lib will also be included, but this
-# is discouraged as it is not java-version safe. A user should
-# request optional jars and their dependencies via the OPT_JAR_LIST
-# variable
-if $rpm_mode && [ -x /usr/bin/build-classpath ] ; then
- LOCALCLASSPATH="$(/usr/bin/build-classpath ant ant-launcher jaxp_parser_impl xml-commons-apis)"
-
- # If no optional jars have been specified then build the default list
- if [ -z "$OPT_JAR_LIST" ] ; then
- for file in /etc/ant.d/*; do
- if [ -f "$file" ]; then
- case "$file" in
- *~) ;;
- *#*) ;;
- *.rpmsave) ;;
- *.rpmnew) ;;
- *)
- for dep in `cat "$file"`; do
- case "$OPT_JAR_LIST" in
- *"$dep"*) ;;
- *) OPT_JAR_LIST="$OPT_JAR_LIST${OPT_JAR_LIST:+ }$dep"
- esac
- done
- esac
- fi
- done
- fi
-
- # If the user requested to try to add some other jars to the classpath
- if [ -n "$OPT_JAR_LIST" ] ; then
- _OPTCLASSPATH="$(/usr/bin/build-classpath $OPT_JAR_LIST 2> /dev/null)"
- if [ -n "$_OPTCLASSPATH" ] ; then
- LOCALCLASSPATH="$LOCALCLASSPATH:$_OPTCLASSPATH"
- fi
- fi
-
- # Explicitly add javac path to classpath, assume JAVA_HOME set
- # properly in rpm mode
- if [ -f "$JAVA_HOME/lib/tools.jar" ] ; then
- LOCALCLASSPATH="$LOCALCLASSPATH:$JAVA_HOME/lib/tools.jar"
- fi
- if [ -f "$JAVA_HOME/lib/classes.zip" ] ; then
- LOCALCLASSPATH="$LOCALCLASSPATH:$JAVA_HOME/lib/classes.zip"
- fi
-
- # if CLASSPATH_OVERRIDE env var is set, LOCALCLASSPATH will be
- # user CLASSPATH first and ant-found jars after.
- # In that case, the user CLASSPATH will override ant-found jars
- #
- # if CLASSPATH_OVERRIDE is not set, we'll have the normal behaviour
- # with ant-found jars first and user CLASSPATH after
- if [ -n "$CLASSPATH" ] ; then
- # merge local and specified classpath
- if [ -z "$LOCALCLASSPATH" ] ; then
- LOCALCLASSPATH="$CLASSPATH"
- elif [ -n "$CLASSPATH_OVERRIDE" ] ; then
- LOCALCLASSPATH="$CLASSPATH:$LOCALCLASSPATH"
- else
- LOCALCLASSPATH="$LOCALCLASSPATH:$CLASSPATH"
- fi
-
- # remove class path from launcher -cp option
- CLASSPATH=""
- fi
-else
- # not using rpm_mode; use launcher to determine classpaths
- if [ -z "$LOCALCLASSPATH" ] ; then
- LOCALCLASSPATH=$ANT_LIB/ant-launcher.jar
- else
- LOCALCLASSPATH=$ANT_LIB/ant-launcher.jar:$LOCALCLASSPATH
- fi
-fi
-
-if [ -n "$JAVA_HOME" ] ; then
- # OSX hack to make Ant work with jikes
- if $darwin ; then
- OSXHACK="${JAVA_HOME}/../Classes"
- if [ -d "${OSXHACK}" ] ; then
- for i in "${OSXHACK}"/*.jar
- do
- JIKESPATH="$JIKESPATH:$i"
- done
- fi
- fi
-fi
-
-# Allow Jikes support (off by default)
-if $usejikes; then
- ANT_OPTS="$ANT_OPTS -Dbuild.compiler=jikes"
-fi
-
-# For Cygwin, switch paths to appropriate format before running java
-# For PATHs convert to unix format first, then to windows format to ensure
-# both formats are supported. Probably this will fail on directories with ;
-# in the name in the path. Let's assume that paths containing ; are more
-# rare than windows style paths on cygwin.
-if $cygwin; then
- if [ "$OS" = "Windows_NT" ] && cygpath -m .>/dev/null 2>/dev/null ; then
- format=mixed
- else
- format=windows
- fi
- ANT_HOME=`cygpath --$format "$ANT_HOME"`
- ANT_LIB=`cygpath --$format "$ANT_LIB"`
- JAVA_HOME=`cygpath --$format "$JAVA_HOME"`
- LCP_TEMP=`cygpath --path --unix "$LOCALCLASSPATH"`
- LOCALCLASSPATH=`cygpath --path --$format "$LCP_TEMP"`
- if [ -n "$CLASSPATH" ] ; then
- CP_TEMP=`cygpath --path --unix "$CLASSPATH"`
- CLASSPATH=`cygpath --path --$format "$CP_TEMP"`
- fi
- CYGHOME=`cygpath --$format "$HOME"`
-fi
-
-# Show script help if requested
-if $show_help ; then
- echo $0 '[script options] [options] [target [target2 [target3] ..]]'
- echo 'Script Options:'
- echo ' --help, --h print this message and ant help'
- echo ' --noconfig suppress sourcing of /etc/ant.conf,'
- echo ' $HOME/.ant/ant.conf, and $HOME/.antrc'
- echo ' configuration files'
- echo ' --usejikes enable use of jikes by default, unless'
- echo ' set explicitly in configuration files'
- echo ' --execdebug print ant exec line generated by this'
- echo ' launch script'
- echo ' '
-fi
-# add a second backslash to variables terminated by a backslash under cygwin
-if $cygwin; then
- case "$ANT_HOME" in
- *\\ )
- ANT_HOME="$ANT_HOME\\"
- ;;
- esac
- case "$CYGHOME" in
- *\\ )
- CYGHOME="$CYGHOME\\"
- ;;
- esac
- case "$JIKESPATH" in
- *\\ )
- JIKESPATH="$JIKESPATH\\"
- ;;
- esac
- case "$LOCALCLASSPATH" in
- *\\ )
- LOCALCLASSPATH="$LOCALCLASSPATH\\"
- ;;
- esac
- case "$CLASSPATH" in
- *\\ )
- CLASSPATH="$CLASSPATH\\"
- ;;
- esac
-fi
-# Execute ant using eval/exec to preserve spaces in paths,
-# java options, and ant args
-ant_sys_opts=
-if [ -n "$CYGHOME" ]; then
- if [ -n "$JIKESPATH" ]; then
- ant_sys_opts="-Djikes.class.path=\"$JIKESPATH\" -Dcygwin.user.home=\"$CYGHOME\""
- else
- ant_sys_opts="-Dcygwin.user.home=\"$CYGHOME\""
- fi
-else
- if [ -n "$JIKESPATH" ]; then
- ant_sys_opts="-Djikes.class.path=\"$JIKESPATH\""
- fi
-fi
-ant_exec_command="exec \"$JAVACMD\" $ANT_OPTS -classpath \"$LOCALCLASSPATH\" -Dant.home=\"$ANT_HOME\" -Dant.library.dir=\"$ANT_LIB\" $ant_sys_opts org.apache.tools.ant.launch.Launcher $ANT_ARGS -cp \"$CLASSPATH\" $ant_exec_args"
-if $ant_exec_debug ; then
- echo $ant_exec_command
-fi
-eval $ant_exec_command
+++ /dev/null
-@echo off\r
-\r
-REM Licensed to the Apache Software Foundation (ASF) under one or more\r
-REM contributor license agreements. See the NOTICE file distributed with\r
-REM this work for additional information regarding copyright ownership.\r
-REM The ASF licenses this file to You under the Apache License, Version 2.0\r
-REM (the "License"); you may not use this file except in compliance with\r
-REM the License. You may obtain a copy of the License at\r
-REM \r
-REM http://www.apache.org/licenses/LICENSE-2.0\r
-REM \r
-REM Unless required by applicable law or agreed to in writing, software\r
-REM distributed under the License is distributed on an "AS IS" BASIS,\r
-REM WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r
-REM See the License for the specific language governing permissions and\r
-REM limitations under the License.\r
-\r
-REM This is an inordinately troublesome piece of code, particularly because it\r
-REM tries to work on both Win9x and WinNT-based systems. If we could abandon '9x\r
-REM support, things would be much easier, but sadly, it is not yet time.\r
-REM Be cautious about editing this, and only add WinNT specific stuff in code that\r
-REM only runs on WinNT.\r
-\r
-if "%HOME%"=="" goto homeDrivePathPre\r
-if exist "%HOME%\antrc_pre.bat" call "%HOME%\antrc_pre.bat"\r
-\r
-:homeDrivePathPre\r
-if "%HOMEDRIVE%%HOMEPATH%"=="" goto userProfilePre\r
-if "%HOMEDRIVE%%HOMEPATH%"=="%HOME%" goto userProfilePre\r
-if exist "%HOMEDRIVE%%HOMEPATH%\antrc_pre.bat" call "%HOMEDRIVE%%HOMEPATH%\antrc_pre.bat"\r
-\r
-:userProfilePre\r
-if "%USERPROFILE%"=="" goto alpha\r
-if "%USERPROFILE%"=="%HOME%" goto alpha\r
-if "%USERPROFILE%"=="%HOMEDRIVE%%HOMEPATH%" goto alpha\r
-if exist "%USERPROFILE%\antrc_pre.bat" call "%USERPROFILE%\antrc_pre.bat"\r
-\r
-:alpha\r
-\r
-if "%OS%"=="Windows_NT" @setlocal\r
-if "%OS%"=="WINNT" @setlocal\r
-\r
-if "%ANT_HOME%"=="" goto setDefaultAntHome\r
-\r
-:stripAntHome\r
-if not _%ANT_HOME:~-1%==_\ goto checkClasspath\r
-set ANT_HOME=%ANT_HOME:~0,-1%\r
-goto stripAntHome\r
-\r
-:setDefaultAntHome\r
-rem %~dp0 is expanded pathname of the current script under NT\r
-set ANT_HOME=%~dp0..\r
-\r
-:checkClasspath\r
-set _USE_CLASSPATH=yes\r
-rem CLASSPATH must not be used if it is equal to ""\r
-if "%CLASSPATH%"=="""" set _USE_CLASSPATH=no\r
-if "%CLASSPATH%"=="" set _USE_CLASSPATH=no\r
-\r
-rem Slurp the command line arguments. This loop allows for an unlimited number\r
-rem of arguments (up to the command line limit, anyway).\r
-set ANT_CMD_LINE_ARGS=%1\r
-if ""%1""=="""" goto doneStart\r
-shift\r
-:setupArgs\r
-if ""%1""=="""" goto doneStart\r
-if ""%1""==""-noclasspath"" goto clearclasspath\r
-set ANT_CMD_LINE_ARGS=%ANT_CMD_LINE_ARGS% %1\r
-shift\r
-goto setupArgs\r
-\r
-rem here is there is a -noclasspath in the options\r
-:clearclasspath\r
-set _USE_CLASSPATH=no\r
-shift\r
-goto setupArgs\r
-\r
-rem This label provides a place for the argument list loop to break out\r
-rem and for NT handling to skip to.\r
-\r
-:doneStart\r
-\r
-if _USE_CLASSPATH==no goto findAntHome\r
-\r
-:stripClasspath\r
-if not _%CLASSPATH:~-1%==_\ goto findAntHome\r
-set CLASSPATH=%CLASSPATH:~0,-1%\r
-goto stripClasspath\r
-\r
-:findAntHome\r
-rem find ANT_HOME if it does not exist due to either an invalid value passed\r
-rem by the user or the %0 problem on Windows 9x\r
-if exist "%ANT_HOME%\lib\ant.jar" goto checkJava\r
-\r
-rem check for ant in Program Files\r
-if not exist "%ProgramFiles%\ant" goto checkSystemDrive\r
-set ANT_HOME=%ProgramFiles%\ant\r
-goto checkJava\r
-\r
-:checkSystemDrive\r
-rem check for ant in root directory of system drive\r
-if not exist %SystemDrive%\ant\lib\ant.jar goto checkCDrive\r
-set ANT_HOME=%SystemDrive%\ant\r
-goto checkJava\r
-\r
-:checkCDrive\r
-rem check for ant in C:\ant for Win9X users\r
-if not exist C:\ant\lib\ant.jar goto noAntHome\r
-set ANT_HOME=C:\ant\r
-goto checkJava\r
-\r
-:noAntHome\r
-echo ANT_HOME is set incorrectly or ant could not be located. Please set ANT_HOME.\r
-goto end\r
-\r
-:checkJava\r
-set _JAVACMD=%JAVACMD%\r
-\r
-if "%JAVA_HOME%" == "" goto noJavaHome\r
-if not exist "%JAVA_HOME%\bin\java.exe" goto noJavaHome\r
-if "%_JAVACMD%" == "" set _JAVACMD=%JAVA_HOME%\bin\java.exe\r
-goto checkJikes\r
-\r
-:noJavaHome\r
-if "%_JAVACMD%" == "" set _JAVACMD=java.exe\r
-\r
-:checkJikes\r
-if not "%JIKESPATH%"=="" goto runAntWithJikes\r
-\r
-:runAnt\r
-if "%_USE_CLASSPATH%"=="no" goto runAntNoClasspath\r
-:runAntWithClasspath\r
-"%_JAVACMD%" %ANT_OPTS% -classpath "%ANT_HOME%\lib\ant-launcher.jar" "-Dant.home=%ANT_HOME%" org.apache.tools.ant.launch.Launcher %ANT_ARGS% -cp "%CLASSPATH%" %ANT_CMD_LINE_ARGS%\r
-rem Check the error code of the Ant build\r
-if not "%OS%"=="Windows_NT" goto onError\r
-set ANT_ERROR=%ERRORLEVEL%\r
-goto end\r
-\r
-:runAntNoClasspath\r
-"%_JAVACMD%" %ANT_OPTS% -classpath "%ANT_HOME%\lib\ant-launcher.jar" "-Dant.home=%ANT_HOME%" org.apache.tools.ant.launch.Launcher %ANT_ARGS% %ANT_CMD_LINE_ARGS%\r
-rem Check the error code of the Ant build\r
-if not "%OS%"=="Windows_NT" goto onError\r
-set ANT_ERROR=%ERRORLEVEL%\r
-goto end\r
-\r
-:runAntWithJikes\r
-\r
-if not _%JIKESPATH:~-1%==_\ goto checkJikesAndClasspath\r
-set JIKESPATH=%JIKESPATH:~0,-1%\r
-goto runAntWithJikes\r
-\r
-:checkJikesAndClasspath\r
-\r
-if "%_USE_CLASSPATH%"=="no" goto runAntWithJikesNoClasspath\r
-\r
-:runAntWithJikesAndClasspath\r
-"%_JAVACMD%" %ANT_OPTS% -classpath "%ANT_HOME%\lib\ant-launcher.jar" "-Dant.home=%ANT_HOME%" "-Djikes.class.path=%JIKESPATH%" org.apache.tools.ant.launch.Launcher %ANT_ARGS% -cp "%CLASSPATH%" %ANT_CMD_LINE_ARGS%\r
-rem Check the error code of the Ant build\r
-if not "%OS%"=="Windows_NT" goto onError\r
-set ANT_ERROR=%ERRORLEVEL%\r
-goto end\r
-\r
-:runAntWithJikesNoClasspath\r
-"%_JAVACMD%" %ANT_OPTS% -classpath "%ANT_HOME%\lib\ant-launcher.jar" "-Dant.home=%ANT_HOME%" "-Djikes.class.path=%JIKESPATH%" org.apache.tools.ant.launch.Launcher %ANT_ARGS% %ANT_CMD_LINE_ARGS%\r
-rem Check the error code of the Ant build\r
-if not "%OS%"=="Windows_NT" goto onError\r
-set ANT_ERROR=%ERRORLEVEL%\r
-goto end\r
-\r
-:onError\r
-rem Windows 9x way of checking the error code. It matches via brute force.\r
-for %%i in (1 10 100) do set err%%i=\r
-for %%i in (0 1 2) do if errorlevel %%i00 set err100=%%i\r
-if %err100%==2 goto onError200\r
-if %err100%==0 set err100=\r
-for %%i in (0 1 2 3 4 5 6 7 8 9) do if errorlevel %err100%%%i0 set err10=%%i\r
-if "%err100%"=="" if %err10%==0 set err10=\r
-:onError1\r
-for %%i in (0 1 2 3 4 5 6 7 8 9) do if errorlevel %err100%%err10%%%i set err1=%%i\r
-goto onErrorEnd\r
-:onError200\r
-for %%i in (0 1 2 3 4 5) do if errorlevel 2%%i0 set err10=%%i\r
-if err10==5 for %%i in (0 1 2 3 4 5) do if errorlevel 25%%i set err1=%%i\r
-if not err10==5 goto onError1\r
-:onErrorEnd\r
-set ANT_ERROR=%err100%%err10%%err1%\r
-for %%i in (1 10 100) do set err%%i=\r
-\r
-:end\r
-rem bug ID 32069: resetting an undefined env variable changes the errorlevel.\r
-if not "%_JAVACMD%"=="" set _JAVACMD=\r
-if not "%_ANT_CMD_LINE_ARGS%"=="" set ANT_CMD_LINE_ARGS=\r
-\r
-if "%ANT_ERROR%"=="0" goto mainEnd\r
-\r
-rem Set the return code if we are not in NT. We can only set\r
-rem a value of 1, but it's better than nothing.\r
-if not "%OS%"=="Windows_NT" echo 1 > nul | choice /n /c:1\r
-\r
-rem Set the ERRORLEVEL if we are running NT.\r
-if "%OS%"=="Windows_NT" color 00\r
-\r
-goto omega\r
-\r
-:mainEnd\r
-\r
-rem If there were no errors, we run the post script.\r
-if "%OS%"=="Windows_NT" @endlocal\r
-if "%OS%"=="WINNT" @endlocal\r
-\r
-if "%HOME%"=="" goto homeDrivePathPost\r
-if exist "%HOME%\antrc_post.bat" call "%HOME%\antrc_post.bat"\r
-\r
-:homeDrivePathPost\r
-if "%HOMEDRIVE%%HOMEPATH%"=="" goto userProfilePost\r
-if "%HOMEDRIVE%%HOMEPATH%"=="%HOME%" goto userProfilePost\r
-if exist "%HOMEDRIVE%%HOMEPATH%\antrc_post.bat" call "%HOMEDRIVE%%HOMEPATH%\antrc_post.bat"\r
-\r
-:userProfilePost\r
-if "%USERPROFILE%"=="" goto omega\r
-if "%USERPROFILE%"=="%HOME%" goto omega\r
-if "%USERPROFILE%"=="%HOMEDRIVE%%HOMEPATH%" goto omega\r
-if exist "%USERPROFILE%\antrc_post.bat" call "%USERPROFILE%\antrc_post.bat"\r
-\r
-:omega\r
-\r
+++ /dev/null
-<!--\r
-$HeadURL$\r
-$Revision$\r
-$LastChangedDate$\r
--->\r
-<project>\r
- <macrodef name="compile">\r
- <attribute name="srcdir" />\r
- <attribute name="artifact" />\r
- <attribute name="classpathref" default="cp.main" />\r
- <sequential>\r
- <mkdir dir="${compile.base}/@{artifact}" />\r
- <javac destdir="${compile.base}/@{artifact}"\r
- srcdir="@{srcdir}" debug="on" fork="true"\r
- includeantruntime="false">\r
- <classpath>\r
- <path refid="@{classpathref}" />\r
- </classpath>\r
- </javac>\r
- </sequential>\r
- </macrodef>\r
-\r
- <macrodef name="createJar">\r
- <attribute name="srcdir" />\r
- <attribute name="artifact" />\r
- <sequential>\r
- <jar destfile="${dist.jar}/@{artifact}.jar">\r
- <zipfileset dir="@{srcdir}">\r
- <exclude name="**/*.java" />\r
- <exclude name="**/package.html" />\r
- <include name="**/*.*" />\r
- </zipfileset>\r
- <zipfileset dir="${compile.base}/@{artifact}">\r
- <include name="**/*.*" />\r
- </zipfileset>\r
- <manifest>\r
- <attribute name="Specification-Title"\r
- value="${package.prefix}" />\r
- <attribute name="Specification-Version"\r
- value="${package.version}" />\r
- <attribute name="Implementation-Title"\r
- value="@{artifact}" />\r
- <attribute name="Implementation-Version"\r
- value="${package.releaseId}" />\r
- </manifest>\r
- </jar>\r
- </sequential>\r
- </macrodef>\r
- \r
- <macrodef name="createSourcesJar">\r
- <attribute name="srcdir" />\r
- <attribute name="artifact" />\r
- <sequential>\r
- <jar destfile="${dist.lib-src}/@{artifact}-sources.jar">\r
- <zipfileset dir="@{srcdir}">\r
- <include name="**/*" />\r
- </zipfileset>\r
- <manifest>\r
- <attribute name="Specification-Title"\r
- value="${package.prefix} Sources" />\r
- <attribute name="Specification-Version"\r
- value="${package.version}" />\r
- <attribute name="Implementation-Title"\r
- value="@{artifact} Sources" />\r
- <attribute name="Implementation-Version"\r
- value="${package.releaseId}" />\r
- </manifest>\r
- </jar>\r
- </sequential>\r
- </macrodef>\r
-\r
- <macrodef name="api">\r
- <attribute name="srcdir" />\r
- <attribute name="artifact" />\r
- <attribute name="classpathref" default="cp.main" />\r
- <element name="links" optional="true" />\r
- <sequential>\r
- <javadoc access="protected"\r
- destdir="${dist.doc}/@{artifact}/api" source="1.5"\r
- sourcepath="@{srcDir}"\r
- doctitle="API of @{artifact} (v${package.releaseId})"\r
- windowtitle="@{artifact} v${package.version}">\r
- <classpath>\r
- <path refid="@{classpathref}" />\r
- </classpath>\r
- <link href="http://java.sun.com/j2se/1.5.0/docs/api/" />\r
- <link\r
- href="http://static.springframework.org/spring/docs/2.0.x/api/" />\r
- <link href="http://www.hibernate.org/hib_docs/v3/api/" />\r
- <links />\r
- </javadoc>\r
- </sequential>\r
- </macrodef>\r
-</project>
\ No newline at end of file
+++ /dev/null
-<!--\r
-$HeadURL$\r
-$Revision$\r
-$LastChangedDate$\r
--->\r
-<project default="all">\r
- <!-- TO BE OVERRIDDEN -->\r
- <property name="package.type" value="I" />\r
- <property name="main.artifact" value="${package.prefix}" />\r
- <property name="test.artifact" value="${package.prefix}-test" />\r
-\r
- <property name="main.srcdir" location="src/main/java" />\r
- <property name="main.libdir" location="lib" />\r
- <property name="main.libdir-src" location="lib-src" />\r
- <property name="test.srcdir" location="src/test/java" />\r
-\r
- <property name="package.base" location="target/package/" />\r
-\r
- <property name="dist.base" location="target/dist/" />\r
- <property name="dist.doc" location="${dist.base}/doc" />\r
- <property name="dist.lib" location="${dist.base}/lib" />\r
- <property name="dist.lib-src" location="${dist.base}/lib-src" />\r
- <property name="dist.build" location="${dist.base}/build" />\r
- <property name="dist.junit" location="${dist.build}/junit" />\r
- <property name="dist.appli" location="${dist.base}/appli" />\r
-\r
- <property name="dist.jar" location="target/jar" />\r
-\r
- <property name="compile.base" location="target/compile" />\r
- <property name="slc.base" location="target/slc" />\r
-\r
- <path id="cp.main">\r
- <fileset dir="${main.libdir}">\r
- <include name="**/*.jar" />\r
- </fileset>\r
- </path>\r
-\r
- <path id="cp.test">\r
- <fileset dir="${main.libdir}">\r
- <include name="**/*.jar" />\r
- </fileset>\r
- <pathelement location="${dist.jar}/${main.artifact}.jar" />\r
- </path>\r
-\r
- <import file="slc-factory-macrodefs.xml" />\r
-\r
- <target name="all" depends="dist.package">\r
- <echo message="Build of ${package.name} completed" />\r
- <record name="${dist.build}/build.log" action="stop" />\r
- </target>\r
-\r
- <target name="basePackage" depends="dist.basePackage">\r
- <echo message="Build of ${package.name} completed" />\r
- <record name="${dist.build}/build.log" action="stop" />\r
- </target>\r
-\r
- <target name="clean">\r
- <delete dir="${dist.jar}" />\r
- <delete dir="${slc.base}" />\r
- <delete dir="${dist.base}" />\r
- <delete dir="${package.base}" />\r
- <delete dir="${compile.base}" />\r
- </target>\r
-\r
-\r
- <target name="init">\r
- <!-- To be overriden -->\r
- </target>\r
-\r
- <target name="init.internal">\r
- <mkdir dir="${dist.build}"/>\r
- <record name="${dist.build}/build.log" action="start" append="true"/>\r
- <fail unless="package.version"\r
- message="Property 'package.version' must be set" />\r
- <fail unless="package.prefix"\r
- message="Property 'package.prefix' must be set" />\r
-\r
- <tstamp>\r
- <format property="package.tstamp" pattern="yyMMddHHmmss" />\r
- </tstamp>\r
- <property name="package.releaseId"\r
- value="${package.version}.${package.tstamp}${package.type}" />\r
-\r
- <property name="package.name"\r
- value="${package.prefix}-${package.releaseId}" />\r
- <property name="basePackage.name" value="${package.prefix}-base" />\r
-\r
- <mkdir dir="${dist.jar}" />\r
- <mkdir dir="${slc.base}" />\r
- <mkdir dir="${dist.base}" />\r
- <mkdir dir="${dist.lib-src}" />\r
- <mkdir dir="${package.base}" />\r
- <mkdir dir="${compile.base}" />\r
-\r
- <echo message="Build of ${package.name} started." />\r
- </target>\r
-\r
- <target name="init.slcbase" if="slc.basePackage">\r
- <unzip dest="${slc.base}" src="${slc.basePackage}" />\r
-\r
- <copy todir="${dist.base}" overwrite="true" verbose="true">\r
- <fileset dir="${slc.base}">\r
- <include name="doc/argeo-slc/**" />\r
- <include name="bin/*" />\r
- </fileset>\r
- </copy>\r
-\r
- <copy todir="${main.libdir}" overwrite="true" verbose="true">\r
- <fileset dir="${slc.base}/lib">\r
- <include name="*" />\r
- </fileset>\r
- </copy>\r
- <copy todir="${main.libdir-src}" overwrite="true" verbose="true">\r
- <fileset dir="${slc.base}/lib-src">\r
- <include name="*" />\r
- </fileset>\r
- </copy>\r
- </target>\r
-\r
- <target name="build.main" depends="init.internal,init.slcbase,init">\r
- <compile artifact="${main.artifact}" srcdir="${main.srcdir}" />\r
- </target>\r
-\r
- <target name="jar.main" depends="build.main">\r
- <createJar artifact="${main.artifact}" srcdir="${main.srcdir}" />\r
- </target>\r
-\r
- <target name="build.test" depends="jar.main">\r
- <compile artifact="${test.artifact}"\r
- srcdir="${test.srcdir}"\r
- classpathref="cp.test" />\r
- </target>\r
-\r
- <target name="jar.sources" unless="flag.noSources">\r
- <createSourcesJar artifact="${main.artifact}" srcdir="${main.srcdir}" />\r
- </target>\r
-\r
- <target name="jar.test" depends="build.test">\r
- <createJar artifact="${test.artifact}" srcdir="${test.srcdir}" />\r
- </target>\r
-\r
- <target name="dist.unittest" depends="jar.test">\r
- <mkdir dir="${dist.junit}/xml" />\r
- <junit printsummary="yes" haltonfailure="no">\r
- <classpath>\r
- <path refid="cp.test" />\r
- <path location="${dist.jar}/${test.artifact}.jar" />\r
- </classpath>\r
-\r
- <formatter type="xml" />\r
-\r
- <batchtest fork="yes" todir="${dist.junit}/xml">\r
- <fileset dir="${test.srcdir}">\r
- <include name="**/*Test*.java" />\r
- <exclude name="**/Abstract*.java" />\r
- <exclude name="**/*TestDef*.java" />\r
- <exclude name="**/*TestData*.java" />\r
- </fileset>\r
- </batchtest>\r
- </junit>\r
-\r
- <junitreport todir="${dist.junit}">\r
- <fileset dir="${dist.junit}/xml">\r
- <include name="*.xml" />\r
- </fileset>\r
- <report format="frames" todir="${dist.junit}" />\r
- </junitreport>\r
- </target>\r
-\r
- <target name="package.common"\r
- depends="dist.unittest,jar.sources,dist.api,dist.apiWithSlc,dist.dependencies,dist.appli">\r
- </target>\r
-\r
- <target name="dist.package" depends="package.common">\r
- <copy todir="${dist.base}">\r
- <fileset dir="src/main/config" includes="**/*" />\r
- </copy>\r
- <copy todir="${dist.lib}">\r
- <fileset dir="${dist.jar}" includes="*.jar" excludes="*-test.jar" />\r
- </copy>\r
-\r
- <zip destfile="${package.base}/${package.name}.zip">\r
- <zipfileset dir="${dist.base}"\r
- prefix="${package.prefix}-${package.version}">\r
- <include name="**/*" />\r
- </zipfileset>\r
- </zip>\r
- </target>\r
-\r
- <target name="dist.basePackage" depends="package.common">\r
- <copy todir="${dist.base}">\r
- <fileset dir="src/main/config" includes="**/*" />\r
- </copy>\r
- <copy todir="${dist.lib}">\r
- <fileset dir="${dist.jar}" includes="*.jar" excludes="*-test.jar" />\r
- </copy>\r
-\r
- <zip destfile="${package.base}/${basePackage.name}.zip">\r
- <zipfileset dir="${dist.base}">\r
- <exclude name="build/**" />\r
- <include name="**/*" />\r
- </zipfileset>\r
- </zip>\r
- </target>\r
-\r
- <target name="dist.dependencies" if="flag.withDependencies">\r
- <copy todir="${dist.lib}">\r
- <fileset dir="${main.libdir}" includes="*.jar" />\r
- </copy>\r
-\r
- </target>\r
-\r
- <target name="dist.appli" if="appli.base">\r
- <copy todir="${dist.appli}">\r
- <fileset dir="${appli.base}" includes="**" />\r
- </copy>\r
-\r
- </target>\r
-\r
- <target name="dist.api" unless="slc.basePackage">\r
- <api artifact="${main.artifact}" srcdir="${main.srcdir}" />\r
-\r
- </target>\r
-\r
- <target name="dist.apiWithSlc" if="slc.basePackage">\r
- <api artifact="${main.artifact}" srcdir="${main.srcdir}">\r
- <links>\r
- <link href="../../argeo-slc/api" />
- </links>\r
- </api>\r
-\r
- </target>\r
-</project>
\ No newline at end of file
+++ /dev/null
-org.argeo.slc.ant.SlcProjectHelper
\ No newline at end of file
+++ /dev/null
-package org.argeo.slc.ant;\r
-\r
-import java.io.File;\r
-import java.util.List;\r
-\r
-import org.apache.commons.logging.Log;\r
-import org.apache.commons.logging.LogFactory;\r
-import org.apache.tools.ant.Project;\r
-import org.apache.tools.ant.ProjectHelper;\r
-\r
-import org.argeo.slc.core.structure.StructurePath;\r
-import org.argeo.slc.core.structure.StructureRegistry;\r
-\r
-/** Utilities to manipulate the structure registry in SLC Ant. */\r
-public class AntRegistryUtil {\r
- private static Log log = LogFactory.getLog(AntRegistryUtil.class);\r
-\r
- /** Reads a structure registry from an Ant file without executing it. */\r
- public static StructureRegistry readRegistry(File antFile) {\r
- if (log.isDebugEnabled())\r
- log.debug("Reads registry for Ant file " + antFile);\r
- Project p = new Project();\r
- p.setUserProperty("ant.file", antFile.getAbsolutePath());\r
- p.setBaseDir(antFile.getParentFile());\r
- p.init();\r
- ProjectHelper helper = new SlcProjectHelper();\r
- p.addReference("ant.projectHelper", helper);\r
- helper.parse(p, antFile);\r
-\r
- StructureRegistry registry = (StructureRegistry) p\r
- .getReference(SlcProjectHelper.REF_STRUCTURE_REGISTRY);\r
- registry.setMode(StructureRegistry.READ);\r
-\r
- p.executeTarget(p.getDefaultTarget());\r
- return registry;\r
- }\r
-\r
- /** Executes only the active paths of the Ant file. */\r
- public static Project runActive(File antFile,\r
- List<StructurePath> activePaths) {\r
- if (log.isDebugEnabled())\r
- log.debug("Runs the " + activePaths.size()\r
- + " provided active paths of Ant file " + antFile);\r
- Project p = new Project();\r
- p.setUserProperty("ant.file", antFile.getAbsolutePath());\r
- p.setBaseDir(antFile.getParentFile());\r
- p.init();\r
- ProjectHelper helper = new SlcProjectHelper();\r
- p.addReference("ant.projectHelper", helper);\r
- helper.parse(p, antFile);\r
-\r
- StructureRegistry registry = (StructureRegistry) p\r
- .getReference(SlcProjectHelper.REF_STRUCTURE_REGISTRY);\r
- registry.setMode(StructureRegistry.ACTIVE);\r
- registry.setActivePaths(activePaths);\r
- p.executeTarget(p.getDefaultTarget());\r
- return p;\r
- }\r
-\r
- /** Executes all paths of the default target of the Ant file. */\r
- public static Project runAll(File antFile) {\r
- if (log.isDebugEnabled())\r
- log.debug("Runs all paths of Ant file " + antFile);\r
- Project p = new Project();\r
- p.setUserProperty("ant.file", antFile.getAbsolutePath());\r
- p.setBaseDir(antFile.getParentFile());\r
- p.init();\r
- ProjectHelper helper = new SlcProjectHelper();\r
- p.addReference("ant.projectHelper", helper);\r
- helper.parse(p, antFile);\r
- p.executeTarget(p.getDefaultTarget());\r
- return p;\r
- }\r
-}\r
+++ /dev/null
-package org.argeo.slc.ant;\r
-\r
-import java.io.File;\r
-import java.io.FileInputStream;\r
-import java.io.IOException;\r
-import java.util.Map;\r
-import java.util.Properties;\r
-import java.util.StringTokenizer;\r
-\r
-import org.springframework.util.Log4jConfigurer;\r
-\r
-import org.apache.tools.ant.Project;\r
-\r
-/**\r
- * <p>\r
- * Manager and initializer of the properties required by SLC Ant.\r
- * </p>\r
- * \r
- * <p>\r
- * All properties described here will get a value one way or another (see below\r
- * for details)/ Each property will be accessible via Ant or Spring properties.\r
- * </p>\r
- * \r
- * <p>\r
- * The property <i>slc.rootFile</i> is set based on the location of the SLC\r
- * root property file found in the directory structure of a called Ant file. The\r
- * default name of this file is <b>slcRoot.properties</b> (can be set by\r
- * {@link #setSlcRootFileName(String)}). <br>\r
- * This property provides the absolute path to the unique SLC root property file\r
- * which marks the root of an Ant SLC tree structure.\r
- * </p>\r
- * \r
- * <p>\r
- * The property <i>slc.rootDir</i> is inferred from <i>slc.rootFile</i> and\r
- * provides a convenient shortcut to the root directory of the Ant files\r
- * directory structure.\r
- * </p>\r
- * \r
- * <p>\r
- * A few directory and file related properties can be set in the SLC root\r
- * property file (if they are not explicitly set their default values will be\r
- * used):\r
- * \r
- * <table border="1" cellspacing="0">\r
- * <tr>\r
- * <th>Property</th>\r
- * <th>Description</th>\r
- * <th>Default</th>\r
- * </tr>\r
- * <tr>\r
- * <td><i>slc.confDir</i></td>\r
- * <td>Directory where to find the various configuration files of a given SLC\r
- * Ant deployment</td>\r
- * <td>${slc.rootDir}/../conf</td>\r
- * </tr>\r
- * <tr>\r
- * <td><i>slc.workDir</i></td>\r
- * <td>Directory where data can be retrieved or generated: build outputs, test\r
- * inputs/outputs, test results, etc. The underlying directory structure is\r
- * specified by the specific SLC application.</td>\r
- * <td>${slc.rootDir}/../work</td>\r
- * </tr>\r
- * <tr>\r
- * <td><i>slc.propertyFileNames</i></td>\r
- * <td>Comma-separated list of the files names of the property files to load\r
- * from the conf directory. Having various files allows to separate between SLC\r
- * framework properties and properties specific to a given application built on\r
- * top of SLC. All will be available across Ant and Spring.</td>\r
- * <td>slc.properties</td>\r
- * </tr>\r
- * </table> <b>Note:</b> Only the properties above can be set in the SLC root\r
- * properties file. All other properties should be defined in the registered\r
- * conf files.\r
- * </p>\r
- * \r
- * <p>\r
- * Any property can be defined in the conf files defined in the SLC root\r
- * properties file (see above). SLC expects some which will have defaults but\r
- * can be overriden there. By convention they should be defined in the\r
- * <b>slc.properties</b> file, while application specific properties should be\r
- * defined in other conf files. This allows for a clean spearation between SLC\r
- * and the applications built on top of it:\r
- * \r
- * <table border="1" cellspacing="0">\r
- * <tr>\r
- * <th>Property</th>\r
- * <th>Description</th>\r
- * <th>Default</th>\r
- * </tr>\r
- * <tr>\r
- * <td><i>slc.applicationContext</i></td>\r
- * <td>Path to the root Spring application context file used by SLC Ant.</td>\r
- * <td>${slc.confDir}/applicationContext.xml</td>\r
- * </tr>\r
- * <tr>\r
- * <td><i>slc.defaultTestRun</i></td>\r
- * <td>Name of the {@link WritableTestRun} Spring bean that the\r
- * <code>slc.test</code> task will use by default. This can be overridden when\r
- * calling the task from Ant.</td>\r
- * <td>defaultTestRun</td>\r
- * </tr>\r
- * </table>\r
- * </p>\r
- */\r
-public class SlcAntConfig {\r
- // SLC ROOT PROPERTIES\r
- /** Property for the root file (SLC root property file). */\r
- public final static String ROOT_FILE_PROPERTY = "slc.rootFile";\r
- /** Property for the root dir (SLC root property file). */\r
- public final static String ROOT_DIR_PROPERTY = "slc.rootDir";\r
- /** Property for the conf dir (SLC root property file). */\r
- public final static String CONF_DIR_PROPERTY = "slc.confDir";\r
- /** Property for the work dir (SLC root property file). */\r
- public final static String WORK_DIR_PROPERTY = "slc.workDir";\r
- /**\r
- * Comma-separated list of property file names to load from the conf dir and\r
- * add to project user properties\r
- */\r
- public final static String PROPERTY_FILE_NAMES_PROPERTY = "slc.propertyFileNames";\r
-\r
- // SLC CONF PROPERTIES\r
- /** Path to the root Spring application context */\r
- public static String APPLICATION_CONTEXT_PROPERTY = "slc.applicationContext";\r
- /** Name of the Spring bean used by default */\r
- public static String DEFAULT_TEST_RUN_PROPERTY = "slc.defaultTestRun";\r
-\r
- // SLC LOCAL PROPERTIES\r
- /** Property for the dir description (SLC local property file). */\r
- public static String DIR_DESCRIPTION_PROPERTY = "slc.dirDescription";\r
-\r
- private String slcRootFileName = "slcRoot.properties";\r
- private String slcLocalFileName = "slcLocal.properties";\r
-\r
- /**\r
- * Retrieves or infers all properties and set them as project user\r
- * properties. All these properties will be set as project properties <b>if\r
- * they had not been set as project properties before</b> (like by\r
- * overriding through the standard Ant mechanisms).\r
- * \r
- * @param project\r
- * the Ant <code>Project</code> being run.\r
- * @return whether the project could be initialized for SLC usage (e.g.\r
- * presence of an SLC root file)\r
- */\r
- public boolean initProject(Project project) {\r
- File projectBaseDir = project.getBaseDir();\r
- File slcRootFile = findSlcRootFile(projectBaseDir);\r
- if (slcRootFile == null) {\r
- return false;\r
- }\r
-\r
- // pass the project properties through the System properties\r
- System.getProperties().putAll((Map<?, ?>) project.getUserProperties());\r
- Properties all = prepareAllProperties(slcRootFile);\r
- for (Object o : all.keySet()) {\r
- String key = o.toString();\r
- //System.out.println(key+"="+all.getProperty(key));\r
- if (project.getUserProperty(key) == null) {// not already set\r
- project.setUserProperty(key, all.getProperty(key));\r
- }\r
- }\r
- return true;\r
- }\r
-\r
- /**\r
- * Retrieves or infers all required properties.\r
- * \r
- * @param slcRootFile\r
- * the location of the SLC root file\r
- * \r
- * @return the prepared properties. Note that it also contains the System\r
- * and Ant properties which had previously been set.\r
- */\r
- protected Properties prepareAllProperties(File slcRootFile) {\r
- try {\r
- final String fileUrlPrefix = "";\r
-\r
- Properties all = new Properties();\r
- all.putAll(System.getProperties());\r
- all.put(ROOT_FILE_PROPERTY, slcRootFile.getCanonicalPath());\r
- // Remove basedir property in order to avoid conflict with Maven\r
- if (all.containsKey("basedir"))\r
- all.remove("basedir");\r
-\r
- Properties rootProps = loadFile(slcRootFile.getCanonicalPath());\r
-\r
- final File confDir;\r
- final File workDir;\r
- // Root dir\r
- final File rootDir = slcRootFile.getParentFile();\r
- all.setProperty(ROOT_DIR_PROPERTY, fileUrlPrefix\r
- + rootDir.getCanonicalPath());\r
-\r
- // Conf dir\r
- if (all.getProperty(CONF_DIR_PROPERTY) == null) {\r
- confDir = new File(rootProps.getProperty(CONF_DIR_PROPERTY,\r
- rootDir.getAbsolutePath() + "/../conf"))\r
- .getCanonicalFile();\r
- all.setProperty(CONF_DIR_PROPERTY, fileUrlPrefix\r
- + confDir.getAbsolutePath());\r
- } else {\r
- confDir = new File(all.getProperty(CONF_DIR_PROPERTY))\r
- .getCanonicalFile();\r
- }\r
-\r
- // Work dir\r
- if (all.getProperty(WORK_DIR_PROPERTY) == null) {\r
- workDir = new File(rootProps.getProperty(WORK_DIR_PROPERTY,\r
- rootDir.getAbsolutePath() + "/../work"))\r
- .getCanonicalFile();\r
- all.setProperty(WORK_DIR_PROPERTY, fileUrlPrefix\r
- + workDir.getAbsolutePath());\r
- } else {\r
- workDir = new File(all.getProperty(WORK_DIR_PROPERTY))\r
- .getCanonicalFile();\r
- }\r
-\r
- // Properties from the conf dir files\r
- Properties properties = new Properties();\r
- StringTokenizer st = new StringTokenizer(rootProps.getProperty(\r
- PROPERTY_FILE_NAMES_PROPERTY, "slc.properties"), ",");\r
- while (st.hasMoreTokens()) {\r
- String fileName = st.nextToken();\r
- properties.putAll(loadFile(confDir.getAbsolutePath()\r
- + File.separator + fileName));\r
- }\r
-\r
- for (Object o : properties.keySet()) {\r
- String key = o.toString();\r
- if (all.getProperty(key) == null) {// not already set\r
- all.setProperty(key, properties.getProperty(key));\r
- }\r
- }\r
-\r
- // Default application context\r
- if (all.getProperty(APPLICATION_CONTEXT_PROPERTY) == null) {\r
- all.setProperty(APPLICATION_CONTEXT_PROPERTY, confDir\r
- .getAbsolutePath()\r
- + "/applicationContext.xml");\r
- }\r
- // Default test run\r
- if (all.getProperty(DEFAULT_TEST_RUN_PROPERTY) == null) {\r
- all.setProperty(DEFAULT_TEST_RUN_PROPERTY, "defaultTestRun");\r
- }\r
-\r
- // Default log4j\r
- if (all.getProperty("log4j.configuration") == null) {\r
- System.setProperty("log4j.configuration", confDir\r
- .getCanonicalPath()\r
- + File.separator + "log4j.properties");\r
- // TODO: fix dependency to log4j\r
- Log4jConfigurer.initLogging(confDir.getCanonicalPath()\r
- + File.separator + "log4j.properties");\r
- }\r
-\r
- return all;\r
- } catch (Exception e) {\r
- throw new SlcAntException("Unexpected exception while configuring",\r
- e);\r
- }\r
- }\r
-\r
- /** Loads the content of a file as <code>Properties</code>. */\r
- private Properties loadFile(String path) {\r
- Properties p = new Properties();\r
- try {\r
- FileInputStream in = new FileInputStream(path);\r
- p.load(in);\r
- in.close();\r
- } catch (IOException e) {\r
- throw new SlcAntException("Cannot read SLC root file", e);\r
- }\r
- return p;\r
- }\r
-\r
- /**\r
- * Looks for a file named {@link #getSlcLocalFileName()} in the directory,\r
- * loads it as properties file and return the value of the property\r
- * {@link #DIR_DESCRIPTION_PROPERTY}.\r
- */\r
- public String getDescriptionForDir(File dir) {\r
- String description = dir.getName();\r
- File slcLocal = new File(dir.getPath() + File.separator\r
- + getSlcLocalFileName());\r
- if (slcLocal.exists()) {\r
- Properties properties = loadFile(slcLocal.getAbsolutePath());\r
- description = properties.getProperty(\r
- SlcAntConfig.DIR_DESCRIPTION_PROPERTY, description);\r
- }\r
- return description;\r
- }\r
-\r
- /**\r
- * Recursively scans directories downwards until it find a file names as\r
- * defined by {@link #getSlcRootFileName()}.\r
- */\r
- public File findSlcRootFile(File dir) {\r
- for (File file : dir.listFiles()) {\r
- if (!file.isDirectory()\r
- && file.getName().equals(getSlcRootFileName())) {\r
- return file;\r
- }\r
- }\r
-\r
- File parentDir = dir.getParentFile();\r
- if (parentDir == null) {\r
- return null;// stop condition: not found\r
- } else {\r
- return findSlcRootFile(parentDir);\r
- }\r
- }\r
-\r
- /**\r
- * Gets the file name of the file marking the root directory, default being\r
- * <i>slcRoot.properties</i>.\r
- */\r
- public String getSlcRootFileName() {\r
- return slcRootFileName;\r
- }\r
-\r
- /** Sets the file name of the file marking the root directory. */\r
- public void setSlcRootFileName(String slcRootFileName) {\r
- this.slcRootFileName = slcRootFileName;\r
- }\r
-\r
- /**\r
- * Gets the file name of the file containing directory specific properties,\r
- * default being <i>slcLocal.properties</i>.\r
- */\r
- public String getSlcLocalFileName() {\r
- return slcLocalFileName;\r
- }\r
-\r
- /** Sets the file name of the file containing directory specific properties. */\r
- public void setSlcLocalFileName(String slcLocalFileName) {\r
- this.slcLocalFileName = slcLocalFileName;\r
- }\r
-\r
-}\r
+++ /dev/null
-package org.argeo.slc.ant;\r
-\r
-import org.argeo.slc.core.SlcException;\r
-\r
-/** Base for all SLC Ant exceptions. */\r
-public class SlcAntException extends SlcException {\r
- static final long serialVersionUID = 1l;\r
-\r
- /** Constructor. */\r
- public SlcAntException(String message) {\r
- super(message);\r
- }\r
-\r
- /** Constructor. */\r
- public SlcAntException(String message, Throwable cause) {\r
- super(message, cause);\r
- }\r
-\r
-}\r
+++ /dev/null
-package org.argeo.slc.ant;\r
-\r
-import java.io.File;\r
-import java.io.IOException;\r
-import java.io.InputStream;\r
-import java.util.List;\r
-import java.util.Map;\r
-import java.util.Properties;\r
-import java.util.Vector;\r
-\r
-import org.springframework.context.support.AbstractApplicationContext;\r
-import org.springframework.context.support.FileSystemXmlApplicationContext;\r
-\r
-import org.apache.commons.logging.Log;\r
-import org.apache.commons.logging.LogFactory;\r
-import org.apache.tools.ant.BuildException;\r
-import org.apache.tools.ant.Project;\r
-import org.apache.tools.ant.helper.ProjectHelperImpl;\r
-\r
-import org.argeo.slc.core.UnsupportedException;\r
-import org.argeo.slc.core.structure.DefaultSRegistry;\r
-import org.argeo.slc.core.structure.SimpleSElement;\r
-import org.argeo.slc.core.structure.StructureRegistry;\r
-import org.argeo.slc.core.structure.tree.TreeSPath;\r
-\r
-/**\r
- * Custom implementation of an Ant <code>ProjectHelper</code> binding a Spring\r
- * application context and a structure registry with the Ant project.\r
- */\r
-public class SlcProjectHelper extends ProjectHelperImpl {\r
- private static Log log;\r
-\r
- /** The Ant reference to the Spring application context used. */\r
- public static String REF_ROOT_CONTEXT = "slcApplicationContext";\r
- /** The Ant reference to the SLC structure registry used. */\r
- public static String REF_STRUCTURE_REGISTRY = "slcStructureRegistry";\r
- /** The Ant reference to the <code>TreePath</code> of the current project */\r
- private static String REF_PROJECT_PATH = "slcProjectPath";\r
- /**\r
- * Resource path to the property file listing the SLC specific Ant tasks:\r
- * /org/argeo/slc/ant/taskdefs.properties\r
- */\r
- private static String SLC_TASKDEFS_RESOURCE_PATH = "/org/argeo/slc/ant/taskdefs.properties";\r
-\r
- @Override\r
- public void parse(Project project, Object source) throws BuildException {\r
- if (!(source instanceof File)) {\r
- throw new UnsupportedException("Ant file", source);\r
- }\r
- File sourceFile = (File) source;\r
-\r
- // initialize config\r
- SlcAntConfig slcAntConfig = new SlcAntConfig();\r
-\r
- // Reset basedir property, in order to avoid base dir override when\r
- // running in Maven\r
- project.setProperty("basedir", sourceFile.getParentFile()\r
- .getAbsolutePath());\r
- if (!slcAntConfig.initProject(project)) {\r
- // not SLC compatible, do normal Ant\r
- super.parse(project, source);\r
- return;\r
- }\r
-\r
- if (log == null) {\r
- // log4j is initialized only now\r
- log = LogFactory.getLog(SlcProjectHelper.class);\r
- }\r
- log.debug("SLC properties are set, starting initialization..");\r
-\r
- // init Spring application context\r
- initSpringContext(project);\r
-\r
- // init structure registry\r
- DefaultSRegistry registry = new DefaultSRegistry();\r
- project.addReference(REF_STRUCTURE_REGISTRY, registry);\r
-\r
- // call the underlying implementation to do the actual work\r
- super.parse(project, source);\r
-\r
- // create structure root\r
- registerProjectAndParents(project, slcAntConfig);\r
-\r
- addSlcTasks(project);\r
-\r
- }\r
-\r
- /** Creates the tree-based structure for this project. */\r
- private void registerProjectAndParents(Project project,\r
- SlcAntConfig slcAntConfig) {\r
- StructureRegistry registry = (StructureRegistry) project\r
- .getReference(REF_STRUCTURE_REGISTRY);\r
- File rootDir = new File(project\r
- .getUserProperty(SlcAntConfig.ROOT_DIR_PROPERTY))\r
- .getAbsoluteFile();\r
- File baseDir = project.getBaseDir().getAbsoluteFile();\r
- List<File> dirs = new Vector<File>();\r
- File currentDir = baseDir;\r
- do {\r
- dirs.add(currentDir);\r
- currentDir = currentDir.getParentFile();\r
- if (log.isTraceEnabled())\r
- log.trace("List " + currentDir);\r
- } while (!currentDir.equals(rootDir.getParentFile()));\r
-\r
- // first path is root dir (because of previous algorithm)\r
- TreeSPath currPath = TreeSPath.createRootPath(rootDir.getName());\r
- for (int i = dirs.size() - 1; i >= 0; i--) {\r
- File dir = dirs.get(i);\r
-\r
- // retrieves description for this path\r
- final String description;\r
- if (i == 0) {// project itself\r
- description = project.getDescription() != null ? project\r
- .getDescription() : "[no desc]";\r
- } else {\r
- description = slcAntConfig.getDescriptionForDir(dir);\r
- }\r
- SimpleSElement element = new SimpleSElement(description);\r
-\r
- // creates and register path\r
- if (!dir.equals(rootDir)) {// already set\r
- currPath = currPath.createChild(dir.getName());\r
- }\r
- registry.register(currPath, element);\r
- }\r
- project.addReference(REF_PROJECT_PATH, currPath);\r
- }\r
-\r
- /** Gets the path of a project (root). */\r
- public static TreeSPath getProjectPath(Project project) {\r
- return (TreeSPath) project.getReference(REF_PROJECT_PATH);\r
- }\r
-\r
- /** Initializes the Spring application context. */\r
- private void initSpringContext(Project project) {\r
- System.getProperties().putAll((Map<?, ?>) project.getProperties());\r
- String acPath = project\r
- .getUserProperty(SlcAntConfig.APPLICATION_CONTEXT_PROPERTY);\r
- AbstractApplicationContext context = new FileSystemXmlApplicationContext(\r
- acPath);\r
- context.registerShutdownHook();\r
- project.addReference(REF_ROOT_CONTEXT, context);\r
- }\r
-\r
- /** Loads the SLC specific Ant tasks. */\r
- private void addSlcTasks(Project project) {\r
- Properties taskdefs = new Properties();\r
- try {\r
- InputStream in = project.getClass().getResourceAsStream(\r
- SLC_TASKDEFS_RESOURCE_PATH);\r
- taskdefs.load(in);\r
- in.close();\r
- } catch (IOException e) {\r
- throw new SlcAntException("Cannot load task definitions", e);\r
- }\r
-\r
- for (Object o : taskdefs.keySet()) {\r
- String name = o.toString();\r
- try {\r
- project.addTaskDefinition(name, Class.forName(taskdefs\r
- .getProperty(name)));\r
- } catch (ClassNotFoundException e) {\r
- log.error("Unknown class for task " + name, e);\r
- }\r
- }\r
- }\r
-}\r
+++ /dev/null
-package org.argeo.slc.ant.deploy;\r
-\r
-import org.apache.commons.logging.Log;\r
-import org.apache.commons.logging.LogFactory;\r
-import org.apache.tools.ant.BuildException;\r
-\r
-import org.argeo.slc.ant.spring.AbstractSpringArg;\r
-import org.argeo.slc.ant.structure.SAwareTask;\r
-import org.argeo.slc.core.deploy.DeploymentData;\r
-import org.argeo.slc.core.deploy.TargetData;\r
-import org.argeo.slc.core.deploy.WritableDeployment;\r
-\r
-/** Ant task wrapping a deployment. */\r
-public class SlcDeployTask extends SAwareTask {\r
- private Log log = LogFactory.getLog(SlcDeployTask.class);\r
-\r
- private String deploymentBean = null;\r
-\r
- private DeploymentDataArg deploymentDataArg;\r
- private TargetDataArg targetDataArg;\r
-\r
- @Override\r
- public void executeActions(String mode) throws BuildException {\r
- WritableDeployment deployment = (WritableDeployment) getContext()\r
- .getBean(deploymentBean);\r
-\r
- // set overridden references\r
- if (deploymentDataArg != null) {\r
- deployment.setDeploymentData(deploymentDataArg.getDeploymentData());\r
- log.trace("Overrides deployment data");\r
- }\r
-\r
- if (targetDataArg != null) {\r
- deployment.setTargetData(targetDataArg.getTargetData());\r
- log.trace("Overrides target data");\r
- }\r
-\r
- deployment.execute();\r
- }\r
-\r
- /**\r
- * The bean name of the test run to use. If not set the default is used.\r
- * \r
- * @see SlcAntConfig\r
- */\r
- public void setDeployment(String deploymentBean) {\r
- this.deploymentBean = deploymentBean;\r
- }\r
-\r
- /** Creates deployment data sub tag. */\r
- public DeploymentDataArg createDeploymentData() {\r
- deploymentDataArg = new DeploymentDataArg();\r
- return deploymentDataArg;\r
- }\r
-\r
- /** Creates target data sub tag. */\r
- public TargetDataArg createTargetData() {\r
- targetDataArg = new TargetDataArg();\r
- return targetDataArg;\r
- }\r
-}\r
-\r
-class DeploymentDataArg extends AbstractSpringArg {\r
- DeploymentData getDeploymentData() {\r
- return (DeploymentData) getBeanInstance();\r
- }\r
-\r
-}\r
-\r
-class TargetDataArg extends AbstractSpringArg {\r
- TargetData getTargetData() {\r
- return (TargetData) getBeanInstance();\r
- }\r
-\r
-}\r
+++ /dev/null
-<html>\r
-<head></head>\r
-<body>\r
-Integration of SLC Deploy in Ant.\r
-</body>\r
-</html>
\ No newline at end of file
+++ /dev/null
-<html>\r
-<head></head>\r
-<body>\r
-Bases classes for SLC Ant extensions.\r
-<h2>Introduction</h2>\r
-SLC Ant allows to integrate Ant and Spring in order to run an\r
-application based on top of SLC. Sequence of actions are defined in Ant\r
-files with specific Ant tasks referencing Spring beans implementing the\r
-SLC interfaces. The properties of these beans can be overridden at\r
-runtime in the Ant scripts.\r
-<br />\r
-SLC Ant also provides a tree-based implementation of the SLC structure\r
-which allows to uniquely identify and reference the various actions.\r
-\r
-<h2>Installation</h2>\r
-The structure will be first defined by the directory tree where the Ant\r
-files are stored. In order to define the root of this tree, you need to\r
-place in the root directory an\r
-<b>SLC Ant root file</b>\r
-(default name: slcRoot.properties).\r
-<br />\r
-In this root file you can define a configuration directory and a work\r
-directory (default values are provided if they are not explicitly set).\r
-<br />\r
-Additional properties can then be defined in files stored under the\r
-configuration directory.\r
-<br />\r
-For details about the configuration and the various properties, please\r
-refer to {@link org.argeo.slc.ant.SlcAntConfig}.\r
-\r
-<h2>Running SLC Ant</h2>\r
-SLC Ant can be run either via pure Ant scripts or programmatically using\r
-{@link org.argeo.slc.ant.AntRegistryUtil}. In both cases, make sure that\r
-SLC and its dependencies are in the classpath (Spring (always), logging\r
-system such as log4j, Hibernate, etc.).\r
-\r
-</body>\r
-</html>
\ No newline at end of file
+++ /dev/null
-package org.argeo.slc.ant.spring;\r
-\r
-import java.util.List;\r
-import java.util.Vector;\r
-\r
-import org.springframework.beans.BeanWrapper;\r
-import org.springframework.beans.BeanWrapperImpl;\r
-import org.springframework.context.ApplicationContext;\r
-\r
-import org.apache.tools.ant.types.DataType;\r
-\r
-import org.argeo.slc.ant.SlcProjectHelper;\r
-\r
-/** Abstract Ant type wrapping a Spring bean. */\r
-public abstract class AbstractSpringArg extends DataType {\r
- private List<OverrideArg> overrides = new Vector<OverrideArg>();\r
-\r
- private String bean;\r
-\r
- // cache bean instance to avoid reading it twice if it is a prototype\r
- private Object beanInstance = null;\r
-\r
- /** The <u>name</u> of the underlying bean, as set throught the attribute. */\r
- public String getBean() {\r
- return bean;\r
- }\r
-\r
- /** Setter for the bean name. */\r
- public void setBean(String bean) {\r
- this.bean = bean;\r
- }\r
-\r
- /**\r
- * Retrieve the instance of the bean, and sets the overriden properties.\r
- * <b>The value is cached.</b>\r
- */\r
- public Object getBeanInstance() {\r
- if (beanInstance == null) {\r
- beanInstance = getContext().getBean(bean);\r
-\r
- BeanWrapper wrapper = new BeanWrapperImpl(beanInstance);\r
- for (OverrideArg override : overrides) {\r
- wrapper.setPropertyValue(override.getName(), override\r
- .getObject());\r
- }\r
- }\r
- return beanInstance;\r
- }\r
-\r
- /** Creates an override subtag. */\r
- public OverrideArg createOverride() {\r
- OverrideArg propertyArg = new OverrideArg();\r
- overrides.add(propertyArg);\r
- return propertyArg;\r
- }\r
-\r
- /** The related Spring application context. */\r
- protected ApplicationContext getContext() {\r
- return (ApplicationContext) getProject().getReference(\r
- SlcProjectHelper.REF_ROOT_CONTEXT);\r
- }\r
-\r
-}\r
+++ /dev/null
-package org.argeo.slc.ant.spring;\r
-\r
-import org.springframework.context.ApplicationContext;\r
-\r
-import org.apache.tools.ant.Task;\r
-\r
-import org.argeo.slc.ant.SlcProjectHelper;\r
-\r
-/** Abstract Ant task providing access to a Spring context. */\r
-public abstract class AbstractSpringTask extends Task {\r
-\r
- /** Gets the related Spring context. */\r
- protected ApplicationContext getContext() {\r
- return (ApplicationContext) getProject().getReference(\r
- SlcProjectHelper.REF_ROOT_CONTEXT);\r
- }\r
-\r
-}\r
+++ /dev/null
-package org.argeo.slc.ant.spring;\r
-\r
-import java.util.List;\r
-import java.util.Vector;\r
-\r
-import org.apache.tools.ant.BuildException;\r
-\r
-/** Ant type allowing to override bean properties. */\r
-public class OverrideArg extends AbstractSpringArg {\r
- private String name;\r
- private Object value;\r
- private OverrideList overrideList;\r
-\r
- /** The name of the property to override. */\r
- public String getName() {\r
- return name;\r
- }\r
-\r
- /** Sets the name. */\r
- public void setName(String name) {\r
- this.name = name;\r
- }\r
-\r
- /** Both value and bean cannot be set. */\r
- public void setValue(String value) {\r
- if (getBean() != null || overrideList != null) {\r
- throw new BuildException("Value already set.");\r
- }\r
- this.value = value;\r
- }\r
-\r
- @Override\r
- public void setBean(String bean) {\r
- if (value != null || overrideList != null) {\r
- throw new BuildException("Value already set.");\r
- }\r
- super.setBean(bean);\r
- }\r
-\r
- /** Creates override list sub tag. */\r
- public OverrideList createList() {\r
- if (value != null || getBean() != null) {\r
- throw new BuildException("Value already set.");\r
- }\r
- if (overrideList == null) {\r
- overrideList = new OverrideList();\r
- } else {\r
- throw new BuildException("Only one list can be declared");\r
- }\r
- return overrideList;\r
- }\r
-\r
- /**\r
- * The related object: the value if a value had been set or an instance of\r
- * the bean if not.\r
- */\r
- public Object getObject() {\r
- if (value != null) {\r
- return value;\r
- } else if (getBean() != null) {\r
- return getBeanInstance();\r
- } else if (overrideList != null) {\r
- return overrideList.getAsObjectList();\r
- } else {\r
- throw new BuildException("Value or bean not set.");\r
- }\r
- }\r
-\r
- /** List of overrides */\r
- protected class OverrideList {\r
- private List<OverrideArg> list = new Vector<OverrideArg>();\r
-\r
- /** Creates override sub tag. */\r
- public OverrideArg createOverride() {\r
- OverrideArg overrideArg = new OverrideArg();\r
- list.add(overrideArg);\r
- return overrideArg;\r
- }\r
-\r
- /** Gets as list of objects. */\r
- public List<Object> getAsObjectList() {\r
- List<Object> objectList = new Vector<Object>();\r
- for (OverrideArg arg : list) {\r
- objectList.add(arg.getObject());\r
- }\r
- return objectList;\r
- }\r
- }\r
-}\r
+++ /dev/null
-<html>\r
-<head></head>\r
-<body>\r
-Integration of Spring in Ant.\r
-</body>\r
-</html>
\ No newline at end of file
+++ /dev/null
-package org.argeo.slc.ant.structure;\r
-\r
-import java.util.List;\r
-import java.util.Vector;\r
-\r
-import org.apache.tools.ant.BuildException;\r
-import org.apache.tools.ant.Target;\r
-\r
-import org.argeo.slc.ant.SlcProjectHelper;\r
-import org.argeo.slc.ant.spring.AbstractSpringArg;\r
-import org.argeo.slc.ant.spring.AbstractSpringTask;\r
-import org.argeo.slc.core.structure.SimpleSElement;\r
-import org.argeo.slc.core.structure.StructureAware;\r
-import org.argeo.slc.core.structure.StructureElement;\r
-import org.argeo.slc.core.structure.StructurePath;\r
-import org.argeo.slc.core.structure.StructureRegistry;\r
-import org.argeo.slc.core.structure.tree.TreeSPath;\r
-\r
-/** Ant task that can be registered within a structure. */\r
-public abstract class SAwareTask extends AbstractSpringTask implements\r
- StructureElement {\r
- private TreeSPath path;\r
- private final List<AbstractSpringArg> sAwareArgs = new Vector<AbstractSpringArg>();\r
-\r
- @Override\r
- public void init() throws BuildException {\r
- StructureRegistry registry = getRegistry();\r
- Target target = getOwningTarget();\r
-\r
- TreeSPath targetPath = createTargetPath(target);\r
- SimpleSElement targetElement = (SimpleSElement) registry\r
- .getElement(createTargetPath(target));\r
-\r
- if (targetElement == null) {\r
- targetElement = new SimpleSElement(target.getDescription(),\r
- "<no target desc>");\r
- registry.register(targetPath, targetElement);\r
- }\r
- }\r
-\r
- /**\r
- * Includes this arg in the checks for propagation of sstructure related\r
- * information.\r
- */\r
- protected void addSAwareArg(AbstractSpringArg arg) {\r
- sAwareArgs.add(arg);\r
- }\r
-\r
- @Override\r
- /**\r
- * Called by Ant at runtime. Decides whether to call the actions depending\r
- * of the mode of the underlying structure registry.\r
- * \r
- * @see #executeActions\r
- * @see StructureRegistry\r
- */\r
- public final void execute() throws BuildException {\r
- // register the task in the structure\r
- TreeSPath targetPath = createTargetPath(getOwningTarget());\r
- TreeSPath taskPath = targetPath.createChild(getTaskName()\r
- + targetPath.listChildren(getRegistry()).size());\r
- getRegistry().register(taskPath, this);\r
- path = taskPath;\r
-\r
- // notify registered args\r
- for (AbstractSpringArg arg : sAwareArgs) {\r
- Object obj = arg.getBeanInstance();\r
-\r
- if (obj instanceof StructureAware) {\r
- StructureAware sAwareT = (StructureAware) obj;\r
- sAwareT.notifyCurrentPath(getRegistry(), taskPath);\r
- }\r
- }\r
-\r
- // execute depending on the registry mode\r
- String mode = getRegistry().getMode();\r
- if (mode.equals(StructureRegistry.ALL)) {\r
- executeActions(mode);\r
- } else if (mode.equals(StructureRegistry.ACTIVE)) {\r
- List<StructurePath> activePaths = getRegistry().getActivePaths();\r
-\r
- if (activePaths.contains(targetPath)) {\r
- if (activePaths.contains(taskPath)) {\r
- executeActions(mode);\r
- }\r
- }\r
- }\r
-\r
- }\r
-\r
- /** Actions to be executed by the implementor. */\r
- protected abstract void executeActions(String mode);\r
-\r
- /** Gets the underlying structure registry. */\r
- protected StructureRegistry getRegistry() {\r
- return (StructureRegistry) getProject().getReference(\r
- SlcProjectHelper.REF_STRUCTURE_REGISTRY);\r
- }\r
-\r
- /** Creates the path for a given Ant target. */\r
- protected static TreeSPath createTargetPath(Target target) {\r
- TreeSPath projectPath = SlcProjectHelper.getProjectPath(target\r
- .getProject());\r
- return projectPath.createChild(target.getName());\r
- }\r
-\r
- /** Gets the path under which this task is registered. */\r
- public TreeSPath getPath() {\r
- return path;\r
- }\r
-\r
- @Override\r
- public String getDescription() {\r
- String description = super.getDescription();\r
- if (description == null) {\r
- return "<no task def>";\r
- } else {\r
- return description;\r
- }\r
- }\r
-\r
-}\r
+++ /dev/null
-<html>\r
-<head></head>\r
-<body>\r
-Integration of SLC Structure in Ant.\r
-</body>\r
-</html>
\ No newline at end of file
+++ /dev/null
-package org.argeo.slc.ant.test;\r
-\r
-import org.argeo.slc.ant.structure.SAwareTask;\r
-import org.argeo.slc.core.structure.StructureRegistry;\r
-import org.argeo.slc.core.test.TestResult;\r
-\r
-/** Ant tasks closing a given result. */\r
-public class SlcCloseTestResultTask extends SAwareTask {\r
- private String result;\r
-\r
- @Override\r
- public void executeActions(String mode) {\r
- if (!mode.equals(StructureRegistry.READ)) {\r
- TestResult testResult = (TestResult) getContext().getBean(result);\r
- testResult.close();\r
- }\r
- }\r
-\r
- /** Sets the bean name of the result to close. */\r
- public void setResult(String bean) {\r
- this.result = bean;\r
- }\r
-\r
-}\r
+++ /dev/null
-package org.argeo.slc.ant.test;\r
-\r
-import org.argeo.slc.ant.structure.SAwareTask;\r
-import org.argeo.slc.core.structure.StructureAware;\r
-import org.argeo.slc.core.structure.StructureRegistry;\r
-import org.argeo.slc.core.test.TestReport;\r
-import org.argeo.slc.core.test.TestResult;\r
-\r
-/** Ant tasks generating a report. */\r
-public class SlcReportTask extends SAwareTask {\r
- private String result;\r
- private String report;\r
-\r
- @Override\r
- public void executeActions(String mode) {\r
- if (!mode.equals(StructureRegistry.READ)) {\r
- TestResult testResult = null;\r
- if (result != null) {\r
- testResult = (TestResult) getContext().getBean(result);\r
- }\r
- TestReport testReport = (TestReport) getContext().getBean(report);\r
- if (testReport instanceof StructureAware) {\r
- ((StructureAware) testReport).notifyCurrentPath(getRegistry(),\r
- null);\r
- }\r
- testReport.generateTestReport(testResult);\r
- }\r
- }\r
-\r
- /** Sets the bean name of the result to close. */\r
- public void setResult(String bean) {\r
- this.result = bean;\r
- }\r
-\r
- /** Sets the bean name of the report to generate. */\r
- public void setReport(String report) {\r
- this.report = report;\r
- }\r
-\r
-}\r
+++ /dev/null
-package org.argeo.slc.ant.test;\r
-\r
-import org.apache.commons.logging.Log;\r
-import org.apache.commons.logging.LogFactory;\r
-import org.apache.tools.ant.BuildException;\r
-\r
-import org.argeo.slc.ant.SlcAntConfig;\r
-import org.argeo.slc.ant.spring.AbstractSpringArg;\r
-import org.argeo.slc.ant.structure.SAwareTask;\r
-import org.argeo.slc.core.deploy.DeployedSystem;\r
-import org.argeo.slc.core.structure.StructureAware;\r
-import org.argeo.slc.core.test.ExecutableTestRun;\r
-import org.argeo.slc.core.test.TestData;\r
-import org.argeo.slc.core.test.TestDefinition;\r
-import org.argeo.slc.core.test.TestResult;\r
-import org.argeo.slc.core.test.WritableTestRun;\r
-\r
-/** Ant task wrapping a test run. */\r
-public class SlcTestTask extends SAwareTask {\r
- private Log log = LogFactory.getLog(SlcTestTask.class);\r
-\r
- private String testRunBean = null;\r
-\r
- private TestDefinitionArg testDefinitionArg;\r
- private TestDataArg testDataArg;\r
- private DeployedSystemArg deployedSystemArg;\r
- private TestResultArg testResultArg;\r
-\r
- @Override\r
- public void executeActions(String mode) throws BuildException {\r
- final String testRunBeanT;\r
- if (testRunBean != null) {\r
- testRunBeanT = testRunBean;\r
- } else {\r
- testRunBeanT = getProject().getUserProperty(\r
- SlcAntConfig.DEFAULT_TEST_RUN_PROPERTY);\r
- }\r
- WritableTestRun testRun = (WritableTestRun) getContext().getBean(\r
- testRunBeanT);\r
-\r
- // set overridden references\r
- if (testDataArg != null) {\r
- testRun.setTestData(testDataArg.getTestData());\r
- log.trace("Overrides test data");\r
- }\r
-\r
- if (testDefinitionArg != null) {\r
- testRun.setTestDefinition(testDefinitionArg.getTestDefinition());\r
- log.trace("Overrides test definition");\r
- }\r
-\r
- if (deployedSystemArg != null) {\r
- testRun.setDeployedSystem(deployedSystemArg.getDeployedSystem());\r
- log.trace("Overrides deployed system");\r
- }\r
-\r
- if (testResultArg != null) {\r
- testRun.setTestResult(testResultArg.getTestResult());\r
- log.trace("Overrides test result");\r
- }\r
-\r
- // notify path to test result\r
- TestResult result = testRun.getTestResult();\r
- if (result != null && result instanceof StructureAware) {\r
- ((StructureAware) result).notifyCurrentPath(getRegistry(),\r
- getPath());\r
- }\r
-\r
- ((ExecutableTestRun) testRun).execute();\r
- }\r
-\r
- /**\r
- * The bean name of the test run to use. If not set the default is used.\r
- * \r
- * @see SlcAntConfig\r
- */\r
- public void setTestRun(String testRunBean) {\r
- this.testRunBean = testRunBean;\r
- }\r
-\r
- /** Creates sub tag. */\r
- public TestDefinitionArg createTestDefinition() {\r
- testDefinitionArg = new TestDefinitionArg();\r
- // only test definitions can add to path\r
- addSAwareArg(testDefinitionArg);\r
- return testDefinitionArg;\r
- }\r
-\r
- /** Creates sub tag. */\r
- public TestDataArg createTestData() {\r
- testDataArg = new TestDataArg();\r
- return testDataArg;\r
- }\r
-\r
- /** Creates sub tag. */\r
- public DeployedSystemArg createDeployedSystem() {\r
- deployedSystemArg = new DeployedSystemArg();\r
- return deployedSystemArg;\r
- }\r
-\r
- /** Creates sub tag. */\r
- public TestResultArg createTestResult() {\r
- testResultArg = new TestResultArg();\r
- return testResultArg;\r
- }\r
-\r
-}\r
-\r
-class TestDefinitionArg extends AbstractSpringArg {\r
- TestDefinition getTestDefinition() {\r
- return (TestDefinition) getBeanInstance();\r
- }\r
-}\r
-\r
-class TestDataArg extends AbstractSpringArg {\r
- TestData getTestData() {\r
- return (TestData) getBeanInstance();\r
- }\r
-\r
-}\r
-\r
-class DeployedSystemArg extends AbstractSpringArg {\r
- DeployedSystem getDeployedSystem() {\r
- return (DeployedSystem) getBeanInstance();\r
- }\r
-\r
-}\r
-\r
-class TestResultArg extends AbstractSpringArg {\r
- TestResult getTestResult() {\r
- return (TestResult) getBeanInstance();\r
- }\r
-\r
-}\r
+++ /dev/null
-<html>\r
-<head></head>\r
-<body>\r
-Integration of SLC Test in Ant.\r
-</body>\r
-</html>
\ No newline at end of file
+++ /dev/null
-package org.argeo.slc.core;\r
-\r
-/** Basis for all SLC exceptions. This is an unchecked exception. */\r
-public class SlcException extends RuntimeException {\r
- static final long serialVersionUID = 1l;\r
-\r
- /** Constructor. */\r
- public SlcException(String message) {\r
- super(message);\r
- }\r
-\r
- /** Constructor. */\r
- public SlcException(String message, Throwable cause) {\r
- super(message, cause);\r
- }\r
-\r
-}\r
+++ /dev/null
-package org.argeo.slc.core;\r
-\r
-/** Exception for unsupported features or actions. */\r
-public class UnsupportedException extends SlcException {\r
- static final long serialVersionUID = 1l;\r
-\r
- /** Action not supported. */\r
- public UnsupportedException() {\r
- this("Action not supported");\r
- }\r
-\r
- /** Constructor with a message. */\r
- public UnsupportedException(String message) {\r
- super(message);\r
- }\r
-\r
- /**\r
- * Constructor generating a message.\r
- * \r
- * @param nature\r
- * the nature of the unsupported object\r
- * @param obj\r
- * the object itself (its class name will be used in message)\r
- */\r
- public UnsupportedException(String nature, Object obj) {\r
- super("Unsupported " + nature + ": " + obj.getClass());\r
- }\r
-\r
- /**\r
- * Constructor generating a message.\r
- * \r
- * @param nature\r
- * the nature of the unsupported object\r
- * @param value\r
- * the problematic value itself\r
- */\r
- public UnsupportedException(String nature, String value) {\r
- super("Unsupported " + nature + ": " + value);\r
- }\r
-\r
-}\r
+++ /dev/null
-package org.argeo.slc.core.build;\r
-\r
-/** The id uniquely identifying the distribution of a software system. */\r
-public interface DistributionId {\r
-\r
-}\r
+++ /dev/null
-package org.argeo.slc.core.build;\r
-\r
-import java.util.StringTokenizer;\r
-\r
-/**\r
- * <p>\r
- * An implementation of the distribution id using the standard\r
- * Major.Minor.Release notation. And additional arbitrary string can also be\r
- * added.\r
- * </p>\r
- * \r
- * <p>\r
- * <b>Examples:</b><br>\r
- * 0.2.6<br>\r
- * 2.4.12.RC1\r
- * </p>\r
- */\r
-public class VersionDistributionId implements DistributionId {\r
-\r
- private Integer major;\r
- private Integer minor;\r
- private Integer release;\r
- private String additional;\r
-\r
- /** Parse the provided string in order to set the various components. */\r
- public void setVersionString(String str) {\r
- StringTokenizer st = new StringTokenizer(str, ".");\r
- if (st.hasMoreTokens())\r
- major = Integer.parseInt(st.nextToken());\r
- if (st.hasMoreTokens())\r
- minor = Integer.parseInt(st.nextToken());\r
- if (st.hasMoreTokens())\r
- release = Integer.parseInt(st.nextToken());\r
- if (st.hasMoreTokens())\r
- additional = st.nextToken();\r
- }\r
-\r
- public Integer getMajor() {\r
- return major;\r
- }\r
-\r
- public void setMajor(Integer major) {\r
- this.major = major;\r
- }\r
-\r
- public Integer getMinor() {\r
- return minor;\r
- }\r
-\r
- public void setMinor(Integer minor) {\r
- this.minor = minor;\r
- }\r
-\r
- public Integer getRelease() {\r
- return release;\r
- }\r
-\r
- public void setRelease(Integer release) {\r
- this.release = release;\r
- }\r
-\r
- public String getAdditional() {\r
- return additional;\r
- }\r
-\r
- public void setAdditional(String additional) {\r
- this.additional = additional;\r
- }\r
-\r
- @Override\r
- public boolean equals(Object obj) {\r
- // TODO Auto-generated method stub\r
- return super.equals(obj);\r
- }\r
-\r
- @Override\r
- public String toString() {\r
- return major + "." + minor + "." + release\r
- + (additional != null ? "." + additional : "");\r
- }\r
-\r
-}\r
+++ /dev/null
-<html>\r
-<head></head>\r
-<body>\r
-SLC Build: building of software systems.\r
-</body>\r
-</html>
\ No newline at end of file
+++ /dev/null
-package org.argeo.slc.core.deploy;\r
-\r
-/** An instance of a software system. */\r
-public interface DeployedSystem {\r
- public DeployedSystemId getDeployedSystemId();\r
-}\r
+++ /dev/null
-package org.argeo.slc.core.deploy;\r
-\r
-import org.argeo.slc.core.build.DistributionId;\r
-\r
-/** The id uniquely identifying a deployed system. */\r
-public interface DeployedSystemId {\r
- public DistributionId getDistributionId();\r
-}\r
+++ /dev/null
-package org.argeo.slc.core.deploy;\r
-\r
-public interface Deployment {\r
- public DeployedSystem getDeployedSystem();\r
-\r
- public TargetData getTargetData();\r
-\r
- public DeploymentData getDeploymentData();\r
-}\r
+++ /dev/null
-package org.argeo.slc.core.deploy;\r
-\r
-public interface DeploymentData {\r
-\r
-}\r
+++ /dev/null
-package org.argeo.slc.core.deploy;\r
-\r
-public interface ExecutableDeployment extends Deployment {\r
- public void execute();\r
-}\r
+++ /dev/null
-package org.argeo.slc.core.deploy;\r
-\r
-import org.argeo.slc.core.build.DistributionId;\r
-\r
-/**\r
- * A basic implementation of a deployed system id, based on a long value and a\r
- * reference to a distribution id.\r
- */\r
-public class NumericDSId implements DeployedSystemId {\r
-\r
- private Long value;\r
- private DistributionId distributionId;\r
-\r
- public Long getValue() {\r
- return value;\r
- }\r
-\r
- public void setValue(Long value) {\r
- this.value = value;\r
- }\r
-\r
- public DistributionId getDistributionId() {\r
- return distributionId;\r
- }\r
-\r
- public void setDistributionId(DistributionId distributionId) {\r
- this.distributionId = distributionId;\r
- }\r
-\r
- @Override\r
- public boolean equals(Object obj) {\r
- return value.toString().equals(obj.toString());\r
- }\r
-\r
- @Override\r
- public String toString() {\r
- return value.toString();\r
- }\r
-\r
-}\r
+++ /dev/null
-package org.argeo.slc.core.deploy;\r
-\r
-public interface TargetData {\r
-\r
-}\r
+++ /dev/null
-package org.argeo.slc.core.deploy;\r
-\r
-public interface WritableDeployment extends ExecutableDeployment {\r
- public void setDeployedSystem(DeployedSystem deployedSystem);\r
-\r
- public void setTargetData(TargetData targetData);\r
-\r
- public void setDeploymentData(DeploymentData deploymentData);\r
-}\r
+++ /dev/null
-<html>\r
-<head></head>\r
-<body>\r
-SLC Deploy: deployment of software systems.\r
-</body>\r
-</html>
\ No newline at end of file
+++ /dev/null
-<html>\r
-<head></head>\r
-<body>\r
-Common classes of teh SLC framework.\r
-</body>\r
-</html>
\ No newline at end of file
+++ /dev/null
-package org.argeo.slc.core.structure;\r
-\r
-import java.util.List;\r
-import java.util.Vector;\r
-\r
-import org.apache.commons.logging.Log;\r
-import org.apache.commons.logging.LogFactory;\r
-\r
-/** Default implementation of a <code>StructureRegistry</code>. */\r
-public class DefaultSRegistry implements StructureRegistry {\r
- private static Log log = LogFactory.getLog(DefaultSRegistry.class);\r
-\r
- private List<StructureElement> elements = new Vector<StructureElement>();\r
- private List<StructurePath> paths = new Vector<StructurePath>();\r
- private String mode = StructureRegistry.ALL;\r
-\r
- private List<StructurePath> activePaths;\r
-\r
- public List<StructureElement> listElements() {\r
- return new Vector<StructureElement>(elements);\r
- }\r
-\r
- public List<StructurePath> listPaths() {\r
- return new Vector<StructurePath>(paths);\r
- }\r
-\r
- public void register(StructurePath path, StructureElement element) {\r
- StructureElement treeSElement = element;\r
- elements.add(treeSElement);\r
- paths.add(path);\r
- log.debug("Registered " + path + " (desc: '"\r
- + treeSElement.getDescription() + "', position: "\r
- + elements.size() + ")");\r
- }\r
-\r
- public StructureElement getElement(StructurePath path) {\r
- int index = paths.indexOf(path);\r
- if (index >= 0) {\r
- return elements.get(index);\r
- } else {// not found\r
- return null;\r
- }\r
- }\r
-\r
- public String getMode() {\r
- return mode;\r
- }\r
-\r
- public void setMode(String mode) {\r
- this.mode = mode;\r
- }\r
-\r
- public List<StructurePath> getActivePaths() {\r
- return activePaths;\r
- }\r
-\r
- public void setActivePaths(List<StructurePath> activePaths) {\r
- this.activePaths = activePaths;\r
- }\r
-\r
-}\r
+++ /dev/null
-package org.argeo.slc.core.structure;\r
-\r
-\r
-/**\r
- * Basic implementation of <code>StructureElement</code>.\r
- * \r
- * @see TreeSPath\r
- */\r
-public class SimpleSElement implements StructureElement {\r
- /** For ORM */\r
- private Long tid;\r
- private String description;\r
-\r
- /** For ORM */\r
- public SimpleSElement() {\r
- }\r
-\r
- /** Constructor */\r
- public SimpleSElement(String description) {\r
- this.description = description;\r
- }\r
-\r
- /** Constructor */\r
- public SimpleSElement(String description, String defaultDescription) {\r
- this(description != null ? description : defaultDescription);\r
- }\r
-\r
- public String getDescription() {\r
- return description;\r
- }\r
-\r
- /** Sets the description. */\r
- public void setDescription(String description) {\r
- this.description = description;\r
- }\r
-\r
- Long getTid() {\r
- return tid;\r
- }\r
-\r
- void setTid(Long tid) {\r
- this.tid = tid;\r
- }\r
-\r
-}\r
+++ /dev/null
-package org.argeo.slc.core.structure;\r
-\r
-/**\r
- * Wrapper for an element, which is able to propagate registration to\r
- * sub-elements.\r
- */\r
-public interface StructureAware {\r
- /** Called <b>after</b> registration. */\r
- public void notifyCurrentPath(StructureRegistry registry, StructurePath path);\r
-}\r
+++ /dev/null
-package org.argeo.slc.core.structure;\r
-\r
-/**\r
- * Atomic element holding metadata such as description about the element which\r
- * registered.\r
- */\r
-public interface StructureElement {\r
- /** Description of this element. */\r
- public String getDescription();\r
-}\r
+++ /dev/null
-package org.argeo.slc.core.structure;\r
-\r
-/**\r
- * Path allowing to uniquely identify a <code>StructureElement</code> within a\r
- * registry.\r
- * \r
- * @see StructureElement\r
- * @see StructurePath\r
- */\r
-public interface StructurePath {\r
- /**\r
- * Unique representation as a string. Most implementation will also provide\r
- * a mean to interpret this string.\r
- */\r
- public String getAsUniqueString();\r
-}\r
+++ /dev/null
-package org.argeo.slc.core.structure;\r
-\r
-import java.util.List;\r
-\r
-/** Registry where the whole structure is stored. */\r
-public interface StructureRegistry {\r
- /** Read mode: the structure is only read. */\r
- public static String READ = "READ";\r
- /** All mode: everything is executed regardless of the active paths. */\r
- public static String ALL = "ALL";\r
- /** Active mode: only the active paths are executed. */\r
- public static String ACTIVE = "ACTIVE";\r
-\r
- /** Adds an element to the registry. */\r
- public void register(StructurePath path, StructureElement element);\r
-\r
- /** Lists <b>all</b> registered elements. */\r
- public List<StructureElement> listElements();\r
-\r
- /** Lists <b>all</b> registered elements. */\r
- public List<StructurePath> listPaths();\r
-\r
- /** Gets a element based on its path. */\r
- public StructureElement getElement(StructurePath path);\r
-\r
- /**\r
- * Set the interpreter mode: read, all or active.\r
- * \r
- * @see #READ\r
- * @see #ALL\r
- * @see #ACTIVE\r
- */\r
- public void setMode(String mode);\r
-\r
- /**\r
- * Gets the current interpreter mode.\r
- * \r
- * @see #READ\r
- * @see #ALL\r
- * @see #ACTIVE\r
- */\r
- public String getMode();\r
-\r
- /**\r
- * Gets the list of active paths, which will be run if executed in\r
- * <code>ACTIVE</code> mode.\r
- */\r
- public List<StructurePath> getActivePaths();\r
-\r
- /**\r
- * Sets the list of active path, which will be run if executed in\r
- * <code>ACTIVE</code> mode.\r
- */\r
- public void setActivePaths(List<StructurePath> activePaths);\r
-}\r
+++ /dev/null
-<html>\r
-<head></head>\r
-<body>\r
-SLC Structure framework allowing to uniquely reference actions.\r
-</body>\r
-</html>
\ No newline at end of file
+++ /dev/null
-package org.argeo.slc.core.structure.tree;\r
-\r
-import java.util.List;\r
-import java.util.StringTokenizer;\r
-import java.util.Vector;\r
-\r
-import org.argeo.slc.core.SlcException;\r
-import org.argeo.slc.core.structure.StructurePath;\r
-import org.argeo.slc.core.structure.StructureRegistry;\r
-\r
-/**\r
- * Path for tree based <code>StructureRegistry</code> implementations.\r
- */\r
-public class TreeSPath implements StructurePath, Comparable<StructurePath> {\r
- /** Default character to use a separator: /. */\r
- public static Character DEFAULT_SEPARATOR = '/';\r
-\r
- private TreeSPath parent;\r
- private String name;\r
- private Character separator = DEFAULT_SEPARATOR;\r
-\r
- /** For ORM */\r
- private Long tid;\r
-\r
- public String getAsUniqueString() {\r
- String parentStr = parent != null ? parent.getAsUniqueString() : "";\r
- return parentStr + separator + name;\r
- }\r
-\r
- /** Sets all the required data from a string. */\r
- public void setAsUniqueString(String str) {\r
- TreeSPath twin = parseToCreatePath(str, getSeparator());\r
- name = twin.name;\r
- parent = twin.parent;\r
- }\r
-\r
- /** The separator actually used by this path. */\r
- public Character getSeparator() {\r
- return separator;\r
- }\r
-\r
- /** Gets the parent path. */\r
- public TreeSPath getParent() {\r
- return parent;\r
- }\r
-\r
- /** Gets the name part of the path. */\r
- public String getName() {\r
- return name;\r
- }\r
-\r
- /** Create a path without parent. */\r
- public static TreeSPath createRootPath(String name) {\r
- TreeSPath path = new TreeSPath();\r
- path.parent = null;\r
- path.name = name;\r
- return path;\r
- }\r
-\r
- /** Create a child . */\r
- public TreeSPath createChild(String name) {\r
- if (name.indexOf(separator) > -1) {\r
- throw new SlcException("Tree path name '" + name\r
- + "' contains separator character " + separator);\r
- }\r
- TreeSPath path = new TreeSPath();\r
- path.parent = this;\r
- path.name = name;\r
- return path;\r
- }\r
-\r
- /** Parses a string to a path. */\r
- public static TreeSPath parseToCreatePath(String path) {\r
- return parseToCreatePath(path, DEFAULT_SEPARATOR);\r
- }\r
-\r
- /** Parses a string to a path. */\r
- public static TreeSPath parseToCreatePath(String path, Character separator) {\r
- StringTokenizer st = new StringTokenizer(path, Character\r
- .toString(separator));\r
-\r
- TreeSPath currPath = null;\r
- while (st.hasMoreTokens()) {\r
- if (currPath == null) {// begin\r
- currPath = createRootPath(st.nextToken());\r
- } else {\r
- currPath = currPath.createChild(st.nextToken());\r
- }\r
- }\r
- return currPath;\r
- }\r
-\r
- /** Lists the children from a registry. */\r
- public List<TreeSPath> listChildren(StructureRegistry registry) {\r
- return listChildrenPaths(registry, this);\r
- }\r
-\r
- /** Lists the children from a given path from a registry. */\r
- public static List<TreeSPath> listChildrenPaths(StructureRegistry registry,\r
- TreeSPath path) {\r
- List<TreeSPath> paths = new Vector<TreeSPath>();\r
- List<StructurePath> allPaths = registry.listPaths();\r
- for (StructurePath sPath : allPaths) {\r
- TreeSPath pathT = (TreeSPath) sPath;\r
- if (pathT.parent != null && pathT.parent.equals(path)) {\r
- paths.add(pathT);\r
- }\r
- }\r
- return paths;\r
- }\r
-\r
- /** Gets the root tree path of this path. */\r
- public TreeSPath getRoot() {\r
- TreeSPath root = this;\r
- while (root.getParent() != null) {\r
- root = root.getParent();\r
- }\r
- return root;\r
- }\r
-\r
- /** Depth of this path. */\r
- public Integer depth() {\r
- return depthImpl(this);\r
- }\r
-\r
- private static int depthImpl(TreeSPath path) {\r
- if (path.getParent() == null) {\r
- return 1;\r
- } else {\r
- return depthImpl(path.getParent()) + 1;\r
- }\r
- }\r
-\r
- @Override\r
- public String toString() {\r
- return getAsUniqueString();\r
- }\r
-\r
- @Override\r
- public boolean equals(Object obj) {\r
- if (obj instanceof StructurePath) {\r
- StructurePath path = (StructurePath) obj;\r
- return getAsUniqueString().equals(path.getAsUniqueString());\r
- }\r
- return false;\r
- }\r
-\r
- public int compareTo(StructurePath o) {\r
- return getAsUniqueString().compareTo(o.getAsUniqueString());\r
- }\r
-\r
- Long getTid() {\r
- return tid;\r
- }\r
-\r
- void setTid(Long tid) {\r
- this.tid = tid;\r
- }\r
-\r
- /** Sets the separator character to use. */\r
- public void setSeparator(Character separator) {\r
- this.separator = separator;\r
- }\r
-\r
- /** Sets the parent (for ORM). */\r
- protected void setParent(TreeSPath parent) {\r
- this.parent = parent;\r
- }\r
-\r
- /** Sets the name (for ORM). */\r
- protected void setName(String name) {\r
- this.name = name;\r
- }\r
-\r
-}\r
+++ /dev/null
-package org.argeo.slc.core.structure.tree;\r
-\r
-import java.util.List;\r
-import java.util.Map;\r
-import java.util.TreeMap;\r
-import java.util.Vector;\r
-\r
-import org.argeo.slc.core.UnsupportedException;\r
-import org.argeo.slc.core.structure.SimpleSElement;\r
-import org.argeo.slc.core.structure.StructureElement;\r
-import org.argeo.slc.core.structure.StructurePath;\r
-import org.argeo.slc.core.structure.StructureRegistry;\r
-\r
-/** Tree based implementation of a structure registry. */\r
-public class TreeSRegistry implements StructureRegistry {\r
- /** For ORM */\r
- private Long tid;\r
- private TreeSPath root;\r
- private Map<TreeSPath, SimpleSElement> elements = new TreeMap<TreeSPath, SimpleSElement>();\r
-\r
- private String mode = StructureRegistry.ALL;\r
-\r
- private List<StructurePath> activePaths;\r
-\r
- public StructureElement getElement(StructurePath path) {\r
- return elements.get(path);\r
- }\r
-\r
- public List<StructureElement> listElements() {\r
- return new Vector<StructureElement>(elements.values());\r
- }\r
-\r
- public List<StructurePath> listPaths() {\r
- return new Vector<StructurePath>(elements.keySet());\r
- }\r
-\r
- public void register(StructurePath path, StructureElement element) {\r
- final SimpleSElement simpleSElement;\r
- if (element instanceof SimpleSElement) {\r
- simpleSElement = (SimpleSElement) element;\r
- } else {\r
- simpleSElement = new SimpleSElement(element.getDescription());\r
- }\r
-\r
- if (!(path instanceof TreeSPath))\r
- throw new UnsupportedException("path", path);\r
-\r
- elements.put((TreeSPath) path, simpleSElement);\r
-\r
- }\r
-\r
- public String getMode() {\r
- return mode;\r
- }\r
-\r
- public void setMode(String mode) {\r
- this.mode = mode;\r
- }\r
-\r
- public List<StructurePath> getActivePaths() {\r
- return activePaths;\r
- }\r
-\r
- public void setActivePaths(List<StructurePath> activePaths) {\r
- this.activePaths = activePaths;\r
- }\r
-\r
- /** Gets the related root path. */\r
- public TreeSPath getRoot() {\r
- return root;\r
- }\r
-\r
- /** Sets the related root path. */\r
- public void setRoot(TreeSPath root) {\r
- this.root = root;\r
- }\r
-\r
- /** Gets the elements. */\r
- public Map<TreeSPath, SimpleSElement> getElements() {\r
- return elements;\r
- }\r
-\r
- /** Sets the elements (for ORM). */\r
- public void setElements(Map<TreeSPath, SimpleSElement> elements) {\r
- this.elements = elements;\r
- }\r
-\r
- Long getTid() {\r
- return tid;\r
- }\r
-\r
- void setTid(Long tid) {\r
- this.tid = tid;\r
- }\r
-\r
-}\r
+++ /dev/null
-<html>\r
-<head></head>\r
-<body>\r
-Tree-based implementation of the SLC structure framework.\r
-</body>\r
-</html>
\ No newline at end of file
+++ /dev/null
-package org.argeo.slc.core.test;\r
-\r
-/** A test run that can be executed */\r
-public interface ExecutableTestRun extends TestRun {\r
-\r
- /** Executes this test run. */\r
- public void execute();\r
-\r
-}\r
+++ /dev/null
-package org.argeo.slc.core.test;\r
-\r
-import org.argeo.slc.core.SlcException;\r
-\r
-/**\r
- * Exception to throw when a test definition cannot interpret the provided test\r
- * data.\r
- */\r
-public class IncompatibleTestDataException extends SlcException {\r
- static final long serialVersionUID = 1l;\r
-\r
- public IncompatibleTestDataException(TestData testData,\r
- TestDefinition testDefinition) {\r
- super("TestData " + testData.getClass()\r
- + " is not compatible with TestDefinition "\r
- + testDefinition.getClass());\r
- }\r
-}\r
+++ /dev/null
-package org.argeo.slc.core.test;\r
-\r
-import org.argeo.slc.core.deploy.DeployedSystemId;\r
-\r
-/**\r
- * Basic implementation of test run id based on a long value and a reference to\r
- * a deployed system id.\r
- */\r
-public class NumericTRId implements TestResultId {\r
- /** For ORM */\r
- private Long tid;\r
-\r
- private Long value;\r
- private DeployedSystemId deployedSystemId;\r
-\r
- /**\r
- * Initializes the long value with the current time (based on\r
- * <code>java.lang.System.currentTimeMillis()</code>).\r
- */\r
- public void init() {\r
- if (getValue() == null) {\r
- setValue(System.currentTimeMillis());\r
- }\r
- }\r
-\r
- public Long getValue() {\r
- return value;\r
- }\r
-\r
- public void setValue(Long value) {\r
- this.value = value;\r
- }\r
-\r
- public DeployedSystemId getDeployedSystemId() {\r
- return deployedSystemId;\r
- }\r
-\r
- public void setDeployedSystemId(DeployedSystemId deployedSystemId) {\r
- this.deployedSystemId = deployedSystemId;\r
- }\r
-\r
- @Override\r
- public boolean equals(Object obj) {\r
- return value.toString().equals(obj.toString());\r
- }\r
-\r
- @Override\r
- public String toString() {\r
- return value.toString();\r
- }\r
-\r
- Long getTid() {\r
- return tid;\r
- }\r
-\r
- void setTid(Long tid) {\r
- this.tid = tid;\r
- }\r
-\r
-}\r
+++ /dev/null
-package org.argeo.slc.core.test;\r
-\r
-/**\r
- * <p>\r
- * Basic implementation of a result part, implementing the standard three status\r
- * approach for test results.\r
- * </p>\r
- * \r
- * @see TestStatus\r
- */\r
-public class SimpleResultPart implements TestResultPart, TestStatus {\r
-\r
- /** For ORM */\r
- private Long tid;\r
-\r
- private Integer status;\r
- private String message;\r
- private Throwable exception;\r
-\r
- public SimpleResultPart() {\r
- }\r
-\r
- public SimpleResultPart(Integer status, String message) {\r
- this(status, message, null);\r
- }\r
-\r
- public SimpleResultPart(Integer status, String message, Throwable exception) {\r
- this.status = status;\r
- this.message = message;\r
- this.exception = exception;\r
- }\r
-\r
- public String getMessage() {\r
- return message;\r
- }\r
-\r
- public void setMessage(String message) {\r
- this.message = message;\r
- }\r
-\r
- public void setStatus(Integer status) {\r
- this.status = status;\r
- }\r
-\r
- public Integer getStatus() {\r
- return status;\r
- }\r
-\r
- public Throwable getException() {\r
- return exception;\r
- }\r
-\r
- public void setException(Throwable exception) {\r
- this.exception = exception;\r
- }\r
-\r
- @Override\r
- public String toString() {\r
- StringBuffer buf = new StringBuffer("");\r
- if (status == PASSED) {\r
- buf.append("PASSED ");\r
- } else if (status == FAILED) {\r
- buf.append("FAILED ");\r
- } else if (status == ERROR) {\r
- buf.append("ERROR ");\r
- }\r
- buf.append(message);\r
- if (exception != null) {\r
- buf.append("(").append(exception.getMessage()).append(")");\r
- }\r
- return buf.toString();\r
- }\r
-\r
- Long getTid() {\r
- return tid;\r
- }\r
-\r
- void setTid(Long tid) {\r
- this.tid = tid;\r
- }\r
-\r
-}\r
+++ /dev/null
-package org.argeo.slc.core.test;\r
-\r
-import java.util.Date;\r
-import java.util.List;\r
-import java.util.Vector;\r
-\r
-import org.apache.commons.logging.Log;\r
-import org.apache.commons.logging.LogFactory;\r
-\r
-/**\r
- * Basic implementation of a test result containing only a list of result parts.\r
- */\r
-public class SimpleTestResult implements TestResult {\r
- private static Log log = LogFactory.getLog(SimpleTestResult.class);\r
-\r
- private TestResultId testResultId;\r
- private Date closeDate;\r
- private List<TestResultPart> parts = new Vector<TestResultPart>();\r
-\r
- public void addResultPart(TestResultPart part) {\r
- parts.add(part);\r
- if (log.isDebugEnabled())\r
- log.debug(part);\r
- }\r
-\r
- public void close() {\r
- parts.clear();\r
- closeDate = new Date();\r
- }\r
-\r
- public TestResultId getTestResultId() {\r
- return testResultId;\r
- }\r
-\r
- /** Sets the test result id. */\r
- public void setTestResultId(TestResultId testResultId) {\r
- this.testResultId = testResultId;\r
- }\r
-\r
- public List<TestResultPart> getParts() {\r
- return parts;\r
- }\r
-\r
- public Date getCloseDate() {\r
- return closeDate;\r
- }\r
-\r
-}\r
+++ /dev/null
-package org.argeo.slc.core.test;\r
-\r
-import org.argeo.slc.core.deploy.DeployedSystem;\r
-\r
-/**\r
- * A basic bean implementation of a <code>WritableTestRun</code>, holding\r
- * references to the various parts of a test run.\r
- */\r
-public class SimpleTestRun implements WritableTestRun, ExecutableTestRun {\r
- private DeployedSystem deployedSystem;\r
- private TestData testData;\r
- private TestDefinition testDefinition;\r
- private TestResult testResult;\r
-\r
- /** Executes the underlying test definition. */\r
- public void execute() {\r
- testDefinition.execute(this);\r
- }\r
-\r
- public DeployedSystem getDeployedSystem() {\r
- return deployedSystem;\r
- }\r
-\r
- public void setDeployedSystem(DeployedSystem deployedSystem) {\r
- this.deployedSystem = deployedSystem;\r
- }\r
-\r
- public TestData getTestData() {\r
- return testData;\r
- }\r
-\r
- public void setTestData(TestData testData) {\r
- this.testData = testData;\r
- }\r
-\r
- public TestDefinition getTestDefinition() {\r
- return testDefinition;\r
- }\r
-\r
- public void setTestDefinition(TestDefinition testDefinition) {\r
- this.testDefinition = testDefinition;\r
- }\r
-\r
- public TestResult getTestResult() {\r
- return testResult;\r
- }\r
-\r
- public void setTestResult(TestResult testResult) {\r
- this.testResult = testResult;\r
- }\r
-\r
-}\r
+++ /dev/null
-package org.argeo.slc.core.test;\r
-\r
-/**\r
- * Any data required by a test in order to run: configuration, expected,\r
- * reached, etc.\r
- */\r
-public interface TestData {\r
-\r
-}\r
+++ /dev/null
-package org.argeo.slc.core.test;\r
-\r
-/**\r
- * The programmatic definition of a test, which will be associated with\r
- * transient objects within a test run.\r
- */\r
-public interface TestDefinition extends TestStatus {\r
- /** Performs the test. */\r
- public void execute(TestRun testRun);\r
-}\r
+++ /dev/null
-package org.argeo.slc.core.test;\r
-\r
-/**\r
- * A report that can be generated based on a given test result. <b>This\r
- * interface may change in the future.</b>\r
- */\r
-public interface TestReport {\r
- /** Performs the actions necessary to generate a report. */\r
- public void generateTestReport(TestResult result);\r
-}\r
+++ /dev/null
-package org.argeo.slc.core.test;\r
-\r
-import java.util.Date;\r
-\r
-/** The result of a test */\r
-public interface TestResult {\r
- /** Gets the id of the related test result. */\r
- public TestResultId getTestResultId();\r
-\r
- /** Adds a part of the result. */\r
- public void addResultPart(TestResultPart part);\r
-\r
- /**\r
- * Marks that the collection of test results is completed and free the\r
- * related resources (also closing listeners).\r
- */\r
- public void close();\r
-\r
- /**\r
- * The date when this test result was closed. Can be null, which means the\r
- * result is not closed.\r
- */\r
- public Date getCloseDate();\r
-}\r
+++ /dev/null
-package org.argeo.slc.core.test;\r
-\r
-import org.argeo.slc.core.deploy.DeployedSystemId;\r
-\r
-/** The unique id referencing a test result. */\r
-public interface TestResultId {\r
- /** Gets the id of the related deployed system. */\r
- public DeployedSystemId getDeployedSystemId();\r
-\r
-}\r
+++ /dev/null
-package org.argeo.slc.core.test;\r
-\r
-/** Listener to the operations on a test result. */\r
-public interface TestResultListener {\r
- /** Notified when a part was added to a test result. */\r
- public void resultPartAdded(TestResult testResult,\r
- TestResultPart testResultPart);\r
-\r
- /** Stops listening and release the related resources. */\r
- public void close(TestResult testResult);\r
-}\r
+++ /dev/null
-package org.argeo.slc.core.test;\r
-\r
-/**\r
- * Part of a test result.\r
- * \r
- * @see TestResult\r
- */\r
-public interface TestResultPart {\r
- public Integer getStatus();\r
-\r
- public String getMessage();\r
-}\r
+++ /dev/null
-package org.argeo.slc.core.test;\r
-\r
-import org.argeo.slc.core.deploy.DeployedSystem;\r
-\r
-/** The actual run of a test */\r
-public interface TestRun {\r
- /** Gets the related test definition. */\r
- public TestDefinition getTestDefinition();\r
-\r
- /** Gets the related test data */\r
- public TestData getTestData();\r
-\r
- /** Gets the related deployed system. */\r
- public DeployedSystem getDeployedSystem();\r
-\r
- /** Gets the related result where to record results. */\r
- public TestResult getTestResult();\r
-}\r
+++ /dev/null
-package org.argeo.slc.core.test;\r
-\r
-/**\r
- * Simple statuses.\r
- * <p>\r
- * <ul>\r
- * <li>{@link #PASSED}: the test succeeded</li>\r
- * <li>{@link #FAILED}: the test could run, but did not reach the expected\r
- * result</li>\r
- * <li>{@link #ERROR}: an error during the test run prevented to get a\r
- * significant information on the tested system.</li>\r
- * </ul>\r
- * </p>\r
- */\r
-public interface TestStatus {\r
- /** The flag for a passed test: 0 */\r
- public final static int PASSED = 0;\r
- /** The flag for a failed test: 1 */\r
- public final static int FAILED = 1;\r
- /**\r
- * The flag for a test which could not properly run because of an error\r
- * (there is no feedback on the behavior of the tested component): 2\r
- */\r
- public final static int ERROR = 2;\r
-}\r
+++ /dev/null
-package org.argeo.slc.core.test;\r
-\r
-import org.argeo.slc.core.deploy.DeployedSystem;\r
-\r
-/** Test run whose various components can be externally set. */\r
-public interface WritableTestRun extends ExecutableTestRun {\r
- public void setDeployedSystem(DeployedSystem deployedSystem);\r
-\r
- public void setTestData(TestData testData);\r
-\r
- public void setTestDefinition(TestDefinition testDefinition);\r
-\r
- public void setTestResult(TestResult testResult);\r
-}\r
+++ /dev/null
-<html>\r
-<head></head>\r
-<body>\r
-SLC Test: test of software systems.\r
-</body>\r
-</html>
\ No newline at end of file
+++ /dev/null
-package org.argeo.slc.core.test.tree;\r
-\r
-import java.util.Vector;\r
-\r
-import org.argeo.slc.core.structure.tree.TreeSPath;\r
-import org.argeo.slc.core.test.NumericTRId;\r
-import org.argeo.slc.core.test.TestResult;\r
-import org.argeo.slc.core.test.TestResultListener;\r
-import org.argeo.slc.core.test.TestResultPart;\r
-\r
-/**\r
- * Abstract asynchronous implementation of a listener listening to a\r
- * <code>TreeTestResult</code>.\r
- * \r
- * @see TreeTestResult\r
- */\r
-public abstract class AsynchronousTreeTestResultListener implements\r
- TestResultListener, Runnable {\r
- private Vector<PartStruct> partStructs = new Vector<PartStruct>();\r
- private Thread thread;\r
-\r
- private Boolean synchronous = false;\r
- \r
- protected AsynchronousTreeTestResultListener(){\r
- this(false);\r
- }\r
-\r
- protected AsynchronousTreeTestResultListener(Boolean synchronousByDefault){\r
- synchronous = synchronousByDefault;\r
- }\r
-\r
- /** Starts the underlying thread. */\r
- public void init() {\r
- if (!synchronous) {\r
- thread = new Thread(this);\r
- thread.start();\r
- }\r
- }\r
-\r
- /** Finish the remaining and destroy */\r
- public void close(TestResult testResult) {\r
- // FIXME: make behavior more robust when multiple results are\r
- // registering this listener.\r
- synchronized (partStructs) {\r
- // TODO: put a timeout\r
- while (partStructs.size() != 0) {\r
- try {\r
- partStructs.wait(500);\r
- } catch (InterruptedException e) {\r
- // silent\r
- }\r
- }\r
- thread = null;\r
- partStructs.notifyAll();\r
- }\r
- postClose((TreeTestResult) testResult);\r
- }\r
-\r
- public final void resultPartAdded(TestResult testResult,\r
- TestResultPart testResultPart) {\r
- TreeTestResult result = (TreeTestResult) testResult;\r
- PartStruct partStruct = new PartStruct(result.getCurrentPath(),\r
- (NumericTRId) result.getTestResultId(), testResultPart, result);\r
-\r
- if (!synchronous) {\r
- synchronized (partStructs) {\r
- partStructs.add(partStruct);\r
- partStructs.notifyAll();\r
- }\r
- } else {\r
- resultPartAdded(partStruct);\r
- }\r
- }\r
-\r
- /** Called when a result part has been added. */\r
- protected abstract void resultPartAdded(PartStruct partStruct);\r
-\r
- /**\r
- * Called at the end of close. Default implementation is empty. To be\r
- * overridden.\r
- */\r
- protected void postClose(TreeTestResult testResult) {\r
-\r
- }\r
-\r
- public void run() {\r
- while (thread != null) {\r
- synchronized (partStructs) {\r
- for (PartStruct partStruct : partStructs) {\r
- resultPartAdded(partStruct);\r
- }\r
-\r
- partStructs.clear();\r
- partStructs.notifyAll();\r
- while (partStructs.size() == 0) {\r
- try {\r
- partStructs.wait();\r
- } catch (InterruptedException e) {\r
- // silent\r
- }\r
- }\r
- }\r
- }\r
- }\r
-\r
- /** Structure used to pass tree specific information to subclasses. */\r
- protected static class PartStruct {\r
- /** The tree path of this part. */\r
- public final TreeSPath path;\r
- /** The test result id of the related test result */\r
- public final NumericTRId resultId;\r
- /** The part itself */\r
- public final TestResultPart part;\r
- /** The tree test result itself. */\r
- public final TreeTestResult result;\r
-\r
- /** Constructor */\r
- public PartStruct(TreeSPath path, NumericTRId resultId,\r
- TestResultPart part, TreeTestResult result) {\r
- super();\r
- this.path = path;\r
- this.resultId = resultId;\r
- this.part = part;\r
- this.result = result;\r
- }\r
-\r
- }\r
-\r
- public Boolean getSynchronous() {\r
- return synchronous;\r
- }\r
-\r
- public void setSynchronous(Boolean synchronous) {\r
- this.synchronous = synchronous;\r
- }\r
-\r
-}\r
+++ /dev/null
-package org.argeo.slc.core.test.tree;\r
-\r
-import java.util.List;\r
-import java.util.Vector;\r
-\r
-import org.apache.commons.logging.Log;\r
-import org.apache.commons.logging.LogFactory;\r
-\r
-import org.argeo.slc.core.structure.SimpleSElement;\r
-import org.argeo.slc.core.structure.StructureAware;\r
-import org.argeo.slc.core.structure.StructureElement;\r
-import org.argeo.slc.core.structure.StructurePath;\r
-import org.argeo.slc.core.structure.StructureRegistry;\r
-import org.argeo.slc.core.structure.tree.TreeSPath;\r
-import org.argeo.slc.core.test.TestDefinition;\r
-import org.argeo.slc.core.test.TestResult;\r
-import org.argeo.slc.core.test.TestRun;\r
-\r
-/**\r
- * Collection of test definitions propagating tree structure information to its\r
- * children.\r
- */\r
-public class CompositeTreeTestDefinition implements TestDefinition,\r
- StructureAware {\r
- private Log log = LogFactory.getLog(CompositeTreeTestDefinition.class);\r
-\r
- private List<TestDefinition> tasks = null;\r
- private List<TreeSPath> taskPaths = null;\r
- private TreeSPath path;\r
- private StructureRegistry registry;\r
-\r
- public void execute(TestRun testRun) {\r
- log.info("Execute sequence of test definitions...");\r
-\r
- int i = 0;\r
- for (TestDefinition task : tasks) {\r
- TestResult result = testRun.getTestResult();\r
- if (result instanceof StructureAware) {\r
- ((StructureAware) result).notifyCurrentPath(registry, taskPaths\r
- .get(i));\r
- }\r
-\r
- task.execute(testRun);\r
-\r
- // Reset current path in case it has been changed\r
- if (result instanceof StructureAware) {\r
- ((StructureAware) result).notifyCurrentPath(registry, path);\r
- }\r
- i++;\r
- }\r
- }\r
-\r
- /** Sets the list of children test definitions */\r
- public void setTasks(List<TestDefinition> tasks) {\r
- this.tasks = tasks;\r
- if (tasks != null) {\r
- taskPaths = new Vector<TreeSPath>();\r
- }\r
- }\r
-\r
- public void notifyCurrentPath(StructureRegistry registry, StructurePath path) {\r
- this.path = (TreeSPath) path;\r
- this.registry = registry;\r
- \r
- // clear task paths\r
- taskPaths.clear();\r
-\r
- Integer count = 0;\r
- for (TestDefinition task : tasks) {\r
- final StructureElement element;\r
- if (task instanceof StructureElement) {\r
- element = (StructureElement) task;\r
- } else {\r
- element = new SimpleSElement("[no desc]");\r
- }\r
- TreeSPath taskPath = this.path.createChild(count.toString());\r
- registry.register(taskPath, element);\r
- taskPaths.add(taskPath);\r
- if (task instanceof StructureAware) {\r
- ((StructureAware) task).notifyCurrentPath(registry, taskPath);\r
- }\r
- count++;\r
- }\r
- }\r
-\r
-}\r
+++ /dev/null
-package org.argeo.slc.core.test.tree;\r
-\r
-import java.util.List;\r
-import java.util.Vector;\r
-\r
-import org.argeo.slc.core.test.TestResultPart;\r
-\r
-/**\r
- * List of <code>TestResultPart</code>. It can be used to build complex\r
- * <code>TestResult</code> affording the possibility to a\r
- * <code>TestDefinition</code> to add a list of result part under the same\r
- * <code>StructurePath</code>.\r
- * \r
- * @see TreeTestResult\r
- */\r
-public class PartSubList {\r
-\r
- /** For ORM */\r
- private Long tid;\r
-\r
- private List<TestResultPart> parts = new Vector<TestResultPart>();\r
-\r
- /** Gets the result parts. */\r
- public List<TestResultPart> getParts() {\r
- return parts;\r
- }\r
-\r
- /** Sets the result parts. */\r
- public void setParts(List<TestResultPart> parts) {\r
- this.parts = parts;\r
- }\r
-\r
- Long getTid() {\r
- return tid;\r
- }\r
-\r
- void setTid(Long tid) {\r
- this.tid = tid;\r
- }\r
-\r
-}\r
+++ /dev/null
-package org.argeo.slc.core.test.tree;\r
-\r
-import java.util.Date;\r
-import java.util.List;\r
-import java.util.SortedMap;\r
-import java.util.TreeMap;\r
-import java.util.Vector;\r
-\r
-import org.apache.commons.logging.Log;\r
-import org.apache.commons.logging.LogFactory;\r
-\r
-import org.argeo.slc.core.SlcException;\r
-import org.argeo.slc.core.structure.StructureAware;\r
-import org.argeo.slc.core.structure.StructurePath;\r
-import org.argeo.slc.core.structure.StructureRegistry;\r
-import org.argeo.slc.core.structure.tree.TreeSPath;\r
-import org.argeo.slc.core.test.NumericTRId;\r
-import org.argeo.slc.core.test.TestResult;\r
-import org.argeo.slc.core.test.TestResultId;\r
-import org.argeo.slc.core.test.TestResultListener;\r
-import org.argeo.slc.core.test.TestResultPart;\r
-\r
-/**\r
- * Complex implementation of a test result compatible with a tree based\r
- * structure.\r
- */\r
-public class TreeTestResult implements TestResult, StructureAware {\r
- private Log log = LogFactory.getLog(TreeTestResult.class);\r
- /** For ORM */\r
- private Long tid;\r
-\r
- private NumericTRId testResultId;\r
- private List<TestResultListener> listeners = new Vector<TestResultListener>();\r
-\r
- private TreeSPath currentPath;\r
-\r
- private Date closeDate;\r
-\r
- private boolean isClosed = false;\r
-\r
- private SortedMap<TreeSPath, PartSubList> resultParts = new TreeMap<TreeSPath, PartSubList>();\r
-\r
- private StructureRegistry registry;\r
-\r
- public TestResultId getTestResultId() {\r
- return testResultId;\r
- }\r
-\r
- /**\r
- * Use of a <code>NumericTRId</code> is required by Hibernate. <b>It may\r
- * change in the future.</b>\r
- */\r
- public NumericTRId getNumericResultId() {\r
- return testResultId;\r
- }\r
-\r
- /** Sets the test result id as a numeric test result id. */\r
- public void setNumericResultId(NumericTRId testResultId) {\r
- this.testResultId = testResultId;\r
- }\r
-\r
- /** Sets the list of listeners. */\r
- public void setListeners(List<TestResultListener> listeners) {\r
- this.listeners = listeners;\r
- }\r
-\r
- public void addResultPart(TestResultPart part) {\r
- if (currentPath == null) {\r
- throw new SlcException("No current path set.");\r
- }\r
- PartSubList subList = resultParts.get(currentPath);\r
- if (subList == null) {\r
- subList = new PartSubList();\r
- resultParts.put(currentPath, subList);\r
- }\r
- subList.getParts().add(part);\r
-\r
- // notify listeners\r
- synchronized (listeners) {\r
- for (TestResultListener listener : listeners) {\r
- listener.resultPartAdded(this, part);\r
- }\r
- }\r
- }\r
-\r
- public void notifyCurrentPath(StructureRegistry registry, StructurePath path) {\r
- currentPath = (TreeSPath) path;\r
- this.registry = registry;\r
- }\r
-\r
- /** Gets the current path. */\r
- public TreeSPath getCurrentPath() {\r
- return currentPath;\r
- }\r
-\r
- /** Gets all the results structured as a map of <code>PartSubList<code>s. */\r
- public SortedMap<TreeSPath, PartSubList> getResultParts() {\r
- return resultParts;\r
- }\r
-\r
- /** Used by ORM systems. */\r
- void setResultParts(SortedMap<TreeSPath, PartSubList> resultParts) {\r
- this.resultParts = resultParts;\r
- }\r
-\r
- public void close() {\r
- if (isClosed) {\r
- throw new SlcException("Test Result #" + getTestResultId()\r
- + " alredy closed.");\r
- }\r
- closeDate = new Date();\r
-\r
- synchronized (listeners) {\r
- for (TestResultListener listener : listeners) {\r
- listener.close(this);\r
- }\r
- listeners.clear();\r
- }\r
- isClosed = true;\r
-\r
- log.info("Test Result #" + getTestResultId() + " closed.");\r
- }\r
-\r
- Long getTid() {\r
- return tid;\r
- }\r
-\r
- void setTid(Long tid) {\r
- this.tid = tid;\r
- }\r
-\r
- /** Gets the related registry (can be null). */\r
- public StructureRegistry getRegistry() {\r
- return registry;\r
- }\r
-\r
- /** Sets the related registry. */\r
- public void setRegistry(StructureRegistry registry) {\r
- this.registry = registry;\r
- }\r
-\r
- public Date getCloseDate() {\r
- return closeDate;\r
- }\r
-\r
- /** Sets the close date (for ORM) */\r
- public void setCloseDate(Date closeDate) {\r
- this.closeDate = closeDate;\r
- }\r
-\r
-}\r
+++ /dev/null
-package org.argeo.slc.core.test.tree;\r
-\r
-import org.apache.commons.logging.Log;\r
-import org.apache.commons.logging.LogFactory;\r
-\r
-import org.argeo.slc.core.test.SimpleResultPart;\r
-import org.argeo.slc.core.test.TestResultPart;\r
-import org.argeo.slc.core.test.TestStatus;\r
-\r
-/**\r
- * Listener logging tree-based test results to the underlying logging system.\r
- * \r
- * @see TreeTestResult\r
- * \r
- */\r
-public class TreeTestResultLogger extends AsynchronousTreeTestResultListener {\r
-\r
- private static Log log = LogFactory.getLog(TreeTestResultLogger.class);\r
- \r
- public TreeTestResultLogger() {\r
- super(true);\r
- }\r
-\r
- @Override\r
- protected void resultPartAdded(PartStruct partStruct) {\r
- TestResultPart part = partStruct.part;\r
- String msg = partStruct.part + " - " + partStruct.resultId + ":"\r
- + partStruct.path;\r
- if (part.getStatus().equals(TestStatus.PASSED)) {\r
- log.info(msg);\r
- } else if (part.getStatus().equals(TestStatus.FAILED)) {\r
- log.warn(msg);\r
- } else if (part.getStatus().equals(TestStatus.ERROR)) {\r
- log.error(msg, ((SimpleResultPart) part).getException());\r
- } else {\r
- log.error("Unknow test status: " + msg);\r
- }\r
- }\r
-\r
-}\r
+++ /dev/null
-package org.argeo.slc.core.test.tree;\r
-\r
-import org.apache.commons.logging.Log;\r
-import org.apache.commons.logging.LogFactory;\r
-\r
-import org.argeo.slc.core.structure.SimpleSElement;\r
-import org.argeo.slc.core.structure.StructureRegistry;\r
-import org.argeo.slc.core.structure.tree.TreeSPath;\r
-import org.argeo.slc.core.structure.tree.TreeSRegistry;\r
-import org.argeo.slc.dao.structure.tree.TreeSPathDao;\r
-import org.argeo.slc.dao.structure.tree.TreeSRegistryDao;\r
-import org.argeo.slc.dao.test.TestResultDao;\r
-\r
-/**\r
- * Listener persisting tree-based results.\r
- * \r
- * @see TreeTestResult\r
- */\r
-public class TreeTestResultPersister extends AsynchronousTreeTestResultListener {\r
- private static Log log = LogFactory.getLog(TreeTestResultPersister.class);\r
-\r
- private TestResultDao testResultDao;\r
- private TreeSPathDao treeSPathDao;\r
- private TreeSRegistryDao treeSRegistryDao;\r
-\r
- @Override\r
- protected void resultPartAdded(PartStruct partStruct) {\r
- try {\r
- TreeTestResult persistedResult = (TreeTestResult) testResultDao\r
- .getTestResult(partStruct.resultId);\r
-\r
- TreeSPath path = treeSPathDao.getOrCreate(partStruct.path);\r
-\r
- StructureRegistry localRegistry = partStruct.result.getRegistry();\r
- TreeSRegistry registry = getOrCreateTreeSRegistry(path);\r
- syncPath(registry, localRegistry, path);\r
-\r
- if (persistedResult == null) {\r
- persistedResult = new TreeTestResult();\r
- persistedResult.setNumericResultId(partStruct.resultId);\r
- PartSubList subList = new PartSubList();\r
- subList.getParts().add(partStruct.part);\r
- persistedResult.getResultParts().put(path, subList);\r
-\r
- testResultDao.create(persistedResult);\r
- } else {\r
- PartSubList subList = persistedResult.getResultParts()\r
- .get(path);\r
- if (subList == null) {\r
- subList = new PartSubList();\r
- persistedResult.getResultParts().put(path, subList);\r
- }\r
- persistedResult.getResultParts().get(path).getParts().add(\r
- partStruct.part);\r
-\r
- if (log.isTraceEnabled()) {\r
- log.trace("ResultId:" + persistedResult.getTestResultId());\r
- log.trace("ResultParts size:"\r
- + persistedResult.getResultParts().size());\r
- log.trace("Sublist size:" + subList.getParts().size());\r
- log.trace("Part: " + partStruct.part);\r
- }\r
- testResultDao.update(persistedResult);\r
- }\r
- } catch (Exception e) {\r
- log.error("Could not persist part for result #"\r
- + partStruct.resultId, e);\r
- }\r
- }\r
-\r
- @Override\r
- protected void postClose(TreeTestResult testResult) {\r
- TreeTestResult persistedResult = (TreeTestResult) testResultDao\r
- .getTestResult(testResult.getTestResultId());\r
-\r
- if (persistedResult != null) {\r
- persistedResult.setCloseDate(testResult.getCloseDate());\r
- testResultDao.update(persistedResult);\r
- }\r
- if (log.isDebugEnabled())\r
- log.debug("Closed result persister for result "\r
- + testResult.getNumericResultId());\r
- }\r
-\r
- private TreeSRegistry getOrCreateTreeSRegistry(TreeSPath path) {\r
- TreeSRegistry registry = treeSRegistryDao.getTreeSRegistry(path);\r
- if (registry == null) {\r
- registry = new TreeSRegistry();\r
- TreeSPath root = treeSPathDao.getOrCreate(path.getRoot());\r
- registry.setRoot(root);\r
- treeSRegistryDao.create(registry);\r
- return treeSRegistryDao.getTreeSRegistry(path);\r
- } else {\r
- return registry;\r
- }\r
- }\r
-\r
- /** Sets the DAO to use in order to persist the results. */\r
- public void setTestResultDao(TestResultDao testResultDao) {\r
- this.testResultDao = testResultDao;\r
- }\r
-\r
- /** Sets the tree structure path DAO. */\r
- public void setTreeSPathDao(TreeSPathDao treeSPathDao) {\r
- this.treeSPathDao = treeSPathDao;\r
- }\r
-\r
- /** Sets the tree structure registry DAO. */\r
- public void setTreeSRegistryDao(TreeSRegistryDao treeSRegistryDao) {\r
- this.treeSRegistryDao = treeSRegistryDao;\r
- }\r
-\r
- private void syncPath(TreeSRegistry registry,\r
- StructureRegistry localRegistry, TreeSPath path) {\r
- if (path.getParent() != null) {\r
- TreeSPath parent = treeSPathDao.getOrCreate(path.getParent());\r
- syncPath(registry, localRegistry, parent);\r
- }\r
-\r
- if (registry.getElement(path) == null) {\r
- if (localRegistry != null) {\r
- registry.register(path, localRegistry.getElement(path));\r
- } else {\r
- registry.register(path, new SimpleSElement(path.getName()));\r
- }\r
- treeSRegistryDao.update(registry);\r
- }\r
-\r
- }\r
-}\r
+++ /dev/null
-package org.argeo.slc.core.test.tree.htmlreport;\r
-\r
-import java.io.File;\r
-import java.io.FileOutputStream;\r
-import java.io.IOException;\r
-import java.io.InputStream;\r
-import java.text.SimpleDateFormat;\r
-import java.util.Comparator;\r
-import java.util.List;\r
-import java.util.SortedSet;\r
-import java.util.TreeSet;\r
-\r
-import org.apache.commons.io.IOUtils;\r
-import org.apache.commons.logging.Log;\r
-import org.apache.commons.logging.LogFactory;\r
-\r
-import org.argeo.slc.core.SlcException;\r
-import org.argeo.slc.core.structure.StructureAware;\r
-import org.argeo.slc.core.structure.StructurePath;\r
-import org.argeo.slc.core.structure.StructureRegistry;\r
-import org.argeo.slc.core.structure.tree.TreeSPath;\r
-import org.argeo.slc.core.test.TestReport;\r
-import org.argeo.slc.core.test.TestResult;\r
-import org.argeo.slc.core.test.tree.TreeTestResult;\r
-import org.argeo.slc.dao.structure.tree.TreeSRegistryDao;\r
-import org.argeo.slc.dao.test.TestResultDao;\r
-\r
-/**\r
- * Basic implementation of TestReport generating static HTML pages. If a\r
- * <code>TestResultDao</code> is passed, all the data is dumped, otherwise\r
- * only the passed <code>TestResult</code>.\r
- */\r
-public class FullHtmlTreeReport implements TestReport, StructureAware {\r
- private static final Log log = LogFactory.getLog(FullHtmlTreeReport.class);\r
- SimpleDateFormat sdf = new SimpleDateFormat("yyyy/MM/dd HH:mm:ss");\r
-\r
- private TestResultDao testResultDao;\r
- private TreeSRegistryDao treeSRegistryDao;\r
- private File reportDir;\r
-\r
- private StructureRegistry localRegistry;\r
-\r
- public void generateTestReport(TestResult testResult) {\r
-\r
- if (testResultDao == null) {\r
- if (testResult == null)\r
- throw new SlcException(\r
- "Cannot generate report without DAO or result instance.");\r
-\r
- TreeTestResult result = (TreeTestResult) testResult;\r
- ResultPage page = new ResultPage(this, result);\r
- page.generate(getRegistry(result));\r
- } else {\r
- if (reportDir.exists()) {\r
- // clean\r
- for (File file : reportDir.listFiles()) {\r
- file.delete();\r
- }\r
- }\r
- reportDir.mkdirs();\r
-\r
- resourceToFile("index.html");\r
-\r
- ResultsList index = new ResultsList(this);\r
- List<TestResult> list = testResultDao.listTestResults();\r
- SortedSet<TestResult> sortedSet = new TreeSet<TestResult>(\r
- new Comparator<TestResult>() {\r
-\r
- public int compare(TestResult o1, TestResult o2) {\r
- if (o1.getCloseDate() == null\r
- || o2.getCloseDate() == null)\r
- return 0;\r
- // inverse date order (last first)\r
- return o2.getCloseDate().compareTo(\r
- o1.getCloseDate());\r
- }\r
-\r
- });\r
- sortedSet.addAll(list);\r
- for (TestResult testRes : sortedSet) {\r
- TreeTestResult result = (TreeTestResult) testRes;\r
-\r
- index.addTestResult(result);\r
- ResultPage page = new ResultPage(this, result);\r
- page.generate(getRegistry(result));\r
- }\r
- index.close();\r
- }\r
- log.info("Generated HTML test result report to "+reportDir);\r
- }\r
-\r
- /**\r
- * Generates a result file location based on the report dir and the id of\r
- * the test result.\r
- */\r
- protected File getResultFile(TreeTestResult result) {\r
- return new File(reportDir.getPath() + File.separator + "slc-result-"\r
- + result.getTestResultId() + ".html");\r
- }\r
-\r
- /** Sets the DAO to use to extract all data. */\r
- public void setTestResultDao(TestResultDao testResultDao) {\r
- this.testResultDao = testResultDao;\r
- }\r
-\r
- /** Sets the tree structure registry DAO. */\r
- public void setTreeSRegistryDao(TreeSRegistryDao treeSRegistryDao) {\r
- this.treeSRegistryDao = treeSRegistryDao;\r
- }\r
-\r
- /** Sets the directory where to generate all the data. */\r
- public void setReportDir(File reportDir) {\r
- this.reportDir = reportDir;\r
- }\r
-\r
- private StructureRegistry getRegistry(TreeTestResult result) {\r
- StructureRegistry registry = null;\r
- if (treeSRegistryDao != null) {\r
- TreeSPath path = result.getResultParts().firstKey();\r
- registry = treeSRegistryDao.getTreeSRegistry(path);\r
- }\r
- if (registry == null) {\r
- registry = localRegistry;\r
- }\r
- if (registry == null) {\r
- throw new SlcException("No structure registry available");\r
- }\r
- return registry;\r
- }\r
-\r
- public void notifyCurrentPath(StructureRegistry registry, StructurePath path) {\r
- this.localRegistry = registry;\r
- }\r
-\r
- File getReportDir() {\r
- return reportDir;\r
- }\r
-\r
- void addStyles(StringBuffer buf) {\r
- try {\r
- buf.append("<style type=\"text/css\">\n");\r
- InputStream in = FullHtmlTreeReport.class\r
- .getResourceAsStream("style.css");\r
- String styles = IOUtils.toString(in);\r
- IOUtils.closeQuietly(in);\r
- buf.append(styles);\r
- buf.append("\n</style>\n");\r
- } catch (IOException e) {\r
- throw new SlcException("Cannot load styles", e);\r
- }\r
- }\r
-\r
- private void resourceToFile(String resourceName) {\r
- try {\r
- File file = new File(getReportDir() + File.separator + resourceName);\r
- InputStream in = FullHtmlTreeReport.class\r
- .getResourceAsStream(resourceName);\r
- FileOutputStream out = new FileOutputStream(file);\r
- IOUtils.copy(in, out);\r
- IOUtils.closeQuietly(in);\r
- IOUtils.closeQuietly(out);\r
- } catch (Exception e) {\r
- throw new SlcException("Cannot load resource", e);\r
- }\r
-\r
- }\r
-\r
-}\r
+++ /dev/null
-package org.argeo.slc.core.test.tree.htmlreport;\r
-\r
-import java.io.IOException;\r
-import java.io.PrintWriter;\r
-import java.io.StringWriter;\r
-import java.util.Date;\r
-import java.util.SortedMap;\r
-import java.util.TreeMap;\r
-\r
-import org.apache.commons.io.FileUtils;\r
-import org.apache.commons.io.IOUtils;\r
-import org.apache.commons.logging.Log;\r
-import org.apache.commons.logging.LogFactory;\r
-\r
-import org.argeo.slc.core.structure.StructureElement;\r
-import org.argeo.slc.core.structure.StructureRegistry;\r
-import org.argeo.slc.core.structure.tree.TreeSPath;\r
-import org.argeo.slc.core.test.SimpleResultPart;\r
-import org.argeo.slc.core.test.TestResultPart;\r
-import org.argeo.slc.core.test.TestStatus;\r
-import org.argeo.slc.core.test.tree.PartSubList;\r
-import org.argeo.slc.core.test.tree.TreeTestResult;\r
-\r
-class ResultPage {\r
- private final static Log log = LogFactory.getLog(ResultPage.class);\r
-\r
- private final FullHtmlTreeReport report;\r
- private final TreeTestResult result;\r
-\r
- ResultPage(FullHtmlTreeReport report, TreeTestResult result) {\r
- this.report = report;\r
- this.result = result;\r
- }\r
-\r
- /**\r
- * Generates a result page for one test result\r
- * \r
- * @param file\r
- * file to which generate the HTML\r
- * @param result\r
- * the result to dump\r
- */\r
- protected void generate(StructureRegistry registry) {\r
- StringBuffer buf = new StringBuffer("");\r
- buf.append("<html>\n");\r
- buf.append("<header>");\r
- buf.append("<title>Result #").append(result.getTestResultId());\r
- buf.append("</title>\n");\r
- report.addStyles(buf);\r
- buf.append("</header>\n");\r
-\r
- buf.append("<body>\n");\r
-\r
- // Header\r
- buf.append("<a name=\"top\"/>\n");\r
- buf.append("<h1>Result #").append(result.getTestResultId()).append(\r
- "</h1>\n");\r
- Date closeDate = result.getCloseDate();\r
- if (closeDate == null) {\r
- buf.append("[Not closed]");\r
- } else {\r
- buf.append(report.sdf.format(closeDate));\r
- }\r
-\r
- // TOC\r
- generateToc(buf, registry);\r
-\r
- generatePartsList(buf, registry);\r
-\r
- buf.append("</body>");\r
- buf.append("</html>");\r
-\r
- try {\r
- FileUtils.writeStringToFile(report.getResultFile(result), buf\r
- .toString());\r
- } catch (IOException e) {\r
- log.error("Could not save result page.", e);\r
- }\r
- }\r
-\r
- private void generateToc(StringBuffer buf, StructureRegistry registry) {\r
- buf.append("<h2>Overview</h2>\n");\r
- SortedMap<TreeSPath, Integer> toc = new TreeMap<TreeSPath, Integer>();\r
- for (TreeSPath path : result.getResultParts().keySet()) {\r
- PartSubList subList = (PartSubList) result.getResultParts().get(\r
- path);\r
- boolean isFailed = false;\r
- for (TestResultPart part : subList.getParts()) {\r
- if (!part.getStatus().equals(TestStatus.PASSED)) {\r
- isFailed = true;\r
- break;\r
- }\r
- }\r
- fillToc(toc, path, isFailed);\r
- }\r
-\r
- buf.append("<table border=\"0\">\n");\r
- for (TreeSPath path : toc.keySet()) {\r
- boolean inResult = result.getResultParts().containsKey(path);\r
- boolean isFailed = !toc.get(path).equals(TestStatus.PASSED);\r
-\r
- buf.append("<tr><td class=\"").append(\r
- isFailed ? "failed" : "passed").append("\">");\r
- int depth = path.depth();\r
- for (int i = 0; i < depth; i++) {\r
- buf.append(" ");\r
- }\r
-\r
- if (inResult) {\r
- buf.append("<a href=\"#").append(anchor(path)).append(\r
- "\" class=\"").append(isFailed ? "failed" : "passed")\r
- .append("\"><b>");\r
- }\r
- if (registry != null) {\r
- StructureElement element = registry.getElement(path);\r
- if (element != null) {\r
- buf.append(element.getDescription());\r
- } else {\r
- buf.append(path.getName());\r
- }\r
- }\r
- if (inResult) {\r
- buf.append("</b></a>");\r
- }\r
- buf.append("</td></tr>\n");\r
- }\r
- buf.append("</table>\n");\r
- buf.append("<hr/>\n");\r
- }\r
-\r
- private void generatePartsList(StringBuffer buf, StructureRegistry registry) {\r
- for (TreeSPath path : result.getResultParts().keySet()) {\r
- buf.append("<p>\n");\r
- buf.append("<a name=\"").append(anchor(path)).append("\"></a>");\r
- buf.append("<h2>");\r
- describedPath(path, registry, buf);\r
- buf.append("</h2>");\r
-\r
- PartSubList subList = (PartSubList) result.getResultParts().get(\r
- path);\r
- buf.append("<table border=0>\n");\r
- int displayedIndex = 1;// for display only\r
- for (TestResultPart part : subList.getParts()) {\r
- SimpleResultPart sPart = (SimpleResultPart) part;\r
- String clss = "";\r
- if (sPart.getStatus().equals(TestStatus.PASSED)) {\r
- clss = "passed";\r
- } else {\r
- clss = "failed";\r
- }\r
- buf.append("<tr>");\r
- buf.append("<td><b>").append(displayedIndex)\r
- .append("</b></td>");\r
- buf.append("<td class=\"").append(clss).append("\">");\r
-\r
- buf.append(sPart.getMessage());\r
- if (sPart.getStatus().equals(TestStatus.ERROR)) {\r
- buf\r
- .append("<p><b>An unexpected error prevented the test to run properly.</b>");\r
- Throwable exception = sPart.getException();\r
- if (exception != null) {\r
- StringWriter writer = new StringWriter();\r
- exception.printStackTrace(new PrintWriter(writer));\r
- buf.append("<br/><pre>");\r
- buf.append(writer.toString());\r
- buf.append("</pre>");\r
- IOUtils.closeQuietly(writer);\r
- }\r
- buf.append("</p>");\r
- }\r
- buf.append("</td>");\r
- buf.append("</tr>\n");\r
-\r
- displayedIndex++;\r
- }\r
- buf.append("</table>\n");\r
- buf.append("<a class=\"nav\" href=\"#top\">top</a>\n");\r
- buf.append("<hr/>\n");\r
- }\r
- }\r
-\r
- private void fillToc(SortedMap<TreeSPath, Integer> toc, TreeSPath path,\r
- boolean isFailed) {\r
- if (isFailed) {\r
- toc.put(path, TestStatus.FAILED);\r
- } else {\r
- if (!toc.containsKey(path)) {\r
- toc.put(path, TestStatus.PASSED);\r
- }\r
- }\r
-\r
- if (path.getParent() != null) {\r
- fillToc(toc, path.getParent(), isFailed);\r
- }\r
- }\r
-\r
- private String anchor(TreeSPath path) {\r
- return path.getAsUniqueString().replace(path.getSeparator(), '_');\r
- }\r
-\r
- private void describedPath(TreeSPath path, StructureRegistry registry,\r
- StringBuffer buf) {\r
- // StringBuffer buf = new StringBuffer("");\r
- if (path.getParent() != null) {\r
- describedPath(path.getParent(), registry, buf);\r
- }\r
- String description = path.getName();\r
- if (registry != null) {\r
- StructureElement element = registry.getElement(path);\r
- if (element != null) {\r
- description = element.getDescription();\r
- }\r
- }\r
- buf.append('/').append(description);\r
- }\r
-}\r
+++ /dev/null
-package org.argeo.slc.core.test.tree.htmlreport;\r
-\r
-import java.io.File;\r
-import java.io.FileWriter;\r
-import java.io.IOException;\r
-import java.util.Date;\r
-\r
-import org.argeo.slc.core.test.tree.TreeTestResult;\r
-\r
-class ResultsList {\r
- private final FullHtmlTreeReport report;\r
- private final StringBuffer buf = new StringBuffer("");\r
-\r
- ResultsList(FullHtmlTreeReport report) {\r
- this.report = report;\r
-\r
- buf.append("<html><header><title>Results</title></header><body>");\r
- buf.append("<header>");\r
- buf.append("<title>Results</title>\n");\r
- report.addStyles(buf);\r
- buf.append("</header>\n");\r
- buf.append("<body>\n");\r
-\r
- buf.append("<h1>Results</h1>\n");\r
- buf.append("<table border=\"0\" cellspacing=\"1\">\n");\r
- buf.append("<tr><th>Date</th><th>Result Id</th></tr>\n");\r
- }\r
-\r
- void addTestResult(TreeTestResult result) {\r
- buf.append("<tr>\n");\r
- // Date\r
- buf.append("<td>");\r
- Date closeDate = result.getCloseDate();\r
- if (closeDate == null) {\r
- buf.append("[Not closed]");\r
- } else {\r
- buf.append(report.sdf.format(closeDate));\r
- }\r
- buf.append("</td>\n");\r
- // Id and link\r
- buf.append("<td><a class=\"nav\" href=\"");\r
- buf.append(report.getResultFile(result).getName());\r
- buf.append("\" target=\"main\">#");\r
- buf.append(result.getTestResultId()).append("</a></td>\n");\r
-\r
- buf.append("</tr>\n");\r
- }\r
-\r
- void close() {\r
- buf.append("</table>\n</body></html>");\r
-\r
- try {\r
- FileWriter writer = new FileWriter(report.getReportDir().getPath()\r
- + File.separator + "slc-resultsList.html");\r
- writer.write(buf.toString());\r
- writer.close();\r
- } catch (IOException e) {\r
- e.printStackTrace();\r
- }\r
-\r
- }\r
-\r
-}\r
+++ /dev/null
-<html>\r
-<head></head>\r
-<body>\r
-Static HTML report for tree based test results.\r
-</body>\r
-</html>
\ No newline at end of file
+++ /dev/null
-<html>\r
-<head></head>\r
-<body>\r
-Extension of SLC Test integrating tree-based structure.\r
-</body>\r
-</html>
\ No newline at end of file
+++ /dev/null
-package org.argeo.slc.dao.structure;\r
-\r
-public interface SimpleSElementDao {\r
-\r
-}\r
+++ /dev/null
-<html>\r
-<head></head>\r
-<body>\r
-DAOs for the core structure objects.\r
-</body>\r
-</html>
\ No newline at end of file
+++ /dev/null
-package org.argeo.slc.dao.structure.tree;\r
-\r
-import org.argeo.slc.core.structure.tree.TreeSPath;\r
-\r
-public interface TreeSPathDao {\r
- public void create(TreeSPath path);\r
-\r
- public TreeSPath getTreeSPath(String pathString);\r
-\r
- public TreeSPath getOrCreate(TreeSPath pathTransient);\r
-}\r
+++ /dev/null
-package org.argeo.slc.dao.structure.tree;\r
-\r
-import org.argeo.slc.core.structure.tree.TreeSPath;\r
-import org.argeo.slc.core.structure.tree.TreeSRegistry;\r
-\r
-/**\r
- * DAO for tree-base structure registry.\r
- * \r
- * @see TreeSRegistry\r
- */\r
-public interface TreeSRegistryDao {\r
- /** Gets the TreeSRegistry which has the same root path as the provided path. */\r
- public TreeSRegistry getTreeSRegistry(TreeSPath treeSPath);\r
-\r
- /** Creates a new registry. */\r
- public void create(TreeSRegistry registry);\r
-\r
- /** Updates an existing registry. */\r
- public void update(TreeSRegistry registry);\r
-}\r
+++ /dev/null
-<html>\r
-<head></head>\r
-<body>\r
-DAOs for the tree-based structure objects.\r
-</body>\r
-</html>
\ No newline at end of file
+++ /dev/null
-package org.argeo.slc.dao.test;\r
-\r
-import java.util.List;\r
-\r
-import org.argeo.slc.core.test.TestResult;\r
-import org.argeo.slc.core.test.TestResultId;\r
-\r
-/**\r
- * The dao for <code>TestResult</code>.\r
- * \r
- * @see TestResult\r
- */\r
-public interface TestResultDao {\r
- /** Gets a test result based on its id. */\r
- public TestResult getTestResult(TestResultId id);\r
-\r
- /** Persists a new test result. */\r
- public void create(TestResult testResult);\r
-\r
- /** Updates an already persisted test result. */\r
- public void update(TestResult testResult);\r
-\r
- /** Lists all test results. */\r
- public List<TestResult> listTestResults();\r
-}\r
+++ /dev/null
-<html>\r
-<head></head>\r
-<body>\r
-Data Access Objects for SLC Test.\r
-</body>\r
-</html>
\ No newline at end of file
+++ /dev/null
-package org.argeo.slc.diff;\r
-\r
-/**\r
- * Converts data into a format better adapted for comparison. It is typically\r
- * used to convert <code>String</code> into typed format such as\r
- * <code>BigDecimal</code>\r
- */\r
-public interface DataInterpreter {\r
- /**\r
- * Converts data\r
- * \r
- * @param key\r
- * any object used to differentiate the type of data (e.g.\r
- * column, path)\r
- * @param value\r
- * the data to convert\r
- * @return the converted object\r
- */\r
- public Object convert(Object key, Object value);\r
-}\r
+++ /dev/null
-package org.argeo.slc.diff;\r
-\r
-import org.springframework.core.io.Resource;\r
-\r
-/** A comparator providing structured information about the differences found. */\r
-public interface Diff {\r
- /** Performs the comparison. */\r
- public DiffResult compare(Resource expected, Resource reached);\r
-}\r
+++ /dev/null
-package org.argeo.slc.diff;\r
-\r
-/** The root class for issues which happened during a diff. */\r
-public abstract class DiffIssue implements Comparable<DiffIssue> {\r
- /** The position of this issue. */\r
- protected final DiffPosition position;\r
-\r
- /** Constructor */\r
- public DiffIssue(DiffPosition position) {\r
- super();\r
- this.position = position;\r
- }\r
-\r
- public int compareTo(DiffIssue o) {\r
- return position.compareTo(o.position);\r
- }\r
-\r
- /** The position of this issue within the test file */\r
- public DiffPosition getPosition() {\r
- return position;\r
- }\r
-}\r
+++ /dev/null
-package org.argeo.slc.diff;\r
-\r
-/**\r
- * Object able to uniquely identify an atomic diff part. Used to identify\r
- * missings and left-overs.\r
- */\r
-public interface DiffKey {\r
- public String toString();\r
-}\r
+++ /dev/null
-package org.argeo.slc.diff;\r
-\r
-/**\r
- * A value missing in one of the file. If its position is related to expected,\r
- * this means it is a left over in the reached, if its position is related to\r
- * the reached it means that it is missing from the reached. If the value is\r
- * null it means that the entire line is missing.\r
- */\r
-public class DiffMissing extends DiffIssue {\r
- private final DiffKey key;\r
-\r
- public DiffMissing(DiffPosition position, DiffKey key) {\r
- super(position);\r
- this.key = key;\r
- }\r
-\r
- public Object getKey() {\r
- return key;\r
- }\r
-\r
- @Override\r
- public String toString() {\r
- if (position.relatedFile == RelatedFile.EXPECTED) {\r
- return position + ": left over " + key;\r
- } else if (position.relatedFile == RelatedFile.REACHED) {\r
- return position + ": missing " + key;\r
- }\r
- return super.toString();\r
- }\r
-\r
-}\r
+++ /dev/null
-package org.argeo.slc.diff;\r
-\r
-/** Diff issue where reached and expected values are different. */\r
-public class DiffNotMatched extends DiffIssue {\r
- private final Object expected;\r
- private final Object reached;\r
-\r
- public DiffNotMatched(DiffPosition position, Object expected, Object reached) {\r
- super(position);\r
- this.expected = expected;\r
- this.reached = reached;\r
- }\r
-\r
- public Object getExpected() {\r
- return expected;\r
- }\r
-\r
- public Object getReached() {\r
- return reached;\r
- }\r
-\r
- @Override\r
- public String toString() {\r
- return position + ": not matched " + expected + " <> " + reached;\r
- }\r
-\r
-}\r
+++ /dev/null
-package org.argeo.slc.diff;\r
-\r
-/** The position of a diff issue within the test resource. */\r
-public abstract class DiffPosition implements Comparable<DiffPosition> {\r
- protected RelatedFile relatedFile;\r
-\r
- public DiffPosition(RelatedFile relatedFile) {\r
- super();\r
- this.relatedFile = relatedFile;\r
- }\r
-\r
- public RelatedFile getRelatedFile() {\r
- return relatedFile;\r
- }\r
-\r
-}\r
+++ /dev/null
-package org.argeo.slc.diff;\r
-\r
-import java.util.List;\r
-\r
-/**\r
- * The result of a diff. Can be subclassed to provided more structured\r
- * information.\r
- */\r
-public interface DiffResult {\r
- /** The list of issues, a zero size meaning that the diff succeeded. */\r
- public List<DiffIssue> getIssues();\r
-}\r
+++ /dev/null
-package org.argeo.slc.diff;\r
-\r
-/** Enumeration of the types of resource tested. */\r
-public enum RelatedFile {\r
- /** The expected resource */\r
- EXPECTED,\r
- /** The reached resource */\r
- REACHED\r
-}\r
+++ /dev/null
-package org.argeo.slc.diff;\r
-\r
-import java.util.List;\r
-import java.util.Vector;\r
-\r
-/** A basic implementation of <code>DiffResult</code>. */\r
-public class SimpleDiffResult implements DiffResult {\r
- private List<DiffIssue> issues = new Vector<DiffIssue>();\r
-\r
- public List<DiffIssue> getIssues() {\r
- return issues;\r
- }\r
-\r
-}\r
+++ /dev/null
-package org.argeo.slc.diff;\r
-\r
-import org.argeo.slc.core.UnsupportedException;\r
-\r
-/**\r
- * A diff position within a table structure such a CSV file or an SQL result\r
- * set.\r
- */\r
-public class TableDiffPosition extends DiffPosition {\r
- private Integer line;\r
- /** Can be null */\r
- private Integer column;\r
- /** Can be null */\r
- private String columnName;\r
-\r
- public TableDiffPosition(RelatedFile relatedFile, Integer line,\r
- Integer column, String columnName) {\r
- super(relatedFile);\r
- this.line = line;\r
- this.column = column;\r
- this.columnName = columnName;\r
- }\r
-\r
- public Integer getLine() {\r
- return line;\r
- }\r
-\r
- public Integer getColumn() {\r
- return column;\r
- }\r
-\r
- public String getColumnName() {\r
- return columnName;\r
- }\r
-\r
- public int compareTo(DiffPosition dp) {\r
- if (!(dp instanceof TableDiffPosition))\r
- throw new UnsupportedException("position", dp);\r
-\r
- TableDiffPosition o = (TableDiffPosition) dp;\r
- if (relatedFile.equals(o.relatedFile)) {\r
- if (line == o.line) {\r
- return column.compareTo(o.column);\r
- } else {\r
- return line.compareTo(o.line);\r
- }\r
- } else {\r
- return relatedFile.compareTo(o.relatedFile);\r
- }\r
- }\r
-\r
- @Override\r
- public String toString() {\r
- StringBuffer buf = new StringBuffer("");\r
- buf.append(relatedFile).append('[').append(line);\r
- if (column != null) {\r
- buf.append(',').append(column);\r
- if (columnName != null) {\r
- buf.append('-').append(columnName);\r
- }\r
- }\r
- buf.append(']');\r
- return buf.toString();\r
- }\r
-\r
-}\r
+++ /dev/null
-package org.argeo.slc.diff;\r
-\r
-/** Compares objects, eventually using tolerance mechanisms. */\r
-public interface Tolerance {\r
- /**\r
- * Compares objects\r
- * \r
- * @param key\r
- * any object used to differentiate the type of data (e.g.\r
- * column, path)\r
- * @param expected\r
- * the expected value\r
- * @param reached\r
- * the reached value\r
- * @return the converted object\r
- */\r
- public Boolean compare(Object key, Object expected, Object reached);\r
-}\r
+++ /dev/null
-package org.argeo.slc.diff;\r
-\r
-import org.argeo.slc.core.UnsupportedException;\r
-\r
-/** A diff position within an Xml file. <b>NOT YET IMPLEMENTED</b>. */\r
-public class XPathDiffPosition extends DiffPosition {\r
-\r
- private String xPath;\r
-\r
- public XPathDiffPosition(RelatedFile relatedFile, String path) {\r
- super(relatedFile);\r
- xPath = path;\r
- }\r
-\r
- public int compareTo(DiffPosition dp) {\r
- if (!(dp instanceof XPathDiffPosition))\r
- throw new UnsupportedException("position", dp);\r
-\r
- XPathDiffPosition o = (XPathDiffPosition) dp;\r
- if (relatedFile.equals(o.relatedFile)) {\r
- return xPath.compareTo(o.xPath);\r
- } else {\r
- return relatedFile.compareTo(o.relatedFile);\r
- }\r
- }\r
-\r
-}\r
+++ /dev/null
-<html>\r
-<head></head>\r
-<body>\r
-Abstraction of diff comparison with structured results.\r
-</body>\r
-</html>
\ No newline at end of file
+++ /dev/null
-package org.argeo.slc.hibernate.structure.tree;\r
-\r
-import java.util.List;\r
-\r
-import org.springframework.orm.hibernate3.support.HibernateDaoSupport;\r
-\r
-import org.apache.commons.logging.Log;\r
-import org.apache.commons.logging.LogFactory;\r
-\r
-import org.argeo.slc.core.structure.tree.TreeSPath;\r
-import org.argeo.slc.dao.structure.tree.TreeSPathDao;\r
-\r
-/**\r
- * The Hibernate implementation for tree-based result of the test result dao.\r
- * \r
- * @see TreeTestResult\r
- */\r
-public class TreeSPathDaoHibernate extends HibernateDaoSupport implements\r
- TreeSPathDao {\r
-\r
- private static Log log = LogFactory.getLog(TreeSPathDaoHibernate.class);\r
-\r
- public void create(TreeSPath path) {\r
- createImpl(path);\r
- }\r
-\r
- private void createImpl(TreeSPath path) {\r
- if (path.getParent() != null) {\r
- TreeSPath parent = getTreeSPath(path.getParent()\r
- .getAsUniqueString());\r
- if (parent == null) {\r
- createImpl(path.getParent());\r
- }\r
- }\r
- getHibernateTemplate().save(path);\r
- if (log.isTraceEnabled())\r
- log.trace("Saved TreeSPath " + path.getAsUniqueString());\r
- }\r
-\r
- public TreeSPath getTreeSPath(String pathString) {\r
- if (log.isTraceEnabled())\r
- log.trace("Query path: " + pathString);\r
- List<?> list = getHibernateTemplate().find(\r
- "from TreeSPath where asUniqueString=?", pathString);\r
- if (list.size() == 0) {\r
- return null;\r
- } else {\r
- return (TreeSPath) list.get(0);\r
- }\r
- }\r
-\r
- public TreeSPath getOrCreate(TreeSPath pathTransient) {\r
- TreeSPath path = getTreeSPath(pathTransient.getAsUniqueString());\r
- if (path != null) {\r
- return path;\r
- } else {\r
- create(pathTransient);\r
- // TODO: optimize\r
- return getTreeSPath(pathTransient.getAsUniqueString());\r
- }\r
-\r
- }\r
-\r
-}\r
+++ /dev/null
-package org.argeo.slc.hibernate.structure.tree;\r
-\r
-import java.util.List;\r
-\r
-import org.springframework.orm.hibernate3.support.HibernateDaoSupport;\r
-\r
-import org.argeo.slc.core.structure.tree.TreeSPath;\r
-import org.argeo.slc.core.structure.tree.TreeSRegistry;\r
-import org.argeo.slc.dao.structure.tree.TreeSRegistryDao;\r
-\r
-/**\r
- * The Hibernate implementation for tree-based structure registry.\r
- * \r
- * @see TreeSRegistry\r
- */\r
-public class TreeSRegistryDaoHibernate extends HibernateDaoSupport implements\r
- TreeSRegistryDao {\r
-\r
- // private static Log log =\r
- // LogFactory.getLog(TreeSRegistryDaoHibernate.class);\r
-\r
- public void create(TreeSRegistry registry) {\r
- getHibernateTemplate().save(registry);\r
- }\r
-\r
- public void update(TreeSRegistry registry) {\r
- getHibernateTemplate().update(registry);\r
- }\r
-\r
- public TreeSRegistry getTreeSRegistry(TreeSPath treeSPath) {\r
- List<?> list = getHibernateTemplate().find(\r
- "from TreeSRegistry where root.asUniqueString=?",\r
- treeSPath.getRoot().getAsUniqueString());\r
- if (list.size() == 0) {\r
- return null;\r
- } else {\r
- return (TreeSRegistry) list.get(0);\r
- }\r
- }\r
-\r
-}\r
+++ /dev/null
-<html>\r
-<head></head>\r
-<body>\r
-Hibernate based DAO implementations for tree-based structure objects.\r
-</body>\r
-</html>
\ No newline at end of file
+++ /dev/null
-package org.argeo.slc.hibernate.test.tree;\r
-\r
-import java.util.List;\r
-\r
-import org.springframework.orm.hibernate3.support.HibernateDaoSupport;\r
-\r
-import org.argeo.slc.core.test.NumericTRId;\r
-import org.argeo.slc.core.test.TestResult;\r
-import org.argeo.slc.core.test.TestResultId;\r
-import org.argeo.slc.dao.test.TestResultDao;\r
-\r
-/**\r
- * The Hibernate implementation for tree-based result of the test result dao.\r
- * \r
- * @see TreeTestResult\r
- */\r
-public class TestResultDaoHibernate extends HibernateDaoSupport implements\r
- TestResultDao {\r
-\r
- public void create(TestResult testResult) {\r
- getHibernateTemplate().save(testResult);\r
- }\r
-\r
- public void update(TestResult testResult) {\r
- getHibernateTemplate().saveOrUpdate(testResult);\r
- }\r
-\r
- public TestResult getTestResult(TestResultId id) {\r
- NumericTRId ntrid = (NumericTRId) id;\r
- List<?> list = getHibernateTemplate().find(\r
- "from TreeTestResult where numericResultId.value=?",\r
- ntrid.getValue());\r
- if (list.size() == 0) {\r
- return null;\r
- } else {\r
- return (TestResult) list.get(0);\r
- }\r
-\r
- }\r
-\r
- public List<TestResult> listTestResults() {\r
- return (List<TestResult>) getHibernateTemplate().find(\r
- "from TreeTestResult");\r
- }\r
-\r
-}\r
+++ /dev/null
-<html>\r
-<head></head>\r
-<body>\r
-Hibernate based DAO implementations for tree-based SLC Test.\r
-</body>\r
-</html>
\ No newline at end of file
+++ /dev/null
-package org.argeo.slc.unit;\r
-\r
-import java.sql.Connection;\r
-import java.util.List;\r
-import java.util.Properties;\r
-\r
-import org.hibernate.cfg.Configuration;\r
-import org.hibernate.cfg.Environment;\r
-import org.hibernate.tool.hbm2ddl.SchemaExport;\r
-\r
-/**\r
- * Creates a relational data model from Hibernate mapping files. The benefit of\r
- * this class is to be able to use Hibernate to have test data which are\r
- * independent from the type of database used.\r
- */\r
-public class DbModel {\r
- private String dialect;\r
- private List<String> mappings;\r
-\r
- /** Sets the Hibernate dialect to use. */\r
- public void setDialect(String dialect) {\r
- this.dialect = dialect;\r
- }\r
-\r
- /** Sets the list of mappings to consider. */\r
- public void setMappings(List<String> mappings) {\r
- this.mappings = mappings;\r
- }\r
-\r
- /**\r
- * Creates an Hibernate schema export tool, in order to create the\r
- * underlying datamodel.\r
- */\r
- public SchemaExport createSchemaExport(Connection connection) {\r
- Configuration configuration = new Configuration();\r
- Properties properties = new Properties();\r
- properties.setProperty(Environment.DIALECT, dialect);\r
- properties.setProperty(Environment.HBM2DDL_AUTO, "create");\r
- configuration.setProperties(properties);\r
-\r
- for (String mapping : mappings) {\r
- configuration.addResource(mapping.trim());\r
- }\r
-\r
- return new SchemaExport(configuration, connection);\r
- }\r
-}\r
+++ /dev/null
-package org.argeo.slc.unit;\r
-\r
-import java.io.InputStream;\r
-import java.sql.SQLException;\r
-\r
-import javax.sql.DataSource;\r
-\r
-import org.dbunit.DataSourceDatabaseTester;\r
-import org.dbunit.DatabaseUnitException;\r
-import org.dbunit.IDatabaseTester;\r
-import org.dbunit.database.IDatabaseConnection;\r
-import org.dbunit.dataset.IDataSet;\r
-import org.dbunit.dataset.xml.FlatXmlDataSet;\r
-import org.dbunit.operation.DatabaseOperation;\r
-import org.springframework.core.io.ClassPathResource;\r
-import org.springframework.core.io.Resource;\r
-\r
-import org.hibernate.tool.hbm2ddl.SchemaExport;\r
-\r
-import org.argeo.slc.core.SlcException;\r
-\r
-/**\r
- * Helper to make db vendor independent tests using DbUnit data sets. Based on\r
- * {@link DbModel}.\r
- */\r
-public abstract class IndependentDbTestCase extends SpringBasedTestCase {\r
- private IDatabaseTester databaseTester;\r
-\r
- /** Creates the DDL of the data model and loads the data. */\r
- @Override\r
- protected void setUp() throws Exception {\r
- super.setUp();\r
-\r
- databaseTester = new DataSourceDatabaseTester(getDataSource());\r
- databaseTester.setSetUpOperation(new DatabaseOperation() {\r
-\r
- @Override\r
- public void execute(IDatabaseConnection connection, IDataSet dataSet)\r
- throws DatabaseUnitException, SQLException {\r
- DbModel dbModel = getDbModel();\r
- SchemaExport schemaExport = dbModel\r
- .createSchemaExport(connection.getConnection());\r
- schemaExport.create(true, true);\r
-\r
- DatabaseOperation.INSERT.execute(connection, dataSet);\r
- }\r
-\r
- });\r
- databaseTester.setDataSet(createDataSet());\r
- databaseTester.onSetup();\r
- }\r
-\r
- @Override\r
- protected void tearDown() throws Exception {\r
- if (databaseTester != null) {\r
- databaseTester.onTearDown();\r
- }\r
- super.tearDown();\r
- }\r
-\r
- /**\r
- * The data source to use. The default implementation returns a bean named\r
- * {@link #getDataSourceBeanName}\r
- */\r
- protected DataSource getDataSource() {\r
- return (DataSource) getContext().getBean(getDataSourceBeanName());\r
- }\r
-\r
- /**\r
- * The name of the data source bean to use. The default implementation\r
- * returns <i>dataSource</i>.\r
- */\r
- protected String getDataSourceBeanName() {\r
- return "dataSource";\r
- }\r
-\r
- /**\r
- * Creates the data set to use. The default implementation creates a\r
- * <code>FlatXmlDataSet</code> load from the resource defined in\r
- * {@link #getDataSetResource()}\r
- */\r
- protected IDataSet createDataSet() {\r
- try {\r
- InputStream in = getDataSetResource().getInputStream();\r
- IDataSet dataSet = new FlatXmlDataSet(in);\r
- in.close();\r
- return dataSet;\r
- } catch (Exception e) {\r
- throw new SlcException("Cannot create data set", e);\r
- }\r
- }\r
-\r
- /**\r
- * The resource of the data set to load. The default implementation loads a\r
- * <code>ClassPathResource</code> located at\r
- * {@link #getDataSetResourceLocation()}.\r
- */\r
- protected Resource getDataSetResource() {\r
- return new ClassPathResource(getDataSetResourceLocation());\r
- }\r
-\r
- /**\r
- * The location of the data set to load. The default implementation loads\r
- * <i>dataSet.xml</i> found in the same package as the test.\r
- */\r
- protected String getDataSetResourceLocation() {\r
- return inPackage("dataSet.xml");\r
- }\r
-\r
- /**\r
- * The DB model to us to create the DDL of the testes database. The default\r
- * implementation loads a bean named after {@link #getDbModelBeanName()}.\r
- */\r
- protected DbModel getDbModel() {\r
- return (DbModel) getContext().getBean(getDbModelBeanName());\r
- }\r
-\r
- /**\r
- * The name of the bean to load. The default implementation returns\r
- * <i>dbModel</i>.\r
- */\r
- protected String getDbModelBeanName() {\r
- return "dbModel";\r
- }\r
-}\r
+++ /dev/null
-package org.argeo.slc.unit;\r
-\r
-import junit.framework.TestCase;\r
-\r
-import org.springframework.context.ApplicationContext;\r
-import org.springframework.context.support.ClassPathXmlApplicationContext;\r
-\r
-/** Helper for tests using a Spring application co,text. */\r
-public abstract class SpringBasedTestCase extends TestCase {\r
- private ApplicationContext context;\r
-\r
- /**\r
- * Gets (and create if necessary) the application context to use. Default\r
- * implementation uses a class path xml application context and calls\r
- * {@link #getApplicationContextLocation()}.\r
- */\r
- protected ApplicationContext getContext() {\r
- if (context == null) {\r
- context = new ClassPathXmlApplicationContext(\r
- getApplicationContextLocation());\r
- }\r
- return context;\r
- }\r
-\r
- /**\r
- * Th location of the application to load. The default implementation\r
- * returns <i>applicationContext.xml</i> found in the same package as the\r
- * test.\r
- */\r
- protected String getApplicationContextLocation() {\r
- return inPackage("applicationContext.xml");\r
- }\r
-\r
- /**\r
- * Prefixes the package of the class after converting the '.' to '/' in\r
- * order to have a resource path.\r
- */\r
- protected String inPackage(String suffix) {\r
- String prefix = getClass().getPackage().getName().replace('.', '/');\r
- return prefix + '/' + suffix;\r
- }\r
-}\r
+++ /dev/null
-<html>\r
-<head></head>\r
-<body>\r
-Helpers for unit tests.\r
-</body>\r
-</html>
\ No newline at end of file
+++ /dev/null
-# Tasks\r
-slc.test=org.argeo.slc.ant.test.SlcTestTask\r
-slc.deploy=org.argeo.slc.ant.deploy.SlcDeployTask\r
-slc.closeResult=org.argeo.slc.ant.test.SlcCloseTestResultTask\r
-slc.report=org.argeo.slc.ant.test.SlcReportTask\r
+++ /dev/null
-<html>\r
-<head>\r
-<META http-equiv="Content-Type" content="text/html; charset=US-ASCII">\r
-<title>SLC test results</title>\r
-</head>\r
-<frameset cols="30%,70%">\r
- <frame src="slc-resultsList.html" name="navigation">\r
- <frame src="about:blank" name="main">\r
- <noframes>\r
- <h2>Frame Alert</h2>\r
- <p>This document is designed to be viewed using the frames feature.\r
- If you see this message, you are using a non-frame-capable web client.\r
- </p>\r
- </noframes>\r
-</frameset>\r
-</html>\r
+++ /dev/null
-body {\r
- font-family: sans-serif;\r
- font-size: 12px;\r
- color: black;\r
- background-color: white;\r
-}\r
-\r
-h1 {\r
- font-family: sans-serif;\r
- font-size: 16px;\r
- font-weight: bold;\r
- color: #000000;\r
- padding: 0px 0px 5px 0px;\r
- margin: 0px;\r
-}\r
-\r
-h2 {\r
- font-family: sans-serif;\r
- font-size: 14px;\r
- font-weight: bold;\r
- color: #000000;\r
- padding: 5px 0px 5px 0px;\r
- margin: 0px;\r
- margin-top: 5px;\r
-}\r
-\r
-table,form {\r
- margin: 0px;\r
-}\r
-\r
-th {\r
- font-size: 12px;\r
- padding: 2px 20px 2px 2px;\r
- vertical-align: top;\r
- text-align: left;\r
-}\r
-\r
-td {\r
- font-size: 12px;\r
- padding: 1px;\r
- vertical-align: top;\r
- text-align: left;\r
-}\r
-\r
-.passed {\r
- color: green;\r
-}\r
-\r
-.failed {\r
- color: red;\r
-}\r
-\r
-a {\r
- text-decoration: none;\r
-}\r
-\r
-a.nav {\r
- color: #0066CC;\r
- text-decoration: none;\r
-}\r
-\r
-a:hover {\r
- text-decoration: underline;\r
-}
\ No newline at end of file
+++ /dev/null
-<?xml version="1.0"?>\r
-<!DOCTYPE hibernate-mapping PUBLIC\r
- "-//Hibernate/Hibernate Mapping DTD 3.0//EN"\r
- "http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd">\r
-<hibernate-mapping package="org.argeo.slc.core.structure">\r
- <class name="SimpleSElement" table="SIMPLE_SELEMENT">\r
- <id name="tid" column="T_ID">\r
- <generator class="native" />\r
- </id>\r
- <property name="description" column="DESCRIPTION"\r
- not-null="true" />\r
- </class>\r
-</hibernate-mapping>
\ No newline at end of file
+++ /dev/null
-<?xml version="1.0"?>\r
-<!DOCTYPE hibernate-mapping PUBLIC\r
- "-//Hibernate/Hibernate Mapping DTD 3.0//EN"\r
- "http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd">\r
-<hibernate-mapping package="org.argeo.slc.core.structure.tree">\r
- <class name="TreeSPath" table="TREE_SPATH">\r
- <id name="tid" column="T_ID">\r
- <generator class="native" />\r
- </id>\r
- <property name="asUniqueString" column="PATH" not-null="true"\r
- unique="true" />\r
- <property name="separator" column="SEPARATOR" not-null="true" />\r
- </class>\r
-</hibernate-mapping>
\ No newline at end of file
+++ /dev/null
-<?xml version="1.0"?>\r
-<!DOCTYPE hibernate-mapping PUBLIC\r
- "-//Hibernate/Hibernate Mapping DTD 3.0//EN"\r
- "http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd">\r
-<hibernate-mapping package="org.argeo.slc.core.structure.tree">\r
- <class name="TreeSRegistry" table="TREE_SREGISTRY">\r
- <id name="tid" column="T_ID">\r
- <generator class="native" />\r
- </id>\r
-\r
- <many-to-one name="root" column="ROOT_PATH_ID" unique="true"\r
- not-null="true" />\r
- \r
- <map name="elements" table="REGISTRY_ELEMENTS" cascade="all"\r
- lazy="false" sort="natural">\r
- <key column="PARENT_ID" />\r
- <map-key-many-to-many class="TreeSPath" column="PATH" />\r
-\r
- <many-to-many\r
- class="org.argeo.slc.core.structure.SimpleSElement"\r
- column="ELEMENT_ID" unique="true" lazy="false" />\r
- </map>\r
-\r
- </class>\r
-</hibernate-mapping>
\ No newline at end of file
+++ /dev/null
-<?xml version="1.0"?>\r
-<!DOCTYPE hibernate-mapping PUBLIC\r
- "-//Hibernate/Hibernate Mapping DTD 3.0//EN"\r
- "http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd">\r
-<hibernate-mapping package="org.argeo.slc.core.test">\r
- <class name="NumericTRId" table="NUMERIC_TR_ID">\r
-\r
- <id name="tid" column="T_ID">\r
- <generator class="native" />\r
- </id>\r
- <property name="value" column="VALUE" not-null="true"\r
- unique="true" />\r
- </class>\r
-</hibernate-mapping>
\ No newline at end of file
+++ /dev/null
-<?xml version="1.0"?>\r
-<!DOCTYPE hibernate-mapping PUBLIC\r
- "-//Hibernate/Hibernate Mapping DTD 3.0//EN"\r
- "http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd">\r
-<hibernate-mapping package="org.argeo.slc.core.test">\r
- <class name="SimpleResultPart" table="SIMPLE_RESULT_PART">\r
- <id name="tid" column="T_ID">\r
- <generator class="native" />\r
- </id>\r
- <property name="status" column="STATUS" not-null="true" />\r
- <property name="message" column="MESSAGE" not-null="true" />\r
- <property name="exception" column="EXCEPTION" not-null="false" />\r
- </class>\r
-</hibernate-mapping>
\ No newline at end of file
+++ /dev/null
-<?xml version="1.0"?>\r
-<!DOCTYPE hibernate-mapping PUBLIC\r
- "-//Hibernate/Hibernate Mapping DTD 3.0//EN"\r
- "http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd">\r
-<hibernate-mapping package="org.argeo.slc.core.test">\r
- <class name="TestResultId" table="TEST_RESULT_ID">\r
- <id name="tid" column="T_ID">\r
- <generator class="native" />\r
- </id>\r
- </class>\r
-</hibernate-mapping>
\ No newline at end of file
+++ /dev/null
-<?xml version="1.0"?>\r
-<!DOCTYPE hibernate-mapping PUBLIC\r
- "-//Hibernate/Hibernate Mapping DTD 3.0//EN"\r
- "http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd">\r
-<hibernate-mapping package="org.argeo.slc.core.test.tree">\r
- <class name="PartSubList" table="PART_SUB_LIST">\r
- <id name="tid" column="T_ID">\r
- <generator class="native" />\r
- </id>\r
- <list name="parts" cascade="all" lazy="false">\r
- <key column="PART_SUBLIST_ID" />\r
- <list-index column="INDX" />\r
-\r
- <one-to-many\r
- class="org.argeo.slc.core.test.SimpleResultPart" />\r
- </list>\r
- </class>\r
-</hibernate-mapping>
\ No newline at end of file
+++ /dev/null
-<?xml version="1.0"?>\r
-<!DOCTYPE hibernate-mapping PUBLIC\r
- "-//Hibernate/Hibernate Mapping DTD 3.0//EN"\r
- "http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd">\r
-<hibernate-mapping package="org.argeo.slc.core.test.tree">\r
- <class name="TreeTestResult" table="TREE_TEST_RESULT">\r
- <id name="tid" column="T_ID">\r
- <generator class="native" />\r
- </id>\r
-\r
- <property name="closeDate" column="CLOSE_DATE" type="timestamp"\r
- not-null="false" />\r
-\r
- <many-to-one name="numericResultId" unique="true"\r
- not-null="true" column="TEST_RESULT_ID" cascade="all" lazy="false" />\r
-\r
- <map name="resultParts" table="RESULT_PARTS_MAP" cascade="all"\r
- lazy="false" sort="natural">\r
- <key column="PARENT_ID" />\r
- <map-key-many-to-many\r
- class="org.argeo.slc.core.structure.tree.TreeSPath" column="PATH" />\r
- <many-to-many class="PartSubList" column="PART_SUB_LIST_ID"\r
- unique="true" lazy="false" />\r
- </map>\r
- </class>\r
-</hibernate-mapping>
\ No newline at end of file
+++ /dev/null
-Argeo SLC Site
\ No newline at end of file
+++ /dev/null
-package org.argeo.slc.hibernate.structure.tree;\r
-\r
-import org.argeo.slc.core.structure.tree.TreeSPath;\r
-import org.argeo.slc.dao.structure.tree.TreeSPathDao;\r
-import org.argeo.slc.unit.SpringBasedTestCase;\r
-\r
-public class TreeSPathDaoHibernateTest extends SpringBasedTestCase {\r
-\r
- public void testCreate() {\r
- TreeSPathDao treeSPathDao = (TreeSPathDao) getContext().getBean(\r
- "treeSPathDao");\r
-\r
- String pathParentStr = "/root/testParent";\r
- String pathStr = pathParentStr + "/test";\r
- TreeSPath path = TreeSPath.parseToCreatePath(pathStr);\r
- treeSPathDao.create(path);\r
-\r
- TreeSPath pathChild = treeSPathDao.getTreeSPath(pathStr);\r
- assertEquals(path, pathChild);\r
-\r
- TreeSPath pathParent = treeSPathDao.getTreeSPath(pathParentStr);\r
- assertEquals(path.getParent(), pathParent);\r
- }\r
-\r
- @Override\r
- protected String getApplicationContextLocation() {\r
- return "org/argeo/slc/hibernate/applicationContext.xml";\r
- }\r
-\r
-}\r
+++ /dev/null
-package org.argeo.slc.hibernate.structure.tree;\r
-\r
-import org.argeo.slc.core.structure.SimpleSElement;\r
-import org.argeo.slc.core.structure.tree.TreeSPath;\r
-import org.argeo.slc.core.structure.tree.TreeSRegistry;\r
-import org.argeo.slc.dao.structure.tree.TreeSPathDao;\r
-import org.argeo.slc.dao.structure.tree.TreeSRegistryDao;\r
-import org.argeo.slc.unit.SpringBasedTestCase;\r
-\r
-public class TreeSRegistryDaoHibernateTest extends SpringBasedTestCase {\r
-\r
- public void testCreate() {\r
- TreeSRegistryDao treeSRegistryDao = (TreeSRegistryDao) getContext()\r
- .getBean("treeSRegistryDao");\r
-\r
- TreeSPathDao treeSPathDao = (TreeSPathDao) getContext().getBean(\r
- "treeSPathDao");\r
-\r
- TreeSPath root = TreeSPath.parseToCreatePath("/root");\r
- TreeSPath path = root.createChild("test");\r
-\r
- treeSPathDao.create(root);\r
- treeSPathDao.create(path);\r
-\r
- TreeSRegistry registry = new TreeSRegistry();\r
- registry.setRoot(root);\r
- String desc = "desc";\r
- registry.register(path, new SimpleSElement(desc));\r
-\r
- treeSRegistryDao.create(registry);\r
-\r
- TreeSRegistry registry2 = treeSRegistryDao.getTreeSRegistry(path);\r
- SimpleSElement element = registry2.getElements().get(path);\r
- assertEquals(desc, element.getDescription());\r
- }\r
-\r
- @Override\r
- protected String getApplicationContextLocation() {\r
- return "org/argeo/slc/hibernate/applicationContext.xml";\r
- }\r
-\r
-}\r
+++ /dev/null
-package org.argeo.slc.hibernate.test.tree;\r
-\r
-import java.util.Date;\r
-\r
-import org.argeo.slc.core.structure.tree.TreeSPath;\r
-import org.argeo.slc.core.test.NumericTRId;\r
-import org.argeo.slc.core.test.SimpleResultPart;\r
-import org.argeo.slc.core.test.TestStatus;\r
-import org.argeo.slc.core.test.tree.PartSubList;\r
-import org.argeo.slc.core.test.tree.TreeTestResult;\r
-import org.argeo.slc.dao.structure.tree.TreeSPathDao;\r
-import org.argeo.slc.dao.test.TestResultDao;\r
-import org.argeo.slc.unit.SpringBasedTestCase;\r
-\r
-public class TreeTestResultDaoHibernateTest extends SpringBasedTestCase {\r
-\r
- public void testCreate() {\r
- TreeSPathDao treeSPathDao = (TreeSPathDao) getContext().getBean(\r
- "treeSPathDao");\r
-\r
- TestResultDao testResultDao = (TestResultDao) getContext().getBean(\r
- "testResultDao");\r
-\r
- String pathParentStr = "/root/testParent";\r
- String pathStr = pathParentStr + "/test";\r
- TreeSPath path = TreeSPath.parseToCreatePath(pathStr);\r
- treeSPathDao.create(path);\r
-\r
- TreeTestResult treeTestResult = new TreeTestResult();\r
- SimpleResultPart partPassed = new SimpleResultPart();\r
- String msgPassed = "message";\r
- partPassed.setStatus(TestStatus.PASSED);\r
- partPassed.setMessage(msgPassed);\r
-\r
- SimpleResultPart partFailed = new SimpleResultPart();\r
- String msgFailed = "too bad";\r
- partFailed.setStatus(TestStatus.FAILED);\r
- partFailed.setMessage(msgFailed);\r
-\r
- NumericTRId trId = new NumericTRId();\r
- trId.setValue(1l);\r
- treeTestResult.setNumericResultId(trId);\r
- treeTestResult.notifyCurrentPath(null, path);\r
- treeTestResult.addResultPart(partPassed);\r
- treeTestResult.addResultPart(partFailed);\r
-\r
- Date closeDate = new Date();\r
- treeTestResult.setCloseDate(closeDate);\r
-\r
- testResultDao.create(treeTestResult);\r
-\r
- TreeTestResult treeTestResult2 = (TreeTestResult) testResultDao\r
- .getTestResult(trId);\r
- PartSubList list = treeTestResult2.getResultParts().get(path);\r
-\r
- assertEquals(2, list.getParts().size());\r
- SimpleResultPart part0 = (SimpleResultPart) list.getParts().get(0);\r
- assertEquals(TestStatus.PASSED, (int) part0.getStatus());\r
- assertEquals(msgPassed, part0.getMessage());\r
-\r
- SimpleResultPart part1 = (SimpleResultPart) list.getParts().get(1);\r
- assertEquals(TestStatus.FAILED, (int) part1.getStatus());\r
- assertEquals(msgFailed, part1.getMessage());\r
-\r
- assertEquals(closeDate, treeTestResult2.getCloseDate());\r
- }\r
-\r
- @Override\r
- protected String getApplicationContextLocation() {\r
- return "org/argeo/slc/hibernate/applicationContext.xml";\r
- }\r
-\r
-}\r
+++ /dev/null
-# Set root logger level to DEBUG and its only appender to A1.\r
-log4j.rootLogger=INFO, console\r
-\r
-## Levels\r
-# Slc\r
-log4j.logger.org.argeo.slc=TRACE\r
-# Spring\r
-log4j.logger.org.springframework=INFO\r
-# Hibernate\r
-log4j.logger.org.hibernate=WARN\r
-#log4j.logger.org.hibernate.SQL=TRACE\r
-#log4j.logger.org.hibernate.tool.hbm2ddl=TRACE\r
-#log4j.logger.org.hibernate.type=TRACE\r
-\r
-\r
-## Appenders\r
-# A1 is set to be a ConsoleAppender.\r
-log4j.appender.console=org.apache.log4j.ConsoleAppender\r
-\r
-# A1 uses PatternLayout.\r
-log4j.appender.console.layout=org.apache.log4j.PatternLayout\r
-log4j.appender.console.layout.ConversionPattern= %-5p %d{ISO8601} %m - %c %F%L%n\r
-\r
+++ /dev/null
-<?xml version="1.0" encoding="UTF-8"?>\r
-<beans xmlns="http://www.springframework.org/schema/beans"\r
- xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"\r
- xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-2.0.xsd">\r
-\r
- <!-- Results -->\r
- <bean id="dataSource"\r
- class="org.springframework.jdbc.datasource.SingleConnectionDataSource"\r
- destroy-method="destroy">\r
- <property name="driverClassName" value="org.hsqldb.jdbcDriver" />\r
- <property name="url" value="jdbc:hsqldb:mem:test" />\r
- <property name="username" value="sa" />\r
- <property name="password" value="" />\r
- <property name="suppressClose" value="true" />\r
- </bean>\r
-\r
- <bean id="sessionFactory"\r
- class="org.springframework.orm.hibernate3.LocalSessionFactoryBean">\r
- <property name="dataSource" ref="dataSource" />\r
- <property name="mappingResources">\r
- <list>\r
- <value>\r
- org/argeo/slc/hibernate/structure/SimpleSElement.hbm.xml\r
- </value>\r
- <value>\r
- org/argeo/slc/hibernate/structure/tree/TreeSPath.hbm.xml\r
- </value>\r
- <value>\r
- org/argeo/slc/hibernate/structure/tree/TreeSRegistry.hbm.xml\r
- </value>\r
- <value>\r
- org/argeo/slc/hibernate/test/NumericTRId.hbm.xml\r
- </value>\r
- <value>\r
- org/argeo/slc/hibernate/test/SimpleResultPart.hbm.xml\r
- </value>\r
- <value>\r
- org/argeo/slc/hibernate/test/tree/TreeTestResult.hbm.xml\r
- </value>\r
- <value>\r
- org/argeo/slc/hibernate/test/tree/PartSubList.hbm.xml\r
- </value>\r
- </list>\r
- </property>\r
- <property name="hibernateProperties">\r
- <value>\r
- hibernate.dialect=org.hibernate.dialect.HSQLDialect\r
- hibernate.hbm2ddl.auto=create\r
- </value>\r
- </property>\r
- </bean>\r
-\r
- <bean id="treeSPathDao"\r
- class="org.argeo.slc.hibernate.structure.tree.TreeSPathDaoHibernate">\r
- <property name="sessionFactory" ref="sessionFactory" />\r
- </bean>\r
- \r
- <bean id="treeSRegistryDao"\r
- class="org.argeo.slc.hibernate.structure.tree.TreeSRegistryDaoHibernate">\r
- <property name="sessionFactory" ref="sessionFactory" />\r
- </bean>\r
- \r
- <bean id="testResultDao"\r
- class="org.argeo.slc.hibernate.test.tree.TestResultDaoHibernate">\r
- <property name="sessionFactory" ref="sessionFactory" />\r
- </bean>\r
-</beans>
\ No newline at end of file