Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
135 commits
Select commit Hold shift + click to select a range
b22d4db
tests: reproduce #4086
RaniAgus Jul 4, 2026
2b83489
#4086: Check nullable status of methode return types
hduelme Jul 22, 2026
6c6d0b4
add test to ensure only own package is used. No resolving in parent p…
hduelme Jul 30, 2026
65a5704
continue introducing Nullability into model
hduelme Jul 30, 2026
e2f1863
remove isConverted from PropertyMapping
hduelme Jul 30, 2026
1925b14
continue introducing Nullability into model
hduelme Aug 1, 2026
ba8bca4
continue introducing Nullability into model
hduelme Aug 3, 2026
8ef1ee0
revert fix
hduelme Aug 4, 2026
df26a96
Workaround for nullability
hduelme Aug 4, 2026
05c6801
remove unsed
hduelme Aug 4, 2026
de52645
use new nullability
hduelme Aug 4, 2026
4f8a232
use new nullability
hduelme Aug 4, 2026
af11595
use new nullability
hduelme Aug 4, 2026
1ce4fb9
use new nullability
hduelme Aug 4, 2026
ce45adf
use new nullability
hduelme Aug 4, 2026
ecd7e6c
remove usused
hduelme Aug 4, 2026
e42d815
nullability for javaExpressions
hduelme Aug 7, 2026
4341dec
remove usused
hduelme Aug 7, 2026
17f31d1
fix import
hduelme Aug 7, 2026
70bf87f
nullabilty considers NullValueMappingStrategy
hduelme Aug 8, 2026
20f8e72
allways condisider nullability for getPresenceCheckForSourceParameter
hduelme Aug 8, 2026
b25b961
The nullability of ForfedMethod depends on the input
hduelme Aug 8, 2026
8a7ca9c
Fix #4077
hduelme Aug 9, 2026
46d4090
Add #4081 test
hduelme Aug 9, 2026
29622b0
Add test for simple build in functions
hduelme Aug 14, 2026
2b33929
improve detection of nullability for parameters
hduelme Aug 14, 2026
3a0cf04
add headers
hduelme Aug 15, 2026
c4294a8
checkstyle
hduelme Aug 15, 2026
624b846
checkstyle
hduelme Aug 15, 2026
3623017
add missing package-info
hduelme Aug 15, 2026
c658b25
add joda time tests
hduelme Aug 16, 2026
02f18dd
type conversion needsParameterNullCheck depends on source Nullability
hduelme Aug 17, 2026
96ea933
TypeConversion getSourceNullability must be passed down
hduelme Aug 17, 2026
aa74da2
move source to other part for SetterWrapper if nullCheck needed
hduelme Aug 17, 2026
3c99ef5
no assertions yet. MapStruct does not support this kind of classloading
hduelme Aug 23, 2026
74b1df5
support null safe 2-step mapping
hduelme Aug 26, 2026
cb1f4ce
continue JspecifyBuildInTest
hduelme Aug 26, 2026
1018dc6
format
hduelme Aug 26, 2026
7f92336
continue JspecifyBuildInTest
hduelme Aug 26, 2026
30829ae
continue JspecifyBuildInTest
hduelme Aug 26, 2026
5b5b64b
ensure returnTypeNullabilty is considered in List<>
hduelme Aug 27, 2026
20fc814
continue JspecifyBuildInTest
hduelme Aug 27, 2026
5c3af51
continue JspecifyBuildInTest
hduelme Aug 27, 2026
42d415f
improve NullabilityResolver
hduelme Aug 27, 2026
36def80
add JSpecify scope annotations
hduelme Aug 27, 2026
4ec1527
move NullabilityChaining to AbstractReference
hduelme Sep 5, 2026
553151d
add JSpecify annotations to generatedCode
hduelme Sep 5, 2026
b79ca1f
SetterWrapper don't have a Nullability as it is a finalizing method
hduelme Sep 6, 2026
c413c1d
remove leftover todo
hduelme Sep 6, 2026
13295f0
fix eclipse package resolve error by disabling JSpecify
hduelme Sep 6, 2026
e851226
add JSpecifyAnnotationMethodeMapper test
hduelme Sep 6, 2026
d17b232
add JSpecifyAnnotationScopeMethodeMapper test
hduelme Sep 6, 2026
1bb5e99
add JSpecifyAnnotationScopeIgnoredMapper tests
hduelme Sep 6, 2026
a53c2f4
add JSpecifyAnnotationIgnoredMapper tests
hduelme Sep 6, 2026
96dddd6
add nullUmarked tests
hduelme Sep 6, 2026
b752d86
add nullUmarked tests
hduelme Sep 6, 2026
d4992c1
add licence
hduelme Sep 6, 2026
c483c20
format
hduelme Sep 6, 2026
4c728ca
add array support for nullability
hduelme Sep 6, 2026
f353989
added direct type annotation as inner classes need them
hduelme Sep 9, 2026
31e8443
ensure nullability cause is correct
hduelme Sep 9, 2026
5307d92
add nullability test for inner classes as parameter
hduelme Sep 9, 2026
13be87b
fix types with packages
hduelme Sep 12, 2026
cb8df0c
add test with Jspecify for 1425 (failed in tests)
hduelme Sep 12, 2026
0cb1957
add name collision test
hduelme Sep 12, 2026
de94e1f
add Jspecify test for nested classes deeper than 2 level
hduelme Sep 12, 2026
7914e07
format
hduelme Sep 12, 2026
a527e56
exclude java 8 incompatible JSpecify tests
hduelme Sep 12, 2026
781fa48
implement toString for Nullability
hduelme Sep 12, 2026
14e08fd
disable more tests due to jvm bugs
hduelme Sep 12, 2026
293da97
format
hduelme Sep 12, 2026
8ce8a39
add NullMarked module test
hduelme Sep 12, 2026
7d0d613
consider primitive as return type
hduelme Sep 12, 2026
8d81b8e
add test for two-step mapping with primitive return type
hduelme Sep 12, 2026
6cd7f81
reuse parameters for NullSafe2StepMappingMethode
hduelme Sep 12, 2026
af08385
reuse parameters nullability for NullSafe2StepMappingMethode
hduelme Sep 12, 2026
b199674
format
hduelme Sep 12, 2026
1a76add
set nullability debending on is return type default
hduelme Sep 13, 2026
1b5ab91
add TypeInstance
hduelme Sep 13, 2026
21adafe
add nullability for ValueMapping
hduelme Sep 13, 2026
56ebd28
format
hduelme Sep 13, 2026
6e2a247
format
hduelme Sep 13, 2026
b7c4c57
add missing Test
hduelme Sep 13, 2026
f0d9923
remove useless comments
hduelme Sep 13, 2026
814343f
better comments
hduelme Sep 13, 2026
4892bdd
fix naming
hduelme Sep 13, 2026
e3a7c71
move NullMarked to class level
hduelme Sep 13, 2026
bbd8698
fix tests
hduelme Sep 13, 2026
552dc03
fix tests
hduelme Sep 13, 2026
f993d13
consider bean default value for nullability
hduelme Sep 13, 2026
259d73c
fix scope leakage
hduelme Sep 13, 2026
260c366
fix typo
hduelme Sep 13, 2026
1e8f45e
add tests to ensure collections respect RETURN_DEFAULT
hduelme Sep 13, 2026
aace619
collections mapping now respects needsParameterNullCheck
hduelme Sep 13, 2026
31e6b17
remove leftover.
hduelme Sep 13, 2026
f0c1878
ContainerMappingMethod now uses withIsReturnDefault
hduelme Sep 13, 2026
b5e165f
format
hduelme Sep 13, 2026
67f9a20
implement NullSafe2StepMappingMethode for methode -> method
hduelme Sep 14, 2026
c8e8f55
add tests for NullSafe2StepMappingMethode for methode -> method
hduelme Sep 14, 2026
86d8513
fix primitive return type nullability in ForgedMethod
hduelme Sep 15, 2026
91b2f1f
fix 2 null-checks needed
hduelme Sep 15, 2026
37c6c92
fix position of handleSourceReferenceNullCheck in SetterWrapperOuter
hduelme Sep 15, 2026
012e40f
simplify by removing SetterWrapperOuter
hduelme Sep 15, 2026
af4072d
typo
hduelme Sep 15, 2026
acd5154
typos
hduelme Sep 15, 2026
5883eb8
remove getConstructorParameter
hduelme Sep 15, 2026
4bb2c91
remove getRecordElementNullability
hduelme Sep 15, 2026
f2ab208
format
hduelme Sep 15, 2026
fcbb88b
resolve no longer valid todos
hduelme Sep 17, 2026
6b92e11
add missing license header
hduelme Sep 17, 2026
09c380d
remove todo
hduelme Sep 17, 2026
5614765
typo
hduelme Sep 17, 2026
f242e5f
make it clear what o -> false means
hduelme Sep 17, 2026
a2607e4
add explanation to todos
hduelme Sep 17, 2026
b743373
fix beanMapping without null check
hduelme Sep 17, 2026
509aeec
add support for auxiliary parameter nullability
hduelme Sep 17, 2026
8e2a5b6
algin tests
hduelme Sep 17, 2026
07705e8
algin tests
hduelme Sep 17, 2026
528220b
improve docs in Nullability
hduelme Sep 18, 2026
a54bc98
improve docs in Nullability
hduelme Sep 18, 2026
fa61e08
improve docs on Assignment
hduelme Sep 18, 2026
4bf0802
revert not needed changes
hduelme Sep 18, 2026
b37f622
inline resolveNullMarked
hduelme Sep 18, 2026
a807ae2
prevent npe in method chaining
hduelme Sep 19, 2026
38222f9
prevent adding null in MappingMethod
hduelme Sep 19, 2026
eb74183
style fixes
hduelme Sep 19, 2026
2054547
remove duplicated parameter
hduelme Sep 19, 2026
92d11ca
improve doc
hduelme Sep 19, 2026
b67eceb
improve doc
hduelme Sep 19, 2026
36108ba
improve usage of GeneratedSource in tests
hduelme Sep 19, 2026
9b8f076
remove null check from XmlGregorianCalendarToLocalDate
hduelme Sep 19, 2026
087e5ad
remove resolved todos
hduelme Sep 19, 2026
4f50f4b
add docs
hduelme Sep 19, 2026
d6440ba
ensure collection direct mapping is null checked if needed
hduelme Sep 19, 2026
87267ce
remove old todos
hduelme Sep 19, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
The table of contents is too big for display.
Diff view
Diff view
  •  
  •  
  •  
