summaryrefslogtreecommitdiffstats
path: root/src/test/java/org/bukkit/support/DummyServer.java
diff options
context:
space:
mode:
Diffstat (limited to 'src/test/java/org/bukkit/support/DummyServer.java')
-rw-r--r--src/test/java/org/bukkit/support/DummyServer.java79
1 files changed, 79 insertions, 0 deletions
diff --git a/src/test/java/org/bukkit/support/DummyServer.java b/src/test/java/org/bukkit/support/DummyServer.java
new file mode 100644
index 00000000..e5215bb4
--- /dev/null
+++ b/src/test/java/org/bukkit/support/DummyServer.java
@@ -0,0 +1,79 @@
+package org.bukkit.support;
+
+import java.lang.reflect.InvocationHandler;
+import java.lang.reflect.Method;
+import java.lang.reflect.Proxy;
+import java.util.HashMap;
+import java.util.logging.Logger;
+
+import org.bukkit.Bukkit;
+import org.bukkit.Server;
+import org.bukkit.craftbukkit.inventory.CraftItemFactory;
+import org.bukkit.craftbukkit.util.Versioning;
+
+public class DummyServer implements InvocationHandler {
+ private static interface MethodHandler {
+ Object handle(DummyServer server, Object[] args);
+ }
+ private static final HashMap<Method, MethodHandler> methods = new HashMap<Method, MethodHandler>();
+ static {
+ try {
+ methods.put(
+ Server.class.getMethod("getItemFactory"),
+ new MethodHandler() {
+ public Object handle(DummyServer server, Object[] args) {
+ return CraftItemFactory.instance();
+ }
+ }
+ );
+ methods.put(
+ Server.class.getMethod("getName"),
+ new MethodHandler() {
+ public Object handle(DummyServer server, Object[] args) {
+ return DummyServer.class.getName();
+ }
+ }
+ );
+ methods.put(
+ Server.class.getMethod("getVersion"),
+ new MethodHandler() {
+ public Object handle(DummyServer server, Object[] args) {
+ return DummyServer.class.getPackage().getImplementationVersion();
+ }
+ }
+ );
+ methods.put(
+ Server.class.getMethod("getBukkitVersion"),
+ new MethodHandler() {
+ public Object handle(DummyServer server, Object[] args) {
+ return Versioning.getBukkitVersion();
+ }
+ }
+ );
+ methods.put(
+ Server.class.getMethod("getLogger"),
+ new MethodHandler() {
+ final Logger logger = Logger.getLogger(DummyServer.class.getCanonicalName());
+ public Object handle(DummyServer server, Object[] args) {
+ return logger;
+ }
+ }
+ );
+ Bukkit.setServer(Proxy.getProxyClass(Server.class.getClassLoader(), Server.class).asSubclass(Server.class).getConstructor(InvocationHandler.class).newInstance(new DummyServer()));
+ } catch (Throwable t) {
+ throw new Error(t);
+ }
+ }
+
+ public static void setup() {}
+
+ private DummyServer() {};
+
+ public Object invoke(Object proxy, Method method, Object[] args) {
+ MethodHandler handler = methods.get(method);
+ if (handler != null) {
+ return handler.handle(this, args);
+ }
+ throw new UnsupportedOperationException(String.valueOf(method));
+ }
+}