protected boolean unsupportedAttribute(BuilderASTTransformation transform, AnnotationNode anno, String memberName, String extraMessage) { Object memberValue = transform.getMemberValue(anno, memberName); if (memberValue instanceof String && isUndefined((String) memberValue)) return false; if (memberValue == null) { memberValue = transform.getMemberClassValue(anno, memberName); if (memberValue != null && isUndefined((ClassNode) memberValue)) { memberValue = null; } } if (memberValue != null) { String message = extraMessage.length() == 0 ? "" : " " + extraMessage; transform.addError("Error during " + MY_TYPE_NAME + " processing: Annotation attribute '" + memberName + "' not supported by " + getClass().getName() + message, anno); return true; } return false; }
private BuilderStrategy createBuilderStrategy(AnnotationNode anno, GroovyClassLoader loader) { ClassNode strategyClass = getMemberClassValue(anno, "builderStrategy", ClassHelper.make(DefaultStrategy.class)); if (strategyClass == null) { addError("Couldn't determine builderStrategy class", anno); return null; } String className = strategyClass.getName(); try { Object instance = loader.loadClass(className).newInstance(); if (instance == null) { addError("Can't load builderStrategy '" + className + "'", anno); return null; } if (!BuilderStrategy.class.isAssignableFrom(instance.getClass())) { addError("The builderStrategy class '" + strategyClass.getName() + "' on " + MY_TYPE_NAME + " is not a builderStrategy", anno); return null; } return (BuilderStrategy) instance; } catch (Exception e) { addError("Can't load builderStrategy '" + className + "' " + e, anno); return null; } }
ClassNode buildee = transform.getMemberClassValue(anno, "forClass"); if (buildee == null) { transform.addError("Error during " + MY_TYPE_NAME + " processing: 'forClass' must be specified for " + getClass().getName(), anno);