Rename into Core
authorMathieu Baudier <mbaudier@argeo.org>
Sun, 2 Dec 2007 09:21:17 +0000 (09:21 +0000)
committerMathieu Baudier <mbaudier@argeo.org>
Sun, 2 Dec 2007 09:21:17 +0000 (09:21 +0000)
git-svn-id: https://svn.argeo.org/slc/trunk@807 4cfe0d0a-d680-48aa-b62c-e0a02a3f76cc

312 files changed:
org.argeo.slc.core/.classpath [new file with mode: 0644]
org.argeo.slc.core/.project [new file with mode: 0644]
org.argeo.slc.core/.settings/org.eclipse.jdt.core.prefs [new file with mode: 0644]
org.argeo.slc.core/build.xml [new file with mode: 0644]
org.argeo.slc.core/docs/com.capco.slc.murex.zargo.uml [new file with mode: 0644]
org.argeo.slc.core/docs/org.argeo.slc.zargo.uml [new file with mode: 0644]
org.argeo.slc.core/javadoc.xml [new file with mode: 0644]
org.argeo.slc.core/lib-src/ant-1.7.0-src.zip [new file with mode: 0644]
org.argeo.slc.core/lib-src/commons-io-1.3.2-sources.jar [new file with mode: 0644]
org.argeo.slc.core/lib-src/dbunit-2.2-sources.jar [new file with mode: 0644]
org.argeo.slc.core/lib-src/junit-3.8.2-sources.jar [new file with mode: 0644]
org.argeo.slc.core/lib-src/spring-2.0.6-src.zip [new file with mode: 0644]
org.argeo.slc.core/lib/ant-launcher.jar [new file with mode: 0644]
org.argeo.slc.core/lib/ant.jar [new file with mode: 0644]
org.argeo.slc.core/lib/antlr-2.7.6.jar [new file with mode: 0644]
org.argeo.slc.core/lib/asm-attrs.jar [new file with mode: 0644]
org.argeo.slc.core/lib/asm.jar [new file with mode: 0644]
org.argeo.slc.core/lib/cglib-2.1.3.jar [new file with mode: 0644]
org.argeo.slc.core/lib/commons-collections-2.1.1.jar [new file with mode: 0644]
org.argeo.slc.core/lib/commons-dbcp.jar [new file with mode: 0644]
org.argeo.slc.core/lib/commons-io-1.3.2.jar [new file with mode: 0644]
org.argeo.slc.core/lib/commons-lang.jar [new file with mode: 0644]
org.argeo.slc.core/lib/commons-logging.jar [new file with mode: 0644]
org.argeo.slc.core/lib/commons-pool.jar [new file with mode: 0644]
org.argeo.slc.core/lib/dbunit-2.2.jar [new file with mode: 0644]
org.argeo.slc.core/lib/dom4j-1.6.1.jar [new file with mode: 0644]
org.argeo.slc.core/lib/hibernate3.jar [new file with mode: 0644]
org.argeo.slc.core/lib/hsqldb.jar [new file with mode: 0644]
org.argeo.slc.core/lib/jta.jar [new file with mode: 0644]
org.argeo.slc.core/lib/junit-3.8.2.jar [new file with mode: 0644]
org.argeo.slc.core/lib/log4j-1.2.14.jar [new file with mode: 0644]
org.argeo.slc.core/lib/spring-2.0.6.jar [new file with mode: 0644]
org.argeo.slc.core/pom.xml [new file with mode: 0644]
org.argeo.slc.core/src/assembly/with-dependencies.xml [new file with mode: 0644]
org.argeo.slc.core/src/main/config/bin/slc [new file with mode: 0755]
org.argeo.slc.core/src/main/config/bin/slc.bat [new file with mode: 0644]
org.argeo.slc.core/src/main/config/include/ant/slc-factory-macrodefs.xml [new file with mode: 0644]
org.argeo.slc.core/src/main/config/include/ant/slc-factory-targets.xml [new file with mode: 0644]
org.argeo.slc.core/src/main/java/META-INF/services/org.apache.tools.ant.ProjectHelper [new file with mode: 0644]
org.argeo.slc.core/src/main/java/org/argeo/slc/ant/AntRegistryUtil.java [new file with mode: 0644]
org.argeo.slc.core/src/main/java/org/argeo/slc/ant/SlcAntConfig.java [new file with mode: 0644]
org.argeo.slc.core/src/main/java/org/argeo/slc/ant/SlcAntException.java [new file with mode: 0644]
org.argeo.slc.core/src/main/java/org/argeo/slc/ant/SlcProjectHelper.java [new file with mode: 0644]
org.argeo.slc.core/src/main/java/org/argeo/slc/ant/deploy/SlcDeployTask.java [new file with mode: 0644]
org.argeo.slc.core/src/main/java/org/argeo/slc/ant/deploy/package.html [new file with mode: 0644]
org.argeo.slc.core/src/main/java/org/argeo/slc/ant/package.html [new file with mode: 0644]
org.argeo.slc.core/src/main/java/org/argeo/slc/ant/spring/AbstractSpringArg.java [new file with mode: 0644]
org.argeo.slc.core/src/main/java/org/argeo/slc/ant/spring/AbstractSpringTask.java [new file with mode: 0644]
org.argeo.slc.core/src/main/java/org/argeo/slc/ant/spring/OverrideArg.java [new file with mode: 0644]
org.argeo.slc.core/src/main/java/org/argeo/slc/ant/spring/package.html [new file with mode: 0644]
org.argeo.slc.core/src/main/java/org/argeo/slc/ant/structure/SAwareTask.java [new file with mode: 0644]
org.argeo.slc.core/src/main/java/org/argeo/slc/ant/structure/package.html [new file with mode: 0644]
org.argeo.slc.core/src/main/java/org/argeo/slc/ant/test/SlcCloseTestResultTask.java [new file with mode: 0644]
org.argeo.slc.core/src/main/java/org/argeo/slc/ant/test/SlcReportTask.java [new file with mode: 0644]
org.argeo.slc.core/src/main/java/org/argeo/slc/ant/test/SlcTestTask.java [new file with mode: 0644]
org.argeo.slc.core/src/main/java/org/argeo/slc/ant/test/package.html [new file with mode: 0644]
org.argeo.slc.core/src/main/java/org/argeo/slc/core/SlcException.java [new file with mode: 0644]
org.argeo.slc.core/src/main/java/org/argeo/slc/core/UnsupportedException.java [new file with mode: 0644]
org.argeo.slc.core/src/main/java/org/argeo/slc/core/build/DistributionId.java [new file with mode: 0644]
org.argeo.slc.core/src/main/java/org/argeo/slc/core/build/VersionDistributionId.java [new file with mode: 0644]
org.argeo.slc.core/src/main/java/org/argeo/slc/core/build/package.html [new file with mode: 0644]
org.argeo.slc.core/src/main/java/org/argeo/slc/core/deploy/DeployedSystem.java [new file with mode: 0644]
org.argeo.slc.core/src/main/java/org/argeo/slc/core/deploy/DeployedSystemId.java [new file with mode: 0644]
org.argeo.slc.core/src/main/java/org/argeo/slc/core/deploy/Deployment.java [new file with mode: 0644]
org.argeo.slc.core/src/main/java/org/argeo/slc/core/deploy/DeploymentData.java [new file with mode: 0644]
org.argeo.slc.core/src/main/java/org/argeo/slc/core/deploy/ExecutableDeployment.java [new file with mode: 0644]
org.argeo.slc.core/src/main/java/org/argeo/slc/core/deploy/NumericDSId.java [new file with mode: 0644]
org.argeo.slc.core/src/main/java/org/argeo/slc/core/deploy/TargetData.java [new file with mode: 0644]
org.argeo.slc.core/src/main/java/org/argeo/slc/core/deploy/WritableDeployment.java [new file with mode: 0644]
org.argeo.slc.core/src/main/java/org/argeo/slc/core/deploy/package.html [new file with mode: 0644]
org.argeo.slc.core/src/main/java/org/argeo/slc/core/package.html [new file with mode: 0644]
org.argeo.slc.core/src/main/java/org/argeo/slc/core/structure/DefaultSRegistry.java [new file with mode: 0644]
org.argeo.slc.core/src/main/java/org/argeo/slc/core/structure/SimpleSElement.java [new file with mode: 0644]
org.argeo.slc.core/src/main/java/org/argeo/slc/core/structure/StructureAware.java [new file with mode: 0644]
org.argeo.slc.core/src/main/java/org/argeo/slc/core/structure/StructureElement.java [new file with mode: 0644]
org.argeo.slc.core/src/main/java/org/argeo/slc/core/structure/StructurePath.java [new file with mode: 0644]
org.argeo.slc.core/src/main/java/org/argeo/slc/core/structure/StructureRegistry.java [new file with mode: 0644]
org.argeo.slc.core/src/main/java/org/argeo/slc/core/structure/package.html [new file with mode: 0644]
org.argeo.slc.core/src/main/java/org/argeo/slc/core/structure/tree/TreeSPath.java [new file with mode: 0644]
org.argeo.slc.core/src/main/java/org/argeo/slc/core/structure/tree/TreeSRegistry.java [new file with mode: 0644]
org.argeo.slc.core/src/main/java/org/argeo/slc/core/structure/tree/package.html [new file with mode: 0644]
org.argeo.slc.core/src/main/java/org/argeo/slc/core/test/ExecutableTestRun.java [new file with mode: 0644]
org.argeo.slc.core/src/main/java/org/argeo/slc/core/test/IncompatibleTestDataException.java [new file with mode: 0644]
org.argeo.slc.core/src/main/java/org/argeo/slc/core/test/NumericTRId.java [new file with mode: 0644]
org.argeo.slc.core/src/main/java/org/argeo/slc/core/test/SimpleResultPart.java [new file with mode: 0644]
org.argeo.slc.core/src/main/java/org/argeo/slc/core/test/SimpleTestResult.java [new file with mode: 0644]
org.argeo.slc.core/src/main/java/org/argeo/slc/core/test/SimpleTestRun.java [new file with mode: 0644]
org.argeo.slc.core/src/main/java/org/argeo/slc/core/test/TestData.java [new file with mode: 0644]
org.argeo.slc.core/src/main/java/org/argeo/slc/core/test/TestDefinition.java [new file with mode: 0644]
org.argeo.slc.core/src/main/java/org/argeo/slc/core/test/TestReport.java [new file with mode: 0644]
org.argeo.slc.core/src/main/java/org/argeo/slc/core/test/TestResult.java [new file with mode: 0644]
org.argeo.slc.core/src/main/java/org/argeo/slc/core/test/TestResultId.java [new file with mode: 0644]
org.argeo.slc.core/src/main/java/org/argeo/slc/core/test/TestResultListener.java [new file with mode: 0644]
org.argeo.slc.core/src/main/java/org/argeo/slc/core/test/TestResultPart.java [new file with mode: 0644]
org.argeo.slc.core/src/main/java/org/argeo/slc/core/test/TestRun.java [new file with mode: 0644]
org.argeo.slc.core/src/main/java/org/argeo/slc/core/test/TestStatus.java [new file with mode: 0644]
org.argeo.slc.core/src/main/java/org/argeo/slc/core/test/WritableTestRun.java [new file with mode: 0644]
org.argeo.slc.core/src/main/java/org/argeo/slc/core/test/package.html [new file with mode: 0644]
org.argeo.slc.core/src/main/java/org/argeo/slc/core/test/tree/AsynchronousTreeTestResultListener.java [new file with mode: 0644]
org.argeo.slc.core/src/main/java/org/argeo/slc/core/test/tree/CompositeTreeTestDefinition.java [new file with mode: 0644]
org.argeo.slc.core/src/main/java/org/argeo/slc/core/test/tree/PartSubList.java [new file with mode: 0644]
org.argeo.slc.core/src/main/java/org/argeo/slc/core/test/tree/TreeTestResult.java [new file with mode: 0644]
org.argeo.slc.core/src/main/java/org/argeo/slc/core/test/tree/TreeTestResultLogger.java [new file with mode: 0644]
org.argeo.slc.core/src/main/java/org/argeo/slc/core/test/tree/TreeTestResultPersister.java [new file with mode: 0644]
org.argeo.slc.core/src/main/java/org/argeo/slc/core/test/tree/htmlreport/FullHtmlTreeReport.java [new file with mode: 0644]
org.argeo.slc.core/src/main/java/org/argeo/slc/core/test/tree/htmlreport/ResultPage.java [new file with mode: 0644]
org.argeo.slc.core/src/main/java/org/argeo/slc/core/test/tree/htmlreport/ResultsList.java [new file with mode: 0644]
org.argeo.slc.core/src/main/java/org/argeo/slc/core/test/tree/htmlreport/package.html [new file with mode: 0644]
org.argeo.slc.core/src/main/java/org/argeo/slc/core/test/tree/package.html [new file with mode: 0644]
org.argeo.slc.core/src/main/java/org/argeo/slc/dao/structure/SimpleSElementDao.java [new file with mode: 0644]
org.argeo.slc.core/src/main/java/org/argeo/slc/dao/structure/package.html [new file with mode: 0644]
org.argeo.slc.core/src/main/java/org/argeo/slc/dao/structure/tree/TreeSPathDao.java [new file with mode: 0644]
org.argeo.slc.core/src/main/java/org/argeo/slc/dao/structure/tree/TreeSRegistryDao.java [new file with mode: 0644]
org.argeo.slc.core/src/main/java/org/argeo/slc/dao/structure/tree/package.html [new file with mode: 0644]
org.argeo.slc.core/src/main/java/org/argeo/slc/dao/test/TestResultDao.java [new file with mode: 0644]
org.argeo.slc.core/src/main/java/org/argeo/slc/dao/test/package.html [new file with mode: 0644]
org.argeo.slc.core/src/main/java/org/argeo/slc/diff/DataInterpreter.java [new file with mode: 0644]
org.argeo.slc.core/src/main/java/org/argeo/slc/diff/Diff.java [new file with mode: 0644]
org.argeo.slc.core/src/main/java/org/argeo/slc/diff/DiffIssue.java [new file with mode: 0644]
org.argeo.slc.core/src/main/java/org/argeo/slc/diff/DiffKey.java [new file with mode: 0644]
org.argeo.slc.core/src/main/java/org/argeo/slc/diff/DiffMissing.java [new file with mode: 0644]
org.argeo.slc.core/src/main/java/org/argeo/slc/diff/DiffNotMatched.java [new file with mode: 0644]
org.argeo.slc.core/src/main/java/org/argeo/slc/diff/DiffPosition.java [new file with mode: 0644]
org.argeo.slc.core/src/main/java/org/argeo/slc/diff/DiffResult.java [new file with mode: 0644]
org.argeo.slc.core/src/main/java/org/argeo/slc/diff/RelatedFile.java [new file with mode: 0644]
org.argeo.slc.core/src/main/java/org/argeo/slc/diff/SimpleDiffResult.java [new file with mode: 0644]
org.argeo.slc.core/src/main/java/org/argeo/slc/diff/TableDiffPosition.java [new file with mode: 0644]
org.argeo.slc.core/src/main/java/org/argeo/slc/diff/Tolerance.java [new file with mode: 0644]
org.argeo.slc.core/src/main/java/org/argeo/slc/diff/XPathDiffPosition.java [new file with mode: 0644]
org.argeo.slc.core/src/main/java/org/argeo/slc/diff/package.html [new file with mode: 0644]
org.argeo.slc.core/src/main/java/org/argeo/slc/hibernate/structure/tree/TreeSPathDaoHibernate.java [new file with mode: 0644]
org.argeo.slc.core/src/main/java/org/argeo/slc/hibernate/structure/tree/TreeSRegistryDaoHibernate.java [new file with mode: 0644]
org.argeo.slc.core/src/main/java/org/argeo/slc/hibernate/structure/tree/package.html [new file with mode: 0644]
org.argeo.slc.core/src/main/java/org/argeo/slc/hibernate/test/tree/TestResultDaoHibernate.java [new file with mode: 0644]
org.argeo.slc.core/src/main/java/org/argeo/slc/hibernate/test/tree/package.html [new file with mode: 0644]
org.argeo.slc.core/src/main/java/org/argeo/slc/unit/DbModel.java [new file with mode: 0644]
org.argeo.slc.core/src/main/java/org/argeo/slc/unit/IndependentDbTestCase.java [new file with mode: 0644]
org.argeo.slc.core/src/main/java/org/argeo/slc/unit/SpringBasedTestCase.java [new file with mode: 0644]
org.argeo.slc.core/src/main/java/org/argeo/slc/unit/package.html [new file with mode: 0644]
org.argeo.slc.core/src/main/resources/org/argeo/slc/ant/taskdefs.properties [new file with mode: 0644]
org.argeo.slc.core/src/main/resources/org/argeo/slc/core/test/tree/htmlreport/index.html [new file with mode: 0644]
org.argeo.slc.core/src/main/resources/org/argeo/slc/core/test/tree/htmlreport/style.css [new file with mode: 0644]
org.argeo.slc.core/src/main/resources/org/argeo/slc/hibernate/structure/SimpleSElement.hbm.xml [new file with mode: 0644]
org.argeo.slc.core/src/main/resources/org/argeo/slc/hibernate/structure/tree/TreeSPath.hbm.xml [new file with mode: 0644]
org.argeo.slc.core/src/main/resources/org/argeo/slc/hibernate/structure/tree/TreeSRegistry.hbm.xml [new file with mode: 0644]
org.argeo.slc.core/src/main/resources/org/argeo/slc/hibernate/test/NumericTRId.hbm.xml [new file with mode: 0644]
org.argeo.slc.core/src/main/resources/org/argeo/slc/hibernate/test/SimpleResultPart.hbm.xml [new file with mode: 0644]
org.argeo.slc.core/src/main/resources/org/argeo/slc/hibernate/test/TestResultId.hbm.xml [new file with mode: 0644]
org.argeo.slc.core/src/main/resources/org/argeo/slc/hibernate/test/tree/PartSubList.hbm.xml [new file with mode: 0644]
org.argeo.slc.core/src/main/resources/org/argeo/slc/hibernate/test/tree/TreeTestResult.hbm.xml [new file with mode: 0644]
org.argeo.slc.core/src/site/apt/index.apt [new file with mode: 0644]
org.argeo.slc.core/src/test/java/org/argeo/slc/hibernate/structure/tree/TreeSPathDaoHibernateTest.java [new file with mode: 0644]
org.argeo.slc.core/src/test/java/org/argeo/slc/hibernate/structure/tree/TreeSRegistryDaoHibernateTest.java [new file with mode: 0644]
org.argeo.slc.core/src/test/java/org/argeo/slc/hibernate/test/tree/TreeTestResultDaoHibernateTest.java [new file with mode: 0644]
org.argeo.slc.core/src/test/resources/log4j.properties [new file with mode: 0644]
org.argeo.slc.core/src/test/resources/org/argeo/slc/hibernate/applicationContext.xml [new file with mode: 0644]
org.argeo.slc/.classpath [deleted file]
org.argeo.slc/.project [deleted file]
org.argeo.slc/.settings/org.eclipse.jdt.core.prefs [deleted file]
org.argeo.slc/build.xml [deleted file]
org.argeo.slc/docs/com.capco.slc.murex.zargo.uml [deleted file]
org.argeo.slc/docs/org.argeo.slc.zargo.uml [deleted file]
org.argeo.slc/javadoc.xml [deleted file]
org.argeo.slc/lib-src/ant-1.7.0-src.zip [deleted file]
org.argeo.slc/lib-src/commons-io-1.3.2-sources.jar [deleted file]
org.argeo.slc/lib-src/dbunit-2.2-sources.jar [deleted file]
org.argeo.slc/lib-src/junit-3.8.2-sources.jar [deleted file]
org.argeo.slc/lib-src/spring-2.0.6-src.zip [deleted file]
org.argeo.slc/lib/ant-launcher.jar [deleted file]
org.argeo.slc/lib/ant.jar [deleted file]
org.argeo.slc/lib/antlr-2.7.6.jar [deleted file]
org.argeo.slc/lib/asm-attrs.jar [deleted file]
org.argeo.slc/lib/asm.jar [deleted file]
org.argeo.slc/lib/cglib-2.1.3.jar [deleted file]
org.argeo.slc/lib/commons-collections-2.1.1.jar [deleted file]
org.argeo.slc/lib/commons-dbcp.jar [deleted file]
org.argeo.slc/lib/commons-io-1.3.2.jar [deleted file]
org.argeo.slc/lib/commons-lang.jar [deleted file]
org.argeo.slc/lib/commons-logging.jar [deleted file]
org.argeo.slc/lib/commons-pool.jar [deleted file]
org.argeo.slc/lib/dbunit-2.2.jar [deleted file]
org.argeo.slc/lib/dom4j-1.6.1.jar [deleted file]
org.argeo.slc/lib/hibernate3.jar [deleted file]
org.argeo.slc/lib/hsqldb.jar [deleted file]
org.argeo.slc/lib/jta.jar [deleted file]
org.argeo.slc/lib/junit-3.8.2.jar [deleted file]
org.argeo.slc/lib/log4j-1.2.14.jar [deleted file]
org.argeo.slc/lib/spring-2.0.6.jar [deleted file]
org.argeo.slc/pom.xml [deleted file]
org.argeo.slc/src/assembly/with-dependencies.xml [deleted file]
org.argeo.slc/src/main/config/bin/slc [deleted file]
org.argeo.slc/src/main/config/bin/slc.bat [deleted file]
org.argeo.slc/src/main/config/include/ant/slc-factory-macrodefs.xml [deleted file]
org.argeo.slc/src/main/config/include/ant/slc-factory-targets.xml [deleted file]
org.argeo.slc/src/main/java/META-INF/services/org.apache.tools.ant.ProjectHelper [deleted file]
org.argeo.slc/src/main/java/org/argeo/slc/ant/AntRegistryUtil.java [deleted file]
org.argeo.slc/src/main/java/org/argeo/slc/ant/SlcAntConfig.java [deleted file]
org.argeo.slc/src/main/java/org/argeo/slc/ant/SlcAntException.java [deleted file]
org.argeo.slc/src/main/java/org/argeo/slc/ant/SlcProjectHelper.java [deleted file]
org.argeo.slc/src/main/java/org/argeo/slc/ant/deploy/SlcDeployTask.java [deleted file]
org.argeo.slc/src/main/java/org/argeo/slc/ant/deploy/package.html [deleted file]
org.argeo.slc/src/main/java/org/argeo/slc/ant/package.html [deleted file]
org.argeo.slc/src/main/java/org/argeo/slc/ant/spring/AbstractSpringArg.java [deleted file]
org.argeo.slc/src/main/java/org/argeo/slc/ant/spring/AbstractSpringTask.java [deleted file]
org.argeo.slc/src/main/java/org/argeo/slc/ant/spring/OverrideArg.java [deleted file]
org.argeo.slc/src/main/java/org/argeo/slc/ant/spring/package.html [deleted file]
org.argeo.slc/src/main/java/org/argeo/slc/ant/structure/SAwareTask.java [deleted file]
org.argeo.slc/src/main/java/org/argeo/slc/ant/structure/package.html [deleted file]
org.argeo.slc/src/main/java/org/argeo/slc/ant/test/SlcCloseTestResultTask.java [deleted file]
org.argeo.slc/src/main/java/org/argeo/slc/ant/test/SlcReportTask.java [deleted file]
org.argeo.slc/src/main/java/org/argeo/slc/ant/test/SlcTestTask.java [deleted file]
org.argeo.slc/src/main/java/org/argeo/slc/ant/test/package.html [deleted file]
org.argeo.slc/src/main/java/org/argeo/slc/core/SlcException.java [deleted file]
org.argeo.slc/src/main/java/org/argeo/slc/core/UnsupportedException.java [deleted file]
org.argeo.slc/src/main/java/org/argeo/slc/core/build/DistributionId.java [deleted file]
org.argeo.slc/src/main/java/org/argeo/slc/core/build/VersionDistributionId.java [deleted file]
org.argeo.slc/src/main/java/org/argeo/slc/core/build/package.html [deleted file]
org.argeo.slc/src/main/java/org/argeo/slc/core/deploy/DeployedSystem.java [deleted file]
org.argeo.slc/src/main/java/org/argeo/slc/core/deploy/DeployedSystemId.java [deleted file]
org.argeo.slc/src/main/java/org/argeo/slc/core/deploy/Deployment.java [deleted file]
org.argeo.slc/src/main/java/org/argeo/slc/core/deploy/DeploymentData.java [deleted file]
org.argeo.slc/src/main/java/org/argeo/slc/core/deploy/ExecutableDeployment.java [deleted file]
org.argeo.slc/src/main/java/org/argeo/slc/core/deploy/NumericDSId.java [deleted file]
org.argeo.slc/src/main/java/org/argeo/slc/core/deploy/TargetData.java [deleted file]
org.argeo.slc/src/main/java/org/argeo/slc/core/deploy/WritableDeployment.java [deleted file]
org.argeo.slc/src/main/java/org/argeo/slc/core/deploy/package.html [deleted file]
org.argeo.slc/src/main/java/org/argeo/slc/core/package.html [deleted file]
org.argeo.slc/src/main/java/org/argeo/slc/core/structure/DefaultSRegistry.java [deleted file]
org.argeo.slc/src/main/java/org/argeo/slc/core/structure/SimpleSElement.java [deleted file]
org.argeo.slc/src/main/java/org/argeo/slc/core/structure/StructureAware.java [deleted file]
org.argeo.slc/src/main/java/org/argeo/slc/core/structure/StructureElement.java [deleted file]
org.argeo.slc/src/main/java/org/argeo/slc/core/structure/StructurePath.java [deleted file]
org.argeo.slc/src/main/java/org/argeo/slc/core/structure/StructureRegistry.java [deleted file]
org.argeo.slc/src/main/java/org/argeo/slc/core/structure/package.html [deleted file]
org.argeo.slc/src/main/java/org/argeo/slc/core/structure/tree/TreeSPath.java [deleted file]
org.argeo.slc/src/main/java/org/argeo/slc/core/structure/tree/TreeSRegistry.java [deleted file]
org.argeo.slc/src/main/java/org/argeo/slc/core/structure/tree/package.html [deleted file]
org.argeo.slc/src/main/java/org/argeo/slc/core/test/ExecutableTestRun.java [deleted file]
org.argeo.slc/src/main/java/org/argeo/slc/core/test/IncompatibleTestDataException.java [deleted file]
org.argeo.slc/src/main/java/org/argeo/slc/core/test/NumericTRId.java [deleted file]
org.argeo.slc/src/main/java/org/argeo/slc/core/test/SimpleResultPart.java [deleted file]
org.argeo.slc/src/main/java/org/argeo/slc/core/test/SimpleTestResult.java [deleted file]
org.argeo.slc/src/main/java/org/argeo/slc/core/test/SimpleTestRun.java [deleted file]
org.argeo.slc/src/main/java/org/argeo/slc/core/test/TestData.java [deleted file]
org.argeo.slc/src/main/java/org/argeo/slc/core/test/TestDefinition.java [deleted file]
org.argeo.slc/src/main/java/org/argeo/slc/core/test/TestReport.java [deleted file]
org.argeo.slc/src/main/java/org/argeo/slc/core/test/TestResult.java [deleted file]
org.argeo.slc/src/main/java/org/argeo/slc/core/test/TestResultId.java [deleted file]
org.argeo.slc/src/main/java/org/argeo/slc/core/test/TestResultListener.java [deleted file]
org.argeo.slc/src/main/java/org/argeo/slc/core/test/TestResultPart.java [deleted file]
org.argeo.slc/src/main/java/org/argeo/slc/core/test/TestRun.java [deleted file]
org.argeo.slc/src/main/java/org/argeo/slc/core/test/TestStatus.java [deleted file]
org.argeo.slc/src/main/java/org/argeo/slc/core/test/WritableTestRun.java [deleted file]
org.argeo.slc/src/main/java/org/argeo/slc/core/test/package.html [deleted file]
org.argeo.slc/src/main/java/org/argeo/slc/core/test/tree/AsynchronousTreeTestResultListener.java [deleted file]
org.argeo.slc/src/main/java/org/argeo/slc/core/test/tree/CompositeTreeTestDefinition.java [deleted file]
org.argeo.slc/src/main/java/org/argeo/slc/core/test/tree/PartSubList.java [deleted file]
org.argeo.slc/src/main/java/org/argeo/slc/core/test/tree/TreeTestResult.java [deleted file]
org.argeo.slc/src/main/java/org/argeo/slc/core/test/tree/TreeTestResultLogger.java [deleted file]
org.argeo.slc/src/main/java/org/argeo/slc/core/test/tree/TreeTestResultPersister.java [deleted file]
org.argeo.slc/src/main/java/org/argeo/slc/core/test/tree/htmlreport/FullHtmlTreeReport.java [deleted file]
org.argeo.slc/src/main/java/org/argeo/slc/core/test/tree/htmlreport/ResultPage.java [deleted file]
org.argeo.slc/src/main/java/org/argeo/slc/core/test/tree/htmlreport/ResultsList.java [deleted file]
org.argeo.slc/src/main/java/org/argeo/slc/core/test/tree/htmlreport/package.html [deleted file]
org.argeo.slc/src/main/java/org/argeo/slc/core/test/tree/package.html [deleted file]
org.argeo.slc/src/main/java/org/argeo/slc/dao/structure/SimpleSElementDao.java [deleted file]
org.argeo.slc/src/main/java/org/argeo/slc/dao/structure/package.html [deleted file]
org.argeo.slc/src/main/java/org/argeo/slc/dao/structure/tree/TreeSPathDao.java [deleted file]
org.argeo.slc/src/main/java/org/argeo/slc/dao/structure/tree/TreeSRegistryDao.java [deleted file]
org.argeo.slc/src/main/java/org/argeo/slc/dao/structure/tree/package.html [deleted file]
org.argeo.slc/src/main/java/org/argeo/slc/dao/test/TestResultDao.java [deleted file]
org.argeo.slc/src/main/java/org/argeo/slc/dao/test/package.html [deleted file]
org.argeo.slc/src/main/java/org/argeo/slc/diff/DataInterpreter.java [deleted file]
org.argeo.slc/src/main/java/org/argeo/slc/diff/Diff.java [deleted file]
org.argeo.slc/src/main/java/org/argeo/slc/diff/DiffIssue.java [deleted file]
org.argeo.slc/src/main/java/org/argeo/slc/diff/DiffKey.java [deleted file]
org.argeo.slc/src/main/java/org/argeo/slc/diff/DiffMissing.java [deleted file]
org.argeo.slc/src/main/java/org/argeo/slc/diff/DiffNotMatched.java [deleted file]
org.argeo.slc/src/main/java/org/argeo/slc/diff/DiffPosition.java [deleted file]
org.argeo.slc/src/main/java/org/argeo/slc/diff/DiffResult.java [deleted file]
org.argeo.slc/src/main/java/org/argeo/slc/diff/RelatedFile.java [deleted file]
org.argeo.slc/src/main/java/org/argeo/slc/diff/SimpleDiffResult.java [deleted file]
org.argeo.slc/src/main/java/org/argeo/slc/diff/TableDiffPosition.java [deleted file]
org.argeo.slc/src/main/java/org/argeo/slc/diff/Tolerance.java [deleted file]
org.argeo.slc/src/main/java/org/argeo/slc/diff/XPathDiffPosition.java [deleted file]
org.argeo.slc/src/main/java/org/argeo/slc/diff/package.html [deleted file]
org.argeo.slc/src/main/java/org/argeo/slc/hibernate/structure/tree/TreeSPathDaoHibernate.java [deleted file]
org.argeo.slc/src/main/java/org/argeo/slc/hibernate/structure/tree/TreeSRegistryDaoHibernate.java [deleted file]
org.argeo.slc/src/main/java/org/argeo/slc/hibernate/structure/tree/package.html [deleted file]
org.argeo.slc/src/main/java/org/argeo/slc/hibernate/test/tree/TestResultDaoHibernate.java [deleted file]
org.argeo.slc/src/main/java/org/argeo/slc/hibernate/test/tree/package.html [deleted file]
org.argeo.slc/src/main/java/org/argeo/slc/unit/DbModel.java [deleted file]
org.argeo.slc/src/main/java/org/argeo/slc/unit/IndependentDbTestCase.java [deleted file]
org.argeo.slc/src/main/java/org/argeo/slc/unit/SpringBasedTestCase.java [deleted file]
org.argeo.slc/src/main/java/org/argeo/slc/unit/package.html [deleted file]
org.argeo.slc/src/main/resources/org/argeo/slc/ant/taskdefs.properties [deleted file]
org.argeo.slc/src/main/resources/org/argeo/slc/core/test/tree/htmlreport/index.html [deleted file]
org.argeo.slc/src/main/resources/org/argeo/slc/core/test/tree/htmlreport/style.css [deleted file]
org.argeo.slc/src/main/resources/org/argeo/slc/hibernate/structure/SimpleSElement.hbm.xml [deleted file]
org.argeo.slc/src/main/resources/org/argeo/slc/hibernate/structure/tree/TreeSPath.hbm.xml [deleted file]
org.argeo.slc/src/main/resources/org/argeo/slc/hibernate/structure/tree/TreeSRegistry.hbm.xml [deleted file]
org.argeo.slc/src/main/resources/org/argeo/slc/hibernate/test/NumericTRId.hbm.xml [deleted file]
org.argeo.slc/src/main/resources/org/argeo/slc/hibernate/test/SimpleResultPart.hbm.xml [deleted file]
org.argeo.slc/src/main/resources/org/argeo/slc/hibernate/test/TestResultId.hbm.xml [deleted file]
org.argeo.slc/src/main/resources/org/argeo/slc/hibernate/test/tree/PartSubList.hbm.xml [deleted file]
org.argeo.slc/src/main/resources/org/argeo/slc/hibernate/test/tree/TreeTestResult.hbm.xml [deleted file]
org.argeo.slc/src/site/apt/index.apt [deleted file]
org.argeo.slc/src/test/java/org/argeo/slc/hibernate/structure/tree/TreeSPathDaoHibernateTest.java [deleted file]
org.argeo.slc/src/test/java/org/argeo/slc/hibernate/structure/tree/TreeSRegistryDaoHibernateTest.java [deleted file]
org.argeo.slc/src/test/java/org/argeo/slc/hibernate/test/tree/TreeTestResultDaoHibernateTest.java [deleted file]
org.argeo.slc/src/test/resources/log4j.properties [deleted file]
org.argeo.slc/src/test/resources/org/argeo/slc/hibernate/applicationContext.xml [deleted file]

