[VW 7.4 of 5 December 2005] [Bug?] PundleAccess>>parcel:toPackageNamed:

Previous Topic Next Topic
 
classic Classic list List threaded Threaded
3 messages Options
Reply | Threaded
Open this post in threaded view
|

[VW 7.4 of 5 December 2005] [Bug?] PundleAccess>>parcel:toPackageNamed:

Stew MacLean

Hi,

 

I’m implementing “live update” and I’m running into a problem when loading the downloaded parcel.

 

After loading a change is broadcast…

 

Store.PundleAccess(Object)>>doesNotUnderstand:

[9]        OverridenMethod>>notifySourceOfOverride:object:

[10]       OverridenMethod(Override)>>addSource:

[11]       optimized [] in Override class>>equateComponent:with:

[12]       OrderedCollection>>do:

[13]       optimized [] in [] in Override class>>overriddenMethodsDo:

[14]       IdentityDictionary>>do:

[15]       optimized [] in Override class>>overriddenMethodsDo:

[16]       IdentityDictionary>>do:

[17]       Override class>>overriddenMethodsDo:

[18]       Override class>>overridesDo:

[19]       Override class>>equateComponent:with:

[20]       Store.PundleAccess>>parcel:toPackageNamed:

[21]       Store.PundleAccess>>parcelToPundle:

[22]       Store.PundleAccess>>update:with:

[23]       Store.PundleAccess(Object)>>update:with:from:

[24]       Parcel class(Object)>>changed:with:

[25]       Parcel class>>triggerParcelLoaded:

[26]       Parcel>>doComponentLoadedActions

[27]       Parcel>>quietlyLoadFrom:

 

 

I suspect that the following method is the cuplprit. The last line is passing in self (aStore.PundleAccess) as the second argument to equateComponent:with:. I reckon this should actually be the mapped Package.

 

parcel: aParcel toPackageNamed: aString

            "Convert aParcel to a package - assumes was saved as a package."

            "will... setup database links."

 

            | pkg |

            pkg := Registry packageNamedOrCreate: aString.

            pkg startLoad.

            [ self registerParcel: aParcel to: pkg.

                       

            aParcel propertyAt: #packageName put: aString.

            pkg propertyAt: #parcelName put: aParcel name.

            pkg restoreLinksFrom: aParcel properties.  "special case stored db links."

            pkg resetUninstalledStateFrom: aParcel.

            pkg markNotModified.

            ] ensure: [ pkg endLoad ].

            "don't mark converted if already published somewhere."

            ( aParcel properties includesKey: #dbTrace )       

                        ifFalse: [ pkg addOtherChange: #convertedParcel ].

            Override equateComponent: aParcel with: self.    “<<<<<<< self should be pkg??????”

 

I’m not using Store, but have to give Parcels package names, as that’s what the Runtime Package needs.

 

Any help appreciated here,

 

Thanks,

 

Stewart

 

Reply | Threaded
Open this post in threaded view
|

Re: [VW 7.4 of 5 December 2005] [Bug?] PundleAccess>>parcel:toPackageNamed:

eliot-2
Hi Stewart,

"Stewart MacLean" <[hidden email]> wrote:
| Hi,
|
| I'm implementing "live update" and I'm running into a problem when
| loading the downloaded parcel.

I would package my runtime with Store unloaded.  i.e start frm visual.im, don't load Store and build your runtime.  Then see how you get on.

HTH

| After loading a change is broadcast.
|
| Store.PundleAccess(Object)>>doesNotUnderstand:
| [9]        OverridenMethod>>notifySourceOfOverride:object:
| [10]       OverridenMethod(Override)>>addSource:
| [11]       optimized [] in Override class>>equateComponent:with:
| [12]       OrderedCollection>>do:
| [13]       optimized [] in [] in Override class>>overriddenMethodsDo:
| [14]       IdentityDictionary>>do:
| [15]       optimized [] in Override class>>overriddenMethodsDo:
| [16]       IdentityDictionary>>do:
| [17]       Override class>>overriddenMethodsDo:
| [18]       Override class>>overridesDo:
| [19]       Override class>>equateComponent:with:
| [20]       Store.PundleAccess>>parcel:toPackageNamed:
| [21]       Store.PundleAccess>>parcelToPundle:
| [22]       Store.PundleAccess>>update:with:
| [23]       Store.PundleAccess(Object)>>update:with:from:
| [24]       Parcel class(Object)>>changed:with:
| [25]       Parcel class>>triggerParcelLoaded:
| [26]       Parcel>>doComponentLoadedActions
| [27]       Parcel>>quietlyLoadFrom:
|
|
| I suspect that the following method is the cuplprit. The last line is
| passing in self (aStore.PundleAccess) as the second argument to
| equateComponent:with:. I reckon this should actually be the mapped
| Package.
|
| parcel: aParcel toPackageNamed: aString
|             "Convert aParcel to a package - assumes was saved as a
| package."
|             "will... setup database links."
|
|             | pkg |
|             pkg := Registry packageNamedOrCreate: aString.
|             pkg startLoad.
|             [ self registerParcel: aParcel to: pkg.
|
|             aParcel propertyAt: #packageName put: aString.
|             pkg propertyAt: #parcelName put: aParcel name.
|             pkg restoreLinksFrom: aParcel properties.  "special case
| stored db links."
|             pkg resetUninstalledStateFrom: aParcel.
|             pkg markNotModified.
|             ] ensure: [ pkg endLoad ].
|             "don't mark converted if already published somewhere."
|             ( aParcel properties includesKey: #dbTrace )
|                         ifFalse: [ pkg addOtherChange: #convertedParcel
| ].
|             Override equateComponent: aParcel with: self.    "<<<<<<<
| self should be pkg??????"
|
| I'm not using Store, but have to give Parcels package names, as that's
| what the Runtime Package needs.
|
| Any help appreciated here,
|
| Thanks,
|
| Stewart
|

| -----
Eliot Miranda                 ,,,^..^,,,                mailto:[hidden email]
VisualWorks Engineering, Cincom  Smalltalk: scene not herd  Tel +1 408 216 4581
3350 Scott Blvd, Bldg 36 Suite B, Santa Clara, CA 95054 USA Fax +1 408 216 4500


Reply | Threaded
Open this post in threaded view
|

Re: [VW 7.4 of 5 December 2005] [Bug?] PundleAccess>>parcel:toPackageNamed:

Bob Westergaard-2
In reply to this post by Stew MacLean


On Sat, 25 Nov 2006, Stewart MacLean wrote:

> ].
>            Override equateComponent: aParcel with: self.    "<<<<<<<
> self should be pkg??????"

Yes, that is the right change to make.  We've made the same change in the
current 7.5 builds.