`ObjectStorageAssetBinaryAdapter` bridges Studio's asset port to the object storage port through an `ObjectProvider`, which means it compiles whether or not an implementation is on the classpath. None was: app-bootstrap never depended on `:adapter:outbound:objectstorage`, so the provider was always empty and every upload and delete answered STUDIO_UNAVAILABLE with the message "set ca-skeleton.objectstorage.* to enable" — configuration advice for a missing dependency, which sends the reader looking in the wrong place. The AWS SDK BOM has to be imported here as well. The objectstorage module imports it at module scope on purpose (its comment explains: keep the strict locking blast radius contained), and Spring's dependency management does not propagate to consumers, so assembling the runtime here left s3 and netty-nio-client without versions. The grpc module has the same shape and did not surface it because app-bootstrap only consumes grpc from a test configuration; this is the first runtime consumer of that pattern. Lock state regenerated for the SDK's transitive set. ActuatorSecurityHttpTest.healthEndpointIsPermitAll fails on this branch before this change as well; it is untouched here.
233 lines
6.1 KiB
JSON
233 lines
6.1 KiB
JSON
{
|
|
"runtime_compositions": [
|
|
"app-bootstrap"
|
|
],
|
|
"modules": [
|
|
{
|
|
"id": "domain-core",
|
|
"gradle_path": ":domain-core",
|
|
"source_path": "src/domain-core",
|
|
"allowed_dependencies": [],
|
|
"runtime_memberships": [
|
|
"app-bootstrap"
|
|
]
|
|
},
|
|
{
|
|
"id": "shared-contract",
|
|
"gradle_path": ":shared-contract",
|
|
"source_path": "src/shared-contract",
|
|
"allowed_dependencies": [],
|
|
"runtime_memberships": [
|
|
"app-bootstrap"
|
|
]
|
|
},
|
|
{
|
|
"id": "application-core",
|
|
"gradle_path": ":application-core",
|
|
"source_path": "src/application-core",
|
|
"allowed_dependencies": [
|
|
"domain-core",
|
|
"shared-contract"
|
|
],
|
|
"runtime_memberships": [
|
|
"app-bootstrap"
|
|
]
|
|
},
|
|
{
|
|
"id": "adapter-outbound-support",
|
|
"gradle_path": ":adapter:outbound:support",
|
|
"source_path": "src/adapter/outbound/support",
|
|
"allowed_dependencies": [
|
|
"domain-core",
|
|
"application-core",
|
|
"shared-contract"
|
|
],
|
|
"runtime_memberships": [
|
|
"app-bootstrap"
|
|
]
|
|
},
|
|
{
|
|
"id": "adapter-outbound-persistence-jpa",
|
|
"gradle_path": ":adapter:outbound:persistence-jpa",
|
|
"source_path": "src/adapter/outbound/persistence-jpa",
|
|
"allowed_dependencies": [
|
|
"domain-core",
|
|
"application-core",
|
|
"shared-contract"
|
|
],
|
|
"runtime_memberships": [
|
|
"app-bootstrap"
|
|
]
|
|
},
|
|
{
|
|
"id": "adapter-outbound-persistence-mongo",
|
|
"gradle_path": ":adapter:outbound:persistence-mongo",
|
|
"source_path": "src/adapter/outbound/persistence-mongo",
|
|
"allowed_dependencies": [
|
|
"application-core",
|
|
"shared-contract"
|
|
],
|
|
"runtime_memberships": []
|
|
},
|
|
{
|
|
"id": "adapter-outbound-identifier",
|
|
"gradle_path": ":adapter:outbound:identifier",
|
|
"source_path": "src/adapter/outbound/identifier",
|
|
"allowed_dependencies": [
|
|
"domain-core",
|
|
"application-core"
|
|
],
|
|
"runtime_memberships": [
|
|
"app-bootstrap"
|
|
]
|
|
},
|
|
{
|
|
"id": "adapter-outbound-fileserver",
|
|
"gradle_path": ":adapter:outbound:fileserver",
|
|
"source_path": "src/adapter/outbound/fileserver",
|
|
"allowed_dependencies": [
|
|
"application-core",
|
|
"shared-contract"
|
|
],
|
|
"runtime_memberships": [
|
|
"app-bootstrap"
|
|
]
|
|
},
|
|
{
|
|
"id": "adapter-outbound-objectstorage",
|
|
"gradle_path": ":adapter:outbound:objectstorage",
|
|
"source_path": "src/adapter/outbound/objectstorage",
|
|
"allowed_dependencies": [
|
|
"application-core",
|
|
"shared-contract"
|
|
],
|
|
"runtime_memberships": []
|
|
},
|
|
{
|
|
"id": "adapter-outbound-cache-redis",
|
|
"gradle_path": ":adapter:outbound:cache-redis",
|
|
"source_path": "src/adapter/outbound/cache-redis",
|
|
"allowed_dependencies": [
|
|
"domain-core",
|
|
"application-core",
|
|
"shared-contract",
|
|
"adapter-outbound-support"
|
|
],
|
|
"runtime_memberships": [
|
|
"app-bootstrap"
|
|
]
|
|
},
|
|
{
|
|
"id": "adapter-outbound-httpclient",
|
|
"gradle_path": ":adapter:outbound:httpclient",
|
|
"source_path": "src/adapter/outbound/httpclient",
|
|
"allowed_dependencies": [
|
|
"domain-core",
|
|
"application-core",
|
|
"shared-contract",
|
|
"adapter-outbound-support"
|
|
],
|
|
"runtime_memberships": [
|
|
"app-bootstrap"
|
|
]
|
|
},
|
|
{
|
|
"id": "adapter-outbound-messaging",
|
|
"gradle_path": ":adapter:outbound:messaging",
|
|
"source_path": "src/adapter/outbound/messaging",
|
|
"allowed_dependencies": [
|
|
"domain-core",
|
|
"application-core",
|
|
"shared-contract",
|
|
"adapter-outbound-support"
|
|
],
|
|
"runtime_memberships": [
|
|
"app-bootstrap"
|
|
]
|
|
},
|
|
{
|
|
"id": "adapter-outbound-notification",
|
|
"gradle_path": ":adapter:outbound:notification",
|
|
"source_path": "src/adapter/outbound/notification",
|
|
"allowed_dependencies": [
|
|
"domain-core",
|
|
"application-core",
|
|
"shared-contract",
|
|
"adapter-outbound-support"
|
|
],
|
|
"runtime_memberships": [
|
|
"app-bootstrap"
|
|
]
|
|
},
|
|
{
|
|
"id": "adapter-inbound-web",
|
|
"gradle_path": ":adapter:inbound:web",
|
|
"source_path": "src/adapter/inbound/web",
|
|
"allowed_dependencies": [
|
|
"domain-core",
|
|
"application-core",
|
|
"shared-contract"
|
|
],
|
|
"runtime_memberships": [
|
|
"app-bootstrap"
|
|
]
|
|
},
|
|
{
|
|
"id": "adapter-inbound-grpc",
|
|
"gradle_path": ":adapter:inbound:grpc",
|
|
"source_path": "src/adapter/inbound/grpc",
|
|
"allowed_dependencies": [
|
|
"domain-core",
|
|
"application-core",
|
|
"shared-contract"
|
|
],
|
|
"runtime_memberships": []
|
|
},
|
|
{
|
|
"id": "adapter-inbound-graphql",
|
|
"gradle_path": ":adapter:inbound:graphql",
|
|
"source_path": "src/adapter/inbound/graphql",
|
|
"allowed_dependencies": [
|
|
"domain-core",
|
|
"application-core",
|
|
"shared-contract"
|
|
],
|
|
"runtime_memberships": []
|
|
},
|
|
{
|
|
"id": "adapter-inbound-websocket",
|
|
"gradle_path": ":adapter:inbound:websocket",
|
|
"source_path": "src/adapter/inbound/websocket",
|
|
"allowed_dependencies": [
|
|
"domain-core",
|
|
"application-core",
|
|
"shared-contract"
|
|
],
|
|
"runtime_memberships": []
|
|
},
|
|
{
|
|
"id": "app-bootstrap",
|
|
"gradle_path": ":app-bootstrap",
|
|
"source_path": "src/app-bootstrap",
|
|
"allowed_dependencies": [
|
|
"domain-core",
|
|
"application-core",
|
|
"adapter-outbound-persistence-jpa",
|
|
"adapter-outbound-support",
|
|
"adapter-outbound-messaging",
|
|
"adapter-outbound-cache-redis",
|
|
"adapter-outbound-notification",
|
|
"adapter-outbound-fileserver",
|
|
"adapter-outbound-httpclient",
|
|
"adapter-outbound-identifier",
|
|
"adapter-outbound-objectstorage",
|
|
"adapter-inbound-web",
|
|
"shared-contract"
|
|
],
|
|
"runtime_memberships": [
|
|
"app-bootstrap"
|
|
]
|
|
}
|
|
]
|
|
}
|