SPIGOT-2540: Add nullability annotations to entire Bukkit API

By: Darkyenus <darkyenus@gmail.com>
This commit is contained in:
Bukkit/Spigot
2019-03-13 17:42:57 +11:00
parent e069a80fd8
commit 416c865476
565 changed files with 5372 additions and 2008 deletions

View File

@@ -3,10 +3,11 @@ package org.bukkit.plugin;
import org.bukkit.event.Event;
import org.bukkit.event.EventException;
import org.bukkit.event.Listener;
import org.jetbrains.annotations.NotNull;
/**
* Interface which defines the class for event call backs to plugins
*/
public interface EventExecutor {
public void execute(Listener listener, Event event) throws EventException;
public void execute(@NotNull Listener listener, @NotNull Event event) throws EventException;
}

View File

@@ -8,6 +8,8 @@ import org.bukkit.Server;
import org.bukkit.command.TabExecutor;
import org.bukkit.configuration.file.FileConfiguration;
import org.bukkit.generator.ChunkGenerator;
import org.jetbrains.annotations.NotNull;
import org.jetbrains.annotations.Nullable;
/**
* Represents a Plugin
@@ -21,6 +23,7 @@ public interface Plugin extends TabExecutor {
*
* @return The folder
*/
@NotNull
public File getDataFolder();
/**
@@ -28,6 +31,7 @@ public interface Plugin extends TabExecutor {
*
* @return Contents of the plugin.yaml file
*/
@NotNull
public PluginDescriptionFile getDescription();
/**
@@ -39,6 +43,7 @@ public interface Plugin extends TabExecutor {
*
* @return Plugin configuration
*/
@NotNull
public FileConfiguration getConfig();
/**
@@ -47,7 +52,8 @@ public interface Plugin extends TabExecutor {
* @param filename Filename of the resource
* @return File if found, otherwise null
*/
public InputStream getResource(String filename);
@Nullable
public InputStream getResource(@NotNull String filename);
/**
* Saves the {@link FileConfiguration} retrievable by {@link #getConfig()}.
@@ -76,7 +82,7 @@ public interface Plugin extends TabExecutor {
* @throws IllegalArgumentException if the resource path is null, empty,
* or points to a nonexistent resource.
*/
public void saveResource(String resourcePath, boolean replace);
public void saveResource(@NotNull String resourcePath, boolean replace);
/**
* Discards any data in {@link #getConfig()} and reloads from disk.
@@ -88,6 +94,7 @@ public interface Plugin extends TabExecutor {
*
* @return PluginLoader that controls this plugin
*/
@NotNull
public PluginLoader getPluginLoader();
/**
@@ -95,6 +102,7 @@ public interface Plugin extends TabExecutor {
*
* @return Server running this plugin
*/
@NotNull
public Server getServer();
/**
@@ -146,7 +154,8 @@ public interface Plugin extends TabExecutor {
* generator was requested
* @return ChunkGenerator for use in the default world generation
*/
public ChunkGenerator getDefaultWorldGenerator(String worldName, String id);
@Nullable
public ChunkGenerator getDefaultWorldGenerator(@NotNull String worldName, @Nullable String id);
/**
* Returns the plugin logger associated with this server's logger. The
@@ -155,6 +164,7 @@ public interface Plugin extends TabExecutor {
*
* @return Logger associated with this plugin
*/
@NotNull
public Logger getLogger();
/**
@@ -165,5 +175,6 @@ public interface Plugin extends TabExecutor {
*
* @return name of the plugin
*/
@NotNull
public String getName();
}

View File