Original file line number Diff line number Diff line change
Expand Up @@ -41,6 +41,21 @@ public Collection<String> getAdditionalCommandLineArguments(ProcessorTest.Proces
additionalExcludes.add(
"org/mapstruct/ap/test/selection/methodgenerics/wildcards/LifecycleIntersectionMapper.java" );
}
// JDK 8 javac does not support @NullMarked applied to a method or constructor, so these
// mappers (which use a method-level @NullMarked) cannot be compiled on Java 8.
// see https://github.com/jspecify/jspecify/wiki/version-compatibility#issues-with-java-8
additionalExcludes.add(
"org/mapstruct/ap/test/nullcheck/jspecify/JSpecifyInnerClassMapper.java" );
additionalExcludes.add(
"org/mapstruct/ap/test/nullcheck/jspecify/DeepNestedJSpecifyMapper.java" );
additionalExcludes.add(
"org/mapstruct/ap/test/nullcheck/jspecify/FqNameCollisionJSpecifyMapper.java" );
additionalExcludes.add(
"org/mapstruct/ap/test/nullcheck/jspecify/annotation/*.java" );
// JVMs pre 22 have problems reading type in use annotations
// Here Java 8 does not see the nested class annotation
// https://github.com/jspecify/jspecify/wiki/version-compatibility#issues-with-javac-before-version-22
additionalExcludes.add( "org/mapstruct/ap/test/bugs/_4086/*" );
break;
case JAVA_11:
additionalExcludes.add( "org/mapstruct/ap/test/**/spring/**/*.java" );
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -200,6 +200,12 @@ void moduleInfoTest() {

}

