From 293c9b36fb4a6577330142d9c8caa0dd750dadb5 Mon Sep 17 00:00:00 2001 From: Gideon le Grange Date: Mon, 7 Aug 2017 15:23:06 +0200 Subject: [PATCH 1/2] Code cleanups --- .../mikrotik/ApiConnectionException.java | 10 ++++++ .../mikrotik/MikrotikApiException.java | 11 +++++++ .../mikrotik/impl/ApiConnectionImpl.java | 32 ++++++------------- .../me/legrange/mikrotik/impl/Parser.java | 2 +- .../me/legrange/mikrotik/impl/Scanner.java | 14 ++------ .../java/me/legrange/mikrotik/impl/Util.java | 9 +++--- .../legrange/mikrotik/ApiConnectionTest.java | 31 ------------------ 7 files changed, 38 insertions(+), 71 deletions(-) delete mode 100644 src/test/java/me/legrange/mikrotik/ApiConnectionTest.java diff --git a/src/main/java/me/legrange/mikrotik/ApiConnectionException.java b/src/main/java/me/legrange/mikrotik/ApiConnectionException.java index a7add55..3fb7d9b 100644 --- a/src/main/java/me/legrange/mikrotik/ApiConnectionException.java +++ b/src/main/java/me/legrange/mikrotik/ApiConnectionException.java @@ -6,10 +6,20 @@ package me.legrange.mikrotik; */ public class ApiConnectionException extends MikrotikApiException { + /** + * Create a new exception. + * + * @param msg The message + */ public ApiConnectionException(String msg) { super(msg); } + /** + * Create a new exception + * @param msg The message + * @param err The underlying cause + */ public ApiConnectionException(String msg, Throwable err) { super(msg, err); } diff --git a/src/main/java/me/legrange/mikrotik/MikrotikApiException.java b/src/main/java/me/legrange/mikrotik/MikrotikApiException.java index 3a559ab..55ce69c 100644 --- a/src/main/java/me/legrange/mikrotik/MikrotikApiException.java +++ b/src/main/java/me/legrange/mikrotik/MikrotikApiException.java @@ -7,10 +7,21 @@ package me.legrange.mikrotik; */ public class MikrotikApiException extends Exception { + + /** + * Create a new exception + * @param msg The message + */ public MikrotikApiException(String msg) { super(msg); } + + /** + * Create a new exception + * @param msg The message + * @param err The underlying cause + */ public MikrotikApiException(String msg, Throwable err) { super(msg, err); } diff --git a/src/main/java/me/legrange/mikrotik/impl/ApiConnectionImpl.java b/src/main/java/me/legrange/mikrotik/impl/ApiConnectionImpl.java index 903391c..bc73b78 100644 --- a/src/main/java/me/legrange/mikrotik/impl/ApiConnectionImpl.java +++ b/src/main/java/me/legrange/mikrotik/impl/ApiConnectionImpl.java @@ -31,6 +31,7 @@ public final class ApiConnectionImpl extends ApiConnection { /** * Create a new API connection to the give device on the supplied port * + * @param fact The socket factory used to construct the connection socket. * @param host The host to which to connect. * @param port The TCP port to use. * @param timeOut The connection timeout @@ -176,7 +177,7 @@ public final class ApiConnectionImpl extends ApiConnection { private Reader() { super("Mikrotik API Reader"); } - + private String take() throws ApiConnectionException, ApiDataException { Object val = null; try { @@ -195,15 +196,13 @@ public final class ApiConnectionImpl extends ApiConnection { private boolean isEmpty() { return queue.isEmpty(); } - + @Override public void run() { while (connected) { try { String s = Util.decode(in); - if (s != null) { - put(s); - } + put(s); } catch (ApiDataException ex) { put(ex); } catch (ApiConnectionException ex) { @@ -232,7 +231,7 @@ public final class ApiConnectionImpl extends ApiConnection { private Processor() { super("Mikrotik API Result Processor"); } - + @Override public void run() { while (connected) { @@ -420,35 +419,22 @@ public final class ApiConnectionImpl extends ApiConnection { return err; } - private void queue(Response res) { - String tag = res.getTag(); - if (tag != null) { - ResultListener rl = listeners.get(tag); - if (rl != null) { - if (res instanceof Result) { - rl.receive((Result) res); - } else { - // rl.error((Error)res); - } - } - } - } private final List lines = new LinkedList<>(); private String line; } - private class SyncListener implements ResultListener { + private static class SyncListener implements ResultListener { @Override public synchronized void error(MikrotikApiException ex) { this.err = ex; - notify(); + notifyAll(); } @Override public synchronized void completed() { complete = true; - notify(); + notifyAll(); } synchronized void completed(Done done) { @@ -458,7 +444,7 @@ public final class ApiConnectionImpl extends ApiConnection { results.add(res); } complete = true; - notify(); + notifyAll(); } @Override diff --git a/src/main/java/me/legrange/mikrotik/impl/Parser.java b/src/main/java/me/legrange/mikrotik/impl/Parser.java index ef3a413..8fe9fd1 100644 --- a/src/main/java/me/legrange/mikrotik/impl/Parser.java +++ b/src/main/java/me/legrange/mikrotik/impl/Parser.java @@ -175,7 +175,7 @@ class Parser { } next(); } - cmd.addProperty(props.toArray(new String[]{})); + cmd.addProperty(props.toArray(new String[props.size()])); } private void expect(Token...tokens) throws ParseException { diff --git a/src/main/java/me/legrange/mikrotik/impl/Scanner.java b/src/main/java/me/legrange/mikrotik/impl/Scanner.java index 25c54b4..7ac20fc 100644 --- a/src/main/java/me/legrange/mikrotik/impl/Scanner.java +++ b/src/main/java/me/legrange/mikrotik/impl/Scanner.java @@ -15,6 +15,7 @@ */ package me.legrange.mikrotik.impl; +import java.util.Locale; import static me.legrange.mikrotik.impl.Scanner.Token.*; /** * A simple scanner. @@ -117,7 +118,7 @@ class Scanner { text.append(c); nextChar(); } - String val = text.toString().toLowerCase(); + String val = text.toString().toLowerCase(Locale.getDefault()); switch (val) { case "where": return WHERE; @@ -184,17 +185,6 @@ class Scanner { } } - /** - * look ahead one character - */ - private char peek() { - if (pos < line.length()) { - return line.charAt(pos); - } else { - return '\n'; - } - } - /** * check if the character matches the give expression */ diff --git a/src/main/java/me/legrange/mikrotik/impl/Util.java b/src/main/java/me/legrange/mikrotik/impl/Util.java index 3ade326..601f32c 100644 --- a/src/main/java/me/legrange/mikrotik/impl/Util.java +++ b/src/main/java/me/legrange/mikrotik/impl/Util.java @@ -4,6 +4,7 @@ import java.io.IOException; import java.io.InputStream; import java.io.OutputStream; import java.io.UnsupportedEncodingException; +import java.nio.charset.Charset; import java.security.MessageDigest; import java.security.NoSuchAlgorithmException; import java.util.List; @@ -71,7 +72,7 @@ final class Util { } buf[i] = (byte) (c & 0xFF); } - String res = new String(buf); + String res = new String(buf, Charset.forName("UTF-8")); if (result.length() > 0) { result.append("\n"); } @@ -121,11 +122,11 @@ final class Util { * @return - converted string. */ static String hexStrToStr(String s) { - String ret = ""; + StringBuilder ret = new StringBuilder(); for (int i = 0; i < s.length(); i += 2) { - ret += (char) Integer.parseInt(s.substring(i, i + 2), 16); + ret.append((char) Integer.parseInt(s.substring(i, i + 2), 16)); } - return ret; + return ret.toString(); } /** diff --git a/src/test/java/me/legrange/mikrotik/ApiConnectionTest.java b/src/test/java/me/legrange/mikrotik/ApiConnectionTest.java deleted file mode 100644 index 0db092c..0000000 --- a/src/test/java/me/legrange/mikrotik/ApiConnectionTest.java +++ /dev/null @@ -1,31 +0,0 @@ -package me.legrange.mikrotik; - -import java.util.List; -import java.util.Map; - -import junit.framework.TestCase; - -public class ApiConnectionTest extends TestCase { - - private static final String HOSTNAME = "192.168.88.1"; - private static final String ADMIN = "admin"; - private static final String PASSWORD = "plasma"; - - public void testConnectTLSStringInt() throws MikrotikApiException, InterruptedException { -/* ApiConnection connect = ApiConnection.connectTLS(HOSTNAME, 8729); - connect.login(ADMIN, PASSWORD); - List> result = connect.execute("/system/resource/print"); - - assertEquals(1, result.size()); - assertEquals("MikroTik", result.get(0).get("platform")); */ - } - - public void testConnectStringInt() throws MikrotikApiException, InterruptedException { -/* ApiConnection connect = ApiConnection.connect(HOSTNAME, 8728); - connect.login(ADMIN, PASSWORD); - List> result = connect.execute("/system/resource/print"); - - assertEquals(1, result.size()); - assertEquals("MikroTik", result.get(0).get("platform")); */ - } -} From 4060e731310bec7440d3f853a449d630c762013f Mon Sep 17 00:00:00 2001 From: Gideon le Grange Date: Mon, 7 Aug 2017 20:58:21 +0200 Subject: [PATCH 2/2] Added travis --- .travis.yml | 1 + 1 file changed, 1 insertion(+) create mode 100644 .travis.yml diff --git a/.travis.yml b/.travis.yml new file mode 100644 index 0000000..dff5f3a --- /dev/null +++ b/.travis.yml @@ -0,0 +1 @@ +language: java