@Override
protected void collectTypes() throws IOException, XMLStreamException, ClassNotFoundException,
NoSuchMethodException {
Map<ManagedType<?>, EntityType> types = Maps.newHashMap();
for (ManagedType<?> managedType : configuration.getManagedTypes()) {
if (managedType instanceof MappedSuperclassType) {
types.put(managedType, createSuperType(managedType.getJavaType()));
} else if (managedType instanceof javax.persistence.metamodel.EntityType) {
types.put(managedType, createEntityType(managedType.getJavaType()));
} else if (managedType instanceof EmbeddableType) {
types.put(managedType, createEmbeddableType(managedType.getJavaType()));
} else {
throw new IllegalArgumentException("Unknown type " + managedType);
}
}
for (Map.Entry<ManagedType<?>, EntityType> entry : types.entrySet()) {
EntityType entityType = entry.getValue();
for (Attribute<?,?> attribute : entry.getKey().getDeclaredAttributes()) {
handleProperty(entityType, entityType.getJavaClass(), attribute);
}
}
}