From 8a260bf65971fe4e39bb42a61e99a7ce496a2727 Mon Sep 17 00:00:00 2001 From: Gunnar Morling Date: Tue, 4 Mar 2014 20:08:22 +0100 Subject: [PATCH] #162 Making sure only actual enum constants are mapped in enum mapping when using the Eclipse compiler --- .../src/main/java/org/mapstruct/ap/model/common/Type.java | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/processor/src/main/java/org/mapstruct/ap/model/common/Type.java b/processor/src/main/java/org/mapstruct/ap/model/common/Type.java index c1eb9df79..fc91cfa0a 100644 --- a/processor/src/main/java/org/mapstruct/ap/model/common/Type.java +++ b/processor/src/main/java/org/mapstruct/ap/model/common/Type.java @@ -26,6 +26,7 @@ import java.util.Set; import javax.lang.model.element.AnnotationMirror; import javax.lang.model.element.Element; import javax.lang.model.element.ElementKind; +import javax.lang.model.element.Modifier; import javax.lang.model.element.Name; import javax.lang.model.element.TypeElement; import javax.lang.model.type.TypeMirror; @@ -87,7 +88,10 @@ public class Type extends ModelElement implements Comparable { enumConstants = new ArrayList(); for ( Element element : typeElement.getEnclosedElements() ) { - if ( element.getKind() == ElementKind.ENUM_CONSTANT ) { + // #162: The check for visibility shouldn't be required, but the Eclipse compiler implementation + // exposes non-enum members otherwise + if ( element.getKind() == ElementKind.ENUM_CONSTANT && + element.getModifiers().contains( Modifier.PUBLIC ) ) { enumConstants.add( element.getSimpleName().toString() ); } }