@ProcessorTest(baseDir = "moduleNullMarkedTest")
@EnabledForJreRange(min = JRE.JAVA_11)
void moduleNullMarkedTest() {

}

/**
* Tests usage of MapStruct with another processor that generates the uses type of a mapper.
*/
Expand Down
6 changes: 6 additions & 0 deletions integrationtest/src/test/resources/fullFeatureTest/pom.xml
Original file line number Diff line number Diff line change
Expand Up @@ -32,6 +32,10 @@
<additionalExclude9>x</additionalExclude9>
<additionalExclude10>x</additionalExclude10>
<additionalExclude11>x</additionalExclude11>
<additionalExclude12>x</additionalExclude12>
<additionalExclude13>x</additionalExclude13>
<additionalExclude14>x</additionalExclude14>
<additionalExclude15>x</additionalExclude15>
</properties>

<build>
Expand Down Expand Up @@ -62,6 +66,8 @@
<exclude>${additionalExclude11}</exclude>
<exclude>${additionalExclude12}</exclude>
<exclude>${additionalExclude13}</exclude>
<exclude>${additionalExclude14}</exclude>
<exclude>${additionalExclude15}</exclude>
</excludes>
</configuration>
</plugin>
Expand Down
30 changes: 30 additions & 0 deletions integrationtest/src/test/resources/moduleNullMarkedTest/pom.xml
Original file line number Diff line number Diff line change
@@ -0,0 +1,30 @@
<?xml version="1.0" encoding="UTF-8"?>
<!--

