do not write serialize property if its serialization is optional and its value equals the default one.

git-svn-id: https://svn.code.sf.net/p/lazarus-ccr/svn@736 8e941d3f-bd1b-0410-a28a-d453659cc2b4
This commit is contained in:
inoussa
2009-03-12 21:58:27 +00:00
parent c7e777a8e0
commit 72809c8784
3 changed files with 76 additions and 40 deletions

View File

@@ -601,6 +601,7 @@ var
begin begin
locName := APropInfo.ExternalName; locName := APropInfo.ExternalName;
locData := Boolean(GetOrdProp(AObject,APropInfo.PropInfo)); locData := Boolean(GetOrdProp(AObject,APropInfo.PropInfo));
//if ( locData <> False ) or ( APropInfo.PersisteType = pstAlways ) then
AStore.Put(locName,APropInfo.PropInfo^.PropType,locData); AStore.Put(locName,APropInfo.PropInfo^.PropType,locData);
end; end;
{$ENDIF HAS_TKBOOL} {$ENDIF HAS_TKBOOL}
@@ -616,6 +617,7 @@ var
begin begin
locName := APropInfo.ExternalName; locName := APropInfo.ExternalName;
locData := GetObjectProp(AObject,APropInfo.PropInfo); locData := GetObjectProp(AObject,APropInfo.PropInfo);
if ( locData <> nil ) or ( APropInfo.PersisteType = pstAlways ) then
AStore.Put(locName,APropInfo.PropInfo^.PropType{$IFDEF WST_DELPHI}^{$ENDIF},locData); AStore.Put(locName,APropInfo.PropInfo^.PropType{$IFDEF WST_DELPHI}^{$ENDIF},locData);
end; end;
@@ -635,27 +637,32 @@ begin
ftSingle : ftSingle :
begin begin
floatDt.SingleData := GetFloatProp(AObject,APropInfo.PropInfo); floatDt.SingleData := GetFloatProp(AObject,APropInfo.PropInfo);
if ( floatDt.SingleData <> 0 ) or ( APropInfo.PersisteType = pstAlways ) then
AStore.Put(prpName,pt,floatDt.SingleData); AStore.Put(prpName,pt,floatDt.SingleData);
end; end;
ftDouble : ftDouble :
begin begin
floatDt.DoubleData := GetFloatProp(AObject,APropInfo.PropInfo); floatDt.DoubleData := GetFloatProp(AObject,APropInfo.PropInfo);
if ( floatDt.DoubleData <> 0 ) or ( APropInfo.PersisteType = pstAlways ) then
AStore.Put(prpName,pt,floatDt.DoubleData); AStore.Put(prpName,pt,floatDt.DoubleData);
end; end;
ftExtended : ftExtended :
begin begin
floatDt.ExtendedData := Extended(GetFloatProp(AObject,APropInfo.PropInfo)); floatDt.ExtendedData := Extended(GetFloatProp(AObject,APropInfo.PropInfo));
if ( floatDt.ExtendedData <> 0 ) or ( APropInfo.PersisteType = pstAlways ) then
AStore.Put(prpName,pt,floatDt.ExtendedData); AStore.Put(prpName,pt,floatDt.ExtendedData);
end; end;
ftCurr : ftCurr :
begin begin
floatDt.CurrencyData := GetFloatProp(AObject,APropInfo.PropInfo); floatDt.CurrencyData := GetFloatProp(AObject,APropInfo.PropInfo);
if ( floatDt.CurrencyData <> 0 ) or ( APropInfo.PersisteType = pstAlways ) then
AStore.Put(prpName,pt,floatDt.CurrencyData); AStore.Put(prpName,pt,floatDt.CurrencyData);
end; end;
{$IFDEF HAS_COMP} {$IFDEF HAS_COMP}
ftComp : ftComp :
begin begin
floatDt.CompData := GetFloatProp(AObject,APropInfo.PropInfo); floatDt.CompData := GetFloatProp(AObject,APropInfo.PropInfo);
if ( floatDt.CurrencyData <> 0 ) or ( APropInfo.PersisteType = pstAlways ) then
AStore.Put(prpName,pt,floatDt.CompData); AStore.Put(prpName,pt,floatDt.CompData);
end; end;
{$ENDIF} {$ENDIF}
@@ -682,6 +689,7 @@ begin
( GetTypeData(pt)^.BaseType^ = TypeInfo(Boolean) ) ( GetTypeData(pt)^.BaseType^ = TypeInfo(Boolean) )
then begin then begin
boolData := Boolean(GetOrdProp(AObject,APropInfo.PropInfo)); boolData := Boolean(GetOrdProp(AObject,APropInfo.PropInfo));
if ( locData <> '' ) or ( APropInfo.PersisteType = pstAlways ) then
AStore.Put(prpName,pt,boolData); AStore.Put(prpName,pt,boolData);
end else begin end else begin
{$ENDIF WST_DELPHI} {$ENDIF WST_DELPHI}
@@ -690,31 +698,37 @@ begin
otSByte : otSByte :
begin begin
enumData.ShortIntData := ShortInt(GetOrdProp(AObject,APropInfo.PropInfo)); enumData.ShortIntData := ShortInt(GetOrdProp(AObject,APropInfo.PropInfo));
if ( enumData.ShortIntData <> 0 ) or ( APropInfo.PersisteType = pstAlways ) then
AStore.Put(prpName,pt,enumData.ShortIntData); AStore.Put(prpName,pt,enumData.ShortIntData);
end; end;
otUByte : otUByte :
begin begin
enumData.ByteData := Byte(GetOrdProp(AObject,APropInfo.PropInfo)); enumData.ByteData := Byte(GetOrdProp(AObject,APropInfo.PropInfo));
if ( enumData.ByteData <> 0 ) or ( APropInfo.PersisteType = pstAlways ) then
AStore.Put(prpName,pt,enumData.ByteData); AStore.Put(prpName,pt,enumData.ByteData);
end; end;
otSWord : otSWord :
begin begin
enumData.SmallIntData := SmallInt(GetOrdProp(AObject,APropInfo.PropInfo)); enumData.SmallIntData := SmallInt(GetOrdProp(AObject,APropInfo.PropInfo));
if ( enumData.SmallIntData <> 0 ) or ( APropInfo.PersisteType = pstAlways ) then
AStore.Put(prpName,pt,enumData.SmallIntData); AStore.Put(prpName,pt,enumData.SmallIntData);
end; end;
otUWord : otUWord :
begin begin
enumData.WordData := Word(GetOrdProp(AObject,APropInfo.PropInfo)); enumData.WordData := Word(GetOrdProp(AObject,APropInfo.PropInfo));
if ( enumData.WordData <> 0 ) or ( APropInfo.PersisteType = pstAlways ) then
AStore.Put(prpName,pt,enumData.WordData); AStore.Put(prpName,pt,enumData.WordData);
end; end;
otSLong : otSLong :
begin begin
enumData.SLongIntData := LongInt(GetOrdProp(AObject,APropInfo.PropInfo)); enumData.SLongIntData := LongInt(GetOrdProp(AObject,APropInfo.PropInfo));
if ( enumData.SLongIntData <> 0 ) or ( APropInfo.PersisteType = pstAlways ) then
AStore.Put(prpName,pt,enumData.SLongIntData); AStore.Put(prpName,pt,enumData.SLongIntData);
end; end;
otULong : otULong :
begin begin
enumData.ULongIntData := LongWord(GetOrdProp(AObject,APropInfo.PropInfo)); enumData.ULongIntData := LongWord(GetOrdProp(AObject,APropInfo.PropInfo));
if ( enumData.ULongIntData <> 0 ) or ( APropInfo.PersisteType = pstAlways ) then
AStore.Put(prpName,pt,enumData.ULongIntData); AStore.Put(prpName,pt,enumData.ULongIntData);
end; end;
end; end;
@@ -734,6 +748,7 @@ var
begin begin
locName := APropInfo.ExternalName; locName := APropInfo.ExternalName;
locData := GetInt64Prop(AObject,APropInfo.PropInfo); locData := GetInt64Prop(AObject,APropInfo.PropInfo);
if ( locData <> 0 ) or ( APropInfo.PersisteType = pstAlways ) then
AStore.Put(locName,APropInfo.PropInfo^.PropType{$IFDEF WST_DELPHI}^{$ENDIF},locData); AStore.Put(locName,APropInfo.PropInfo^.PropType{$IFDEF WST_DELPHI}^{$ENDIF},locData);
end; end;
@@ -748,6 +763,7 @@ var
begin begin
locName := APropInfo.ExternalName; locName := APropInfo.ExternalName;
locData := GetStrProp(AObject,APropInfo.PropInfo); locData := GetStrProp(AObject,APropInfo.PropInfo);
if ( locData <> '' ) or ( APropInfo.PersisteType = pstAlways ) then
AStore.Put(locName,APropInfo.PropInfo^.PropType{$IFDEF WST_DELPHI}^{$ENDIF},locData); AStore.Put(locName,APropInfo.PropInfo^.PropType{$IFDEF WST_DELPHI}^{$ENDIF},locData);
end; end;
@@ -762,8 +778,9 @@ var
locData : UnicodeString; locData : UnicodeString;
begin begin
locName := APropInfo.ExternalName; locName := APropInfo.ExternalName;
locData := GetUnicodeStrProp(AObject,APropInfo.PropInfo); locData := GetUnicodeStrProp(AObject,APropInfo.PropInfo);A
AStore.Put(locName,APropInfo.PropInfo^.PropType{$IFDEF WST_DELPHI}^{$ENDIF},locData); if ( locData <> '' ) or ( APropInfo.PersisteType = pstAlways ) then
Store.Put(locName,APropInfo.PropInfo^.PropType{$IFDEF WST_DELPHI}^{$ENDIF},locData);
end; end;
{$ENDIF WST_UNICODESTRING} {$ENDIF WST_UNICODESTRING}
@@ -778,6 +795,7 @@ var
begin begin
locName := APropInfo.ExternalName; locName := APropInfo.ExternalName;
locData := GetWideStrProp(AObject,APropInfo.PropInfo); locData := GetWideStrProp(AObject,APropInfo.PropInfo);
if ( locData <> '' ) or ( APropInfo.PersisteType = pstAlways ) then
AStore.Put(locName,APropInfo.PropInfo^.PropType{$IFDEF WST_DELPHI}^{$ENDIF},locData); AStore.Put(locName,APropInfo.PropInfo^.PropType{$IFDEF WST_DELPHI}^{$ENDIF},locData);
end; end;
@@ -794,6 +812,7 @@ var
begin begin
locName := APropInfo.ExternalName; locName := APropInfo.ExternalName;
locData := Boolean(GetOrdProp(AObject,APropInfo.PropInfo)); locData := Boolean(GetOrdProp(AObject,APropInfo.PropInfo));
//if ( locData <> '' ) or ( APropInfo.PersisteType = pstAlways ) then
AStore.Put(APropInfo.NameSpace,locName,APropInfo.PropInfo^.PropType,locData); AStore.Put(APropInfo.NameSpace,locName,APropInfo.PropInfo^.PropType,locData);
end; end;
{$ENDIF HAS_TKBOOL} {$ENDIF HAS_TKBOOL}
@@ -809,6 +828,7 @@ var
begin begin
locName := APropInfo.ExternalName; locName := APropInfo.ExternalName;
locData := GetObjectProp(AObject,APropInfo.PropInfo); locData := GetObjectProp(AObject,APropInfo.PropInfo);
if ( locData <> nil ) or ( APropInfo.PersisteType = pstAlways ) then
AStore.Put(APropInfo.NameSpace,locName,APropInfo.PropInfo^.PropType{$IFDEF WST_DELPHI}^{$ENDIF},locData); AStore.Put(APropInfo.NameSpace,locName,APropInfo.PropInfo^.PropType{$IFDEF WST_DELPHI}^{$ENDIF},locData);
end; end;
@@ -828,27 +848,32 @@ begin
ftSingle : ftSingle :
begin begin
floatDt.SingleData := GetFloatProp(AObject,APropInfo.PropInfo); floatDt.SingleData := GetFloatProp(AObject,APropInfo.PropInfo);
if ( floatDt.SingleData <> 0 ) or ( APropInfo.PersisteType = pstAlways ) then
AStore.Put(APropInfo.NameSpace,prpName,pt,floatDt.SingleData); AStore.Put(APropInfo.NameSpace,prpName,pt,floatDt.SingleData);
end; end;
ftDouble : ftDouble :
begin begin
floatDt.DoubleData := GetFloatProp(AObject,APropInfo.PropInfo); floatDt.DoubleData := GetFloatProp(AObject,APropInfo.PropInfo);
if ( floatDt.DoubleData <> 0 ) or ( APropInfo.PersisteType = pstAlways ) then
AStore.Put(APropInfo.NameSpace,prpName,pt,floatDt.DoubleData); AStore.Put(APropInfo.NameSpace,prpName,pt,floatDt.DoubleData);
end; end;
ftExtended : ftExtended :
begin begin
floatDt.ExtendedData := Extended(GetFloatProp(AObject,APropInfo.PropInfo)); floatDt.ExtendedData := Extended(GetFloatProp(AObject,APropInfo.PropInfo));
if ( floatDt.ExtendedData <> 0 ) or ( APropInfo.PersisteType = pstAlways ) then
AStore.Put(APropInfo.NameSpace,prpName,pt,floatDt.ExtendedData); AStore.Put(APropInfo.NameSpace,prpName,pt,floatDt.ExtendedData);
end; end;
ftCurr : ftCurr :
begin begin
floatDt.CurrencyData := GetFloatProp(AObject,APropInfo.PropInfo); floatDt.CurrencyData := GetFloatProp(AObject,APropInfo.PropInfo);
if ( floatDt.CurrencyData <> 0 ) or ( APropInfo.PersisteType = pstAlways ) then
AStore.Put(APropInfo.NameSpace,prpName,pt,floatDt.CurrencyData); AStore.Put(APropInfo.NameSpace,prpName,pt,floatDt.CurrencyData);
end; end;
{$IFDEF HAS_COMP} {$IFDEF HAS_COMP}
ftComp : ftComp :
begin begin
floatDt.CompData := GetFloatProp(AObject,APropInfo.PropInfo); floatDt.CompData := GetFloatProp(AObject,APropInfo.PropInfo);
if ( floatDt.CompData <> 0 ) or ( APropInfo.PersisteType = pstAlways ) then
AStore.Put(APropInfo.NameSpace,prpName,pt,floatDt.CompData); AStore.Put(APropInfo.NameSpace,prpName,pt,floatDt.CompData);
end; end;
{$ENDIF} {$ENDIF}
@@ -875,6 +900,7 @@ begin
( GetTypeData(pt)^.BaseType^ = TypeInfo(Boolean) ) ( GetTypeData(pt)^.BaseType^ = TypeInfo(Boolean) )
then begin then begin
boolData := Boolean(GetOrdProp(AObject,APropInfo.PropInfo)); boolData := Boolean(GetOrdProp(AObject,APropInfo.PropInfo));
if ( locData <> '' ) or ( APropInfo.PersisteType = pstAlways ) then
AStore.Put(APropInfo.NameSpace,prpName,pt,boolData); AStore.Put(APropInfo.NameSpace,prpName,pt,boolData);
end else begin end else begin
{$ENDIF WST_DELPHI} {$ENDIF WST_DELPHI}
@@ -883,31 +909,37 @@ begin
otSByte : otSByte :
begin begin
enumData.ShortIntData := ShortInt(GetOrdProp(AObject,APropInfo.PropInfo)); enumData.ShortIntData := ShortInt(GetOrdProp(AObject,APropInfo.PropInfo));
if ( enumData.ShortIntData <> 0 ) or ( APropInfo.PersisteType = pstAlways ) then
AStore.Put(APropInfo.NameSpace,prpName,pt,enumData.ShortIntData); AStore.Put(APropInfo.NameSpace,prpName,pt,enumData.ShortIntData);
end; end;
otUByte : otUByte :
begin begin
enumData.ByteData := Byte(GetOrdProp(AObject,APropInfo.PropInfo)); enumData.ByteData := Byte(GetOrdProp(AObject,APropInfo.PropInfo));
if ( enumData.ByteData <> 0 ) or ( APropInfo.PersisteType = pstAlways ) then
AStore.Put(APropInfo.NameSpace,prpName,pt,enumData.ByteData); AStore.Put(APropInfo.NameSpace,prpName,pt,enumData.ByteData);
end; end;
otSWord : otSWord :
begin begin
enumData.SmallIntData := SmallInt(GetOrdProp(AObject,APropInfo.PropInfo)); enumData.SmallIntData := SmallInt(GetOrdProp(AObject,APropInfo.PropInfo));
if ( enumData.SmallIntData <> 0 ) or ( APropInfo.PersisteType = pstAlways ) then
AStore.Put(APropInfo.NameSpace,prpName,pt,enumData.SmallIntData); AStore.Put(APropInfo.NameSpace,prpName,pt,enumData.SmallIntData);
end; end;
otUWord : otUWord :
begin begin
enumData.WordData := Word(GetOrdProp(AObject,APropInfo.PropInfo)); enumData.WordData := Word(GetOrdProp(AObject,APropInfo.PropInfo));
if ( enumData.WordData <> 0 ) or ( APropInfo.PersisteType = pstAlways ) then
AStore.Put(APropInfo.NameSpace,prpName,pt,enumData.WordData); AStore.Put(APropInfo.NameSpace,prpName,pt,enumData.WordData);
end; end;
otSLong : otSLong :
begin begin
enumData.SLongIntData := LongInt(GetOrdProp(AObject,APropInfo.PropInfo)); enumData.SLongIntData := LongInt(GetOrdProp(AObject,APropInfo.PropInfo));
if ( enumData.SLongIntData <> 0 ) or ( APropInfo.PersisteType = pstAlways ) then
AStore.Put(APropInfo.NameSpace,prpName,pt,enumData.SLongIntData); AStore.Put(APropInfo.NameSpace,prpName,pt,enumData.SLongIntData);
end; end;
otULong : otULong :
begin begin
enumData.ULongIntData := LongWord(GetOrdProp(AObject,APropInfo.PropInfo)); enumData.ULongIntData := LongWord(GetOrdProp(AObject,APropInfo.PropInfo));
if ( enumData.ULongIntData <> 0 ) or ( APropInfo.PersisteType = pstAlways ) then
AStore.Put(APropInfo.NameSpace,prpName,pt,enumData.ULongIntData); AStore.Put(APropInfo.NameSpace,prpName,pt,enumData.ULongIntData);
end; end;
end; end;
@@ -927,6 +959,7 @@ var
begin begin
locName := APropInfo.ExternalName; locName := APropInfo.ExternalName;
locData := GetInt64Prop(AObject,APropInfo.PropInfo); locData := GetInt64Prop(AObject,APropInfo.PropInfo);
if ( locData <> 0 ) or ( APropInfo.PersisteType = pstAlways ) then
AStore.Put(APropInfo.NameSpace,locName,APropInfo.PropInfo^.PropType{$IFDEF WST_DELPHI}^{$ENDIF},locData); AStore.Put(APropInfo.NameSpace,locName,APropInfo.PropInfo^.PropType{$IFDEF WST_DELPHI}^{$ENDIF},locData);
end; end;
@@ -941,6 +974,7 @@ var
begin begin
locName := APropInfo.ExternalName; locName := APropInfo.ExternalName;
locData := GetStrProp(AObject,APropInfo.PropInfo); locData := GetStrProp(AObject,APropInfo.PropInfo);
if ( locData <> '' ) or ( APropInfo.PersisteType = pstAlways ) then
AStore.Put(APropInfo.NameSpace,locName,APropInfo.PropInfo^.PropType{$IFDEF WST_DELPHI}^{$ENDIF},locData); AStore.Put(APropInfo.NameSpace,locName,APropInfo.PropInfo^.PropType{$IFDEF WST_DELPHI}^{$ENDIF},locData);
end; end;
@@ -956,6 +990,7 @@ var
begin begin
locName := APropInfo.ExternalName; locName := APropInfo.ExternalName;
locData := GetUnicodeStrProp(AObject,APropInfo.PropInfo); locData := GetUnicodeStrProp(AObject,APropInfo.PropInfo);
if ( locData <> '' ) or ( APropInfo.PersisteType = pstAlways ) then
AStore.Put(APropInfo.NameSpace,locName,APropInfo.PropInfo^.PropType{$IFDEF WST_DELPHI}^{$ENDIF},locData); AStore.Put(APropInfo.NameSpace,locName,APropInfo.PropInfo^.PropType{$IFDEF WST_DELPHI}^{$ENDIF},locData);
end; end;
{$ENDIF WST_UNICODESTRING} {$ENDIF WST_UNICODESTRING}
@@ -971,6 +1006,7 @@ var
begin begin
locName := APropInfo.ExternalName; locName := APropInfo.ExternalName;
locData := GetWideStrProp(AObject,APropInfo.PropInfo); locData := GetWideStrProp(AObject,APropInfo.PropInfo);
if ( locData <> '' ) or ( APropInfo.PersisteType = pstAlways ) then
AStore.Put(APropInfo.NameSpace,locName,APropInfo.PropInfo^.PropType{$IFDEF WST_DELPHI}^{$ENDIF},locData); AStore.Put(APropInfo.NameSpace,locName,APropInfo.PropInfo^.PropType{$IFDEF WST_DELPHI}^{$ENDIF},locData);
end; end;

