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)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)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); } /** * Returns the name of a plugin * * @return String name */ public String getName() { return name; } /** * Returns the main class for a plugin * * @return Java classpath */ public String getMain() { return main; } private void loadMap(Map map) throws ClassCastException { name = (String)map.get("name"); main = (String)map.get("main"); } private Map saveMap() { Map map = new HashMap(); map.put("name", name); map.put("main", main); return map; } }