diff --git a/src/main/java/examples/Example.java b/src/main/java/examples/Example.java index ff25eae..f7cc69e 100644 --- a/src/main/java/examples/Example.java +++ b/src/main/java/examples/Example.java @@ -5,12 +5,14 @@ import me.legrange.mikrotik.ApiConnection; /** * * @author gideon + * @author clairtonluz */ abstract class Example { - protected void connect() throws Exception { + protected ApiConnection connect() throws Exception { con = ApiConnection.connect(Config.HOST, ApiConnection.DEFAULT_PORT, 2000); con.login(Config.USERNAME, Config.PASSWORD); + return con; } protected void disconnect() throws Exception { diff --git a/src/main/java/examples/Example10.java b/src/main/java/examples/Example10.java new file mode 100644 index 0000000..f4be676 --- /dev/null +++ b/src/main/java/examples/Example10.java @@ -0,0 +1,30 @@ +package examples; + +import me.legrange.mikrotik.ApiConnection; +import me.legrange.mikrotik.MikrotikApiException; + +import java.util.List; +import java.util.Map; + +/** + * Example 10: The try-with-resources Statement + * + * @author clairtonluz + */ +public class Example10 extends Example { + + public static void main(String... args) throws Exception { + Example10 ex = new Example10(); + try (ApiConnection c = ex.connect()) { + ex.test(); + } + System.out.printf("\nisConnected = %B",ex.con.isConnected()); + } + + private void test() throws MikrotikApiException, InterruptedException { + List> res = con.execute("/interface/ethernet/print"); + for (Map r : res) { + System.out.println(r); + } + } +} diff --git a/src/main/java/me/legrange/mikrotik/ApiConnection.java b/src/main/java/me/legrange/mikrotik/ApiConnection.java index 47ac836..9a9517a 100644 --- a/src/main/java/me/legrange/mikrotik/ApiConnection.java +++ b/src/main/java/me/legrange/mikrotik/ApiConnection.java @@ -1,5 +1,6 @@ package me.legrange.mikrotik; +import java.io.Closeable; import java.util.List; import java.util.Map; import me.legrange.mikrotik.impl.ApiConnectionImpl; @@ -9,8 +10,9 @@ import me.legrange.mikrotik.impl.ApiConnectionImpl; * Mikrotik and send commands to it. * * @author GideonLeGrange + * @author clairtonluz */ -public abstract class ApiConnection { +public abstract class ApiConnection implements Closeable { /** default TCP port used by Mikrotik API */ public static final int DEFAULT_PORT = 8728; diff --git a/src/main/java/me/legrange/mikrotik/impl/ApiConnectionImpl.java b/src/main/java/me/legrange/mikrotik/impl/ApiConnectionImpl.java index 2fa6ae8..c962277 100644 --- a/src/main/java/me/legrange/mikrotik/impl/ApiConnectionImpl.java +++ b/src/main/java/me/legrange/mikrotik/impl/ApiConnectionImpl.java @@ -200,6 +200,15 @@ public final class ApiConnectionImpl extends ApiConnection { private Integer _tag = 0; private int timeout = ApiConnection.DEFAULT_COMMAND_TIMEOUT; + @Override + public void close() throws IOException { + try { + disconnect(); + } catch (ApiConnectionException e) { + throw new IOException(e.getMessage(), e.getCause()); + } + } + /** * thread to read data from the socket and process it into Strings */