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

  • #510 extract csv parser to its own module
  • #518 Ability to require a csv column

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

And other changes :

  • #529 update cassandra drivers
  • #461 Rename property should fail fast if not found
  • #466 Add documentation on aliases and rename property for in/out