- final Builder<String, Enum<?>> builder = ImmutableBiMap.builder();
- for (Enum<?> enumValue : enumType.getEnumConstants()) {
- final String yangName = identifierToYang.get(enumValue.name());
- checkState(yangName != null, "Failed to find enumeration constant %s in mapping %s", enumValue,
- identifierToYang);
- builder.put(yangName, enumValue);
+ final Map<String, Enum<?>> mapping = Maps.uniqueIndex(Arrays.asList(enumType.getEnumConstants()),
+ value -> {
+ checkArgument(value instanceof Enumeration,
+ "Enumeration constant %s.%s is not implementing Enumeration", enumType.getName(), value);
+ return ((Enumeration) value).getName();
+ });
+
+ // Check if mapping is a bijection
+ final Set<String> assignedNames = def.getValues().stream().map(EnumPair::getName)
+ .collect(Collectors.toSet());
+ for (String name : assignedNames) {
+ if (!mapping.containsKey(name)) {
+ LOG.warn("Enumeration {} does not contain assigned name '{}' from {}", enumType, name, def);
+ }
+ }
+ for (String name : mapping.keySet()) {
+ if (!assignedNames.contains(name)) {
+ LOG.warn("Enumeration {} contains assigned name '{}' not covered by {}", enumType, name, def);
+ }