diff options
Diffstat (limited to 'org.eclipse.m2e.editor.xml/src/main/java/org/eclipse/m2e/editor/xml/internal/mojo/MojoParameterMetadataProvider.java')
-rw-r--r-- | org.eclipse.m2e.editor.xml/src/main/java/org/eclipse/m2e/editor/xml/internal/mojo/MojoParameterMetadataProvider.java | 56 |
1 files changed, 38 insertions, 18 deletions
diff --git a/org.eclipse.m2e.editor.xml/src/main/java/org/eclipse/m2e/editor/xml/internal/mojo/MojoParameterMetadataProvider.java b/org.eclipse.m2e.editor.xml/src/main/java/org/eclipse/m2e/editor/xml/internal/mojo/MojoParameterMetadataProvider.java index 82112a7f..07f6b4a4 100644 --- a/org.eclipse.m2e.editor.xml/src/main/java/org/eclipse/m2e/editor/xml/internal/mojo/MojoParameterMetadataProvider.java +++ b/org.eclipse.m2e.editor.xml/src/main/java/org/eclipse/m2e/editor/xml/internal/mojo/MojoParameterMetadataProvider.java @@ -492,19 +492,29 @@ public class MojoParameterMetadataProvider { private static Map<String, Type> getClassProperties(Class<?> clazz) { Map<String, Type> props = new HashMap<>(); - for(Method m : clazz.getMethods()) { - if((m.getModifiers() & Modifier.STATIC) != 0) { - continue; - } + Method[] methods; + try { + methods = clazz.getMethods(); + } catch(Throwable e) { + log.debug("Cannot get methods of " + clazz.getName(), e); + methods = null; + } + + if(methods != null) { + for(Method m : methods) { + if((m.getModifiers() & Modifier.STATIC) != 0) { + continue; + } - String name = m.getName(); + String name = m.getName(); - if((name.startsWith("add") || name.startsWith("set")) && m.getParameterTypes().length == 1) { //$NON-NLS-1$ //$NON-NLS-2$ - String prop = name.substring(3); - if(!prop.isEmpty()) { - prop = Character.toLowerCase(prop.charAt(0)) + prop.substring(1); - if(!props.containsKey(prop)) { - props.put(prop, m.getGenericParameterTypes()[0]); + if((name.startsWith("add") || name.startsWith("set")) && m.getParameterTypes().length == 1) { //$NON-NLS-1$ //$NON-NLS-2$ + String prop = name.substring(3); + if(!prop.isEmpty()) { + prop = Character.toLowerCase(prop.charAt(0)) + prop.substring(1); + if(!props.containsKey(prop)) { + props.put(prop, m.getGenericParameterTypes()[0]); + } } } } @@ -513,17 +523,27 @@ public class MojoParameterMetadataProvider { Class<?> pClazz = clazz; while(pClazz != null && !pClazz.equals(Object.class)) { - for(Field f : pClazz.getDeclaredFields()) { - if((f.getModifiers() & (Modifier.STATIC | Modifier.FINAL)) != 0) { - continue; - } + Field[] fields; + try { + fields = pClazz.getDeclaredFields(); + } catch(Throwable e) { + log.debug("Cannot get declared fields of " + pClazz.getName(), e); + fields = null; + } - String prop = f.getName(); + if(fields != null) { + for(Field f : fields) { + if((f.getModifiers() & (Modifier.STATIC | Modifier.FINAL)) != 0) { + continue; + } + + String prop = f.getName(); - if(!props.containsKey(prop)) { + if(!props.containsKey(prop)) { - props.put(prop, f.getGenericType()); + props.put(prop, f.getGenericType()); + } } } pClazz = pClazz.getSuperclass(); |