Hi Richard, Thanks for the reply, I add my comments between your lines. On Tue, Aug 25, 2020 at 4:29 PM Richard Uttner <richard.uttner@gmail.com> wrote:
sorry for my contribution to this topic being so late. I fully agree to Martin's suggestion of checking if an inspected object conforms to the rich inspector api before applying it.
For dealing with Glorp, I found an easy solution which Pavel will integrate soon in the Glorp port he published some time ago.
Where is this port? I haven't seen it and it would be great if we could merge it with the canonical repository at pharo-rdbms/glorp which has been active lately (I even have a few bugfixes to submit)
My approach to find the trigger(s) resolving the proxy was simply hooking #doesNotUnderstand: with a Transcript trace of the current message. So I found out that it were only 3, which I list below along with my implementation in Proxy that stopped any resolving:
Simple and clever.
gtDisplayString self isInstantiated ifTrue: [ ^self class name , ' on ', value gtDisplayString]. ^self class name, ' uninstantiated on ', self query resultClass name
I had this.
gtInspectorVariableNodesIn: aCollection readSlot: aSlot
I hadn't these. I'll add them as an extension to the Proxy class.
With this approach, I was not able to trigger proxy resolution by just navigating in the inspector, I had to explicitely send #getValue to the slot. Hope this helps until we have a more general solution!
This is exactly what I needed. Thank you very much!