001 package org.bukkit.plugin;
002
003 /**
004 * A registered service provider.
005 *
006 * @param <T> Service
007 */
008 public class RegisteredServiceProvider<T> implements Comparable<RegisteredServiceProvider<?>> {
009
010 private Class<T> service;
011 private Plugin plugin;
012 private T provider;
013 private ServicePriority priority;
014
015 public RegisteredServiceProvider(Class<T> service, T provider, ServicePriority priority, Plugin plugin) {
016
017 this.service = service;
018 this.plugin = plugin;
019 this.provider = provider;
020 this.priority = priority;
021 }
022
023 public Class<T> getService() {
024 return service;
025 }
026
027 public Plugin getPlugin() {
028 return plugin;
029 }
030
031 public T getProvider() {
032 return provider;
033 }
034
035 public ServicePriority getPriority() {
036 return priority;
037 }
038
039 public int compareTo(RegisteredServiceProvider<?> other) {
040 if (priority.ordinal() == other.getPriority().ordinal()) {
041 return 0;
042 } else {
043 return priority.ordinal() < other.getPriority().ordinal() ? 1 : -1;
044 }
045 }
046 }