import static com.google.common.base.Preconditions.checkArgument;
import com.google.common.base.CharMatcher;
+import com.google.common.base.Preconditions;
import com.google.common.base.Splitter;
import com.google.common.collect.ImmutableSet;
import com.google.common.collect.Interner;
import com.google.common.collect.Interners;
-import java.text.SimpleDateFormat;
+import java.util.Optional;
import java.util.Set;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
import org.opendaylight.yangtools.yang.common.QName;
import org.opendaylight.yangtools.yang.common.QNameModule;
+import org.opendaylight.yangtools.yang.common.Revision;
public final class BindingMapping {
public static final String RPC_INPUT_SUFFIX = "Input";
public static final String RPC_OUTPUT_SUFFIX = "Output";
- private static final ThreadLocal<SimpleDateFormat> PACKAGE_DATE_FORMAT = new ThreadLocal<SimpleDateFormat>() {
-
- @Override
- protected SimpleDateFormat initialValue() {
- return new SimpleDateFormat("yyMMdd");
- }
-
- @Override
- public void set(final SimpleDateFormat value) {
- throw new UnsupportedOperationException();
- }
- };
-
private static final Interner<String> PACKAGE_INTERNER = Interners.newWeakInterner();
private BindingMapping() {
if (chars[chars.length - 1] != '.') {
packageNameBuilder.append('.');
}
- packageNameBuilder.append("rev");
- packageNameBuilder.append(PACKAGE_DATE_FORMAT.get().format(module.getRevision()));
+
+ final Optional<Revision> optRev = module.getRevision();
+ if (optRev.isPresent()) {
+ // Revision is in format 2017-10-26, we want the output to be 171026, which is a matter of picking the
+ // right characters.
+ final String rev = optRev.get().toString();
+ Preconditions.checkArgument(rev.length() == 10, "Unsupported revision %s", rev);
+ packageNameBuilder.append("rev");
+ packageNameBuilder.append(rev.substring(2, 4)).append(rev.substring(5, 7)).append(rev.substring(8));
+ } else {
+ // No-revision packages are special
+ packageNameBuilder.append("norev");
+ }
+
return normalizePackageName(packageNameBuilder.toString());
}