Skip to content

Commit

Permalink
Merge branch 'master' into errata
Browse files Browse the repository at this point in the history
  • Loading branch information
prbprbprb authored Oct 15, 2024
2 parents d7fbb86 + 66c8e95 commit 595e575
Show file tree
Hide file tree
Showing 8 changed files with 94 additions and 60 deletions.
55 changes: 29 additions & 26 deletions android/build.gradle
Original file line number Diff line number Diff line change
Expand Up @@ -67,7 +67,6 @@ if (androidSdkInstalled) {
'-D_XOPEN_SOURCE=700',
'-Wno-unused-parameter'
targets 'conscrypt_jni'
version androidCmakeVersion
}
}
ndk {
Expand Down Expand Up @@ -102,6 +101,12 @@ if (androidSdkInstalled) {
lintOptions {
lintConfig file('lint.xml')
}

publishing {
singleVariant("release") {
withSourcesJar()
}
}
}

configurations {
Expand All @@ -128,45 +133,43 @@ if (androidSdkInstalled) {
compileOnly project(':conscrypt-constants')
}

def configureJavaDocs = tasks.register("configureJavadocs") {
dependsOn configurations.publicApiDocs
doLast {
javadocs.options.docletpath = configurations.publicApiDocs.files as List
}
}

def javadocs = tasks.register("javadocs", Javadoc) {
dependsOn configureJavadocs
dependsOn configurations.publicApiDocs
source = android.sourceSets.main.java.srcDirs
classpath += project.files(android.getBootClasspath().join(File.pathSeparator)) + project(':conscrypt-android-stub').sourceSets.main.output
// TODO(nmittler): Fix the javadoc errors.
failOnError false
classpath += project.files(android.getBootClasspath().join(File.pathSeparator)) +
project(':conscrypt-android-stub').sourceSets.main.output
options {
showFromPublic()
encoding = 'UTF-8'
links "https://docs.oracle.com/javase/7/docs/api/"
// TODO(prb): Update doclet to Java 11.
// doclet = "org.conscrypt.doclet.FilterDoclet"
doclet = "org.conscrypt.doclet.FilterDoclet"
links = ['https://docs.oracle.com/en/java/javase/21/docs/api/java.base/']
docletpath = configurations.publicApiDocs.files as List
}
failOnError false

doLast {
copy {
from "$rootDir/api-doclet/src/main/resources/styles.css"
into "$buildDir/docs/javadoc"
}
}
}

def javadocsJar = tasks.register("javadocsJar", Jar) {
dependsOn javadocs
classifier = 'javadoc'
archiveClassifier = 'javadoc'
from {
javadocs.get().destinationDir
}
}

def sourcesJar = tasks.register("sourcesJar", Jar) {
classifier = 'sources'
from android.sourceSets.main.java.srcDirs
}

apply from: "$rootDir/gradle/publishing.gradle"
publishing.publications.maven {
from components.android
artifact sourcesJar.get()
artifact javadocsJar.get()
afterEvaluate {
apply from: "$rootDir/gradle/publishing.gradle"
publishing.publications.maven {
pom.packaging = 'aar'
from components.release
artifact javadocsJar.get()
}
}
} else {
logger.warn('Android SDK has not been detected. The Android module will not be built.')
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -22,6 +22,7 @@
import java.net.UnknownHostException;
import javax.net.ssl.SSLSocketFactory;

@Internal
public abstract class BaseOpenSSLSocketAdapterFactory extends SSLSocketFactory {

private final OpenSSLSocketFactoryImpl delegate;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -23,6 +23,7 @@
* A {@link javax.net.ssl.SSLSocketFactory} which creates unbundled conscrypt SSLSockets and wraps
* them into KitKat (and newer) platform SSLSockets.
*/
@Internal
public class KitKatPlatformOpenSSLSocketAdapterFactory extends BaseOpenSSLSocketAdapterFactory {

public KitKatPlatformOpenSSLSocketAdapterFactory(OpenSSLSocketFactoryImpl delegate) {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -41,6 +41,7 @@
* It delegates all public methods in Socket, SSLSocket, and OpenSSLSocket from
* KK.
*/
@Internal
public class KitKatPlatformOpenSSLSocketImplAdapter
extends com.android.org.conscrypt.OpenSSLSocketImpl {

Expand Down
52 changes: 50 additions & 2 deletions api-doclet/src/main/kotlin/org/conscrypt/doclet/ClassInfo.kt
Original file line number Diff line number Diff line change
Expand Up @@ -18,9 +18,12 @@ package org.conscrypt.doclet

import org.conscrypt.doclet.FilterDoclet.Companion.classIndex
import java.nio.file.Paths
import java.util.Locale
import javax.lang.model.element.Element
import javax.lang.model.element.ExecutableElement
import javax.lang.model.element.Modifier
import javax.lang.model.element.TypeElement
import javax.lang.model.type.TypeMirror


data class ClassInfo(val element: TypeElement) : Comparable<ClassInfo> {
Expand All @@ -36,6 +39,50 @@ data class ClassInfo(val element: TypeElement) : Comparable<ClassInfo> {
.map(classIndex::get)
.sorted()


private fun outerClass() = if (isInnerClass) {
classIndex.get(element.enclosingElement as TypeElement)
} else {
null
}

fun innerName(): String = if (isInnerClass) {
"${outerClass()?.innerName()}.$simpleName"
} else {
simpleName
}

private fun signature(): String {
val visibleModifiers = element.modifiers
.map(Modifier::toString)
.toMutableSet()

val kind = element.kind.toString().lowercase(Locale.getDefault())
if (kind == "interface") {
visibleModifiers.remove("abstract")
}

val modifierString = visibleModifiers.joinToString(" ")

val superName = superDisplayName(element.superclass)

val interfaces = element.interfaces
.joinToString(", ")
.prefixIfNotEmpty(" implements ")

return "$modifierString $kind ${innerName()}$superName$interfaces"
}

private fun superDisplayName(mirror: TypeMirror): String {
val name = mirror.toString()
return when {
name == "none" || name == "java.lang.Object" -> ""
name.startsWith("java.lang.Enum") -> ""
else -> " extends $mirror "
}
}


override fun compareTo(other: ClassInfo) = qualifiedName.compareTo(other.qualifiedName)

private fun description() = html {
Expand Down Expand Up @@ -136,7 +183,7 @@ data class ClassInfo(val element: TypeElement) : Comparable<ClassInfo> {
fun generateHtml() = html {
div("package-name") { text("Package: $packageName") }
h1(simpleName)
pre(element.signature(), "class-signature")
pre(signature(), "class-signature")

compose {
description() +
Expand All @@ -149,6 +196,7 @@ data class ClassInfo(val element: TypeElement) : Comparable<ClassInfo> {

private fun relativePath(from: String, to: String) =
Paths.get(from).parent.relativize(Paths.get(to)).toString()

}

private fun String.prefixIfNotEmpty(prefix: String): String
= if (isNotEmpty()) prefix + this else this
24 changes: 0 additions & 24 deletions api-doclet/src/main/kotlin/org/conscrypt/doclet/ElementUtils.kt
Original file line number Diff line number Diff line change
Expand Up @@ -17,7 +17,6 @@
package org.conscrypt.doclet

import com.sun.source.doctree.UnknownBlockTagTree
import java.util.Locale
import javax.lang.model.element.Element
import javax.lang.model.element.ElementKind
import javax.lang.model.element.ExecutableElement
Expand Down Expand Up @@ -90,34 +89,11 @@ fun formatType(typeMirror: TypeMirror): String {
}
}

fun TypeElement.signature(): String {
val modifiers = modifiers.joinToString(" ")
val kind = this.kind.toString().lowercase(Locale.getDefault())

val superName = superDisplayName(superclass)

val interfaces = interfaces
.joinToString(", ")
.prefixIfNotEmpty(" implements ")

return "$modifiers $kind $simpleName$superName$interfaces"
}

fun TypeElement.baseFileName(): String =
if (enclosingElement.isType())
(enclosingElement as TypeElement).baseFileName() + "." + simpleName
else
qualifiedName.toString().replace('.', '/')

fun superDisplayName(mirror: TypeMirror): String {
return when (mirror.toString()) {
"none", "java.lang.Object" -> ""
else -> " extends $mirror "
}
}

private fun String.prefixIfNotEmpty(prefix: String): String
= if (isNotEmpty()) prefix + this else this

private fun String.suffixIfNotEmpty(prefix: String): String
= if (isNotEmpty()) this + prefix else this
Original file line number Diff line number Diff line change
Expand Up @@ -42,7 +42,7 @@ class FilterDoclet : Doclet {
lateinit var typeUtils: Types
lateinit var outputPath: Path
lateinit var cssPath: Path
var baseUrl: String = "https://docs.oracle.com/javase/8/docs/api/"
var baseUrl: String = "https://docs.oracle.com/en/java/javase/21/docs/api/java.base/"
const val CSS_FILENAME = "styles.css"
var outputDir = "."
var docTitle = "DOC TITLE"
Expand Down Expand Up @@ -103,11 +103,11 @@ class FilterDoclet : Doclet {
private fun generateClassFile(classInfo: ClassInfo) {
val classFilePath = outputPath.resolve(classInfo.fileName)
Files.createDirectories(classFilePath.parent)
val simpleName = classInfo.simpleName
val name = classInfo.innerName()

html {
body(
title = "$simpleName - conscrypt-openjdk API",
title = "$name - Conscrypt API",
stylesheet = relativePath(classFilePath, cssPath),
) {
compose {
Expand Down
14 changes: 9 additions & 5 deletions openjdk/build.gradle
Original file line number Diff line number Diff line change
Expand Up @@ -183,7 +183,7 @@ tasks.register("platformJar", Jar) {
}

tasks.register("testJar", ShadowJar) {
classifier = 'tests'
archiveClassifier = 'tests'
configurations = [project.configurations.testRuntimeClasspath]
from sourceSets.test.output
}
Expand Down Expand Up @@ -344,10 +344,14 @@ jacocoTestReport {
}

javadoc {
dependsOn(configurations.publicApiDocs)
options.showFromPublic()
options.doclet = "org.conscrypt.doclet.FilterDoclet"
options.docletpath = configurations.publicApiDocs.files as List
dependsOn configurations.publicApiDocs
options {
showFromPublic()
encoding = 'UTF-8'
doclet = 'org.conscrypt.doclet.FilterDoclet'
links = ['https://docs.oracle.com/en/java/javase/21/docs/api/java.base/']
docletpath = configurations.publicApiDocs.files as List
}
failOnError false

doLast {
Expand Down

0 comments on commit 595e575

Please sign in to comment.