diff --git a/src/main/java/me/legrange/mikrotik/impl/ApiCommandException.java b/src/main/java/me/legrange/mikrotik/impl/ApiCommandException.java index f694444..2982bdd 100644 --- a/src/main/java/me/legrange/mikrotik/impl/ApiCommandException.java +++ b/src/main/java/me/legrange/mikrotik/impl/ApiCommandException.java @@ -4,31 +4,40 @@ import me.legrange.mikrotik.MikrotikApiException; /** * Thrown when the Mikrotik returns an error when receiving our command. + * * @author GideonLeGrange */ public class ApiCommandException extends MikrotikApiException { + private String tag = null; + private int category = 0; - /** return the tag associated with this exception, if there is one - * @return the tag associated with this exception. Null if there is no tag*/ + /** + * return the tag associated with this exception, if there is one + * + * @return the tag associated with this exception. Null if there is no tag + */ public String getTag() { return tag; } - ApiCommandException(String msg) { + ApiCommandException(String msg) { super(msg); } - ApiCommandException(String msg, Throwable err) { + ApiCommandException(String msg, Throwable err) { super(msg, err); } + public int getCategory() { + return category; + } ApiCommandException(Error err) { super(err.getMessage()); tag = err.getTag(); + category = err.getCategory(); } - - private String tag = null; - + + } diff --git a/src/main/java/me/legrange/mikrotik/impl/ApiConnectionImpl.java b/src/main/java/me/legrange/mikrotik/impl/ApiConnectionImpl.java index f8fddeb..801510d 100644 --- a/src/main/java/me/legrange/mikrotik/impl/ApiConnectionImpl.java +++ b/src/main/java/me/legrange/mikrotik/impl/ApiConnectionImpl.java @@ -248,7 +248,7 @@ public final class ApiConnectionImpl extends ApiConnection { } catch (ApiCommandException ex) { String tag = ex.getTag(); if (tag != null) { - res = new Error(tag, ex.getMessage()); + res = new Error(tag, ex.getMessage(), ex.getCategory()); } else { continue; } @@ -415,6 +415,9 @@ public final class ApiConnectionImpl extends ApiConnection { } else if (line.startsWith("=message=")) { err.setMessage(line.split("=", 3)[2]); } + else if (line.startsWith("=category=")) { + err.setCategory(Integer.parseInt(line.split("=", 3)[2])); + } if (hasNextLine()) { nextLine(); } else { diff --git a/src/main/java/me/legrange/mikrotik/impl/Error.java b/src/main/java/me/legrange/mikrotik/impl/Error.java index 6e7b8df..9f9db68 100644 --- a/src/main/java/me/legrange/mikrotik/impl/Error.java +++ b/src/main/java/me/legrange/mikrotik/impl/Error.java @@ -1,12 +1,16 @@ package me.legrange.mikrotik.impl; /** - * Used to encapsulate API error information. We need to pass both the message and the tag (if one was used). + * Used to encapsulate API error information. We need to pass both the message and the tag (if one was used). + * * @author GideonLeGrange */ class Error extends Response { - Error(String tag, String message) { + private String message; + private int category; + + Error(String tag, String message, int category) { super(tag); this.message = message; } @@ -18,11 +22,16 @@ class Error extends Response { String getMessage() { return message; } + void setMessage(String message) { this.message = message; } - - private String message; - + int getCategory() { + return category; + } + + void setCategory(int category) { + this.category = category; + } }