spring-runtime-mcp 0.2.0__py3-none-any.whl
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- spring_runtime_mcp/__init__.py +3 -0
- spring_runtime_mcp/adapters/__init__.py +1 -0
- spring_runtime_mcp/adapters/beans.py +159 -0
- spring_runtime_mcp/adapters/conditions.py +333 -0
- spring_runtime_mcp/adapters/config.py +295 -0
- spring_runtime_mcp/adapters/drift.py +790 -0
- spring_runtime_mcp/adapters/health.py +164 -0
- spring_runtime_mcp/adapters/mapping_predicates.py +201 -0
- spring_runtime_mcp/adapters/mappings.py +294 -0
- spring_runtime_mcp/adapters/migrations.py +373 -0
- spring_runtime_mcp/adapters/openapi.py +683 -0
- spring_runtime_mcp/adapters/source_catalog.py +119 -0
- spring_runtime_mcp/adapters/startup.py +202 -0
- spring_runtime_mcp/analyzers/__init__.py +1 -0
- spring_runtime_mcp/analyzers/bean_graph.py +172 -0
- spring_runtime_mcp/analyzers/condition_failures.py +359 -0
- spring_runtime_mcp/cli.py +248 -0
- spring_runtime_mcp/contracts/__init__.py +1 -0
- spring_runtime_mcp/contracts/definitions.py +425 -0
- spring_runtime_mcp/diagnostics.py +254 -0
- spring_runtime_mcp/models/__init__.py +1 -0
- spring_runtime_mcp/models/bean_graph.py +77 -0
- spring_runtime_mcp/models/common.py +99 -0
- spring_runtime_mcp/models/conditions.py +56 -0
- spring_runtime_mcp/models/queries.py +140 -0
- spring_runtime_mcp/models/source_catalog.py +35 -0
- spring_runtime_mcp/models/timestamps.py +71 -0
- spring_runtime_mcp/policy/__init__.py +1 -0
- spring_runtime_mcp/policy/configuration.py +32 -0
- spring_runtime_mcp/policy/output_guard.py +117 -0
- spring_runtime_mcp/policy/sanitization.py +616 -0
- spring_runtime_mcp/py.typed +0 -0
- spring_runtime_mcp/replay.py +220 -0
- spring_runtime_mcp/replay_data/bean_graph/README.md +26 -0
- spring_runtime_mcp/replay_data/bean_graph/factory-method/conditions.json +43 -0
- spring_runtime_mcp/replay_data/bean_graph/factory-method/source-catalog.json +54 -0
- spring_runtime_mcp/replay_data/bean_graph/nested-conditions/beans.json +99 -0
- spring_runtime_mcp/replay_data/bean_graph/nested-conditions/conditions.json +25 -0
- spring_runtime_mcp/replay_data/bean_graph/parent-child/beans.json +92 -0
- spring_runtime_mcp/replay_data/bean_graph/shape-metadata.json +32 -0
- spring_runtime_mcp/replay_data/bean_graph/stripe-missing/conditions.json +43 -0
- spring_runtime_mcp/replay_data/bean_graph/stripe-missing/source-catalog.json +54 -0
- spring_runtime_mcp/replay_data/conformance/README.md +41 -0
- spring_runtime_mcp/replay_data/conformance/boot-2.7-servlet/beans.json +92 -0
- spring_runtime_mcp/replay_data/conformance/boot-2.7-servlet/conditions.json +52 -0
- spring_runtime_mcp/replay_data/conformance/boot-2.7-servlet/configprops.json +20 -0
- spring_runtime_mcp/replay_data/conformance/boot-2.7-servlet/env.json +16 -0
- spring_runtime_mcp/replay_data/conformance/boot-2.7-servlet/flyway.json +40 -0
- spring_runtime_mcp/replay_data/conformance/boot-2.7-servlet/health-v2.json +14 -0
- spring_runtime_mcp/replay_data/conformance/boot-2.7-servlet/health-v3.json +38 -0
- spring_runtime_mcp/replay_data/conformance/boot-2.7-servlet/liquibase.json +30 -0
- spring_runtime_mcp/replay_data/conformance/boot-2.7-servlet/mappings.json +40 -0
- spring_runtime_mcp/replay_data/conformance/boot-2.7-servlet/openapi.json +54 -0
- spring_runtime_mcp/replay_data/conformance/boot-2.7-servlet/source-catalog.json +90 -0
- spring_runtime_mcp/replay_data/conformance/boot-2.7-servlet/startup.json +45 -0
- spring_runtime_mcp/replay_data/conformance/boot-3.4-servlet/beans.json +92 -0
- spring_runtime_mcp/replay_data/conformance/boot-3.4-servlet/conditions.json +52 -0
- spring_runtime_mcp/replay_data/conformance/boot-3.4-servlet/configprops.json +20 -0
- spring_runtime_mcp/replay_data/conformance/boot-3.4-servlet/env.json +16 -0
- spring_runtime_mcp/replay_data/conformance/boot-3.4-servlet/flyway.json +40 -0
- spring_runtime_mcp/replay_data/conformance/boot-3.4-servlet/health-v3.json +38 -0
- spring_runtime_mcp/replay_data/conformance/boot-3.4-servlet/liquibase.json +30 -0
- spring_runtime_mcp/replay_data/conformance/boot-3.4-servlet/mappings.json +40 -0
- spring_runtime_mcp/replay_data/conformance/boot-3.4-servlet/openapi.json +54 -0
- spring_runtime_mcp/replay_data/conformance/boot-3.4-servlet/source-catalog.json +90 -0
- spring_runtime_mcp/replay_data/conformance/boot-3.4-servlet/startup.json +45 -0
- spring_runtime_mcp/replay_data/conformance/boot-4.1-webflux/beans.json +92 -0
- spring_runtime_mcp/replay_data/conformance/boot-4.1-webflux/conditions.json +52 -0
- spring_runtime_mcp/replay_data/conformance/boot-4.1-webflux/configprops.json +20 -0
- spring_runtime_mcp/replay_data/conformance/boot-4.1-webflux/env.json +16 -0
- spring_runtime_mcp/replay_data/conformance/boot-4.1-webflux/flyway.json +40 -0
- spring_runtime_mcp/replay_data/conformance/boot-4.1-webflux/health-v3.json +38 -0
- spring_runtime_mcp/replay_data/conformance/boot-4.1-webflux/liquibase.json +30 -0
- spring_runtime_mcp/replay_data/conformance/boot-4.1-webflux/mappings.json +40 -0
- spring_runtime_mcp/replay_data/conformance/boot-4.1-webflux/openapi.json +54 -0
- spring_runtime_mcp/replay_data/conformance/boot-4.1-webflux/servlet-namespace-comparison.json +4 -0
- spring_runtime_mcp/replay_data/conformance/boot-4.1-webflux/source-catalog.json +90 -0
- spring_runtime_mcp/replay_data/conformance/boot-4.1-webflux/startup.json +45 -0
- spring_runtime_mcp/replay_data/conformance/contracts/springboot_analyze_startup.json +62 -0
- spring_runtime_mcp/replay_data/conformance/contracts/springboot_check_migrations.json +63 -0
- spring_runtime_mcp/replay_data/conformance/contracts/springboot_detect_drift.json +64 -0
- spring_runtime_mcp/replay_data/conformance/contracts/springboot_diagnose_health.json +59 -0
- spring_runtime_mcp/replay_data/conformance/contracts/springboot_inspect_beans.json +56 -0
- spring_runtime_mcp/replay_data/conformance/contracts/springboot_inspect_config.json +62 -0
- spring_runtime_mcp/replay_data/conformance/contracts/springboot_search_openapi.json +80 -0
- spring_runtime_mcp/replay_data/conformance/contracts/springboot_verify_mappings.json +58 -0
- spring_runtime_mcp/replay_data/conformance/faults/cases.json +63 -0
- spring_runtime_mcp/replay_data/conformance/faults/health-hidden.expected.json +54 -0
- spring_runtime_mcp/replay_data/conformance/faults/health-hidden.json +3 -0
- spring_runtime_mcp/replay_data/conformance/large/beans-2500.json +22506 -0
- spring_runtime_mcp/replay_data/conformance/manifest.json +46 -0
- spring_runtime_mcp/schemas/tools-contract.json +1902 -0
- spring_runtime_mcp/server.py +322 -0
- spring_runtime_mcp/services.py +44 -0
- spring_runtime_mcp/snapshots.py +340 -0
- spring_runtime_mcp/tools/__init__.py +1 -0
- spring_runtime_mcp/tools/analyze_startup.py +79 -0
- spring_runtime_mcp/tools/check_migrations.py +99 -0
- spring_runtime_mcp/tools/detect_drift.py +323 -0
- spring_runtime_mcp/tools/diagnose_health.py +88 -0
- spring_runtime_mcp/tools/inspect_beans.py +479 -0
- spring_runtime_mcp/tools/inspect_config.py +102 -0
- spring_runtime_mcp/tools/registry.py +48 -0
- spring_runtime_mcp/tools/search_openapi.py +79 -0
- spring_runtime_mcp/tools/support.py +166 -0
- spring_runtime_mcp/tools/verify_mappings.py +62 -0
- spring_runtime_mcp/transport/__init__.py +1 -0
- spring_runtime_mcp/transport/actuator_http.py +459 -0
- spring_runtime_mcp/transport/bounded_json.py +144 -0
- spring_runtime_mcp/transport/replay_files.py +71 -0
- spring_runtime_mcp/transport/response_gate.py +186 -0
- spring_runtime_mcp/transport/responses.py +82 -0
- spring_runtime_mcp/transport/stdio.py +44 -0
- spring_runtime_mcp-0.2.0.dist-info/METADATA +320 -0
- spring_runtime_mcp-0.2.0.dist-info/RECORD +118 -0
- spring_runtime_mcp-0.2.0.dist-info/WHEEL +4 -0
- spring_runtime_mcp-0.2.0.dist-info/entry_points.txt +2 -0
- spring_runtime_mcp-0.2.0.dist-info/licenses/LICENSE +201 -0
|
@@ -0,0 +1,54 @@
|
|
|
1
|
+
{
|
|
2
|
+
"targetId": "local",
|
|
3
|
+
"sourceRevision": "workspace-a1",
|
|
4
|
+
"types": [
|
|
5
|
+
{
|
|
6
|
+
"name": "example.PaymentGateway",
|
|
7
|
+
"directSupertypes": []
|
|
8
|
+
},
|
|
9
|
+
{
|
|
10
|
+
"name": "example.StripePaymentGateway",
|
|
11
|
+
"directSupertypes": [
|
|
12
|
+
"example.PaymentGateway"
|
|
13
|
+
]
|
|
14
|
+
},
|
|
15
|
+
{
|
|
16
|
+
"name": "example.StripeClient",
|
|
17
|
+
"directSupertypes": []
|
|
18
|
+
}
|
|
19
|
+
],
|
|
20
|
+
"producers": [
|
|
21
|
+
{
|
|
22
|
+
"contextId": "application",
|
|
23
|
+
"beanName": "stripePaymentGateway",
|
|
24
|
+
"aliases": [
|
|
25
|
+
"paymentGateway"
|
|
26
|
+
],
|
|
27
|
+
"declaredType": "example.StripePaymentGateway",
|
|
28
|
+
"implementationType": "example.StripePaymentGateway",
|
|
29
|
+
"configurationClass": "example.StripePaymentGateway",
|
|
30
|
+
"factoryMethod": null,
|
|
31
|
+
"conditionSources": [
|
|
32
|
+
"example.StripePaymentGateway"
|
|
33
|
+
],
|
|
34
|
+
"sourceFile": "src/main/java/example/StripePaymentGateway.java",
|
|
35
|
+
"sourceLine": 12
|
|
36
|
+
},
|
|
37
|
+
{
|
|
38
|
+
"contextId": "application",
|
|
39
|
+
"beanName": "stripeClient",
|
|
40
|
+
"aliases": [
|
|
41
|
+
"stripeApiClient"
|
|
42
|
+
],
|
|
43
|
+
"declaredType": "example.StripeClient",
|
|
44
|
+
"implementationType": null,
|
|
45
|
+
"configurationClass": "example.StripeConfiguration",
|
|
46
|
+
"factoryMethod": "stripeClient",
|
|
47
|
+
"conditionSources": [
|
|
48
|
+
"example.StripeConfiguration#stripeClient"
|
|
49
|
+
],
|
|
50
|
+
"sourceFile": "src/main/java/example/StripeConfiguration.java",
|
|
51
|
+
"sourceLine": 18
|
|
52
|
+
}
|
|
53
|
+
]
|
|
54
|
+
}
|
|
@@ -0,0 +1,41 @@
|
|
|
1
|
+
# Synthetic Cross-Version Diagnostic Fixtures
|
|
2
|
+
|
|
3
|
+
These 48 JSON files are local, synthetic and credential-free. Directory versions
|
|
4
|
+
are scenario labels; none was captured from a running target. `manifest.json`
|
|
5
|
+
records provenance, shape references and `realInstanceIntegrationVerified=false`.
|
|
6
|
+
Tests must not turn these samples into claims of exact-version integration support.
|
|
7
|
+
|
|
8
|
+
Each profile supplies beans, conditions, explicit source/type facts, mappings,
|
|
9
|
+
health, Flyway, Liquibase, startup, OpenAPI and configuration response examples.
|
|
10
|
+
Boot 2.7 additionally includes V2 Health. MVC descriptors use javax (2.7) or
|
|
11
|
+
Jakarta (3.4). Native WebFlux uses ServerWebExchange/Mono, so its supplementary
|
|
12
|
+
Jakarta Servlet descriptor is explicitly separate from the WebFlux route tree.
|
|
13
|
+
|
|
14
|
+
The shared Bean scenarios contain parent/child contexts, aliases and a source
|
|
15
|
+
catalog that permits a verified PaymentGateway → StripeClient factory → missing
|
|
16
|
+
stripe.enabled chain. Nested conditions remain in standard negativeMatches
|
|
17
|
+
message strings; they are not invented JSON children. SourceCatalog is internal
|
|
18
|
+
fixture evidence, not an Actuator field or a new public tool argument.
|
|
19
|
+
|
|
20
|
+
Raw structure references:
|
|
21
|
+
|
|
22
|
+
- [Spring Boot mappings](https://docs.spring.io/spring-boot/3.4/api/rest/actuator/mappings.html): dispatcher trees and JVM method descriptors.
|
|
23
|
+
- [Startup](https://docs.spring.io/spring-boot/3.4/api/rest/actuator/startup.html): timeline events, durations, tags and parent IDs; GET snapshots only.
|
|
24
|
+
- [Liquibase](https://docs.spring.io/spring-boot/3.4/api/rest/actuator/liquibase.html): case-sensitive changeSets and changeLog fields.
|
|
25
|
+
- [Repository normalization design](../../../docs/architecture/cross-version-normalization.md): the remaining field mapping and visibility rules.
|
|
26
|
+
|
|
27
|
+
Migrations preserve each context and migration Bean identity. Flyway checksum is
|
|
28
|
+
a signed number; Liquibase checksum is a string with its version prefix. Neither
|
|
29
|
+
an empty changeSets array nor an applied migration inventory proves there are no
|
|
30
|
+
pending scripts. Liquibase has no invented execution duration or Flyway version.
|
|
31
|
+
Startup step durations overlap and must not be summed as total startup time.
|
|
32
|
+
|
|
33
|
+
`contracts/` holds independent nonempty expected examples for eight published
|
|
34
|
+
output schemas. They are checked as committed data, never regenerated from the
|
|
35
|
+
schema during tests. Seven examples do not represent implemented handlers.
|
|
36
|
+
`faults/` provides status/body/error injection and the hidden-Health expected
|
|
37
|
+
partial contract. `large/beans-2500.json` is a deterministic 2,500-node chain for
|
|
38
|
+
filtering, page and graph-budget regression tests. Only sanitized projections
|
|
39
|
+
may enter cursor storage; these raw inputs remain confined to test memory.
|
|
40
|
+
|
|
41
|
+
Run commands and the evidence matrix are in [the suite guide](../../conformance/README.md).
|
|
@@ -0,0 +1,92 @@
|
|
|
1
|
+
{
|
|
2
|
+
"contexts": {
|
|
3
|
+
"infrastructure": {
|
|
4
|
+
"beans": {
|
|
5
|
+
"connectionFactory": {
|
|
6
|
+
"aliases": [],
|
|
7
|
+
"scope": "singleton",
|
|
8
|
+
"type": "example.ConnectionFactory",
|
|
9
|
+
"resource": "class path resource [example/InfrastructureConfiguration.class]",
|
|
10
|
+
"dependencies": []
|
|
11
|
+
},
|
|
12
|
+
"dataSource": {
|
|
13
|
+
"aliases": [],
|
|
14
|
+
"scope": "singleton",
|
|
15
|
+
"type": "example.DataSource",
|
|
16
|
+
"resource": "class path resource [example/InfrastructureConfiguration.class]",
|
|
17
|
+
"dependencies": [
|
|
18
|
+
"connectionFactory"
|
|
19
|
+
]
|
|
20
|
+
},
|
|
21
|
+
"orderRepository": {
|
|
22
|
+
"aliases": [
|
|
23
|
+
"orderRepoAlias"
|
|
24
|
+
],
|
|
25
|
+
"scope": "singleton",
|
|
26
|
+
"type": "example.OrderRepository",
|
|
27
|
+
"resource": "class path resource [example/InfrastructureConfiguration.class]",
|
|
28
|
+
"dependencies": [
|
|
29
|
+
"dataSource"
|
|
30
|
+
]
|
|
31
|
+
},
|
|
32
|
+
"client": {
|
|
33
|
+
"aliases": [],
|
|
34
|
+
"scope": "singleton",
|
|
35
|
+
"type": "example.ParentClient",
|
|
36
|
+
"resource": null,
|
|
37
|
+
"dependencies": []
|
|
38
|
+
},
|
|
39
|
+
"auditService": {
|
|
40
|
+
"aliases": [],
|
|
41
|
+
"scope": "singleton",
|
|
42
|
+
"type": "example.AuditService",
|
|
43
|
+
"resource": null,
|
|
44
|
+
"dependencies": [
|
|
45
|
+
"client"
|
|
46
|
+
]
|
|
47
|
+
}
|
|
48
|
+
},
|
|
49
|
+
"parentId": null
|
|
50
|
+
},
|
|
51
|
+
"application": {
|
|
52
|
+
"parentId": "infrastructure",
|
|
53
|
+
"beans": {
|
|
54
|
+
"client": {
|
|
55
|
+
"aliases": [],
|
|
56
|
+
"scope": "singleton",
|
|
57
|
+
"type": "example.ChildClient",
|
|
58
|
+
"resource": null,
|
|
59
|
+
"dependencies": []
|
|
60
|
+
},
|
|
61
|
+
"orderService": {
|
|
62
|
+
"aliases": [
|
|
63
|
+
"orders"
|
|
64
|
+
],
|
|
65
|
+
"scope": "singleton",
|
|
66
|
+
"type": "example.OrderService",
|
|
67
|
+
"resource": null,
|
|
68
|
+
"dependencies": [
|
|
69
|
+
"orderRepoAlias",
|
|
70
|
+
"client"
|
|
71
|
+
]
|
|
72
|
+
},
|
|
73
|
+
"orderController": {
|
|
74
|
+
"aliases": [],
|
|
75
|
+
"scope": "singleton",
|
|
76
|
+
"type": "example.OrderController",
|
|
77
|
+
"resource": null,
|
|
78
|
+
"dependencies": [
|
|
79
|
+
"orders"
|
|
80
|
+
]
|
|
81
|
+
},
|
|
82
|
+
"stripeConfiguration": {
|
|
83
|
+
"aliases": [],
|
|
84
|
+
"scope": "singleton",
|
|
85
|
+
"type": "example.StripeConfiguration",
|
|
86
|
+
"resource": null,
|
|
87
|
+
"dependencies": []
|
|
88
|
+
}
|
|
89
|
+
}
|
|
90
|
+
}
|
|
91
|
+
}
|
|
92
|
+
}
|
|
@@ -0,0 +1,52 @@
|
|
|
1
|
+
{
|
|
2
|
+
"contexts": {
|
|
3
|
+
"infrastructure": {
|
|
4
|
+
"positiveMatches": {},
|
|
5
|
+
"negativeMatches": {},
|
|
6
|
+
"unconditionalClasses": []
|
|
7
|
+
},
|
|
8
|
+
"application": {
|
|
9
|
+
"parentId": "infrastructure",
|
|
10
|
+
"positiveMatches": {
|
|
11
|
+
"example.FallbackConfiguration": [
|
|
12
|
+
{
|
|
13
|
+
"condition": "OnBeanCondition",
|
|
14
|
+
"message": "@ConditionalOnMissingBean (types: example.StripeClient; SearchStrategy: all) did not find any beans"
|
|
15
|
+
}
|
|
16
|
+
]
|
|
17
|
+
},
|
|
18
|
+
"negativeMatches": {
|
|
19
|
+
"example.StripePaymentGateway": {
|
|
20
|
+
"matched": [],
|
|
21
|
+
"notMatched": [
|
|
22
|
+
{
|
|
23
|
+
"condition": "OnBeanCondition",
|
|
24
|
+
"message": "@ConditionalOnBean (types: example.StripeClient; SearchStrategy: all) did not find any beans of type example.StripeClient"
|
|
25
|
+
}
|
|
26
|
+
]
|
|
27
|
+
},
|
|
28
|
+
"example.StripeConfiguration#stripeClient": {
|
|
29
|
+
"matched": [],
|
|
30
|
+
"notMatched": [
|
|
31
|
+
{
|
|
32
|
+
"condition": "OnPropertyCondition",
|
|
33
|
+
"message": "@ConditionalOnProperty (stripe.enabled=true) did not find property 'enabled'"
|
|
34
|
+
}
|
|
35
|
+
]
|
|
36
|
+
},
|
|
37
|
+
"example.PaymentModeCondition": {
|
|
38
|
+
"matched": [],
|
|
39
|
+
"notMatched": [
|
|
40
|
+
{
|
|
41
|
+
"condition": "example.PaymentModeCondition",
|
|
42
|
+
"message": "AnyNestedCondition 0 matched 2 did not; NestedCondition on example.PaymentModeCondition.Card AllNestedConditions 0 matched 1 did not; NestedCondition on example.PaymentModeCondition.Card.Enabled @ConditionalOnProperty (card.enabled=true) did not find property 'enabled'; NestedCondition on example.PaymentModeCondition.Remote NoneNestedConditions 1 matched 0 did not; NestedCondition on example.PaymentModeCondition.Remote.Client @ConditionalOnBean (types: example.RemoteClient; SearchStrategy: all) found bean 'remoteClient'"
|
|
43
|
+
}
|
|
44
|
+
]
|
|
45
|
+
}
|
|
46
|
+
},
|
|
47
|
+
"unconditionalClasses": [
|
|
48
|
+
"example.OrderConfiguration"
|
|
49
|
+
]
|
|
50
|
+
}
|
|
51
|
+
}
|
|
52
|
+
}
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
{
|
|
2
|
+
"contexts": {
|
|
3
|
+
"application": {
|
|
4
|
+
"beans": {
|
|
5
|
+
"spring.application-example.ApplicationProperties": {
|
|
6
|
+
"prefix": "spring.application",
|
|
7
|
+
"properties": {
|
|
8
|
+
"name": "orders"
|
|
9
|
+
},
|
|
10
|
+
"inputs": {
|
|
11
|
+
"name": {
|
|
12
|
+
"value": "orders",
|
|
13
|
+
"origin": "class path resource [application.yaml] - 2:9"
|
|
14
|
+
}
|
|
15
|
+
}
|
|
16
|
+
}
|
|
17
|
+
}
|
|
18
|
+
}
|
|
19
|
+
}
|
|
20
|
+
}
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
{
|
|
2
|
+
"activeProfiles": [
|
|
3
|
+
"dev"
|
|
4
|
+
],
|
|
5
|
+
"propertySources": [
|
|
6
|
+
{
|
|
7
|
+
"name": "applicationConfig: [classpath:/application.yaml]",
|
|
8
|
+
"properties": {
|
|
9
|
+
"spring.application.name": {
|
|
10
|
+
"value": "orders",
|
|
11
|
+
"origin": "class path resource [application.yaml] - 2:9"
|
|
12
|
+
}
|
|
13
|
+
}
|
|
14
|
+
}
|
|
15
|
+
]
|
|
16
|
+
}
|
|
@@ -0,0 +1,40 @@
|
|
|
1
|
+
{
|
|
2
|
+
"contexts": {
|
|
3
|
+
"application": {
|
|
4
|
+
"flywayBeans": {
|
|
5
|
+
"ordersFlyway": {
|
|
6
|
+
"migrations": [
|
|
7
|
+
{
|
|
8
|
+
"type": "SQL",
|
|
9
|
+
"checksum": 12345,
|
|
10
|
+
"version": "1",
|
|
11
|
+
"description": "create ordersFlyway",
|
|
12
|
+
"script": "V1__create_tables.sql",
|
|
13
|
+
"state": "SUCCESS",
|
|
14
|
+
"installedBy": "fixture",
|
|
15
|
+
"installedOn": "2026-10-16T00:00:00Z",
|
|
16
|
+
"installedRank": 1,
|
|
17
|
+
"executionTime": 12
|
|
18
|
+
}
|
|
19
|
+
]
|
|
20
|
+
},
|
|
21
|
+
"auditFlyway": {
|
|
22
|
+
"migrations": [
|
|
23
|
+
{
|
|
24
|
+
"type": "SQL",
|
|
25
|
+
"checksum": -54321,
|
|
26
|
+
"version": "1",
|
|
27
|
+
"description": "create auditFlyway",
|
|
28
|
+
"script": "V1__create_tables.sql",
|
|
29
|
+
"state": "SUCCESS",
|
|
30
|
+
"installedBy": "fixture",
|
|
31
|
+
"installedOn": "2026-10-16T00:00:00Z",
|
|
32
|
+
"installedRank": 1,
|
|
33
|
+
"executionTime": 12
|
|
34
|
+
}
|
|
35
|
+
]
|
|
36
|
+
}
|
|
37
|
+
}
|
|
38
|
+
}
|
|
39
|
+
}
|
|
40
|
+
}
|
|
@@ -0,0 +1,38 @@
|
|
|
1
|
+
{
|
|
2
|
+
"status": "DOWN",
|
|
3
|
+
"components": {
|
|
4
|
+
"db": {
|
|
5
|
+
"status": "DOWN",
|
|
6
|
+
"details": {
|
|
7
|
+
"database": "H2",
|
|
8
|
+
"error": "java.sql.SQLException: synthetic connection unavailable"
|
|
9
|
+
}
|
|
10
|
+
},
|
|
11
|
+
"redis": {
|
|
12
|
+
"status": "UP"
|
|
13
|
+
},
|
|
14
|
+
"kafka": {
|
|
15
|
+
"status": "UP"
|
|
16
|
+
},
|
|
17
|
+
"rabbit": {
|
|
18
|
+
"status": "UP"
|
|
19
|
+
},
|
|
20
|
+
"diskSpace": {
|
|
21
|
+
"status": "UP"
|
|
22
|
+
},
|
|
23
|
+
"livenessState": {
|
|
24
|
+
"status": "UP"
|
|
25
|
+
},
|
|
26
|
+
"readinessState": {
|
|
27
|
+
"status": "DOWN"
|
|
28
|
+
},
|
|
29
|
+
"dependencies": {
|
|
30
|
+
"status": "DOWN",
|
|
31
|
+
"components": {
|
|
32
|
+
"ordersDb": {
|
|
33
|
+
"status": "DOWN"
|
|
34
|
+
}
|
|
35
|
+
}
|
|
36
|
+
}
|
|
37
|
+
}
|
|
38
|
+
}
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
{
|
|
2
|
+
"contexts": {
|
|
3
|
+
"application": {
|
|
4
|
+
"liquibaseBeans": {
|
|
5
|
+
"ordersLiquibase": {
|
|
6
|
+
"changeSets": [
|
|
7
|
+
{
|
|
8
|
+
"author": "fixture",
|
|
9
|
+
"changeLog": "db/changelog/master.yaml",
|
|
10
|
+
"comments": "synthetic table creation",
|
|
11
|
+
"contexts": [],
|
|
12
|
+
"dateExecuted": "2026-10-16T00:00:00Z",
|
|
13
|
+
"deploymentId": "fixture-deployment",
|
|
14
|
+
"description": "createTable",
|
|
15
|
+
"execType": "EXECUTED",
|
|
16
|
+
"id": "001",
|
|
17
|
+
"labels": [],
|
|
18
|
+
"checksum": "9:0123456789abcdef0123456789abcdef",
|
|
19
|
+
"orderExecuted": 1,
|
|
20
|
+
"tag": null
|
|
21
|
+
}
|
|
22
|
+
]
|
|
23
|
+
},
|
|
24
|
+
"auditLiquibase": {
|
|
25
|
+
"changeSets": []
|
|
26
|
+
}
|
|
27
|
+
}
|
|
28
|
+
}
|
|
29
|
+
}
|
|
30
|
+
}
|
|
@@ -0,0 +1,40 @@
|
|
|
1
|
+
{
|
|
2
|
+
"contexts": {
|
|
3
|
+
"application": {
|
|
4
|
+
"mappings": {
|
|
5
|
+
"dispatcherServlets": {
|
|
6
|
+
"dispatcherServlet": [
|
|
7
|
+
{
|
|
8
|
+
"handler": "example.OrderController#list",
|
|
9
|
+
"predicate": "{GET [/orders]}",
|
|
10
|
+
"details": {
|
|
11
|
+
"handlerMethod": {
|
|
12
|
+
"className": "example.OrderController",
|
|
13
|
+
"name": "list",
|
|
14
|
+
"descriptor": "(Ljavax/servlet/http/HttpServletRequest;)Ljava/lang/String;"
|
|
15
|
+
},
|
|
16
|
+
"requestMappingConditions": {
|
|
17
|
+
"methods": [
|
|
18
|
+
"GET"
|
|
19
|
+
],
|
|
20
|
+
"patterns": [
|
|
21
|
+
"/orders"
|
|
22
|
+
],
|
|
23
|
+
"headers": [],
|
|
24
|
+
"params": [],
|
|
25
|
+
"consumes": [],
|
|
26
|
+
"produces": [
|
|
27
|
+
{
|
|
28
|
+
"mediaType": "application/json",
|
|
29
|
+
"negated": false
|
|
30
|
+
}
|
|
31
|
+
]
|
|
32
|
+
}
|
|
33
|
+
}
|
|
34
|
+
}
|
|
35
|
+
]
|
|
36
|
+
}
|
|
37
|
+
}
|
|
38
|
+
}
|
|
39
|
+
}
|
|
40
|
+
}
|
|
@@ -0,0 +1,54 @@
|
|
|
1
|
+
{
|
|
2
|
+
"openapi": "3.0.3",
|
|
3
|
+
"info": {
|
|
4
|
+
"title": "Synthetic Orders",
|
|
5
|
+
"version": "1"
|
|
6
|
+
},
|
|
7
|
+
"paths": {
|
|
8
|
+
"/orders": {
|
|
9
|
+
"get": {
|
|
10
|
+
"operationId": "listOrders",
|
|
11
|
+
"responses": {
|
|
12
|
+
"200": {
|
|
13
|
+
"description": "Success",
|
|
14
|
+
"content": {
|
|
15
|
+
"application/json": {
|
|
16
|
+
"schema": {
|
|
17
|
+
"$ref": "#/components/schemas/Order"
|
|
18
|
+
}
|
|
19
|
+
}
|
|
20
|
+
}
|
|
21
|
+
}
|
|
22
|
+
}
|
|
23
|
+
}
|
|
24
|
+
}
|
|
25
|
+
},
|
|
26
|
+
"components": {
|
|
27
|
+
"schemas": {
|
|
28
|
+
"Order": {
|
|
29
|
+
"type": "object",
|
|
30
|
+
"properties": {
|
|
31
|
+
"customer": {
|
|
32
|
+
"$ref": "#/components/schemas/Customer"
|
|
33
|
+
}
|
|
34
|
+
}
|
|
35
|
+
},
|
|
36
|
+
"Customer": {
|
|
37
|
+
"type": "object",
|
|
38
|
+
"properties": {
|
|
39
|
+
"address": {
|
|
40
|
+
"$ref": "#/components/schemas/Address"
|
|
41
|
+
}
|
|
42
|
+
}
|
|
43
|
+
},
|
|
44
|
+
"Address": {
|
|
45
|
+
"type": "object",
|
|
46
|
+
"properties": {
|
|
47
|
+
"city": {
|
|
48
|
+
"type": "string"
|
|
49
|
+
}
|
|
50
|
+
}
|
|
51
|
+
}
|
|
52
|
+
}
|
|
53
|
+
}
|
|
54
|
+
}
|
|
@@ -0,0 +1,90 @@
|
|
|
1
|
+
{
|
|
2
|
+
"targetId": "local",
|
|
3
|
+
"sourceRevision": "workspace-a1",
|
|
4
|
+
"types": [
|
|
5
|
+
{
|
|
6
|
+
"name": "example.PaymentGateway",
|
|
7
|
+
"directSupertypes": []
|
|
8
|
+
},
|
|
9
|
+
{
|
|
10
|
+
"name": "example.StripePaymentGateway",
|
|
11
|
+
"directSupertypes": [
|
|
12
|
+
"example.PaymentGateway"
|
|
13
|
+
]
|
|
14
|
+
},
|
|
15
|
+
{
|
|
16
|
+
"name": "example.StripeClient",
|
|
17
|
+
"directSupertypes": []
|
|
18
|
+
},
|
|
19
|
+
{
|
|
20
|
+
"name": "example.ConnectionFactory",
|
|
21
|
+
"directSupertypes": []
|
|
22
|
+
},
|
|
23
|
+
{
|
|
24
|
+
"name": "example.DataSource",
|
|
25
|
+
"directSupertypes": []
|
|
26
|
+
},
|
|
27
|
+
{
|
|
28
|
+
"name": "example.OrderRepository",
|
|
29
|
+
"directSupertypes": []
|
|
30
|
+
},
|
|
31
|
+
{
|
|
32
|
+
"name": "example.ParentClient",
|
|
33
|
+
"directSupertypes": []
|
|
34
|
+
},
|
|
35
|
+
{
|
|
36
|
+
"name": "example.AuditService",
|
|
37
|
+
"directSupertypes": []
|
|
38
|
+
},
|
|
39
|
+
{
|
|
40
|
+
"name": "example.ChildClient",
|
|
41
|
+
"directSupertypes": []
|
|
42
|
+
},
|
|
43
|
+
{
|
|
44
|
+
"name": "example.OrderService",
|
|
45
|
+
"directSupertypes": []
|
|
46
|
+
},
|
|
47
|
+
{
|
|
48
|
+
"name": "example.OrderController",
|
|
49
|
+
"directSupertypes": []
|
|
50
|
+
},
|
|
51
|
+
{
|
|
52
|
+
"name": "example.StripeConfiguration",
|
|
53
|
+
"directSupertypes": []
|
|
54
|
+
}
|
|
55
|
+
],
|
|
56
|
+
"producers": [
|
|
57
|
+
{
|
|
58
|
+
"contextId": "application",
|
|
59
|
+
"beanName": "stripePaymentGateway",
|
|
60
|
+
"aliases": [
|
|
61
|
+
"paymentGateway"
|
|
62
|
+
],
|
|
63
|
+
"declaredType": "example.StripePaymentGateway",
|
|
64
|
+
"implementationType": "example.StripePaymentGateway",
|
|
65
|
+
"configurationClass": "example.StripePaymentGateway",
|
|
66
|
+
"factoryMethod": null,
|
|
67
|
+
"conditionSources": [
|
|
68
|
+
"example.StripePaymentGateway"
|
|
69
|
+
],
|
|
70
|
+
"sourceFile": "src/main/java/example/StripePaymentGateway.java",
|
|
71
|
+
"sourceLine": 12
|
|
72
|
+
},
|
|
73
|
+
{
|
|
74
|
+
"contextId": "application",
|
|
75
|
+
"beanName": "stripeClient",
|
|
76
|
+
"aliases": [
|
|
77
|
+
"stripeApiClient"
|
|
78
|
+
],
|
|
79
|
+
"declaredType": "example.StripeClient",
|
|
80
|
+
"implementationType": null,
|
|
81
|
+
"configurationClass": "example.StripeConfiguration",
|
|
82
|
+
"factoryMethod": "stripeClient",
|
|
83
|
+
"conditionSources": [
|
|
84
|
+
"example.StripeConfiguration#stripeClient"
|
|
85
|
+
],
|
|
86
|
+
"sourceFile": "src/main/java/example/StripeConfiguration.java",
|
|
87
|
+
"sourceLine": 18
|
|
88
|
+
}
|
|
89
|
+
]
|
|
90
|
+
}
|
|
@@ -0,0 +1,45 @@
|
|
|
1
|
+
{
|
|
2
|
+
"springBootVersion": "2.7.18",
|
|
3
|
+
"timeline": {
|
|
4
|
+
"startTime": "2026-10-16T00:00:00Z",
|
|
5
|
+
"events": [
|
|
6
|
+
{
|
|
7
|
+
"startTime": "2026-10-16T00:00:00.000Z",
|
|
8
|
+
"endTime": "2026-10-16T00:00:00.900Z",
|
|
9
|
+
"duration": "PT0.9S",
|
|
10
|
+
"startupStep": {
|
|
11
|
+
"id": 1,
|
|
12
|
+
"name": "spring.boot.application.starting",
|
|
13
|
+
"tags": []
|
|
14
|
+
}
|
|
15
|
+
},
|
|
16
|
+
{
|
|
17
|
+
"startTime": "2026-10-16T00:00:00.100Z",
|
|
18
|
+
"endTime": "2026-10-16T00:00:00.800Z",
|
|
19
|
+
"duration": "PT0.7S",
|
|
20
|
+
"startupStep": {
|
|
21
|
+
"id": 2,
|
|
22
|
+
"name": "spring.beans.instantiate",
|
|
23
|
+
"tags": [
|
|
24
|
+
{
|
|
25
|
+
"key": "beanName",
|
|
26
|
+
"value": "orderService"
|
|
27
|
+
}
|
|
28
|
+
],
|
|
29
|
+
"parentId": 1
|
|
30
|
+
}
|
|
31
|
+
},
|
|
32
|
+
{
|
|
33
|
+
"startTime": "2026-10-16T00:00:00.200Z",
|
|
34
|
+
"endTime": "2026-10-16T00:00:00.400Z",
|
|
35
|
+
"duration": "PT0.2S",
|
|
36
|
+
"startupStep": {
|
|
37
|
+
"id": 3,
|
|
38
|
+
"name": "spring.context.base-packages.scan",
|
|
39
|
+
"tags": [],
|
|
40
|
+
"parentId": 2
|
|
41
|
+
}
|
|
42
|
+
}
|
|
43
|
+
]
|
|
44
|
+
}
|
|
45
|
+
}
|