|
92 | 92 | <details key="settingDelegates" value="http://www.eclipse.org/emf/2002/Ecore/OCL/LPG"/> |
93 | 93 | <details key="validationDelegates" value="http://www.eclipse.org/emf/2002/Ecore/OCL/LPG"/> |
94 | 94 | </eAnnotations> |
| 95 | + <eClassifiers xsi:type="ecore:EClass" name="DataChannelBehaviour" eSuperTypes="../../org.palladiosimulator.pcm/model/pcm.ecore#//core/entity/Entity"> |
| 96 | + <eAnnotations source="http://www.eclipse.org/emf/2002/Ecore"> |
| 97 | + <details key="constraints" value="variableUsagesReferToValidSourceRoleParameter variableReferencesReferToValidSinkRoleParameter reusedBehavioursOnlyBindValidVariables"/> |
| 98 | + </eAnnotations> |
| 99 | + <eAnnotations source="http://www.eclipse.org/emf/2002/Ecore/OCL/LPG"> |
| 100 | + <details key="variableUsagesReferToValidSourceRoleParameter" value="self.variableUsages->forAll(usage |
	self.dataSources->collect(
		role | role.entityName.concat('.').concat(role.dataInterface.dataSignature.parameter.parameterName)		
	)->includes(usage.namedReference__VariableUsage.referenceName)
)"/> |
| 101 | + <details key="variableReferencesReferToValidSinkRoleParameter" value="self.variableUsages.variableCharacterisation_VariableUsage->selectByKind(confidentiality::ConfidentialityVariableCharacterisation)->forAll(characterisation |
	characterisation.rhs.oclAsType(ecore::EObject)->closure(eContents()->selectByKind(ecore::EObject))->selectByKind(stoex::VariableReference)->forAll(reference |
		self.dataSinks->collect(
			role | role.entityName.concat('.').concat(role.dataInterface.dataSignature.parameter.parameterName)
		)->includes(reference.referenceName)
	)
)"/> |
| 102 | + <details key="reusedBehavioursOnlyBindValidVariables" value="let validSourceNames : Set(String) = self.dataSources->collect(
	role | role.entityName.concat('.').concat(role.dataInterface.dataSignature.parameter.parameterName)
)->asSet() in

 let validSinkNames : Set(String) = self.dataSinks->collect(
 role | role.entityName.concat('.').concat(role.dataInterface.dataSignature.parameter.parameterName)
 )->asSet() in

 let validReferenceNames : Set(String) = validSourceNames->union(validSinkNames) in

 let usedReferenceNames : Set(String) = self.reusedBehaviours->collect(variableBindings)->flatten()->collect(boundValue.referenceName)->asSet() in

 validReferenceNames->includesAll(usedReferenceNames)"/> |
| 103 | + </eAnnotations> |
| 104 | + <eStructuralFeatures xsi:type="ecore:EReference" name="dataSources" upperBound="-1" |
| 105 | + eType="ecore:EClass ../../org.palladiosimulator.indirections/model/indirections.ecore#//repository/DataSourceRole" |
| 106 | + changeable="false" volatile="true" transient="true" derived="true"> |
| 107 | + <eAnnotations source="http://www.eclipse.org/emf/2002/Ecore/OCL/LPG"> |
| 108 | + <details key="derivation" value="self.dataChannel.dataSourceRoles"/> |
| 109 | + </eAnnotations> |
| 110 | + </eStructuralFeatures> |
| 111 | + <eStructuralFeatures xsi:type="ecore:EReference" name="dataSinks" upperBound="-1" |
| 112 | + eType="ecore:EClass ../../org.palladiosimulator.indirections/model/indirections.ecore#//repository/DataSinkRole" |
| 113 | + changeable="false" volatile="true" transient="true" derived="true"> |
| 114 | + <eAnnotations source="http://www.eclipse.org/emf/2002/Ecore/OCL/LPG"> |
| 115 | + <details key="derivation" value="self.dataChannel.dataSinkRoles"/> |
| 116 | + </eAnnotations> |
| 117 | + </eStructuralFeatures> |
| 118 | + <eStructuralFeatures xsi:type="ecore:EReference" name="variableUsages" upperBound="-1" |
| 119 | + eType="ecore:EClass ../../org.palladiosimulator.pcm/model/pcm.ecore#//parameter/VariableUsage" |
| 120 | + containment="true"/> |
| 121 | + <eStructuralFeatures xsi:type="ecore:EReference" name="reusedBehaviours" upperBound="-1" |
| 122 | + eType="#//behaviour/BehaviourReuse" containment="true"/> |
| 123 | + </eClassifiers> |
| 124 | + <eClassifiers xsi:type="ecore:EClass" name="Behaviours" eSuperTypes="../../de.uka.ipd.sdq.identifier/model/identifier.ecore#//Identifier"> |
| 125 | + <eStructuralFeatures xsi:type="ecore:EReference" name="dataChannelBehaviour" |
| 126 | + upperBound="-1" eType="#//behaviour/DataChannelBehaviour" containment="true"/> |
| 127 | + <eStructuralFeatures xsi:type="ecore:EReference" name="reusableBehaviours" upperBound="-1" |
| 128 | + eType="#//behaviour/ReusableBehaviour" containment="true"/> |
| 129 | + </eClassifiers> |
95 | 130 | <eClassifiers xsi:type="ecore:EClass" name="ReusableBehaviour" eSuperTypes="../../org.palladiosimulator.pcm/model/pcm.ecore#//core/entity/Entity"> |
96 | 131 | <eStructuralFeatures xsi:type="ecore:EReference" name="inputVariables" upperBound="-1" |
97 | 132 | eType="ecore:EClass platform:/plugin/de.uka.ipd.sdq.stoex/model/stoex.ecore#//VariableReference" |
|
144 | 179 | </eSubpackages> |
145 | 180 | <eSubpackages name="dictionary" nsURI="http://palladiosimulator.org/dataflow/confidentiality/pcm/0.1.0/dictionary" |
146 | 181 | nsPrefix="dictionary"> |
147 | | - <eClassifiers xsi:type="ecore:EClass" name="PCMDataDictionary" eSuperTypes="../../de.uka.ipd.sdq.identifier/model/identifier.ecore#//Identifier #//characteristics/CharacteristicTypeDictionary #//characteristics/Characteristics"/> |
| 182 | + <eClassifiers xsi:type="ecore:EClass" name="PCMDataDictionary" eSuperTypes="../../de.uka.ipd.sdq.identifier/model/identifier.ecore#//Identifier #//characteristics/CharacteristicTypeDictionary #//characteristics/Characteristics #//behaviour/Behaviours"/> |
148 | 183 | </eSubpackages> |
149 | 184 | </ecore:EPackage> |
0 commit comments