string rebasePath(const Key& key, const Key& oldParent, const Key& newParent) { string oldKeyPath = key.getName (); Key actualOldParent = oldParent.dup(); if (oldParent.getNamespace() == "/") { actualOldParent.setName(key.getNamespace() + oldParent.getName()); } Key actualNewParent = newParent.dup(); if (newParent.getNamespace() == "/") { actualNewParent.setName(key.getNamespace() + newParent.getName()); } if (!key.isBelowOrSame(actualOldParent)) throw InvalidRebaseException( "the supplied key " + key.getName() + " is not below the old parent " + actualOldParent.getName()); string relativePath = oldKeyPath.substr (actualOldParent.getName().length (), oldKeyPath.length ()); string newPath = actualNewParent.getName () + relativePath; return newPath; }
string rebasePath(const Key& key, const Key& oldParent, const Key& newParent) { string oldKeyPath = key.getName (); if (!key.isBelowOrSame(oldParent)) throw InvalidRebaseException("the supplied key is not below the old parent"); string relativePath = oldKeyPath.substr (oldParent.getName().length (), oldKeyPath.length ()); string newPath = newParent.getName () + relativePath; return newPath; }