VetoableChangeSupport
VetoableChangeSupport (거부 가능 변경 지원 클래스)
제약(constrained) 속성을 지원하는 빈이 사용할 수 있는 유틸리티 클래스예요. 리스너 목록을 관리하고 PropertyChangeEvent를 그 리스너들에게 전달해요. 이 클래스의 인스턴스를 빈의 멤버 필드로 두고 이런 작업을 위임할 수 있어요. VetoableChangeListener는 모든 속성에 대해, 또는 이름으로 지정된 특정 속성에 대해서만 등록할 수 있어요.
본문
VetoableChangeSupport는 PropertyChangeSupport와 유사하지만, 제약 속성의 변경을 통지한다는 점이 달라요. 리스너가 PropertyVetoException을 던지면 변경이 거부되고, 거부 사실은 변경을 시도한 쪽에 예외로 전달돼요.
주요 메서드는 다음과 같아요.
public VetoableChangeSupport(Object sourceBean)
public void addVetoableChangeListener(VetoableChangeListener listener)
public void removeVetoableChangeListener(VetoableChangeListener listener)
public VetoableChangeListener[] getVetoableChangeListeners()
public void addVetoableChangeListener(String propertyName, VetoableChangeListener listener)
public void removeVetoableChangeListener(String propertyName, VetoableChangeListener listener)
public VetoableChangeListener[] getVetoableChangeListeners(String propertyName)
public void fireVetoableChange(String propertyName, Object oldValue, Object newValue) throws PropertyVetoException
add/removeVetoableChangeListener— 모든 속성 또는 특정 속성에 대한 리스너를 등록·제거해요.fireVetoableChange()— 제약 속성 변경을 알리는PropertyChangeEvent를 발생시켜요. 리스너가 거부하면PropertyVetoException이 발생해요.
이 클래스는 직렬화 가능하며, 직렬화 시 직렬화 가능한 리스너만 저장·복원되고 나머지는 건너뜁니다. PropertyChangeSupport와 함께 제약 속성을 가진 빈에서 자주 사용돼요.