Top Description Fields Constructors Methods
org.reactfx

public abstract Class ObservableBase<O, T>

extends Object
implements ProperObservable<O, T>
Class Inheritance
All Implemented Interfaces
org.reactfx.ProperObservable, org.reactfx.Observable
Known Direct Subclasses
org.reactfx.SuspendableBase, org.reactfx.SuspenderBase, org.reactfx.collection.LiveListBase, org.reactfx.value.ValBase, org.reactfx.EventStreamBase
Type Parameters
<O>
type of the observer
<T>
type of produced values
Imports
java.util.function.Consumer, org.reactfx.util.ListHelper, .NotificationAccumulator

Base class for observable objects. This abstract class implements:
  1. Observer management: adding and removing observers.
  2. Lazy binding to inputs. An observable has 0 or more inputs, most commonly, but not necessarily, other observables. Lazy binding to inputs means that the observable observes its inputs only when it is itself being observed.
  3. Observer notification.

Field Summary

Modifier and TypeField and Description
private Subscription
private ListHelper<O>
private final NotificationAccumulator<O, T, ?>

Constructor Summary

AccessConstructor and Description
protected
ObservableBase(NotificationAccumulator<O, T, ?> pendingNotificationsImpl)

protected

Method Summary

Modifier and TypeMethod and Description
public final void
protected final void
public boolean
equals(Object o)

Overrides java.lang.Object.equals.

Indicates whether some other object is "equal to" this one.

protected final void
forEachObserver(Consumer<O>
action to execute for each observer.
action
)

Executes action for each observer, regardless of recursion state.

protected final int
public int
hashCode()

Overrides java.lang.Object.hashCode.

Returns a hash code value for this object.

public final boolean
protected void
newObserver(O observer)

Called for each new observer.

public final void
protected final void
public final Subscription
observe(O observer)

Overrides default org.reactfx.Observable.observe.

protected abstract Subscription

Returns:

subscription used to stop observing inputs. The subscription is unsubscribed (i.e. input observation stops) when the number of observers goes down to 0.
observeInputs
()

Starts observing this observable's input(s), if any.

public final void
public String
toString()

Overrides java.lang.Object.toString.

Returns a string representation of the object.

Inherited from java.lang.Object:
clonefinalizegetClassnotifynotifyAllwaitwaitwait

Field Detail

inputSubscriptionback to summary
private Subscription inputSubscription
observersback to summary
private ListHelper<O> observers
pendingNotificationsback to summary
private final NotificationAccumulator<O, T, ?> pendingNotifications

Constructor Detail

ObservableBaseback to summary
protected ObservableBase(NotificationAccumulator<O, T, ?> pendingNotificationsImpl)
ObservableBaseback to summary
protected ObservableBase()

Method Detail

addObserverback to summary
public final void addObserver(O observer)

Implements org.reactfx.Observable.addObserver.

Annotations
@Override
enqueueNotificationsback to summary
protected final void enqueueNotifications(T event)
equalsback to summary
public boolean equals(Object o)

Overrides java.lang.Object.equals.

Doc from java.lang.Object.equals.

Indicates whether some other object is "equal to" this one.

The equals method implements an equivalence relation on non-null object references:

  • It is reflexive: for any non-null reference value x, x.equals(x) should return true.
  • It is symmetric: for any non-null reference values x and y, x.equals(y) should return true if and only if y.equals(x) returns true.
  • It is transitive: for any non-null reference values x, y, and z, if x.equals(y) returns true and y.equals(z) returns true, then x.equals(z) should return true.
  • It is consistent: for any non-null reference values x and y, multiple invocations of x.equals(y) consistently return true or consistently return false, provided no information used in equals comparisons on the objects is modified.
  • For any non-null reference value x, x.equals(null) should return false.

An equivalence relation partitions the elements it operates on into equivalence classes; all the members of an equivalence class are equal to each other. Members of an equivalence class are substitutable for each other, at least for some purposes.

Annotations
@Override
forEachObserverback to summary
protected final void forEachObserver(Consumer<O> action)

Executes action for each observer, regardless of recursion state. If action throws an exception for one observer, it will not be called for any subsequent observers and the exception will be propagated by this method.

Parameters
action:Consumer<O>

action to execute for each observer.

getObserverCountback to summary
protected final int getObserverCount()
hashCodeback to summary
public int hashCode()

Overrides java.lang.Object.hashCode.

Doc from java.lang.Object.hashCode.

Returns a hash code value for this object. This method is supported for the benefit of hash tables such as those provided by java.util.HashMap.

The general contract of hashCode is:

  • Whenever it is invoked on the same object more than once during an execution of a Java application, the hashCode method must consistently return the same integer, provided no information used in equals comparisons on the object is modified. This integer need not remain consistent from one execution of an application to another execution of the same application.
  • If two objects are equal according to the equals method, then calling the hashCode method on each of the two objects must produce the same integer result.
  • It is not required that if two objects are unequal according to the equals method, then calling the hashCode method on each of the two objects must produce distinct integer results. However, the programmer should be aware that producing distinct integer results for unequal objects may improve the performance of hash tables.
Annotations
@Override
isObservingInputsback to summary
public final boolean isObservingInputs()
newObserverback to summary
protected void newObserver(O observer)

Called for each new observer. Overriding this method is a convenient way for subclasses to handle this event, for example to publish some initial events.

This method is called after the observeInputs() method.

notifyObserversback to summary
public final void notifyObservers(T event)

Implements org.reactfx.ProperObservable.notifyObservers.

Annotations
@Override
notifyObserversback to summary
protected final void notifyObservers()
observeback to summary
public final Subscription observe(O observer)

Overrides default org.reactfx.Observable.observe.

Annotations
@Override
observeInputsback to summary
protected abstract Subscription observeInputs()

Starts observing this observable's input(s), if any. This method is called when the number of observers goes from 0 to 1. This method is called before newObserver(Object) is called for the first observer.

Returns:Subscription

subscription used to stop observing inputs. The subscription is unsubscribed (i.e. input observation stops) when the number of observers goes down to 0.

removeObserverback to summary
public final void removeObserver(O observer)

Implements org.reactfx.Observable.removeObserver.

Annotations
@Override
toStringback to summary
public String toString()

Overrides java.lang.Object.toString.

Doc from java.lang.Object.toString.

Returns a string representation of the object. Satisfying this method's contract implies a non-null result must be returned.

Annotations
@Override