Skip to content

Commit

Permalink
Make metadata classes internal (cashapp#3310)
Browse files Browse the repository at this point in the history
* Make metadata classes internal

* Refactor and make more metadata internal
  • Loading branch information
adrw authored Jun 17, 2024
1 parent c139ca9 commit c95b30c
Show file tree
Hide file tree
Showing 35 changed files with 168 additions and 234 deletions.
1 change: 0 additions & 1 deletion build.gradle.kts
Original file line number Diff line number Diff line change
Expand Up @@ -236,7 +236,6 @@ subprojects {
exceptionFormat = TestExceptionFormat.FULL
showStandardStreams = false
}
dependsOn(":startRedis")
}

tasks.withType<Detekt> {
Expand Down
79 changes: 10 additions & 69 deletions misk-admin/api/misk-admin.api
Original file line number Diff line number Diff line change
Expand Up @@ -204,9 +204,6 @@ public final class com/squareup/protos/test/parsing/Warehouse$Builder : com/squa
public abstract interface annotation class misk/web/dashboard/AdminDashboard : java/lang/annotation/Annotation {
}

public abstract interface annotation class misk/web/dashboard/AdminDashboardAccess : java/lang/annotation/Annotation {
}

public final class misk/web/dashboard/AdminDashboardModule : misk/inject/KAbstractModule {
public fun <init> (Z)V
public fun <init> (ZLmisk/web/metadata/config/ConfigMetadataAction$ConfigTabMode;)V
Expand All @@ -221,12 +218,6 @@ public final class misk/web/dashboard/BaseDashboardModule : misk/inject/KAbstrac
public fun <init> (Z)V
}

public final class misk/web/dashboard/ConfigDashboardTabModule : misk/inject/KAbstractModule {
public fun <init> (Z)V
public fun <init> (ZLmisk/web/metadata/config/ConfigMetadataAction$ConfigTabMode;)V
public synthetic fun <init> (ZLmisk/web/metadata/config/ConfigMetadataAction$ConfigTabMode;ILkotlin/jvm/internal/DefaultConstructorMarker;)V
}

public final class misk/web/dashboard/DashboardHomeUrl : misk/web/dashboard/ValidWebEntry {
public fun <init> (Ljava/lang/String;Ljava/lang/String;)V
public fun <init> (Ljava/lang/String;Ljava/lang/String;Lkotlin/reflect/KClass;)V
Expand Down Expand Up @@ -409,10 +400,6 @@ public final class misk/web/dashboard/DashboardTheme {
public fun toString ()Ljava/lang/String;
}

public final class misk/web/dashboard/DatabaseDashboardTabModule : misk/inject/KAbstractModule {
public fun <init> (Z)V
}

public final class misk/web/dashboard/EnvironmentToColorLookup {
public fun <init> (Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;)V
public final fun component1 ()Ljava/lang/String;
Expand Down Expand Up @@ -467,7 +454,7 @@ public final class misk/web/dashboard/MiskWebTabIndexAction : misk/web/actions/W
public static final field Companion Lmisk/web/dashboard/MiskWebTabIndexAction$Companion;
public static final field PATH Ljava/lang/String;
public fun <init> (Ljava/util/List;)V
public final fun get (Ljava/lang/String;Ljava/lang/String;)Ljava/lang/String;
public final fun get (Ljava/lang/String;)Ljava/lang/String;
}

public final class misk/web/dashboard/MiskWebTabIndexAction$Companion {
Expand Down Expand Up @@ -505,10 +492,6 @@ public final class misk/web/dashboard/MiskWebTheme$Companion {
public final fun getDEFAULT_THEME ()Lmisk/web/dashboard/MiskWebTheme;
}

public final class misk/web/dashboard/WebActionsDashboardTabModule : misk/inject/KAbstractModule {
public fun <init> (Z)V
}

public class misk/web/dashboard/WebTab : misk/web/dashboard/ValidWebEntry {
public fun <init> (Ljava/lang/String;Ljava/lang/String;)V
public fun <init> (Ljava/lang/String;Ljava/lang/String;Ljava/util/Set;)V
Expand Down Expand Up @@ -686,19 +669,14 @@ public final class misk/web/metadata/all/AllMetadataTabAction : misk/web/actions
public final class misk/web/metadata/all/AllMetadataTabAction$Companion {
}

public final class misk/web/metadata/config/ConfigMetadata : misk/web/metadata/Metadata {
public fun <init> (Ljava/util/Map;)V
public final fun component1 ()Ljava/util/Map;
public final fun copy (Ljava/util/Map;)Lmisk/web/metadata/config/ConfigMetadata;
public static synthetic fun copy$default (Lmisk/web/metadata/config/ConfigMetadata;Ljava/util/Map;ILjava/lang/Object;)Lmisk/web/metadata/config/ConfigMetadata;
public fun equals (Ljava/lang/Object;)Z
public final fun getResources ()Ljava/util/Map;
public fun hashCode ()I
public fun toString ()Ljava/lang/String;
public final class misk/web/metadata/config/ConfigDashboardTabModule : misk/inject/KAbstractModule {
public fun <init> (Z)V
public fun <init> (ZLmisk/web/metadata/config/ConfigMetadataAction$ConfigTabMode;)V
public synthetic fun <init> (ZLmisk/web/metadata/config/ConfigMetadataAction$ConfigTabMode;ILkotlin/jvm/internal/DefaultConstructorMarker;)V
}

public final class misk/web/metadata/config/ConfigMetadataAction : misk/web/actions/WebAction {
public fun <init> (Lcom/google/inject/Provider;)V
public fun <init> ()V
public final fun getAll ()Lmisk/web/metadata/config/ConfigMetadataAction$Response;
}

Expand All @@ -722,32 +700,8 @@ public final class misk/web/metadata/config/ConfigMetadataAction$Response {
public fun toString ()Ljava/lang/String;
}

public final class misk/web/metadata/config/ConfigMetadataProvider : misk/web/metadata/MetadataProvider {
public fun <init> ()V
public synthetic fun get ()Ljava/lang/Object;
public fun get ()Lmisk/web/metadata/config/ConfigMetadata;
public fun getId ()Ljava/lang/String;
}

public final class misk/web/metadata/database/DatabaseHibernateMetadata : misk/web/metadata/Metadata {
public fun <init> (Ljava/util/List;)V
public final fun component1 ()Ljava/util/List;
public final fun copy (Ljava/util/List;)Lmisk/web/metadata/database/DatabaseHibernateMetadata;
public static synthetic fun copy$default (Lmisk/web/metadata/database/DatabaseHibernateMetadata;Ljava/util/List;ILjava/lang/Object;)Lmisk/web/metadata/database/DatabaseHibernateMetadata;
public fun equals (Ljava/lang/Object;)Z
public final fun getHibernate ()Ljava/util/List;
public fun hashCode ()I
public fun toString ()Ljava/lang/String;
}

public final class misk/web/metadata/database/DatabaseHibernateMetadataProvider : misk/web/metadata/MetadataProvider {
public field metadata Ljava/util/List;
public fun <init> ()V
public synthetic fun get ()Ljava/lang/Object;
public fun get ()Lmisk/web/metadata/database/DatabaseHibernateMetadata;
public fun getId ()Ljava/lang/String;
public final fun getMetadata ()Ljava/util/List;
public final fun setMetadata (Ljava/util/List;)V
public final class misk/web/metadata/database/DatabaseDashboardTabModule : misk/inject/KAbstractModule {
public fun <init> (Z)V
}

public abstract interface class misk/web/metadata/database/DatabaseQueryFunctionMetadata {
Expand Down Expand Up @@ -920,21 +874,8 @@ public final class misk/web/metadata/jvm/JvmMetadataAction$JvmRuntimeResponse$Co
public final fun create (Ljava/lang/management/RuntimeMXBean;)Lmisk/web/metadata/jvm/JvmMetadataAction$JvmRuntimeResponse;
}

public final class misk/web/metadata/webaction/WebActionMetadataAction : misk/web/actions/WebAction {
public fun <init> (Lcom/google/inject/Provider;)V
public final fun getAll ()Lmisk/web/metadata/webaction/WebActionMetadataAction$Response;
public final fun getProvider ()Lcom/google/inject/Provider;
}

public final class misk/web/metadata/webaction/WebActionMetadataAction$Response {
public fun <init> (Ljava/util/List;)V
public final fun component1 ()Ljava/util/List;
public final fun copy (Ljava/util/List;)Lmisk/web/metadata/webaction/WebActionMetadataAction$Response;
public static synthetic fun copy$default (Lmisk/web/metadata/webaction/WebActionMetadataAction$Response;Ljava/util/List;ILjava/lang/Object;)Lmisk/web/metadata/webaction/WebActionMetadataAction$Response;
public fun equals (Ljava/lang/Object;)Z
public final fun getWebActionMetadata ()Ljava/util/List;
public fun hashCode ()I
public fun toString ()Ljava/lang/String;
public final class misk/web/metadata/webaction/WebActionsDashboardTabModule : misk/inject/KAbstractModule {
public fun <init> (Z)V
}

public final class misk/web/v2/DashboardHotwireTabAction : misk/web/actions/WebAction {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,10 @@ package misk.web.dashboard
import jakarta.inject.Qualifier
import misk.inject.KAbstractModule
import misk.security.authz.AccessAnnotationEntry
import misk.web.metadata.config.ConfigDashboardTabModule
import misk.web.metadata.config.ConfigMetadataAction
import misk.web.metadata.database.DatabaseDashboardTabModule
import misk.web.metadata.webaction.WebActionsDashboardTabModule
import misk.web.v2.NavbarModule

/**
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -28,7 +28,7 @@ class MiskWebTabIndexAction @Inject constructor(
@Get("$PATH/{slug}/{rest:.*}")
@ResponseContentType(MediaTypes.TEXT_HTML)
@AdminDashboardAccess
fun get(@PathParam slug: String?, @PathParam rest: String?): String {
fun get(@PathParam slug: String?): String {
val dashboardTab = dashboardTabs.firstOrNull { slug == it.slug }
?: throw NotFoundException("No Misk-Web tab found for slug: $slug")
// TODO remove this hack when new Web Actions tab lands and old ones removed, v1 and v2 are in the same web-actions tab
Expand Down

This file was deleted.

Original file line number Diff line number Diff line change
Expand Up @@ -14,6 +14,8 @@ import misk.web.metadata.database.DatabaseHibernateMetadataProvider
import misk.web.metadata.webaction.WebActionsMetadataProvider

/**
* This exposes extensive metadata about your Misk application via API and admin dashboard.
*
* To install and use, ensure you also add an AccessAnnotationEntry to grant endpoint access.
*
* ```kotlin
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -35,7 +35,7 @@ class AllMetadataTabAction @Inject constructor(
@QueryParam q: String?
): String = dashboardPageLayout
.newBuilder()
.build { appName, _, _ ->
.build { _, _, _ ->
val allMetadata = allMetadataAction.getAll("all").all
val metadata = allMetadataAction.getAll(q).all.values.firstOrNull()

Expand All @@ -56,7 +56,7 @@ class AllMetadataTabAction @Inject constructor(
+""
}

allMetadata.keys.sorted().forEachIndexed { index, key ->
allMetadata.keys.sorted().forEach { key ->
option {
if (q == key) {
selected = true
Expand Down
Original file line number Diff line number Diff line change
@@ -1,12 +1,12 @@
package misk.web.dashboard
package misk.web.metadata.config

import misk.inject.KAbstractModule
import misk.jvm.JvmManagementFactoryModule
import misk.web.WebActionModule
import misk.web.metadata.config.ConfigMetadata
import misk.web.metadata.config.ConfigMetadataAction
import misk.web.dashboard.AdminDashboard
import misk.web.dashboard.AdminDashboardAccess
import misk.web.dashboard.DashboardModule
import misk.web.metadata.config.ConfigMetadataAction.ConfigTabMode.SAFE
import misk.web.metadata.config.ConfigMetadataProvider

/**
* Installs Config dashboard tab which shows the raw config inputs
Expand All @@ -27,13 +27,15 @@ class ConfigDashboardTabModule @JvmOverloads constructor(
bind<ConfigMetadata>().toProvider(ConfigMetadataProvider())
install(WebActionModule.create<ConfigMetadataAction>())

install(DashboardModule.createMiskWebTab<AdminDashboard, AdminDashboardAccess>(
isDevelopment = isDevelopment,
slug = "config",
urlPathPrefix = "/_admin/config/",
developmentWebProxyUrl = "http://localhost:3200/",
menuLabel = "Config",
menuCategory = "Container Admin"
))
install(
DashboardModule.createMiskWebTab<AdminDashboard, AdminDashboardAccess>(
isDevelopment = isDevelopment,
slug = "config",
urlPathPrefix = "/_admin/config/",
developmentWebProxyUrl = "http://localhost:3200/",
menuLabel = "Config",
menuCategory = "Container Admin"
)
)
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -9,11 +9,11 @@ import misk.web.metadata.MetadataProvider
import misk.web.metadata.jvm.JvmMetadataAction
import wisp.deployment.Deployment

data class ConfigMetadata(
internal data class ConfigMetadata(
val resources: Map<String, String?>
) : Metadata(metadata = resources, prettyPrint = resources.toString())

class ConfigMetadataProvider : MetadataProvider<ConfigMetadata> {
internal class ConfigMetadataProvider : MetadataProvider<ConfigMetadata> {
@Inject @AppName private lateinit var appName: String
@Inject private lateinit var deployment: Deployment
@Inject private lateinit var config: wisp.config.Config
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -11,9 +11,9 @@ import misk.web.dashboard.AdminDashboardAccess
import misk.web.mediatype.MediaTypes

@Singleton
class ConfigMetadataAction @Inject constructor(
private val metadataProvider: Provider<ConfigMetadata>
) : WebAction {
class ConfigMetadataAction @Inject constructor() : WebAction {
@Inject private lateinit var metadataProvider: Provider<ConfigMetadata>

@Get("/api/v1/config/metadata")
@RequestContentType(MediaTypes.APPLICATION_JSON)
@ResponseContentType(MediaTypes.APPLICATION_JSON)
Expand Down
Original file line number Diff line number Diff line change
@@ -1,11 +1,11 @@
package misk.web.dashboard
package misk.web.metadata.database

import misk.inject.KAbstractModule
import misk.security.authz.AccessAnnotationEntry
import misk.web.WebActionModule
import misk.web.metadata.database.DatabaseQueryMetadata
import misk.web.metadata.database.DatabaseQueryMetadataAction
import misk.web.metadata.database.NoAdminDashboardDatabaseAccess
import misk.web.dashboard.AdminDashboard
import misk.web.dashboard.AdminDashboardAccess
import misk.web.dashboard.DashboardModule

/**
* Installs Database dashboard tab which allows querying the database from a UI form.
Expand All @@ -16,14 +16,16 @@ class DatabaseDashboardTabModule(private val isDevelopment: Boolean): KAbstractM
newMultibinder<DatabaseQueryMetadata>()
install(WebActionModule.create<DatabaseQueryMetadataAction>())

install(DashboardModule.createMiskWebTab<AdminDashboard, AdminDashboardAccess>(
isDevelopment = isDevelopment,
slug = "database",
urlPathPrefix = "/_admin/database/",
developmentWebProxyUrl = "http://localhost:3202/",
menuLabel = "Database",
menuCategory = "Container Admin"
))
install(
DashboardModule.createMiskWebTab<AdminDashboard, AdminDashboardAccess>(
isDevelopment = isDevelopment,
slug = "database",
urlPathPrefix = "/_admin/database/",
developmentWebProxyUrl = "http://localhost:3202/",
menuLabel = "Database",
menuCategory = "Container Admin"
)
)

// Default access that doesn't allow any queries for unconfigured DbEntities
multibind<AccessAnnotationEntry>().toInstance(
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -7,13 +7,13 @@ import misk.web.metadata.toFormattedJson
import wisp.moshi.adapter
import wisp.moshi.defaultKotlinMoshi

data class DatabaseHibernateMetadata(
internal data class DatabaseHibernateMetadata(
val hibernate: List<DatabaseQueryMetadata>
) : Metadata(metadata = hibernate, prettyPrint = defaultKotlinMoshi
.adapter<List<DatabaseQueryMetadata>>()
.toFormattedJson(hibernate))

class DatabaseHibernateMetadataProvider : MetadataProvider<DatabaseHibernateMetadata> {
internal class DatabaseHibernateMetadataProvider : MetadataProvider<DatabaseHibernateMetadata> {
@Inject lateinit var metadata: List<DatabaseQueryMetadata>

override val id: String = "database-hibernate"
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -4,10 +4,10 @@ import misk.web.Get
import misk.web.RequestContentType
import misk.web.ResponseContentType
import misk.web.actions.WebAction
import misk.web.dashboard.AdminDashboardAccess
import misk.web.mediatype.MediaTypes
import jakarta.inject.Inject
import jakarta.inject.Singleton
import misk.web.dashboard.AdminDashboardAccess

/** Display available queries and their types */
@Singleton
Expand Down
Loading

0 comments on commit c95b30c

Please sign in to comment.