refactor: adapter 구현중..
This commit is contained in:
@@ -27,7 +27,7 @@ Therefore the design's 19 library modules become **package boundaries inside the
|
||||
| Design module | Repository home | Reason |
|
||||
|---|---|---|
|
||||
| `httpclient-spring-boot-starter` | `:app-bootstrap` (`dev.caskeleton.bootstrap.autoconfigure.httpclient`) | This repository's composition root owns wiring and canonical activation; an adapter leaf must not auto-configure itself. |
|
||||
| `httpclient-testkit` | `:adapter:outbound:httpclient` `src/test/java/**/testkit` | The design forbids production modules depending on the testkit; a test source set gives the same guarantee without a new Gradle project. |
|
||||
| `httpclient-testkit` | `:adapter:outbound:httpclient` `src/testkit/java/**/testkit` | The design forbids production modules depending on the testkit; a source set whose dependencies are declared only on the test configurations gives the same guarantee without a new Gradle project. It is its own source set rather than part of `test` because three lanes consume it — `test`, `httpClientPerformanceTest` and `jmh` — and reaching into `sourceSets.test.output` from `jmh` compiled under Gradle but could not be modelled by an IDE, which classifies a source set as test source only when a `Test` task runs its output and forbids main source from reading test source. `PlatformClasses` excludes the source set's output so the boundary rules keep meaning production classes. |
|
||||
|
||||
The package boundary is enforced by ArchUnit rules (`PublicApiArchitectureTest`,
|
||||
`HttpClientModuleBoundaryTest`) that reproduce the design's module dependency table.
|
||||
@@ -56,7 +56,7 @@ Root package: `io.backend.skeleton.httpclient` → `dev.caskeleton.adapter.outbo
|
||||
| `httpclient-spring7-service-groups` | `…httpclient.spring7` | `…outbound.httpclient.spring7` |
|
||||
| `httpclient-jetty-http3-experimental` | `…httpclient.http3` | `…outbound.httpclient.http3` |
|
||||
| `httpclient-spring-boot-starter` | `…httpclient.autoconfigure` | `dev.caskeleton.bootstrap.autoconfigure.httpclient` |
|
||||
| `httpclient-testkit` | `…httpclient.testkit` | `…outbound.httpclient.testkit` (test source set) |
|
||||
| `httpclient-testkit` | `…httpclient.testkit` | `…outbound.httpclient.testkit` (`testkit` source set) |
|
||||
|
||||
## 3. Other deliberate substitutions
|
||||
|
||||
|
||||
@@ -2698,7 +2698,11 @@ env_keys:
|
||||
allowed_values: null
|
||||
classification: sensitive-config
|
||||
required: false
|
||||
required_when: app.redis.mode=sentinel
|
||||
# Applied only when present: RedisTopologyClientFactory sets the sentinel credentials provider
|
||||
# through ifPresent, so a Sentinel deployment whose sentinels accept unauthenticated discovery
|
||||
# starts without it. The unconditional "app.redis.mode=sentinel" this used to declare was a
|
||||
# requirement the runtime never enforced.
|
||||
required_when: app.redis.mode=sentinel and the sentinels require authentication
|
||||
reload_policy: restart-only
|
||||
owner_branch: redis-optionality-and-composition
|
||||
validation: nonblank_when_required
|
||||
@@ -2724,11 +2728,13 @@ env_keys:
|
||||
property: app.redis.sentinel.nodes
|
||||
owner_module: adapter-outbound-cache-redis
|
||||
type: csv
|
||||
default: null
|
||||
default: app.redis.nodes
|
||||
allowed_values: null
|
||||
classification: public-config
|
||||
required: false
|
||||
required_when: app.redis.mode=sentinel
|
||||
# Falls back to app.redis.nodes by design, so a deployment that points nodes at its sentinels
|
||||
# and says nothing else is the common case rather than a misconfiguration.
|
||||
required_when: app.redis.mode=sentinel and app.redis.nodes does not list the sentinels
|
||||
reload_policy: restart-only
|
||||
owner_branch: redis-optionality-and-composition
|
||||
validation: csv_nonempty
|
||||
@@ -2743,7 +2749,9 @@ env_keys:
|
||||
allowed_values: null
|
||||
classification: public-config
|
||||
required: false
|
||||
required_when: app.redis.tls.enabled=true
|
||||
# A key manager is configured only when this is present. Ordinary one-way TLS needs no client
|
||||
# certificate, so requiring one whenever TLS is on was a claim the runtime never made.
|
||||
required_when: app.redis.tls.enabled=true and the server requires mutual TLS
|
||||
reload_policy: restart-only
|
||||
owner_branch: redis-optionality-and-composition
|
||||
validation: nonblank_when_required
|
||||
@@ -2758,7 +2766,10 @@ env_keys:
|
||||
allowed_values: null
|
||||
classification: sensitive-config
|
||||
required: false
|
||||
required_when: app.redis.tls.enabled=true
|
||||
# A relationship between two settings rather than a switch: a client certificate without its
|
||||
# key cannot build a key manager. Enforced in RedisSdkSettings.validate and covered by
|
||||
# RedisSdkSettingsTest, which is where the registry's prose conditions are proven.
|
||||
required_when: app.redis.tls.client-certificate-resource is configured
|
||||
reload_policy: restart-only
|
||||
owner_branch: redis-optionality-and-composition
|
||||
validation: nonblank_when_required
|
||||
@@ -2804,7 +2815,9 @@ env_keys:
|
||||
allowed_values: null
|
||||
classification: public-config
|
||||
required: false
|
||||
required_when: app.redis.tls.enabled=true
|
||||
# A trust manager is installed only when this is present; otherwise the JDK default trust
|
||||
# anchors apply, which is enough for a server certificate from a public CA.
|
||||
required_when: app.redis.tls.enabled=true and the server certificate is not publicly trusted
|
||||
reload_policy: restart-only
|
||||
owner_branch: redis-optionality-and-composition
|
||||
validation: nonblank_when_required
|
||||
|
||||
Reference in New Issue
Block a user