@@ -1,5 +1,7 @@
package org.bukkit.plugin;
import org.jetbrains.annotations.NotNull;
/**
* Represents a base {@link Plugin}
* <p>
@@ -26,6 +28,7 @@ public abstract class PluginBase implements Plugin {
return getName().equals(((Plugin) obj).getName());
}
@NotNull
public final String getName() {
return getDescription().getName();
}

View File

@@ -10,12 +10,17 @@ import java.util.Map;
import java.util.Set;
import java.util.regex.Pattern;
import org.bukkit.command.Command;
import org.bukkit.command.CommandExecutor;
import org.bukkit.command.CommandSender;
import org.bukkit.command.PluginCommand;
import org.bukkit.command.TabCompleter;
import org.bukkit.plugin.java.JavaPlugin;
import org.bukkit.permissions.Permissible;
import org.bukkit.permissions.Permission;
import org.bukkit.permissions.PermissionDefault;
import org.jetbrains.annotations.NotNull;
import org.jetbrains.annotations.Nullable;
import org.yaml.snakeyaml.Yaml;
import org.yaml.snakeyaml.constructor.AbstractConstruct;
import org.yaml.snakeyaml.constructor.SafeConstructor;
@@ -179,12 +184,14 @@ public final class PluginDescriptionFile {
private static final Pattern VALID_NAME = Pattern.compile("^[A-Za-z0-9 _.-]+$");
private static final ThreadLocal<Yaml> YAML = new ThreadLocal<Yaml>() {
@Override
@NotNull
protected Yaml initialValue() {
return new Yaml(new SafeConstructor() {
{
yamlConstructors.put(null, new AbstractConstruct() {
@NotNull
@Override
public Object construct(final Node node) {
public Object construct(@NotNull final Node node) {
if (!node.getTag().startsWith("!@")) {
// Unknown tag - will fail
return SafeConstructor.undefinedConstructor.construct(node);
@@ -200,8 +207,9 @@ public final class PluginDescriptionFile {
});
for (final PluginAwareness.Flags flag : PluginAwareness.Flags.values()) {
yamlConstructors.put(new Tag("!@" + flag.name()), new AbstractConstruct() {
@NotNull
@Override
public PluginAwareness.Flags construct(final Node node) {
public PluginAwareness.Flags construct(@NotNull final Node node) {
return flag;
}
});
@@ -218,7 +226,7 @@ public final class PluginDescriptionFile {
private List<String> softDepend = ImmutableList.of();
private List<String> loadBefore = ImmutableList.of();
private String version = null;
private Map<String, Map<String, Object>> commands = null;
private Map<String, Map<String, Object>> commands = ImmutableMap.of();
private String description = null;
private List<String> authors = null;
private String website = null;
@@ -230,7 +238,7 @@ public final class PluginDescriptionFile {
private Set<PluginAwareness> awareness = ImmutableSet.of();
private String apiVersion = null;
public PluginDescriptionFile(final InputStream stream) throws InvalidDescriptionException {
public PluginDescriptionFile(@NotNull final InputStream stream) throws InvalidDescriptionException {
loadMap(asMap(YAML.get().load(stream)));
}
@@ -241,7 +249,7 @@ public final class PluginDescriptionFile {
* @throws InvalidDescriptionException If the PluginDescriptionFile is
* invalid
*/
public PluginDescriptionFile(final Reader reader) throws InvalidDescriptionException {
public PluginDescriptionFile(@NotNull final Reader reader) throws InvalidDescriptionException {
loadMap(asMap(YAML.get().load(reader)));
}
@@ -252,7 +260,7 @@ public final class PluginDescriptionFile {
* @param pluginVersion Version of this plugin
* @param mainClass Full location of the main class of this plugin
*/
public PluginDescriptionFile(final String pluginName, final String pluginVersion, final String mainClass) {
public PluginDescriptionFile(@NotNull final String pluginName, @NotNull final String pluginVersion, @NotNull final String mainClass) {
name = rawName = pluginName;
if (!VALID_NAME.matcher(name).matches()) {
@@ -288,6 +296,7 @@ public final class PluginDescriptionFile {
*
* @return the name of the plugin
*/
@NotNull
public String getName() {
return name;
}
@@ -308,6 +317,7 @@ public final class PluginDescriptionFile {
*
* @return the version of the plugin
*/
@NotNull
public String getVersion() {
return version;
}
@@ -334,6 +344,7 @@ public final class PluginDescriptionFile {
*
* @return the fully qualified main class for the plugin
*/
@NotNull
public String getMain() {
return main;
}
@@ -353,6 +364,7 @@ public final class PluginDescriptionFile {
*
* @return description of this plugin, or null if not specified
*/
@Nullable
public String getDescription() {
return description;
}
@@ -376,6 +388,7 @@ public final class PluginDescriptionFile {
*
* @return the phase when the plugin should be loaded
*/
@NotNull
public PluginLoadOrder getLoad() {
return order;
}
@@ -411,6 +424,7 @@ public final class PluginDescriptionFile {
*
* @return an immutable list of the plugin's authors
*/
@NotNull
public List<String> getAuthors() {
return authors;
}
@@ -430,6 +444,7 @@ public final class PluginDescriptionFile {
*
* @return description of this plugin, or null if not specified
*/
@Nullable
public String getWebsite() {
return website;
}
@@ -460,6 +475,7 @@ public final class PluginDescriptionFile {
*
* @return immutable list of the plugin's dependencies
*/
@NotNull
public List<String> getDepend() {
return depend;
}
@@ -489,6 +505,7 @@ public final class PluginDescriptionFile {
*
* @return immutable list of the plugin's preferred dependencies
*/
@NotNull
public List<String> getSoftDepend() {
return softDepend;
}
@@ -518,6 +535,7 @@ public final class PluginDescriptionFile {
* @return immutable list of plugins that should consider this plugin a
* soft-dependency
*/
@NotNull
public List<String> getLoadBefore() {
return loadBefore;
}
@@ -537,6 +555,7 @@ public final class PluginDescriptionFile {
*
* @return the prefixed logging token, or null if not specified
*/
@Nullable
public String getPrefix() {
return prefix;
}
@@ -589,8 +608,7 @@ public final class PluginDescriptionFile {
* standard one if no specific message is defined. Without the
* permission node, no {@link
* PluginCommand#setExecutor(CommandExecutor) CommandExecutor} or
* {@link PluginCommand#setTabCompleter(TabCompleter)
* TabCompleter} will be called.</td>
* {@link PluginCommand#setTabCompleter(TabCompleter)} will be called.</td>
* <td><blockquote><pre>permission: inferno.flagrate</pre></blockquote></td>
* </tr><tr>
* <td><code>permission-message</code></td>
@@ -612,9 +630,8 @@ public final class PluginDescriptionFile {
* <td>String</td>
* <td>This message is displayed to a player when the {@link
* PluginCommand#setExecutor(CommandExecutor)} {@linkplain
* CommandExecutor#onCommand(CommandSender,Command,String,String[])
* returns false}. &lt;command&gt; is a macro that is replaced
* the command issued.</td>
* CommandExecutor#onCommand(CommandSender, Command, String, String[]) returns false}.
* &lt;command&gt; is a macro that is replaced the command issued.</td>
* <td><blockquote><pre>usage: Syntax error! Perhaps you meant /&lt;command&gt; PlayerName?</pre></blockquote>
* It is worth noting that to use a colon in a yaml, like
* <code>`usage: Usage: /god [player]'</code>, you need to
@@ -657,6 +674,7 @@ public final class PluginDescriptionFile {
*
* @return the commands this plugin will register
*/
@NotNull
public Map<String, Map<String, Object>> getCommands() {
return commands;
}
@@ -769,6 +787,7 @@ public final class PluginDescriptionFile {
*
* @return the permissions this plugin will register
*/
@NotNull
public List<Permission> getPermissions() {
if (permissions == null) {
if (lazyPermissions == null) {
@@ -798,6 +817,7 @@ public final class PluginDescriptionFile {
*
* @return the default value for the plugin's permissions
*/
@NotNull
public PermissionDefault getPermissionDefault() {
return defaultPerm;
}
@@ -837,6 +857,7 @@ public final class PluginDescriptionFile {
*
* @return a set containing every awareness for the plugin
*/
@NotNull
public Set<PluginAwareness> getAwareness() {
return awareness;
}
@@ -848,6 +869,7 @@ public final class PluginDescriptionFile {
*
* @return a descriptive name of the plugin and respective version
*/
@NotNull
public String getFullName() {
return name + " v" + version;
}
@@ -865,6 +887,7 @@ public final class PluginDescriptionFile {
*
* @return the version of the plugin
*/
@Nullable
public String getAPIVersion() {
return apiVersion;
}
@@ -874,6 +897,7 @@ public final class PluginDescriptionFile {
* @deprecated unused
*/
@Deprecated
@Nullable
public String getClassLoaderOf() {
return classLoaderOf;
}
@@ -883,11 +907,11 @@ public final class PluginDescriptionFile {
*
* @param writer Writer to output this file to
*/
public void save(Writer writer) {
public void save(@NotNull Writer writer) {
YAML.get().dump(saveMap(), writer);
}
private void loadMap(Map<?, ?> map) throws InvalidDescriptionException {
private void loadMap(@NotNull Map<?, ?> map) throws InvalidDescriptionException {
try {
name = rawName = map.get("name").toString();
@@ -1033,7 +1057,8 @@ public final class PluginDescriptionFile {
}
}
private static List<String> makePluginNameList(final Map<?, ?> map, final String key) throws InvalidDescriptionException {
@NotNull
private static List<String> makePluginNameList(@NotNull final Map<?, ?> map, @NotNull final String key) throws InvalidDescriptionException {
final Object value = map.get(key);
if (value == null) {
return ImmutableList.of();
@@ -1052,6 +1077,7 @@ public final class PluginDescriptionFile {
return builder.build();
}
@NotNull
private Map<String, Object> saveMap() {
Map<String, Object> map = new HashMap<String, Object>();
@@ -1098,7 +1124,8 @@ public final class PluginDescriptionFile {
return map;
}
private Map<?, ?> asMap(Object object) throws InvalidDescriptionException {
@NotNull
private Map<?, ?> asMap(@NotNull Object object) throws InvalidDescriptionException {
if (object instanceof Map) {
return (Map<?, ?>) object;
}
@@ -1110,6 +1137,7 @@ public final class PluginDescriptionFile {
* @deprecated Internal use
*/
@Deprecated
@NotNull
public String getRawName() {
return rawName;
}

View File

@@ -7,6 +7,7 @@ import java.util.regex.Pattern;
import org.bukkit.event.Event;
import org.bukkit.event.Listener;
import org.jetbrains.annotations.NotNull;
/**
* Represents a plugin loader, which handles direct access to specific types
@@ -25,7 +26,8 @@ public interface PluginLoader {
* @throws UnknownDependencyException If a required dependency could not
* be found
*/
public Plugin loadPlugin(File file) throws InvalidPluginException, UnknownDependencyException;
@NotNull
public Plugin loadPlugin(@NotNull File file) throws InvalidPluginException, UnknownDependencyException;
/**
* Loads a PluginDescriptionFile from the specified file
@@ -36,13 +38,15 @@ public interface PluginLoader {
* @throws InvalidDescriptionException If the plugin description file
* could not be created
*/
public PluginDescriptionFile getPluginDescription(File file) throws InvalidDescriptionException;
@NotNull
public PluginDescriptionFile getPluginDescription(@NotNull File file) throws InvalidDescriptionException;
/**
* Returns a list of all filename filters expected by this PluginLoader
*
* @return The filters
*/
@NotNull
public Pattern[] getPluginFileFilters();
/**
@@ -53,7 +57,8 @@ public interface PluginLoader {
* @param plugin The plugin to use when creating registered listeners
* @return The registered listeners.
*/
public Map<Class<? extends Event>, Set<RegisteredListener>> createRegisteredListeners(Listener listener, Plugin plugin);
@NotNull
public Map<Class<? extends Event>, Set<RegisteredListener>> createRegisteredListeners(@NotNull Listener listener, @NotNull Plugin plugin);
/**
* Enables the specified plugin
@@ -63,7 +68,7 @@ public interface PluginLoader {
*
* @param plugin Plugin to enable
*/
public void enablePlugin(Plugin plugin);
public void enablePlugin(@NotNull Plugin plugin);
/**
* Disables the specified plugin
@@ -72,5 +77,5 @@ public interface PluginLoader {
*
* @param plugin Plugin to disable
*/
public void disablePlugin(Plugin plugin);
public void disablePlugin(@NotNull Plugin plugin);
}

View File

@@ -1,5 +1,7 @@
package org.bukkit.plugin;
import org.jetbrains.annotations.NotNull;
import java.util.logging.Level;
import java.util.logging.LogRecord;
import java.util.logging.Logger;
@@ -19,7 +21,7 @@ public class PluginLogger extends Logger {
*
* @param context A reference to the plugin
*/
public PluginLogger(Plugin context) {
public PluginLogger(@NotNull Plugin context) {
super(context.getClass().getCanonicalName(), null);
String prefix = context.getDescription().getPrefix();
pluginName = prefix != null ? new StringBuilder().append("[").append(prefix).append("] ").toString() : "[" + context.getDescription().getName() + "] ";
@@ -28,7 +30,7 @@ public class PluginLogger extends Logger {
}
@Override
public void log(LogRecord logRecord) {
public void log(@NotNull LogRecord logRecord) {
logRecord.setMessage(pluginName + logRecord.getMessage());
super.log(logRecord);
}

View File

@@ -8,6 +8,9 @@ import org.bukkit.event.EventPriority;
import org.bukkit.event.Listener;
import org.bukkit.permissions.Permissible;
import org.bukkit.permissions.Permission;
import org.jetbrains.annotations.Contract;
import org.jetbrains.annotations.NotNull;
import org.jetbrains.annotations.Nullable;
/**
* Handles all plugin management from the Server
@@ -21,7 +24,7 @@ public interface PluginManager {
* @throws IllegalArgumentException Thrown when the given Class is not a
* valid PluginLoader
*/
public void registerInterface(Class<? extends PluginLoader> loader) throws IllegalArgumentException;
public void registerInterface(@NotNull Class<? extends PluginLoader> loader) throws IllegalArgumentException;
/**
* Checks if the given plugin is loaded and returns it when applicable
@@ -31,13 +34,15 @@ public interface PluginManager {
* @param name Name of the plugin to check
* @return Plugin if it exists, otherwise null
*/
public Plugin getPlugin(String name);
@Nullable
public Plugin getPlugin(@NotNull String name);
/**
* Gets a list of all currently loaded plugins
*
* @return Array of Plugins
*/
@NotNull
public Plugin[] getPlugins();
/**
@@ -48,7 +53,7 @@ public interface PluginManager {
* @param name Name of the plugin to check
* @return true if the plugin is enabled, otherwise false
*/
public boolean isPluginEnabled(String name);
public boolean isPluginEnabled(@NotNull String name);
/**
* Checks if the given plugin is enabled or not
@@ -56,7 +61,8 @@ public interface PluginManager {
* @param plugin Plugin to check
* @return true if the plugin is enabled, otherwise false
*/
public boolean isPluginEnabled(Plugin plugin);
@Contract("null -> false")
public boolean isPluginEnabled(@Nullable Plugin plugin);
/**
* Loads the plugin in the specified file
@@ -72,7 +78,8 @@ public interface PluginManager {
* @throws UnknownDependencyException If a required dependency could not
* be resolved
*/
public Plugin loadPlugin(File file) throws InvalidPluginException, InvalidDescriptionException, UnknownDependencyException;
@Nullable
public Plugin loadPlugin(@NotNull File file) throws InvalidPluginException, InvalidDescriptionException, UnknownDependencyException;
/**
* Loads the plugins contained within the specified directory
@@ -80,7 +87,8 @@ public interface PluginManager {
* @param directory Directory to check for plugins
* @return A list of all plugins loaded
*/
public Plugin[] loadPlugins(File directory);
@NotNull
public Plugin[] loadPlugins(@NotNull File directory);
/**
* Disables all the loaded plugins
@@ -102,7 +110,7 @@ public interface PluginManager {
* <i>Note: This is best-effort basis, and should not be used to test
* synchronized state. This is an indicator for flawed flow logic.</i>
*/
public void callEvent(Event event) throws IllegalStateException;
public void callEvent(@NotNull Event event) throws IllegalStateException;
/**
* Registers all the events in the given listener class
@@ -110,7 +118,7 @@ public interface PluginManager {
* @param listener Listener to register
* @param plugin Plugin to register
*/
public void registerEvents(Listener listener, Plugin plugin);
public void registerEvents(@NotNull Listener listener, @NotNull Plugin plugin);
/**
* Registers the specified executor to the given event class
@@ -121,7 +129,7 @@ public interface PluginManager {
* @param executor EventExecutor to register
* @param plugin Plugin to register
*/
public void registerEvent(Class<? extends Event> event, Listener listener, EventPriority priority, EventExecutor executor, Plugin plugin);
public void registerEvent(@NotNull Class<? extends Event> event, @NotNull Listener listener, @NotNull EventPriority priority, @NotNull EventExecutor executor, @NotNull Plugin plugin);
/**
* Registers the specified executor to the given event class
@@ -133,7 +141,7 @@ public interface PluginManager {
* @param plugin Plugin to register
* @param ignoreCancelled Whether to pass cancelled events or not
*/
public void registerEvent(Class<? extends Event> event, Listener listener, EventPriority priority, EventExecutor executor, Plugin plugin, boolean ignoreCancelled);
public void registerEvent(@NotNull Class<? extends Event> event, @NotNull Listener listener, @NotNull EventPriority priority, @NotNull EventExecutor executor, @NotNull Plugin plugin, boolean ignoreCancelled);
/**
* Enables the specified plugin
@@ -143,7 +151,7 @@ public interface PluginManager {
*
* @param plugin Plugin to enable
*/
public void enablePlugin(Plugin plugin);
public void enablePlugin(@NotNull Plugin plugin);
/**
* Disables the specified plugin
@@ -152,7 +160,7 @@ public interface PluginManager {
*
* @param plugin Plugin to disable
*/
public void disablePlugin(Plugin plugin);
public void disablePlugin(@NotNull Plugin plugin);
/**
* Gets a {@link Permission} from its fully qualified name
@@ -160,7 +168,8 @@ public interface PluginManager {
* @param name Name of the permission
* @return Permission, or null if none
*/
public Permission getPermission(String name);
@Nullable
public Permission getPermission(@NotNull String name);
/**
* Adds a {@link Permission} to this plugin manager.
@@ -172,7 +181,7 @@ public interface PluginManager {
* @throws IllegalArgumentException Thrown when a permission with the same
* name already exists
*/
public void addPermission(Permission perm);
public void addPermission(@NotNull Permission perm);
/**
* Removes a {@link Permission} registration from this plugin manager.
@@ -185,7 +194,7 @@ public interface PluginManager {
*
* @param perm Permission to remove
*/
public void removePermission(Permission perm);
public void removePermission(@NotNull Permission perm);
/**
* Removes a {@link Permission} registration from this plugin manager.
@@ -198,7 +207,7 @@ public interface PluginManager {
*
* @param name Permission to remove
*/
public void removePermission(String name);
public void removePermission(@NotNull String name);
/**
* Gets the default permissions for the given op status
@@ -206,6 +215,7 @@ public interface PluginManager {
* @param op Which set of default permissions to get
* @return The default permissions
*/
@NotNull
public Set<Permission> getDefaultPermissions(boolean op);
/**
@@ -216,7 +226,7 @@ public interface PluginManager {
*
* @param perm Permission to recalculate
*/
public void recalculatePermissionDefaults(Permission perm);
public void recalculatePermissionDefaults(@NotNull Permission perm);
/**
* Subscribes the given Permissible for information about the requested
@@ -228,7 +238,7 @@ public interface PluginManager {
* @param permission Permission to subscribe to
* @param permissible Permissible subscribing
*/
public void subscribeToPermission(String permission, Permissible permissible);
public void subscribeToPermission(@NotNull String permission, @NotNull Permissible permissible);
/**
* Unsubscribes the given Permissible for information about the requested
@@ -237,7 +247,7 @@ public interface PluginManager {
* @param permission Permission to unsubscribe from
* @param permissible Permissible subscribing
*/
public void unsubscribeFromPermission(String permission, Permissible permissible);
public void unsubscribeFromPermission(@NotNull String permission, @NotNull Permissible permissible);
/**
* Gets a set containing all subscribed {@link Permissible}s to the given
@@ -246,7 +256,8 @@ public interface PluginManager {
* @param permission Permission to query for
* @return Set containing all subscribed permissions
*/
public Set<Permissible> getPermissionSubscriptions(String permission);
@NotNull
public Set<Permissible> getPermissionSubscriptions(@NotNull String permission);
/**
* Subscribes to the given Default permissions by operator status
@@ -257,7 +268,7 @@ public interface PluginManager {
* @param op Default list to subscribe to
* @param permissible Permissible subscribing
*/
public void subscribeToDefaultPerms(boolean op, Permissible permissible);
public void subscribeToDefaultPerms(boolean op, @NotNull Permissible permissible);
/**
* Unsubscribes from the given Default permissions by operator status
@@ -265,7 +276,7 @@ public interface PluginManager {
* @param op Default list to unsubscribe from
* @param permissible Permissible subscribing
*/
public void unsubscribeFromDefaultPerms(boolean op, Permissible permissible);
public void unsubscribeFromDefaultPerms(boolean op, @NotNull Permissible permissible);
/**
* Gets a set containing all subscribed {@link Permissible}s to the given
@@ -274,6 +285,7 @@ public interface PluginManager {
* @param op Default list to query for
* @return Set containing all subscribed permissions
*/
@NotNull
public Set<Permissible> getDefaultPermSubscriptions(boolean op);
/**
@@ -283,6 +295,7 @@ public interface PluginManager {
*
* @return Set containing all current registered permissions
*/
@NotNull
public Set<Permission> getPermissions();
/**

View File

@@ -1,6 +1,7 @@
package org.bukkit.plugin;
import org.bukkit.event.*;
import org.jetbrains.annotations.NotNull;
/**
* Stores relevant information for plugin listeners
@@ -12,7 +13,7 @@ public class RegisteredListener {
private final EventExecutor executor;
private final boolean ignoreCancelled;
public RegisteredListener(final Listener listener, final EventExecutor executor, final EventPriority priority, final Plugin plugin, final boolean ignoreCancelled) {
public RegisteredListener(@NotNull final Listener listener, @NotNull final EventExecutor executor, @NotNull final EventPriority priority, @NotNull final Plugin plugin, final boolean ignoreCancelled) {
this.listener = listener;
this.priority = priority;
this.plugin = plugin;
@@ -25,6 +26,7 @@ public class RegisteredListener {
*
* @return Registered Listener
*/
@NotNull
public Listener getListener() {
return listener;
}
@@ -34,6 +36,7 @@ public class RegisteredListener {
*
* @return Registered Plugin
*/
@NotNull
public Plugin getPlugin() {
return plugin;
}
@@ -43,6 +46,7 @@ public class RegisteredListener {
*
* @return Registered Priority
*/
@NotNull
public EventPriority getPriority() {
return priority;
}
@@ -53,7 +57,7 @@ public class RegisteredListener {
* @param event The event
* @throws EventException If an event handler throws an exception.
*/
public void callEvent(final Event event) throws EventException {
public void callEvent(@NotNull final Event event) throws EventException {
if (event instanceof Cancellable) {
if (((Cancellable) event).isCancelled() && isIgnoringCancelled()) {
return;

View File

@@ -1,5 +1,7 @@
package org.bukkit.plugin;
import org.jetbrains.annotations.NotNull;
/**
* A registered service provider.
*
@@ -12,31 +14,34 @@ public class RegisteredServiceProvider<T> implements Comparable<RegisteredServic
private T provider;
private ServicePriority priority;
public RegisteredServiceProvider(Class<T> service, T provider, ServicePriority priority, Plugin plugin) {
public RegisteredServiceProvider(@NotNull Class<T> service, @NotNull T provider, @NotNull ServicePriority priority, @NotNull Plugin plugin) {
this.service = service;
this.plugin = plugin;
this.provider = provider;
this.priority = priority;
}
@NotNull
public Class<T> getService() {
return service;
}
@NotNull
public Plugin getPlugin() {
return plugin;
}
@NotNull
public T getProvider() {
return provider;
}
@NotNull
public ServicePriority getPriority() {
return priority;
}
public int compareTo(RegisteredServiceProvider<?> other) {
public int compareTo(@NotNull RegisteredServiceProvider<?> other) {
if (priority.ordinal() == other.getPriority().ordinal()) {
return 0;
} else {

View File

@@ -1,5 +1,8 @@
package org.bukkit.plugin;
import org.jetbrains.annotations.NotNull;
import org.jetbrains.annotations.Nullable;
import java.util.Collection;
import java.util.List;
@@ -22,14 +25,14 @@ public interface ServicesManager {
* @param plugin plugin with the provider
* @param priority priority of the provider
*/
public <T> void register(Class<T> service, T provider, Plugin plugin, ServicePriority priority);
public <T> void register(@NotNull Class<T> service, @NotNull T provider, @NotNull Plugin plugin, @NotNull ServicePriority priority);
/**
* Unregister all the providers registered by a particular plugin.
*
* @param plugin The plugin
*/
public void unregisterAll(Plugin plugin);
public void unregisterAll(@NotNull Plugin plugin);
/**
* Unregister a particular provider for a particular service.
@@ -37,14 +40,14 @@ public interface ServicesManager {
* @param service The service interface
* @param provider The service provider implementation
*/
public void unregister(Class<?> service, Object provider);
public void unregister(@NotNull Class<?> service, @NotNull Object provider);
/**
* Unregister a particular provider.
*
* @param provider The service provider implementation
*/
public void unregister(Object provider);
public void unregister(@NotNull Object provider);
/**
* Queries for a provider. This may return if no provider has been
@@ -54,7 +57,8 @@ public interface ServicesManager {
* @param service The service interface
* @return provider or null
*/
public <T> T load(Class<T> service);
@Nullable
public <T> T load(@NotNull Class<T> service);
/**
* Queries for a provider registration. This may return if no provider
@@ -64,15 +68,17 @@ public interface ServicesManager {
* @param service The service interface
* @return provider registration or null
*/
public <T> RegisteredServiceProvider<T> getRegistration(Class<T> service);
@Nullable
public <T> RegisteredServiceProvider<T> getRegistration(@NotNull Class<T> service);
/**
* Get registrations of providers for a plugin.
*
* @param plugin The plugin
* @return provider registration or null
* @return provider registrations
*/
public List<RegisteredServiceProvider<?>> getRegistrations(Plugin plugin);
@NotNull
public List<RegisteredServiceProvider<?>> getRegistrations(@NotNull Plugin plugin);
/**
* Get registrations of providers for a service. The returned list is
@@ -82,7 +88,8 @@ public interface ServicesManager {
* @param service The service interface
* @return list of registrations
*/
public <T> Collection<RegisteredServiceProvider<T>> getRegistrations(Class<T> service);
@NotNull
public <T> Collection<RegisteredServiceProvider<T>> getRegistrations(@NotNull Class<T> service);
/**
* Get a list of known services. A service is known if it has registered
@@ -90,6 +97,7 @@ public interface ServicesManager {
*
* @return list of known services
*/
@NotNull
public Collection<Class<?>> getKnownServices();
/**
@@ -101,6 +109,6 @@ public interface ServicesManager {
* @param service service to check
* @return whether there has been a registered provider
*/
public <T> boolean isProvidedFor(Class<T> service);
public <T> boolean isProvidedFor(@NotNull Class<T> service);
}

View File

@@ -34,6 +34,8 @@ import org.bukkit.permissions.PermissionDefault;
import org.bukkit.util.FileUtil;
import com.google.common.collect.ImmutableSet;
import org.jetbrains.annotations.NotNull;
import org.jetbrains.annotations.Nullable;
/**
* Handles all plugin management from the Server
@@ -51,7 +53,7 @@ public final class SimplePluginManager implements PluginManager {
private final Map<Boolean, Map<Permissible, Boolean>> defSubs = new HashMap<Boolean, Map<Permissible, Boolean>>();
private boolean useTimings = false;
public SimplePluginManager(Server instance, SimpleCommandMap commandMap) {
public SimplePluginManager(@NotNull Server instance, @NotNull SimpleCommandMap commandMap) {
server = instance;
this.commandMap = commandMap;
@@ -66,7 +68,7 @@ public final class SimplePluginManager implements PluginManager {
* @throws IllegalArgumentException Thrown when the given Class is not a
* valid PluginLoader
*/
public void registerInterface(Class<? extends PluginLoader> loader) throws IllegalArgumentException {
public void registerInterface(@NotNull Class<? extends PluginLoader> loader) throws IllegalArgumentException {
PluginLoader instance;
if (PluginLoader.class.isAssignableFrom(loader)) {
@@ -101,7 +103,8 @@ public final class SimplePluginManager implements PluginManager {
* @param directory Directory to check for plugins
* @return A list of all plugins loaded
*/
public Plugin[] loadPlugins(File directory) {
@NotNull
public Plugin[] loadPlugins(@NotNull File directory) {
Validate.notNull(directory, "Directory cannot be null");
Validate.isTrue(directory.isDirectory(), "Directory must be a directory");
@@ -309,7 +312,8 @@ public final class SimplePluginManager implements PluginManager {
* @throws UnknownDependencyException If a required dependency could not
* be found
*/
public synchronized Plugin loadPlugin(File file) throws InvalidPluginException, UnknownDependencyException {
@Nullable
public synchronized Plugin loadPlugin(@NotNull File file) throws InvalidPluginException, UnknownDependencyException {
Validate.notNull(file, "File cannot be null");
checkUpdate(file);
@@ -336,7 +340,7 @@ public final class SimplePluginManager implements PluginManager {
return result;
}
private void checkUpdate(File file) {
private void checkUpdate(@NotNull File file) {
if (updateDirectory == null || !updateDirectory.isDirectory()) {
return;
}
@@ -355,10 +359,12 @@ public final class SimplePluginManager implements PluginManager {
* @param name Name of the plugin to check
* @return Plugin if it exists, otherwise null
*/
public synchronized Plugin getPlugin(String name) {
@Nullable
public synchronized Plugin getPlugin(@NotNull String name) {
return lookupNames.get(name.replace(' ', '_'));
}
@NotNull
public synchronized Plugin[] getPlugins() {
return plugins.toArray(new Plugin[plugins.size()]);
}
@@ -371,7 +377,7 @@ public final class SimplePluginManager implements PluginManager {
* @param name Name of the plugin to check
* @return true if the plugin is enabled, otherwise false
*/
public boolean isPluginEnabled(String name) {
public boolean isPluginEnabled(@NotNull String name) {
Plugin plugin = getPlugin(name);
return isPluginEnabled(plugin);
@@ -383,7 +389,7 @@ public final class SimplePluginManager implements PluginManager {
* @param plugin Plugin to check
* @return true if the plugin is enabled, otherwise false
*/
public boolean isPluginEnabled(Plugin plugin) {
public boolean isPluginEnabled(@Nullable Plugin plugin) {
if ((plugin != null) && (plugins.contains(plugin))) {
return plugin.isEnabled();
} else {
@@ -391,7 +397,7 @@ public final class SimplePluginManager implements PluginManager {
}
}
public void enablePlugin(final Plugin plugin) {
public void enablePlugin(@NotNull final Plugin plugin) {
if (!plugin.isEnabled()) {
List<Command> pluginCommands = PluginCommandYamlParser.parse(plugin);
@@ -416,7 +422,7 @@ public final class SimplePluginManager implements PluginManager {
}
}
public void disablePlugin(final Plugin plugin) {
public void disablePlugin(@NotNull final Plugin plugin) {
if (plugin.isEnabled()) {
try {
plugin.getPluginLoader().disablePlugin(plugin);
@@ -471,7 +477,7 @@ public final class SimplePluginManager implements PluginManager {
*
* @param event Event details
*/
public void callEvent(Event event) {
public void callEvent(@NotNull Event event) {
if (event.isAsynchronous()) {
if (Thread.holdsLock(this)) {
throw new IllegalStateException(event.getEventName() + " cannot be triggered asynchronously from inside synchronized code.");
@@ -487,7 +493,7 @@ public final class SimplePluginManager implements PluginManager {
}
}
private void fireEvent(Event event) {
private void fireEvent(@NotNull Event event) {
HandlerList handlers = event.getHandlers();
RegisteredListener[] listeners = handlers.getRegisteredListeners();
@@ -517,7 +523,7 @@ public final class SimplePluginManager implements PluginManager {
}
}
public void registerEvents(Listener listener, Plugin plugin) {
public void registerEvents(@NotNull Listener listener, @NotNull Plugin plugin) {
if (!plugin.isEnabled()) {
throw new IllegalPluginAccessException("Plugin attempted to register " + listener + " while not enabled");
}
@@ -528,7 +534,7 @@ public final class SimplePluginManager implements PluginManager {
}
public void registerEvent(Class<? extends Event> event, Listener listener, EventPriority priority, EventExecutor executor, Plugin plugin) {
public void registerEvent(@NotNull Class<? extends Event> event, @NotNull Listener listener, @NotNull EventPriority priority, @NotNull EventExecutor executor, @NotNull Plugin plugin) {
registerEvent(event, listener, priority, executor, plugin, false);
}
@@ -544,7 +550,7 @@ public final class SimplePluginManager implements PluginManager {
* @param ignoreCancelled Do not call executor if event was already
* cancelled
*/
public void registerEvent(Class<? extends Event> event, Listener listener, EventPriority priority, EventExecutor executor, Plugin plugin, boolean ignoreCancelled) {
public void registerEvent(@NotNull Class<? extends Event> event, @NotNull Listener listener, @NotNull EventPriority priority, @NotNull EventExecutor executor, @NotNull Plugin plugin, boolean ignoreCancelled) {
Validate.notNull(listener, "Listener cannot be null");
Validate.notNull(priority, "Priority cannot be null");
Validate.notNull(executor, "Executor cannot be null");
@@ -561,7 +567,8 @@ public final class SimplePluginManager implements PluginManager {
}
}
private HandlerList getEventListeners(Class<? extends Event> type) {
@NotNull
private HandlerList getEventListeners(@NotNull Class<? extends Event> type) {
try {
Method method = getRegistrationClass(type).getDeclaredMethod("getHandlerList");
method.setAccessible(true);
@@ -571,7 +578,8 @@ public final class SimplePluginManager implements PluginManager {
}
}
private Class<? extends Event> getRegistrationClass(Class<? extends Event> clazz) {
@NotNull
private Class<? extends Event> getRegistrationClass(@NotNull Class<? extends Event> clazz) {
try {
clazz.getDeclaredMethod("getHandlerList");
return clazz;
@@ -586,16 +594,17 @@ public final class SimplePluginManager implements PluginManager {
}
}
public Permission getPermission(String name) {
@Nullable
public Permission getPermission(@NotNull String name) {
return permissions.get(name.toLowerCase(java.util.Locale.ENGLISH));
}
public void addPermission(Permission perm) {
public void addPermission(@NotNull Permission perm) {
addPermission(perm, true);
}
@Deprecated
public void addPermission(Permission perm, boolean dirty) {
public void addPermission(@NotNull Permission perm, boolean dirty) {
String name = perm.getName().toLowerCase(java.util.Locale.ENGLISH);
if (permissions.containsKey(name)) {
@@ -606,19 +615,20 @@ public final class SimplePluginManager implements PluginManager {
calculatePermissionDefault(perm, dirty);
}
@NotNull
public Set<Permission> getDefaultPermissions(boolean op) {
return ImmutableSet.copyOf(defaultPerms.get(op));
}
public void removePermission(Permission perm) {
public void removePermission(@NotNull Permission perm) {
removePermission(perm.getName());
}
public void removePermission(String name) {
public void removePermission(@NotNull String name) {
permissions.remove(name.toLowerCase(java.util.Locale.ENGLISH));
}
public void recalculatePermissionDefaults(Permission perm) {
public void recalculatePermissionDefaults(@NotNull Permission perm) {
if (perm != null && permissions.containsKey(perm.getName().toLowerCase(java.util.Locale.ENGLISH))) {
defaultPerms.get(true).remove(perm);
defaultPerms.get(false).remove(perm);
@@ -627,7 +637,7 @@ public final class SimplePluginManager implements PluginManager {
}
}
private void calculatePermissionDefault(Permission perm, boolean dirty) {
private void calculatePermissionDefault(@NotNull Permission perm, boolean dirty) {
if ((perm.getDefault() == PermissionDefault.OP) || (perm.getDefault() == PermissionDefault.TRUE)) {
defaultPerms.get(true).add(perm);
if (dirty) {
@@ -656,7 +666,7 @@ public final class SimplePluginManager implements PluginManager {
}
}
public void subscribeToPermission(String permission, Permissible permissible) {
public void subscribeToPermission(@NotNull String permission, @NotNull Permissible permissible) {
String name = permission.toLowerCase(java.util.Locale.ENGLISH);
Map<Permissible, Boolean> map = permSubs.get(name);
@@ -668,7 +678,7 @@ public final class SimplePluginManager implements PluginManager {
map.put(permissible, true);
}
public void unsubscribeFromPermission(String permission, Permissible permissible) {
public void unsubscribeFromPermission(@NotNull String permission, @NotNull Permissible permissible) {
String name = permission.toLowerCase(java.util.Locale.ENGLISH);
Map<Permissible, Boolean> map = permSubs.get(name);
@@ -681,7 +691,8 @@ public final class SimplePluginManager implements PluginManager {
}
}
public Set<Permissible> getPermissionSubscriptions(String permission) {
@NotNull
public Set<Permissible> getPermissionSubscriptions(@NotNull String permission) {
String name = permission.toLowerCase(java.util.Locale.ENGLISH);
Map<Permissible, Boolean> map = permSubs.get(name);
@@ -692,7 +703,7 @@ public final class SimplePluginManager implements PluginManager {
}
}
public void subscribeToDefaultPerms(boolean op, Permissible permissible) {
public void subscribeToDefaultPerms(boolean op, @NotNull Permissible permissible) {
Map<Permissible, Boolean> map = defSubs.get(op);
if (map == null) {
@@ -703,7 +714,7 @@ public final class SimplePluginManager implements PluginManager {
map.put(permissible, true);
}
public void unsubscribeFromDefaultPerms(boolean op, Permissible permissible) {
public void unsubscribeFromDefaultPerms(boolean op, @NotNull Permissible permissible) {
Map<Permissible, Boolean> map = defSubs.get(op);
if (map != null) {
@@ -715,6 +726,7 @@ public final class SimplePluginManager implements PluginManager {
}
}
@NotNull
public Set<Permissible> getDefaultPermSubscriptions(boolean op) {
Map<Permissible, Boolean> map = defSubs.get(op);
@@ -725,6 +737,7 @@ public final class SimplePluginManager implements PluginManager {
}
}
@NotNull
public Set<Permission> getPermissions() {
return new HashSet<Permission>(permissions.values());
}

View File

@@ -6,6 +6,8 @@ import org.bukkit.event.server.ServiceUnregisterEvent;
import com.google.common.collect.ImmutableList;
import com.google.common.collect.ImmutableSet;
import org.jetbrains.annotations.NotNull;
import org.jetbrains.annotations.Nullable;
import java.util.ArrayList;
import java.util.Collections;
@@ -35,7 +37,7 @@ public class SimpleServicesManager implements ServicesManager {
* @param plugin plugin with the provider
* @param priority priority of the provider
*/
public <T> void register(Class<T> service, T provider, Plugin plugin, ServicePriority priority) {
public <T> void register(@NotNull Class<T> service, @NotNull T provider, @NotNull Plugin plugin, @NotNull ServicePriority priority) {
RegisteredServiceProvider<T> registeredProvider = null;
synchronized (providers) {
List<RegisteredServiceProvider<?>> registered = providers.get(service);
@@ -63,7 +65,7 @@ public class SimpleServicesManager implements ServicesManager {
*
* @param plugin The plugin
*/
public void unregisterAll(Plugin plugin) {
public void unregisterAll(@NotNull Plugin plugin) {
ArrayList<ServiceUnregisterEvent> unregisteredEvents = new ArrayList<ServiceUnregisterEvent>();
synchronized (providers) {
Iterator<Map.Entry<Class<?>, List<RegisteredServiceProvider<?>>>> it = providers.entrySet().iterator();
@@ -105,7 +107,7 @@ public class SimpleServicesManager implements ServicesManager {
* @param service The service interface
* @param provider The service provider implementation
*/
public void unregister(Class<?> service, Object provider) {
public void unregister(@NotNull Class<?> service, @NotNull Object provider) {
ArrayList<ServiceUnregisterEvent> unregisteredEvents = new ArrayList<ServiceUnregisterEvent>();
synchronized (providers) {
Iterator<Map.Entry<Class<?>, List<RegisteredServiceProvider<?>>>> it = providers.entrySet().iterator();
@@ -152,7 +154,7 @@ public class SimpleServicesManager implements ServicesManager {
*
* @param provider The service provider implementation
*/
public void unregister(Object provider) {
public void unregister(@NotNull Object provider) {
ArrayList<ServiceUnregisterEvent> unregisteredEvents = new ArrayList<ServiceUnregisterEvent>();
synchronized (providers) {
Iterator<Map.Entry<Class<?>, List<RegisteredServiceProvider<?>>>> it = providers.entrySet().iterator();
@@ -196,7 +198,8 @@ public class SimpleServicesManager implements ServicesManager {
* @param service The service interface
* @return provider or null
*/
public <T> T load(Class<T> service) {
@Nullable
public <T> T load(@NotNull Class<T> service) {
synchronized (providers) {
List<RegisteredServiceProvider<?>> registered = providers.get(service);
@@ -217,8 +220,9 @@ public class SimpleServicesManager implements ServicesManager {
* @param service The service interface
* @return provider registration or null
*/
@Nullable
@SuppressWarnings("unchecked")
public <T> RegisteredServiceProvider<T> getRegistration(Class<T> service) {
public <T> RegisteredServiceProvider<T> getRegistration(@NotNull Class<T> service) {
synchronized (providers) {
List<RegisteredServiceProvider<?>> registered = providers.get(service);
@@ -235,9 +239,10 @@ public class SimpleServicesManager implements ServicesManager {
* Get registrations of providers for a plugin.
*
* @param plugin The plugin
* @return provider registration or null
* @return provider registrations
*/
public List<RegisteredServiceProvider<?>> getRegistrations(Plugin plugin) {
@NotNull
public List<RegisteredServiceProvider<?>> getRegistrations(@NotNull Plugin plugin) {
ImmutableList.Builder<RegisteredServiceProvider<?>> ret = ImmutableList.<RegisteredServiceProvider<?>>builder();
synchronized (providers) {
for (List<RegisteredServiceProvider<?>> registered : providers.values()) {
@@ -259,8 +264,9 @@ public class SimpleServicesManager implements ServicesManager {
* @param service The service interface
* @return a copy of the list of registrations
*/
@NotNull
@SuppressWarnings("unchecked")
public <T> List<RegisteredServiceProvider<T>> getRegistrations(Class<T> service) {
public <T> List<RegisteredServiceProvider<T>> getRegistrations(@NotNull Class<T> service) {
ImmutableList.Builder<RegisteredServiceProvider<T>> ret;
synchronized (providers) {
List<RegisteredServiceProvider<?>> registered = providers.get(service);
@@ -285,6 +291,7 @@ public class SimpleServicesManager implements ServicesManager {
*
* @return a copy of the set of known services
*/
@NotNull
public Set<Class<?>> getKnownServices() {
synchronized (providers) {
return ImmutableSet.<Class<?>>copyOf(providers.keySet());
@@ -298,7 +305,7 @@ public class SimpleServicesManager implements ServicesManager {
* @param service service to check
* @return true if and only if there are registered providers
*/
public <T> boolean isProvidedFor(Class<T> service) {
public <T> boolean isProvidedFor(@NotNull Class<T> service) {
synchronized (providers) {
return providers.containsKey(service);
}

View File

@@ -4,6 +4,8 @@ import org.bukkit.event.Event;
import org.bukkit.event.EventException;
import org.bukkit.event.EventPriority;
import org.bukkit.event.Listener;
import org.jetbrains.annotations.NotNull;
import org.jetbrains.annotations.Nullable;
/**
* Extends RegisteredListener to include timing information
@@ -14,12 +16,12 @@ public class TimedRegisteredListener extends RegisteredListener {
private Class<? extends Event> eventClass;
private boolean multiple = false;
public TimedRegisteredListener(final Listener pluginListener, final EventExecutor eventExecutor, final EventPriority eventPriority, final Plugin registeredPlugin, final boolean listenCancelled) {
public TimedRegisteredListener(@NotNull final Listener pluginListener, @NotNull final EventExecutor eventExecutor, @NotNull final EventPriority eventPriority, @NotNull final Plugin registeredPlugin, final boolean listenCancelled) {
super(pluginListener, eventExecutor, eventPriority, registeredPlugin, listenCancelled);
}
@Override
public void callEvent(Event event) throws EventException {
public void callEvent(@NotNull Event event) throws EventException {
if (event.isAsynchronous()) {
super.callEvent(event);
return;
@@ -37,7 +39,8 @@ public class TimedRegisteredListener extends RegisteredListener {
totalTime += System.nanoTime() - start;
}
private static Class<?> getCommonSuperclass(Class<?> class1, Class<?> class2) {
@NotNull
private static Class<?> getCommonSuperclass(@NotNull Class<?> class1, @NotNull Class<?> class2) {
while (!class1.isAssignableFrom(class2)) {
class1 = class1.getSuperclass();
}
@@ -81,6 +84,7 @@ public class TimedRegisteredListener extends RegisteredListener {
*
* @return the event class handled by this RegisteredListener
*/
@Nullable
public Class<? extends Event> getEventClass() {
return eventClass;
}

View File

@@ -27,6 +27,8 @@ import org.bukkit.plugin.PluginLoader;
import org.bukkit.plugin.PluginLogger;
import com.google.common.base.Charsets;
import org.jetbrains.annotations.NotNull;
import org.jetbrains.annotations.Nullable;
/**
* Represents a Java plugin
@@ -52,7 +54,7 @@ public abstract class JavaPlugin extends PluginBase {
((PluginClassLoader) classLoader).initialize(this);
}
protected JavaPlugin(final JavaPluginLoader loader, final PluginDescriptionFile description, final File dataFolder, final File file) {
protected JavaPlugin(@NotNull final JavaPluginLoader loader, @NotNull final PluginDescriptionFile description, @NotNull final File dataFolder, @NotNull final File file) {
final ClassLoader classLoader = this.getClass().getClassLoader();
if (classLoader instanceof PluginClassLoader) {
throw new IllegalStateException("Cannot use initialization constructor at runtime");
@@ -66,6 +68,7 @@ public abstract class JavaPlugin extends PluginBase {
*
* @return The folder.
*/
@NotNull
@Override
public final File getDataFolder() {
return dataFolder;
@@ -76,6 +79,7 @@ public abstract class JavaPlugin extends PluginBase {
*
* @return PluginLoader that controls this plugin
*/
@NotNull
@Override
public final PluginLoader getPluginLoader() {
return loader;
@@ -86,6 +90,7 @@ public abstract class JavaPlugin extends PluginBase {
*
* @return Server running this plugin
*/
@NotNull
@Override
public final Server getServer() {
return server;
@@ -107,6 +112,7 @@ public abstract class JavaPlugin extends PluginBase {
*
* @return File containing this plugin
*/
@NotNull
protected File getFile() {
return file;
}
@@ -116,11 +122,13 @@ public abstract class JavaPlugin extends PluginBase {
*
* @return Contents of the plugin.yaml file
*/
@NotNull
@Override
public final PluginDescriptionFile getDescription() {
return description;
}
@NotNull
@Override
public FileConfiguration getConfig() {
if (newConfig == null) {
@@ -139,7 +147,8 @@ public abstract class JavaPlugin extends PluginBase {
* @throws IllegalArgumentException if file is null
* @see ClassLoader#getResourceAsStream(String)
*/
protected final Reader getTextResource(String file) {
@Nullable
protected final Reader getTextResource(@NotNull String file) {
final InputStream in = getResource(file);
return in == null ? null : new InputStreamReader(in, Charsets.UTF_8);
@@ -174,7 +183,7 @@ public abstract class JavaPlugin extends PluginBase {
}
@Override
public void saveResource(String resourcePath, boolean replace) {
public void saveResource(@NotNull String resourcePath, boolean replace) {
if (resourcePath == null || resourcePath.equals("")) {
throw new IllegalArgumentException("ResourcePath cannot be null or empty");
}
@@ -211,8 +220,9 @@ public abstract class JavaPlugin extends PluginBase {
}
}
@Nullable
@Override
public InputStream getResource(String filename) {
public InputStream getResource(@NotNull String filename) {
if (filename == null) {
throw new IllegalArgumentException("Filename cannot be null");
}
@@ -237,6 +247,7 @@ public abstract class JavaPlugin extends PluginBase {
*
* @return ClassLoader holding this plugin
*/
@NotNull
protected final ClassLoader getClassLoader() {
return classLoader;
}
@@ -259,7 +270,7 @@ public abstract class JavaPlugin extends PluginBase {
}
final void init(PluginLoader loader, Server server, PluginDescriptionFile description, File dataFolder, File file, ClassLoader classLoader) {
final void init(@NotNull PluginLoader loader, @NotNull Server server, @NotNull PluginDescriptionFile description, @NotNull File dataFolder, @NotNull File file, @NotNull ClassLoader classLoader) {
this.loader = loader;
this.server = server;
this.file = file;
@@ -274,7 +285,7 @@ public abstract class JavaPlugin extends PluginBase {
* {@inheritDoc}
*/
@Override
public boolean onCommand(CommandSender sender, Command command, String label, String[] args) {
public boolean onCommand(@NotNull CommandSender sender, @NotNull Command command, @NotNull String label, @NotNull String[] args) {
return false;
}
@@ -282,7 +293,8 @@ public abstract class JavaPlugin extends PluginBase {
* {@inheritDoc}
*/
@Override
public List<String> onTabComplete(CommandSender sender, Command command, String alias, String[] args) {
@Nullable
public List<String> onTabComplete(@NotNull CommandSender sender, @NotNull Command command, @NotNull String alias, @NotNull String[] args) {
return null;
}
@@ -294,7 +306,8 @@ public abstract class JavaPlugin extends PluginBase {
* @param name name or alias of the command
* @return the plugin command if found, otherwise null
*/
public PluginCommand getCommand(String name) {
@Nullable
public PluginCommand getCommand(@NotNull String name) {
String alias = name.toLowerCase(java.util.Locale.ENGLISH);
PluginCommand command = getServer().getPluginCommand(alias);
@@ -318,8 +331,9 @@ public abstract class JavaPlugin extends PluginBase {
@Override
public void onEnable() {}
@Nullable
@Override
public ChunkGenerator getDefaultWorldGenerator(String worldName, String id) {
public ChunkGenerator getDefaultWorldGenerator(@NotNull String worldName, @Nullable String id) {
return null;
}
@@ -333,11 +347,13 @@ public abstract class JavaPlugin extends PluginBase {
this.naggable = canNag;
}
@NotNull
@Override
public Logger getLogger() {
return logger;
}
@NotNull
@Override
public String toString() {
return description.getFullName();
@@ -366,7 +382,8 @@ public abstract class JavaPlugin extends PluginBase {
* @throws ClassCastException if plugin that provided the class does not
* extend the class
*/
public static <T extends JavaPlugin> T getPlugin(Class<T> clazz) {
@NotNull
public static <T extends JavaPlugin> T getPlugin(@NotNull Class<T> clazz) {
Validate.notNull(clazz, "Null class cannot have a plugin");
if (!JavaPlugin.class.isAssignableFrom(clazz)) {
throw new IllegalArgumentException(clazz + " does not extend " + JavaPlugin.class);
@@ -394,7 +411,8 @@ public abstract class JavaPlugin extends PluginBase {
* @throws IllegalStateException if called from the static initializer for
* given JavaPlugin
*/
public static JavaPlugin getProvidingPlugin(Class<?> clazz) {
@NotNull
public static JavaPlugin getProvidingPlugin(@NotNull Class<?> clazz) {
Validate.notNull(clazz, "Null class cannot have a plugin");
final ClassLoader cl = clazz.getClassLoader();
if (!(cl instanceof PluginClassLoader)) {

View File

@@ -41,6 +41,8 @@ import org.bukkit.plugin.PluginLoader;
import org.bukkit.plugin.RegisteredListener;
import org.bukkit.plugin.TimedRegisteredListener;
import org.bukkit.plugin.UnknownDependencyException;
import org.jetbrains.annotations.NotNull;
import org.jetbrains.annotations.Nullable;
import org.yaml.snakeyaml.error.YAMLException;
/**
@@ -58,12 +60,13 @@ public final class JavaPluginLoader implements PluginLoader {
* @param instance the server instance
*/
@Deprecated
public JavaPluginLoader(Server instance) {
public JavaPluginLoader(@NotNull Server instance) {
Validate.notNull(instance, "Server cannot be null");
server = instance;
}
public Plugin loadPlugin(final File file) throws InvalidPluginException {
@NotNull
public Plugin loadPlugin(@NotNull final File file) throws InvalidPluginException {
Validate.notNull(file, "File cannot be null");
if (!file.exists()) {
@@ -139,7 +142,8 @@ public final class JavaPluginLoader implements PluginLoader {
return loader.plugin;
}
public PluginDescriptionFile getPluginDescription(File file) throws InvalidDescriptionException {
@NotNull
public PluginDescriptionFile getPluginDescription(@NotNull File file) throws InvalidDescriptionException {
Validate.notNull(file, "File cannot be null");
JarFile jar = null;
@@ -177,10 +181,12 @@ public final class JavaPluginLoader implements PluginLoader {
}
}
@NotNull
public Pattern[] getPluginFileFilters() {
return fileFilters.clone();
}
@Nullable
Class<?> getClassByName(final String name) {
Class<?> cachedClass = classes.get(name);
@@ -199,7 +205,7 @@ public final class JavaPluginLoader implements PluginLoader {
return null;
}
void setClass(final String name, final Class<?> clazz) {
void setClass(@NotNull final String name, @NotNull final Class<?> clazz) {
if (!classes.containsKey(name)) {
classes.put(name, clazz);
@@ -210,7 +216,7 @@ public final class JavaPluginLoader implements PluginLoader {
}
}
private void removeClass(String name) {
private void removeClass(@NotNull String name) {
Class<?> clazz = classes.remove(name);
try {
@@ -224,7 +230,8 @@ public final class JavaPluginLoader implements PluginLoader {
}
}
public Map<Class<? extends Event>, Set<RegisteredListener>> createRegisteredListeners(Listener listener, final Plugin plugin) {
@NotNull
public Map<Class<? extends Event>, Set<RegisteredListener>> createRegisteredListeners(@NotNull Listener listener, @NotNull final Plugin plugin) {
Validate.notNull(plugin, "Plugin can not be null");
Validate.notNull(listener, "Listener can not be null");
@@ -291,7 +298,7 @@ public final class JavaPluginLoader implements PluginLoader {
}
EventExecutor executor = new EventExecutor() {
public void execute(Listener listener, Event event) throws EventException {
public void execute(@NotNull Listener listener, @NotNull Event event) throws EventException {
try {
if (!eventClass.isAssignableFrom(event.getClass())) {
return;
@@ -313,7 +320,7 @@ public final class JavaPluginLoader implements PluginLoader {
return ret;
}
public void enablePlugin(final Plugin plugin) {
public void enablePlugin(@NotNull final Plugin plugin) {
Validate.isTrue(plugin instanceof JavaPlugin, "Plugin is not associated with this PluginLoader");
if (!plugin.isEnabled()) {
@@ -340,7 +347,7 @@ public final class JavaPluginLoader implements PluginLoader {
}
}
public void disablePlugin(Plugin plugin) {
public void disablePlugin(@NotNull Plugin plugin) {
Validate.isTrue(plugin instanceof JavaPlugin, "Plugin is not associated with this PluginLoader");
if (plugin.isEnabled()) {

View File

@@ -19,6 +19,8 @@ import java.util.jar.Manifest;
import org.apache.commons.lang.Validate;
import org.bukkit.plugin.InvalidPluginException;
import org.bukkit.plugin.PluginDescriptionFile;
import org.jetbrains.annotations.NotNull;
import org.jetbrains.annotations.Nullable;
/**
* A ClassLoader for plugins, to allow shared classes across multiple plugins
@@ -40,7 +42,7 @@ final class PluginClassLoader extends URLClassLoader {
ClassLoader.registerAsParallelCapable();
}
PluginClassLoader(final JavaPluginLoader loader, final ClassLoader parent, final PluginDescriptionFile description, final File dataFolder, final File file) throws IOException, InvalidPluginException, MalformedURLException {
PluginClassLoader(@NotNull final JavaPluginLoader loader, @Nullable final ClassLoader parent, @NotNull final PluginDescriptionFile description, @NotNull final File dataFolder, @NotNull final File file) throws IOException, InvalidPluginException, MalformedURLException {
super(new URL[] {file.toURI().toURL()}, parent);
Validate.notNull(loader, "Loader cannot be null");
@@ -80,7 +82,7 @@ final class PluginClassLoader extends URLClassLoader {
return findClass(name, true);
}
Class<?> findClass(String name, boolean checkGlobal) throws ClassNotFoundException {
Class<?> findClass(@NotNull String name, boolean checkGlobal) throws ClassNotFoundException {
if (name.startsWith("org.bukkit.") || name.startsWith("net.minecraft.")) {
throw new ClassNotFoundException(name);
}
@@ -154,11 +156,12 @@ final class PluginClassLoader extends URLClassLoader {
}
}
@NotNull
Set<String> getClasses() {
return classes.keySet();
}
synchronized void initialize(JavaPlugin javaPlugin) {
synchronized void initialize(@NotNull JavaPlugin javaPlugin) {
Validate.notNull(javaPlugin, "Initializing plugin cannot be null");
Validate.isTrue(javaPlugin.getClass().getClassLoader() == this, "Cannot initialize plugin outside of this class loader");
if (this.plugin != null || this.pluginInit != null) {

View File

@@ -4,6 +4,7 @@ import java.util.Set;
import org.bukkit.NamespacedKey;
import org.bukkit.entity.Player;
import org.bukkit.plugin.Plugin;
import org.jetbrains.annotations.NotNull;
/**
* A class responsible for managing the registrations of plugin channels and
@@ -35,7 +36,7 @@ public interface Messenger {
* @return True if the channel is reserved, otherwise false.
* @throws IllegalArgumentException Thrown if channel is null.
*/
public boolean isReservedChannel(String channel);
public boolean isReservedChannel(@NotNull String channel);
/**
* Registers the specific plugin to the requested outgoing plugin channel,
@@ -45,7 +46,7 @@ public interface Messenger {
* @param channel Channel to register.
* @throws IllegalArgumentException Thrown if plugin or channel is null.
*/
public void registerOutgoingPluginChannel(Plugin plugin, String channel);
public void registerOutgoingPluginChannel(@NotNull Plugin plugin, @NotNull String channel);
/**
* Unregisters the specific plugin from the requested outgoing plugin
@@ -57,7 +58,7 @@ public interface Messenger {
* @param channel Channel to unregister.
* @throws IllegalArgumentException Thrown if plugin or channel is null.
*/
public void unregisterOutgoingPluginChannel(Plugin plugin, String channel);
public void unregisterOutgoingPluginChannel(@NotNull Plugin plugin, @NotNull String channel);
/**
* Unregisters the specific plugin from all outgoing plugin channels, no
@@ -66,7 +67,7 @@ public interface Messenger {
* @param plugin Plugin that no longer wishes to send plugin messages.
* @throws IllegalArgumentException Thrown if plugin is null.
*/
public void unregisterOutgoingPluginChannel(Plugin plugin);
public void unregisterOutgoingPluginChannel(@NotNull Plugin plugin);
/**
* Registers the specific plugin for listening on the requested incoming
@@ -80,7 +81,8 @@ public interface Messenger {
* @throws IllegalArgumentException Thrown if plugin, channel or listener
* is null, or the listener is already registered for this channel.
*/
public PluginMessageListenerRegistration registerIncomingPluginChannel(Plugin plugin, String channel, PluginMessageListener listener);
@NotNull
public PluginMessageListenerRegistration registerIncomingPluginChannel(@NotNull Plugin plugin, @NotNull String channel, @NotNull PluginMessageListener listener);
/**
* Unregisters the specific plugin's listener from listening on the
@@ -93,7 +95,7 @@ public interface Messenger {
* @throws IllegalArgumentException Thrown if plugin, channel or listener
* is null.
*/
public void unregisterIncomingPluginChannel(Plugin plugin, String channel, PluginMessageListener listener);
public void unregisterIncomingPluginChannel(@NotNull Plugin plugin, @NotNull String channel, @NotNull PluginMessageListener listener);
/**
* Unregisters the specific plugin from listening on the requested
@@ -104,7 +106,7 @@ public interface Messenger {
* @param channel Channel to unregister.
* @throws IllegalArgumentException Thrown if plugin or channel is null.
*/
public void unregisterIncomingPluginChannel(Plugin plugin, String channel);
public void unregisterIncomingPluginChannel(@NotNull Plugin plugin, @NotNull String channel);
/**
* Unregisters the specific plugin from listening on all plugin channels
@@ -113,13 +115,14 @@ public interface Messenger {
* @param plugin Plugin that wishes to unregister from this channel.
* @throws IllegalArgumentException Thrown if plugin is null.
*/
public void unregisterIncomingPluginChannel(Plugin plugin);
public void unregisterIncomingPluginChannel(@NotNull Plugin plugin);
/**
* Gets a set containing all the outgoing plugin channels.
*
* @return List of all registered outgoing plugin channels.
*/
@NotNull
public Set<String> getOutgoingChannels();
/**
@@ -131,13 +134,15 @@ public interface Messenger {
* is registered to.
* @throws IllegalArgumentException Thrown if plugin is null.
*/
public Set<String> getOutgoingChannels(Plugin plugin);
@NotNull
public Set<String> getOutgoingChannels(@NotNull Plugin plugin);
/**
* Gets a set containing all the incoming plugin channels.
*
* @return List of all registered incoming plugin channels.
*/
@NotNull
public Set<String> getIncomingChannels();
/**
@@ -149,7 +154,8 @@ public interface Messenger {
* is registered for.
* @throws IllegalArgumentException Thrown if plugin is null.
*/
public Set<String> getIncomingChannels(Plugin plugin);
@NotNull
public Set<String> getIncomingChannels(@NotNull Plugin plugin);
/**
* Gets a set containing all the incoming plugin channel registrations
@@ -159,7 +165,8 @@ public interface Messenger {
* @return List of all registrations that the plugin has.
* @throws IllegalArgumentException Thrown if plugin is null.
*/
public Set<PluginMessageListenerRegistration> getIncomingChannelRegistrations(Plugin plugin);
@NotNull
public Set<PluginMessageListenerRegistration> getIncomingChannelRegistrations(@NotNull Plugin plugin);
/**
* Gets a set containing all the incoming plugin channel registrations
@@ -169,7 +176,8 @@ public interface Messenger {
* @return List of all registrations that are on the channel.
* @throws IllegalArgumentException Thrown if channel is null.
*/
public Set<PluginMessageListenerRegistration> getIncomingChannelRegistrations(String channel);
@NotNull
public Set<PluginMessageListenerRegistration> getIncomingChannelRegistrations(@NotNull String channel);
/**
* Gets a set containing all the incoming plugin channel registrations
@@ -180,7 +188,8 @@ public interface Messenger {
* @return List of all registrations that the plugin has.
* @throws IllegalArgumentException Thrown if plugin or channel is null.
*/
public Set<PluginMessageListenerRegistration> getIncomingChannelRegistrations(Plugin plugin, String channel);
@NotNull
public Set<PluginMessageListenerRegistration> getIncomingChannelRegistrations(@NotNull Plugin plugin, @NotNull String channel);
/**
* Checks if the specified plugin message listener registration is valid.
@@ -191,7 +200,7 @@ public interface Messenger {
* @param registration Registration to check.
* @return True if the registration is valid, otherwise false.
*/
public boolean isRegistrationValid(PluginMessageListenerRegistration registration);
public boolean isRegistrationValid(@NotNull PluginMessageListenerRegistration registration);
/**
* Checks if the specified plugin has registered to receive incoming
@@ -201,7 +210,7 @@ public interface Messenger {
* @param channel Channel to test for.
* @return True if the channel is registered, else false.
*/
public boolean isIncomingChannelRegistered(Plugin plugin, String channel);
public boolean isIncomingChannelRegistered(@NotNull Plugin plugin, @NotNull String channel);
/**
* Checks if the specified plugin has registered to send outgoing messages
@@ -211,7 +220,7 @@ public interface Messenger {
* @param channel Channel to test for.
* @return True if the channel is registered, else false.
*/
public boolean isOutgoingChannelRegistered(Plugin plugin, String channel);
public boolean isOutgoingChannelRegistered(@NotNull Plugin plugin, @NotNull String channel);
/**
* Dispatches the specified incoming message to any registered listeners.
@@ -220,5 +229,5 @@ public interface Messenger {
* @param channel Channel that the message was sent by.
* @param message Raw payload of the message.
*/
public void dispatchIncomingMessage(Player source, String channel, byte[] message);
public void dispatchIncomingMessage(@NotNull Player source, @NotNull String channel, @NotNull byte[] message);
}

View File

@@ -1,6 +1,7 @@
package org.bukkit.plugin.messaging;
import org.bukkit.entity.Player;
import org.jetbrains.annotations.NotNull;
/**
* A listener for a specific Plugin Channel, which will receive notifications
@@ -16,5 +17,5 @@ public interface PluginMessageListener {
* @param player Source of the message.
* @param message The raw message that was sent.
*/
public void onPluginMessageReceived(String channel, Player player, byte[] message);
public void onPluginMessageReceived(@NotNull String channel, @NotNull Player player, @NotNull byte[] message);
}

View File

@@ -1,6 +1,7 @@
package org.bukkit.plugin.messaging;
import org.bukkit.plugin.Plugin;
import org.jetbrains.annotations.NotNull;
/**
* Contains information about a {@link Plugin}s registration to a plugin
@@ -12,7 +13,7 @@ public final class PluginMessageListenerRegistration {
private final String channel;
private final PluginMessageListener listener;
public PluginMessageListenerRegistration(Messenger messenger, Plugin plugin, String channel, PluginMessageListener listener) {
public PluginMessageListenerRegistration(@NotNull Messenger messenger, @NotNull Plugin plugin, @NotNull String channel, @NotNull PluginMessageListener listener) {
if (messenger == null) {
throw new IllegalArgumentException("Messenger cannot be null!");
}
@@ -37,6 +38,7 @@ public final class PluginMessageListenerRegistration {
*
* @return Plugin channel.
*/
@NotNull
public String getChannel() {
return channel;
}
@@ -46,6 +48,7 @@ public final class PluginMessageListenerRegistration {
*
* @return Registered listener.
*/
@NotNull
public PluginMessageListener getListener() {
return listener;
}
@@ -55,6 +58,7 @@ public final class PluginMessageListenerRegistration {
*
* @return Registered plugin.
*/
@NotNull
public Plugin getPlugin() {
return plugin;
}
@@ -77,16 +81,16 @@ public final class PluginMessageListenerRegistration {
return false;
}
final PluginMessageListenerRegistration other = (PluginMessageListenerRegistration) obj;
if (this.messenger != other.messenger && (this.messenger == null || !this.messenger.equals(other.messenger))) {
if (this.messenger != other.messenger && !this.messenger.equals(other.messenger)) {
return false;
}
if (this.plugin != other.plugin && (this.plugin == null || !this.plugin.equals(other.plugin))) {
if (this.plugin != other.plugin && !this.plugin.equals(other.plugin)) {
return false;
}
if ((this.channel == null) ? (other.channel != null) : !this.channel.equals(other.channel)) {
if (!this.channel.equals(other.channel)) {
return false;
}
if (this.listener != other.listener && (this.listener == null || !this.listener.equals(other.listener))) {
if (this.listener != other.listener && !this.listener.equals(other.listener)) {
return false;
}
return true;
@@ -95,10 +99,10 @@ public final class PluginMessageListenerRegistration {
@Override
public int hashCode() {
int hash = 7;
hash = 53 * hash + (this.messenger != null ? this.messenger.hashCode() : 0);
hash = 53 * hash + (this.plugin != null ? this.plugin.hashCode() : 0);
hash = 53 * hash + (this.channel != null ? this.channel.hashCode() : 0);
hash = 53 * hash + (this.listener != null ? this.listener.hashCode() : 0);
hash = 53 * hash + this.messenger.hashCode();
hash = 53 * hash + this.plugin.hashCode();
hash = 53 * hash + this.channel.hashCode();
hash = 53 * hash + this.listener.hashCode();
return hash;
}
}

View File

@@ -2,6 +2,7 @@ package org.bukkit.plugin.messaging;
import java.util.Set;
import org.bukkit.plugin.Plugin;
import org.jetbrains.annotations.NotNull;
/**
* Represents a possible recipient for a Plugin Message.
@@ -26,7 +27,7 @@ public interface PluginMessageRecipient {
* @throws ChannelNotRegisteredException Thrown if the channel is not
* registered for this plugin.
*/
public void sendPluginMessage(Plugin source, String channel, byte[] message);
public void sendPluginMessage(@NotNull Plugin source, @NotNull String channel, @NotNull byte[] message);
/**
* Gets a set containing all the Plugin Channels that this client is
@@ -34,5 +35,6 @@ public interface PluginMessageRecipient {
*
* @return Set containing all the channels that this client may accept.
*/
@NotNull
public Set<String> getListeningPluginChannels();
}

View File

@@ -10,6 +10,7 @@ import java.util.Set;
import java.util.logging.Level;
import org.bukkit.entity.Player;
import org.bukkit.plugin.Plugin;
import org.jetbrains.annotations.NotNull;
/**
* Standard implementation to {@link Messenger}
@@ -22,7 +23,7 @@ public class StandardMessenger implements Messenger {
private final Object incomingLock = new Object();
private final Object outgoingLock = new Object();
private void addToOutgoing(Plugin plugin, String channel) {
private void addToOutgoing(@NotNull Plugin plugin, @NotNull String channel) {
synchronized (outgoingLock) {
Set<Plugin> plugins = outgoingByChannel.get(channel);
Set<String> channels = outgoingByPlugin.get(plugin);
@@ -42,7 +43,7 @@ public class StandardMessenger implements Messenger {
}
}
private void removeFromOutgoing(Plugin plugin, String channel) {
private void removeFromOutgoing(@NotNull Plugin plugin, @NotNull String channel) {
synchronized (outgoingLock) {
Set<Plugin> plugins = outgoingByChannel.get(channel);
Set<String> channels = outgoingByPlugin.get(plugin);
@@ -65,7 +66,7 @@ public class StandardMessenger implements Messenger {
}
}
private void removeFromOutgoing(Plugin plugin) {
private void removeFromOutgoing(@NotNull Plugin plugin) {
synchronized (outgoingLock) {
Set<String> channels = outgoingByPlugin.get(plugin);
@@ -81,7 +82,7 @@ public class StandardMessenger implements Messenger {
}
}
private void addToIncoming(PluginMessageListenerRegistration registration) {
private void addToIncoming(@NotNull PluginMessageListenerRegistration registration) {
synchronized (incomingLock) {
Set<PluginMessageListenerRegistration> registrations = incomingByChannel.get(registration.getChannel());
@@ -111,7 +112,7 @@ public class StandardMessenger implements Messenger {
}
}
private void removeFromIncoming(PluginMessageListenerRegistration registration) {
private void removeFromIncoming(@NotNull PluginMessageListenerRegistration registration) {
synchronized (incomingLock) {
Set<PluginMessageListenerRegistration> registrations = incomingByChannel.get(registration.getChannel());
@@ -135,7 +136,7 @@ public class StandardMessenger implements Messenger {
}
}
private void removeFromIncoming(Plugin plugin, String channel) {
private void removeFromIncoming(@NotNull Plugin plugin, @NotNull String channel) {
synchronized (incomingLock) {
Set<PluginMessageListenerRegistration> registrations = incomingByPlugin.get(plugin);
@@ -151,7 +152,7 @@ public class StandardMessenger implements Messenger {
}
}
private void removeFromIncoming(Plugin plugin) {
private void removeFromIncoming(@NotNull Plugin plugin) {
synchronized (incomingLock) {
Set<PluginMessageListenerRegistration> registrations = incomingByPlugin.get(plugin);
@@ -167,13 +168,13 @@ public class StandardMessenger implements Messenger {
}
}
public boolean isReservedChannel(String channel) {
public boolean isReservedChannel(@NotNull String channel) {
channel = validateAndCorrectChannel(channel);
return channel.contains("minecraft") && !channel.equals("minecraft:brand");
}
public void registerOutgoingPluginChannel(Plugin plugin, String channel) {
public void registerOutgoingPluginChannel(@NotNull Plugin plugin, @NotNull String channel) {
if (plugin == null) {
throw new IllegalArgumentException("Plugin cannot be null");
}
@@ -185,7 +186,7 @@ public class StandardMessenger implements Messenger {
addToOutgoing(plugin, channel);
}
public void unregisterOutgoingPluginChannel(Plugin plugin, String channel) {
public void unregisterOutgoingPluginChannel(@NotNull Plugin plugin, @NotNull String channel) {
if (plugin == null) {
throw new IllegalArgumentException("Plugin cannot be null");
}
@@ -194,7 +195,7 @@ public class StandardMessenger implements Messenger {
removeFromOutgoing(plugin, channel);
}
public void unregisterOutgoingPluginChannel(Plugin plugin) {
public void unregisterOutgoingPluginChannel(@NotNull Plugin plugin) {
if (plugin == null) {
throw new IllegalArgumentException("Plugin cannot be null");
}
@@ -202,7 +203,8 @@ public class StandardMessenger implements Messenger {
removeFromOutgoing(plugin);
}
public PluginMessageListenerRegistration registerIncomingPluginChannel(Plugin plugin, String channel, PluginMessageListener listener) {
@NotNull
public PluginMessageListenerRegistration registerIncomingPluginChannel(@NotNull Plugin plugin, @NotNull String channel, @NotNull PluginMessageListener listener) {
if (plugin == null) {
throw new IllegalArgumentException("Plugin cannot be null");
}
@@ -221,7 +223,7 @@ public class StandardMessenger implements Messenger {
return result;
}
public void unregisterIncomingPluginChannel(Plugin plugin, String channel, PluginMessageListener listener) {
public void unregisterIncomingPluginChannel(@NotNull Plugin plugin, @NotNull String channel, @NotNull PluginMessageListener listener) {
if (plugin == null) {
throw new IllegalArgumentException("Plugin cannot be null");
}
@@ -233,7 +235,7 @@ public class StandardMessenger implements Messenger {
removeFromIncoming(new PluginMessageListenerRegistration(this, plugin, channel, listener));
}
public void unregisterIncomingPluginChannel(Plugin plugin, String channel) {
public void unregisterIncomingPluginChannel(@NotNull Plugin plugin, @NotNull String channel) {
if (plugin == null) {
throw new IllegalArgumentException("Plugin cannot be null");
}
@@ -242,7 +244,7 @@ public class StandardMessenger implements Messenger {
removeFromIncoming(plugin, channel);
}
public void unregisterIncomingPluginChannel(Plugin plugin) {
public void unregisterIncomingPluginChannel(@NotNull Plugin plugin) {
if (plugin == null) {
throw new IllegalArgumentException("Plugin cannot be null");
}
@@ -250,6 +252,7 @@ public class StandardMessenger implements Messenger {
removeFromIncoming(plugin);
}
@NotNull
public Set<String> getOutgoingChannels() {
synchronized (outgoingLock) {
Set<String> keys = outgoingByChannel.keySet();
@@ -257,7 +260,8 @@ public class StandardMessenger implements Messenger {
}
}
public Set<String> getOutgoingChannels(Plugin plugin) {
@NotNull
public Set<String> getOutgoingChannels(@NotNull Plugin plugin) {
if (plugin == null) {
throw new IllegalArgumentException("Plugin cannot be null");
}
@@ -273,6 +277,7 @@ public class StandardMessenger implements Messenger {
}
}
@NotNull
public Set<String> getIncomingChannels() {
synchronized (incomingLock) {
Set<String> keys = incomingByChannel.keySet();
@@ -280,7 +285,8 @@ public class StandardMessenger implements Messenger {
}
}
public Set<String> getIncomingChannels(Plugin plugin) {
@NotNull
public Set<String> getIncomingChannels(@NotNull Plugin plugin) {
if (plugin == null) {
throw new IllegalArgumentException("Plugin cannot be null");
}
@@ -302,7 +308,8 @@ public class StandardMessenger implements Messenger {
}
}
public Set<PluginMessageListenerRegistration> getIncomingChannelRegistrations(Plugin plugin) {
@NotNull
public Set<PluginMessageListenerRegistration> getIncomingChannelRegistrations(@NotNull Plugin plugin) {
if (plugin == null) {
throw new IllegalArgumentException("Plugin cannot be null");
}
@@ -318,7 +325,8 @@ public class StandardMessenger implements Messenger {
}
}
public Set<PluginMessageListenerRegistration> getIncomingChannelRegistrations(String channel) {
@NotNull
public Set<PluginMessageListenerRegistration> getIncomingChannelRegistrations(@NotNull String channel) {
channel = validateAndCorrectChannel(channel);
synchronized (incomingLock) {
@@ -332,7 +340,8 @@ public class StandardMessenger implements Messenger {
}
}
public Set<PluginMessageListenerRegistration> getIncomingChannelRegistrations(Plugin plugin, String channel) {
@NotNull
public Set<PluginMessageListenerRegistration> getIncomingChannelRegistrations(@NotNull Plugin plugin, @NotNull String channel) {
if (plugin == null) {
throw new IllegalArgumentException("Plugin cannot be null");
}
@@ -357,7 +366,7 @@ public class StandardMessenger implements Messenger {
}
}
public boolean isRegistrationValid(PluginMessageListenerRegistration registration) {
public boolean isRegistrationValid(@NotNull PluginMessageListenerRegistration registration) {
if (registration == null) {
throw new IllegalArgumentException("Registration cannot be null");
}
@@ -373,7 +382,7 @@ public class StandardMessenger implements Messenger {
}
}
public boolean isIncomingChannelRegistered(Plugin plugin, String channel) {
public boolean isIncomingChannelRegistered(@NotNull Plugin plugin, @NotNull String channel) {
if (plugin == null) {
throw new IllegalArgumentException("Plugin cannot be null");
}
@@ -394,7 +403,7 @@ public class StandardMessenger implements Messenger {
}
}
public boolean isOutgoingChannelRegistered(Plugin plugin, String channel) {
public boolean isOutgoingChannelRegistered(@NotNull Plugin plugin, @NotNull String channel) {
if (plugin == null) {
throw new IllegalArgumentException("Plugin cannot be null");
}
@@ -411,7 +420,7 @@ public class StandardMessenger implements Messenger {
}
}
public void dispatchIncomingMessage(Player source, String channel, byte[] message) {
public void dispatchIncomingMessage(@NotNull Player source, @NotNull String channel, @NotNull byte[] message) {
if (source == null) {
throw new IllegalArgumentException("Player source cannot be null");
}
@@ -441,7 +450,7 @@ public class StandardMessenger implements Messenger {
* @deprecated not an API method
*/
@Deprecated
public static void validateChannel(String channel) {
public static void validateChannel(@NotNull String channel) {
validateAndCorrectChannel(channel);
}
@@ -453,7 +462,8 @@ public class StandardMessenger implements Messenger {
* @deprecated not an API method
*/
@Deprecated
public static String validateAndCorrectChannel(String channel) {
@NotNull
public static String validateAndCorrectChannel(@NotNull String channel) {
if (channel == null) {
throw new IllegalArgumentException("Channel cannot be null");
}
@@ -498,7 +508,7 @@ public class StandardMessenger implements Messenger {
* @throws ChannelNotRegisteredException Thrown if the channel is not
* registered for this plugin.
*/
public static void validatePluginMessage(Messenger messenger, Plugin source, String channel, byte[] message) {
public static void validatePluginMessage(@NotNull Messenger messenger, @NotNull Plugin source, @NotNull String channel, @NotNull byte[] message) {
if (messenger == null) {
throw new IllegalArgumentException("Messenger cannot be null");
}