summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorDinnerbone <dinnerbone@dinnerbone.com>2010-12-24 11:20:20 +0000
committerDinnerbone <dinnerbone@dinnerbone.com>2010-12-24 11:20:20 +0000
commit777ef5442ad109eb27868a78dc4c771d813c107f (patch)
tree9b09a843119cc30e6682fe0070a66ff9a62a1738
parente112e33a72a5138047ea8874c73cdc711ca5b406 (diff)
downloadbukkit-777ef5442ad109eb27868a78dc4c771d813c107f.tar
bukkit-777ef5442ad109eb27868a78dc4c771d813c107f.tar.gz
bukkit-777ef5442ad109eb27868a78dc4c771d813c107f.tar.lz
bukkit-777ef5442ad109eb27868a78dc4c771d813c107f.tar.xz
bukkit-777ef5442ad109eb27868a78dc4c771d813c107f.zip
Basics of PluginDescriptionFile
-rw-r--r--src/org/bukkit/plugin/InvalidDescriptionException.java34
-rw-r--r--src/org/bukkit/plugin/PluginDescriptionFile.java69
2 files changed, 103 insertions, 0 deletions
diff --git a/src/org/bukkit/plugin/InvalidDescriptionException.java b/src/org/bukkit/plugin/InvalidDescriptionException.java
new file mode 100644
index 00000000..aee3e397
--- /dev/null
+++ b/src/org/bukkit/plugin/InvalidDescriptionException.java
@@ -0,0 +1,34 @@
+
+package org.bukkit.plugin;
+
+/**
+ * Thrown when attempting to load an invalid PluginDescriptionFile
+ */
+public class InvalidDescriptionException extends Exception {
+ private final Exception innerException;
+
+ /**
+ * Constructs a new InvalidDescriptionException based on the given Exception
+ *
+ * @param exception Exception that triggered this Exception
+ */
+ public InvalidDescriptionException(Exception exception) {
+ innerException = exception;
+ }
+
+ /**
+ * Constructs a new InvalidDescriptionException
+ */
+ public InvalidDescriptionException() {
+ innerException = null;
+ }
+
+ /**
+ * If applicable, returns the Exception that triggered this InvalidDescriptionException
+ *
+ * @return Inner exception, or null if one does not exist
+ */
+ public Exception getInnerException() {
+ return innerException;
+ }
+}
diff --git a/src/org/bukkit/plugin/PluginDescriptionFile.java b/src/org/bukkit/plugin/PluginDescriptionFile.java
new file mode 100644
index 00000000..52632e11
--- /dev/null
+++ b/src/org/bukkit/plugin/PluginDescriptionFile.java
@@ -0,0 +1,69 @@
+
+package org.bukkit.plugin;
+
+import java.io.InputStream;
+import java.io.Reader;
+import java.io.Writer;
+import java.util.HashMap;
+import java.util.Map;
+import org.yaml.snakeyaml.Yaml;
+import org.yaml.snakeyaml.constructor.SafeConstructor;
+
+/**
+ * Provides access to a Plugins description file, plugin.yaml
+ */
+public final class PluginDescriptionFile {
+ private static final Yaml yaml = new Yaml(new SafeConstructor());
+ private String name = null;
+ private String main = null;
+
+ public PluginDescriptionFile(final InputStream stream) throws InvalidDescriptionException {
+ try {
+ loadMap((Map<String, Object>)yaml.load(stream));
+ } catch (ClassCastException ex) {
+ throw new InvalidDescriptionException(ex);
+ }
+ }
+
+ /**
+ * Loads a PluginDescriptionFile from the specified reader
+ * @param reader
+ */
+ public PluginDescriptionFile(final Reader reader) {
+ loadMap((Map<String, Object>)yaml.load(reader));
+ }
+
+ /**
+ * Creates a new PluginDescriptionFile with the given detailed
+ *
+ * @param pluginName Name of this plugin
+ * @param mainClass Full location of the main class of this plugin
+ */
+ public PluginDescriptionFile(final String pluginName, final String mainClass) {
+ name = pluginName;
+ main = mainClass;
+ }
+
+ /**
+ * Saves this PluginDescriptionFile to the given writer
+ *
+ * @param writer Writer to output this file to
+ */
+ public void save(Writer writer) {
+ yaml.dump(saveMap(), writer);
+ }
+
+ private void loadMap(Map<String, Object> map) throws ClassCastException {
+ name = (String)map.get("name");
+ main = (String)map.get("main");
+ }
+
+ private Map<String, Object> saveMap() {
+ Map<String, Object> map = new HashMap<String, Object>();
+
+ map.put("name", name);
+ map.put("main", main);
+
+ return map;
+ }
+}