Copyright MapStruct Authors.

Licensed under the Apache License version 2.0, available at http://www.apache.org/licenses/LICENSE-2.0

-->
<project xmlns="http://maven.apache.org/POM/4.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>

<parent>
<groupId>org.mapstruct</groupId>
<artifactId>mapstruct-it-parent</artifactId>
<version>1.0.0</version>
<relativePath>../pom.xml</relativePath>
</parent>

<artifactId>moduleNullMarkedTest</artifactId>
<packaging>jar</packaging>

<dependencies>
<dependency>
<groupId>org.jspecify</groupId>
<artifactId>jspecify</artifactId>
</dependency>
</dependencies>
</project>
Original file line number Diff line number Diff line change
@@ -0,0 +1,15 @@
/*
* Copyright MapStruct Authors.
*
* Licensed under the Apache License version 2.0, available at http://www.apache.org/licenses/LICENSE-2.0
*/
import org.jspecify.annotations.NullMarked;

@NullMarked
module test.mapstruct {
requires static org.jspecify;
requires org.mapstruct;

exports org.mapstruct.itest.modules.nullmarked;
exports org.mapstruct.itest.modules.nullunmarked;
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,26 @@
/*
* Copyright MapStruct Authors.
*
* Licensed under the Apache License version 2.0, available at http://www.apache.org/licenses/LICENSE-2.0
*/
package org.mapstruct.itest.modules.nullmarked;

import org.mapstruct.Mapper;
import org.mapstruct.NullValueCheckStrategy;
import org.mapstruct.factory.Mappers;

/**
* Mapper in a {@code @NullMarked} module with {@link NullValueCheckStrategy#ALWAYS}.
* <p>
* With the module (and package) in a {@code @NullMarked} scope, the source getter and target
* setter parameter are both effectively {@code @NonNull}. The {@code ALWAYS} null-check must
* therefore be suppressed: the target setter is called even when the source value is {@code null},
* because the mapping is between two {@code @NonNull} types.
*/
@Mapper(nullValueCheckStrategy = NullValueCheckStrategy.ALWAYS)
public interface NullMarkedMapper {

NullMarkedMapper INSTANCE = Mappers.getMapper( NullMarkedMapper.class );

NullMarkedTargetBean map(NullMarkedSourceBean source);
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,23 @@
/*
* Copyright MapStruct Authors.
*
* Licensed under the Apache License version 2.0, available at http://www.apache.org/licenses/LICENSE-2.0
*/
package org.mapstruct.itest.modules.nullmarked;

/**
* Source bean in a {@code @NullMarked} module + {@code @NullMarked} package.
* The unannotated {@code String value} getter is effectively {@code @NonNull}.
*/
public class NullMarkedSourceBean {

private String value;

public String getValue() {
return value;
}

public void setValue(String value) {
this.value = value;
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,29 @@
/*
* Copyright MapStruct Authors.
*
* Licensed under the Apache License version 2.0, available at http://www.apache.org/licenses/LICENSE-2.0
*/
package org.mapstruct.itest.modules.nullmarked;

/**
* Target bean in a {@code @NullMarked} module + {@code @NullMarked} package.
* The unannotated {@code String value} setter parameter is effectively {@code @NonNull}.
*/
public class NullMarkedTargetBean {

private String value;
private boolean valueSet;

public String getValue() {
return value;
}

public void setValue(String value) {
this.valueSet = true;
this.value = value;
}

public boolean isValueSet() {
return valueSet;
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,6 @@
/*
* Copyright MapStruct Authors.
*
* Licensed under the Apache License version 2.0, available at http://www.apache.org/licenses/LICENSE-2.0
*/
package org.mapstruct.itest.modules.nullmarked;
Original file line number Diff line number Diff line change
@@ -0,0 +1,27 @@
/*
* Copyright MapStruct Authors.
*
* Licensed under the Apache License version 2.0, available at http://www.apache.org/licenses/LICENSE-2.0
*/
package org.mapstruct.itest.modules.nullunmarked;

import org.mapstruct.Mapper;
import org.mapstruct.NullValueCheckStrategy;
import org.mapstruct.factory.Mappers;

/**
* Mapper in a {@code @NullUnmarked} package (inside a {@code @NullMarked} module) with
* {@link NullValueCheckStrategy#ALWAYS}.
* <p>
* The package-level {@code @NullUnmarked} reverses the module-level {@code @NullMarked} scope.
* The source getter and target setter parameter therefore have UNKNOWN nullability and the
* {@code ALWAYS} null-check strategy applies: the target setter is NOT called when the source
* value is {@code null}.
*/
@Mapper(nullValueCheckStrategy = NullValueCheckStrategy.ALWAYS)
public interface NullUnmarkedMapper {

NullUnmarkedMapper INSTANCE = Mappers.getMapper( NullUnmarkedMapper.class );

NullUnmarkedTargetBean map(NullUnmarkedSourceBean source);
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,24 @@
/*
* Copyright MapStruct Authors.
*
* Licensed under the Apache License version 2.0, available at http://www.apache.org/licenses/LICENSE-2.0
*/
package org.mapstruct.itest.modules.nullunmarked;

/**
* Source bean in an {@code @NullUnmarked} package (inside a {@code @NullMarked} module).
* The package-level {@code @NullUnmarked} reverses the scope: the unannotated
* {@code String value} getter has UNKNOWN nullability.
*/
public class NullUnmarkedSourceBean {

private String value;

public String getValue() {
return value;
}

public void setValue(String value) {
this.value = value;
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,29 @@
/*
* Copyright MapStruct Authors.
*
* Licensed under the Apache License version 2.0, available at http://www.apache.org/licenses/LICENSE-2.0
*/
package org.mapstruct.itest.modules.nullunmarked;

/**
* Target bean in an {@code @NullUnmarked} package (inside a {@code @NullMarked} module).
* The unannotated {@code String value} setter parameter has UNKNOWN nullability.
*/
public class NullUnmarkedTargetBean {

private String value;
private boolean valueSet;

public String getValue() {
return value;
}

public void setValue(String value) {
this.valueSet = true;
this.value = value;
}

public boolean isValueSet() {
return valueSet;
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,9 @@
/*
* Copyright MapStruct Authors.
*
* Licensed under the Apache License version 2.0, available at http://www.apache.org/licenses/LICENSE-2.0
*/
@NullUnmarked
package org.mapstruct.itest.modules.nullunmarked;

import org.jspecify.annotations.NullUnmarked;
Original file line number Diff line number Diff line change
@@ -0,0 +1,54 @@
/*
* Copyright MapStruct Authors.
*
* Licensed under the Apache License version 2.0, available at http://www.apache.org/licenses/LICENSE-2.0
*/
package org.mapstruct.itest.modules;

import org.junit.jupiter.api.Test;
import org.mapstruct.itest.modules.nullmarked.NullMarkedMapper;
import org.mapstruct.itest.modules.nullmarked.NullMarkedSourceBean;
import org.mapstruct.itest.modules.nullmarked.NullMarkedTargetBean;
import org.mapstruct.itest.modules.nullunmarked.NullUnmarkedMapper;
import org.mapstruct.itest.modules.nullunmarked.NullUnmarkedSourceBean;
import org.mapstruct.itest.modules.nullunmarked.NullUnmarkedTargetBean;

import static org.assertj.core.api.Assertions.assertThat;

/**
* Integration tests that verify JSpecify {@code @NullMarked} on a JPMS module is
* honored by the MapStruct processor, and that a package-level {@code @NullUnmarked}
* correctly reverses the module-level {@code @NullMarked} scope.
*/
class ModulesTest {

@Test
void nullMarkedModuleSuppressesNullCheck() {
// The module is @NullMarked, so unannotated types are effectively @NonNull.
// With NullValueCheckStrategy.ALWAYS, a source getter that is effectively
// @NonNull must NOT have a null check generated -> the target setter is
// called even when the source value is null.
NullMarkedSourceBean source = new NullMarkedSourceBean();
assertThat( source.getValue() ).isNull();

NullMarkedTargetBean target = NullMarkedMapper.INSTANCE.map( source );

assertThat( target.isValueSet() ).isTrue();
assertThat( target.getValue() ).isNull();
}

@Test
void nullUnmarkedPackageReversesModuleNullMarked() {
// The package is @NullUnmarked inside a @NullMarked module. The
// package-level scope reversal makes unannotated types have UNKNOWN
// nullability, so NullValueCheckStrategy.ALWAYS generates a null check
// and the target setter is NOT called when the source value is null.
NullUnmarkedSourceBean source = new NullUnmarkedSourceBean();
assertThat( source.getValue() ).isNull();

NullUnmarkedTargetBean target = NullUnmarkedMapper.INSTANCE.map( source );

assertThat( target.isValueSet() ).isFalse();
assertThat( target.getValue() ).isNull();
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -17,6 +17,7 @@
import org.mapstruct.ap.internal.model.common.Type;
import org.mapstruct.ap.internal.model.common.TypeFactory;
import org.mapstruct.ap.internal.model.source.MappingMethodOptions;
import org.mapstruct.ap.internal.util.accessor.Nullability;

import static org.mapstruct.ap.internal.util.Collections.asSet;

Expand All @@ -36,8 +37,10 @@ public class CreateDecimalFormat extends HelperMethod {
private final Set<Type> importTypes;

public CreateDecimalFormat(TypeFactory typeFactory, boolean withLocale) {
this.parameter = new Parameter( "numberFormat", typeFactory.getType( String.class ) );
this.localeParameter = withLocale ? new Parameter( "locale", typeFactory.getType( Locale.class ) ) : null;
this.parameter = new Parameter( "numberFormat", typeFactory.getType( String.class ),
Nullability.hardcodedNullability( Nullability.NullabilityState.NON_NULL ) );
this.localeParameter = withLocale ? new Parameter( "locale", typeFactory.getType( Locale.class ),
Nullability.hardcodedNullability( Nullability.NullabilityState.NON_NULL ) ) : null;
this.returnType = typeFactory.getType( DecimalFormat.class );
if ( withLocale ) {
this.importTypes = asSet(
Expand Down Expand Up @@ -89,4 +92,9 @@ public List<Parameter> getParameters() {
}
return Arrays.asList( getParameter(), localeParameter );
}

@Override
public Nullability getReturnTypeNullability() {
return Nullability.hardcodedNullability( Nullability.NullabilityState.NON_NULL );
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -34,15 +34,17 @@ public class DateToStringConversion implements ConversionProvider {
public Assignment to(ConversionContext conversionContext) {
return new TypeConversion( getImportTypes( conversionContext ),
Collections.emptyList(),
getConversionExpression( conversionContext, "format" )
getConversionExpression( conversionContext, "format" ),
conversionContext.getTargetType()
);
}

@Override
public Assignment from(ConversionContext conversionContext) {
return new TypeConversion( getImportTypes( conversionContext ),
Collections.singletonList( conversionContext.getTypeFactory().getType( ParseException.class ) ),
getConversionExpression( conversionContext, "parse" )
getConversionExpression( conversionContext, "parse" ),
conversionContext.getSourceType()
);
}

Expand Down
Loading
Loading