However, the used utility method com.intellij.codeInsight.MetaAnnotationUtil#findMetaAnnotations returns only a single (more precise: the first) @Mapping annotation. Therefore this did not work as expected (but already worked with the simple test named UnmappedTargetPropertiesWithMetaAnnotationInspectionTest.
I implemented an own recursive method to find @Mapping annotations and provided a test case with an infinitve chained meta-annotation.
I also added a test with combined @Mapping and meta-annotation on the same mapping method. The current implementation did not merge them together but worked against each other.
Sidenote: The intellij utility method MetaAnnotationUtil#findMetaAnnotations used an internal cache. I chose against using one, because it felt like a premature optimization which made the code less readable. Let me know what you think, especially because of the TODO comments to use a cache in line 300 😆
If we/you really want this, we should do this in a separate issue/PR with a clean cache solution outsourced in a separate class to keep the code clean.
I can also improve this with the current PR. Let me know what you think.
This PR is about #129.
Mapping composition (or meta annotations) were already tacklet with the following commit (target version 1.2.1): https://github.com/mapstruct/mapstruct-idea/commit/35f171224af8267163f33edcedb92b01d14a3bbc
However, the used utility method
com.intellij.codeInsight.MetaAnnotationUtil#findMetaAnnotations
returns only a single (more precise: the first)@Mapping
annotation. Therefore this did not work as expected (but already worked with the simple test namedUnmappedTargetPropertiesWithMetaAnnotationInspectionTest
.I implemented an own recursive method to find
@Mapping
annotations and provided a test case with an infinitve chained meta-annotation. I also added a test with combined@Mapping
and meta-annotation on the same mapping method. The current implementation did not merge them together but worked against each other.Sidenote: The intellij utility method
MetaAnnotationUtil#findMetaAnnotations
used an internal cache. I chose against using one, because it felt like a premature optimization which made the code less readable. Let me know what you think, especially because of the TODO comments to use a cache in line 300 😆If we/you really want this, we should do this in a separate issue/PR with a clean cache solution outsourced in a separate class to keep the code clean.
I can also improve this with the current PR. Let me know what you think.