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

View File

@ -1,7 +1,7 @@
<?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: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:Body>
<ns2:test_proc xmlns:ns2="TestService"/>

View File

@ -5,8 +5,8 @@
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">
<ns1:TSampleSimpleContentHeaderBlock_A SOAP-ENV:mustUnderstand="0">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_A>sample header simple content value</ns1:TSampleSimpleContentHeaderBlock_A>
<ns1:TSampleSimpleContentHeaderBlock_B ns1:intAtt="1210">another content</ns1:TSampleSimpleContentHeaderBlock_B>
</SOAP-ENV:Header>
<SOAP-ENV:Body>
<ns2:test_proc xmlns:ns2="TestService"/>