001package arez.spy; 002 003import arez.Arez; 004import java.util.Map; 005import java.util.Objects; 006import javax.annotation.Nonnull; 007import javax.annotation.Nullable; 008 009/** 010 * Notification when ObservableValue has changed. 011 */ 012public final class ObservableValueChangeEvent 013 implements SerializableEvent 014{ 015 @Nonnull 016 private final ObservableValueInfo _observableValue; 017 @Nullable 018 private final Object _value; 019 020 public ObservableValueChangeEvent( @Nonnull final ObservableValueInfo observableValue, @Nullable final Object value ) 021 { 022 _observableValue = Objects.requireNonNull( observableValue ); 023 _value = value; 024 } 025 026 @Nonnull 027 public ObservableValueInfo getObservableValue() 028 { 029 return _observableValue; 030 } 031 032 @Nullable 033 public Object getValue() 034 { 035 return _value; 036 } 037 038 @Override 039 public void toMap( @Nonnull final Map<String, Object> map ) 040 { 041 map.put( "type", "ObservableValueChange" ); 042 map.put( "name", getObservableValue().getName() ); 043 if ( Arez.arePropertyIntrospectorsEnabled() ) 044 { 045 map.put( "value", getValue() ); 046 } 047 } 048}