Example #1
0
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;
}
Example #2
0
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;
}