Skip to content

Commit 50dbeb8

Browse files
authored
fix: 修复在首次进行curd,并发时可能出现事件无法触发的问题. (#283)
1 parent 290f8cb commit 50dbeb8

File tree

1 file changed

+15
-8
lines changed

1 file changed

+15
-8
lines changed

hsweb-commons/hsweb-commons-crud/src/main/java/org/hswebframework/web/crud/events/DefaultEntityEventListenerConfigure.java

+15-8
Original file line numberDiff line numberDiff line change
@@ -73,20 +73,15 @@ protected void initByEntity(Class<? extends Entity> type,
7373

7474
@Override
7575
public boolean isEnabled(Class<? extends Entity> entityType) {
76-
if (!enabledFeatures.containsKey(entityType)) {
77-
initByEntity(entityType, getOrCreateTypeMap(entityType, enabledFeatures), false);
78-
}
79-
return MapUtils.isNotEmpty(enabledFeatures.get(entityType));
76+
Map<EntityEventType, Set<EntityEventPhase>> enabled = initByEntityType(entityType);
77+
return MapUtils.isNotEmpty(enabled);
8078
}
8179

8280
@Override
8381
public boolean isEnabled(Class<? extends Entity> entityType,
8482
EntityEventType type,
8583
EntityEventPhase phase) {
86-
if (!enabledFeatures.containsKey(entityType)) {
87-
initByEntity(entityType, getOrCreateTypeMap(entityType, enabledFeatures), false);
88-
}
89-
Map<EntityEventType, Set<EntityEventPhase>> enabled = enabledFeatures.get(entityType);
84+
Map<EntityEventType, Set<EntityEventPhase>> enabled = initByEntityType(entityType);
9085
if (MapUtils.isEmpty(enabled)) {
9186
return false;
9287
}
@@ -102,4 +97,16 @@ public boolean isEnabled(Class<? extends Entity> entityType,
10297

10398
return false;
10499
}
100+
101+
private Map<EntityEventType, Set<EntityEventPhase>> initByEntityType(Class<? extends Entity> entityType) {
102+
return enabledFeatures
103+
.compute(entityType, (k, v) -> {
104+
if (v != null) {
105+
return v;
106+
}
107+
v = new EnumMap<>(EntityEventType.class);
108+
initByEntity(k, v, false);
109+
return v;
110+
});
111+
}
105112
}

0 commit comments

Comments
 (0)