Revert "Implement METADATA protobuf changes for go/tp-metadata-id"

This reverts commit 25c9ff0a6cddc0f6417d8437d16d68e47bd7d70e.

Reason for revert: http://b/303688820

Change-Id: Id56882bb0d0b1e422b8140f5eb9bbae526545f35
diff --git a/base_updater.py b/base_updater.py
index 27b4928..747a2a3 100644
--- a/base_updater.py
+++ b/base_updater.py
@@ -23,14 +23,15 @@
 
 class Updater:
     """Base Updater that defines methods common for all updaters."""
-    def __init__(self, proj_path: Path, old_identifier: metadata_pb2.Identifier,
+    def __init__(self, proj_path: Path, old_url: metadata_pb2.URL,
                  old_ver: str) -> None:
         self._proj_path = fileutils.get_absolute_project_path(proj_path)
-        self._old_identifier = old_identifier
-        self._old_identifier.version = old_identifier.version if old_identifier.version else old_ver
+        self._old_url = old_url
+        self._old_ver = old_ver
 
-        self._new_identifier = metadata_pb2.Identifier()
-        self._new_identifier.CopyFrom(old_identifier)
+        self._new_url = metadata_pb2.URL()
+        self._new_url.CopyFrom(old_url)
+        self._new_ver = old_ver
 
         self._has_errors = False
 
@@ -41,7 +42,7 @@
     def validate(self) -> str:
         """Checks whether aosp version is what it claims to be."""
         self.setup_remote()
-        return git_utils.diff(self._proj_path, self._old_identifier.version)
+        return git_utils.diff(self._proj_path, self._old_ver)
 
     def check(self) -> None:
         """Checks whether a new version is available."""
@@ -64,10 +65,10 @@
     def update_metadata(self, metadata: metadata_pb2.MetaData) -> metadata_pb2:
         updated_metadata = metadata_pb2.MetaData()
         updated_metadata.CopyFrom(metadata)
-        updated_metadata.third_party.ClearField("version")
-        for identifier in updated_metadata.third_party.identifier:
-            if identifier == self.current_identifier:
-                identifier.CopyFrom(self.latest_identifier)
+        updated_metadata.third_party.version = self.latest_version
+        for metadata_url in updated_metadata.third_party.url:
+            if metadata_url == self.current_url:
+                metadata_url.CopyFrom(self.latest_url)
         return updated_metadata
 
     @property
@@ -78,22 +79,22 @@
     @property
     def current_version(self) -> str:
         """Gets the current version."""
-        return self._old_identifier.version
+        return self._old_ver
 
     @property
-    def current_identifier(self) -> metadata_pb2.Identifier:
-        """Gets the current identifier."""
-        return self._old_identifier
+    def current_url(self) -> metadata_pb2.URL:
+        """Gets the current url."""
+        return self._old_url
 
     @property
     def latest_version(self) -> str:
         """Gets latest version."""
-        return self._new_identifier.version
+        return self._new_ver
 
     @property
-    def latest_identifier(self) -> metadata_pb2.Identifier:
-        """Gets identifier for latest version."""
-        return self._new_identifier
+    def latest_url(self) -> metadata_pb2.URL:
+        """Gets URL for latest version."""
+        return self._new_url
 
     @property
     def has_errors(self) -> bool:
@@ -102,5 +103,5 @@
 
     def use_current_as_latest(self):
         """Uses current version/url as the latest to refresh project."""
-        self._new_identifier.version = self._old_identifier.version
-        self._new_identifier = self._old_identifier
+        self._new_ver = self._old_ver
+        self._new_url = self._old_url
diff --git a/crates_updater.py b/crates_updater.py
index b92e9e7..81e0489 100644
--- a/crates_updater.py
+++ b/crates_updater.py
@@ -63,7 +63,7 @@
     temp_file: IO
 
     def is_supported_url(self) -> bool:
-        match = CRATES_IO_ARCHIVE_URL_RE.match(self._old_identifier.value)
+        match = CRATES_IO_ARCHIVE_URL_RE.match(self._old_url.value)
         if match is None:
             return False
         self.package = match.group(1)
@@ -112,14 +112,14 @@
         with urllib.request.urlopen(url) as request:
             data = json.loads(request.read().decode())
         last_id = 0
-        self._new_identifier.version = ""
+        self._new_ver = ""
         for v in data["versions"]:
             version = v["num"]
             if (not v["yanked"] and not ALPHA_BETA_RE.match(version) and
                 self._is_newer_version(
-                    self._new_identifier.version, last_id, version, int(v["id"]))):
+                    self._new_ver, last_id, version, int(v["id"]))):
                 last_id = int(v["id"])
-                self._new_identifier.version = version
+                self._new_ver = version
                 self.download_url = "https://crates.io" + v["dl_path"]
 
     def check(self) -> None:
@@ -127,13 +127,13 @@
         url = "https://crates.io/api/v1/crates/" + self.package
         with urllib.request.urlopen(url) as request:
             data = json.loads(request.read().decode())
-            self._new_identifier.version = data["crate"]["max_version"]
+            self._new_ver = data["crate"]["max_version"]
         # Skip d.d.d-{alpha,beta}* versions
-        if ALPHA_BETA_RE.match(self._new_identifier.version):
-            print(f"Ignore alpha or beta release:{self.package}-{self._new_identifier.version}.")
+        if ALPHA_BETA_RE.match(self._new_ver):
+            print(f"Ignore alpha or beta release: {self.package}-{self._new_ver}.")
             self._find_latest_non_test_version()
         else:
-            url = url + "/" + self._new_identifier.version
+            url = url + "/" + self._new_ver
             with urllib.request.urlopen(url) as request:
                 data = json.loads(request.read().decode())
                 self.download_url = "https://crates.io" + data["version"]["dl_path"]
@@ -142,7 +142,7 @@
         Updater.use_current_as_latest(self)
         # A shortcut to use the static download path.
         self.download_url = f"https://static.crates.io/crates/{self.package}/" \
-                            f"{self.package}-{self._new_identifier.version}.crate"
+                            f"{self.package}-{self._new_ver}.crate"
 
     def update(self, skip_post_update: bool) -> None:
         """Updates the package.
@@ -175,11 +175,18 @@
         """Updates METADATA content."""
         # copy only HOMEPAGE url, and then add new ARCHIVE url.
         updated_metadata = super().update_metadata(metadata)
-        for identifier in updated_metadata.third_party.identifier:
-            if identifier.version:
-                identifier.value = f"https://static.crates.io/crates/{updated_metadata.name}/" \
-                                     f"{updated_metadata.name}-{self.latest_identifier.version}.crate"
+        new_url_list = []
+        for url in updated_metadata.third_party.url:
+            if url.type == metadata_pb2.URL.HOMEPAGE:
+                new_url_list.append(url)
                 break
+        new_url = metadata_pb2.URL()
+        new_url.type = metadata_pb2.URL.ARCHIVE
+        new_url.value = f"https://static.crates.io/crates/{updated_metadata.name}/" \
+                        f"{updated_metadata.name}-{updated_metadata.third_party.version}.crate"
+        new_url_list.append(new_url)
+        del updated_metadata.third_party.url[:]
+        updated_metadata.third_party.url.extend(new_url_list)
         # copy description from Cargo.toml to METADATA
         cargo_toml = os.path.join(self.project_path, "Cargo.toml")
         description = self._get_cargo_description(cargo_toml)
diff --git a/external_updater.py b/external_updater.py
index 227e5e2..97c34cc 100644
--- a/external_updater.py
+++ b/external_updater.py
@@ -85,7 +85,6 @@
 
     proj_path = fileutils.get_absolute_project_path(proj_path)
     metadata = fileutils.read_metadata(proj_path)
-    metadata = fileutils.convert_url_to_identifier(metadata)
     updater = updater_utils.create_updater(metadata, proj_path, UPDATERS)
     return (updater, metadata)
 
diff --git a/fileutils.py b/fileutils.py
index 0da20d5..4f641f0 100644
--- a/fileutils.py
+++ b/fileutils.py
@@ -117,21 +117,6 @@
         return text_format.Parse(metadata, metadata_pb2.MetaData())
 
 
-def convert_url_to_identifier(metadata: metadata_pb2.MetaData) -> metadata_pb2.MetaData:
-    """Converts the old style METADATA to the new style"""
-    for url in metadata.third_party.url:
-        identifier = metadata_pb2.Identifier()
-        identifier.type = metadata_pb2.URL.Type.Name(url.type)
-        identifier.value = url.value
-        if url.type != metadata_pb2.URL.HOMEPAGE:
-            identifier.version = metadata.third_party.version
-            metadata.third_party.ClearField("version")
-
-        metadata.third_party.identifier.append(identifier)
-    metadata.third_party.ClearField("url")
-    return metadata
-
-
 def write_metadata(proj_path: Path, metadata: metadata_pb2.MetaData, keep_date: bool) -> None:
     """Writes updated METADATA file for a project.
 
diff --git a/git_updater.py b/git_updater.py
index 63ff33d..e25196f 100644
--- a/git_updater.py
+++ b/git_updater.py
@@ -24,7 +24,7 @@
     UPSTREAM_REMOTE_NAME: str = "update_origin"
 
     def is_supported_url(self) -> bool:
-        return git_utils.is_valid_url(self._proj_path, self._old_identifier.value)
+        return git_utils.is_valid_url(self._proj_path, self._old_url.value)
 
     @staticmethod
     def _is_likely_android_remote(url: str) -> bool:
@@ -73,13 +73,13 @@
                 f"Could not determine android remote for {self._proj_path}. Tried:\n"
                 f"{remotes_formatted}")
 
-        if current_remote_url is not None and current_remote_url != self._old_identifier.value:
+        if current_remote_url is not None and current_remote_url != self._old_url.value:
             git_utils.remove_remote(self._proj_path, self.UPSTREAM_REMOTE_NAME)
             current_remote_url = None
 
         if current_remote_url is None:
             git_utils.add_remote(self._proj_path, self.UPSTREAM_REMOTE_NAME,
-                                 self._old_identifier.value)
+                                 self._old_url.value)
 
         branch = git_utils.detect_default_branch(self._proj_path,
                                                  self.UPSTREAM_REMOTE_NAME)
@@ -90,7 +90,7 @@
     def check(self) -> None:
         """Checks upstream and returns whether a new version is available."""
         self.setup_remote()
-        if git_utils.is_commit(self._old_identifier.version):
+        if git_utils.is_commit(self._old_ver):
             # Update to remote head.
             self._check_head()
         else:
@@ -100,20 +100,20 @@
     def _check_tag(self) -> None:
         branch = git_utils.detect_default_branch(self._proj_path,
                                                  self.UPSTREAM_REMOTE_NAME)
-        self._new_identifier.version = git_utils.get_most_recent_tag(
+        self._new_ver = git_utils.get_most_recent_tag(
             self._proj_path, self.UPSTREAM_REMOTE_NAME + '/' + branch)
 
     def _check_head(self) -> None:
         branch = git_utils.detect_default_branch(self._proj_path,
                                                  self.UPSTREAM_REMOTE_NAME)
-        self._new_identifier.version = git_utils.get_sha_for_branch(
+        self._new_ver = git_utils.get_sha_for_branch(
             self._proj_path, self.UPSTREAM_REMOTE_NAME + '/' + branch)
 
     def update(self, skip_post_update: bool) -> None:
         """Updates the package.
         Has to call check() before this function.
         """
-        print(f"Running `git merge {self._new_identifier.version}`...")
-        git_utils.merge(self._proj_path, self._new_identifier.version)
+        print(f"Running `git merge {self._new_ver}`...")
+        git_utils.merge(self._proj_path, self._new_ver)
         if not skip_post_update:
             updater_utils.run_post_update(self._proj_path, self._proj_path)
diff --git a/github_archive_updater.py b/github_archive_updater.py
index 9c33be1..e67d77b 100644
--- a/github_archive_updater.py
+++ b/github_archive_updater.py
@@ -77,9 +77,9 @@
     repo: str
 
     def is_supported_url(self) -> bool:
-        if self._old_identifier.type.lower() != 'archive':
+        if self._old_url.type != metadata_pb2.URL.ARCHIVE:
             return False
-        match = GITHUB_URL_RE.match(self._old_identifier.value)
+        match = GITHUB_URL_RE.match(self._old_url.value)
         if match is None:
             return False
         try:
@@ -134,14 +134,14 @@
 
     def _fetch_latest_version(self) -> None:
         """Checks upstream and gets the latest release tag."""
-        self._new_identifier.version, urls = (self._fetch_latest_release()
+        self._new_ver, urls = (self._fetch_latest_release()
                                or self._fetch_latest_tag())
 
         # Adds source code urls.
-        urls.append(f'https://github.com/{self.owner}/{self.repo}/archive/{self._new_identifier.version}.tar.gz')
-        urls.append(f'https://github.com/{self.owner}/{self.repo}/archive/{self._new_identifier.version}.zip')
+        urls.append(f'https://github.com/{self.owner}/{self.repo}/archive/{self._new_ver}.tar.gz')
+        urls.append(f'https://github.com/{self.owner}/{self.repo}/archive/{self._new_ver}.zip')
 
-        self._new_identifier.value = choose_best_url(urls, self._old_identifier.value)
+        self._new_url.value = choose_best_url(urls, self._old_url.value)
 
     def _fetch_latest_commit(self) -> None:
         """Checks upstream and gets the latest commit to default branch."""
@@ -149,11 +149,11 @@
         # pylint: disable=line-too-long
         branch = git_utils.detect_default_branch(self._proj_path,
                                                  self.UPSTREAM_REMOTE_NAME)
-        self._new_identifier.version = git_utils.get_sha_for_branch(
+        self._new_ver = git_utils.get_sha_for_branch(
             self._proj_path, self.UPSTREAM_REMOTE_NAME + '/' + branch)
-        self._new_identifier.value = (
+        self._new_url.value = (
             # pylint: disable=line-too-long
-            f'https://github.com/{self.owner}/{self.repo}/archive/{self._new_identifier.version}.zip'
+            f'https://github.com/{self.owner}/{self.repo}/archive/{self._new_ver}.zip'
         )
 
     def check(self) -> None:
@@ -162,7 +162,7 @@
         Returns True if a new version is available.
         """
         self.setup_remote()
-        if git_utils.is_commit(self._old_identifier.version):
+        if git_utils.is_commit(self._old_ver):
             self._fetch_latest_commit()
         else:
             self._fetch_latest_version()
@@ -175,7 +175,7 @@
         temporary_dir = None
         try:
             temporary_dir = archive_utils.download_and_extract(
-                self._new_identifier.value)
+                self._new_url.value)
             package_dir = archive_utils.find_archive_root(temporary_dir)
             updater_utils.replace_package(package_dir, self._proj_path)
         finally:
diff --git a/metadata.proto b/metadata.proto
index 2419e50..f7eb007 100644
--- a/metadata.proto
+++ b/metadata.proto
@@ -55,7 +55,6 @@
   optional Security security = 7;
   optional Date last_upgrade_date = 10;
   optional DirectoryType type = 11 [default = PACKAGE];
-  repeated Identifier identifier = 15;
 }
 
 message URL {
@@ -76,12 +75,6 @@
   optional string value = 2;
 }
 
-message Identifier {
-  optional string type = 1;
-  optional string value = 3;
-  optional string version = 4;
-}
-
 message Date {
   optional int32 year = 1;
   optional int32 month = 2;
diff --git a/updater_utils.py b/updater_utils.py
index ab155ef..b263dcb 100644
--- a/updater_utils.py
+++ b/updater_utils.py
@@ -40,10 +40,10 @@
     Raises:
       ValueError: Occurred when there's no updater for all urls.
     """
-    for identifier in metadata.third_party.identifier:
-        if identifier.type.lower() != 'homepage':
+    for url in metadata.third_party.url:
+        if url.type != metadata_pb2.URL.HOMEPAGE:
             for updater_cls in updaters:
-                updater = updater_cls(proj_path, identifier, metadata.third_party.version)
+                updater = updater_cls(proj_path, url, metadata.third_party.version)
                 if updater.is_supported_url():
                     return updater
 
@@ -107,7 +107,7 @@
     except ValueError:
         return (False, False, [])
 
-    right_format = new_ver[1:] == old_ver[1:]
+    right_format = (new_ver[1:] == old_ver[1:])
     right_length = len(new_ver[0]) == len(old_ver[0])
 
     return (right_format, right_length, new_ver[0])