From 0214c5d6960c3a1c80dd1657b7800d118f97f9b7 Mon Sep 17 00:00:00 2001 From: Sam Anthony Date: Mon, 2 Dec 2024 18:11:49 -0500 Subject: simplify client --- src/main/java/derms/client/Client.java | 8 +- src/main/java/derms/client/ResponderClient.java | 100 ++++++++++++++++++-- src/main/java/derms/client/ResponderClientCLI.java | 101 --------------------- 3 files changed, 94 insertions(+), 115 deletions(-) delete mode 100644 src/main/java/derms/client/ResponderClientCLI.java diff --git a/src/main/java/derms/client/Client.java b/src/main/java/derms/client/Client.java index 11e863f..7069f54 100644 --- a/src/main/java/derms/client/Client.java +++ b/src/main/java/derms/client/Client.java @@ -9,14 +9,12 @@ import javax.xml.ws.Service; import java.net.MalformedURLException; import java.net.URL; -public abstract class Client { +class Client { public static final String namespace = "frontend.derms"; public static final QName qname = new QName("http://"+namespace+"/", DERMSServerImpl.class.getSimpleName()+"Service"); - protected final DERMSInterface server; - - protected Client(String FEhost) throws MalformedURLException { + static DERMSInterface connectToServer(String FEhost) throws MalformedURLException { URL url = new URL(FE.endpointURL(FEhost) + "?wsdl"); - this.server = Service.create(url, qname).getPort(DERMSInterface.class); + return Service.create(url, qname).getPort(DERMSInterface.class); } } diff --git a/src/main/java/derms/client/ResponderClient.java b/src/main/java/derms/client/ResponderClient.java index c96436a..57bb132 100644 --- a/src/main/java/derms/client/ResponderClient.java +++ b/src/main/java/derms/client/ResponderClient.java @@ -1,21 +1,103 @@ package derms.client; +import derms.frontend.DERMSInterface; + import java.net.MalformedURLException; -class ResponderClient extends Client { - ResponderClient(String FEhost) throws MalformedURLException { - super(FEhost); +public class ResponderClient extends CLI { + public static final String usage = "Usage: java derms.client.ResponderClientCLI "; + + private final DERMSInterface server; + + private ResponderClient(String FEhost) throws MalformedURLException { + server = Client.connectToServer(FEhost); + + commands.put("add", new Add()); + cmdDescriptions.add(new Description( + "add ", + "Add ad resource to the server")); + + commands.put("remove", new Remove()); + cmdDescriptions.add(new Description( + "remove ", + "Decrease the duration of a resource. If duration is negative, the resource is removed entirely.")); + + commands.put("list", new List()); + cmdDescriptions.add(new Description( + "list ", + "List available resources")); } - public String addResource(String resourceID, String resourceName, int duration) { - return server.addResource(resourceID, resourceName, duration); + public static void main(String[] args) { + if (args.length < 1) { + System.err.println(usage); + System.exit(1); + } + + String FEhost = args[0]; + + try { + (new ResponderClient(FEhost)).run(); + } catch (MalformedURLException e) { + e.printStackTrace(); + } + } + + private class Add implements Command { + @Override + public void exec(String[] args) { + if (args.length < 3) + System.out.println("invalid arguments for 'add'"); + else + add(args[0], args[1], args[2]); + } + + private void add(String resourceID, String resourceName, String durationStr) { + try { + int duration = Integer.parseInt(durationStr); + if (duration < 0) { + throw new NumberFormatException("duration less than 0"); + } + String response = server.addResource(resourceID, resourceName, duration); + System.out.println(response); + } catch (NumberFormatException e) { + System.out.println("invalid duration: " + durationStr); + } + } } - public String removeResource(String resourceID, int duration) { - return server.removeResource(resourceID, duration); + private class Remove implements Command { + @Override + public void exec(String[] args) { + if (args.length < 2) + System.out.println("invalid arguments for 'remove'"); + else + remove(args[0], args[1]); + } + + private void remove(String resourceID, String durationStr) { + try { + int duration = Integer.parseInt(durationStr); + String response = server.removeResource(resourceID, duration); + System.out.println(response); + } catch (NumberFormatException e) { + System.out.println("invalid duration: " + durationStr); + } + } } - public String listResourceAvailability(String resourceName) { - return server.listResourceAvailability(resourceName); + private class List implements Command { + @Override + public void exec(String[] args) { + if (args.length < 1) + System.out.println("invalid arguments for 'list'"); + else + list(args[0]); + } + + private void list(String resourceName) { + String response = server.listResourceAvailability(resourceName); + System.out.println(response); + } } } diff --git a/src/main/java/derms/client/ResponderClientCLI.java b/src/main/java/derms/client/ResponderClientCLI.java deleted file mode 100644 index 42541b4..0000000 --- a/src/main/java/derms/client/ResponderClientCLI.java +++ /dev/null @@ -1,101 +0,0 @@ -package derms.client; - -import java.net.MalformedURLException; - -public class ResponderClientCLI extends CLI { - public static final String usage = "Usage: java derms.client.ResponderClientCLI "; - - private final ResponderClient client; - - private ResponderClientCLI(String FEhost) throws MalformedURLException { - client = new ResponderClient(FEhost); - - commands.put("add", new Add()); - cmdDescriptions.add(new Description( - "add ", - "Add ad resource to the server")); - - commands.put("remove", new Remove()); - cmdDescriptions.add(new Description( - "remove ", - "Decrease the duration of a resource. If duration is negative, the resource is removed entirely.")); - - commands.put("list", new List()); - cmdDescriptions.add(new Description( - "list ", - "List available resources")); - } - - public static void main(String[] args) { - if (args.length < 1) { - System.err.println("Missing argument 'FE host'"); - System.exit(1); - } - - String FEhost = args[0]; - - try { - (new ResponderClientCLI(FEhost)).run(); - } catch (MalformedURLException e) { - e.printStackTrace(); - } - } - - private class Add implements Command { - @Override - public void exec(String[] args) { - if (args.length < 3) - System.out.println("invalid arguments for 'add'"); - else - add(args[0], args[1], args[2]); - } - - private void add(String resourceID, String resourceName, String durationStr) { - try { - int duration = Integer.parseInt(durationStr); - if (duration < 0) { - throw new NumberFormatException("duration less than 0"); - } - String response = client.addResource(resourceID, resourceName, duration); - System.out.println(response); - } catch (NumberFormatException e) { - System.out.println("invalid duration: " + durationStr); - } - } - } - - private class Remove implements Command { - @Override - public void exec(String[] args) { - if (args.length < 2) - System.out.println("invalid arguments for 'remove'"); - else - remove(args[0], args[1]); - } - - private void remove(String resourceID, String durationStr) { - try { - int duration = Integer.parseInt(durationStr); - String response = client.removeResource(resourceID, duration); - System.out.println(response); - } catch (NumberFormatException e) { - System.out.println("invalid duration: " + durationStr); - } - } - } - - private class List implements Command { - @Override - public void exec(String[] args) { - if (args.length < 1) - System.out.println("invalid arguments for 'list'"); - else - list(args[0]); - } - - private void list(String resourceName) { - String response = client.listResourceAvailability(resourceName); - System.out.println(response); - } - } -} -- cgit v1.2.3