diff --git a/.gitignore b/.gitignore index bcf882b..14446e2 100644 --- a/.gitignore +++ b/.gitignore @@ -8,3 +8,5 @@ /bin/ /target/ CVS/ + +.vscode/ diff --git a/pom.xml b/pom.xml index 6611688..7309847 100644 --- a/pom.xml +++ b/pom.xml @@ -84,7 +84,13 @@ org.springframework spring-webmvc ${springframework.version} - + + + + org.json + json + 20200518 + @@ -115,6 +121,31 @@ - + + + + org.apache.maven.plugins + maven-assembly-plugin + + + package + + single + + + + + org.midas.ms.MasServer + + + + jar-with-dependencies + + + + + + + diff --git a/src/main/java/org/midas/metainfo/NativeComponentInfo.java b/src/main/java/org/midas/metainfo/NativeComponentInfo.java index 49968a5..f3e7bae 100644 --- a/src/main/java/org/midas/metainfo/NativeComponentInfo.java +++ b/src/main/java/org/midas/metainfo/NativeComponentInfo.java @@ -35,7 +35,7 @@ public String toString() { String aux=""; - aux+= ("• Component: "+getName()+"\n\n"); + aux+= ("Component: "+getName()+"\n\n"); aux+= ("Protocol: \n - "); aux+= (getProtocol()+"\n\n"); aux+= ("Package: \n - "); diff --git a/src/main/java/org/midas/metainfo/ServiceInfo.java b/src/main/java/org/midas/metainfo/ServiceInfo.java index 6d82be7..3112a7d 100644 --- a/src/main/java/org/midas/metainfo/ServiceInfo.java +++ b/src/main/java/org/midas/metainfo/ServiceInfo.java @@ -17,16 +17,18 @@ public class ServiceInfo implements Comparable,Serializable private String path; private String scope; private String description; + private String port; private EntityInfo entity; private Set parameters = new TreeSet(); - public ServiceInfo(String name,String path,String scope,String description,EntityInfo entity) + public ServiceInfo(String name,String path,String scope,String description, String port,EntityInfo entity) { this.name = new String(name); this.path = new String(path); this.scope = new String(scope); this.description = new String(description); + this.port = port; this.entity = entity; } @@ -57,6 +59,14 @@ public EntityInfo getEntity() { return (entity); } + + public String getPort() { + return this.port; + } + + public void setPort(String port) { + this.port = port; + } public Set getParameters() { diff --git a/src/main/java/org/midas/metainfo/WebServiceComponentInfo.java b/src/main/java/org/midas/metainfo/WebServiceComponentInfo.java index 206311d..84c5241 100644 --- a/src/main/java/org/midas/metainfo/WebServiceComponentInfo.java +++ b/src/main/java/org/midas/metainfo/WebServiceComponentInfo.java @@ -28,7 +28,7 @@ public String toString() { String aux=""; - aux+= ("• Component: "+getName()+"\n\n"); + aux+= ("Component: "+getName()+"\n\n"); aux+= ("Protocol: \n - "); aux+= (getProtocol()+"\n\n"); aux+= ("Url: \n - "); diff --git a/src/main/java/org/midas/ms/trader/Trader.java b/src/main/java/org/midas/ms/trader/Trader.java index 852a32c..3d412df 100644 --- a/src/main/java/org/midas/ms/trader/Trader.java +++ b/src/main/java/org/midas/ms/trader/Trader.java @@ -87,6 +87,25 @@ else if (requisitionType.equals("verify")) { verifyRequest(req,res); } + else if (requisitionType.equals("deregister")) + { + try + { + deregisterRequest(req,res); + } + catch (CatalogException e) + { + e.printStackTrace(); + } + catch (IOException e) + { + e.printStackTrace(); + } + catch (ClassNotFoundException e) + { + e.printStackTrace(); + } + } else { throw new IOException("Invalid Requisition - Expected parameter 'type' with requisition type {register,verify,provide,ping}"); @@ -127,7 +146,7 @@ private void verifyRequest(HttpServletRequest req, HttpServletResponse res) thro private void provideRequest(HttpServletRequest req, HttpServletResponse res) throws IOException { // Serviço - HashMap in; + Object in; String service; String organization; @@ -157,7 +176,7 @@ private void provideRequest(HttpServletRequest req, HttpServletResponse res) thr requirer = ois.readUTF(); organization = ois.readUTF(); service = ois.readUTF(); - in = (HashMap)ois.readObject(); + in = ois.readObject(); } catch (ClassNotFoundException e) { @@ -176,7 +195,7 @@ private void provideRequest(HttpServletRequest req, HttpServletResponse res) thr endTime = System.currentTimeMillis(); // Logando Resultados - LOG.warn("Unknown service required - Timing: "+(endTime-startTime)+"ms - Requirer: not found - Provider: not found | "+message,false); + LOG.warn("Unknown service required - Timing: "+(endTime-startTime)+"ms - Requirer: not found - Provider: not found | "+message,e); return; } @@ -401,6 +420,33 @@ private void registerRequest(HttpServletRequest req, HttpServletResponse res) th ManagerScreen.userInterfaceEvent("Refresh Services"); } + private void deregisterRequest(HttpServletRequest req, HttpServletResponse res) throws IOException, ClassNotFoundException, CatalogException + { + Object data; + + // Recuperando Entrada da Requisição + ObjectInputStream in = new ObjectInputStream(new BufferedInputStream(req.getInputStream())); + data = in.readObject(); + + in.close(); + + // Construindo Resposta da Requisição + res.setStatus(HttpServletResponse.SC_OK); + + ObjectOutputStream oos = new ObjectOutputStream(new BufferedOutputStream(res.getOutputStream())); + + oos.writeUTF("registered"); + oos.flush(); + oos.close(); + + // Tratando Objeto Recebido + // TODO: Delegar responsabilidade de notificação do ManagerScreen ao Catalog + ContainerInfo containerData = (ContainerInfo)data; + + Catalog.removeContainer(containerData); + LOG.info("Container '"+containerData.getName()+"' has been removed from MAS"); + } + public static boolean ping(ContainerInfo container) { try