diff --git a/LibOneM2M/OneM2M_Functions.ttcn b/LibOneM2M/OneM2M_Functions.ttcn index 6899c5016205e0796bacbd33a8c1adf87b5f3cc0..6da00c3ef5f92895e66ce307134d3d209d2170ee 100644 --- a/LibOneM2M/OneM2M_Functions.ttcn +++ b/LibOneM2M/OneM2M_Functions.ttcn @@ -7,7 +7,7 @@ * * @author ETSI * @version $URL: https://forge.etsi.org/svn/oneM2M/trunk/ttcn/LibOneM2M/OneM2M_Functions.ttcn $ - * $Id: OneM2M_Functions.ttcn 174 2016-11-22 11:36:56Z carres $ + * $Id: OneM2M_Functions.ttcn 187 2016-11-29 05:28:52Z berge $ * @desc Module containing functions for oneM2M * */ @@ -140,6 +140,8 @@ module OneM2M_Functions { if(ischosen(v_response.primitive.responsePrimitive.primitiveContent.any_1[0].AE_optional)) { vc_aeAux := v_response.primitive.responsePrimitive.primitiveContent.any_1[0].AE_optional; + f_checkAttributesToBeSaved(int2, v_request, v_response.primitive.responsePrimitive); + v_aeAuxIndex := f_setResource(v_response.primitive.responsePrimitive.primitiveContent); vc_resourcesIndexToBeDeleted := vc_resourcesIndexToBeDeleted & {v_aeAuxIndex}; @@ -359,6 +361,7 @@ module OneM2M_Functions { [] mcaPort.receive(mw_response(mw_responsePrimitiveOK)) -> value v_response { tc_ac.stop; setverdict(pass, "f_createResource: Resource type " & int2str(enum2int(p_resourceType)) & " created successfuly"); + f_checkAttributesToBeSaved(p_resourceType, v_request, v_response.primitive.responsePrimitive); v_resourceIndex := f_setResource(v_response.primitive.responsePrimitive.primitiveContent, p_parentIndex); if(match(int2, p_resourceType) or match(-1, p_parentIndex)) {//If created resource is an AE or created under CSEBase, it needs to be added to the resourceToBeDeleted list vc_resourcesIndexToBeDeleted := vc_resourcesIndexToBeDeleted & {v_resourceIndex}; @@ -564,6 +567,30 @@ module OneM2M_Functions { unmap(self:acPort, system:acPort); } //end f_subscriptionVerificationHandler + + function f_checkAttributesToBeSaved (ResourceType p_resourceType, RequestPrimitive p_request, inout ResponsePrimitive p_response) { + + if(p_resourceType == int2) { + if(not(ispresent(p_response.primitiveContent.any_1[0].AE_optional.resourceName))) { + p_response.primitiveContent.any_1[0].AE_optional.resourceName := p_request.primitiveContent.any_1[0].AE_optional.resourceName; + } + } + if(p_resourceType == int3) { + if(not(ispresent(p_response.primitiveContent.any_1[0].Container_optional.resourceName))) { + p_response.primitiveContent.any_1[0].Container_optional.resourceName := p_request.primitiveContent.any_1[0].Container_optional.resourceName; + } + } + if(p_resourceType == int1) { + if(not(ispresent(p_response.primitiveContent.any_1[0].AccessControlPolicy_optional.resourceName))) { + p_response.primitiveContent.any_1[0].AccessControlPolicy_optional.resourceName := p_request.primitiveContent.any_1[0].AccessControlPolicy_optional.resourceName; + } + } + if(p_resourceType == int2) { + if(not(ispresent(p_response.primitiveContent.any_1[0].AE_optional.resourceName))) { + p_response.primitiveContent.any_1[0].AE_optional.resourceName := p_request.primitiveContent.any_1[0].AE_optional.resourceName; + } + } + } function f_check_notificationContent(in RequestPrimitive p_requestPrimitive, template PrimitiveContent p_primitiveContent) runs on CseTester return boolean{ // Local variables