(@NotNull Function<Bean, Bean> retreatFunc)
| 197 | } |
| 198 | |
| 199 | @Override |
| 200 | public void upgrade(@NotNull Function<Bean, Bean> retreatFunc) throws Exception { |
| 201 | // 如果需要,重建_tlocal内存表的用户设置的bean。 |
| 202 | var retreats = new ArrayList<Retreat>(); |
| 203 | _tlocal.walk((roleId, locals) -> { |
| 204 | for (var data : locals.getDatas()) { |
| 205 | var retreatBean = retreatFunc.apply(data.getValue().getAny().getBean()); |
| 206 | if (retreatBean != null) { |
| 207 | beanFactory.register(retreatBean); // 覆盖beanFactory. |
| 208 | retreats.add(new Retreat(roleId, data.getKey(), retreatBean)); |
| 209 | if (retreats.size() > 50) { |
| 210 | saveRetreats(retreats); |
| 211 | retreats.clear(); |
| 212 | } |
| 213 | } |
| 214 | } |
| 215 | return true; |
| 216 | }); |
| 217 | if (!retreats.isEmpty()) |
| 218 | saveRetreats(retreats); |
| 219 | } |
| 220 | |
| 221 | private void saveRetreats(@NotNull ArrayList<Retreat> retreats) { |
| 222 | // 【注意,这里不使用 Task.call or run,因为这个在热更流程中调用,避免去使用hotGuard。】 |
nothing calls this directly
no test coverage detected