Skip to content

Commit adc89b7

Browse files
author
gaopeng71
committed
feature: 外部依赖通过蓝色标记出来
1 parent 4570779 commit adc89b7

File tree

3 files changed

+45
-16
lines changed

3 files changed

+45
-16
lines changed

dddplus-visualization/src/main/java/io/github/dddplus/ast/view/CallGraphRenderer.java

+3
Original file line numberDiff line numberDiff line change
@@ -136,6 +136,9 @@ private CallGraphRenderer renderNodes() {
136136
if (callGraphReport.getConfig().isAclClass(clazz)) {
137137
append(" color=green");
138138
}
139+
if (callGraphReport.getConfig().isExternalDependentClass(clazz)) {
140+
append(" color=blue");
141+
}
139142
append("];").append(NEWLINE);
140143
}
141144

dddplus-visualization/src/main/java/io/github/dddplus/bce/CallGraphConfig.java

+22-9
Original file line numberDiff line numberDiff line change
@@ -82,6 +82,10 @@ public boolean isUseCaseLayerClass(String className) {
8282
return style.isUseCaseLayerClass(className);
8383
}
8484

85+
public boolean isExternalDependentClass(String className) {
86+
return style.isExternalClass(className);
87+
}
88+
8589
public boolean isAclClass(String className) {
8690
return style.isAclClass(className);
8791
}
@@ -217,6 +221,9 @@ public static class Style implements Serializable {
217221
// Anti-Corruption Layer classes
218222
private List<String> aclClasses = new ArrayList<>();
219223
private transient List<PathMatcher> aclClassPatterns;
224+
// 外部依赖包
225+
private List<String> externalPackages = new ArrayList<>();
226+
private transient List<PathMatcher> externalPackagePatterns;
220227

221228
private void initialize() {
222229
useCaseLayerClassPatterns = new ArrayList<>(useCaseLayerClasses.size());
@@ -227,10 +234,14 @@ private void initialize() {
227234
for (String regex : aclClasses) {
228235
aclClassPatterns.add(FileSystems.getDefault().getPathMatcher("glob:" + regex));
229236
}
237+
externalPackagePatterns = new ArrayList<>(externalPackages.size());
238+
for (String regex : externalPackages) {
239+
externalPackagePatterns.add(FileSystems.getDefault().getPathMatcher("glob:" + regex));
240+
}
230241
}
231242

232-
private boolean isUseCaseLayerClass(String className) {
233-
for (PathMatcher matcher : useCaseLayerClassPatterns) {
243+
private boolean matchClassPattern(List<PathMatcher> patterns, String className) {
244+
for (PathMatcher matcher : patterns) {
234245
if (matcher.matches(Paths.get(className))) {
235246
return true;
236247
}
@@ -239,14 +250,16 @@ private boolean isUseCaseLayerClass(String className) {
239250
return false;
240251
}
241252

242-
private boolean isAclClass(String className) {
243-
for (PathMatcher matcher : aclClassPatterns) {
244-
if (matcher.matches(Paths.get(className))) {
245-
return true;
246-
}
247-
}
253+
private boolean isExternalClass(String className) {
254+
return matchClassPattern(externalPackagePatterns, className);
255+
}
248256

249-
return false;
257+
private boolean isUseCaseLayerClass(String className) {
258+
return matchClassPattern(useCaseLayerClassPatterns, className);
259+
}
260+
261+
private boolean isAclClass(String className) {
262+
return matchClassPattern(aclClassPatterns, className);
250263
}
251264
}
252265

doc/dddplus-runtime.dot

+20-7
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,9 @@
11
digraph G {
2-
labelloc = "t";
32
rankdir=LR;
43
splines = polyline;
54
node [shape=Mrecord];
65
nodesep=0.2;
7-
edge [style = dashed, arrowsize=0.4, fontsize=6];
6+
edge [style=dashed, arrowsize=0.3, fontsize=6];
87

98
"DomainService" [label="<DomainService> DomainService|<domain> domain"];
109
"Extension" [label="<Extension> Extension|<code> code|<name> name"];
@@ -13,9 +12,9 @@ digraph G {
1312
"Router" [label="<Router> Router|<domain> domain|<name> name"];
1413
"IIdentityResolver" [label="<IIdentityResolver> IIdentityResolver|<match> match"];
1514
"IPolicy" [label="<IPolicy> IPolicy|<extensionCode> extensionCode"];
16-
"BaseRouter" [label="<BaseRouter> BaseRouter|<findExtension> findExtension|<firstExtension> firstExtension|<forEachExtension> forEachExtension"];
17-
"DDD" [label="<DDD> DDD|<findSteps> findSteps|<firstExtension> firstExtension|<usePolicy> usePolicy|<useRouter> useRouter"];
18-
"ExtensionInvocationHandler" [label="<ExtensionInvocationHandler> ExtensionInvocationHandler|<createProxy> createProxy|<invoke> invoke|<invokeExtension> invokeExtension"];
15+
"BaseRouter" [label="<BaseRouter> BaseRouter|<defaultExtension> defaultExtension|<findExtension> findExtension|<firstExtension> firstExtension|<forEachExtension> forEachExtension"];
16+
"DDD" [label="<DDD> DDD|<findSteps> findSteps|<firstExtension> firstExtension|<getStep> getStep|<usePolicy> usePolicy|<useRouter> useRouter"];
17+
"ExtensionInvocationHandler" [label="<ExtensionInvocationHandler> ExtensionInvocationHandler|<createProxy> createProxy|<invoke> invoke|<invokeExtension> invokeExtension|<invokeExtensionMethod> invokeExtensionMethod"];
1918
"IReducer" [label="<IReducer> IReducer|<allOf> allOf|<reduce> reduce|<shouldStop> shouldStop"];
2019
"IStartupListener" [label="<IStartupListener> IStartupListener|<onStartComplete> onStartComplete"];
2120
"IExtensionInterceptor" [label="<IExtensionInterceptor> IExtensionInterceptor|<afterInvocation> afterInvocation|<beforeInvocation> beforeInvocation"];
@@ -28,23 +27,31 @@ digraph G {
2827
"InternalIndexer" [label="<InternalIndexer> InternalIndexer|<commitPartner> commitPartner|<extClazzOfPolicy> extClazzOfPolicy|<findDomainSteps> findDomainSteps|<findEffectiveExtensions> findEffectiveExtensions|<findRouter> findRouter|<getBaseRouterExtDeclaration> getBaseRouterExtDeclaration|<index> index|<postIndexing> postIndexing|<prepare> prepare|<registeredInterceptor> registeredInterceptor"];
2928
"PartnerDef" [label="<PartnerDef> PartnerDef|<getExtension> getExtension|<initialize> initialize|<match> match|<prepare> prepare|<registerBean> registerBean|<registerExtensionDef> registerExtensionDef"];
3029
"PatternDef" [label="<PatternDef> PatternDef|<extClazzSet> extClazzSet|<getExtension> getExtension|<initialize> initialize|<match> match|<registerBean> registerBean|<registerExtensionDef> registerExtensionDef"];
31-
"PolicyDef" [label="<PolicyDef> PolicyDef|<getExtension> getExtension|<policyName> policyName|<registerBean> registerBean|<registerExtensionDef> registerExtensionDef"];
30+
"PolicyDef" [label="<PolicyDef> PolicyDef|<getExtension> getExtension|<initialize> initialize|<policyName> policyName|<registerBean> registerBean|<registerExtensionDef> registerExtensionDef|<resolveExtClazz> resolveExtClazz"];
3231
"RegistryFactory" [label="<RegistryFactory> RegistryFactory|<preparePlugins> preparePlugins|<register> register"];
33-
"RouterDef" [label="<RouterDef> RouterDef|<registerBean> registerBean"];
32+
"RouterDef" [label="<RouterDef> RouterDef|<registerBean> registerBean|<resolveExtClazz> resolveExtClazz"];
3433

3534
BaseRouter:findExtension -> InternalIndexer:registeredInterceptor
3635
BaseRouter:findExtension -> ExtensionInvocationHandler:createProxy
36+
BaseRouter:firstExtension -> BaseRouter:firstExtension
3737
BaseRouter:firstExtension -> InternalIndexer:getBaseRouterExtDeclaration
38+
BaseRouter:firstExtension -> BaseRouter:defaultExtension
39+
BaseRouter:firstExtension -> BaseRouter:findExtension
3840
BaseRouter:forEachExtension -> IReducer:allOf
41+
BaseRouter:forEachExtension -> BaseRouter:forEachExtension
3942
DDD:findSteps -> InternalIndexer:findDomainSteps
43+
DDD:firstExtension -> DDD:firstExtension
4044
DDD:firstExtension -> InternalIndexer:registeredInterceptor
4145
DDD:firstExtension -> ExtensionInvocationHandler:createProxy
46+
DDD:getStep -> DDD:findSteps
4247
DDD:usePolicy -> InternalIndexer:extClazzOfPolicy
4348
DDD:useRouter -> InternalIndexer:findRouter
4449
ExtensionInvocationHandler:invoke -> InternalIndexer:findEffectiveExtensions
50+
ExtensionInvocationHandler:invoke -> ExtensionInvocationHandler:invokeExtension
4551
ExtensionInvocationHandler:invoke -> IReducer:shouldStop
4652
ExtensionInvocationHandler:invoke -> IReducer:reduce
4753
ExtensionInvocationHandler:invokeExtension -> IExtensionInterceptor:beforeInvocation
54+
ExtensionInvocationHandler:invokeExtension -> ExtensionInvocationHandler:invokeExtensionMethod
4855
ExtensionInvocationHandler:invokeExtension -> IExtensionInterceptor:afterInvocation
4956
DDDBootstrap:onApplicationEvent -> IStartupListener:onStartComplete
5057
DDDBootstrap:setApplicationContext -> RegistryFactory:register
@@ -53,6 +60,7 @@ digraph G {
5360
DomainServiceDef:registerBean -> InternalIndexer:index
5461
ExtensionDef:initialize -> Extension:code
5562
ExtensionDef:initialize -> Extension:name
63+
ExtensionDef:prepare -> ExtensionDef:initialize
5664
ExtensionDef:prepare -> InternalIndexer:prepare
5765
ExtensionDef:registerBean -> InternalIndexer:index
5866
InternalIndexer:commitPartner -> DomainArtifacts:export
@@ -69,21 +77,26 @@ digraph G {
6977
PartnerDef:initialize -> Partner:code
7078
PartnerDef:initialize -> Partner:name
7179
PartnerDef:match -> IIdentityResolver:match
80+
PartnerDef:prepare -> PartnerDef:initialize
7281
PartnerDef:prepare -> InternalIndexer:prepare
7382
PartnerDef:registerBean -> InternalIndexer:index
7483
PatternDef:initialize -> Pattern:code
7584
PatternDef:initialize -> Pattern:name
7685
PatternDef:initialize -> Pattern:priority
7786
PatternDef:initialize -> Pattern:asResolver
7887
PatternDef:match -> IIdentityResolver:match
88+
PatternDef:registerBean -> PatternDef:initialize
7989
PatternDef:registerBean -> InternalIndexer:index
8090
PolicyDef:getExtension -> IPolicy:extensionCode
91+
PolicyDef:registerBean -> PolicyDef:initialize
92+
PolicyDef:registerBean -> PolicyDef:resolveExtClazz
8193
PolicyDef:registerBean -> InternalIndexer:index
8294
RegistryFactory:preparePlugins -> IPrepareAware:prepare
8395
RegistryFactory:register -> IRegistryAware:registerBean
8496
RegistryFactory:register -> InternalIndexer:postIndexing
8597
RouterDef:registerBean -> Router:domain
8698
RouterDef:registerBean -> Router:name
99+
RouterDef:registerBean -> RouterDef:resolveExtClazz
87100
RouterDef:registerBean -> InternalIndexer:index
88101
a -> b
89102
}

0 commit comments

Comments
 (0)