Menu

#3392 imm: incorrect value when load empty value from xml file

5.26.02
fixed
None
defect
imm
tools
major
False
5 days ago
2025-11-26
No

Expectation when create new object, default value assign if set NULL.
But immcfg -f <xml file> does not work as expect if contain empty tag

Reproduce steps:
* Load xml file: immcfg -f <xml file below>
* Expected value after loaded is default value (15)

<?xml version="1.0"?>
<imm:IMM-contents xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="SAI-AIS-IMM-XSD-A.02.13.xsd" xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:imm="http://www.saforum.org/IMMSchema">
  <class name="Test">
    <category>SA_CONFIG</category>
    <rdn>
      <name>test</name>
      <type>SA_STRING_T</type>
      <category>SA_CONFIG</category>
      <flag>SA_INITIALIZED</flag>
    </rdn>
    <attr>
      <name>limitTime</name>
      <type>SA_UINT32_T</type>
      <category>SA_CONFIG</category>
      <flag>SA_WRITABLE</flag>
      <default-value>15</default-value>
    </attr>
  </class>
  <object class="Test">
    <dn>test=1</dn>
    <attr>
      <name>limitTime</name>
      <value xsi:nil="true"/>
    </attr>
  </object>
</imm:IMM-contents>

Related

Wiki: ChangeLog-5.26.02

Discussion

  • Thien Minh Huynh

    • status: accepted --> review
     
  • Thang Duc Nguyen

    Hi Thien,
    I change a little of xml file to

    <?xml version="1.0"?>
    <imm:IMM-contents xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="SAI-AIS-IMM-XSD-A.02.13.xsd" xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:imm="http://www.saforum.org/IMMSchema">
      <class name="Test">
        <category>SA_CONFIG</category>
        <rdn>
          <name>test</name>
          <type>SA_STRING_T</type>
          <category>SA_CONFIG</category>
          <flag>SA_INITIALIZED</flag>
        </rdn>
        <attr>
          <name>limitTime</name>
          <type>SA_UINT32_T</type>
          <category>SA_CONFIG</category>
          <flag>SA_WRITABLE</flag>
          <default-value>15</default-value>
        </attr>
      </class>
      <object class="Test">
        <dn>test=1</dn>
        <attr>
          <name>limitTime</name>
          <value xsi:nil="true"/>
        </attr>
      </object>
      <object class="Test">
        <dn>test=2</dn>
        <attr>
          <name>limitTime</name>
          <value></value>
        </attr>
      </object>
    </imm:IMM-contents>
    

    And it shows that

    root@SC-1:~# immlist test=1
    Name                                               Type         Value(s)
    ========================================================================
    test                                               SA_STRING_T  test=1
    limitTime                                          SA_UINT32_T  15 (0xf)
    SaImmAttrImplementerName                           SA_STRING_T  <Empty>
    SaImmAttrClassName                                 SA_STRING_T  Test
    SaImmAttrAdminOwnerName                            SA_STRING_T  <Empty>
    
    root@SC-1:~# immlist test=2
    Name                                               Type         Value(s)
    ========================================================================
    test                                               SA_STRING_T  test=2
    limitTime                                          SA_UINT32_T  0 (0x0)
    SaImmAttrImplementerName                           SA_STRING_T  <Empty>
    SaImmAttrClassName                                 SA_STRING_T  Test
    SaImmAttrAdminOwnerName                            SA_STRING_T  <Empty>
    

    Please check whether it is expected behavior.

     
  • Thien Minh Huynh

    Hi Thang,

    The input from xml "<value xsi:nil="true">" is valid. The output of immlist test=1 is expected.
    limitTime SA_UINT32_T 15 (0xf)</value>

    The input from xml "<value></value>" is valid. But the output of immlist test=2 is not expected.
    limitTime SA_UINT32_T 0 (0x0)

     

    Last edit: Thien Minh Huynh 2025-12-01
  • Thien Minh Huynh

    Hi Thang,
    https://sourceforge.net/p/opensaf/mailman/message/59267063/

    I have updated to handle use case that you mentioned.

    Best Regards,
    Thien

     
  • Thien Minh Huynh

    • status: review --> fixed
     
  • Thien Minh Huynh

    commit 5c7ff8b80e54cdf0ac1e203d9f0db1ccc6ab9269 (HEAD -> develop, origin/develop, ticket-3392)
    Author: Thien Minh Huynh thien.m.huynh@endava.com
    Date: Mon Nov 3 09:04:42 2025 +0000

    imm: correct xml parser to SaImmAttrValuesT_2 [#3392]
    
    imm import does not handle parse empty tag.
    This commit just handles parsing empty tags to SaImmAttrValuesT_2.
    
     
  • Thien Minh Huynh

    • status: fixed --> accepted
     
  • Thien Minh Huynh

    Hi Thang,
    Sorry, I want to correct this use case.

    <object class="Test">
        <dn>test=2</dn>
        <attr>
          <name>limitTime</name>
          <value></value>
        </attr>
      </object>
    

    This is not considering a valid empty/nil use case. It violates with empty data if data type of string is empty. That what xsi:nil="true" introduced.

    Example:

    <attr>
          <name>limitTime</name>
          <type>SA_STRING_T</type>
          <category>SA_CONFIG</category>
          <flag>SA_WRITABLE</flag>
          <default-value>15</default-value>
        </attr>
    <attr>
    <name>limitTime</name>
          <value></value>
     </attr>
    

    This is empty data. not consider null.

    Best Regards,
    Thien

     

    Last edit: Thien Minh Huynh 2025-12-18
  • Thien Minh Huynh

    • status: accepted --> review
     
  • Thien Minh Huynh

    • status: review --> fixed
     
  • Thien Minh Huynh

    commit 074cdef2349a019edadfba965961001975481bfb (HEAD -> develop, origin/develop, ticket-3392)
    Author: Thien Minh Huynh thien.m.huynh@endava.com
    Date: Thu Dec 18 02:45:17 2025 +0000

    imm: correct handle null when load xml file [#3392]
    
    Only accept handle null when has an attribute xsi:nil="true"
    Not handle null in case <value></value>
    
     

Log in to post a comment.

MongoDB Logo MongoDB