Program: 40985
Project: 40985
Buggy source:
@WebMethod(exclude=true) private void updateServiceInstanceProperties(ServiceInstance serviceInstance){
  if (serviceInstance.getProperties() == null) {
    return;
  }
  TBoundaryDefinitions boundaryDefs=InstanceDataServiceImpl.toscaEngineService.getBoundaryDefinitionsOfServiceTemplate(serviceInstance.getCSAR_ID(),serviceInstance.getServiceTemplateID());
  if ((boundaryDefs == null) || (boundaryDefs.getProperties() == null) || (boundaryDefs.getProperties().getPropertyMappings() == null)) {
    return;
  }
  Element properties=(Element)serviceInstance.getProperties().getFirstChild();
  for (  TPropertyMapping mapping : boundaryDefs.getProperties().getPropertyMappings().getPropertyMapping()) {
    String serviceTemplatePropertyQuery=mapping.getServiceTemplatePropertyRef();
    List<Element> serviceTemplatePropertyElements=this.queryElementList(properties,serviceTemplatePropertyQuery);
    if (serviceTemplatePropertyElements.size() != 1) {
      continue;
    }
    if (this.isConcatQuery(mapping.getTargetPropertyRef())) {
      String propertyValue=this.generatePropertyValueFromConcatQuery(mapping.getTargetPropertyRef(),this.getNodeInstances(null,null,null,serviceInstance.getServiceInstanceID()));
      serviceTemplatePropertyElements.get(0).setTextContent(propertyValue);
    }
 else {
      NodeInstance nodeInstance=this.getNodeInstanceFromMappingObject(serviceInstance,mapping.getTargetObjectRef());
      Document nodeProperties=nodeInstance.getProperties();
      if (nodeProperties == null) {
        continue;
      }
      Element nodePropertiesRoot=(Element)nodeProperties.getFirstChild();
      String nodeTemplatePropertyQuery=mapping.getTargetPropertyRef();
      List<Element> nodePropertyElements=this.queryElementList(nodePropertiesRoot,nodeTemplatePropertyQuery);
      if (nodePropertyElements.size() != 1) {
        continue;
      }
      serviceTemplatePropertyElements.get(0).setTextContent(nodePropertyElements.get(0).getTextContent());
    }
  }
  serviceInstance.setProperties(properties.getOwnerDocument());
  this.siDAO.storeServiceInstance(serviceInstance);
}

Fixed version (ground truth):
@WebMethod(exclude=true) private void updateServiceInstanceProperties(ServiceInstance serviceInstance){
  if (serviceInstance.getProperties() == null) {
    return;
  }
  TBoundaryDefinitions boundaryDefs=InstanceDataServiceImpl.toscaEngineService.getBoundaryDefinitionsOfServiceTemplate(serviceInstance.getCSAR_ID(),serviceInstance.getServiceTemplateID());
  if ((boundaryDefs == null) || (boundaryDefs.getProperties() == null) || (boundaryDefs.getProperties().getPropertyMappings() == null)) {
    return;
  }
  Element properties=(Element)serviceInstance.getProperties().getFirstChild();
  for (  TPropertyMapping mapping : boundaryDefs.getProperties().getPropertyMappings().getPropertyMapping()) {
    String serviceTemplatePropertyQuery=mapping.getServiceTemplatePropertyRef();
    List<Element> serviceTemplatePropertyElements=this.queryElementList(properties,serviceTemplatePropertyQuery);
    if (serviceTemplatePropertyElements.size() != 1) {
      continue;
    }
    if (this.isConcatQuery(mapping.getTargetPropertyRef())) {
      String propertyValue=this.generatePropertyValueFromConcatQuery(mapping.getTargetPropertyRef(),this.getNodeInstances(null,null,null,serviceInstance.getServiceInstanceID()));
      serviceTemplatePropertyElements.get(0).setTextContent(propertyValue);
    }
 else {
      NodeInstance nodeInstance=this.getNodeInstanceFromMappingObject(serviceInstance,mapping.getTargetObjectRef());
      if (nodeInstance == null) {
        continue;
      }
      Document nodeProperties=nodeInstance.getProperties();
      if (nodeProperties == null) {
        continue;
      }
      Element nodePropertiesRoot=(Element)nodeProperties.getFirstChild();
      String nodeTemplatePropertyQuery=mapping.getTargetPropertyRef();
      List<Element> nodePropertyElements=this.queryElementList(nodePropertiesRoot,nodeTemplatePropertyQuery);
      if (nodePropertyElements.size() != 1) {
        continue;
      }
      serviceTemplatePropertyElements.get(0).setTextContent(nodePropertyElements.get(0).getTextContent());
    }
  }
  serviceInstance.setProperties(properties.getOwnerDocument());
  this.siDAO.storeServiceInstance(serviceInstance);
}