From b2213e6606e4269a6ee580861f5c96700dc96e84 Mon Sep 17 00:00:00 2001
From: Miguel Angel Reina Ortega <miguelangel.reinaortega@etsi.org>
Date: Fri, 23 Jun 2023 10:27:35 +0200
Subject: [PATCH] Fix for f_CSE_DMR_CRE_021 to create local original resources

---
 OneM2M_PermutationFunctions.ttcn | 22 ++++++++++++++++++++++
 1 file changed, 22 insertions(+)

diff --git a/OneM2M_PermutationFunctions.ttcn b/OneM2M_PermutationFunctions.ttcn
index 1876479..bd33fdc 100644
--- a/OneM2M_PermutationFunctions.ttcn
+++ b/OneM2M_PermutationFunctions.ttcn
@@ -4321,6 +4321,7 @@ module OneM2M_PermutationFunctions {
 						var RequestPrimitive v_request;
 						var integer v_parentIndex := -1;
 						var integer v_resourceIndex := -1;
+						var integer v_originalResourceIndex := -1;
 						var integer v_aEAnncIndex := -1;
 						   
 						// Test control
@@ -4335,6 +4336,27 @@ module OneM2M_PermutationFunctions {
 						
 						v_aEAnncIndex := f_cse_createResource_cseSimu(int10002, m_createAEAnnc(-, vc_cseSimuDesc.cseId, omit, -), vc_remoteCseIndex); //AEAnnnc under RemoteCSE
 		
+						//Create original resource locally if resource type is an announced variant
+						if (p_resourceType == int10001) {
+							v_originalResourceIndex := f_generateAndSetLocalResource(m_primitiveContentAccessControlPolicy(m_contentCreateAcp), -, int1);
+						} else if(p_resourceType == int10002) {
+							v_originalResourceIndex := f_generateAndSetLocalResource(m_primitiveContentAe(m_contentCreateAe(omit, -, PX_TS_AE1.appId, omit)), -, int2);
+						} else if (p_resourceType == int10003) {
+							v_originalResourceIndex := f_generateAndSetLocalResource(m_primitiveContentContainer(m_contentCreateContainer), -, int3);
+						} else if (p_resourceType == int10004) {
+							v_originalResourceIndex := f_generateAndSetLocalResource(m_primitiveContentContentInstance(m_contentCreateContentInstance), -, int4);
+						} else if (p_resourceType == int10009) {
+							v_originalResourceIndex := f_generateAndSetLocalResource(m_primitiveContentGroup(m_contentCreateGroup(1, {"NotInitialized"}, omit, -, -, -, -, -)), -, int9);
+						} else if (p_resourceType == int10029) {
+							v_originalResourceIndex := f_generateAndSetLocalResource(m_primitiveContentTimeSeries(m_contentCreateTimeSeries), -, int29);
+						} else if (p_resourceType == int10030) {
+							v_originalResourceIndex := f_generateAndSetLocalResource(m_primitiveContentTimeSeriesInstance(m_contentCreateTimeSeriesInstance), -, int30);
+						}
+						if(v_originalResourceIndex != -1) {
+							p_requestPrimitive.primitiveContent := f_setLink(valueof(p_requestPrimitive.primitiveContent), f_getLocalResourceAddress(v_originalResourceIndex, -, e_spRelative));
+							p_requestPrimitive.primitiveContent := f_setExpirationTime(valueof(p_requestPrimitive.primitiveContent), vc_localResourcesList[v_originalResourceIndex].resource);
+						}
+						
 						// Test Body
 	
 						v_request := f_getCreateRequestPrimitive(p_resourceType, p_requestPrimitive, v_aEAnncIndex);
-- 
GitLab