[Ann] ObjectTravel. A tool to traverse object references

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

[Ann] ObjectTravel. A tool to traverse object references

Denis Kudriashov
Hi.

This is side project of my work on Seamess and RemoteDebuggingTools. You can load it by:

Gofer it
smalltalkhubUser: 'Pharo' project: 'ObjectTravel';
configuration;
loadStable

ObjectTravel is a tool to deeply traverse "native" references of given object through instance variables and "array contents".

Usage is quite simple:

traveler := ObjectTraveler on: (1@2 corner: 3@4).
traveler referencesDo: [:eachRef | eachRed logCr].

Here is list of suitable methods:
  • collectReferences
  • countReferences
  • skip: anObject
  • traverseOnly: predicateBlock
  • copyObject
  • findAllPathsTo: targetObject
  • replaceCurrentReferenceWith: anObject

Best regards,
Denis
Reply | Threaded
Open this post in threaded view
|

Re: [Ann] ObjectTravel. A tool to traverse object references

hernanmd
Hi Denis,

Looks very cool, thank you very much for sharing!

A couple of questions. Can you comment how (if) you've applied your ObjectTravel? Or some use cases you have in mind?
Have you tried to implement travelling methods of the Composite design pattern with your package?

Cheers,

Hernán

PS: It would be nice if this ANN goes also to the pharo-users mailing list.


2016-07-22 7:45 GMT-03:00 Denis Kudriashov <[hidden email]>:
Hi.

This is side project of my work on Seamess and RemoteDebuggingTools. You can load it by:

Gofer it
smalltalkhubUser: 'Pharo' project: 'ObjectTravel';
configuration;
loadStable

ObjectTravel is a tool to deeply traverse "native" references of given object through instance variables and "array contents".

Usage is quite simple:

traveler := ObjectTraveler on: (1@2 corner: 3@4).
traveler referencesDo: [:eachRef | eachRed logCr].

Here is list of suitable methods:
  • collectReferences
  • countReferences
  • skip: anObject
  • traverseOnly: predicateBlock
  • copyObject
  • findAllPathsTo: targetObject
  • replaceCurrentReferenceWith: anObject

Best regards,
Denis

Reply | Threaded
Open this post in threaded view
|

Re: [Ann] ObjectTravel. A tool to traverse object references

Denis Kudriashov
Hi Herman.

2016-07-22 21:38 GMT+02:00 Hernán Morales Durand <[hidden email]>:
Hi Denis,

Looks very cool, thank you very much for sharing!

Thankl's.
 
A couple of questions. Can you comment how (if) you've applied your ObjectTravel? Or some use cases you have in mind?
Have you tried to implement travelling methods of the Composite design pattern with your package?

This package is very low level. It is not supposed to provide domain specific objects navigation. For this purpose look at DeepTraverser project http://www.humane-assessment.com/blog/traversal-enabled-pharo-objects/.

ObjectTravel implements streaming capabilities over native object references (inst vars, for example).
 
Seamless uses it to decide how to transfer internal state of sent objects. It applies appropriate transfer strategy to each object reference.

Theoretically Fuel could use ObjectTraveler instead of own traversal implementation.