@Override public void initialize(final WriteSession session) throws ApplicationInitializationException { LOGGER.info("Initializing IT Harvester Application..."); try { this.publisher.initialize(session); session.saveChanges(); LOGGER.info("IT Harvester Application initialization completed."); } catch (final Exception e) { final String errorMessage = "IT Harvester Application initialization failed"; LOGGER.warn(errorMessage+". Full stacktrace follows: ",e); throw new ApplicationInitializationException(errorMessage,e); } }
@Test public void testLifecycle$initalizeFailure() throws Exception { final MyApplication application=new MyApplication(); LOGGER.info("Setting up application..."); application.setup(environment, bootstrap); new Expectations() {{ // For the application initialization initSession.find(ResourceSnapshot.class,application.personResourceName(),PersonHandler.class);result=personSnapshot; personSnapshot.createAttachedResource(ContainerSnapshot.class,PersonHandler.RELATIVES_ID,application.relativeContainerResourceName(),RelativeContainerHandler.class);result=null; initSession.find(ResourceSnapshot.class,application.personContainerName(),PersonContainerHandler.class);result=personContainerSnapshot; initSession.saveChanges();result=new WriteSessionException("FAILURE"); }}; LOGGER.info("Initializing application..."); try { application.initialize(initSession); fail("Should not initialize the application if the session fails"); } catch (ApplicationInitializationException e) { assertThat(e.getCause(),instanceOf(WriteSessionException.class)); assertThat(e.getCause().getMessage(),equalTo("FAILURE")); } }
/** * {@inheritDoc} */ @Override public void initialize(WriteSession session) throws ApplicationInitializationException { LOGGER.info("Initializing application: {}",session); ResourceSnapshot person = session.find(ResourceSnapshot.class,this.personResourceName,PersonHandler.class); LOGGER.info("Root resource.......: "+person); LOGGER.info("Root basic container: "+session.find(ResourceSnapshot.class,this.personContainerName,PersonContainerHandler.class)); ContainerSnapshot relativesContainer = person.createAttachedResource(ContainerSnapshot.class, PersonHandler.RELATIVES_ID, this.relativeContainerResourceName, RelativeContainerHandler.class); LOGGER.info("Attached resource...: "+relativesContainer); try { session.saveChanges(); } catch (WriteSessionException e) { throw new ApplicationInitializationException("Could not initialize application",e); } this.executorService. scheduleAtFixedRate( new DynamicResourceUpdater(this.dynamicResourceHandler,this.dynamicResourceName), 1, 15,TimeUnit.SECONDS); this.executorService. schedule( new DynamicResourceResolver(this.dynamicResourceHandler,this.dynamicResourceName), 3,TimeUnit.SECONDS); LOGGER.info("Initialization completed."); }
@Override public void initialize(final WriteSession session) throws ApplicationInitializationException { LOGGER.info("Initializing CI Harvester Application..."); if(!this.controller.setTargetService(this.configuration.target())) { final String errorMessage = "CI Harvester Application initialization failed: cannot create target service "+this.configuration.target(); LOGGER.error(errorMessage); throw new ApplicationInitializationException(errorMessage); } try { final EntityIndex index=this.controller.entityIndex(); final BackendModelPublisher publisher= BackendModelPublisher. builder(). withBackendService(index). withMainService(this.configuration.target()). build(); publisher.publish(session); session.saveChanges(); this.controller.connect(new FrontendSynchronizer(index,publisher)); LOGGER.info("CI Harvester Application initialization completed."); } catch (final Exception e) { final String errorMessage = "CI Harvester Application initialization failed"; LOGGER.error(errorMessage+". Full stacktrace follows: ",e); throw new ApplicationInitializationException(e); } }