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,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": "(Ljakarta/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": "3.4.13",
|
|
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
|
+
}
|
|
@@ -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
|
+
}
|