13
0
geforkt von Mirrors/Paper

Slightly better "invalid plugin.yml" errors

By: Dinnerbone <dinnerbone@dinnerbone.com>
Dieser Commit ist enthalten in:
Bukkit/Spigot 2011-01-05 22:40:45 +00:00
Ursprung c01c18a1d7
Commit 0cb7170b41
2 geänderte Dateien mit 92 neuen und 46 gelöschten Zeilen

Datei anzeigen

@ -1,36 +1,62 @@
package org.bukkit.plugin;
/**
* Thrown when attempting to load an invalid PluginDescriptionFile
*/
public class InvalidDescriptionException extends Exception {
private static final long serialVersionUID = 5721389122281775894L;
private final Throwable cause;
/**
* Constructs a new InvalidDescriptionException based on the given Exception
*
* @param throwable Exception that triggered this Exception
*/
public InvalidDescriptionException(Throwable throwable) {
cause = throwable;
}
/**
* Constructs a new InvalidDescriptionException
*/
public InvalidDescriptionException() {
cause = null;
}
/**
* If applicable, returns the Exception that triggered this Exception
*
* @return Inner exception, or null if one does not exist
*/
@Override
public Throwable getCause() {
return cause;
}
}
package org.bukkit.plugin;
/**
* Thrown when attempting to load an invalid PluginDescriptionFile
*/
public class InvalidDescriptionException extends Exception {
private static final long serialVersionUID = 5721389122281775894L;
private final Throwable cause;
private final String message;
/**
* Constructs a new InvalidDescriptionException based on the given Exception
*
* @param throwable Exception that triggered this Exception
*/
public InvalidDescriptionException(Throwable throwable) {
this(throwable, "Invalid plugin.yml");
}
/**
* Constructs a new InvalidDescriptionException with the given message
*
* @param message Brief message explaining the cause of the exception
*/
public InvalidDescriptionException(final String message) {
this(null, message);
}
/**
* Constructs a new InvalidDescriptionException based on the given Exception
*
* @param message Brief message explaining the cause of the exception
* @param throwable Exception that triggered this Exception
*/
public InvalidDescriptionException(final Throwable throwable, final String message) {
this.cause = null;
this.message = message;
}
/**
* Constructs a new InvalidDescriptionException
*/
public InvalidDescriptionException() {
this(null, "Invalid plugin.yml");
}
/**
* If applicable, returns the Exception that triggered this Exception
*
* @return Inner exception, or null if one does not exist
*/
@Override
public Throwable getCause() {
return cause;
}
@Override
public String getMessage() {
return super.getMessage();
}
}

Datei anzeigen

@ -20,11 +20,7 @@ public final class PluginDescriptionFile {
@SuppressWarnings("unchecked")
public PluginDescriptionFile(final InputStream stream) throws InvalidDescriptionException {
try {
loadMap((Map<String, Object>)yaml.load(stream));
} catch (ClassCastException ex) {
throw new InvalidDescriptionException(ex);
}
loadMap((Map<String, Object>)yaml.load(stream));
}
/**
@ -32,7 +28,7 @@ public final class PluginDescriptionFile {
* @param reader
*/
@SuppressWarnings("unchecked")
public PluginDescriptionFile(final Reader reader) {
public PluginDescriptionFile(final Reader reader) throws InvalidDescriptionException {
loadMap((Map<String, Object>)yaml.load(reader));
}
@ -84,10 +80,34 @@ public final class PluginDescriptionFile {
return main;
}
private void loadMap(Map<String, Object> map) throws ClassCastException {
name = map.get("name").toString();
main = map.get("main").toString();
version = map.get("version").toString();
private void loadMap(Map<String, Object> map) throws InvalidDescriptionException {
if (name == null) {
throw new InvalidDescriptionException("Name is not defined");
}
try {
name = map.get("name").toString();
} catch (NullPointerException ex) {
throw new InvalidDescriptionException(ex, "name is not defined");
} catch (ClassCastException ex) {
throw new InvalidDescriptionException(ex, "name is of wrong type");
}
try {
version = map.get("version").toString();
} catch (NullPointerException ex) {
throw new InvalidDescriptionException(ex, "version is not defined");
} catch (ClassCastException ex) {
throw new InvalidDescriptionException(ex, "version is of wrong type");
}
try {
main = map.get("main").toString();
} catch (NullPointerException ex) {
throw new InvalidDescriptionException(ex, "main is not defined");
} catch (ClassCastException ex) {
throw new InvalidDescriptionException(ex, "main is of wrong type");
}
}
private Map<String, Object> saveMap() {