package org.netbeans.gradle.project.api.property; import javax.annotation.Nonnull; import org.jtrim.property.PropertySource; import org.netbeans.gradle.project.api.event.NbListenerRef; /** * Defines the value of an arbitrary property. The value of this property might * change in an implementation dependent way. Some property might be changed by * client code, some might change due to external (and uncontrollable) events. * <P> * For example, the value of the property can be derived from the content of a * file and might get updated after the content of that file changes. * <P> * This interface exists for backward compatibilty reasons only, you * should use {@code org.jtrim.property.PropertySource} instead. * * <h3>Thread safety</h3> * Instances of this interface are required to be completely thread-safe * without any further synchronization. * * <h4>Synchronization transparency</h4> * Methods of this interface are required to be * <I>synchronization transparent</I> and may be called from any context. * * @param <ValueType> the type of the value of the property */ public interface NbPropertySource<ValueType> extends PropertySource<ValueType> { /** * {@inheritDoc } */ @Override public ValueType getValue(); /** * {@inheritDoc } */ @Nonnull @Override public NbListenerRef addChangeListener(@Nonnull Runnable listener); }