String mailbox = subscription.getMailbox();
try {
Node node = null;
JCRSubscription sub = (JCRSubscription) findMailboxSubscriptionForUser(username, mailbox);
// its a new subscription
if (sub == null) {
node = JcrUtils.getOrAddNode(getSession().getRootNode(), MAILBOXES_PATH);
node = JcrUtils.getOrAddNode(node, Text.escapeIllegalJcrChars(MailboxConstants.USER_NAMESPACE));
// This is needed to minimize the child nodes a bit
node = createUserPathStructure(node, Text.escapeIllegalJcrChars(username));
} else {
node = sub.getNode();
}
// Copy new properties to the node
((JCRSubscription)subscription).merge(node);