use of de.fraunhofer.iosb.ilt.faaast.service.exception.InvalidConfigurationException in project FAAAST-Service by FraunhoferIOSB.
the class Service method init.
private void init() throws ConfigurationException {
if (config.getPersistence() == null) {
throw new InvalidConfigurationException("config.persistence must be non-null");
}
persistence = (Persistence) config.getPersistence().newInstance(config.getCore(), this);
if (config.getMessageBus() == null) {
throw new InvalidConfigurationException("config.messagebus must be non-null");
}
messageBus = (MessageBus) config.getMessageBus().newInstance(config.getCore(), this);
if (config.getAssetConnections() != null) {
List<AssetConnection> assetConnections = new ArrayList<>();
for (AssetConnectionConfig assetConnectionConfig : config.getAssetConnections()) {
assetConnections.add((AssetConnection) assetConnectionConfig.newInstance(config.getCore(), this));
}
assetConnectionManager = new AssetConnectionManager(config.getCore(), assetConnections, this);
}
if (config.getEndpoints() == null || config.getEndpoints().isEmpty()) {
// TODO maybe be less restrictive and only print warning
// throw new InvalidConfigurationException("at least endpoint must be defined in the configuration");
logger.warn("no endpoint configuration found, starting service without endpoint which means the service will not be accessible via any kind of API");
} else {
endpoints = new ArrayList<>();
for (EndpointConfig endpointConfig : config.getEndpoints()) {
Endpoint endpoint = (Endpoint) endpointConfig.newInstance(config.getCore(), this);
endpoints.add(endpoint);
}
}
this.requestHandler = new RequestHandlerManager(this.config.getCore(), this.persistence, this.messageBus, this.assetConnectionManager);
}
use of de.fraunhofer.iosb.ilt.faaast.service.exception.InvalidConfigurationException in project FAAAST-Service by FraunhoferIOSB.
the class AssetConnectionManager method validateConnections.
private void validateConnections() throws ConfigurationException {
Map<Reference, List<AssetValueProvider>> valueProviders = connections.stream().flatMap(x -> (Stream<Map.Entry<Reference, AssetValueProvider>>) x.getValueProviders().entrySet().stream()).collect(Collectors.groupingBy(x -> x.getKey(), Collectors.mapping(x -> x.getValue(), Collectors.toList()))).entrySet().stream().filter(x -> x.getValue().size() > 1).collect(Collectors.toMap(x -> x.getKey(), x -> x.getValue()));
for (Reference reference : valueProviders.keySet()) {
throw new InvalidConfigurationException(String.format("found %d value connections for reference %s but maximum 1 allowed", valueProviders.get(reference).size(), reference));
}
Map<Reference, List<AssetOperationProvider>> operationProviders = connections.stream().flatMap(x -> (Stream<Map.Entry<Reference, AssetOperationProvider>>) x.getOperationProviders().entrySet().stream()).collect(Collectors.groupingBy(x -> x.getKey(), Collectors.mapping(x -> x.getValue(), Collectors.toList()))).entrySet().stream().filter(x -> x.getValue().size() > 1).collect(Collectors.toMap(x -> x.getKey(), x -> x.getValue()));
for (Reference reference : operationProviders.keySet()) {
throw new InvalidConfigurationException(String.format("found %d operation connections for reference %s but maximum 1 allowed", operationProviders.get(reference).size(), reference));
}
Map<Reference, List<AssetSubscriptionProvider>> subscriptionProviders = connections.stream().flatMap(x -> (Stream<Map.Entry<Reference, AssetSubscriptionProvider>>) x.getSubscriptionProviders().entrySet().stream()).collect(Collectors.groupingBy(x -> x.getKey(), Collectors.mapping(x -> x.getValue(), Collectors.toList()))).entrySet().stream().filter(x -> x.getValue().size() > 1).collect(Collectors.toMap(x -> x.getKey(), x -> x.getValue()));
for (Reference reference : subscriptionProviders.keySet()) {
throw new InvalidConfigurationException(String.format("found %d subscription connections for reference %s but maximum 1 allowed", subscriptionProviders.get(reference).size(), reference));
}
}
Aggregations