Я видел в документации интерфейсов Redhawk Frontend здесь, что вызывает allocateCapacity() и deallocateCapacity() предназначены для создания определенных исключений, если соответствующая операция не удалась. Однако текущая генерация кода в Redhawk 1.9 (и, судя по всему, в текущей разработке) предполагает, что разработчики должны использовать парадигму вызова setAllocator() для свойства распределения с объектом Allocator. Интерфейс распределителя выглядит следующим образом:
public interface Allocator<E> {
public boolean allocate(E capacity);
public void deallocate(E capacity);
}
Эти методы не генерируют (проверенные) типы исключений InvalidCapacity и InvalidState. Я ожидал, что смогу выбрасывать их во время моих реализаций allocate() и освобождать для свойства структуры распределения тюнера и позволять им распространяться до вызовов allocateCapacity(), deallocateCapacity(), но отсутствие операторов @throws в интерфейсе Allocator мешает мне это сделать.
Мои вопросы:
- Правильно ли я считаю, что разработчики должны использовать подход setAllocator()?
- Если да, то есть ли способ генерировать эти проверенные исключения в реализации распределителя, или нам не рекомендуется генерировать их в несгенерированном коде?
2.a. Если выбрасывать их не рекомендуется, есть ли какой-либо стандартный способ указать на сбой при освобождении? - Если нет, то как мы должны реализовать распределение? Переопределение allocateCapacity() и DeallocateCapacity() непосредственно в классе устройства кажется плохим подходом.
Я разрабатываю Redhawk 1.9.0 на RHEL 5.