@@ -336,25 +336,39 @@ public static List<MappedFieldRecord> findAffectedFields(final Object instance)
336336 continue ;
337337 }
338338
339- if (!ReflectUtils .isPotentiallyAccessibleField (mappingField )) {
340- mappingField = ReflectUtils .makeAccessible (mappingField );
341- }
342-
343339 final Bin fieldAnno = mappingField .getAnnotation (Bin .class );
344340 final Bin mappedAnno ;
345341 if ((fieldAnno == null && defaultAnno == null ) || mappingField .getName ().indexOf ('$' ) >= 0 ) {
346342 continue ;
347343 }
344+ mappedAnno = fieldAnno == null ? defaultAnno : fieldAnno ;
348345
349- if (Modifier .isPrivate (fieldModifiers )) {
350- if (fieldAnno == null ) {
346+ if (fieldAnno == null ) {
347+ if (Modifier .isTransient (fieldModifiers )
348+ || Modifier .isStatic (fieldModifiers )
349+ || Modifier .isPrivate (fieldModifiers )
350+ || Modifier .isFinal (fieldModifiers )) {
351351 continue ;
352+ }
353+ } else {
354+ final String disallowedModifier ;
355+ if (Modifier .isStatic (fieldModifiers )) {
356+ disallowedModifier = "STATIC" ;
357+ } else if (Modifier .isFinal (fieldModifiers )) {
358+ disallowedModifier = "FINAL" ;
359+ } else if (Modifier .isPrivate (fieldModifiers )) {
360+ disallowedModifier = "PRIVATE" ;
352361 } else {
353- throw new JBBPMapperException ("Detected @Bin marked private field" , null , processingClazz , mappingField , null );
362+ disallowedModifier = null ;
363+ }
364+ if (disallowedModifier != null ) {
365+ throw new JBBPMapperException ("Detected @Bin marked " + disallowedModifier + " field" , null , processingClazz , mappingField , null );
354366 }
355367 }
356368
357- mappedAnno = fieldAnno == null ? defaultAnno : fieldAnno ;
369+ if (!ReflectUtils .isPotentiallyAccessibleField (mappingField )) {
370+ mappingField = ReflectUtils .makeAccessible (mappingField );
371+ }
358372
359373 try {
360374 result .add (new MappedFieldRecord (mappingField , mappingClass , mappedAnno ));
0 commit comments