3232 * Register order is reloading order preventing unexpected behavior.
3333 */
3434public class ReloadManager {
35- private final List <ReloadableContainer > registry = new ArrayList <>();
35+ private final List <ReloadableContainer > registry = Collections . synchronizedList ( new LinkedList <>() );
3636
3737 /**
3838 * Register a reloadable module into reloading registery
3939 *
4040 * @param reloadable Reloadable module
4141 */
42- public void register (@ NotNull Reloadable reloadable ) {
42+ public synchronized void register (@ NotNull Reloadable reloadable ) {
4343 unregister (reloadable );
4444 this .registry .add (new ReloadableContainer (new WeakReference <>(reloadable ), null ));
4545 }
@@ -49,7 +49,7 @@ public void register(@NotNull Reloadable reloadable) {
4949 *
5050 * @param reloadMethod Reloadable module
5151 */
52- public void register (@ NotNull Method reloadMethod ) {
52+ public synchronized void register (@ NotNull Method reloadMethod ) {
5353 unregister (reloadMethod );
5454 this .registry .add (new ReloadableContainer (null , new WeakReference <>(reloadMethod )));
5555 }
@@ -59,7 +59,7 @@ public void register(@NotNull Method reloadMethod) {
5959 *
6060 * @param reloadMethod Reloadable module
6161 */
62- public void unregister (@ NotNull Method reloadMethod ) {
62+ public synchronized void unregister (@ NotNull Method reloadMethod ) {
6363 this .registry .removeIf (reloadableContainer -> {
6464 if (reloadableContainer .getReloadableMethod () != null ) {
6565 Method method = reloadableContainer .getReloadableMethod ().get ();
@@ -76,7 +76,7 @@ public void unregister(@NotNull Method reloadMethod) {
7676 *
7777 * @param reloadable Reloadable module
7878 */
79- public void unregister (@ NotNull Reloadable reloadable ) {
79+ public synchronized void unregister (@ NotNull Reloadable reloadable ) {
8080 this .registry .removeIf (reloadableContainer -> reloadableContainer != null && Objects .equals (reloadableContainer .getReloadable (), reloadable ));
8181 }
8282
@@ -85,7 +85,7 @@ public void unregister(@NotNull Reloadable reloadable) {
8585 *
8686 * @param clazz Class that impl reloadable
8787 */
88- public void unregister (@ NotNull Class <Reloadable > clazz ) {
88+ public synchronized void unregister (@ NotNull Class <Reloadable > clazz ) {
8989 this .registry .removeIf (reloadable -> {
9090 if (reloadable .getReloadable () != null ) {
9191 return clazz .equals (reloadable .getReloadable ().getClass ());
@@ -105,7 +105,7 @@ public void unregister(@NotNull Class<Reloadable> clazz) {
105105 * @return Reloading results
106106 */
107107 @ NotNull
108- public Map <ReloadableContainer , ReloadResult > reload () {
108+ public synchronized Map <ReloadableContainer , ReloadResult > reload () {
109109 return reload (null );
110110 }
111111
@@ -116,7 +116,7 @@ public Map<ReloadableContainer, ReloadResult> reload() {
116116 * @return Reloading results
117117 */
118118 @ NotNull
119- public Map <ReloadableContainer , ReloadResult > reload (@ Nullable Class <Reloadable > clazz ) {
119+ public synchronized Map <ReloadableContainer , ReloadResult > reload (@ Nullable Class <Reloadable > clazz ) {
120120 Map <ReloadableContainer , ReloadResult > reloadResultMap = new HashMap <>();
121121 Iterator <ReloadableContainer > iterator = this .registry .iterator ();
122122 while (iterator .hasNext ()) {
0 commit comments