From: <sr...@us...> - 2006-11-29 05:41:31
|
Revision: 727 http://svn.sourceforge.net/instantobjects/revision/?rev=727&view=rev Author: srmitch Date: 2006-11-28 21:41:29 -0800 (Tue, 28 Nov 2006) Log Message: ----------- Fix for XML query fail in refresh: - Added TInstantXMLQuery.InternalGetInstantObjectRefs. - Deleted TInstantXMLQuery.InternalRefreshObjects. Modified Paths: -------------- trunk/Source/Brokers/XML/InstantXML.pas Modified: trunk/Source/Brokers/XML/InstantXML.pas =================================================================== --- trunk/Source/Brokers/XML/InstantXML.pas 2006-11-29 04:44:52 UTC (rev 726) +++ trunk/Source/Brokers/XML/InstantXML.pas 2006-11-29 05:41:29 UTC (rev 727) @@ -227,12 +227,13 @@ function GetStatement: string; override; function InternalAddObject(AObject: TObject): Integer; override; procedure InternalClose; override; + procedure InternalGetInstantObjectRefs(List: TInstantObjectReferenceList); + override; function InternalGetObjectCount: Integer; override; function InternalGetObjects(Index: Integer): TObject; override; function InternalIndexOfObject(AObject: TObject): Integer; override; procedure InternalInsertObject(Index: Integer; AObject: TObject); override; procedure InternalOpen; override; - procedure InternalRefreshObjects; override; procedure InternalReleaseObject(AObject: TObject); override; function InternalRemoveObject(AObject: TObject): Integer; override; procedure SetParams(Value: TParams); override; @@ -877,6 +878,16 @@ inherited; end; +procedure TInstantXMLQuery.InternalGetInstantObjectRefs(List: + TInstantObjectReferenceList); +var + I: Integer; +begin + for I := 0 to Pred(ObjectReferenceCount) do + if ObjectFetched(I) and (Objects[I] is TInstantObject) then + List.Add(TInstantObject(Objects[I])); +end; + function TInstantXMLQuery.InternalGetObjectCount: Integer; begin Result := ObjectReferenceCount; @@ -925,28 +936,6 @@ end; end; -procedure TInstantXMLQuery.InternalRefreshObjects; -var - I: Integer; - BusyObjects: TObjectList; -begin - BusyObjects := TObjectList.Create; - try - for I := 0 to Pred(ObjectReferenceCount) do - begin - with ObjectReferences[I] do - if HasInstance and (Instance.RefCount > 1) then - BusyObjects.Add(Instance); - end; - Close; - Open; - for I := 0 to Pred(BusyObjects.Count) do - TInstantObject(BusyObjects[I]).Refresh; - finally - BusyObjects.Free; - end; -end; - procedure TInstantXMLQuery.InternalReleaseObject(AObject: TObject); var Index: Integer; |