diff --git a/org.argeo.slc.core/.classpath b/org.argeo.slc.core/.classpath
new file mode 100644 (file)
index 0000000..d439082
--- /dev/null
@@ -0,0 +1,10 @@
+<?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
diff --git a/org.argeo.slc.core/.project b/org.argeo.slc.core/.project
new file mode 100644 (file)
index 0000000..810d379
--- /dev/null
@@ -0,0 +1,23 @@
+<?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
diff --git a/org.argeo.slc.core/.settings/org.eclipse.jdt.core.prefs b/org.argeo.slc.core/.settings/org.eclipse.jdt.core.prefs
new file mode 100644 (file)
index 0000000..1485b02
--- /dev/null
@@ -0,0 +1,23 @@
+#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
diff --git a/org.argeo.slc.core/build.xml b/org.argeo.slc.core/build.xml
new file mode 100644 (file)
index 0000000..cacca25
--- /dev/null
@@ -0,0 +1,7 @@
+<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
diff --git a/org.argeo.slc.core/docs/com.capco.slc.murex.zargo.uml b/org.argeo.slc.core/docs/com.capco.slc.murex.zargo.uml
new file mode 100644 (file)
index 0000000..f54ddcd
--- /dev/null
@@ -0,0 +1,2964 @@
+<?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
diff --git a/org.argeo.slc.core/docs/org.argeo.slc.zargo.uml b/org.argeo.slc.core/docs/org.argeo.slc.zargo.uml
new file mode 100644 (file)
index 0000000..7dfee13
--- /dev/null
@@ -0,0 +1,7714 @@
+<?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&apos;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&apos;utilisation 1"\r
+>\r
+</pgml>\r
+<todo>\r
+<todolist>\r
+</todolist>\r
+<resolvedcritics>\r
+</resolvedcritics>\r
+</todo>\r
+</uml>\r
diff --git a/org.argeo.slc.core/javadoc.xml b/org.argeo.slc.core/javadoc.xml
new file mode 100644 (file)
index 0000000..ccfaa6c
--- /dev/null
@@ -0,0 +1,6 @@
+<?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
diff --git a/org.argeo.slc.core/lib-src/ant-1.7.0-src.zip b/org.argeo.slc.core/lib-src/ant-1.7.0-src.zip
new file mode 100644 (file)
index 0000000..a170b02
Binary files /dev/null and b/org.argeo.slc.core/lib-src/ant-1.7.0-src.zip differ
diff --git a/org.argeo.slc.core/lib-src/commons-io-1.3.2-sources.jar b/org.argeo.slc.core/lib-src/commons-io-1.3.2-sources.jar
new file mode 100644 (file)
index 0000000..b383cf3
Binary files /dev/null and b/org.argeo.slc.core/lib-src/commons-io-1.3.2-sources.jar differ
diff --git a/org.argeo.slc.core/lib-src/dbunit-2.2-sources.jar b/org.argeo.slc.core/lib-src/dbunit-2.2-sources.jar
new file mode 100644 (file)
index 0000000..e22c257
Binary files /dev/null and b/org.argeo.slc.core/lib-src/dbunit-2.2-sources.jar differ
diff --git a/org.argeo.slc.core/lib-src/junit-3.8.2-sources.jar b/org.argeo.slc.core/lib-src/junit-3.8.2-sources.jar
new file mode 100644 (file)
index 0000000..28ea5fc
Binary files /dev/null and b/org.argeo.slc.core/lib-src/junit-3.8.2-sources.jar differ
diff --git a/org.argeo.slc.core/lib-src/spring-2.0.6-src.zip b/org.argeo.slc.core/lib-src/spring-2.0.6-src.zip
new file mode 100644 (file)
index 0000000..d88e1ff
Binary files /dev/null and b/org.argeo.slc.core/lib-src/spring-2.0.6-src.zip differ
diff --git a/org.argeo.slc.core/lib/ant-launcher.jar b/org.argeo.slc.core/lib/ant-launcher.jar
new file mode 100644 (file)
index 0000000..12a1e78
Binary files /dev/null and b/org.argeo.slc.core/lib/ant-launcher.jar differ
diff --git a/org.argeo.slc.core/lib/ant.jar b/org.argeo.slc.core/lib/ant.jar
new file mode 100644 (file)
index 0000000..0a56a58
Binary files /dev/null and b/org.argeo.slc.core/lib/ant.jar differ
diff --git a/org.argeo.slc.core/lib/antlr-2.7.6.jar b/org.argeo.slc.core/lib/antlr-2.7.6.jar
new file mode 100644 (file)
index 0000000..3702b64
Binary files /dev/null and b/org.argeo.slc.core/lib/antlr-2.7.6.jar differ
diff --git a/org.argeo.slc.core/lib/asm-attrs.jar b/org.argeo.slc.core/lib/asm-attrs.jar
new file mode 100644 (file)
index 0000000..f07bcb2
Binary files /dev/null and b/org.argeo.slc.core/lib/asm-attrs.jar differ
diff --git a/org.argeo.slc.core/lib/asm.jar b/org.argeo.slc.core/lib/asm.jar
new file mode 100644 (file)
index 0000000..ee0c7cc
Binary files /dev/null and b/org.argeo.slc.core/lib/asm.jar differ
diff --git a/org.argeo.slc.core/lib/cglib-2.1.3.jar b/org.argeo.slc.core/lib/cglib-2.1.3.jar
new file mode 100644 (file)
index 0000000..ddfbdb0
Binary files /dev/null and b/org.argeo.slc.core/lib/cglib-2.1.3.jar differ
diff --git a/org.argeo.slc.core/lib/commons-collections-2.1.1.jar b/org.argeo.slc.core/lib/commons-collections-2.1.1.jar
new file mode 100644 (file)
index 0000000..3272f2b
Binary files /dev/null and b/org.argeo.slc.core/lib/commons-collections-2.1.1.jar differ
diff --git a/org.argeo.slc.core/lib/commons-dbcp.jar b/org.argeo.slc.core/lib/commons-dbcp.jar
new file mode 100644 (file)
index 0000000..faea056
Binary files /dev/null and b/org.argeo.slc.core/lib/commons-dbcp.jar differ
diff --git a/org.argeo.slc.core/lib/commons-io-1.3.2.jar b/org.argeo.slc.core/lib/commons-io-1.3.2.jar
new file mode 100644 (file)
index 0000000..865c9e4
Binary files /dev/null and b/org.argeo.slc.core/lib/commons-io-1.3.2.jar differ
diff --git a/org.argeo.slc.core/lib/commons-lang.jar b/org.argeo.slc.core/lib/commons-lang.jar
new file mode 100644 (file)
index 0000000..87b80ab
Binary files /dev/null and b/org.argeo.slc.core/lib/commons-lang.jar differ
diff --git a/org.argeo.slc.core/lib/commons-logging.jar b/org.argeo.slc.core/lib/commons-logging.jar
new file mode 100644 (file)
index 0000000..2ff9bbd
Binary files /dev/null and b/org.argeo.slc.core/lib/commons-logging.jar differ
diff --git a/org.argeo.slc.core/lib/commons-pool.jar b/org.argeo.slc.core/lib/commons-pool.jar
new file mode 100644 (file)
index 0000000..e8de327
Binary files /dev/null and b/org.argeo.slc.core/lib/commons-pool.jar differ
diff --git a/org.argeo.slc.core/lib/dbunit-2.2.jar b/org.argeo.slc.core/lib/dbunit-2.2.jar
new file mode 100644 (file)
index 0000000..6db27bc
Binary files /dev/null and b/org.argeo.slc.core/lib/dbunit-2.2.jar differ
diff --git a/org.argeo.slc.core/lib/dom4j-1.6.1.jar b/org.argeo.slc.core/lib/dom4j-1.6.1.jar
new file mode 100644 (file)
index 0000000..c8c4dbb
Binary files /dev/null and b/org.argeo.slc.core/lib/dom4j-1.6.1.jar differ
diff --git a/org.argeo.slc.core/lib/hibernate3.jar b/org.argeo.slc.core/lib/hibernate3.jar
new file mode 100644 (file)
index 0000000..b600972
Binary files /dev/null and b/org.argeo.slc.core/lib/hibernate3.jar differ
diff --git a/org.argeo.slc.core/lib/hsqldb.jar b/org.argeo.slc.core/lib/hsqldb.jar
new file mode 100644 (file)
index 0000000..dc3055e
Binary files /dev/null and b/org.argeo.slc.core/lib/hsqldb.jar differ
diff --git a/org.argeo.slc.core/lib/jta.jar b/org.argeo.slc.core/lib/jta.jar
new file mode 100644 (file)
index 0000000..ffa3c5b
Binary files /dev/null and b/org.argeo.slc.core/lib/jta.jar differ
diff --git a/org.argeo.slc.core/lib/junit-3.8.2.jar b/org.argeo.slc.core/lib/junit-3.8.2.jar
new file mode 100644 (file)
index 0000000..c8f711d
Binary files /dev/null and b/org.argeo.slc.core/lib/junit-3.8.2.jar differ
diff --git a/org.argeo.slc.core/lib/log4j-1.2.14.jar b/org.argeo.slc.core/lib/log4j-1.2.14.jar
new file mode 100644 (file)
index 0000000..6251307
Binary files /dev/null and b/org.argeo.slc.core/lib/log4j-1.2.14.jar differ
diff --git a/org.argeo.slc.core/lib/spring-2.0.6.jar b/org.argeo.slc.core/lib/spring-2.0.6.jar
new file mode 100644 (file)
index 0000000..88d4581
Binary files /dev/null and b/org.argeo.slc.core/lib/spring-2.0.6.jar differ
diff --git a/org.argeo.slc.core/pom.xml b/org.argeo.slc.core/pom.xml
new file mode 100644 (file)
index 0000000..0555c11
--- /dev/null
@@ -0,0 +1,191 @@
+<?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
diff --git a/org.argeo.slc.core/src/assembly/with-dependencies.xml b/org.argeo.slc.core/src/assembly/with-dependencies.xml
new file mode 100644 (file)
index 0000000..821bbce
--- /dev/null
@@ -0,0 +1,37 @@
+<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
diff --git a/org.argeo.slc.core/src/main/config/bin/slc b/org.argeo.slc.core/src/main/config/bin/slc
new file mode 100755 (executable)
index 0000000..bcc63c8
--- /dev/null
@@ -0,0 +1,326 @@
+#! /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
diff --git a/org.argeo.slc.core/src/main/config/bin/slc.bat b/org.argeo.slc.core/src/main/config/bin/slc.bat
new file mode 100644 (file)
index 0000000..f8fb7d5
--- /dev/null
@@ -0,0 +1,226 @@
+@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
diff --git a/org.argeo.slc.core/src/main/config/include/ant/slc-factory-macrodefs.xml b/org.argeo.slc.core/src/main/config/include/ant/slc-factory-macrodefs.xml
new file mode 100644 (file)
index 0000000..4cc0436
--- /dev/null
@@ -0,0 +1,94 @@
+<!--\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
diff --git a/org.argeo.slc.core/src/main/config/include/ant/slc-factory-targets.xml b/org.argeo.slc.core/src/main/config/include/ant/slc-factory-targets.xml
new file mode 100644 (file)
index 0000000..b76dbcb
--- /dev/null
@@ -0,0 +1,233 @@
+<!--\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
diff --git a/org.argeo.slc.core/src/main/java/META-INF/services/org.apache.tools.ant.ProjectHelper b/org.argeo.slc.core/src/main/java/META-INF/services/org.apache.tools.ant.ProjectHelper
new file mode 100644 (file)
index 0000000..1c222d5
--- /dev/null
@@ -0,0 +1 @@
+org.argeo.slc.ant.SlcProjectHelper
\ No newline at end of file
diff --git a/org.argeo.slc.core/src/main/java/org/argeo/slc/ant/AntRegistryUtil.java b/org.argeo.slc.core/src/main/java/org/argeo/slc/ant/AntRegistryUtil.java
new file mode 100644 (file)
index 0000000..c73b590
--- /dev/null
@@ -0,0 +1,74 @@
+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
diff --git a/org.argeo.slc.core/src/main/java/org/argeo/slc/ant/SlcAntConfig.java b/org.argeo.slc.core/src/main/java/org/argeo/slc/ant/SlcAntConfig.java
new file mode 100644 (file)
index 0000000..6f805a7
--- /dev/null
@@ -0,0 +1,339 @@
+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
diff --git a/org.argeo.slc.core/src/main/java/org/argeo/slc/ant/SlcAntException.java b/org.argeo.slc.core/src/main/java/org/argeo/slc/ant/SlcAntException.java
new file mode 100644 (file)
index 0000000..854df33
--- /dev/null
@@ -0,0 +1,19 @@
+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
diff --git a/org.argeo.slc.core/src/main/java/org/argeo/slc/ant/SlcProjectHelper.java b/org.argeo.slc.core/src/main/java/org/argeo/slc/ant/SlcProjectHelper.java
new file mode 100644 (file)
index 0000000..4cc2d9d
--- /dev/null
@@ -0,0 +1,168 @@
+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
diff --git a/org.argeo.slc.core/src/main/java/org/argeo/slc/ant/deploy/SlcDeployTask.java b/org.argeo.slc.core/src/main/java/org/argeo/slc/ant/deploy/SlcDeployTask.java
new file mode 100644 (file)
index 0000000..36c2254
--- /dev/null
@@ -0,0 +1,75 @@
+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
diff --git a/org.argeo.slc.core/src/main/java/org/argeo/slc/ant/deploy/package.html b/org.argeo.slc.core/src/main/java/org/argeo/slc/ant/deploy/package.html
new file mode 100644 (file)
index 0000000..76582d1
--- /dev/null
@@ -0,0 +1,6 @@
+<html>\r
+<head></head>\r
+<body>\r
+Integration of SLC Deploy in Ant.\r
+</body>\r
+</html>
\ No newline at end of file
diff --git a/org.argeo.slc.core/src/main/java/org/argeo/slc/ant/package.html b/org.argeo.slc.core/src/main/java/org/argeo/slc/ant/package.html
new file mode 100644 (file)
index 0000000..9f36fb1
--- /dev/null
@@ -0,0 +1,38 @@
+<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
diff --git a/org.argeo.slc.core/src/main/java/org/argeo/slc/ant/spring/AbstractSpringArg.java b/org.argeo.slc.core/src/main/java/org/argeo/slc/ant/spring/AbstractSpringArg.java
new file mode 100644 (file)
index 0000000..6c64235
--- /dev/null
@@ -0,0 +1,63 @@
+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
diff --git a/org.argeo.slc.core/src/main/java/org/argeo/slc/ant/spring/AbstractSpringTask.java b/org.argeo.slc.core/src/main/java/org/argeo/slc/ant/spring/AbstractSpringTask.java
new file mode 100644 (file)
index 0000000..3e8cc8b
--- /dev/null
@@ -0,0 +1,18 @@
+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
diff --git a/org.argeo.slc.core/src/main/java/org/argeo/slc/ant/spring/OverrideArg.java b/org.argeo.slc.core/src/main/java/org/argeo/slc/ant/spring/OverrideArg.java
new file mode 100644 (file)
index 0000000..20508a6
--- /dev/null
@@ -0,0 +1,89 @@
+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
diff --git a/org.argeo.slc.core/src/main/java/org/argeo/slc/ant/spring/package.html b/org.argeo.slc.core/src/main/java/org/argeo/slc/ant/spring/package.html
new file mode 100644 (file)
index 0000000..6d141d9
--- /dev/null
@@ -0,0 +1,6 @@
+<html>\r
+<head></head>\r
+<body>\r
+Integration of Spring in Ant.\r
+</body>\r
+</html>
\ No newline at end of file
diff --git a/org.argeo.slc.core/src/main/java/org/argeo/slc/ant/structure/SAwareTask.java b/org.argeo.slc.core/src/main/java/org/argeo/slc/ant/structure/SAwareTask.java
new file mode 100644 (file)
index 0000000..3f4d358
--- /dev/null
@@ -0,0 +1,122 @@
+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
diff --git a/org.argeo.slc.core/src/main/java/org/argeo/slc/ant/structure/package.html b/org.argeo.slc.core/src/main/java/org/argeo/slc/ant/structure/package.html
new file mode 100644 (file)
index 0000000..99e45d3
--- /dev/null
@@ -0,0 +1,6 @@
+<html>\r
+<head></head>\r
+<body>\r
+Integration of SLC Structure in Ant.\r
+</body>\r
+</html>
\ No newline at end of file
diff --git a/org.argeo.slc.core/src/main/java/org/argeo/slc/ant/test/SlcCloseTestResultTask.java b/org.argeo.slc.core/src/main/java/org/argeo/slc/ant/test/SlcCloseTestResultTask.java
new file mode 100644 (file)
index 0000000..bc0c2ba
--- /dev/null
@@ -0,0 +1,24 @@
+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
diff --git a/org.argeo.slc.core/src/main/java/org/argeo/slc/ant/test/SlcReportTask.java b/org.argeo.slc.core/src/main/java/org/argeo/slc/ant/test/SlcReportTask.java
new file mode 100644 (file)
index 0000000..7587762
--- /dev/null
@@ -0,0 +1,40 @@
+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
diff --git a/org.argeo.slc.core/src/main/java/org/argeo/slc/ant/test/SlcTestTask.java b/org.argeo.slc.core/src/main/java/org/argeo/slc/ant/test/SlcTestTask.java
new file mode 100644 (file)
index 0000000..96b5176
--- /dev/null
@@ -0,0 +1,134 @@
+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
diff --git a/org.argeo.slc.core/src/main/java/org/argeo/slc/ant/test/package.html b/org.argeo.slc.core/src/main/java/org/argeo/slc/ant/test/package.html
new file mode 100644 (file)
index 0000000..179159b
--- /dev/null
@@ -0,0 +1,6 @@
+<html>\r
+<head></head>\r
+<body>\r
+Integration of SLC Test in Ant.\r
+</body>\r
+</html>
\ No newline at end of file
diff --git a/org.argeo.slc.core/src/main/java/org/argeo/slc/core/SlcException.java b/org.argeo.slc.core/src/main/java/org/argeo/slc/core/SlcException.java
new file mode 100644 (file)
index 0000000..7daffaf
--- /dev/null
@@ -0,0 +1,17 @@
+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
diff --git a/org.argeo.slc.core/src/main/java/org/argeo/slc/core/UnsupportedException.java b/org.argeo.slc.core/src/main/java/org/argeo/slc/core/UnsupportedException.java
new file mode 100644 (file)
index 0000000..76f6565
--- /dev/null
@@ -0,0 +1,41 @@
+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
diff --git a/org.argeo.slc.core/src/main/java/org/argeo/slc/core/build/DistributionId.java b/org.argeo.slc.core/src/main/java/org/argeo/slc/core/build/DistributionId.java
new file mode 100644 (file)
index 0000000..9262479
--- /dev/null
@@ -0,0 +1,6 @@
+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
diff --git a/org.argeo.slc.core/src/main/java/org/argeo/slc/core/build/VersionDistributionId.java b/org.argeo.slc.core/src/main/java/org/argeo/slc/core/build/VersionDistributionId.java
new file mode 100644 (file)
index 0000000..27ac020
--- /dev/null
@@ -0,0 +1,82 @@
+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
diff --git a/org.argeo.slc.core/src/main/java/org/argeo/slc/core/build/package.html b/org.argeo.slc.core/src/main/java/org/argeo/slc/core/build/package.html
new file mode 100644 (file)
index 0000000..5da2052
--- /dev/null
@@ -0,0 +1,6 @@
+<html>\r
+<head></head>\r
+<body>\r
+SLC Build: building of software systems.\r
+</body>\r
+</html>
\ No newline at end of file
diff --git a/org.argeo.slc.core/src/main/java/org/argeo/slc/core/deploy/DeployedSystem.java b/org.argeo.slc.core/src/main/java/org/argeo/slc/core/deploy/DeployedSystem.java
new file mode 100644 (file)
index 0000000..ccec874
--- /dev/null
@@ -0,0 +1,6 @@
+package org.argeo.slc.core.deploy;\r
+\r
+/** An instance of a software system. */\r
+public interface DeployedSystem {\r
+       public DeployedSystemId getDeployedSystemId();\r
+}\r
diff --git a/org.argeo.slc.core/src/main/java/org/argeo/slc/core/deploy/DeployedSystemId.java b/org.argeo.slc.core/src/main/java/org/argeo/slc/core/deploy/DeployedSystemId.java
new file mode 100644 (file)
index 0000000..43f5f6a
--- /dev/null
@@ -0,0 +1,8 @@
+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
diff --git a/org.argeo.slc.core/src/main/java/org/argeo/slc/core/deploy/Deployment.java b/org.argeo.slc.core/src/main/java/org/argeo/slc/core/deploy/Deployment.java
new file mode 100644 (file)
index 0000000..4a74030
--- /dev/null
@@ -0,0 +1,9 @@
+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
diff --git a/org.argeo.slc.core/src/main/java/org/argeo/slc/core/deploy/DeploymentData.java b/org.argeo.slc.core/src/main/java/org/argeo/slc/core/deploy/DeploymentData.java
new file mode 100644 (file)
index 0000000..0148ea5
--- /dev/null
@@ -0,0 +1,5 @@
+package org.argeo.slc.core.deploy;\r
+\r
+public interface DeploymentData {\r
+\r
+}\r
diff --git a/org.argeo.slc.core/src/main/java/org/argeo/slc/core/deploy/ExecutableDeployment.java b/org.argeo.slc.core/src/main/java/org/argeo/slc/core/deploy/ExecutableDeployment.java
new file mode 100644 (file)
index 0000000..284e6c5
--- /dev/null
@@ -0,0 +1,5 @@
+package org.argeo.slc.core.deploy;\r
+\r
+public interface ExecutableDeployment extends Deployment {\r
+       public void execute();\r
+}\r
diff --git a/org.argeo.slc.core/src/main/java/org/argeo/slc/core/deploy/NumericDSId.java b/org.argeo.slc.core/src/main/java/org/argeo/slc/core/deploy/NumericDSId.java
new file mode 100644 (file)
index 0000000..494fc8a
--- /dev/null
@@ -0,0 +1,40 @@
+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
diff --git a/org.argeo.slc.core/src/main/java/org/argeo/slc/core/deploy/TargetData.java b/org.argeo.slc.core/src/main/java/org/argeo/slc/core/deploy/TargetData.java
new file mode 100644 (file)
index 0000000..2fe155d
--- /dev/null
@@ -0,0 +1,5 @@
+package org.argeo.slc.core.deploy;\r
+\r
+public interface TargetData {\r
+\r
+}\r
diff --git a/org.argeo.slc.core/src/main/java/org/argeo/slc/core/deploy/WritableDeployment.java b/org.argeo.slc.core/src/main/java/org/argeo/slc/core/deploy/WritableDeployment.java
new file mode 100644 (file)
index 0000000..15c3ccb
--- /dev/null
@@ -0,0 +1,9 @@
+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
diff --git a/org.argeo.slc.core/src/main/java/org/argeo/slc/core/deploy/package.html b/org.argeo.slc.core/src/main/java/org/argeo/slc/core/deploy/package.html
new file mode 100644 (file)
index 0000000..f3a4c5b
--- /dev/null
@@ -0,0 +1,6 @@
+<html>\r
+<head></head>\r
+<body>\r
+SLC Deploy: deployment of software systems.\r
+</body>\r
+</html>
\ No newline at end of file
diff --git a/org.argeo.slc.core/src/main/java/org/argeo/slc/core/package.html b/org.argeo.slc.core/src/main/java/org/argeo/slc/core/package.html
new file mode 100644 (file)
index 0000000..db808c8
--- /dev/null
@@ -0,0 +1,6 @@
+<html>\r
+<head></head>\r
+<body>\r
+Common classes of teh SLC framework.\r
+</body>\r
+</html>
\ No newline at end of file
diff --git a/org.argeo.slc.core/src/main/java/org/argeo/slc/core/structure/DefaultSRegistry.java b/org.argeo.slc.core/src/main/java/org/argeo/slc/core/structure/DefaultSRegistry.java
new file mode 100644 (file)
index 0000000..f59fc65
--- /dev/null
@@ -0,0 +1,61 @@
+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
diff --git a/org.argeo.slc.core/src/main/java/org/argeo/slc/core/structure/SimpleSElement.java b/org.argeo.slc.core/src/main/java/org/argeo/slc/core/structure/SimpleSElement.java
new file mode 100644 (file)
index 0000000..8681865
--- /dev/null
@@ -0,0 +1,45 @@
+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
diff --git a/org.argeo.slc.core/src/main/java/org/argeo/slc/core/structure/StructureAware.java b/org.argeo.slc.core/src/main/java/org/argeo/slc/core/structure/StructureAware.java
new file mode 100644 (file)
index 0000000..68fd13b
--- /dev/null
@@ -0,0 +1,10 @@
+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
diff --git a/org.argeo.slc.core/src/main/java/org/argeo/slc/core/structure/StructureElement.java b/org.argeo.slc.core/src/main/java/org/argeo/slc/core/structure/StructureElement.java
new file mode 100644 (file)
index 0000000..d842839
--- /dev/null
@@ -0,0 +1,10 @@
+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
diff --git a/org.argeo.slc.core/src/main/java/org/argeo/slc/core/structure/StructurePath.java b/org.argeo.slc.core/src/main/java/org/argeo/slc/core/structure/StructurePath.java
new file mode 100644 (file)
index 0000000..452dc95
--- /dev/null
@@ -0,0 +1,16 @@
+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
diff --git a/org.argeo.slc.core/src/main/java/org/argeo/slc/core/structure/StructureRegistry.java b/org.argeo.slc.core/src/main/java/org/argeo/slc/core/structure/StructureRegistry.java
new file mode 100644 (file)
index 0000000..6461ee5
--- /dev/null
@@ -0,0 +1,55 @@
+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
diff --git a/org.argeo.slc.core/src/main/java/org/argeo/slc/core/structure/package.html b/org.argeo.slc.core/src/main/java/org/argeo/slc/core/structure/package.html
new file mode 100644 (file)
index 0000000..d9bab8a
--- /dev/null
@@ -0,0 +1,6 @@
+<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
diff --git a/org.argeo.slc.core/src/main/java/org/argeo/slc/core/structure/tree/TreeSPath.java b/org.argeo.slc.core/src/main/java/org/argeo/slc/core/structure/tree/TreeSPath.java
new file mode 100644 (file)
index 0000000..2efeb15
--- /dev/null
@@ -0,0 +1,175 @@
+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
diff --git a/org.argeo.slc.core/src/main/java/org/argeo/slc/core/structure/tree/TreeSRegistry.java b/org.argeo.slc.core/src/main/java/org/argeo/slc/core/structure/tree/TreeSRegistry.java
new file mode 100644 (file)
index 0000000..e672843
--- /dev/null
@@ -0,0 +1,96 @@
+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
diff --git a/org.argeo.slc.core/src/main/java/org/argeo/slc/core/structure/tree/package.html b/org.argeo.slc.core/src/main/java/org/argeo/slc/core/structure/tree/package.html
new file mode 100644 (file)
index 0000000..a2a51e4
--- /dev/null
@@ -0,0 +1,6 @@
+<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
diff --git a/org.argeo.slc.core/src/main/java/org/argeo/slc/core/test/ExecutableTestRun.java b/org.argeo.slc.core/src/main/java/org/argeo/slc/core/test/ExecutableTestRun.java
new file mode 100644 (file)
index 0000000..3421679
--- /dev/null
@@ -0,0 +1,9 @@
+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
diff --git a/org.argeo.slc.core/src/main/java/org/argeo/slc/core/test/IncompatibleTestDataException.java b/org.argeo.slc.core/src/main/java/org/argeo/slc/core/test/IncompatibleTestDataException.java
new file mode 100644 (file)
index 0000000..db4184d
--- /dev/null
@@ -0,0 +1,18 @@
+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
diff --git a/org.argeo.slc.core/src/main/java/org/argeo/slc/core/test/NumericTRId.java b/org.argeo.slc.core/src/main/java/org/argeo/slc/core/test/NumericTRId.java
new file mode 100644 (file)
index 0000000..185d200
--- /dev/null
@@ -0,0 +1,60 @@
+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
diff --git a/org.argeo.slc.core/src/main/java/org/argeo/slc/core/test/SimpleResultPart.java b/org.argeo.slc.core/src/main/java/org/argeo/slc/core/test/SimpleResultPart.java
new file mode 100644 (file)
index 0000000..249fd21
--- /dev/null
@@ -0,0 +1,82 @@
+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
diff --git a/org.argeo.slc.core/src/main/java/org/argeo/slc/core/test/SimpleTestResult.java b/org.argeo.slc.core/src/main/java/org/argeo/slc/core/test/SimpleTestResult.java
new file mode 100644 (file)
index 0000000..9ef6cde
--- /dev/null
@@ -0,0 +1,48 @@
+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
diff --git a/org.argeo.slc.core/src/main/java/org/argeo/slc/core/test/SimpleTestRun.java b/org.argeo.slc.core/src/main/java/org/argeo/slc/core/test/SimpleTestRun.java
new file mode 100644 (file)
index 0000000..c548f9d
--- /dev/null
@@ -0,0 +1,52 @@
+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
diff --git a/org.argeo.slc.core/src/main/java/org/argeo/slc/core/test/TestData.java b/org.argeo.slc.core/src/main/java/org/argeo/slc/core/test/TestData.java
new file mode 100644 (file)
index 0000000..4105e09
--- /dev/null
@@ -0,0 +1,9 @@
+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
diff --git a/org.argeo.slc.core/src/main/java/org/argeo/slc/core/test/TestDefinition.java b/org.argeo.slc.core/src/main/java/org/argeo/slc/core/test/TestDefinition.java
new file mode 100644 (file)
index 0000000..7c75d6a
--- /dev/null
@@ -0,0 +1,10 @@
+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
diff --git a/org.argeo.slc.core/src/main/java/org/argeo/slc/core/test/TestReport.java b/org.argeo.slc.core/src/main/java/org/argeo/slc/core/test/TestReport.java
new file mode 100644 (file)
index 0000000..8256e86
--- /dev/null
@@ -0,0 +1,10 @@
+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
diff --git a/org.argeo.slc.core/src/main/java/org/argeo/slc/core/test/TestResult.java b/org.argeo.slc.core/src/main/java/org/argeo/slc/core/test/TestResult.java
new file mode 100644 (file)
index 0000000..860fe1c
--- /dev/null
@@ -0,0 +1,24 @@
+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
diff --git a/org.argeo.slc.core/src/main/java/org/argeo/slc/core/test/TestResultId.java b/org.argeo.slc.core/src/main/java/org/argeo/slc/core/test/TestResultId.java
new file mode 100644 (file)
index 0000000..9440287
--- /dev/null
@@ -0,0 +1,10 @@
+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
diff --git a/org.argeo.slc.core/src/main/java/org/argeo/slc/core/test/TestResultListener.java b/org.argeo.slc.core/src/main/java/org/argeo/slc/core/test/TestResultListener.java
new file mode 100644 (file)
index 0000000..0d774a7
--- /dev/null
@@ -0,0 +1,11 @@
+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
diff --git a/org.argeo.slc.core/src/main/java/org/argeo/slc/core/test/TestResultPart.java b/org.argeo.slc.core/src/main/java/org/argeo/slc/core/test/TestResultPart.java
new file mode 100644 (file)
index 0000000..707c00f
--- /dev/null
@@ -0,0 +1,12 @@
+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
diff --git a/org.argeo.slc.core/src/main/java/org/argeo/slc/core/test/TestRun.java b/org.argeo.slc.core/src/main/java/org/argeo/slc/core/test/TestRun.java
new file mode 100644 (file)
index 0000000..073acb5
--- /dev/null
@@ -0,0 +1,18 @@
+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
diff --git a/org.argeo.slc.core/src/main/java/org/argeo/slc/core/test/TestStatus.java b/org.argeo.slc.core/src/main/java/org/argeo/slc/core/test/TestStatus.java
new file mode 100644 (file)
index 0000000..0f54d96
--- /dev/null
@@ -0,0 +1,25 @@
+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
diff --git a/org.argeo.slc.core/src/main/java/org/argeo/slc/core/test/WritableTestRun.java b/org.argeo.slc.core/src/main/java/org/argeo/slc/core/test/WritableTestRun.java
new file mode 100644 (file)
index 0000000..8cfe2b7
--- /dev/null
@@ -0,0 +1,14 @@
+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
diff --git a/org.argeo.slc.core/src/main/java/org/argeo/slc/core/test/package.html b/org.argeo.slc.core/src/main/java/org/argeo/slc/core/test/package.html
new file mode 100644 (file)
index 0000000..c70d2d1
--- /dev/null
@@ -0,0 +1,6 @@
+<html>\r
+<head></head>\r
+<body>\r
+SLC Test: test of software systems.\r
+</body>\r
+</html>
\ No newline at end of file
diff --git a/org.argeo.slc.core/src/main/java/org/argeo/slc/core/test/tree/AsynchronousTreeTestResultListener.java b/org.argeo.slc.core/src/main/java/org/argeo/slc/core/test/tree/AsynchronousTreeTestResultListener.java
new file mode 100644 (file)
index 0000000..c22c110
--- /dev/null
@@ -0,0 +1,137 @@
+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
diff --git a/org.argeo.slc.core/src/main/java/org/argeo/slc/core/test/tree/CompositeTreeTestDefinition.java b/org.argeo.slc.core/src/main/java/org/argeo/slc/core/test/tree/CompositeTreeTestDefinition.java
new file mode 100644 (file)
index 0000000..2547906
--- /dev/null
@@ -0,0 +1,86 @@
+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
diff --git a/org.argeo.slc.core/src/main/java/org/argeo/slc/core/test/tree/PartSubList.java b/org.argeo.slc.core/src/main/java/org/argeo/slc/core/test/tree/PartSubList.java
new file mode 100644 (file)
index 0000000..113ef48
--- /dev/null
@@ -0,0 +1,41 @@
+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
diff --git a/org.argeo.slc.core/src/main/java/org/argeo/slc/core/test/tree/TreeTestResult.java b/org.argeo.slc.core/src/main/java/org/argeo/slc/core/test/tree/TreeTestResult.java
new file mode 100644 (file)
index 0000000..3124b05
--- /dev/null
@@ -0,0 +1,151 @@
+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
diff --git a/org.argeo.slc.core/src/main/java/org/argeo/slc/core/test/tree/TreeTestResultLogger.java b/org.argeo.slc.core/src/main/java/org/argeo/slc/core/test/tree/TreeTestResultLogger.java
new file mode 100644 (file)
index 0000000..c09c18a
--- /dev/null
@@ -0,0 +1,40 @@
+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
diff --git a/org.argeo.slc.core/src/main/java/org/argeo/slc/core/test/tree/TreeTestResultPersister.java b/org.argeo.slc.core/src/main/java/org/argeo/slc/core/test/tree/TreeTestResultPersister.java
new file mode 100644 (file)
index 0000000..ca92b49
--- /dev/null
@@ -0,0 +1,130 @@
+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
diff --git a/org.argeo.slc.core/src/main/java/org/argeo/slc/core/test/tree/htmlreport/FullHtmlTreeReport.java b/org.argeo.slc.core/src/main/java/org/argeo/slc/core/test/tree/htmlreport/FullHtmlTreeReport.java
new file mode 100644 (file)
index 0000000..4afd8dc
--- /dev/null
@@ -0,0 +1,168 @@
+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
diff --git a/org.argeo.slc.core/src/main/java/org/argeo/slc/core/test/tree/htmlreport/ResultPage.java b/org.argeo.slc.core/src/main/java/org/argeo/slc/core/test/tree/htmlreport/ResultPage.java
new file mode 100644 (file)
index 0000000..22fa7a3
--- /dev/null
@@ -0,0 +1,216 @@
+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("&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;");\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
diff --git a/org.argeo.slc.core/src/main/java/org/argeo/slc/core/test/tree/htmlreport/ResultsList.java b/org.argeo.slc.core/src/main/java/org/argeo/slc/core/test/tree/htmlreport/ResultsList.java
new file mode 100644 (file)
index 0000000..ad9b2bf
--- /dev/null
@@ -0,0 +1,63 @@
+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
diff --git a/org.argeo.slc.core/src/main/java/org/argeo/slc/core/test/tree/htmlreport/package.html b/org.argeo.slc.core/src/main/java/org/argeo/slc/core/test/tree/htmlreport/package.html
new file mode 100644 (file)
index 0000000..b10bc3d
--- /dev/null
@@ -0,0 +1,6 @@
+<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
diff --git a/org.argeo.slc.core/src/main/java/org/argeo/slc/core/test/tree/package.html b/org.argeo.slc.core/src/main/java/org/argeo/slc/core/test/tree/package.html
new file mode 100644 (file)
index 0000000..8ad1203
--- /dev/null
@@ -0,0 +1,6 @@
+<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
diff --git a/org.argeo.slc.core/src/main/java/org/argeo/slc/dao/structure/SimpleSElementDao.java b/org.argeo.slc.core/src/main/java/org/argeo/slc/dao/structure/SimpleSElementDao.java
new file mode 100644 (file)
index 0000000..bed950f
--- /dev/null
@@ -0,0 +1,5 @@
+package org.argeo.slc.dao.structure;\r
+\r
+public interface SimpleSElementDao {\r
+\r
+}\r
diff --git a/org.argeo.slc.core/src/main/java/org/argeo/slc/dao/structure/package.html b/org.argeo.slc.core/src/main/java/org/argeo/slc/dao/structure/package.html
new file mode 100644 (file)
index 0000000..f8b5ae7
--- /dev/null
@@ -0,0 +1,6 @@
+<html>\r
+<head></head>\r
+<body>\r
+DAOs for the core structure objects.\r
+</body>\r
+</html>
\ No newline at end of file
diff --git a/org.argeo.slc.core/src/main/java/org/argeo/slc/dao/structure/tree/TreeSPathDao.java b/org.argeo.slc.core/src/main/java/org/argeo/slc/dao/structure/tree/TreeSPathDao.java
new file mode 100644 (file)
index 0000000..0ebca0d
--- /dev/null
@@ -0,0 +1,11 @@
+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
diff --git a/org.argeo.slc.core/src/main/java/org/argeo/slc/dao/structure/tree/TreeSRegistryDao.java b/org.argeo.slc.core/src/main/java/org/argeo/slc/dao/structure/tree/TreeSRegistryDao.java
new file mode 100644 (file)
index 0000000..99e4173
--- /dev/null
@@ -0,0 +1,20 @@
+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
diff --git a/org.argeo.slc.core/src/main/java/org/argeo/slc/dao/structure/tree/package.html b/org.argeo.slc.core/src/main/java/org/argeo/slc/dao/structure/tree/package.html
new file mode 100644 (file)
index 0000000..b8cd812
--- /dev/null
@@ -0,0 +1,6 @@
+<html>\r
+<head></head>\r
+<body>\r
+DAOs for the tree-based structure objects.\r
+</body>\r
+</html>
\ No newline at end of file
diff --git a/org.argeo.slc.core/src/main/java/org/argeo/slc/dao/test/TestResultDao.java b/org.argeo.slc.core/src/main/java/org/argeo/slc/dao/test/TestResultDao.java
new file mode 100644 (file)
index 0000000..f64cfe7
--- /dev/null
@@ -0,0 +1,25 @@
+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
diff --git a/org.argeo.slc.core/src/main/java/org/argeo/slc/dao/test/package.html b/org.argeo.slc.core/src/main/java/org/argeo/slc/dao/test/package.html
new file mode 100644 (file)
index 0000000..38ae2b5
--- /dev/null
@@ -0,0 +1,6 @@
+<html>\r
+<head></head>\r
+<body>\r
+Data Access Objects for SLC Test.\r
+</body>\r
+</html>
\ No newline at end of file
diff --git a/org.argeo.slc.core/src/main/java/org/argeo/slc/diff/DataInterpreter.java b/org.argeo.slc.core/src/main/java/org/argeo/slc/diff/DataInterpreter.java
new file mode 100644 (file)
index 0000000..7a57b05
--- /dev/null
@@ -0,0 +1,20 @@
+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
diff --git a/org.argeo.slc.core/src/main/java/org/argeo/slc/diff/Diff.java b/org.argeo.slc.core/src/main/java/org/argeo/slc/diff/Diff.java
new file mode 100644 (file)
index 0000000..0b28996
--- /dev/null
@@ -0,0 +1,9 @@
+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
diff --git a/org.argeo.slc.core/src/main/java/org/argeo/slc/diff/DiffIssue.java b/org.argeo.slc.core/src/main/java/org/argeo/slc/diff/DiffIssue.java
new file mode 100644 (file)
index 0000000..5517b3a
--- /dev/null
@@ -0,0 +1,22 @@
+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
diff --git a/org.argeo.slc.core/src/main/java/org/argeo/slc/diff/DiffKey.java b/org.argeo.slc.core/src/main/java/org/argeo/slc/diff/DiffKey.java
new file mode 100644 (file)
index 0000000..9d34f72
--- /dev/null
@@ -0,0 +1,9 @@
+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
diff --git a/org.argeo.slc.core/src/main/java/org/argeo/slc/diff/DiffMissing.java b/org.argeo.slc.core/src/main/java/org/argeo/slc/diff/DiffMissing.java
new file mode 100644 (file)
index 0000000..da44766
--- /dev/null
@@ -0,0 +1,31 @@
+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
diff --git a/org.argeo.slc.core/src/main/java/org/argeo/slc/diff/DiffNotMatched.java b/org.argeo.slc.core/src/main/java/org/argeo/slc/diff/DiffNotMatched.java
new file mode 100644 (file)
index 0000000..04f7acf
--- /dev/null
@@ -0,0 +1,27 @@
+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
diff --git a/org.argeo.slc.core/src/main/java/org/argeo/slc/diff/DiffPosition.java b/org.argeo.slc.core/src/main/java/org/argeo/slc/diff/DiffPosition.java
new file mode 100644 (file)
index 0000000..302c0af
--- /dev/null
@@ -0,0 +1,16 @@
+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
diff --git a/org.argeo.slc.core/src/main/java/org/argeo/slc/diff/DiffResult.java b/org.argeo.slc.core/src/main/java/org/argeo/slc/diff/DiffResult.java
new file mode 100644 (file)
index 0000000..0e29fdd
--- /dev/null
@@ -0,0 +1,12 @@
+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
diff --git a/org.argeo.slc.core/src/main/java/org/argeo/slc/diff/RelatedFile.java b/org.argeo.slc.core/src/main/java/org/argeo/slc/diff/RelatedFile.java
new file mode 100644 (file)
index 0000000..7579683
--- /dev/null
@@ -0,0 +1,9 @@
+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
diff --git a/org.argeo.slc.core/src/main/java/org/argeo/slc/diff/SimpleDiffResult.java b/org.argeo.slc.core/src/main/java/org/argeo/slc/diff/SimpleDiffResult.java
new file mode 100644 (file)
index 0000000..6eefb7f
--- /dev/null
@@ -0,0 +1,14 @@
+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
diff --git a/org.argeo.slc.core/src/main/java/org/argeo/slc/diff/TableDiffPosition.java b/org.argeo.slc.core/src/main/java/org/argeo/slc/diff/TableDiffPosition.java
new file mode 100644 (file)
index 0000000..d8a3d78
--- /dev/null
@@ -0,0 +1,66 @@
+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
diff --git a/org.argeo.slc.core/src/main/java/org/argeo/slc/diff/Tolerance.java b/org.argeo.slc.core/src/main/java/org/argeo/slc/diff/Tolerance.java
new file mode 100644 (file)
index 0000000..b44a712
--- /dev/null
@@ -0,0 +1,18 @@
+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
diff --git a/org.argeo.slc.core/src/main/java/org/argeo/slc/diff/XPathDiffPosition.java b/org.argeo.slc.core/src/main/java/org/argeo/slc/diff/XPathDiffPosition.java
new file mode 100644 (file)
index 0000000..f295eb9
--- /dev/null
@@ -0,0 +1,27 @@
+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
diff --git a/org.argeo.slc.core/src/main/java/org/argeo/slc/diff/package.html b/org.argeo.slc.core/src/main/java/org/argeo/slc/diff/package.html
new file mode 100644 (file)
index 0000000..a58e685
--- /dev/null
@@ -0,0 +1,6 @@
+<html>\r
+<head></head>\r
+<body>\r
+Abstraction of diff comparison with structured results.\r
+</body>\r
+</html>
\ No newline at end of file
diff --git a/org.argeo.slc.core/src/main/java/org/argeo/slc/hibernate/structure/tree/TreeSPathDaoHibernate.java b/org.argeo.slc.core/src/main/java/org/argeo/slc/hibernate/structure/tree/TreeSPathDaoHibernate.java
new file mode 100644 (file)
index 0000000..e20e3de
--- /dev/null
@@ -0,0 +1,64 @@
+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
diff --git a/org.argeo.slc.core/src/main/java/org/argeo/slc/hibernate/structure/tree/TreeSRegistryDaoHibernate.java b/org.argeo.slc.core/src/main/java/org/argeo/slc/hibernate/structure/tree/TreeSRegistryDaoHibernate.java
new file mode 100644 (file)
index 0000000..3effc45
--- /dev/null
@@ -0,0 +1,41 @@
+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
diff --git a/org.argeo.slc.core/src/main/java/org/argeo/slc/hibernate/structure/tree/package.html b/org.argeo.slc.core/src/main/java/org/argeo/slc/hibernate/structure/tree/package.html
new file mode 100644 (file)
index 0000000..9b5cfa2
--- /dev/null
@@ -0,0 +1,6 @@
+<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
diff --git a/org.argeo.slc.core/src/main/java/org/argeo/slc/hibernate/test/tree/TestResultDaoHibernate.java b/org.argeo.slc.core/src/main/java/org/argeo/slc/hibernate/test/tree/TestResultDaoHibernate.java
new file mode 100644 (file)
index 0000000..afe76ab
--- /dev/null
@@ -0,0 +1,46 @@
+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
diff --git a/org.argeo.slc.core/src/main/java/org/argeo/slc/hibernate/test/tree/package.html b/org.argeo.slc.core/src/main/java/org/argeo/slc/hibernate/test/tree/package.html
new file mode 100644 (file)
index 0000000..6042b07
--- /dev/null
@@ -0,0 +1,6 @@
+<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
diff --git a/org.argeo.slc.core/src/main/java/org/argeo/slc/unit/DbModel.java b/org.argeo.slc.core/src/main/java/org/argeo/slc/unit/DbModel.java
new file mode 100644 (file)
index 0000000..504dffe
--- /dev/null
@@ -0,0 +1,47 @@
+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
diff --git a/org.argeo.slc.core/src/main/java/org/argeo/slc/unit/IndependentDbTestCase.java b/org.argeo.slc.core/src/main/java/org/argeo/slc/unit/IndependentDbTestCase.java
new file mode 100644 (file)
index 0000000..8a0b07e
--- /dev/null
@@ -0,0 +1,125 @@
+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
diff --git a/org.argeo.slc.core/src/main/java/org/argeo/slc/unit/SpringBasedTestCase.java b/org.argeo.slc.core/src/main/java/org/argeo/slc/unit/SpringBasedTestCase.java
new file mode 100644 (file)
index 0000000..3d6f0c8
--- /dev/null
@@ -0,0 +1,42 @@
+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
diff --git a/org.argeo.slc.core/src/main/java/org/argeo/slc/unit/package.html b/org.argeo.slc.core/src/main/java/org/argeo/slc/unit/package.html
new file mode 100644 (file)
index 0000000..907430d
--- /dev/null
@@ -0,0 +1,6 @@
+<html>\r
+<head></head>\r
+<body>\r
+Helpers for unit tests.\r
+</body>\r
+</html>
\ No newline at end of file
diff --git a/org.argeo.slc.core/src/main/resources/org/argeo/slc/ant/taskdefs.properties b/org.argeo.slc.core/src/main/resources/org/argeo/slc/ant/taskdefs.properties
new file mode 100644 (file)
index 0000000..85e0743
--- /dev/null
@@ -0,0 +1,5 @@
+# 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
diff --git a/org.argeo.slc.core/src/main/resources/org/argeo/slc/core/test/tree/htmlreport/index.html b/org.argeo.slc.core/src/main/resources/org/argeo/slc/core/test/tree/htmlreport/index.html
new file mode 100644 (file)
index 0000000..32beed3
--- /dev/null
@@ -0,0 +1,16 @@
+<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
diff --git a/org.argeo.slc.core/src/main/resources/org/argeo/slc/core/test/tree/htmlreport/style.css b/org.argeo.slc.core/src/main/resources/org/argeo/slc/core/test/tree/htmlreport/style.css
new file mode 100644 (file)
index 0000000..134c6b5
--- /dev/null
@@ -0,0 +1,64 @@
+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
diff --git a/org.argeo.slc.core/src/main/resources/org/argeo/slc/hibernate/structure/SimpleSElement.hbm.xml b/org.argeo.slc.core/src/main/resources/org/argeo/slc/hibernate/structure/SimpleSElement.hbm.xml
new file mode 100644 (file)
index 0000000..ed1d80c
--- /dev/null
@@ -0,0 +1,13 @@
+<?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
diff --git a/org.argeo.slc.core/src/main/resources/org/argeo/slc/hibernate/structure/tree/TreeSPath.hbm.xml b/org.argeo.slc.core/src/main/resources/org/argeo/slc/hibernate/structure/tree/TreeSPath.hbm.xml
new file mode 100644 (file)
index 0000000..d9934ee
--- /dev/null
@@ -0,0 +1,14 @@
+<?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
diff --git a/org.argeo.slc.core/src/main/resources/org/argeo/slc/hibernate/structure/tree/TreeSRegistry.hbm.xml b/org.argeo.slc.core/src/main/resources/org/argeo/slc/hibernate/structure/tree/TreeSRegistry.hbm.xml
new file mode 100644 (file)
index 0000000..9ae3d76
--- /dev/null
@@ -0,0 +1,25 @@
+<?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
diff --git a/org.argeo.slc.core/src/main/resources/org/argeo/slc/hibernate/test/NumericTRId.hbm.xml b/org.argeo.slc.core/src/main/resources/org/argeo/slc/hibernate/test/NumericTRId.hbm.xml
new file mode 100644 (file)
index 0000000..ca9c5d9
--- /dev/null
@@ -0,0 +1,14 @@
+<?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
diff --git a/org.argeo.slc.core/src/main/resources/org/argeo/slc/hibernate/test/SimpleResultPart.hbm.xml b/org.argeo.slc.core/src/main/resources/org/argeo/slc/hibernate/test/SimpleResultPart.hbm.xml
new file mode 100644 (file)
index 0000000..7b9fd79
--- /dev/null
@@ -0,0 +1,14 @@
+<?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
diff --git a/org.argeo.slc.core/src/main/resources/org/argeo/slc/hibernate/test/TestResultId.hbm.xml b/org.argeo.slc.core/src/main/resources/org/argeo/slc/hibernate/test/TestResultId.hbm.xml
new file mode 100644 (file)
index 0000000..dee13a6
--- /dev/null
@@ -0,0 +1,11 @@
+<?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
diff --git a/org.argeo.slc.core/src/main/resources/org/argeo/slc/hibernate/test/tree/PartSubList.hbm.xml b/org.argeo.slc.core/src/main/resources/org/argeo/slc/hibernate/test/tree/PartSubList.hbm.xml
new file mode 100644 (file)
index 0000000..f9740fe
--- /dev/null
@@ -0,0 +1,18 @@
+<?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
diff --git a/org.argeo.slc.core/src/main/resources/org/argeo/slc/hibernate/test/tree/TreeTestResult.hbm.xml b/org.argeo.slc.core/src/main/resources/org/argeo/slc/hibernate/test/tree/TreeTestResult.hbm.xml
new file mode 100644 (file)
index 0000000..5b7bcb3
--- /dev/null
@@ -0,0 +1,26 @@
+<?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
diff --git a/org.argeo.slc.core/src/site/apt/index.apt b/org.argeo.slc.core/src/site/apt/index.apt
new file mode 100644 (file)
index 0000000..f414460
--- /dev/null
@@ -0,0 +1 @@
+Argeo SLC Site
\ No newline at end of file
diff --git a/org.argeo.slc.core/src/test/java/org/argeo/slc/hibernate/structure/tree/TreeSPathDaoHibernateTest.java b/org.argeo.slc.core/src/test/java/org/argeo/slc/hibernate/structure/tree/TreeSPathDaoHibernateTest.java
new file mode 100644 (file)
index 0000000..d383313
--- /dev/null
@@ -0,0 +1,30 @@
+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
diff --git a/org.argeo.slc.core/src/test/java/org/argeo/slc/hibernate/structure/tree/TreeSRegistryDaoHibernateTest.java b/org.argeo.slc.core/src/test/java/org/argeo/slc/hibernate/structure/tree/TreeSRegistryDaoHibernateTest.java
new file mode 100644 (file)
index 0000000..7317994
--- /dev/null
@@ -0,0 +1,42 @@
+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
diff --git a/org.argeo.slc.core/src/test/java/org/argeo/slc/hibernate/test/tree/TreeTestResultDaoHibernateTest.java b/org.argeo.slc.core/src/test/java/org/argeo/slc/hibernate/test/tree/TreeTestResultDaoHibernateTest.java
new file mode 100644 (file)
index 0000000..8ec8410
--- /dev/null
@@ -0,0 +1,73 @@
+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
diff --git a/org.argeo.slc.core/src/test/resources/log4j.properties b/org.argeo.slc.core/src/test/resources/log4j.properties
new file mode 100644 (file)
index 0000000..6d9a400
--- /dev/null
@@ -0,0 +1,23 @@
+# 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
diff --git a/org.argeo.slc.core/src/test/resources/org/argeo/slc/hibernate/applicationContext.xml b/org.argeo.slc.core/src/test/resources/org/argeo/slc/hibernate/applicationContext.xml
new file mode 100644 (file)
index 0000000..cf320fd
--- /dev/null
@@ -0,0 +1,67 @@
+<?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
diff --git a/org.argeo.slc/.classpath b/org.argeo.slc/.classpath
deleted file mode 100644 (file)
index d439082..0000000
+++ /dev/null
@@ -1,10 +0,0 @@
-<?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
diff --git a/org.argeo.slc/.project b/org.argeo.slc/.project
deleted file mode 100644 (file)
index 810d379..0000000
+++ /dev/null
@@ -1,23 +0,0 @@
-<?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
diff --git a/org.argeo.slc/.settings/org.eclipse.jdt.core.prefs b/org.argeo.slc/.settings/org.eclipse.jdt.core.prefs
deleted file mode 100644 (file)
index 1485b02..0000000
+++ /dev/null
@@ -1,23 +0,0 @@
-#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
diff --git a/org.argeo.slc/build.xml b/org.argeo.slc/build.xml
deleted file mode 100644 (file)
index cacca25..0000000
+++ /dev/null
@@ -1,7 +0,0 @@
-<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
diff --git a/org.argeo.slc/docs/com.capco.slc.murex.zargo.uml b/org.argeo.slc/docs/com.capco.slc.murex.zargo.uml
deleted file mode 100644 (file)
index f54ddcd..0000000
+++ /dev/null
@@ -1,2964 +0,0 @@
-<?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
diff --git a/org.argeo.slc/docs/org.argeo.slc.zargo.uml b/org.argeo.slc/docs/org.argeo.slc.zargo.uml
deleted file mode 100644 (file)
index 7dfee13..0000000
+++ /dev/null
@@ -1,7714 +0,0 @@
-<?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&apos;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&apos;utilisation 1"\r
->\r
-</pgml>\r
-<todo>\r
-<todolist>\r
-</todolist>\r
-<resolvedcritics>\r
-</resolvedcritics>\r
-</todo>\r
-</uml>\r
diff --git a/org.argeo.slc/javadoc.xml b/org.argeo.slc/javadoc.xml
deleted file mode 100644 (file)
index ccfaa6c..0000000
+++ /dev/null
@@ -1,6 +0,0 @@
-<?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
diff --git a/org.argeo.slc/lib-src/ant-1.7.0-src.zip b/org.argeo.slc/lib-src/ant-1.7.0-src.zip
deleted file mode 100644 (file)
index a170b02..0000000
Binary files a/org.argeo.slc/lib-src/ant-1.7.0-src.zip and /dev/null differ
diff --git a/org.argeo.slc/lib-src/commons-io-1.3.2-sources.jar b/org.argeo.slc/lib-src/commons-io-1.3.2-sources.jar
deleted file mode 100644 (file)
index b383cf3..0000000
Binary files a/org.argeo.slc/lib-src/commons-io-1.3.2-sources.jar and /dev/null differ
diff --git a/org.argeo.slc/lib-src/dbunit-2.2-sources.jar b/org.argeo.slc/lib-src/dbunit-2.2-sources.jar
deleted file mode 100644 (file)
index e22c257..0000000
Binary files a/org.argeo.slc/lib-src/dbunit-2.2-sources.jar and /dev/null differ
diff --git a/org.argeo.slc/lib-src/junit-3.8.2-sources.jar b/org.argeo.slc/lib-src/junit-3.8.2-sources.jar
deleted file mode 100644 (file)
index 28ea5fc..0000000
Binary files a/org.argeo.slc/lib-src/junit-3.8.2-sources.jar and /dev/null differ
diff --git a/org.argeo.slc/lib-src/spring-2.0.6-src.zip b/org.argeo.slc/lib-src/spring-2.0.6-src.zip
deleted file mode 100644 (file)
index d88e1ff..0000000
Binary files a/org.argeo.slc/lib-src/spring-2.0.6-src.zip and /dev/null differ
diff --git a/org.argeo.slc/lib/ant-launcher.jar b/org.argeo.slc/lib/ant-launcher.jar
deleted file mode 100644 (file)
index 12a1e78..0000000
Binary files a/org.argeo.slc/lib/ant-launcher.jar and /dev/null differ
diff --git a/org.argeo.slc/lib/ant.jar b/org.argeo.slc/lib/ant.jar
deleted file mode 100644 (file)
index 0a56a58..0000000
Binary files a/org.argeo.slc/lib/ant.jar and /dev/null differ
diff --git a/org.argeo.slc/lib/antlr-2.7.6.jar b/org.argeo.slc/lib/antlr-2.7.6.jar
deleted file mode 100644 (file)
index 3702b64..0000000
Binary files a/org.argeo.slc/lib/antlr-2.7.6.jar and /dev/null differ
diff --git a/org.argeo.slc/lib/asm-attrs.jar b/org.argeo.slc/lib/asm-attrs.jar
deleted file mode 100644 (file)
index f07bcb2..0000000
Binary files a/org.argeo.slc/lib/asm-attrs.jar and /dev/null differ
diff --git a/org.argeo.slc/lib/asm.jar b/org.argeo.slc/lib/asm.jar
deleted file mode 100644 (file)
index ee0c7cc..0000000
Binary files a/org.argeo.slc/lib/asm.jar and /dev/null differ
diff --git a/org.argeo.slc/lib/cglib-2.1.3.jar b/org.argeo.slc/lib/cglib-2.1.3.jar
deleted file mode 100644 (file)
index ddfbdb0..0000000
Binary files a/org.argeo.slc/lib/cglib-2.1.3.jar and /dev/null differ
diff --git a/org.argeo.slc/lib/commons-collections-2.1.1.jar b/org.argeo.slc/lib/commons-collections-2.1.1.jar
deleted file mode 100644 (file)
index 3272f2b..0000000
Binary files a/org.argeo.slc/lib/commons-collections-2.1.1.jar and /dev/null differ
diff --git a/org.argeo.slc/lib/commons-dbcp.jar b/org.argeo.slc/lib/commons-dbcp.jar
deleted file mode 100644 (file)
index faea056..0000000
Binary files a/org.argeo.slc/lib/commons-dbcp.jar and /dev/null differ
diff --git a/org.argeo.slc/lib/commons-io-1.3.2.jar b/org.argeo.slc/lib/commons-io-1.3.2.jar
deleted file mode 100644 (file)
index 865c9e4..0000000
Binary files a/org.argeo.slc/lib/commons-io-1.3.2.jar and /dev/null differ
diff --git a/org.argeo.slc/lib/commons-lang.jar b/org.argeo.slc/lib/commons-lang.jar
deleted file mode 100644 (file)
index 87b80ab..0000000
Binary files a/org.argeo.slc/lib/commons-lang.jar and /dev/null differ
diff --git a/org.argeo.slc/lib/commons-logging.jar b/org.argeo.slc/lib/commons-logging.jar
deleted file mode 100644 (file)
index 2ff9bbd..0000000
Binary files a/org.argeo.slc/lib/commons-logging.jar and /dev/null differ
diff --git a/org.argeo.slc/lib/commons-pool.jar b/org.argeo.slc/lib/commons-pool.jar
deleted file mode 100644 (file)
index e8de327..0000000
Binary files a/org.argeo.slc/lib/commons-pool.jar and /dev/null differ
diff --git a/org.argeo.slc/lib/dbunit-2.2.jar b/org.argeo.slc/lib/dbunit-2.2.jar
deleted file mode 100644 (file)
index 6db27bc..0000000
Binary files a/org.argeo.slc/lib/dbunit-2.2.jar and /dev/null differ
diff --git a/org.argeo.slc/lib/dom4j-1.6.1.jar b/org.argeo.slc/lib/dom4j-1.6.1.jar
deleted file mode 100644 (file)
index c8c4dbb..0000000
Binary files a/org.argeo.slc/lib/dom4j-1.6.1.jar and /dev/null differ
diff --git a/org.argeo.slc/lib/hibernate3.jar b/org.argeo.slc/lib/hibernate3.jar
deleted file mode 100644 (file)
index b600972..0000000
Binary files a/org.argeo.slc/lib/hibernate3.jar and /dev/null differ
diff --git a/org.argeo.slc/lib/hsqldb.jar b/org.argeo.slc/lib/hsqldb.jar
deleted file mode 100644 (file)
index dc3055e..0000000
Binary files a/org.argeo.slc/lib/hsqldb.jar and /dev/null differ
diff --git a/org.argeo.slc/lib/jta.jar b/org.argeo.slc/lib/jta.jar
deleted file mode 100644 (file)
index ffa3c5b..0000000
Binary files a/org.argeo.slc/lib/jta.jar and /dev/null differ
diff --git a/org.argeo.slc/lib/junit-3.8.2.jar b/org.argeo.slc/lib/junit-3.8.2.jar
deleted file mode 100644 (file)
index c8f711d..0000000
Binary files a/org.argeo.slc/lib/junit-3.8.2.jar and /dev/null differ
diff --git a/org.argeo.slc/lib/log4j-1.2.14.jar b/org.argeo.slc/lib/log4j-1.2.14.jar
deleted file mode 100644 (file)
index 6251307..0000000
Binary files a/org.argeo.slc/lib/log4j-1.2.14.jar and /dev/null differ
diff --git a/org.argeo.slc/lib/spring-2.0.6.jar b/org.argeo.slc/lib/spring-2.0.6.jar
deleted file mode 100644 (file)
index 88d4581..0000000
Binary files a/org.argeo.slc/lib/spring-2.0.6.jar and /dev/null differ
diff --git a/org.argeo.slc/pom.xml b/org.argeo.slc/pom.xml
deleted file mode 100644 (file)
index 0555c11..0000000
+++ /dev/null
@@ -1,191 +0,0 @@
-<?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
diff --git a/org.argeo.slc/src/assembly/with-dependencies.xml b/org.argeo.slc/src/assembly/with-dependencies.xml
deleted file mode 100644 (file)
index 821bbce..0000000
+++ /dev/null
@@ -1,37 +0,0 @@
-<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
diff --git a/org.argeo.slc/src/main/config/bin/slc b/org.argeo.slc/src/main/config/bin/slc
deleted file mode 100755 (executable)
index bcc63c8..0000000
+++ /dev/null
@@ -1,326 +0,0 @@
-#! /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
diff --git a/org.argeo.slc/src/main/config/bin/slc.bat b/org.argeo.slc/src/main/config/bin/slc.bat
deleted file mode 100644 (file)
index f8fb7d5..0000000
+++ /dev/null
@@ -1,226 +0,0 @@
-@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
diff --git a/org.argeo.slc/src/main/config/include/ant/slc-factory-macrodefs.xml b/org.argeo.slc/src/main/config/include/ant/slc-factory-macrodefs.xml
deleted file mode 100644 (file)
index 4cc0436..0000000
+++ /dev/null
@@ -1,94 +0,0 @@
-<!--\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
diff --git a/org.argeo.slc/src/main/config/include/ant/slc-factory-targets.xml b/org.argeo.slc/src/main/config/include/ant/slc-factory-targets.xml
deleted file mode 100644 (file)
index b76dbcb..0000000
+++ /dev/null
@@ -1,233 +0,0 @@
-<!--\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
diff --git a/org.argeo.slc/src/main/java/META-INF/services/org.apache.tools.ant.ProjectHelper b/org.argeo.slc/src/main/java/META-INF/services/org.apache.tools.ant.ProjectHelper
deleted file mode 100644 (file)
index 1c222d5..0000000
+++ /dev/null
@@ -1 +0,0 @@
-org.argeo.slc.ant.SlcProjectHelper
\ No newline at end of file
diff --git a/org.argeo.slc/src/main/java/org/argeo/slc/ant/AntRegistryUtil.java b/org.argeo.slc/src/main/java/org/argeo/slc/ant/AntRegistryUtil.java
deleted file mode 100644 (file)
index c73b590..0000000
+++ /dev/null
@@ -1,74 +0,0 @@
-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
diff --git a/org.argeo.slc/src/main/java/org/argeo/slc/ant/SlcAntConfig.java b/org.argeo.slc/src/main/java/org/argeo/slc/ant/SlcAntConfig.java
deleted file mode 100644 (file)
index 6f805a7..0000000
+++ /dev/null
@@ -1,339 +0,0 @@
-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
diff --git a/org.argeo.slc/src/main/java/org/argeo/slc/ant/SlcAntException.java b/org.argeo.slc/src/main/java/org/argeo/slc/ant/SlcAntException.java
deleted file mode 100644 (file)
index 854df33..0000000
+++ /dev/null
@@ -1,19 +0,0 @@
-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
diff --git a/org.argeo.slc/src/main/java/org/argeo/slc/ant/SlcProjectHelper.java b/org.argeo.slc/src/main/java/org/argeo/slc/ant/SlcProjectHelper.java
deleted file mode 100644 (file)
index 4cc2d9d..0000000
+++ /dev/null
@@ -1,168 +0,0 @@
-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
diff --git a/org.argeo.slc/src/main/java/org/argeo/slc/ant/deploy/SlcDeployTask.java b/org.argeo.slc/src/main/java/org/argeo/slc/ant/deploy/SlcDeployTask.java
deleted file mode 100644 (file)
index 36c2254..0000000
+++ /dev/null
@@ -1,75 +0,0 @@
-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
diff --git a/org.argeo.slc/src/main/java/org/argeo/slc/ant/deploy/package.html b/org.argeo.slc/src/main/java/org/argeo/slc/ant/deploy/package.html
deleted file mode 100644 (file)
index 76582d1..0000000
+++ /dev/null
@@ -1,6 +0,0 @@
-<html>\r
-<head></head>\r
-<body>\r
-Integration of SLC Deploy in Ant.\r
-</body>\r
-</html>
\ No newline at end of file
diff --git a/org.argeo.slc/src/main/java/org/argeo/slc/ant/package.html b/org.argeo.slc/src/main/java/org/argeo/slc/ant/package.html
deleted file mode 100644 (file)
index 9f36fb1..0000000
+++ /dev/null
@@ -1,38 +0,0 @@
-<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
diff --git a/org.argeo.slc/src/main/java/org/argeo/slc/ant/spring/AbstractSpringArg.java b/org.argeo.slc/src/main/java/org/argeo/slc/ant/spring/AbstractSpringArg.java
deleted file mode 100644 (file)
index 6c64235..0000000
+++ /dev/null
@@ -1,63 +0,0 @@
-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
diff --git a/org.argeo.slc/src/main/java/org/argeo/slc/ant/spring/AbstractSpringTask.java b/org.argeo.slc/src/main/java/org/argeo/slc/ant/spring/AbstractSpringTask.java
deleted file mode 100644 (file)
index 3e8cc8b..0000000
+++ /dev/null
@@ -1,18 +0,0 @@
-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
diff --git a/org.argeo.slc/src/main/java/org/argeo/slc/ant/spring/OverrideArg.java b/org.argeo.slc/src/main/java/org/argeo/slc/ant/spring/OverrideArg.java
deleted file mode 100644 (file)
index 20508a6..0000000
+++ /dev/null
@@ -1,89 +0,0 @@
-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
diff --git a/org.argeo.slc/src/main/java/org/argeo/slc/ant/spring/package.html b/org.argeo.slc/src/main/java/org/argeo/slc/ant/spring/package.html
deleted file mode 100644 (file)
index 6d141d9..0000000
+++ /dev/null
@@ -1,6 +0,0 @@
-<html>\r
-<head></head>\r
-<body>\r
-Integration of Spring in Ant.\r
-</body>\r
-</html>
\ No newline at end of file
diff --git a/org.argeo.slc/src/main/java/org/argeo/slc/ant/structure/SAwareTask.java b/org.argeo.slc/src/main/java/org/argeo/slc/ant/structure/SAwareTask.java
deleted file mode 100644 (file)
index 3f4d358..0000000
+++ /dev/null
@@ -1,122 +0,0 @@
-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
diff --git a/org.argeo.slc/src/main/java/org/argeo/slc/ant/structure/package.html b/org.argeo.slc/src/main/java/org/argeo/slc/ant/structure/package.html
deleted file mode 100644 (file)
index 99e45d3..0000000
+++ /dev/null
@@ -1,6 +0,0 @@
-<html>\r
-<head></head>\r
-<body>\r
-Integration of SLC Structure in Ant.\r
-</body>\r
-</html>
\ No newline at end of file
diff --git a/org.argeo.slc/src/main/java/org/argeo/slc/ant/test/SlcCloseTestResultTask.java b/org.argeo.slc/src/main/java/org/argeo/slc/ant/test/SlcCloseTestResultTask.java
deleted file mode 100644 (file)
index bc0c2ba..0000000
+++ /dev/null
@@ -1,24 +0,0 @@
-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
diff --git a/org.argeo.slc/src/main/java/org/argeo/slc/ant/test/SlcReportTask.java b/org.argeo.slc/src/main/java/org/argeo/slc/ant/test/SlcReportTask.java
deleted file mode 100644 (file)
index 7587762..0000000
+++ /dev/null
@@ -1,40 +0,0 @@
-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
diff --git a/org.argeo.slc/src/main/java/org/argeo/slc/ant/test/SlcTestTask.java b/org.argeo.slc/src/main/java/org/argeo/slc/ant/test/SlcTestTask.java
deleted file mode 100644 (file)
index 96b5176..0000000
+++ /dev/null
@@ -1,134 +0,0 @@
-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
diff --git a/org.argeo.slc/src/main/java/org/argeo/slc/ant/test/package.html b/org.argeo.slc/src/main/java/org/argeo/slc/ant/test/package.html
deleted file mode 100644 (file)
index 179159b..0000000
+++ /dev/null
@@ -1,6 +0,0 @@
-<html>\r
-<head></head>\r
-<body>\r
-Integration of SLC Test in Ant.\r
-</body>\r
-</html>
\ No newline at end of file
diff --git a/org.argeo.slc/src/main/java/org/argeo/slc/core/SlcException.java b/org.argeo.slc/src/main/java/org/argeo/slc/core/SlcException.java
deleted file mode 100644 (file)
index 7daffaf..0000000
+++ /dev/null
@@ -1,17 +0,0 @@
-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
diff --git a/org.argeo.slc/src/main/java/org/argeo/slc/core/UnsupportedException.java b/org.argeo.slc/src/main/java/org/argeo/slc/core/UnsupportedException.java
deleted file mode 100644 (file)
index 76f6565..0000000
+++ /dev/null
@@ -1,41 +0,0 @@
-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
diff --git a/org.argeo.slc/src/main/java/org/argeo/slc/core/build/DistributionId.java b/org.argeo.slc/src/main/java/org/argeo/slc/core/build/DistributionId.java
deleted file mode 100644 (file)
index 9262479..0000000
+++ /dev/null
@@ -1,6 +0,0 @@
-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
diff --git a/org.argeo.slc/src/main/java/org/argeo/slc/core/build/VersionDistributionId.java b/org.argeo.slc/src/main/java/org/argeo/slc/core/build/VersionDistributionId.java
deleted file mode 100644 (file)
index 27ac020..0000000
+++ /dev/null
@@ -1,82 +0,0 @@
-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
diff --git a/org.argeo.slc/src/main/java/org/argeo/slc/core/build/package.html b/org.argeo.slc/src/main/java/org/argeo/slc/core/build/package.html
deleted file mode 100644 (file)
index 5da2052..0000000
+++ /dev/null
@@ -1,6 +0,0 @@
-<html>\r
-<head></head>\r
-<body>\r
-SLC Build: building of software systems.\r
-</body>\r
-</html>
\ No newline at end of file
diff --git a/org.argeo.slc/src/main/java/org/argeo/slc/core/deploy/DeployedSystem.java b/org.argeo.slc/src/main/java/org/argeo/slc/core/deploy/DeployedSystem.java
deleted file mode 100644 (file)
index ccec874..0000000
+++ /dev/null
@@ -1,6 +0,0 @@
-package org.argeo.slc.core.deploy;\r
-\r
-/** An instance of a software system. */\r
-public interface DeployedSystem {\r
-       public DeployedSystemId getDeployedSystemId();\r
-}\r
diff --git a/org.argeo.slc/src/main/java/org/argeo/slc/core/deploy/DeployedSystemId.java b/org.argeo.slc/src/main/java/org/argeo/slc/core/deploy/DeployedSystemId.java
deleted file mode 100644 (file)
index 43f5f6a..0000000
+++ /dev/null
@@ -1,8 +0,0 @@
-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
diff --git a/org.argeo.slc/src/main/java/org/argeo/slc/core/deploy/Deployment.java b/org.argeo.slc/src/main/java/org/argeo/slc/core/deploy/Deployment.java
deleted file mode 100644 (file)
index 4a74030..0000000
+++ /dev/null
@@ -1,9 +0,0 @@
-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
diff --git a/org.argeo.slc/src/main/java/org/argeo/slc/core/deploy/DeploymentData.java b/org.argeo.slc/src/main/java/org/argeo/slc/core/deploy/DeploymentData.java
deleted file mode 100644 (file)
index 0148ea5..0000000
+++ /dev/null
@@ -1,5 +0,0 @@
-package org.argeo.slc.core.deploy;\r
-\r
-public interface DeploymentData {\r
-\r
-}\r
diff --git a/org.argeo.slc/src/main/java/org/argeo/slc/core/deploy/ExecutableDeployment.java b/org.argeo.slc/src/main/java/org/argeo/slc/core/deploy/ExecutableDeployment.java
deleted file mode 100644 (file)
index 284e6c5..0000000
+++ /dev/null
@@ -1,5 +0,0 @@
-package org.argeo.slc.core.deploy;\r
-\r
-public interface ExecutableDeployment extends Deployment {\r
-       public void execute();\r
-}\r
diff --git a/org.argeo.slc/src/main/java/org/argeo/slc/core/deploy/NumericDSId.java b/org.argeo.slc/src/main/java/org/argeo/slc/core/deploy/NumericDSId.java
deleted file mode 100644 (file)
index 494fc8a..0000000
+++ /dev/null
@@ -1,40 +0,0 @@
-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
diff --git a/org.argeo.slc/src/main/java/org/argeo/slc/core/deploy/TargetData.java b/org.argeo.slc/src/main/java/org/argeo/slc/core/deploy/TargetData.java
deleted file mode 100644 (file)
index 2fe155d..0000000
+++ /dev/null
@@ -1,5 +0,0 @@
-package org.argeo.slc.core.deploy;\r
-\r
-public interface TargetData {\r
-\r
-}\r
diff --git a/org.argeo.slc/src/main/java/org/argeo/slc/core/deploy/WritableDeployment.java b/org.argeo.slc/src/main/java/org/argeo/slc/core/deploy/WritableDeployment.java
deleted file mode 100644 (file)
index 15c3ccb..0000000
+++ /dev/null
@@ -1,9 +0,0 @@
-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
diff --git a/org.argeo.slc/src/main/java/org/argeo/slc/core/deploy/package.html b/org.argeo.slc/src/main/java/org/argeo/slc/core/deploy/package.html
deleted file mode 100644 (file)
index f3a4c5b..0000000
+++ /dev/null
@@ -1,6 +0,0 @@
-<html>\r
-<head></head>\r
-<body>\r
-SLC Deploy: deployment of software systems.\r
-</body>\r
-</html>
\ No newline at end of file
diff --git a/org.argeo.slc/src/main/java/org/argeo/slc/core/package.html b/org.argeo.slc/src/main/java/org/argeo/slc/core/package.html
deleted file mode 100644 (file)
index db808c8..0000000
+++ /dev/null
@@ -1,6 +0,0 @@
-<html>\r
-<head></head>\r
-<body>\r
-Common classes of teh SLC framework.\r
-</body>\r
-</html>
\ No newline at end of file
diff --git a/org.argeo.slc/src/main/java/org/argeo/slc/core/structure/DefaultSRegistry.java b/org.argeo.slc/src/main/java/org/argeo/slc/core/structure/DefaultSRegistry.java
deleted file mode 100644 (file)
index f59fc65..0000000
+++ /dev/null
@@ -1,61 +0,0 @@
-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
diff --git a/org.argeo.slc/src/main/java/org/argeo/slc/core/structure/SimpleSElement.java b/org.argeo.slc/src/main/java/org/argeo/slc/core/structure/SimpleSElement.java
deleted file mode 100644 (file)
index 8681865..0000000
+++ /dev/null
@@ -1,45 +0,0 @@
-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
diff --git a/org.argeo.slc/src/main/java/org/argeo/slc/core/structure/StructureAware.java b/org.argeo.slc/src/main/java/org/argeo/slc/core/structure/StructureAware.java
deleted file mode 100644 (file)
index 68fd13b..0000000
+++ /dev/null
@@ -1,10 +0,0 @@
-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
diff --git a/org.argeo.slc/src/main/java/org/argeo/slc/core/structure/StructureElement.java b/org.argeo.slc/src/main/java/org/argeo/slc/core/structure/StructureElement.java
deleted file mode 100644 (file)
index d842839..0000000
+++ /dev/null
@@ -1,10 +0,0 @@
-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
diff --git a/org.argeo.slc/src/main/java/org/argeo/slc/core/structure/StructurePath.java b/org.argeo.slc/src/main/java/org/argeo/slc/core/structure/StructurePath.java
deleted file mode 100644 (file)
index 452dc95..0000000
+++ /dev/null
@@ -1,16 +0,0 @@
-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
diff --git a/org.argeo.slc/src/main/java/org/argeo/slc/core/structure/StructureRegistry.java b/org.argeo.slc/src/main/java/org/argeo/slc/core/structure/StructureRegistry.java
deleted file mode 100644 (file)
index 6461ee5..0000000
+++ /dev/null
@@ -1,55 +0,0 @@
-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
diff --git a/org.argeo.slc/src/main/java/org/argeo/slc/core/structure/package.html b/org.argeo.slc/src/main/java/org/argeo/slc/core/structure/package.html
deleted file mode 100644 (file)
index d9bab8a..0000000
+++ /dev/null
@@ -1,6 +0,0 @@
-<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
diff --git a/org.argeo.slc/src/main/java/org/argeo/slc/core/structure/tree/TreeSPath.java b/org.argeo.slc/src/main/java/org/argeo/slc/core/structure/tree/TreeSPath.java
deleted file mode 100644 (file)
index 2efeb15..0000000
+++ /dev/null
@@ -1,175 +0,0 @@
-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
diff --git a/org.argeo.slc/src/main/java/org/argeo/slc/core/structure/tree/TreeSRegistry.java b/org.argeo.slc/src/main/java/org/argeo/slc/core/structure/tree/TreeSRegistry.java
deleted file mode 100644 (file)
index e672843..0000000
+++ /dev/null
@@ -1,96 +0,0 @@
-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
diff --git a/org.argeo.slc/src/main/java/org/argeo/slc/core/structure/tree/package.html b/org.argeo.slc/src/main/java/org/argeo/slc/core/structure/tree/package.html
deleted file mode 100644 (file)
index a2a51e4..0000000
+++ /dev/null
@@ -1,6 +0,0 @@
-<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
diff --git a/org.argeo.slc/src/main/java/org/argeo/slc/core/test/ExecutableTestRun.java b/org.argeo.slc/src/main/java/org/argeo/slc/core/test/ExecutableTestRun.java
deleted file mode 100644 (file)
index 3421679..0000000
+++ /dev/null
@@ -1,9 +0,0 @@
-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
diff --git a/org.argeo.slc/src/main/java/org/argeo/slc/core/test/IncompatibleTestDataException.java b/org.argeo.slc/src/main/java/org/argeo/slc/core/test/IncompatibleTestDataException.java
deleted file mode 100644 (file)
index db4184d..0000000
+++ /dev/null
@@ -1,18 +0,0 @@
-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
diff --git a/org.argeo.slc/src/main/java/org/argeo/slc/core/test/NumericTRId.java b/org.argeo.slc/src/main/java/org/argeo/slc/core/test/NumericTRId.java
deleted file mode 100644 (file)
index 185d200..0000000
+++ /dev/null
@@ -1,60 +0,0 @@
-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
diff --git a/org.argeo.slc/src/main/java/org/argeo/slc/core/test/SimpleResultPart.java b/org.argeo.slc/src/main/java/org/argeo/slc/core/test/SimpleResultPart.java
deleted file mode 100644 (file)
index 249fd21..0000000
+++ /dev/null
@@ -1,82 +0,0 @@
-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
diff --git a/org.argeo.slc/src/main/java/org/argeo/slc/core/test/SimpleTestResult.java b/org.argeo.slc/src/main/java/org/argeo/slc/core/test/SimpleTestResult.java
deleted file mode 100644 (file)
index 9ef6cde..0000000
+++ /dev/null
@@ -1,48 +0,0 @@
-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
diff --git a/org.argeo.slc/src/main/java/org/argeo/slc/core/test/SimpleTestRun.java b/org.argeo.slc/src/main/java/org/argeo/slc/core/test/SimpleTestRun.java
deleted file mode 100644 (file)
index c548f9d..0000000
+++ /dev/null
@@ -1,52 +0,0 @@
-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
diff --git a/org.argeo.slc/src/main/java/org/argeo/slc/core/test/TestData.java b/org.argeo.slc/src/main/java/org/argeo/slc/core/test/TestData.java
deleted file mode 100644 (file)
index 4105e09..0000000
+++ /dev/null
@@ -1,9 +0,0 @@
-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
diff --git a/org.argeo.slc/src/main/java/org/argeo/slc/core/test/TestDefinition.java b/org.argeo.slc/src/main/java/org/argeo/slc/core/test/TestDefinition.java
deleted file mode 100644 (file)
index 7c75d6a..0000000
+++ /dev/null
@@ -1,10 +0,0 @@
-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
diff --git a/org.argeo.slc/src/main/java/org/argeo/slc/core/test/TestReport.java b/org.argeo.slc/src/main/java/org/argeo/slc/core/test/TestReport.java
deleted file mode 100644 (file)
index 8256e86..0000000
+++ /dev/null
@@ -1,10 +0,0 @@
-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
diff --git a/org.argeo.slc/src/main/java/org/argeo/slc/core/test/TestResult.java b/org.argeo.slc/src/main/java/org/argeo/slc/core/test/TestResult.java
deleted file mode 100644 (file)
index 860fe1c..0000000
+++ /dev/null
@@ -1,24 +0,0 @@
-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
diff --git a/org.argeo.slc/src/main/java/org/argeo/slc/core/test/TestResultId.java b/org.argeo.slc/src/main/java/org/argeo/slc/core/test/TestResultId.java
deleted file mode 100644 (file)
index 9440287..0000000
+++ /dev/null
@@ -1,10 +0,0 @@
-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
diff --git a/org.argeo.slc/src/main/java/org/argeo/slc/core/test/TestResultListener.java b/org.argeo.slc/src/main/java/org/argeo/slc/core/test/TestResultListener.java
deleted file mode 100644 (file)
index 0d774a7..0000000
+++ /dev/null
@@ -1,11 +0,0 @@
-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
diff --git a/org.argeo.slc/src/main/java/org/argeo/slc/core/test/TestResultPart.java b/org.argeo.slc/src/main/java/org/argeo/slc/core/test/TestResultPart.java
deleted file mode 100644 (file)
index 707c00f..0000000
+++ /dev/null
@@ -1,12 +0,0 @@
-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
diff --git a/org.argeo.slc/src/main/java/org/argeo/slc/core/test/TestRun.java b/org.argeo.slc/src/main/java/org/argeo/slc/core/test/TestRun.java
deleted file mode 100644 (file)
index 073acb5..0000000
+++ /dev/null
@@ -1,18 +0,0 @@
-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
diff --git a/org.argeo.slc/src/main/java/org/argeo/slc/core/test/TestStatus.java b/org.argeo.slc/src/main/java/org/argeo/slc/core/test/TestStatus.java
deleted file mode 100644 (file)
index 0f54d96..0000000
+++ /dev/null
@@ -1,25 +0,0 @@
-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
diff --git a/org.argeo.slc/src/main/java/org/argeo/slc/core/test/WritableTestRun.java b/org.argeo.slc/src/main/java/org/argeo/slc/core/test/WritableTestRun.java
deleted file mode 100644 (file)
index 8cfe2b7..0000000
+++ /dev/null
@@ -1,14 +0,0 @@
-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
diff --git a/org.argeo.slc/src/main/java/org/argeo/slc/core/test/package.html b/org.argeo.slc/src/main/java/org/argeo/slc/core/test/package.html
deleted file mode 100644 (file)
index c70d2d1..0000000
+++ /dev/null
@@ -1,6 +0,0 @@
-<html>\r
-<head></head>\r
-<body>\r
-SLC Test: test of software systems.\r
-</body>\r
-</html>
\ No newline at end of file
diff --git a/org.argeo.slc/src/main/java/org/argeo/slc/core/test/tree/AsynchronousTreeTestResultListener.java b/org.argeo.slc/src/main/java/org/argeo/slc/core/test/tree/AsynchronousTreeTestResultListener.java
deleted file mode 100644 (file)
index c22c110..0000000
+++ /dev/null
@@ -1,137 +0,0 @@
-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
diff --git a/org.argeo.slc/src/main/java/org/argeo/slc/core/test/tree/CompositeTreeTestDefinition.java b/org.argeo.slc/src/main/java/org/argeo/slc/core/test/tree/CompositeTreeTestDefinition.java
deleted file mode 100644 (file)
index 2547906..0000000
+++ /dev/null
@@ -1,86 +0,0 @@
-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
diff --git a/org.argeo.slc/src/main/java/org/argeo/slc/core/test/tree/PartSubList.java b/org.argeo.slc/src/main/java/org/argeo/slc/core/test/tree/PartSubList.java
deleted file mode 100644 (file)
index 113ef48..0000000
+++ /dev/null
@@ -1,41 +0,0 @@
-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
diff --git a/org.argeo.slc/src/main/java/org/argeo/slc/core/test/tree/TreeTestResult.java b/org.argeo.slc/src/main/java/org/argeo/slc/core/test/tree/TreeTestResult.java
deleted file mode 100644 (file)
index 3124b05..0000000
+++ /dev/null
@@ -1,151 +0,0 @@
-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
diff --git a/org.argeo.slc/src/main/java/org/argeo/slc/core/test/tree/TreeTestResultLogger.java b/org.argeo.slc/src/main/java/org/argeo/slc/core/test/tree/TreeTestResultLogger.java
deleted file mode 100644 (file)
index c09c18a..0000000
+++ /dev/null
@@ -1,40 +0,0 @@
-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
diff --git a/org.argeo.slc/src/main/java/org/argeo/slc/core/test/tree/TreeTestResultPersister.java b/org.argeo.slc/src/main/java/org/argeo/slc/core/test/tree/TreeTestResultPersister.java
deleted file mode 100644 (file)
index ca92b49..0000000
+++ /dev/null
@@ -1,130 +0,0 @@
-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
diff --git a/org.argeo.slc/src/main/java/org/argeo/slc/core/test/tree/htmlreport/FullHtmlTreeReport.java b/org.argeo.slc/src/main/java/org/argeo/slc/core/test/tree/htmlreport/FullHtmlTreeReport.java
deleted file mode 100644 (file)
index 4afd8dc..0000000
+++ /dev/null
@@ -1,168 +0,0 @@
-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
diff --git a/org.argeo.slc/src/main/java/org/argeo/slc/core/test/tree/htmlreport/ResultPage.java b/org.argeo.slc/src/main/java/org/argeo/slc/core/test/tree/htmlreport/ResultPage.java
deleted file mode 100644 (file)
index 22fa7a3..0000000
+++ /dev/null
@@ -1,216 +0,0 @@
-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("&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;");\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
diff --git a/org.argeo.slc/src/main/java/org/argeo/slc/core/test/tree/htmlreport/ResultsList.java b/org.argeo.slc/src/main/java/org/argeo/slc/core/test/tree/htmlreport/ResultsList.java
deleted file mode 100644 (file)
index ad9b2bf..0000000
+++ /dev/null
@@ -1,63 +0,0 @@
-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
diff --git a/org.argeo.slc/src/main/java/org/argeo/slc/core/test/tree/htmlreport/package.html b/org.argeo.slc/src/main/java/org/argeo/slc/core/test/tree/htmlreport/package.html
deleted file mode 100644 (file)
index b10bc3d..0000000
+++ /dev/null
@@ -1,6 +0,0 @@
-<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
diff --git a/org.argeo.slc/src/main/java/org/argeo/slc/core/test/tree/package.html b/org.argeo.slc/src/main/java/org/argeo/slc/core/test/tree/package.html
deleted file mode 100644 (file)
index 8ad1203..0000000
+++ /dev/null
@@ -1,6 +0,0 @@
-<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
diff --git a/org.argeo.slc/src/main/java/org/argeo/slc/dao/structure/SimpleSElementDao.java b/org.argeo.slc/src/main/java/org/argeo/slc/dao/structure/SimpleSElementDao.java
deleted file mode 100644 (file)
index bed950f..0000000
+++ /dev/null
@@ -1,5 +0,0 @@
-package org.argeo.slc.dao.structure;\r
-\r
-public interface SimpleSElementDao {\r
-\r
-}\r
diff --git a/org.argeo.slc/src/main/java/org/argeo/slc/dao/structure/package.html b/org.argeo.slc/src/main/java/org/argeo/slc/dao/structure/package.html
deleted file mode 100644 (file)
index f8b5ae7..0000000
+++ /dev/null
@@ -1,6 +0,0 @@
-<html>\r
-<head></head>\r
-<body>\r
-DAOs for the core structure objects.\r
-</body>\r
-</html>
\ No newline at end of file
diff --git a/org.argeo.slc/src/main/java/org/argeo/slc/dao/structure/tree/TreeSPathDao.java b/org.argeo.slc/src/main/java/org/argeo/slc/dao/structure/tree/TreeSPathDao.java
deleted file mode 100644 (file)
index 0ebca0d..0000000
+++ /dev/null
@@ -1,11 +0,0 @@
-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
diff --git a/org.argeo.slc/src/main/java/org/argeo/slc/dao/structure/tree/TreeSRegistryDao.java b/org.argeo.slc/src/main/java/org/argeo/slc/dao/structure/tree/TreeSRegistryDao.java
deleted file mode 100644 (file)
index 99e4173..0000000
+++ /dev/null
@@ -1,20 +0,0 @@
-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
diff --git a/org.argeo.slc/src/main/java/org/argeo/slc/dao/structure/tree/package.html b/org.argeo.slc/src/main/java/org/argeo/slc/dao/structure/tree/package.html
deleted file mode 100644 (file)
index b8cd812..0000000
+++ /dev/null
@@ -1,6 +0,0 @@
-<html>\r
-<head></head>\r
-<body>\r
-DAOs for the tree-based structure objects.\r
-</body>\r
-</html>
\ No newline at end of file
diff --git a/org.argeo.slc/src/main/java/org/argeo/slc/dao/test/TestResultDao.java b/org.argeo.slc/src/main/java/org/argeo/slc/dao/test/TestResultDao.java
deleted file mode 100644 (file)
index f64cfe7..0000000
+++ /dev/null
@@ -1,25 +0,0 @@
-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
diff --git a/org.argeo.slc/src/main/java/org/argeo/slc/dao/test/package.html b/org.argeo.slc/src/main/java/org/argeo/slc/dao/test/package.html
deleted file mode 100644 (file)
index 38ae2b5..0000000
+++ /dev/null
@@ -1,6 +0,0 @@
-<html>\r
-<head></head>\r
-<body>\r
-Data Access Objects for SLC Test.\r
-</body>\r
-</html>
\ No newline at end of file
diff --git a/org.argeo.slc/src/main/java/org/argeo/slc/diff/DataInterpreter.java b/org.argeo.slc/src/main/java/org/argeo/slc/diff/DataInterpreter.java
deleted file mode 100644 (file)
index 7a57b05..0000000
+++ /dev/null
@@ -1,20 +0,0 @@
-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
diff --git a/org.argeo.slc/src/main/java/org/argeo/slc/diff/Diff.java b/org.argeo.slc/src/main/java/org/argeo/slc/diff/Diff.java
deleted file mode 100644 (file)
index 0b28996..0000000
+++ /dev/null
@@ -1,9 +0,0 @@
-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
diff --git a/org.argeo.slc/src/main/java/org/argeo/slc/diff/DiffIssue.java b/org.argeo.slc/src/main/java/org/argeo/slc/diff/DiffIssue.java
deleted file mode 100644 (file)
index 5517b3a..0000000
+++ /dev/null
@@ -1,22 +0,0 @@
-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
diff --git a/org.argeo.slc/src/main/java/org/argeo/slc/diff/DiffKey.java b/org.argeo.slc/src/main/java/org/argeo/slc/diff/DiffKey.java
deleted file mode 100644 (file)
index 9d34f72..0000000
+++ /dev/null
@@ -1,9 +0,0 @@
-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
diff --git a/org.argeo.slc/src/main/java/org/argeo/slc/diff/DiffMissing.java b/org.argeo.slc/src/main/java/org/argeo/slc/diff/DiffMissing.java
deleted file mode 100644 (file)
index da44766..0000000
+++ /dev/null
@@ -1,31 +0,0 @@
-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
diff --git a/org.argeo.slc/src/main/java/org/argeo/slc/diff/DiffNotMatched.java b/org.argeo.slc/src/main/java/org/argeo/slc/diff/DiffNotMatched.java
deleted file mode 100644 (file)
index 04f7acf..0000000
+++ /dev/null
@@ -1,27 +0,0 @@
-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
diff --git a/org.argeo.slc/src/main/java/org/argeo/slc/diff/DiffPosition.java b/org.argeo.slc/src/main/java/org/argeo/slc/diff/DiffPosition.java
deleted file mode 100644 (file)
index 302c0af..0000000
+++ /dev/null
@@ -1,16 +0,0 @@
-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
diff --git a/org.argeo.slc/src/main/java/org/argeo/slc/diff/DiffResult.java b/org.argeo.slc/src/main/java/org/argeo/slc/diff/DiffResult.java
deleted file mode 100644 (file)
index 0e29fdd..0000000
+++ /dev/null
@@ -1,12 +0,0 @@
-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
diff --git a/org.argeo.slc/src/main/java/org/argeo/slc/diff/RelatedFile.java b/org.argeo.slc/src/main/java/org/argeo/slc/diff/RelatedFile.java
deleted file mode 100644 (file)
index 7579683..0000000
+++ /dev/null
@@ -1,9 +0,0 @@
-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
diff --git a/org.argeo.slc/src/main/java/org/argeo/slc/diff/SimpleDiffResult.java b/org.argeo.slc/src/main/java/org/argeo/slc/diff/SimpleDiffResult.java
deleted file mode 100644 (file)
index 6eefb7f..0000000
+++ /dev/null
@@ -1,14 +0,0 @@
-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
diff --git a/org.argeo.slc/src/main/java/org/argeo/slc/diff/TableDiffPosition.java b/org.argeo.slc/src/main/java/org/argeo/slc/diff/TableDiffPosition.java
deleted file mode 100644 (file)
index d8a3d78..0000000
+++ /dev/null
@@ -1,66 +0,0 @@
-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
diff --git a/org.argeo.slc/src/main/java/org/argeo/slc/diff/Tolerance.java b/org.argeo.slc/src/main/java/org/argeo/slc/diff/Tolerance.java
deleted file mode 100644 (file)
index b44a712..0000000
+++ /dev/null
@@ -1,18 +0,0 @@
-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
diff --git a/org.argeo.slc/src/main/java/org/argeo/slc/diff/XPathDiffPosition.java b/org.argeo.slc/src/main/java/org/argeo/slc/diff/XPathDiffPosition.java
deleted file mode 100644 (file)
index f295eb9..0000000
+++ /dev/null
@@ -1,27 +0,0 @@
-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
diff --git a/org.argeo.slc/src/main/java/org/argeo/slc/diff/package.html b/org.argeo.slc/src/main/java/org/argeo/slc/diff/package.html
deleted file mode 100644 (file)
index a58e685..0000000
+++ /dev/null
@@ -1,6 +0,0 @@
-<html>\r
-<head></head>\r
-<body>\r
-Abstraction of diff comparison with structured results.\r
-</body>\r
-</html>
\ No newline at end of file
diff --git a/org.argeo.slc/src/main/java/org/argeo/slc/hibernate/structure/tree/TreeSPathDaoHibernate.java b/org.argeo.slc/src/main/java/org/argeo/slc/hibernate/structure/tree/TreeSPathDaoHibernate.java
deleted file mode 100644 (file)
index e20e3de..0000000
+++ /dev/null
@@ -1,64 +0,0 @@
-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
diff --git a/org.argeo.slc/src/main/java/org/argeo/slc/hibernate/structure/tree/TreeSRegistryDaoHibernate.java b/org.argeo.slc/src/main/java/org/argeo/slc/hibernate/structure/tree/TreeSRegistryDaoHibernate.java
deleted file mode 100644 (file)
index 3effc45..0000000
+++ /dev/null
@@ -1,41 +0,0 @@
-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
diff --git a/org.argeo.slc/src/main/java/org/argeo/slc/hibernate/structure/tree/package.html b/org.argeo.slc/src/main/java/org/argeo/slc/hibernate/structure/tree/package.html
deleted file mode 100644 (file)
index 9b5cfa2..0000000
+++ /dev/null
@@ -1,6 +0,0 @@
-<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
diff --git a/org.argeo.slc/src/main/java/org/argeo/slc/hibernate/test/tree/TestResultDaoHibernate.java b/org.argeo.slc/src/main/java/org/argeo/slc/hibernate/test/tree/TestResultDaoHibernate.java
deleted file mode 100644 (file)
index afe76ab..0000000
+++ /dev/null
@@ -1,46 +0,0 @@
-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
diff --git a/org.argeo.slc/src/main/java/org/argeo/slc/hibernate/test/tree/package.html b/org.argeo.slc/src/main/java/org/argeo/slc/hibernate/test/tree/package.html
deleted file mode 100644 (file)
index 6042b07..0000000
+++ /dev/null
@@ -1,6 +0,0 @@
-<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
diff --git a/org.argeo.slc/src/main/java/org/argeo/slc/unit/DbModel.java b/org.argeo.slc/src/main/java/org/argeo/slc/unit/DbModel.java
deleted file mode 100644 (file)
index 504dffe..0000000
+++ /dev/null
@@ -1,47 +0,0 @@
-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
diff --git a/org.argeo.slc/src/main/java/org/argeo/slc/unit/IndependentDbTestCase.java b/org.argeo.slc/src/main/java/org/argeo/slc/unit/IndependentDbTestCase.java
deleted file mode 100644 (file)
index 8a0b07e..0000000
+++ /dev/null
@@ -1,125 +0,0 @@
-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
diff --git a/org.argeo.slc/src/main/java/org/argeo/slc/unit/SpringBasedTestCase.java b/org.argeo.slc/src/main/java/org/argeo/slc/unit/SpringBasedTestCase.java
deleted file mode 100644 (file)
index 3d6f0c8..0000000
+++ /dev/null
@@ -1,42 +0,0 @@
-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
diff --git a/org.argeo.slc/src/main/java/org/argeo/slc/unit/package.html b/org.argeo.slc/src/main/java/org/argeo/slc/unit/package.html
deleted file mode 100644 (file)
index 907430d..0000000
+++ /dev/null
@@ -1,6 +0,0 @@
-<html>\r
-<head></head>\r
-<body>\r
-Helpers for unit tests.\r
-</body>\r
-</html>
\ No newline at end of file
diff --git a/org.argeo.slc/src/main/resources/org/argeo/slc/ant/taskdefs.properties b/org.argeo.slc/src/main/resources/org/argeo/slc/ant/taskdefs.properties
deleted file mode 100644 (file)
index 85e0743..0000000
+++ /dev/null
@@ -1,5 +0,0 @@
-# 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
diff --git a/org.argeo.slc/src/main/resources/org/argeo/slc/core/test/tree/htmlreport/index.html b/org.argeo.slc/src/main/resources/org/argeo/slc/core/test/tree/htmlreport/index.html
deleted file mode 100644 (file)
index 32beed3..0000000
+++ /dev/null
@@ -1,16 +0,0 @@
-<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
diff --git a/org.argeo.slc/src/main/resources/org/argeo/slc/core/test/tree/htmlreport/style.css b/org.argeo.slc/src/main/resources/org/argeo/slc/core/test/tree/htmlreport/style.css
deleted file mode 100644 (file)
index 134c6b5..0000000
+++ /dev/null
@@ -1,64 +0,0 @@
-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
diff --git a/org.argeo.slc/src/main/resources/org/argeo/slc/hibernate/structure/SimpleSElement.hbm.xml b/org.argeo.slc/src/main/resources/org/argeo/slc/hibernate/structure/SimpleSElement.hbm.xml
deleted file mode 100644 (file)
index ed1d80c..0000000
+++ /dev/null
@@ -1,13 +0,0 @@
-<?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
diff --git a/org.argeo.slc/src/main/resources/org/argeo/slc/hibernate/structure/tree/TreeSPath.hbm.xml b/org.argeo.slc/src/main/resources/org/argeo/slc/hibernate/structure/tree/TreeSPath.hbm.xml
deleted file mode 100644 (file)
index d9934ee..0000000
+++ /dev/null
@@ -1,14 +0,0 @@
-<?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
diff --git a/org.argeo.slc/src/main/resources/org/argeo/slc/hibernate/structure/tree/TreeSRegistry.hbm.xml b/org.argeo.slc/src/main/resources/org/argeo/slc/hibernate/structure/tree/TreeSRegistry.hbm.xml
deleted file mode 100644 (file)
index 9ae3d76..0000000
+++ /dev/null
@@ -1,25 +0,0 @@
-<?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
diff --git a/org.argeo.slc/src/main/resources/org/argeo/slc/hibernate/test/NumericTRId.hbm.xml b/org.argeo.slc/src/main/resources/org/argeo/slc/hibernate/test/NumericTRId.hbm.xml
deleted file mode 100644 (file)
index ca9c5d9..0000000
+++ /dev/null
@@ -1,14 +0,0 @@
-<?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
diff --git a/org.argeo.slc/src/main/resources/org/argeo/slc/hibernate/test/SimpleResultPart.hbm.xml b/org.argeo.slc/src/main/resources/org/argeo/slc/hibernate/test/SimpleResultPart.hbm.xml
deleted file mode 100644 (file)
index 7b9fd79..0000000
+++ /dev/null
@@ -1,14 +0,0 @@
-<?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
diff --git a/org.argeo.slc/src/main/resources/org/argeo/slc/hibernate/test/TestResultId.hbm.xml b/org.argeo.slc/src/main/resources/org/argeo/slc/hibernate/test/TestResultId.hbm.xml
deleted file mode 100644 (file)
index dee13a6..0000000
+++ /dev/null
@@ -1,11 +0,0 @@
-<?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
diff --git a/org.argeo.slc/src/main/resources/org/argeo/slc/hibernate/test/tree/PartSubList.hbm.xml b/org.argeo.slc/src/main/resources/org/argeo/slc/hibernate/test/tree/PartSubList.hbm.xml
deleted file mode 100644 (file)
index f9740fe..0000000
+++ /dev/null
@@ -1,18 +0,0 @@
-<?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
diff --git a/org.argeo.slc/src/main/resources/org/argeo/slc/hibernate/test/tree/TreeTestResult.hbm.xml b/org.argeo.slc/src/main/resources/org/argeo/slc/hibernate/test/tree/TreeTestResult.hbm.xml
deleted file mode 100644 (file)
index 5b7bcb3..0000000
+++ /dev/null
@@ -1,26 +0,0 @@
-<?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
diff --git a/org.argeo.slc/src/site/apt/index.apt b/org.argeo.slc/src/site/apt/index.apt
deleted file mode 100644 (file)
index f414460..0000000
+++ /dev/null
@@ -1 +0,0 @@
-Argeo SLC Site
\ No newline at end of file
diff --git a/org.argeo.slc/src/test/java/org/argeo/slc/hibernate/structure/tree/TreeSPathDaoHibernateTest.java b/org.argeo.slc/src/test/java/org/argeo/slc/hibernate/structure/tree/TreeSPathDaoHibernateTest.java
deleted file mode 100644 (file)
index d383313..0000000
+++ /dev/null
@@ -1,30 +0,0 @@
-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
diff --git a/org.argeo.slc/src/test/java/org/argeo/slc/hibernate/structure/tree/TreeSRegistryDaoHibernateTest.java b/org.argeo.slc/src/test/java/org/argeo/slc/hibernate/structure/tree/TreeSRegistryDaoHibernateTest.java
deleted file mode 100644 (file)
index 7317994..0000000
+++ /dev/null
@@ -1,42 +0,0 @@
-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
diff --git a/org.argeo.slc/src/test/java/org/argeo/slc/hibernate/test/tree/TreeTestResultDaoHibernateTest.java b/org.argeo.slc/src/test/java/org/argeo/slc/hibernate/test/tree/TreeTestResultDaoHibernateTest.java
deleted file mode 100644 (file)
index 8ec8410..0000000
+++ /dev/null
@@ -1,73 +0,0 @@
-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
diff --git a/org.argeo.slc/src/test/resources/log4j.properties b/org.argeo.slc/src/test/resources/log4j.properties
deleted file mode 100644 (file)
index 6d9a400..0000000
+++ /dev/null
@@ -1,23 +0,0 @@
-# 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
diff --git a/org.argeo.slc/src/test/resources/org/argeo/slc/hibernate/applicationContext.xml b/org.argeo.slc/src/test/resources/org/argeo/slc/hibernate/applicationContext.xml
deleted file mode 100644 (file)
index cf320fd..0000000
+++ /dev/null
@@ -1,67 +0,0 @@
-<?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