objId within the tag is always null, which will cause the tag code below to always NPE because we can't open the object specified by the null ObjectId...

You need to use HEAD if the caller hasn't set the id, and you need a setter to allow the caller to set an id if they choose to tag something other than HEAD.