*/
package org.opendaylight.yangtools.yang.common;
+import static java.util.Objects.requireNonNull;
+
import com.google.common.annotations.Beta;
-import com.google.common.base.Preconditions;
-import javax.annotation.Nonnull;
+import com.google.common.collect.Maps;
+import java.util.Arrays;
+import java.util.Map;
+import java.util.Optional;
+import org.eclipse.jdt.annotation.NonNull;
/**
* Enumeration of supported YANG versions.
*/
VERSION_1_1("1.1", "RFC7950");
- private final String str;
- private String reference;
+ private static final Map<String, YangVersion> YANG_VERSION_MAP = Maps.uniqueIndex(Arrays.asList(values()),
+ YangVersion::toString);
+
+ private final @NonNull String str;
+ private final @NonNull String reference;
- private YangVersion(final String str, final String reference) {
- this.str = Preconditions.checkNotNull(str);
- this.reference = Preconditions.checkNotNull(reference);
+ YangVersion(final @NonNull String str, final @NonNull String reference) {
+ this.str = requireNonNull(str);
+ this.reference = requireNonNull(reference);
}
/**
*
* @param str String to parse
* @return YANG version
- * @throws IllegalArgumentException if the string is malformed
* @throws NullPointerException if the string is null
*/
- public static YangVersion parse(@Nonnull final String str) {
- switch (str) {
- case "1":
- return VERSION_1;
- case "1.1":
- return VERSION_1_1;
- default:
- throw new IllegalArgumentException("Invalid YANG version '" + str + "'");
- }
+ public static Optional<YangVersion> parse(final @NonNull String str) {
+ return Optional.ofNullable(YANG_VERSION_MAP.get(requireNonNull(str)));
}
/**
*
* @return Normative reference.
*/
- @Nonnull public String getReference() {
+ public @NonNull String getReference() {
return reference;
}
@Override
- @Nonnull public String toString() {
+ public @NonNull String toString() {
return str;
}
}