Skip to content

Commit

Permalink
MapStruct Spring Extensions 1.1.2 released (#149)
Browse files Browse the repository at this point in the history
  • Loading branch information
Chessray authored Aug 31, 2024
1 parent f89f7ec commit e3eb62d
Show file tree
Hide file tree
Showing 165 changed files with 8,087 additions and 45,306 deletions.
Original file line number Diff line number Diff line change
@@ -0,0 +1,65 @@
---
title: "MapStruct Spring Extensions 1.1.2 released"
author: Raimund Klein
date: "2024-08-31"
tags: [ release, news ]
---

It is my pleasure to announce the next official release of MapStruct Spring Extensions.
What started out as a [StackOverflow question](https://stackoverflow.com/q/58081224/3361467) turned into its
own [(sub-)project](https://github.com/mapstruct/mapstruct-spring-extensions) within the MapStruct organization.

Changes in this release:

- TypeDescriptors will now be kept as fields in generated ConversionServiceAdapters which can speed up the conversion
process. Thanks to [Jesse Bonzo](https://github.com/jbonzohln) for this contribution.
- The [generated ConverterScan](https://mapstruct.org/documentation/spring-extensions/reference/html/#generateConverterScan)
so far used the legacy `@PostConstruct` annotation from the deprecated `javax.annotation` package underneath. Thanks
to [Jeff Schnitzer](https://github.com/stickfigure)'s contribution, the generator now checks for the availability of
the "new" `jakarta.annotation.PostConstruct` annotation and will prefer this if it's available. For reasons of backwards
compatibility, `javax.annotation.PostConstruct` is the fallback.

Including the annotations and extensions defined in this project will generate a class acting as bridge between
MapStruct's conventions and Spring'
s [ConversionService API](https://docs.spring.io/spring-framework/docs/current/reference/html/core.html#core-convert-ConversionService-API)
that in turn can be added to any Mapper's `uses` attribute. See
the [examples](https://github.com/mapstruct/mapstruct-spring-extensions/tree/master/examples) for details.

<!--more-->

### Thanks

Thanks to [Sjaak Derksen](https://github.com/sjaakd) for suggesting this solution
and [Filip Hrisafov](https://github.com/filiphr) for opening the community project.
Also thanks
to [Cosimo Damiano Prete](https://github.com/cdprete), [Daniel Shiplett](https://github.com/danielshiplett), [Alexey](https://github.com/PRIESt512), [Olivier Boudet](https://github.com/olivierboudet), [John Kelly](https://github.com/postalservice14), [Myat Min](https://github.com/myatmin), [Hypercube Software](https://github.com/hypercube-software), [coding-guo](https://github.com/coding-guo), [freund17](https://github.com/freund17), [Joose Haverinen](https://github.com/joosehav), [pw-lehre](https://github.com/pw-lehre),
and [George Noble](https://github.com/giorgioscia) for their suggestions and fixes in previous releases.
If you feel like there's something missing in MapStruct which could make the Spring experience any smoother, please get
involved!

Also, if your favourite library or framework could use some tweaking with regard to MapStruct, contact us.

Happy coding with MapStruct Spring Extensions!

### Download

You can fetch the release from Maven Central using the following GAV coordinates:

* Annotation
JAR: [org.mapstruct.extensions.spring:mapstruct-spring-annotations:1.1.2](http://search.maven.org/#artifactdetails|org.mapstruct.extensions.spring|mapstruct-spring-annotations|1.1.2|jar)
* Annotation processor
JAR: [org.mapstruct.extensions.spring:mapstruct-spring-extensions:1.1.2](http://search.maven.org/#artifactdetails|org.mapstruct.extensions.spring|mapstruct-spring-extensions|1.1.2|jar)
* Test Extensions with Converter Scan
JAR: [org.mapstruct.extensions.spring:mapstruct-spring-extensions:1.1.2](http://search.maven.org/#artifactdetails|org.mapstruct.extensions.spring|mapstruct-spring-test-extensions|1.1.2|jar)

Alternatively, you can get ZIP and TAR.GZ distribution bundles - containing all the JARs, documentation
etc. - [from GitHub](https://github.com/mapstruct/mapstruct-spring-extensions/releases/tag/v1.1.2).

If you run into any trouble or would like to report a bug, feature request or similar, use the following channels to get
in touch:

* Get help in our [Gitter room](https://gitter.im/mapstruct/mapstruct-users) or at
the [mapstruct-users](https://groups.google.com/forum/?fromgroups#!forum/mapstruct-users) group
* Report bugs and feature requests via
the [issue tracker](https://github.com/mapstruct/mapstruct-spring-extensions/issues)
* Follow [@GetMapStruct](https://twitter.com/GetMapStruct) on Twitter
2 changes: 1 addition & 1 deletion data/releases/spring-extensions.toml
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
name = "Spring Extensions"
versionRef = "spring-extensions"
order = 450
releaseDate = 2023-09-25
releaseDate = 2024-08-31
spring = true
Original file line number Diff line number Diff line change
Expand Up @@ -3,24 +3,25 @@
<html lang="de">
<head>
<!-- Generated by javadoc -->
<title>All Classes (annotations 1.1.1 API)</title>
<title>All Classes (annotations 1.1.2 API)</title>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<link rel="stylesheet" type="text/css" href="stylesheet.css" title="Style">
<link rel="stylesheet" type="text/css" href="jquery/jquery-ui.css" title="Style">
<link rel="stylesheet" type="text/css" href="jquery/jquery-ui.min.css" title="Style">
<link rel="stylesheet" type="text/css" href="jquery-ui.overrides.css" title="Style">
<script type="text/javascript" src="script.js"></script>
<script type="text/javascript" src="jquery/jszip/dist/jszip.min.js"></script>
<script type="text/javascript" src="jquery/jszip-utils/dist/jszip-utils.min.js"></script>
<!--[if IE]>
<script type="text/javascript" src="jquery/jszip-utils/dist/jszip-utils-ie.min.js"></script>
<![endif]-->
<script type="text/javascript" src="jquery/jquery-3.4.1.js"></script>
<script type="text/javascript" src="jquery/jquery-ui.js"></script>
<script type="text/javascript" src="jquery/jquery-3.6.1.min.js"></script>
<script type="text/javascript" src="jquery/jquery-ui.min.js"></script>
</head>
<body>
<script type="text/javascript"><!--
try {
if (location.href.indexOf('is-external=true') == -1) {
parent.document.title="All Classes (annotations 1.1.1 API)";
parent.document.title="All Classes (annotations 1.1.2 API)";
}
}
catch(err) {
Expand Down Expand Up @@ -112,7 +113,7 @@ <h1 title="All&amp;nbsp;Classes" class="title">All&nbsp;Classes</h1>
<td class="colFirst"><a href="org/mapstruct/extensions/spring/DelegatingConverter.html" title="annotation in org.mapstruct.extensions.spring">DelegatingConverter</a></td>
<th class="colLast" scope="row">
<div class="block">Indicates that the system should generate a delegating <a href="https://docs.spring.io/spring/docs/5.0.0.RELEASE/javadoc-api/org/springframework/core/convert/converter/Converter.html?is-external=true" title="class or interface in org.springframework.core.convert.converter" class="externalLink"><code>Converter</code></a> that will call the annotated method in its
own <a href="https://docs.spring.io/spring/docs/5.0.0.RELEASE/javadoc-api/org/springframework/core/convert/converter/Converter.html?is-external=true#convert(S)" title="class or interface in org.springframework.core.convert.converter" class="externalLink"><code>Converter.convert(Object)</code></a>.</div>
own <a href="https://docs.spring.io/spring/docs/5.0.0.RELEASE/javadoc-api/org/springframework/core/convert/converter/Converter.html?is-external=true#convert-S-" title="class or interface in org.springframework.core.convert.converter" class="externalLink"><code>Converter.convert(Object)</code></a>.</div>
</th>
</tr>
<tr id="i2" class="altColor">
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -3,28 +3,31 @@
<html lang="de">
<head>
<!-- Generated by javadoc -->
<title>All Classes (annotations 1.1.1 API)</title>
<title>All Classes (annotations 1.1.2 API)</title>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<link rel="stylesheet" type="text/css" href="stylesheet.css" title="Style">
<link rel="stylesheet" type="text/css" href="jquery/jquery-ui.css" title="Style">
<link rel="stylesheet" type="text/css" href="jquery/jquery-ui.min.css" title="Style">
<link rel="stylesheet" type="text/css" href="jquery-ui.overrides.css" title="Style">
<script type="text/javascript" src="script.js"></script>
<script type="text/javascript" src="jquery/jszip/dist/jszip.min.js"></script>
<script type="text/javascript" src="jquery/jszip-utils/dist/jszip-utils.min.js"></script>
<!--[if IE]>
<script type="text/javascript" src="jquery/jszip-utils/dist/jszip-utils-ie.min.js"></script>
<![endif]-->
<script type="text/javascript" src="jquery/jquery-3.4.1.js"></script>
<script type="text/javascript" src="jquery/jquery-ui.js"></script>
<script type="text/javascript" src="jquery/jquery-3.6.1.min.js"></script>
<script type="text/javascript" src="jquery/jquery-ui.min.js"></script>
</head>
<body>
<main role="main">
<h1 class="bar">All&nbsp;Classes</h1>
<main role="main" class="indexContainer">
<div class="indexContainer">
<ul>
<li><a href="org/mapstruct/extensions/spring/AdapterMethodName.html" title="annotation in org.mapstruct.extensions.spring">AdapterMethodName</a></li>
<li><a href="org/mapstruct/extensions/spring/DelegatingConverter.html" title="annotation in org.mapstruct.extensions.spring">DelegatingConverter</a></li>
<li><a href="org/mapstruct/extensions/spring/ExternalConversion.html" title="annotation in org.mapstruct.extensions.spring">ExternalConversion</a></li>
<li><a href="org/mapstruct/extensions/spring/SpringMapperConfig.html" title="annotation in org.mapstruct.extensions.spring">SpringMapperConfig</a></li>
</ul>
</div>
</main>
</body>
</html>
Original file line number Diff line number Diff line change
Expand Up @@ -3,24 +3,25 @@
<html lang="de">
<head>
<!-- Generated by javadoc -->
<title>All Packages (annotations 1.1.1 API)</title>
<title>All Packages (annotations 1.1.2 API)</title>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<link rel="stylesheet" type="text/css" href="stylesheet.css" title="Style">
<link rel="stylesheet" type="text/css" href="jquery/jquery-ui.css" title="Style">
<link rel="stylesheet" type="text/css" href="jquery/jquery-ui.min.css" title="Style">
<link rel="stylesheet" type="text/css" href="jquery-ui.overrides.css" title="Style">
<script type="text/javascript" src="script.js"></script>
<script type="text/javascript" src="jquery/jszip/dist/jszip.min.js"></script>
<script type="text/javascript" src="jquery/jszip-utils/dist/jszip-utils.min.js"></script>
<!--[if IE]>
<script type="text/javascript" src="jquery/jszip-utils/dist/jszip-utils-ie.min.js"></script>
<![endif]-->
<script type="text/javascript" src="jquery/jquery-3.4.1.js"></script>
<script type="text/javascript" src="jquery/jquery-ui.js"></script>
<script type="text/javascript" src="jquery/jquery-3.6.1.min.js"></script>
<script type="text/javascript" src="jquery/jquery-ui.min.js"></script>
</head>
<body>
<script type="text/javascript"><!--
try {
if (location.href.indexOf('is-external=true') == -1) {
parent.document.title="All Packages (annotations 1.1.1 API)";
parent.document.title="All Packages (annotations 1.1.2 API)";
}
}
catch(err) {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -3,24 +3,25 @@
<html lang="de">
<head>
<!-- Generated by javadoc -->
<title>Constant Field Values (annotations 1.1.1 API)</title>
<title>Constant Field Values (annotations 1.1.2 API)</title>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<link rel="stylesheet" type="text/css" href="stylesheet.css" title="Style">
<link rel="stylesheet" type="text/css" href="jquery/jquery-ui.css" title="Style">
<link rel="stylesheet" type="text/css" href="jquery/jquery-ui.min.css" title="Style">
<link rel="stylesheet" type="text/css" href="jquery-ui.overrides.css" title="Style">
<script type="text/javascript" src="script.js"></script>
<script type="text/javascript" src="jquery/jszip/dist/jszip.min.js"></script>
<script type="text/javascript" src="jquery/jszip-utils/dist/jszip-utils.min.js"></script>
<!--[if IE]>
<script type="text/javascript" src="jquery/jszip-utils/dist/jszip-utils-ie.min.js"></script>
<![endif]-->
<script type="text/javascript" src="jquery/jquery-3.4.1.js"></script>
<script type="text/javascript" src="jquery/jquery-ui.js"></script>
<script type="text/javascript" src="jquery/jquery-3.6.1.min.js"></script>
<script type="text/javascript" src="jquery/jquery-ui.min.js"></script>
</head>
<body>
<script type="text/javascript"><!--
try {
if (location.href.indexOf('is-external=true') == -1) {
parent.document.title="Constant Field Values (annotations 1.1.1 API)";
parent.document.title="Constant Field Values (annotations 1.1.2 API)";
}
}
catch(err) {
Expand Down Expand Up @@ -92,7 +93,7 @@
<main role="main">
<div class="header">
<h1 title="Constant Field Values" class="title">Constant Field Values</h1>
<section role="region">
<section>
<h2 title="Contents">Contents</h2>
</section>
</div>
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -3,24 +3,25 @@
<html lang="de">
<head>
<!-- Generated by javadoc -->
<title>Deprecated List (annotations 1.1.1 API)</title>
<title>Deprecated List (annotations 1.1.2 API)</title>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<link rel="stylesheet" type="text/css" href="stylesheet.css" title="Style">
<link rel="stylesheet" type="text/css" href="jquery/jquery-ui.css" title="Style">
<link rel="stylesheet" type="text/css" href="jquery/jquery-ui.min.css" title="Style">
<link rel="stylesheet" type="text/css" href="jquery-ui.overrides.css" title="Style">
<script type="text/javascript" src="script.js"></script>
<script type="text/javascript" src="jquery/jszip/dist/jszip.min.js"></script>
<script type="text/javascript" src="jquery/jszip-utils/dist/jszip-utils.min.js"></script>
<!--[if IE]>
<script type="text/javascript" src="jquery/jszip-utils/dist/jszip-utils-ie.min.js"></script>
<![endif]-->
<script type="text/javascript" src="jquery/jquery-3.4.1.js"></script>
<script type="text/javascript" src="jquery/jquery-ui.js"></script>
<script type="text/javascript" src="jquery/jquery-3.6.1.min.js"></script>
<script type="text/javascript" src="jquery/jquery-ui.min.js"></script>
</head>
<body>
<script type="text/javascript"><!--
try {
if (location.href.indexOf('is-external=true') == -1) {
parent.document.title="Deprecated List (annotations 1.1.1 API)";
parent.document.title="Deprecated List (annotations 1.1.2 API)";
}
}
catch(err) {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -3,24 +3,25 @@
<html lang="de">
<head>
<!-- Generated by javadoc -->
<title>API Help (annotations 1.1.1 API)</title>
<title>API Help (annotations 1.1.2 API)</title>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<link rel="stylesheet" type="text/css" href="stylesheet.css" title="Style">
<link rel="stylesheet" type="text/css" href="jquery/jquery-ui.css" title="Style">
<link rel="stylesheet" type="text/css" href="jquery/jquery-ui.min.css" title="Style">
<link rel="stylesheet" type="text/css" href="jquery-ui.overrides.css" title="Style">
<script type="text/javascript" src="script.js"></script>
<script type="text/javascript" src="jquery/jszip/dist/jszip.min.js"></script>
<script type="text/javascript" src="jquery/jszip-utils/dist/jszip-utils.min.js"></script>
<!--[if IE]>
<script type="text/javascript" src="jquery/jszip-utils/dist/jszip-utils-ie.min.js"></script>
<![endif]-->
<script type="text/javascript" src="jquery/jquery-3.4.1.js"></script>
<script type="text/javascript" src="jquery/jquery-ui.js"></script>
<script type="text/javascript" src="jquery/jquery-3.6.1.min.js"></script>
<script type="text/javascript" src="jquery/jquery-ui.min.js"></script>
</head>
<body>
<script type="text/javascript"><!--
try {
if (location.href.indexOf('is-external=true') == -1) {
parent.document.title="API Help (annotations 1.1.1 API)";
parent.document.title="API Help (annotations 1.1.2 API)";
}
}
catch(err) {
Expand Down Expand Up @@ -97,7 +98,7 @@ <h1 class="title">How This API Document Is Organized</h1>
<div class="contentContainer">
<ul class="blockList">
<li class="blockList">
<section role="region">
<section>
<h2>Package</h2>
<p>Each package has a page that contains a list of its classes and interfaces, with a summary for each. These pages may contain six categories:</p>
<ul>
Expand All @@ -111,7 +112,7 @@ <h2>Package</h2>
</section>
</li>
<li class="blockList">
<section role="region">
<section>
<h2>Class or Interface</h2>
<p>Each class, interface, nested class and nested interface has its own separate page. Each of these pages has three sections consisting of a class/interface description, summary tables, and detailed member descriptions:</p>
<ul>
Expand Down Expand Up @@ -141,7 +142,7 @@ <h2>Class or Interface</h2>
</section>
</li>
<li class="blockList">
<section role="region">
<section>
<h2>Annotation Type</h2>
<p>Each annotation type has its own separate page with the following sections:</p>
<ul>
Expand All @@ -154,7 +155,7 @@ <h2>Annotation Type</h2>
</section>
</li>
<li class="blockList">
<section role="region">
<section>
<h2>Enum</h2>
<p>Each enum has its own separate page with the following sections:</p>
<ul>
Expand All @@ -166,7 +167,7 @@ <h2>Enum</h2>
</section>
</li>
<li class="blockList">
<section role="region">
<section>
<h2>Tree (Class Hierarchy)</h2>
<p>There is a <a href="overview-tree.html">Class Hierarchy</a> page for all packages, plus a hierarchy for each package. Each hierarchy page contains a list of classes and a list of interfaces. Classes are organized by inheritance structure starting with <code>java.lang.Object</code>. Interfaces do not inherit from <code>java.lang.Object</code>.</p>
<ul>
Expand All @@ -176,37 +177,37 @@ <h2>Tree (Class Hierarchy)</h2>
</section>
</li>
<li class="blockList">
<section role="region">
<section>
<h2>Deprecated API</h2>
<p>The <a href="deprecated-list.html">Deprecated API</a> page lists all of the API that have been deprecated. A deprecated API is not recommended for use, generally due to improvements, and a replacement API is usually given. Deprecated APIs may be removed in future implementations.</p>
</section>
</li>
<li class="blockList">
<section role="region">
<section>
<h2>Index</h2>
<p>The <a href="index-all.html">Index</a> contains an alphabetic index of all classes, interfaces, constructors, methods, and fields, as well as lists of all packages and all classes.</p>
</section>
</li>
<li class="blockList">
<section role="region">
<section>
<h2>All&nbsp;Classes</h2>
<p>The <a href="allclasses.html">All Classes</a> link shows all classes and interfaces except non-static nested types.</p>
</section>
</li>
<li class="blockList">
<section role="region">
<section>
<h2>Serialized Form</h2>
<p>Each serializable or externalizable class has a description of its serialization fields and methods. This information is of interest to re-implementors, not to developers using the API. While there is no link in the navigation bar, you can get to this information by going to any serialized class and clicking "Serialized Form" in the "See also" section of the class description.</p>
</section>
</li>
<li class="blockList">
<section role="region">
<section>
<h2>Constant Field Values</h2>
<p>The <a href="constant-values.html">Constant Field Values</a> page lists the static final fields and their values.</p>
</section>
</li>
<li class="blockList">
<section role="region">
<section>
<h2>Search</h2>
<p>You can search for definitions of modules, packages, types, fields, methods and other terms defined in the API, using some or all of the name. "Camel-case" abbreviations are supported: for example, "InpStr" will find "InputStream" and "InputStreamReader".</p>
</section>
Expand Down
Loading

0 comments on commit e3eb62d

Please sign in to comment.