Алгоритм может стать сильно сложнее, если на расположение объектов есть определенные ограничения, как то: шкаф всегда вдоль стены, стул, возле стола и т.п.
делаем обход матрицы, и смотрим, есть ли достаточное количество свободных мест для размещения объекта
Переопределяю вот этот метод:
public void commence(HttpServletRequest request, HttpServletResponse response, AuthenticationException authException)