@Override public OriginHealthStatusMonitor addOriginStatusListener(OriginHealthStatusMonitor.Listener listener) { this.listeners.addListener(listener); return this; }
/** * Creates a new Builder that inherits this origin's properties. * * @return a new Builder that inherits this origin's properties */ public Builder newBuilder() { return newOriginBuilder(this); }
/** * Creates a new {@link Origin} porting to a specified host and port. * * @param host host * @param port port * @return origin */ public static Origin origin(String host, int port) { return newOriginBuilder(host, port) .applicationId(randomUUID().toString()) .id(randomUUID().toString()) .build(); } }
private static Set<Origin> withAppId(Collection<Origin> origins, String appId) { return origins.stream().map(origin -> newOriginBuilder(origin) .applicationId(appId) .build()) .collect(toSet()); }
private Origin newOrigin(int port) { return newOriginBuilder("localhost", port).build(); }
@Test public void announcesToRegisteredListener() { // Given announcer: Announcer<AnnouncerTestListener> announcer = Announcer.to(AnnouncerTestListener.class); assertThat(announcer, is(notNullValue())); // Register listeners: TestObserver observer = new TestObserver(); announcer.addListener(observer); // Announce: announcer.announce().announceTest("Hello Observers"); // Then: assertThat(observer.message(), is("Hello Observers")); }
private void notifyStateChange() { OriginsSnapshot event = new OriginsSnapshot(appId, pools(ACTIVE), pools(INACTIVE), pools(DISABLED)); inventoryListeners.announce().originsChanged(event); eventBus.post(event); }
@Test public void doesNotThrowExceptionIfNoListenersAreRegisteredWhenAnnouncing() { // Given announcer: Announcer<AnnouncerTestListener> announcer = Announcer.to(AnnouncerTestListener.class); assertThat(announcer, is(notNullValue())); // Don't register listeners // Announce: announcer.announce().announceTest("Hello Observers"); // Announcer should not throw exceptions. }
@Override public void close() { // To avoid infinite recursion: if (connected) { connected = false; listeners.announce().connectionClosed(this); } }
/** * Creates a new Origin builder. * * @param host hostname * @param port port * @return a new Origin builder */ public static Builder newOriginBuilder(String host, int port) { return new Builder(host, port); }
/** * Builds a new Origin with the properties set in this builder. * * @return a new Origin */ public Origin build() { return new Origin(this); } }
/** * Creates a notifier that can announce the registered listeners. * * @param listenerType the type of the listeners * @param <T> the type of the listeners * @return a notifier that can announce the registered listeners */ public static <T extends EventListener> Announcer<T> to(Class<? extends T> listenerType) { return new Announcer<>(listenerType); }
public static RemoteHost remoteHost(Origin origin, HttpHandler client, LoadBalancingMetricSupplier metricSupplier) { return new RemoteHost(origin, client, metricSupplier); }
private Origin(Builder builder) { this.host = builder.host; this.port = builder.port; this.hostAsString = string(host, port); this.applicationId = requireNonNull(builder.applicationId); this.originId = requireNonNull(builder.originId); this.hashCode = Objects.hash(this.applicationId, this.host, this.originId); }
private void resetListeners(Set<Origin> origins) { for (Origin origin : origins) { this.listeners.announce().monitoringEnded(origin); } }
@Override public void addConnectionListener(Listener listener) { this.listeners.addListener(listener); }
/** * Creates a new builder from an existing origin that will inherit the properties of that origin. * * @param origin an existing origin * @return a new builder inheriting its properties */ public static Builder newOriginBuilder(Origin origin) { return new Builder(origin); }
@Override public void addOriginsChangeListener(OriginsChangeListener listener) { inventoryListeners.addListener(listener); }
@Override public void addConnectionListener(Listener listener) { listeners.addListener(listener); }