@Override protected void buildDemoApplicationImpl(AdminClient client) throws Exception { logger.info("Loading 'City lights controller application' data..."); loginTenantAdmin(client); ApplicationDto cityLightsDemoApplication = new ApplicationDto(); cityLightsDemoApplication.setName("City lights controller demo"); cityLightsDemoApplication = client.editApplication(cityLightsDemoApplication); sdkPropertiesDto.setApplicationId(cityLightsDemoApplication.getId()); sdkPropertiesDto.setProfileSchemaVersion(1); sdkPropertiesDto.setNotificationSchemaVersion(1); sdkPropertiesDto.setLogSchemaVersion(1); loginTenantDeveloper(client); logger.info("Creating configuration schema..."); ConfigurationSchemaDto configurationSchema = new ConfigurationSchemaDto(); configurationSchema.setApplicationId(cityLightsDemoApplication.getId()); configurationSchema.setName("City lights controller schema"); configurationSchema.setDescription( "Default configuration schema for the city lights controller application"); configurationSchema = client.createConfigurationSchema( configurationSchema, getResourcePath("config_schema.avsc")); logger.info("Configuration schema version: {}", configurationSchema.getMajorVersion()); sdkPropertiesDto.setConfigurationSchemaVersion(configurationSchema.getMajorVersion()); logger.info("Configuration schema was created."); EndpointGroupDto baseEndpointGroup = null; List<EndpointGroupDto> endpointGroups = client.getEndpointGroups(cityLightsDemoApplication.getId()); if (endpointGroups.size() == 1 && endpointGroups.get(0).getWeight() == 0) { baseEndpointGroup = endpointGroups.get(0); } if (baseEndpointGroup == null) { throw new RuntimeException( "Can't get default endpoint group for the city lights controller application!"); } ConfigurationDto baseConfiguration = new ConfigurationDto(); baseConfiguration.setApplicationId(cityLightsDemoApplication.getId()); baseConfiguration.setEndpointGroupId(baseEndpointGroup.getId()); baseConfiguration.setSchemaId(configurationSchema.getId()); baseConfiguration.setMajorVersion(configurationSchema.getMajorVersion()); baseConfiguration.setMinorVersion(configurationSchema.getMinorVersion()); baseConfiguration.setDescription("Base city lights controller configuration"); String body = FileUtils.readResource(getResourcePath("config_data.json")); logger.info("Configuration body: [{}]", body); ObjectMapper objectMapper = new ObjectMapper(); Map<String, Object> configBody = objectMapper.readValue(body, Map.class); logger.info("Getting config body: [{}]", configBody); Map<String, Object> kaaClientConfig = (Map<String, Object>) configBody.get(KAA_CLIENT_CONFIG); logger.info("Getting kaaClientConfig: [{}]", kaaClientConfig); logger.info("Getting traffic lights and traffic lights app tokens..."); List<ApplicationDto> applications = client.getApplications(); logger.info("All available applications: [{}]", applications); ApplicationDto trafficLightsApplication = getApplicationWithName(applications, TRAFFIC_LIGHTS_APPLICATION_NAME); if (trafficLightsApplication == null) { logger.error(formErrorLogMessage(TRAFFIC_LIGHTS_APPLICATION_NAME)); throw new RuntimeException( "Can't get '" + TRAFFIC_LIGHTS_APPLICATION_NAME + "' application!"); } logger.info( TRAFFIC_LIGHTS_APPLICATION_NAME + " application was found: {}", trafficLightsApplication); ApplicationDto streetLightApplication = getApplicationWithName(applications, STREET_LIGHT_APPLICATION_NAME); if (streetLightApplication == null) { logger.error(formErrorLogMessage(STREET_LIGHT_APPLICATION_NAME)); throw new RuntimeException("Can't get '" + STREET_LIGHT_APPLICATION_NAME + "' application!"); } logger.info( STREET_LIGHT_APPLICATION_NAME + " application was found: {}", streetLightApplication); kaaClientConfig.put( TRAFFIC_LIGHTS_APP_TOKEN_PROPERTY, trafficLightsApplication.getApplicationToken()); kaaClientConfig.put( STREET_LIGHT_APP_TOKEN_PROPERTY, streetLightApplication.getApplicationToken()); body = objectMapper.writerWithDefaultPrettyPrinter().writeValueAsString(configBody); logger.info("Configuration body after altering: [{}]", body); baseConfiguration.setBody(body); baseConfiguration.setStatus(UpdateStatus.INACTIVE); logger.info("Editing the configuration..."); baseConfiguration = client.editConfiguration(baseConfiguration); logger.info("Configuration was successfully edited"); logger.info("Activating the configuration"); client.activateConfiguration(baseConfiguration.getId()); logger.info("Configuration was activated"); logger.info("Finished loading 'City lights controller application' data..."); }