if (field.isEnumConstant() && field.getName().equals(e.name())) {
if (field.getAnnotation(XmlUnknownQNameEnumValue.class) != null) {
throw new IllegalArgumentException(e.getDeclaringClass().getName() + "." + e + " is not a QName enum value.");
}
XmlQNameEnumValue enumValueInfo = field.getAnnotation(XmlQNameEnumValue.class);
String ns = namespace;
String localPart = field.getName();
if (enumValueInfo != null && !enumValueInfo.exclude()) {
if (enumValueInfo.exclude()) {
throw new IllegalArgumentException(e.getDeclaringClass().getName() + "." + e + " is excluded a QName enum value.");
}
if (!"##default".equals(enumValueInfo.namespace())) {
ns = enumValueInfo.namespace();
}
if (!"##default".equals(enumValueInfo.localPart())) {
localPart = enumValueInfo.localPart();
}
}
return new QName(ns, localPart);
}