/** * Returns the variable provider of this unit like {@code generateVariablePool()}. Additionally this provider also contains variables related to the given service of this unit. * For this it's needed that this unit supports the given service. Additional to the {@code generateVariablePool()} this method further provides: * * BindingServiceConfig (if available) * * ServiceMetaConfig (if available) * * ServiceConfig (protobuf fields) * * @return a key - value pair pool providing all related variable of this unit including the service variables. * * @throws NotAvailableException is thrown if the variable pool is not available. */ default VariableProvider generateVariablePool(final ServiceConfig serviceConfig) throws NotAvailableException { final MetaConfigPool configPool = (MetaConfigPool) generateVariablePool(); if (serviceConfig.hasBindingConfig()) { configPool.register(new MetaConfigVariableProvider("BindingServiceConfig", serviceConfig.getBindingConfig().getMetaConfig())); } configPool.register(new MetaConfigVariableProvider("ServiceMetaConfig", serviceConfig.getMetaConfig())); configPool.register(new ProtobufVariableProvider(serviceConfig)); return configPool; }
UnitConfig hostUnitConfig = getHostUnitConfig(); configPool.register(new MetaConfigVariableProvider("HostConfigMetaConfig", hostUnitConfig.getMetaConfig())); configPool.register(new ProtobufVariableProvider(hostUnitConfig)); switch (hostUnitConfig.getType()) { case DEVICE: configPool.register(new MetaConfigVariableProvider("DeviceBindingConfig", deviceClass.getBindingConfig().getMetaConfig())); configPool.register(new MetaConfigVariableProvider("DeviceClassMetaConfig", deviceClass.getMetaConfig())); configPool.register(new ProtobufVariableProvider(deviceClass)); break; case APP: configPool.register(new MetaConfigVariableProvider("AppBindingConfig", appClass.getBindingConfig().getMetaConfig())); configPool.register(new MetaConfigVariableProvider("AppClassMetaConfig", appClass.getMetaConfig())); configPool.register(new ProtobufVariableProvider(appClass)); break; UnitConfig locationUnitConfig = Registries.getUnitRegistry(true).getUnitConfigById(unitConfig.getPlacementConfig().getLocationId()); configPool.register(new MetaConfigVariableProvider("UnitLocationMetaConfig", locationUnitConfig.getMetaConfig())); configPool.register(new ProtobufVariableProvider(locationUnitConfig)); } catch (NullPointerException | CouldNotPerformException | InterruptedException ex) { configPool.register(new ProtobufVariableProvider(unitConfig)); return configPool; } catch (final CouldNotPerformException ex) {
configPool.register(new MetaConfigVariableProvider("DeviceBindingConfig", deviceClass.getBindingConfig().getMetaConfig())); configPool.register(new MetaConfigVariableProvider("DeviceClassMetaConfig", deviceClass.getMetaConfig())); configPool.register(new ProtobufVariableProvider(locationUnitConfig)); configPool.register(new ProtobufVariableProvider(unitConfig)); configPool.register(new ProtobufVariableProvider(serviceConfig));