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:
https://github.com/stijnsanders/TMongoWire v1.1.0
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 bsonDoc
, the BSON
function and the IBSONDocument
interface should keep working once replaced with references to respectively jsonDoc
, JSON
and 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.