Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Appearance settings

Commit 85af901

Browse filesBrowse files
committed
mapstruct#2350 Generate core string to enum mapping when AnyRemaining or AnyUnmapped is not used
1 parent 07f5189 commit 85af901
Copy full SHA for 85af901

2 files changed

+18-7Lines changed: 18 additions & 7 deletions

File tree

Expand file treeCollapse file tree
Open diff view settings
Filter options
Expand file treeCollapse file tree
Open diff view settings
Collapse file

‎processor/src/main/java/org/mapstruct/ap/internal/model/ValueMappingMethod.java‎

Copy file name to clipboardExpand all lines: processor/src/main/java/org/mapstruct/ap/internal/model/ValueMappingMethod.java
+3-6Lines changed: 3 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -262,8 +262,8 @@ private List<MappingEntry> stringToEnumMapping(Method method, Type targetType )
262262
List<MappingEntry> mappings = new ArrayList<>();
263263
List<String> unmappedSourceConstants = new ArrayList<>( targetType.getEnumConstants() );
264264
boolean sourceErrorOccurred = !reportErrorIfMappedTargetEnumConstantsDontExist( method, targetType );
265-
boolean mandatoryMissing = !reportErrorIfAnyRemainingOrAnyUnMappedMissing( method );
266-
if ( sourceErrorOccurred || mandatoryMissing ) {
265+
reportWarningIfAnyRemainingOrAnyUnMappedMissing( method );
266+
if ( sourceErrorOccurred ) {
267267
return mappings;
268268
}
269269
Set<String> mappedSources = new LinkedHashSet<>();
@@ -344,17 +344,14 @@ private boolean reportErrorIfSourceEnumConstantsContainsAnyRemaining(Method meth
344344
return !foundIncorrectMapping;
345345
}
346346

347-
private boolean reportErrorIfAnyRemainingOrAnyUnMappedMissing(Method method) {
348-
boolean foundIncorrectMapping = false;
347+
private void reportWarningIfAnyRemainingOrAnyUnMappedMissing(Method method) {
349348

350349
if ( !( valueMappings.hasMapAnyUnmapped || valueMappings.hasMapAnyRemaining ) ) {
351350
ctx.getMessager().printMessage(
352351
method.getExecutable(),
353352
Message.VALUEMAPPING_ANY_REMAINING_OR_UNMAPPED_MISSING
354353
);
355-
foundIncorrectMapping = true;
356354
}
357-
return !foundIncorrectMapping;
358355
}
359356

360357
private boolean reportErrorIfMappedTargetEnumConstantsDontExist(Method method, Type targetType) {
Collapse file

‎processor/src/test/java/org/mapstruct/ap/test/value/string2enum/StringToEnumMappingTest.java‎

Copy file name to clipboardExpand all lines: processor/src/test/java/org/mapstruct/ap/test/value/string2enum/StringToEnumMappingTest.java
+15-1Lines changed: 15 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -16,6 +16,7 @@
1616
import org.mapstruct.ap.testutil.runner.AnnotationProcessorTestRunner;
1717

1818
import static org.assertj.core.api.Assertions.assertThat;
19+
import static org.assertj.core.api.Assertions.assertThatThrownBy;
1920

2021
@IssueKey( "1557" )
2122
@WithClasses({ OrderType.class, OrderMapper.class })
@@ -53,7 +54,20 @@ public void testRemainingAndNull() {
5354
"type String to an enum type." )
5455
}
5556
)
56-
public void shouldRaiseErrorWhenUsingAnyRemaining() {
57+
public void shouldRaiseWarningWhenNotUsingAnyRemainingOrAnyUnmapped() {
58+
59+
assertThatThrownBy( () -> ErroneousOrderMapperUsingNoAnyRemainingAndNoAnyUnmapped.INSTANCE.map( "unknown" ) )
60+
.isInstanceOf( IllegalArgumentException.class )
61+
.hasMessage( "Unexpected enum constant: unknown" );
62+
63+
assertThat( ErroneousOrderMapperUsingNoAnyRemainingAndNoAnyUnmapped.INSTANCE.map( null ) )
64+
.isEqualTo( OrderType.STANDARD );
65+
66+
assertThat( ErroneousOrderMapperUsingNoAnyRemainingAndNoAnyUnmapped.INSTANCE.map( "STANDARD" ) )
67+
.isNull();
68+
69+
assertThat( ErroneousOrderMapperUsingNoAnyRemainingAndNoAnyUnmapped.INSTANCE.map( "RETAIL" ) )
70+
.isEqualTo( OrderType.RETAIL );
5771
}
5872

5973
}

0 commit comments

Comments
0 (0)
Morty Proxy This is a proxified and sanitized view of the page, visit original site.