diff --git a/src/main/java/de/tudresden/inf/mci/brailleplot/configparser/JavaPropertiesConfigurationValidator.java b/src/main/java/de/tudresden/inf/mci/brailleplot/configparser/JavaPropertiesConfigurationValidator.java index 3e7e2c2ea42d12a786b838564e90c68d2f6f0298..0692fd0647fe24d126e9838b04d31c66f9140d7f 100644 --- a/src/main/java/de/tudresden/inf/mci/brailleplot/configparser/JavaPropertiesConfigurationValidator.java +++ b/src/main/java/de/tudresden/inf/mci/brailleplot/configparser/JavaPropertiesConfigurationValidator.java @@ -16,8 +16,8 @@ import java.util.regex.Pattern; /** * Concrete validator for properties parsed from configuration files in Java Property File format. - * @author Leonard Kupper - * @version 2019.07.18 + * @author Leonard Kupper, Andrey Ruzhanskiy + * @version 2019.07.30 */ class JavaPropertiesConfigurationValidator implements ConfigurationValidator { @@ -43,6 +43,7 @@ class JavaPropertiesConfigurationValidator implements ConfigurationValidator { Predicate<String> requireEnum = JavaPropertiesConfigurationValidator::checkIfEnum; Predicate<String> requirePrinterExists = JavaPropertiesConfigurationValidator::checkIfPrinterExists; + /* Map<String, Predicate<String>> p = new HashMap<>(); p.put("name", requireNotEmpty.and(requirePrinterExists)); @@ -210,11 +211,16 @@ class JavaPropertiesConfigurationValidator implements ConfigurationValidator { throw new ConfigurationValidationException("Invalid property name: " + propertyName); } // Check against its type requirement predicate - if (!validation.get(propertyName).test(value)) { - throw new ConfigurationValidationException( - "Invalid value '" + value + "' for property '" + propertyName + "'" - ); + try { + if (!validation.get(propertyName).test(value)) { + throw new ConfigurationValidationException( + "Invalid value '" + value + "' for property '" + propertyName + "'" + ); + } + } catch (RuntimeException e) { + throw new ConfigurationValidationException(e.getMessage(), e); } + } // Validation Predicates @@ -291,6 +297,9 @@ class JavaPropertiesConfigurationValidator implements ConfigurationValidator { private static boolean checkIfPrinterExists(final String printerName) { PrintService[] services = PrintServiceLookup.lookupPrintServices(null, null); + if (services.length == 0) { + throw new RuntimeException("Cant find any print services on this system."); + } for (PrintService service: services) { // Second check needed for testing purposes if (service.getName().equals(printerName) || printerName.equals("Dummy Printer")) {