TMongoWire v1.1, now on jsonDoc!
2017-04-04 19:46 mw_1_1 [permalink]
This took more effort than I anticipated, but I'm glad I saw it through. A tiny bit of history: when I started creating a Delphi connector to access a MongoDB instance, I had to create the tools to manipulate BSON, and since I really (really!) hate long lists of overloaded methods, I created something based on Variant values. It works great for ADO, so why not. Some time later I had to manipulate JSON, unrelated to MongoDB, so I took what I got, stripped BSON-specifics, into jsonDoc. There it evolved on its own and gained some useful features.
So it was time to re-work TMongoWire, making it use jsonDoc just like any other project. There's still a bit of BSON-specific code, but it deserves a unit of its own. The downside is there's an extra unit to include in the project, but there were multiple already (jsonDoc, bsonTools, mongoWire and if needed mongoID, mongoAuth3 and mongoStream); the upside is the improved performance and features of jsonDoc, both of the current version and those the future could bring. Enough change to bump that version number:
Please let me know if the migration effort this generates is surmountable, and if I can do anything to help. In theory any references to
BSON function and the
IBSONDocument interface should keep working once replaced with references to respectively
IJSONDocument. The document object no longer implements
IPersistStream, but this may have been stretching abstraction just a bit too far. We're on Delphi so plain old
TStream should do, and apparently
IPersistStream's Seek signature changed a tiny bit over Delphi versions, making it harder to make the code cross-version-ready.