Search in sources :

Example 1 with ClientApplicationRegisteredEvent

use of de.codecentric.boot.admin.event.ClientApplicationRegisteredEvent in project spring-boot-admin by codecentric.

the class ApplicationRegistry method register.

/**
	 * Register application.
	 *
	 * @param application application to be registered.
	 * @return the registered application.
	 */
public Application register(Application application) {
    Assert.notNull(application, "Application must not be null");
    Assert.hasText(application.getName(), "Name must not be null");
    Assert.hasText(application.getHealthUrl(), "Health-URL must not be null");
    Assert.isTrue(checkUrl(application.getHealthUrl()), "Health-URL is not valid");
    Assert.isTrue(StringUtils.isEmpty(application.getManagementUrl()) || checkUrl(application.getManagementUrl()), "URL is not valid");
    Assert.isTrue(StringUtils.isEmpty(application.getServiceUrl()) || checkUrl(application.getServiceUrl()), "URL is not valid");
    String applicationId = generator.generateId(application);
    Assert.notNull(applicationId, "ID must not be null");
    Application.Builder builder = Application.copyOf(application).withId(applicationId);
    Application existing = getApplication(applicationId);
    if (existing != null) {
        // Copy Status and Info from existing registration.
        builder.withStatusInfo(existing.getStatusInfo()).withInfo(existing.getInfo());
    }
    Application registering = builder.build();
    Application replaced = store.save(registering);
    if (replaced == null) {
        LOGGER.info("New Application {} registered ", registering);
        publisher.publishEvent(new ClientApplicationRegisteredEvent(registering));
    } else {
        if (registering.getId().equals(replaced.getId())) {
            LOGGER.debug("Application {} refreshed", registering);
        } else {
            LOGGER.warn("Application {} replaced by Application {}", registering, replaced);
        }
    }
    return registering;
}
Also used : ClientApplicationRegisteredEvent(de.codecentric.boot.admin.event.ClientApplicationRegisteredEvent) Application(de.codecentric.boot.admin.model.Application)

Example 2 with ClientApplicationRegisteredEvent

use of de.codecentric.boot.admin.event.ClientApplicationRegisteredEvent in project spring-boot-admin by codecentric.

the class ApplicationEventJournalTest method test_registration.

@Test
public void test_registration() {
    ClientApplicationEvent emittedEvent = new ClientApplicationRegisteredEvent(Application.create("foo").withId("bar").withHealthUrl("http://health").build());
    journal.onClientApplicationEvent(emittedEvent);
    Collection<ClientApplicationEvent> events = journal.getEvents();
    assertThat(events.size(), is(1));
    ClientApplicationEvent event = events.iterator().next();
    assertThat(event, sameInstance(emittedEvent));
}
Also used : ClientApplicationRegisteredEvent(de.codecentric.boot.admin.event.ClientApplicationRegisteredEvent) ClientApplicationEvent(de.codecentric.boot.admin.event.ClientApplicationEvent) Test(org.junit.Test)

Example 3 with ClientApplicationRegisteredEvent

use of de.codecentric.boot.admin.event.ClientApplicationRegisteredEvent in project spring-boot-admin by codecentric.

the class HazelcastJournaledEventStoreTest method test_store.

@Test
public void test_store() {
    Application application = Application.create("foo").withId("bar").withHealthUrl("http://health").build();
    List<ClientApplicationEvent> events = Arrays.asList(new ClientApplicationRegisteredEvent(application), new ClientApplicationDeregisteredEvent(application));
    for (ClientApplicationEvent event : events) {
        store.store(event);
    }
    // Items are stored in reverse order
    List<ClientApplicationEvent> reversed = new ArrayList<>(events);
    Collections.reverse(reversed);
    assertThat(store.findAll(), is((Collection<ClientApplicationEvent>) reversed));
}
Also used : ClientApplicationDeregisteredEvent(de.codecentric.boot.admin.event.ClientApplicationDeregisteredEvent) ArrayList(java.util.ArrayList) Collection(java.util.Collection) ClientApplicationRegisteredEvent(de.codecentric.boot.admin.event.ClientApplicationRegisteredEvent) Application(de.codecentric.boot.admin.model.Application) ClientApplicationEvent(de.codecentric.boot.admin.event.ClientApplicationEvent) Test(org.junit.Test)

