Release v4.0.0
V4.0.0
That release is not binary compatible to 3.x.x It’s mostly source compatible to the exception of the CsvParser package rename.
The release target contains the following big ticket items
Known regression
- #544 List
bars can be map with "bars_val" but an alias to that name does not work should impact you if you use alias to be able directly to the element of the list of simple object like String, Integer etc.. will be fixed in 4.0.1
Support for EclipseCollections Lists, Guava Immutable Lists, and copy on collection on construction
If you are wrapping the collection in an unmodifiableCollection like
private A(Set<B> bs) { this.bs = Collections.unmodifiableSet(new HashSet<>(bs)); }
you will need to annotate your class with @ModifyInjectedParams
annotation - it is possible to had a parameter to the config but that one is not yet exposed.
- #421 Eclipse collections supports List/ImmutableList
- #429 Immutable collection, transformed on injection
- #476 Postpone object creation until break detected - needed for immutable collections
- #487 Wrong result if copying set in the construction
lighter csv module and better error
easier error handling
You can now create a mapper with error handling.
CsvMapper<Result<T517, CsvColumnKey>> mapper =
CsvMapperFactory.newInstance()
.newErrorCollectingMapper(T517.class);
That will return a Result will contains the mapped object and any mapping errors if any occured.
Iterator<Result<T517, CsvColumnKey>> iterator = mapper.iterator(new StringReader("v1,v2\n1,a\na,2"));
Result<T517, CsvColumnKey> t = iterator.next();
assertEquals(1l, t.getValue().v1.longValue());
assertNull(t.getValue().v2);
assertEquals(1, t.getErrors().size());
assertEquals("v2", t.getErrors().get(0).getKey().getName());
you can plug the mapper in the CsvParser
using the mapTo
dsl function.
- #517 Better error handling on csv mapping