Skip to content

Commit f9d783b

Browse files
authored
Merge pull request #3311 from Multiverse/refactor/remove-deprecate
Deprecate other removeWorld methods in favour of using RemoveWorldOpt…
2 parents 87dd416 + a50bd80 commit f9d783b

File tree

5 files changed

+53
-5
lines changed

5 files changed

+53
-5
lines changed

src/main/java/org/mvplugins/multiverse/core/utils/result/FailureReason.java

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3,12 +3,21 @@
33
import co.aikar.locales.MessageKey;
44
import co.aikar.locales.MessageKeyProvider;
55

6+
import org.jetbrains.annotations.ApiStatus;
67
import org.mvplugins.multiverse.core.locale.MVCorei18n;
78

89
/**
910
* Represents a failure reason for an {@link Attempt}.
1011
*/
1112
public interface FailureReason extends MessageKeyProvider {
13+
/**
14+
* A generic failure reason that can be used when no specific reason is applicable.
15+
*
16+
* @since 5.2
17+
*/
18+
@ApiStatus.AvailableSince("5.2")
19+
FailureReason GENERIC = new FailureReason() { };
20+
1221
default MessageKey getMessageKey() {
1322
return MVCorei18n.GENERIC_FAILURE.getMessageKey();
1423
}

src/main/java/org/mvplugins/multiverse/core/utils/result/SuccessReason.java

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3,9 +3,21 @@
33
import co.aikar.locales.MessageKey;
44
import co.aikar.locales.MessageKeyProvider;
55

6+
import org.jetbrains.annotations.ApiStatus;
67
import org.mvplugins.multiverse.core.locale.MVCorei18n;
78

9+
/**
10+
* Represents a success reason for an {@link Attempt}.
11+
*/
812
public interface SuccessReason extends MessageKeyProvider {
13+
/**
14+
* A generic success reason that can be used when no specific reason is applicable.
15+
*
16+
* @since 5.2
17+
*/
18+
@ApiStatus.AvailableSince("5.2")
19+
SuccessReason GENERIC = new SuccessReason() { };
20+
921
default MessageKey getMessageKey() {
1022
return MVCorei18n.GENERIC_SUCCESS.getMessageKey();
1123
}

src/main/java/org/mvplugins/multiverse/core/world/WorldManager.java

Lines changed: 24 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -171,7 +171,11 @@ private void loadNewWorldConfigs(Collection<WorldConfig> newWorldConfigs) {
171171
}
172172

173173
private void removeWorldsNotInConfigs(Collection<String> removedWorlds) {
174-
removedWorlds.forEach(worldName -> removeWorld(worldName)
174+
removedWorlds.forEach(worldName -> getWorld(worldName)
175+
.fold(
176+
() -> Attempt.failure(FailureReason.GENERIC, Message.of("world already removed")),
177+
world -> removeWorld(RemoveWorldOptions.world(world))
178+
)
175179
.onFailure(failure -> Logging.severe("Failed to unload world %s: %s", worldName, failure))
176180
.onSuccess(success -> Logging.fine("Unloaded world %s as it was removed from config", worldName)));
177181
}
@@ -515,10 +519,14 @@ private Attempt<MultiverseWorld, UnloadFailureReason> removeLoadedMultiverseWorl
515519
*
516520
* @param worldName The name of the world to remove.
517521
* @return The result of the remove.
522+
*
523+
* @deprecated Get the {@link MultiverseWorld} yourself and use {@link #removeWorld(RemoveWorldOptions)} instead.
518524
*/
525+
@Deprecated(since = "5.2", forRemoval = true)
526+
@ApiStatus.ScheduledForRemoval(inVersion = "6.0")
519527
public Attempt<String, RemoveFailureReason> removeWorld(@NotNull String worldName) {
520528
return getWorld(worldName)
521-
.map(this::removeWorld)
529+
.map(world -> removeWorld(RemoveWorldOptions.world(world)))
522530
.getOrElse(() -> worldActionResult(RemoveFailureReason.WORLD_NON_EXISTENT, worldName));
523531
}
524532

@@ -528,7 +536,11 @@ public Attempt<String, RemoveFailureReason> removeWorld(@NotNull String worldNam
528536
*
529537
* @param world The multiverse world to remove.
530538
* @return The result of the remove.
539+
*
540+
* @deprecated Use {@link #removeWorld(RemoveWorldOptions)} instead.
531541
*/
542+
@Deprecated(since = "5.2", forRemoval = true)
543+
@ApiStatus.ScheduledForRemoval(inVersion = "6.0")
532544
public Attempt<String, RemoveFailureReason> removeWorld(@NotNull MultiverseWorld world) {
533545
return removeWorld(RemoveWorldOptions.world(world));
534546
}
@@ -539,9 +551,13 @@ public Attempt<String, RemoveFailureReason> removeWorld(@NotNull MultiverseWorld
539551
*
540552
* @param loadedWorld The multiverse world to remove.
541553
* @return The result of the remove.
554+
*
555+
* @deprecated Use {@link #removeWorld(RemoveWorldOptions)} instead.
542556
*/
557+
@Deprecated(since = "5.2", forRemoval = true)
558+
@ApiStatus.ScheduledForRemoval(inVersion = "6.0")
543559
public Attempt<String, RemoveFailureReason> removeWorld(@NotNull LoadedMultiverseWorld loadedWorld) {
544-
return unloadBeforeRemoveWorld(loadedWorld, RemoveWorldOptions.world(loadedWorld));
560+
return removeWorld(RemoveWorldOptions.world(loadedWorld));
545561
}
546562

547563
/**
@@ -622,7 +638,11 @@ private Attempt<String, DeleteFailureReason> doDeleteWorld(@NotNull LoadedMultiv
622638
? Attempt.failure(DeleteFailureReason.EVENT_CANCELLED)
623639
: Attempt.success(null);
624640
})
625-
.mapAttempt(() -> removeWorld(world).transform(DeleteFailureReason.REMOVE_FAILED))
641+
.mapAttempt(() -> removeWorld(RemoveWorldOptions
642+
.world(world)
643+
.unloadBukkitWorld(true)
644+
.saveBukkitWorld(false)
645+
).transform(DeleteFailureReason.REMOVE_FAILED))
626646
.mapAttempt(() -> fileUtils.deleteFolder(worldFolder.get(), options.keepFiles()).fold(
627647
exception -> worldActionResult(DeleteFailureReason.FAILED_TO_DELETE_FOLDER,
628648
world.getName(), exception),

src/main/java/org/mvplugins/multiverse/core/world/reasons/RemoveFailureReason.java

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3,16 +3,22 @@
33
import co.aikar.locales.MessageKey;
44
import co.aikar.locales.MessageKeyProvider;
55

6+
import org.jetbrains.annotations.ApiStatus;
67
import org.mvplugins.multiverse.core.locale.MVCorei18n;
78
import org.mvplugins.multiverse.core.utils.result.FailureReason;
9+
import org.mvplugins.multiverse.core.world.WorldManager;
810

911
/**
1012
* Result of a world removal operation.
1113
*/
1214
public enum RemoveFailureReason implements FailureReason {
1315
/**
1416
* The world does not exist.
17+
*
18+
* @deprecated No longer in use as {@link WorldManager#removeWorld(String)} is now deprecated.
1519
*/
20+
@Deprecated(forRemoval = true, since = "5.2")
21+
@ApiStatus.ScheduledForRemoval(inVersion = "6.0")
1622
WORLD_NON_EXISTENT(MVCorei18n.REMOVEWORLD_WORLDNONEXISTENT),
1723

1824
/**

src/test/java/org/mvplugins/multiverse/core/world/WorldManagerTest.kt

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -11,6 +11,7 @@ import org.mvplugins.multiverse.core.world.options.CloneWorldOptions
1111
import org.mvplugins.multiverse.core.world.options.CreateWorldOptions
1212
import org.mvplugins.multiverse.core.world.options.DeleteWorldOptions
1313
import org.mvplugins.multiverse.core.world.options.RegenWorldOptions
14+
import org.mvplugins.multiverse.core.world.options.RemoveWorldOptions
1415
import org.mvplugins.multiverse.core.world.options.UnloadWorldOptions
1516
import org.mvplugins.multiverse.core.world.reasons.CloneFailureReason
1617
import org.mvplugins.multiverse.core.world.reasons.CreateFailureReason
@@ -102,7 +103,7 @@ class WorldManagerTest : TestWithMockBukkit() {
102103

103104
@Test
104105
fun `Remove world`() {
105-
assertTrue(worldManager.removeWorld(world).isSuccess)
106+
assertTrue(worldManager.removeWorld(RemoveWorldOptions.world(world)).isSuccess)
106107
assertFalse(worldManager.getWorld("world").isDefined)
107108
assertFalse(worldManager.getLoadedWorld("world").isDefined)
108109
assertFalse(worldManager.getUnloadedWorld("world").isDefined)

0 commit comments

Comments
 (0)