Example 4 with ClientApplicationRegisteredEvent

use of de.codecentric.boot.admin.event.ClientApplicationRegisteredEvent in project spring-boot-admin by codecentric.

the class SimpleJournaledEventStoreTest method test_store.

@Test
public void test_store() {
    SimpleJournaledEventStore store = new SimpleJournaledEventStore();
    Application application = Application.create("foo").withId("bar").withHealthUrl("http://health").build();
    List<ClientApplicationEvent> events = Arrays.asList(new ClientApplicationRegisteredEvent(application), new ClientApplicationDeregisteredEvent(application));
    for (ClientApplicationEvent event : events) {
        store.store(event);
    }
    assertThat(store.findAll(), is((Collection<ClientApplicationEvent>) Arrays.asList(events.get(1), events.get(0))));
}
Also used : ClientApplicationDeregisteredEvent(de.codecentric.boot.admin.event.ClientApplicationDeregisteredEvent) Collection(java.util.Collection) ClientApplicationRegisteredEvent(de.codecentric.boot.admin.event.ClientApplicationRegisteredEvent) Application(de.codecentric.boot.admin.model.Application) ClientApplicationEvent(de.codecentric.boot.admin.event.ClientApplicationEvent) Test(org.junit.Test)

Example 5 with ClientApplicationRegisteredEvent

use of de.codecentric.boot.admin.event.ClientApplicationRegisteredEvent in project spring-boot-admin by codecentric.

the class SimpleJournaledEventStoreTest method test_store_capacity.

@Test
public void test_store_capacity() {
    SimpleJournaledEventStore store = new SimpleJournaledEventStore();
    store.setCapacity(2);
    Application application = Application.create("foo").withId("bar").withHealthUrl("http://health").build();
    List<ClientApplicationEvent> events = Arrays.asList(new ClientApplicationRegisteredEvent(application), new ClientApplicationDeregisteredEvent(application), new ClientApplicationDeregisteredEvent(application));
    for (ClientApplicationEvent event : events) {
        store.store(event);
    }
    assertThat(store.findAll(), is((Collection<ClientApplicationEvent>) Arrays.asList(events.get(2), events.get(1))));
}
Also used : ClientApplicationDeregisteredEvent(de.codecentric.boot.admin.event.ClientApplicationDeregisteredEvent) Collection(java.util.Collection) ClientApplicationRegisteredEvent(de.codecentric.boot.admin.event.ClientApplicationRegisteredEvent) Application(de.codecentric.boot.admin.model.Application) ClientApplicationEvent(de.codecentric.boot.admin.event.ClientApplicationEvent) Test(org.junit.Test)

Aggregations

ClientApplicationRegisteredEvent (de.codecentric.boot.admin.event.ClientApplicationRegisteredEvent)9 Test (org.junit.Test)8 ClientApplicationEvent (de.codecentric.boot.admin.event.ClientApplicationEvent)5 Application (de.codecentric.boot.admin.model.Application)5 ClientApplicationDeregisteredEvent (de.codecentric.boot.admin.event.ClientApplicationDeregisteredEvent)3 Collection (java.util.Collection)3 ArrayList (java.util.ArrayList)1 Future (java.util.concurrent.Future)1 ScheduledFuture (java.util.concurrent.ScheduledFuture)1 InvocationOnMock (org.mockito.invocation.InvocationOnMock)1 SpringApplication (org.springframework.boot.SpringApplication)1 ThreadPoolTaskScheduler (org.springframework.scheduling.concurrent.ThreadPoolTaskScheduler)1 SettableListenableFuture (org.springframework.util.concurrent.SettableListenableFuture)1