View File

@@ -1,7 +1,7 @@
<?xml version="1.0"?> <?xml version="1.0"?>
<SOAP-ENV:Envelope xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/1999/XMLSchema-instance" xmlns:SOAP-ENC="http://schemas.xmlsoap.org/soap/encoding/" xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/"> <SOAP-ENV:Envelope xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/1999/XMLSchema-instance" xmlns:SOAP-ENC="http://schemas.xmlsoap.org/soap/encoding/" xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/">
<SOAP-ENV:Header xmlns:ns1="urn:simple-content-header.sample"> <SOAP-ENV:Header xmlns:ns1="urn:simple-content-header.sample">
<ns1:TSampleSimpleContentHeaderBlock_A SOAP-ENV:mustUnderstand="0">sample header simple content value</ns1:TSampleSimpleContentHeaderBlock_A> <ns1:TSampleSimpleContentHeaderBlock_A>sample header simple content value</ns1:TSampleSimpleContentHeaderBlock_A>
</SOAP-ENV:Header> </SOAP-ENV:Header>
<SOAP-ENV:Body> <SOAP-ENV:Body>
<ns2:test_proc xmlns:ns2="TestService"/> <ns2:test_proc xmlns:ns2="TestService"/>

View File

@@ -5,8 +5,8 @@
xmlns:SOAP-ENC="http://schemas.xmlsoap.org/soap/encoding/" xmlns:SOAP-ENC="http://schemas.xmlsoap.org/soap/encoding/"
xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/"> xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/">
<SOAP-ENV:Header xmlns:ns1="urn:simple-content-header.sample"> <SOAP-ENV:Header xmlns:ns1="urn:simple-content-header.sample">
<ns1:TSampleSimpleContentHeaderBlock_A SOAP-ENV:mustUnderstand="0">sample header simple content value</ns1:TSampleSimpleContentHeaderBlock_A> <ns1:TSampleSimpleContentHeaderBlock_A>sample header simple content value</ns1:TSampleSimpleContentHeaderBlock_A>
<ns1:TSampleSimpleContentHeaderBlock_B ns1:intAtt="1210" SOAP-ENV:mustUnderstand="0">another content</ns1:TSampleSimpleContentHeaderBlock_B> <ns1:TSampleSimpleContentHeaderBlock_B ns1:intAtt="1210">another content</ns1:TSampleSimpleContentHeaderBlock_B>
</SOAP-ENV:Header> </SOAP-ENV:Header>
<SOAP-ENV:Body> <SOAP-ENV:Body>
<ns2:test_proc xmlns:ns2="TestService"/> <ns2:test_proc xmlns:ns2="TestService"/>