+ private void validate(List<Class<?>> classes) {
+ if (classes == null || classes.size() == 0) return;
+ Map<String,String> names = new HashMap<String,String>();
+ StringBuilder conflictsMsg = new StringBuilder();
+ for (Class<?> c : classes) {
+ XmlRootElement root = c.getAnnotation(XmlRootElement.class);
+ if (root == null) continue;
+ String rootName = root.name();
+ if ("##default".equals(rootName)) {
+ String clsName = c.getSimpleName();
+ rootName = Character.toLowerCase(clsName.charAt(0)) + clsName.substring(1);
+ }
+ String other = names.get(rootName);
+ if (other != null && !other.equals(c.getName())) {
+ conflictsMsg.append(System.lineSeparator())
+ .append("[").append(rootName).append(":")
+ .append(c.getName()).append(",").append(other)
+ .append("]");
+ } else {
+ names.put(rootName, c.getName());
+ }
+ }
+ if (conflictsMsg.length() > 0) {
+ LOGGER.warn("JAXB type conflicts detected : {}", conflictsMsg.toString());
+ }
+ }
+