That's a lot of money for players to lose.
They keep the signing / roster bonus etc. Any bonus from this years contract already paid out they keep. It's just not accounted for on the cap.
But they don't get any bonus next year. The roster bonus James was already paid now counts as next years bonus and will count on next years cap.