blob: 83084b944ee02a04441e2974616466172c700928 [file] [log] [blame]
[comment
/*********************************************************************
* Copyright (c) 2019 Intecs Solutions SpA
*
* This program and the accompanying materials are made
* available under the terms of the Eclipse Public License 2.0
* which is available at https://www.eclipse.org/legal/epl-2.0/
*
* SPDX-License-Identifier: EPL-2.0
**********************************************************************/
/]
[comment encoding = UTF-8 /]
[module vulnerableComponentsTemplate('http://www.eclipse.org/uml2/5.0.0/UML')]
[import org::polarsys::chess::mobius::templates::projectFileTemplate /]
[template public vulnerableComponentsTemplate(model : Model, componentQN : String)]
[comment @main/]
[let componentName : String = getNameFromQN(componentQN)]
[file ('Vulnerable'.concat(componentName.concat('.cmp')), false, 'UTF-8')]
[let x : Integer = 100]
[let y : Integer = 150]
<?xml version="1.0" encoding="ISO-8859-1"?>
<class id="Mobius.ComposedModels.RepJoin.RepJoinInterface">
<int id="ClassVersion">1</int>
<class id="Mobius.BaseClasses.BaseInterfaceClass">
<int id="ClassVersion">3</int>
<string id="ModelName">Vulnerable[componentName/]</string>
<class id="Mobius.BaseClasses.BaseInfoClass">
<int id="ClassVersion">2</int>
</class>
<class id="Mobius.BaseClasses.BaseEditorClass">
<int id="ClassVersion">3</int>
<boolean id="HasPanel">true</boolean>
<class id="Mobius.BaseClasses.BasePanelClass">
<int id="ClassVersion">2</int>
<point id="Size of Panel">
<int id="x">500</int>
<int id="y">400</int>
</point>
<double id="ZoomFactor">1.0</double>
<boolean id="ShowGridEnabled">true</boolean>
<int id="ShowGridStep">10</int>
<boolean id="SnapGridEnabled">true</boolean>
<int id="SnapGridStep">10</int>
[comment stuff goes here /]
[let atomicBlocks : Sequence(Classifier) = getAtomicBlocks(model)]
[let block : Classifier = getBlockFromQN(atomicBlocks, componentQN)]
[let scenarios : Sequence(String) = getBlockAttackScenarios(block)]
<class id="Mobius.ComposedModels.Common.JoinPanelObject">
<int id="ClassVersion">3</int>
<class id="Mobius.BaseClasses.BaseVertexClass">
<int id="ClassVersion">3</int>
<class id="Mobius.BaseClasses.BasePanelObjectClass">
<int id="ClassVersion">5</int>
<string id="Name">Vulnerable[componentName/]</string>
<boolean id="ContainsLabel">true</boolean>
<boolean id="IsLabelShown">true</boolean>
</class>
<point id="CenterPoint">
<int id="x">100</int>
<int id="y">50</int>
</point>
</class>
[comment shared variables/]
[let allBlockAttacks : Sequence(String) = getAllBlockAttacks(block)]
<int id="SharingInfoSize">[allBlockAttacks->size()/]</int>
[/let]
[for(scenarioName : String | scenarios)]
[let attacks : Sequence(String) = getBlockAttacks(block, scenarioName)]
[for(attackName : String | attacks)]
<string id="NewSharedObjName">[attackName/]_success</string>
<string id="Function"></string>
<int id="FunctionIndex">-1</int>
<boolean id="actionFlag">false</boolean>
<vector id="FullAccessPathStrings">
<string id="0">[componentName/]-&gt;[attackName/]_success</string>
<string id="1">[scenarioName/]-&gt;[attackName/]_success</string>
</vector>
[/for]
[/let]
[/for]
</class>
[comment the affected component /]
<class id="Mobius.ComposedModels.Common.AtomicPanelObject">
<int id="ClassVersion">3</int>
<class id="Mobius.BaseClasses.BaseVertexClass">
<int id="ClassVersion">3</int>
<class id="Mobius.BaseClasses.BasePanelObjectClass">
<int id="ClassVersion">5</int>
<string id="Name">[componentName/]</string>
<boolean id="ContainsLabel">true</boolean>
<boolean id="IsLabelShown">true</boolean>
</class>
<point id="CenterPoint">
<int id="x">[x/]</int>
<int id="y">[y/]</int>
</point>
</class>
<string id="Model Name">[componentName/]</string>
</class>
<class id="Mobius.BaseClasses.BaseEdgeClass">
<int id="ClassVersion">3</int>
<int id="LineType">0</int>
<string id="StartVertex">Vulnerable[componentName/]</string>
<string id="FinishVertex">[componentName/]</string>
<boolean id="Arrows">false</boolean>
<vector id="PointList">
<point id="0">
<int id="x">100</int>
<int id="y">50</int>
</point>
<point id="1">
<int id="x">[x/]</int>
<int id="y">[y/]</int>
</point>
</vector>
</class>
[comment the attack scenarios /]
[for(scenarioName : String | scenarios)]
<class id="Mobius.ComposedModels.Common.AtomicPanelObject">
<int id="ClassVersion">3</int>
<class id="Mobius.BaseClasses.BaseVertexClass">
<int id="ClassVersion">3</int>
<class id="Mobius.BaseClasses.BasePanelObjectClass">
<int id="ClassVersion">5</int>
<string id="Name">[scenarioName/]</string>
<boolean id="ContainsLabel">true</boolean>
<boolean id="IsLabelShown">true</boolean>
</class>
<point id="CenterPoint">
<int id="x">[x + i*150/]</int>
<int id="y">[y/]</int>
</point>
</class>
<string id="Model Name">[scenarioName/]</string>
</class>
<class id="Mobius.BaseClasses.BaseEdgeClass">
<int id="ClassVersion">3</int>
<int id="LineType">0</int>
<string id="StartVertex">Vulnerable[componentName/]</string>
<string id="FinishVertex">[scenarioName/]</string>
<boolean id="Arrows">false</boolean>
<vector id="PointList">
<point id="0">
<int id="x">100</int>
<int id="y">50</int>
</point>
<point id="1">
<int id="x">[x + i*150/]</int>
<int id="y">[y/]</int>
</point>
</vector>
</class>
[/for]
[/let]
[/let]
[/let]
</class>
<vector id="LocalGlobalNamesList">
</vector>
<vector id="LocalGlobalTypesList">
</vector>
<boolean id="DisplayToolTips">true</boolean>
</class>
<boolean id="Valid">true</boolean>
</class>
</class>
[/let]
[/let]
[/file]
[/let]
[/template]
[query public getAllBlockAttacks(block : Classifier) : Sequence(String) =
invoke('org.polarsys.chess.mobius.utils.TransformationUtil', 'getAllBlockAttacks( org.eclipse.uml2.uml.Classifier)', Sequence{block})/]
[query public getBlockAttackScenarios(block : Classifier) : Sequence(String) =
invoke('org.polarsys.chess.mobius.utils.TransformationUtil', 'getBlockAttackScenarios( org.eclipse.uml2.uml.Classifier)', Sequence{block})/]
[query public getBlockAttacks(block : Classifier, scenarioName : String) : Sequence(String) =
invoke('org.polarsys.chess.mobius.utils.TransformationUtil', 'getBlockAttacks( org.eclipse.uml2.uml.Classifier, java.lang.String)', Sequence{block, scenarioName})/]