@Override public Optional<SimpleData> build(final DataView container) { Optional<Integer> testInt = container.getInt(new DataQuery("myInt")); if (!testInt.isPresent()) { throw new InvalidDataException("Missing important data: {myInt}"); } Optional<Double> testDouble = container.getDouble(new DataQuery("myDouble")); if (!testDouble.isPresent()) { throw new InvalidDataException("Missing important data: {myDouble}"); } Optional<String> testString = container.getString(new DataQuery("myString")); if (!testString.isPresent()) { throw new InvalidDataException("Missing important data: {myString}"); } Optional<List<String>> testList = container.getStringList(new DataQuery("myStringList")); if (!testList.isPresent()) { throw new InvalidDataException("Missing important data: {myStringList}"); } return Optional.of( new SimpleData(testInt.get(), testDouble.get(), testString.get(), testList.get())); }