Uploaded image for project: 'Help-Desk'
  1. Help-Desk
  2. HELP-2732

FIWARE.Request.Tech.WebUI.POIDataProvider.General_Support_#246_A_couple_of_bugs

    Details

    • HD-Chapter:
      WebUI
    • HD-Enabler:
      POI Provider

      Description

      Hi,

      A user found (and fixed) some bugs on the POI Data Provider GE.
      Here it is his report:

      "
      Hi.

      We are using a custom data field in our POI data. Based on the POI Data Provider documentation it should support adding custom fields to the data in addition to the "fw_core" field. However the POI Data Provider would not accept JSON data that had other than the predefined "fw_xxx" fields.

      The code in add_poi.php gets a list of supported components by calling get_supported_components() from db.php which has a hardcoded list of supported component names.

      We have fixed that by modifying the PHP code in our own instance ourselves. The change was made to db.php as follows:

      function get_supported_components()
      {
      // Markus Kauppinen: Added "mipsoft_landmarker"
      $components = array("fw_core", "fw_contact", "fw_xml3d", "fw_media",
      "fw_time", "fw_sensor", "fw_marker", "fw_relationships",
      "mipsoft_landmarker");

      return $components;
      }
      Also handling the timestamps when updating data could be better documented. It's quite confusing. It's not instantly clear should we include a new timestamp in the JSON data that we send via HTTP POST or will the receiving PHP code assign a new one.

      We now know that the PHP code inserts a new timestamp to the fw_core data. But it does not insert it to the custom data. However when updating it checks both timestamps (in update_poi.php) and if they do not match then that (custom) data is not updated. The PHP code even doesn't allow a zero timestamp value so it must a valid value.

      So it doesn't set the custom data timestamp but still expects a valid one when updating data. This is a clear error. It should either set the custom data timestamp or allow a zero timestamp when updating the data. We have now ourselves modified the PHP code to insert the custom data timestamp as well in add_poi.php as follows:

      $mongodb = connectMongoDB($db_opts['mongo_db_name']);
      foreach($request_array as $comp_name => $comp_data)
      {
      if ($comp_name == 'fw_core')
      continue;
      if (in_array($comp_name, $supported_components))

      { $comp_data["_id"] = $uuid; // Markus Kauppinen: $comp_data["last_update"]["timestamp"] = $timestamp; $collection = $mongodb->$comp_name; $collection->insert($comp_data); }

      }

      "

      Thanks in advance.

      (Reported by xavier.carol@i2cat.net)

        Issue Links

          Activity

          Hide
          ariokkon Ari Okkonen added a comment -

          Old name "CLONE - [Fiware-creatifi-coaching] [CreatiFI Barcelona Hub] General Support #246: A couple of bugs in the POI Data Provider GE" changed according to "Request for urgent action on the help-desk - deadline TODAY- 13:00" in 2015-07-06.

          Show
          ariokkon Ari Okkonen added a comment - Old name "CLONE - [Fiware-creatifi-coaching] [CreatiFI Barcelona Hub] General Support #246: A couple of bugs in the POI Data Provider GE" changed according to "Request for urgent action on the help-desk - deadline TODAY- 13:00" in 2015-07-06.
          Hide
          ariokkon Ari Okkonen added a comment -

          One (not expressed, of course) design principle was that the server controls, which data components the server acknowledges, and what are their structures. A specialization guide is planned to instruct how to introduce new data components to the reference implementation. https://jira.fiware.org/browse/WEB-443 The input given in this request above is of great help.
          I'll analyze the timestamp problem more thoroughly. The logic was not well designed, originally. (The purpose of timestamps is to protect the data from update conflicts.)

          Show
          ariokkon Ari Okkonen added a comment - One (not expressed, of course) design principle was that the server controls, which data components the server acknowledges, and what are their structures. A specialization guide is planned to instruct how to introduce new data components to the reference implementation. https://jira.fiware.org/browse/WEB-443 The input given in this request above is of great help. I'll analyze the timestamp problem more thoroughly. The logic was not well designed, originally. (The purpose of timestamps is to protect the data from update conflicts.)
          Hide
          ariokkon Ari Okkonen added a comment -

          Redesign of timestamp behavior takes place under https://jira.fiware.org/browse/WEB-674 .

          Show
          ariokkon Ari Okkonen added a comment - Redesign of timestamp behavior takes place under https://jira.fiware.org/browse/WEB-674 .
          Hide
          ariokkon Ari Okkonen added a comment - - edited

          Transferred to development of the next release.

          Show
          ariokkon Ari Okkonen added a comment - - edited Transferred to development of the next release.

            People

            • Assignee:
              ariokkon Ari Okkonen
              Reporter:
              leandroguillen Leandro Guillén
            • Votes:
              0 Vote for this issue
              Watchers:
              2 Start watching this issue

              Dates

              • Created:
                Updated:
                Resolved: