org.apache.http.legacy is built with java_sdk_library

The runtime library, stubs library and droiddoc are all abstracted into
the java_sdk_library module definition.

Note: LogConfigurationException has getCause() method inherited from its
parent class RuntimeException. This is a correct fix because doclava
adds overridden methods into the API signature. (see
frameworks/base/api/current.txt and look for getCause() for existing
cases)

Bug: 77577799

Test: m -j

Change-Id: I30ce741d7dfed1f93d3b19c750dcfbe073cceb69
diff --git a/Android.bp b/Android.bp
index 6e06f00..dfa1cad 100644
--- a/Android.bp
+++ b/Android.bp
@@ -12,11 +12,13 @@
 // See the License for the specific language governing permissions and
 // limitations under the License.
 
-droiddoc {
-    name: "apache-http-stubs-gen-docs",
+java_sdk_library {
+    name: "org.apache.http.legacy",
     srcs: [
         "src/**/*.java",
         "android/**/*.java",
+    ],
+    api_srcs: [
         ":apache-http-stubs-sources",
     ],
     libs: [
@@ -24,65 +26,50 @@
         "bouncycastle",
         "okhttp",
     ],
-    custom_template: "droiddoc-templates-sdk",
-    api_tag_name: "APACHE_HTTP",
-    api_filename: "apache-http-api.txt",
-    removed_api_filename: "apache-http-removed.txt",
-    args: "-stubpackages com.android.internal.http.multipart:" +
-          "org.apache.commons.logging:" +
-          "org.apache.commons.logging.impl:" +
-          "org.apache.commons.codec:" +
-          "org.apache.commons.codec.net:" +
-          "org.apache.commons.codec.language:" +
-          "org.apache.commons.codec.binary:" +
-          "org.apache.http.params:" +
-          "org.apache.http:" +
-          "org.apache.http.client.params:" +
-          "org.apache.http.client:" +
-          "org.apache.http.client.utils:" +
-          "org.apache.http.client.protocol:" +
-          "org.apache.http.client.methods:" +
-          "org.apache.http.client.entity:" +
-          "org.apache.http.protocol:" +
-          "org.apache.http.impl:" +
-          "org.apache.http.impl.client:" +
-          "org.apache.http.impl.auth:" +
-          "org.apache.http.impl.cookie:" +
-          "org.apache.http.impl.entity:" +
-          "org.apache.http.impl.io:" +
-          "org.apache.http.impl.conn:" +
-          "org.apache.http.impl.conn.tsccm:" +
-          "org.apache.http.message:" +
-          "org.apache.http.auth.params:" +
-          "org.apache.http.auth:" +
-          "org.apache.http.cookie.params:" +
-          "org.apache.http.cookie:" +
-          "org.apache.http.util:" +
-          "org.apache.http.entity:" +
-          "org.apache.http.io:" +
-          "org.apache.http.conn.params:" +
-          "org.apache.http.conn:" +
-          "org.apache.http.conn.routing:" +
-          "org.apache.http.conn.scheme:" +
-          "org.apache.http.conn.util:" +
-          "android.net.compatibility:" +
-          "android.net.http -hidePackage com.android.okhttp -nodocs",
-    sdk_version: "21",
-    installable: false,
-}
-
-java_library_static {
-    name: "org.apache.http.legacy",
-    srcs: [
-        ":apache-http-stubs-gen-docs",
+    api_packages: [
+          "android.net.compatibility",
+          "android.net.http",
+          "com.android.internal.http.multipart",
+          "org.apache.commons.codec",
+          "org.apache.commons.codec.binary",
+          "org.apache.commons.codec.language",
+          "org.apache.commons.codec.net",
+          "org.apache.commons.logging",
+          "org.apache.commons.logging.impl",
+          "org.apache.http",
+          "org.apache.http.auth",
+          "org.apache.http.auth.params",
+          "org.apache.http.client",
+          "org.apache.http.client.entity",
+          "org.apache.http.client.methods",
+          "org.apache.http.client.params",
+          "org.apache.http.client.protocol",
+          "org.apache.http.client.utils",
+          "org.apache.http.conn",
+          "org.apache.http.conn.params",
+          "org.apache.http.conn.routing",
+          "org.apache.http.conn.scheme",
+          "org.apache.http.conn.util",
+          "org.apache.http.cookie",
+          "org.apache.http.cookie.params",
+          "org.apache.http.entity",
+          "org.apache.http.impl",
+          "org.apache.http.impl.auth",
+          "org.apache.http.impl.client",
+          "org.apache.http.impl.conn",
+          "org.apache.http.impl.conn.tsccm",
+          "org.apache.http.impl.cookie",
+          "org.apache.http.impl.entity",
+          "org.apache.http.impl.io",
+          "org.apache.http.io",
+          "org.apache.http.message",
+          "org.apache.http.params",
+          "org.apache.http.protocol",
+          "org.apache.http.util",
     ],
-    product_variables: {
-        pdk: {
-            enabled: false,
-        },
-        unbundled_build: {
-            enabled: false,
-        },
+    hidden_api_packages: ["com.android.okhttp"],
+    dex_preopt: {
+        profile: "art-profile",
+        app_image: false,
     },
-    sdk_version: "21",
 }
diff --git a/Android.mk b/Android.mk
deleted file mode 100644
index 625e871..0000000
--- a/Android.mk
+++ /dev/null
@@ -1,86 +0,0 @@
-# Copyright (C) 2014 The Android Open Source Project
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-#      http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-#
-LOCAL_PATH:= $(call my-dir)
-
-apache_http_src_files := \
-    $(call all-java-files-under,src) \
-    $(call all-java-files-under,android)
-
-apache_http_java_libs := conscrypt
-
-include $(CLEAR_VARS)
-LOCAL_MODULE := org.apache.http.legacy.boot
-LOCAL_MODULE_TAGS := optional
-LOCAL_JAVA_LIBRARIES := $(apache_http_java_libs)
-LOCAL_SRC_FILES := $(apache_http_src_files)
-LOCAL_MODULE_TAGS := optional
-LOCAL_DEX_PREOPT_APP_IMAGE := false
-ifeq ($(REMOVE_OAHL_FROM_BCP),true)
-# Previously, this JAR was included on the bootclasspath so was compiled using
-# the speed-profile. ensures that it continues to be compiled using the
-# speed-profile in order to avoid regressing the performance, particularly of
-# app launch times. Without this it would be compiled using quicken (which is
-# interpreter + JIT) and so would be slower.
-LOCAL_DEX_PREOPT_GENERATE_PROFILE := true
-LOCAL_DEX_PREOPT_PROFILE_CLASS_LISTING := $(LOCAL_PATH)/art-profile/$(LOCAL_MODULE).prof.txt
-endif
-include $(BUILD_JAVA_LIBRARY)
-
-APACHE_HTTP_LEGACY_API_FILE := $(LOCAL_PATH)/api/apache-http-legacy-current.txt
-APACHE_HTTP_LEGACY_REMOVED_API_FILE := $(LOCAL_PATH)/api/apache-http-legacy-removed.txt
-
-# For unbundled build we'll use the prebuilt jar from prebuilts/sdk.
-ifeq (,$(TARGET_BUILD_APPS)$(filter true,$(TARGET_BUILD_PDK)))
-
-full_classes_jar := $(call intermediates-dir-for,JAVA_LIBRARIES,org.apache.http.legacy,,COMMON)/classes.jar
-# Archive a copy of the classes.jar in SDK build.
-$(call dist-for-goals,sdk win_sdk,$(full_classes_jar):org.apache.http.legacy.jar)
-
-# Check that the org.apache.http.legacy.stubs library has not changed
-# ===================================================================
-
-# Check that the API we're building hasn't changed from the not-yet-released
-# SDK version.
-$(eval $(call check-api, \
-    check-apache-http-legacy-api-current, \
-    $(APACHE_HTTP_LEGACY_API_FILE), \
-    $(INTERNAL_PLATFORM_APACHE_HTTP_API_FILE), \
-    $(APACHE_HTTP_LEGACY_REMOVED_API_FILE), \
-    $(INTERNAL_PLATFORM_APACHE_HTTP_REMOVED_API_FILE), \
-    -error 2 -error 3 -error 4 -error 5 -error 6 \
-    -error 7 -error 8 -error 9 -error 10 -error 11 -error 12 -error 13 -error 14 -error 15 \
-    -error 16 -error 17 -error 18 -error 19 -error 20 -error 21 -error 23 -error 24 \
-    -error 25 -error 26 -error 27, \
-    cat $(LOCAL_PATH)/api/apicheck_msg_apache_http_legacy.txt, \
-    check-apache-http-legacy-api, \
-    $(OUT_DOCS)/apache-http-stubs-gen-docs-stubs.srcjar \
-    ))
-
-.PHONY: check-apache-http-legacy-api
-checkapi: check-apache-http-legacy-api
-
-.PHONY: update-apache-http-legacy-api
-update-api: update-apache-http-legacy-api
-
-update-apache-http-legacy-api: $(INTERNAL_PLATFORM_APACHE_HTTP_API_FILE) | $(ACP)
-	@echo Copying apache-http-legacy-current.txt
-	$(hide) $(ACP) $(INTERNAL_PLATFORM_APACHE_HTTP_API_FILE) $(APACHE_HTTP_LEGACY_API_FILE)
-	@echo Copying apache-http-legacy-removed.txt
-	$(hide) $(ACP) $(INTERNAL_PLATFORM_APACHE_HTTP_REMOVED_API_FILE) $(APACHE_HTTP_LEGACY_REMOVED_API_FILE)
-
-endif  # not TARGET_BUILD_APPS
-
-apache_http_src_files :=
-apache_http_java_libs :=
diff --git a/CleanSpec.mk b/CleanSpec.mk
index 694f8d2..1c8922d 100644
--- a/CleanSpec.mk
+++ b/CleanSpec.mk
@@ -49,3 +49,6 @@
 # ************************************************
 $(call add-clean-step, rm -rf $(OUT_DIR)/target/common/obj/JAVA_LIBRARIES/org.apache.http.legacy_intermediates)
 $(call add-clean-step, rm -rf $(OUT_DIR)/target/common/obj/JAVA_LIBRARIES/apache-http-stubs_intermediates)
+
+# runtime lib is renamed from *.boot to *.impl
+$(call add-clean-step, rm -rf $(PRODUCT_OUT)/system/framework/org.apache.http.legacy.boot.jar)
diff --git a/api/apache-http-legacy-current.txt b/api/current.txt
similarity index 99%
rename from api/apache-http-legacy-current.txt
rename to api/current.txt
index fc5482e..a1eb578 100644
--- a/api/apache-http-legacy-current.txt
+++ b/api/current.txt
@@ -698,6 +698,7 @@
     ctor public LogConfigurationException(java.lang.String);
     ctor public LogConfigurationException(java.lang.Throwable);
     ctor public LogConfigurationException(java.lang.String, java.lang.Throwable);
+    method public java.lang.Throwable getCause();
     field protected java.lang.Throwable cause;
   }
 
diff --git a/api/apache-http-legacy-removed.txt b/api/removed.txt
similarity index 100%
copy from api/apache-http-legacy-removed.txt
copy to api/removed.txt
diff --git a/api/apache-http-legacy-removed.txt b/api/system-current.txt
similarity index 100%
copy from api/apache-http-legacy-removed.txt
copy to api/system-current.txt
diff --git a/api/apache-http-legacy-removed.txt b/api/system-removed.txt
similarity index 100%
rename from api/apache-http-legacy-removed.txt
rename to api/system-removed.txt
diff --git a/api/apache-http-legacy-removed.txt b/api/test-current.txt
similarity index 100%
copy from api/apache-http-legacy-removed.txt
copy to api/test-current.txt
diff --git a/api/apache-http-legacy-removed.txt b/api/test-removed.txt
similarity index 100%
copy from api/apache-http-legacy-removed.txt
copy to api/test-removed.txt
diff --git a/art-profile/org.apache.http.legacy.boot.prof.txt b/art-profile
similarity index 100%
rename from art-profile/org.apache.http.legacy.boot.prof.txt
rename to art-profile