Put the cannellini beans in a bowl and cover them generously with cold water. Leave to soak overnight.
Drain and thoroughly rinse the beans, then put them into a large saucepan with the bay leaves, parsley stalks and, if you are using them, the thyme and rosemary. Pour in 1 litre of cold water and bring to the boil. Boil rapidly, uncovered, for 10 minutes. Skim off any scum that rises to the surface.
Peel one of the onions and stud with the cloves. Add to the pan, cover and simmer gently for 50 minutes, or until the beans are almost tender. Drain, reserving the stock and beans separately, but discarding the herbs and onion.
Meanwhile, gently fry the bacon in a large, flameproof casserole dish for 5 minutes until the fat starts to run. Remove with a slotted spoon and set aside, then add the sausages to the dish. Increase the heat to moderate and cook for 10 minutes, turning frequently, until lightly browned all over. Remove from the dish and set aside on the plate with the bacon.
Drain all but 1 tablespoon of fat from the dish or add 1 tablespoon of oil if necessary. Finely chop the remaining onion, then gently cook for 7–8 minutes until soft and translucent. Add the leek and garlic to the dish and cook for a further 2 minutes.
Thickly slice the sausages and return them to the dish along with the bacon. Add the carrots, tinned tomatoes, paprika, cannellini beans and 400ml of the reserved stock. Season with salt and pepper. Bring the cassoulet to the boil, cover and simmer gently for 10 minutes. Preheat the oven to 160 degrees C.
Meanwhile, to make the crust, combine the breadcrumbs, parsley and garlic in a small bowl.
Sprinkle the breadcrumb mixture over the cassoulet and dot with the diced butter. Cook uncovered in the oven for 45–50 minutes, or until the vegetables are tender and the crust is nicely browned and crisp.