diff --git a/workspace/popjava/src/junit/localtests/jobmanager/POPJavaJobManagerConfigurationTest.java b/workspace/popjava/src/junit/localtests/jobmanager/POPJavaJobManagerConfigurationTest.java index 3ac388cb..0b089fe6 100644 --- a/workspace/popjava/src/junit/localtests/jobmanager/POPJavaJobManagerConfigurationTest.java +++ b/workspace/popjava/src/junit/localtests/jobmanager/POPJavaJobManagerConfigurationTest.java @@ -3,6 +3,7 @@ import java.io.File; import java.io.IOException; import java.io.PrintWriter; +import java.util.ArrayList; import java.util.Arrays; import java.util.HashMap; import java.util.HashSet; @@ -15,12 +16,13 @@ import org.junit.rules.TemporaryFolder; import popjava.service.jobmanager.POPJavaJobManager; import popjava.service.jobmanager.Resource; -import popjava.service.jobmanager.network.NodeDirect; -import popjava.service.jobmanager.network.NodeJobManager; -import popjava.service.jobmanager.network.NodeTFC; -import popjava.service.jobmanager.network.POPNetworkNode; -import popjava.service.jobmanager.network.POPNetworkNodeFactory; +import popjava.service.jobmanager.network.POPNetworkDescriptor; +import popjava.service.jobmanager.network.POPNodeDirect; +import popjava.service.jobmanager.network.POPNodeJobManager; +import popjava.service.jobmanager.network.POPNodeTFC; +import popjava.service.jobmanager.network.POPNode; import popjava.system.POPSystem; +import popjava.util.Util; /** * @@ -94,19 +96,19 @@ public void customResources() throws IOException { @Test public void networks() throws IOException { - Map networks = new HashMap<>(); - networks.put("1", new POPNetworkNode[]{ new NodeDirect("1", 0), new NodeJobManager("0", 0, "ssl") }); - networks.put("2", new POPNetworkNode[]{ new NodeDirect("3", 0, "daemon"), new NodeJobManager("2", 0, "ssl") }); - networks.put("3", new POPNetworkNode[]{ new NodeTFC("4", 0, "ssl") }); + Map networks = new HashMap<>(); + networks.put("1", new POPNode[]{ new POPNodeDirect("1", 0), new POPNodeJobManager("0", 0, "ssl") }); + networks.put("2", new POPNode[]{ new POPNodeDirect("3", 0, "daemon"), new POPNodeJobManager("2", 0, "ssl") }); + networks.put("3", new POPNode[]{ new POPNodeTFC("4", 0, "ssl") }); File jmConfig = tf.newFile(); try (PrintWriter out = new PrintWriter(jmConfig)) { - for (Map.Entry entry : networks.entrySet()) { + for (Map.Entry entry : networks.entrySet()) { String network = entry.getKey(); - POPNetworkNode[] nodes = entry.getValue(); + POPNode[] nodes = entry.getValue(); out.println("network " + network); - for (POPNetworkNode node : nodes) { + for (POPNode node : nodes) { out.print("node "); for (String el : node.getCreationParams()) { out.print(el + " "); @@ -125,12 +127,15 @@ public void networks() throws IOException { for (String network : networks.keySet()) { String[][] networkStringNodes = jm.getNetworkNodes(network); - Set networkNodes = new HashSet<>(); + Set networkNodes = new HashSet<>(); for (int i = 0; i < networkStringNodes.length; i++) { - networkNodes.add(POPNetworkNodeFactory.makeNode(networkStringNodes[i])); + ArrayList params = new ArrayList<>(Arrays.asList(networkStringNodes[i])); + String connector = Util.removeStringFromList(params, "connector="); + POPNetworkDescriptor descriptor = POPNetworkDescriptor.from(connector); + networkNodes.add(descriptor.createNode(params)); } - Set original = new HashSet<>(Arrays.asList(networks.get(network))); + Set original = new HashSet<>(Arrays.asList(networks.get(network))); Assert.assertEquals(original, networkNodes); } diff --git a/workspace/popjava/src/junit/localtests/security/MethodAccessTest.java b/workspace/popjava/src/junit/localtests/security/MethodAccessTest.java index f97e3177..4cfee0d2 100644 --- a/workspace/popjava/src/junit/localtests/security/MethodAccessTest.java +++ b/workspace/popjava/src/junit/localtests/security/MethodAccessTest.java @@ -18,7 +18,7 @@ import popjava.PopJava; import popjava.combox.ssl.ComboxSecureSocketFactory; import popjava.combox.ssl.POPTrustManager; -import popjava.service.jobmanager.network.NodeTFC; +import popjava.service.jobmanager.network.POPNodeTFC; import popjava.system.POPSystem; import popjava.util.Configuration; import popjava.util.ssl.KeyStoreCreationOptions; @@ -40,7 +40,7 @@ public class MethodAccessTest { static File tempFolder; static File trustFolder; - static NodeTFC node = new NodeTFC("localhost", 2711, "socket"); + static POPNodeTFC node = new POPNodeTFC("localhost", 2711, "socket"); Configuration conf = Configuration.getInstance(); diff --git a/workspace/popjava/src/popjava/JobManagerConfig.java b/workspace/popjava/src/popjava/JobManagerConfig.java index 32910d34..6942f6c6 100644 --- a/workspace/popjava/src/popjava/JobManagerConfig.java +++ b/workspace/popjava/src/popjava/JobManagerConfig.java @@ -11,11 +11,12 @@ import popjava.util.ssl.SSLUtils; import popjava.service.jobmanager.POPJavaJobManager; import popjava.service.jobmanager.Resource; -import popjava.service.jobmanager.network.POPNetworkNode; -import popjava.service.jobmanager.network.POPNetworkNodeFactory; +import popjava.service.jobmanager.network.POPNetworkDescriptor; +import popjava.service.jobmanager.network.POPNode; import popjava.system.POPSystem; import popjava.util.Configuration; import popjava.util.LogWriter; +import popjava.util.Util; import popjava.util.ssl.KeyStoreCreationOptions; /** @@ -72,7 +73,7 @@ public void withdrawnTFCObject(Object object, String tfcNetwork, String secret) * @param network The name of the network * @param node A network node implementation */ - public void registerNode(String network, POPNetworkNode node) { + public void registerNode(String network, POPNode node) { jobManager.registerPermanentNode(network, node.getCreationParams()); } @@ -84,7 +85,7 @@ public void registerNode(String network, POPNetworkNode node) { * @param certificate The certificate to use * @return */ - public boolean registerNode(String network, POPNetworkNode node, Certificate certificate) { + public boolean registerNode(String network, POPNode node, Certificate certificate) { try { SSLUtils.addConfidenceLink(node, certificate, network); jobManager.registerPermanentNode(network, node.getCreationParams()); @@ -103,7 +104,7 @@ public boolean registerNode(String network, POPNetworkNode node, Certificate cer * @param certificate The certificate to use * @return */ - public boolean assignCertificate(String network, POPNetworkNode node, Certificate certificate) { + public boolean assignCertificate(String network, POPNode node, Certificate certificate) { try { SSLUtils.addConfidenceLink(node, certificate, network); return true; @@ -121,7 +122,7 @@ public boolean assignCertificate(String network, POPNetworkNode node, Certificat * @param certificate The certificate to load * @return */ - public boolean replaceCertificate(String network, POPNetworkNode node, Certificate certificate) { + public boolean replaceCertificate(String network, POPNode node, Certificate certificate) { try { SSLUtils.replaceConfidenceLink(node, certificate, network); return true; @@ -139,7 +140,7 @@ public boolean replaceCertificate(String network, POPNetworkNode node, Certifica * @param node The node to add * @return */ - public boolean removeCertificate(String network, POPNetworkNode node) { + public boolean removeCertificate(String network, POPNode node) { try { SSLUtils.removeConfidenceLink(node, network); return true; @@ -155,7 +156,7 @@ public boolean removeCertificate(String network, POPNetworkNode node) { * @param network The name of the network * @param node A network node implementation */ - public void unregisterNode(String network, POPNetworkNode node) { + public void unregisterNode(String network, POPNode node) { jobManager.unregisterPermanentNode(network, node.getCreationParams()); // try remove try { @@ -257,25 +258,29 @@ public String[] availableNetworks() { /** * All the node available in a network - * Use {@link POPNetworkNode#getConnectorName()} or {@link POPNetworkNode#getConnectorClass()} to know which type you are working with. + * Use {@link POPNode#getConnectorDescriptor()} or {@link POPNode#getConnectorClass()} to know which type you are working with. * * @param networkName * @return */ - public POPNetworkNode[] networkNodes(String networkName) { + public POPNode[] networkNodes(String networkName) { // get nodes String[][] networkNodes = jobManager.getNetworkNodes(networkName); // no results if (networkNodes == null) { - return new POPNetworkNode[0]; + return new POPNode[0]; } - POPNetworkNode[] nodes = new POPNetworkNode[networkNodes.length]; + POPNode[] nodes = new POPNode[networkNodes.length]; // make them real for (int i = 0; i < nodes.length; i++) { List nodeParams = new ArrayList<>(Arrays.asList(networkNodes[i])); - nodes[i] = POPNetworkNodeFactory.makeNode(nodeParams); + String connector = Util.removeStringFromList(nodeParams, "connector="); + POPNetworkDescriptor descriptor = POPNetworkDescriptor.from(connector); + if (descriptor != null) { + nodes[i] = descriptor.createNode(nodeParams); + } } return nodes; diff --git a/workspace/popjava/src/popjava/PopJava.java b/workspace/popjava/src/popjava/PopJava.java index 3db84d05..709112e8 100644 --- a/workspace/popjava/src/popjava/PopJava.java +++ b/workspace/popjava/src/popjava/PopJava.java @@ -10,10 +10,10 @@ import popjava.broker.Broker; import popjava.buffer.POPBuffer; import popjava.service.jobmanager.POPJavaJobManager; -import popjava.service.jobmanager.connector.POPConnector; -import popjava.service.jobmanager.connector.POPConnectorTFC; -import popjava.service.jobmanager.network.AbstractNodeJobManager; -import popjava.service.jobmanager.network.POPNetworkNode; +import popjava.service.jobmanager.network.POPConnector; +import popjava.service.jobmanager.network.POPConnectorTFC; +import popjava.service.jobmanager.network.POPNodeAJobManager; +import popjava.service.jobmanager.network.POPNode; import popjava.system.POPSystem; import popjava.util.Configuration; import popjava.util.POPRemoteCaller; @@ -104,7 +104,7 @@ public static T newActiveFromBuffer(Class targetClass, POPBuffer buffer) public static POPAccessPoint[] newTFCSearch(Class targetClass, int maxInstances, ObjectDescription od) { POPSystem.start(); // we ARE in a TFC environment - od.setConnector(POPConnector.Name.TFC.getGlobalName()); + od.setConnector("tfc"); // we must specify a network if (od.getNetwork().isEmpty()) { @@ -152,14 +152,14 @@ public static POPAccessPoint[] newTFCSearch(Class targetClass, int maxInstances, * @param node * @return */ - public static POPAccessPoint[] newTFCSearchOn(Class targetClass, String networkName, POPNetworkNode node) { + public static POPAccessPoint[] newTFCSearchOn(Class targetClass, String networkName, POPNode node) { POPAccessPoint[] aps = new POPAccessPoint[0]; - if (!(node instanceof AbstractNodeJobManager)) { + if (!(node instanceof POPNodeAJobManager)) { return aps; } // cast node and connect to remote job manager - AbstractNodeJobManager jmNode = (AbstractNodeJobManager) node; + POPNodeAJobManager jmNode = (POPNodeAJobManager) node; POPJavaJobManager jobManager = jmNode.getJobManager(); // make local reserach on node diff --git a/workspace/popjava/src/popjava/interfacebase/Interface.java b/workspace/popjava/src/popjava/interfacebase/Interface.java index 45e27827..9d265a3e 100644 --- a/workspace/popjava/src/popjava/interfacebase/Interface.java +++ b/workspace/popjava/src/popjava/interfacebase/Interface.java @@ -28,7 +28,7 @@ import popjava.service.deamon.POPJavaDeamonConnector; import popjava.service.jobmanager.POPJavaAppService; import popjava.service.jobmanager.POPJavaJobManager; -import popjava.service.jobmanager.connector.POPConnectorDirect; +import popjava.service.jobmanager.network.POPConnectorDirect; import popjava.serviceadapter.POPAppService; import popjava.serviceadapter.POPJobManager; import popjava.serviceadapter.POPJobService; diff --git a/workspace/popjava/src/popjava/service/jobmanager/POPJavaJobManager.java b/workspace/popjava/src/popjava/service/jobmanager/POPJavaJobManager.java index bd8e1d4d..5838cd3d 100644 --- a/workspace/popjava/src/popjava/service/jobmanager/POPJavaJobManager.java +++ b/workspace/popjava/src/popjava/service/jobmanager/POPJavaJobManager.java @@ -45,15 +45,15 @@ import popjava.dataswaper.POPString; import popjava.util.ssl.SSLUtils; import popjava.interfacebase.Interface; -import popjava.service.jobmanager.network.NodeJobManager; +import popjava.service.jobmanager.network.POPNodeJobManager; import popjava.service.jobmanager.network.POPNetwork; -import popjava.service.jobmanager.network.POPNetworkNode; -import popjava.service.jobmanager.network.POPNetworkNodeFactory; -import popjava.service.jobmanager.connector.POPConnector; -import popjava.service.jobmanager.connector.POPConnectorSearchNodeInterface; -import popjava.service.jobmanager.connector.POPConnectorTFC; -import popjava.service.jobmanager.network.AbstractNodeJobManager; -import popjava.service.jobmanager.network.NodeTFC; +import popjava.service.jobmanager.network.POPNode; +import popjava.service.jobmanager.network.POPConnector; +import popjava.service.jobmanager.network.POPNetworkDescriptor; +import popjava.service.jobmanager.network.POPConnectorSearchNodeInterface; +import popjava.service.jobmanager.network.POPConnectorTFC; +import popjava.service.jobmanager.network.POPNodeAJobManager; +import popjava.service.jobmanager.network.POPNodeTFC; import popjava.service.jobmanager.search.SNExploration; import popjava.service.jobmanager.search.SNNodesInfo; import popjava.service.jobmanager.search.SNRequest; @@ -194,188 +194,194 @@ private void init(String confFile) { String line; String[] token; while ((line = br.readLine()) != null) { - // split line for reading - token = line.trim().split("\\s+"); + try { + // split line for reading + token = line.trim().split("\\s+"); - // skip only key or empty lines - if (token.length < 2) { - continue; - } - // skip commented lines - if (token[0].startsWith("#")) { - continue; - } - - // handle first token - switch (token[0]) { - // create network - // format: network [default] [...] - case "network": - String networkName = token[1]; - // not enough elements, [0] = network, [1] = name, [2] = default - if (token.length < 2) { - LogWriter.writeDebugInfo(String.format("[JM] Network %s not enough parameters supplied", networkName)); - continue; - } + // skip only key or empty lines + if (token.length < 2) { + continue; + } + // skip commented lines + if (token[0].startsWith("#")) { + continue; + } - // check if exists - if (networks.containsKey(networkName)) { - LogWriter.writeDebugInfo(String.format("[JM] Network %s already exists", networkName)); - continue; - } + // handle first token + switch (token[0]) { + // create network + // format: network [default] [...] + case "network": + String networkName = token[1]; + // not enough elements, [0] = network, [1] = name, [2] = default + if (token.length < 2) { + LogWriter.writeDebugInfo(String.format("[JM] Network %s not enough parameters supplied", networkName)); + continue; + } - String[] other = Arrays.copyOfRange(token, 2, token.length); + // check if exists + if (networks.containsKey(networkName)) { + LogWriter.writeDebugInfo(String.format("[JM] Network %s already exists", networkName)); + continue; + } - // create network - POPNetwork network = new POPNetwork(networkName, this); + String[] other = Arrays.copyOfRange(token, 2, token.length); - // set as last added network, this is used when defining nodes - if (!networkName.equals(lastNetwork)) { - lastNetwork = networkName; - } + // create network + POPNetwork network = new POPNetwork(networkName, this); - // set as default network the first network - // or change it if other tell us they are the default network - if (defaultNetwork == null || Arrays.asList(other).contains("default")) { - defaultNetwork = network; - } + // set as last added network, this is used when defining nodes + if (!networkName.equals(lastNetwork)) { + lastNetwork = networkName; + } - // add to map - LogWriter.writeDebugInfo(String.format("[JM] Network %s created", networkName)); - networks.put(networkName, network); - break; - - // handle node in network - // format: node host= - case "node": - // not enough elements - if (token.length < 2) { - LogWriter.writeDebugInfo(String.format("[JM] Node not enough parameters supplied: %s", line)); - continue; - } + // set as default network the first network + // or change it if other tell us they are the default network + if (defaultNetwork == null || Arrays.asList(other).contains("default")) { + defaultNetwork = network; + } - // params for node, at least one - other = Arrays.copyOfRange(token, 1, token.length); - // asList only wrap the array making it unmodifiable, we work on the list - List params = new ArrayList<>(Arrays.asList(other)); + // add to map + LogWriter.writeDebugInfo(String.format("[JM] Network %s created", networkName)); + networks.put(networkName, network); + break; + + // handle node in network + // format: node host= + case "node": + // not enough elements + if (token.length < 2) { + LogWriter.writeDebugInfo(String.format("[JM] Node not enough parameters supplied: %s", line)); + continue; + } - // get specified network or use default - String networkString = Util.removeStringFromList(params, "network="); - if (networkString == null) { - networkString = lastNetwork; - } - // check again and throw error if no network was previously set - if (networkString == null) { - throw new RuntimeException(String.format("[JM Config] Setting up `node' before any network. %s", Arrays.toString(token))); - } + // params for node, at least one + other = Arrays.copyOfRange(token, 1, token.length); + // asList only wrap the array making it unmodifiable, we work on the list + List params = new ArrayList<>(Arrays.asList(other)); - // get network from know networks - network = networks.get(networkString); - // if no network exists, abort - if (network == null) { - LogWriter.writeDebugInfo(String.format("[JM] Node, network %s not found for node %s", token[1], Arrays.toString(token))); - continue; - } + // get specified network or use default + String networkString = Util.removeStringFromList(params, "network="); + if (networkString == null) { + networkString = lastNetwork; + } + // check again and throw error if no network was previously set + if (networkString == null) { + throw new RuntimeException(String.format("[JM Config] Setting up `node' before any network. %s", Arrays.toString(token))); + } - // create the node for the network - POPNetworkNode node = POPNetworkNodeFactory.makeNode(params); - // add it to the network - LogWriter.writeDebugInfo(String.format("[JM] Node [%s] added to %s", node.toString(), networkString)); - network.add(node); - break; - - // set available resources - // format: resource - case "resource": - if (token.length < 3) { - LogWriter.writeDebugInfo(String.format("[JM] Resource set fail, not enough parameters: %s", line)); - continue; - } + // get network from know networks + network = networks.get(networkString); + // if no network exists, abort + if (network == null) { + LogWriter.writeDebugInfo(String.format("[JM] Node, network %s not found for node %s", token[1], Arrays.toString(token))); + continue; + } - // type of set - switch (token[1]) { - case "power": - try { - available.setFlops(Float.parseFloat(token[2])); - total.setFlops(available.getFlops()); - } catch (NumberFormatException e) { - LogWriter.writeDebugInfo(String.format("[JM] Resource set fail, power value: %s", token[2])); - } - break; - case "memory": - try { - available.setMemory(Float.parseFloat(token[2])); - total.setMemory(available.getMemory()); - } catch (NumberFormatException e) { - LogWriter.writeDebugInfo(String.format("[JM] Resource set fail, memory value: %s", token[2])); - } - break; - case "bandwidth": - try { - available.setBandwidth(Float.parseFloat(token[2])); - total.setBandwidth(available.getBandwidth()); - } catch (NumberFormatException e) { - LogWriter.writeDebugInfo(String.format("[JM] Resource set fail, bandwidth value: %s", token[2])); - } - break; - default: - LogWriter.writeDebugInfo(String.format("[JM] Resource set fail, unknow resource: %s", token[1])); - } - break; + // create the node for the network + String connector = Util.removeStringFromList(params, "connector="); + POPNetworkDescriptor descriptor = POPNetworkDescriptor.from(connector); + POPNode node = descriptor.createNode(params); + // add it to the network + LogWriter.writeDebugInfo(String.format("[JM] Node [%s] added to %s", node.toString(), networkString)); + network.add(node); + break; + + // set available resources + // format: resource + case "resource": + if (token.length < 3) { + LogWriter.writeDebugInfo(String.format("[JM] Resource set fail, not enough parameters: %s", line)); + continue; + } - // set jobs limit, resources and number - // format: job - case "job": - if (token.length < 3) { - LogWriter.writeDebugInfo(String.format("[JM] Limit set fail, not enough parameters: %s", line)); - continue; - } - // type of set - switch (token[1]) { - case "limit": - try { - maxJobs = Integer.parseInt(token[2]); - } catch (NumberFormatException e) { - LogWriter.writeDebugInfo(String.format("[JM] Limit set fail, limit value: %s", token[2])); - } - break; - case "power": - try { - jobLimit.setFlops(Float.parseFloat(token[2])); - } catch (NumberFormatException e) { - LogWriter.writeDebugInfo(String.format("[JM] Limit set fail, ram value: %s", token[2])); - } - break; - case "memory": - try { - jobLimit.setMemory(Float.parseFloat(token[2])); - } catch (NumberFormatException e) { - LogWriter.writeDebugInfo(String.format("[JM] Limit set fail, memory value: %s", token[2])); - } - break; - case "bandwidth": - try { - jobLimit.setBandwidth(Float.parseFloat(token[2])); - } catch (NumberFormatException e) { - LogWriter.writeDebugInfo(String.format("[JM] Limit set fail, bandwidth value: %s", token[2])); - } - break; - default: - LogWriter.writeDebugInfo(String.format("[JM] Limit set fail, unknow resource: %s", token[1])); - } - break; - - // any other value is store in a map for possible future use - default: - // get or create and add to map - List val = nodeExtra.get(token[0]); - if (val == null) { - val = new ArrayList<>(); - nodeExtra.put(token[0], val); - } - // add extra value - val.add(line.substring(token[0].length())); - break; + // type of set + switch (token[1]) { + case "power": + try { + available.setFlops(Float.parseFloat(token[2])); + total.setFlops(available.getFlops()); + } catch (NumberFormatException e) { + LogWriter.writeDebugInfo(String.format("[JM] Resource set fail, power value: %s", token[2])); + } + break; + case "memory": + try { + available.setMemory(Float.parseFloat(token[2])); + total.setMemory(available.getMemory()); + } catch (NumberFormatException e) { + LogWriter.writeDebugInfo(String.format("[JM] Resource set fail, memory value: %s", token[2])); + } + break; + case "bandwidth": + try { + available.setBandwidth(Float.parseFloat(token[2])); + total.setBandwidth(available.getBandwidth()); + } catch (NumberFormatException e) { + LogWriter.writeDebugInfo(String.format("[JM] Resource set fail, bandwidth value: %s", token[2])); + } + break; + default: + LogWriter.writeDebugInfo(String.format("[JM] Resource set fail, unknow resource: %s", token[1])); + } + break; + + // set jobs limit, resources and number + // format: job + case "job": + if (token.length < 3) { + LogWriter.writeDebugInfo(String.format("[JM] Limit set fail, not enough parameters: %s", line)); + continue; + } + // type of set + switch (token[1]) { + case "limit": + try { + maxJobs = Integer.parseInt(token[2]); + } catch (NumberFormatException e) { + LogWriter.writeDebugInfo(String.format("[JM] Limit set fail, limit value: %s", token[2])); + } + break; + case "power": + try { + jobLimit.setFlops(Float.parseFloat(token[2])); + } catch (NumberFormatException e) { + LogWriter.writeDebugInfo(String.format("[JM] Limit set fail, ram value: %s", token[2])); + } + break; + case "memory": + try { + jobLimit.setMemory(Float.parseFloat(token[2])); + } catch (NumberFormatException e) { + LogWriter.writeDebugInfo(String.format("[JM] Limit set fail, memory value: %s", token[2])); + } + break; + case "bandwidth": + try { + jobLimit.setBandwidth(Float.parseFloat(token[2])); + } catch (NumberFormatException e) { + LogWriter.writeDebugInfo(String.format("[JM] Limit set fail, bandwidth value: %s", token[2])); + } + break; + default: + LogWriter.writeDebugInfo(String.format("[JM] Limit set fail, unknow resource: %s", token[1])); + } + break; + + // any other value is store in a map for possible future use + default: + // get or create and add to map + List val = nodeExtra.get(token[0]); + if (val == null) { + val = new ArrayList<>(); + nodeExtra.put(token[0], val); + } + // add extra value + val.add(line.substring(token[0].length())); + break; + } + } catch(Exception e) { + LogWriter.writeDebugInfo("[JM] configuration failed: %s", e.getMessage()); } } } catch (IOException e) { @@ -422,9 +428,9 @@ public int createObject(POPAccessPoint localservice, } // get the job manager connector specified in the od - POPConnector.Name connector = null; + POPNetworkDescriptor connector = null; try { - connector = POPConnector.Name.from(od.getConnector()); + connector = POPNetworkDescriptor.from(od.getConnector()); } catch(IllegalArgumentException e) { throw new POPException(POPErrorCode.POP_JOBSERVICE_FAIL, od.getConnector() + " in " + networkString + " unknown."); @@ -602,61 +608,7 @@ public int reserve(@POPParameter(Direction.IN) ObjectDescription od, @POPParamet mutex.lock(); // if we have an od - if (!od.isEmpty()) { - float require, min; - - // power - require = od.getPowerReq(); - min = od.getPowerMin(); - if (require > 0) { - if (min < 0) { - min = require; - } - - if (require > available.getFlops() || require > jobLimit.getFlops()) { - flops = Math.min(available.getFlops(), jobLimit.getFlops()); - fitness = flops / require; - } else { - flops = require; - fitness = Math.min(available.getFlops(), jobLimit.getFlops()) / require; - } - if (fitness < iofitness.getValue()) { - return 0; - } - } - - // memory - require = od.getMemoryReq(); - min = od.getMemoryMin(); - if (require > 0) { - LogWriter.writeDebugInfo(String.format("[JM] Require memory %f, at least: %f (available: %f)", require, min, available.getMemory())); - if (min < 0) { - min = require; - } - if (min > available.getMemory()) { - LogWriter.writeDebugInfo("[JM] Local Match Failed (reason: memory)"); - return 0; - } - float fitness1; - if (require > available.getMemory()) { - mem = available.getMemory(); - fitness1 = mem / require; - } else { - mem = require; - fitness1 = mem / available.getMemory(); - } - if (fitness1 < fitness) { - if (fitness1 < iofitness.getValue()) { - return 0; - } - fitness = fitness1; - } - } - - // TODO? walltime; - // TODO bandwidth; not in POPC - weighted = new Resource(flops, mem, bandwidth); - } + if (!od.isEmpty()) // output fitness iofitness.setValue(fitness); @@ -757,7 +709,7 @@ public void dump() { out.println(String.format("members=%d", net.size())); for (POPConnector connector : connectors) { out.println(String.format("[%s.%s]", net.getFriendlyName(), connector.getClass().getCanonicalName())); - for (POPNetworkNode node : connector.getNodes()) { + for (POPNode node : net.getMembers(connector.getDescriptor())) { out.println(String.format("node=%s", node.toString())); } } @@ -957,13 +909,13 @@ protected void selfRegister() { } // all nodes - List nodes = connector.getNodes(); + List nodes = network.getMembers(connector.getDescriptor()); - for (POPNetworkNode node : nodes) { + for (POPNode node : nodes) { // only contact JM types of nodes - if (node instanceof AbstractNodeJobManager) { + if (node instanceof POPNodeAJobManager) { // connect to remove jm - AbstractNodeJobManager jmnode = (AbstractNodeJobManager) node; + POPNodeAJobManager jmnode = (POPNodeAJobManager) node; registerRemoteAsync(network.getFriendlyName(), jmnode); } } @@ -989,7 +941,7 @@ protected void selfUnregister() { * @param node */ @POPAsyncConc - private void registerRemoteAsync(String network, AbstractNodeJobManager node) { + private void registerRemoteAsync(String network, POPNodeAJobManager node) { try { // TODO send self, we should in some way generate a POPNetworkNode of ourselves in the right format // a way could be by modifying the parameters we get from node.getParameters(), we know host=??, @@ -1054,7 +1006,7 @@ public void removeNetwork(String name) { * Register node to a network by supplying an array of string matching the format in the configuration file * * @param networkName The name of an existing network in this JM - * @param params An array of String that will be processed by {@link POPNetworkNodeFactory#makeNode(String...)} + * @param params An array of String that will be processed by {@link POPNodeFactory#makeNode(String[])} */ @POPSyncConc public void registerNode(String networkName, String... params) { @@ -1065,17 +1017,19 @@ public void registerNode(String networkName, String... params) { return; } - LogWriter.writeDebugInfo("[JM] Node %s added to %s", Arrays.toString(params), networkName); - POPNetworkNode node = POPNetworkNodeFactory.makeNode(params); + List listparams = new ArrayList<>(Arrays.asList(params)); + String connector = Util.removeStringFromList(listparams, "connector="); + POPNode node = POPNetworkDescriptor.from(connector).createNode(listparams); node.setTemporary(true); network.add(node); + LogWriter.writeDebugInfo("[JM] Node %s added to %s", Arrays.toString(params), networkName); } /** * Remove a node from a network * * @param networkName The name of an existing network in this JM - * @param params An array of String that will be processed to {@link POPNetworkNodeFactory#makeNode} + * @param params An array of String that will be processed to {@link POPNodeFactory#makeNode} */ @POPAsyncConc public void unregisterNode(String networkName, String... params) { @@ -1086,8 +1040,10 @@ public void unregisterNode(String networkName, String... params) { return; } + List listparams = new ArrayList<>(Arrays.asList(params)); + String connector = Util.removeStringFromList(listparams, "connector="); + network.remove(POPNetworkDescriptor.from(connector).createNode(listparams)); LogWriter.writeDebugInfo("[JM] Node %s removed", Arrays.toString(params)); - network.remove(POPNetworkNodeFactory.makeNode(params)); } /** @@ -1124,9 +1080,11 @@ public void registerPermanentNode(String networkName, String... params) { return; } - LogWriter.writeDebugInfo("[JM] Node %s added to %s", Arrays.toString(params), network); - network.add(POPNetworkNodeFactory.makeNode(params)); + List listparams = new ArrayList<>(Arrays.asList(params)); + String connector = Util.removeStringFromList(listparams, "connector="); + network.add(POPNetworkDescriptor.from(connector).createNode(listparams)); writeConfigurationFile(); + LogWriter.writeDebugInfo("[JM] Node %s added to %s", Arrays.toString(params), network); } /** @@ -1143,8 +1101,10 @@ public void unregisterPermanentNode(String networkName, String... params) { return; } + List listparams = new ArrayList<>(Arrays.asList(params)); + String connector = Util.removeStringFromList(listparams, "connector="); + network.remove(POPNetworkDescriptor.from(connector).createNode(listparams)); LogWriter.writeDebugInfo("[JM] Node %s removed", Arrays.toString(params)); - network.remove(POPNetworkNodeFactory.makeNode(params)); writeConfigurationFile(); } @@ -1320,7 +1280,7 @@ private void writeConfigurationFile() { for (POPConnector connector : network.getConnectors()) { ps.println("# nodes for connector " + connector.getClass().getCanonicalName()); - for (POPNetworkNode node : connector.getNodes()) { + for (POPNode node : network.getMembers(connector.getDescriptor())) { if (node.isTemporary()) { continue; } @@ -1417,7 +1377,7 @@ public String[][] getNetworkNodes(String networkName) { String[][] nodes = new String[network.size()][]; int i = 0; for (POPConnector connector : network.getConnectors()) { - for (POPNetworkNode node : connector.getNodes()) { + for (POPNode node : network.getMembers(connector.getDescriptor())) { nodes[i++] = node.getCreationParams(); } } @@ -1465,17 +1425,17 @@ public boolean registerTFCObject(String networkName, String objectName, POPAcces } // get network's TFC connector to add the object or add a local one - POPConnectorTFC tfc = network.getConnector(POPConnector.Name.TFC); + POPConnectorTFC tfc = network.getConnector(POPNetworkDescriptor.from("tfc")); if (tfc == null) { // add a local node, this will also add the connector AccessPoint myself = getAccessPoint().get(0); String protocol = myself.getProtocol(); int port = myself.getPort(); - POPNetworkNode newNode = new NodeTFC("localhost", port, protocol); + POPNode newNode = new POPNodeTFC("localhost", port, protocol); this.registerNode(networkName, newNode.getCreationParams()); writeConfigurationFile(); - tfc = network.getConnector(POPConnector.Name.TFC); + tfc = network.getConnector(POPNetworkDescriptor.from("tfc")); } // create resource @@ -1500,7 +1460,7 @@ public void unregisterTFCObject(String networkName, String objectName, POPAccess } // get network's TFC connector to add the object - POPConnectorTFC tfc = network.getConnector(POPConnector.Name.TFC); + POPConnectorTFC tfc = network.getConnector(POPNetworkDescriptor.from("tfc")); if (tfc == null) { return; } @@ -1527,7 +1487,7 @@ public POPAccessPoint[] localTFCSearch(String networkName, String objectName) { } // get network's TFC connector to add the object - POPConnectorTFC tfc = network.getConnector(POPConnector.Name.TFC); + POPConnectorTFC tfc = network.getConnector(POPNetworkDescriptor.from("tfc")); if (tfc == null) { return aps; } @@ -1661,13 +1621,13 @@ public void askResourcesDiscovery(@POPParameter(Direction.IN) SNRequest request, } // connector we are using - POPConnector.Name connector = null; + POPNetworkDescriptor descriptor = null; try { - connector = POPConnector.Name.from(od.getConnector()); + descriptor = POPNetworkDescriptor.from(od.getConnector()); } catch(IllegalArgumentException e) { return; } - POPConnector connectorImpl = network.getConnector(connector); + POPConnector connectorImpl = network.getConnector(descriptor); // connector won't work with the SearchNode if (!(connectorImpl instanceof POPConnectorSearchNodeInterface)) { @@ -1676,10 +1636,10 @@ public void askResourcesDiscovery(@POPParameter(Direction.IN) SNRequest request, POPConnectorSearchNodeInterface snEnableConnector = (POPConnectorSearchNodeInterface) connectorImpl; // add all network neighbors to explorations list - for (POPNetworkNode node : connectorImpl.getNodes()) { + for (POPNode node : network.getMembers(connectorImpl.getDescriptor())) { // only JM items and children - if (node instanceof AbstractNodeJobManager) { - AbstractNodeJobManager jmNode = (AbstractNodeJobManager) node; + if (node instanceof POPNodeAJobManager) { + POPNodeAJobManager jmNode = (POPNodeAJobManager) node; // add to exploration list explorationList.add(jmNode.getJobManagerAccessPoint()); } @@ -1691,10 +1651,10 @@ public void askResourcesDiscovery(@POPParameter(Direction.IN) SNRequest request, // check if we can continue discovering if (request.getRemainingHops() >= 0 || request.getRemainingHops() == conf.getSearchNodeUnlimitedHops()) { // propagate to all neighbors - for (POPNetworkNode node : connectorImpl.getNodes()) { + for (POPNode node : network.getMembers(connectorImpl.getDescriptor())) { // only JM items and children - if (node instanceof NodeJobManager) { - AbstractNodeJobManager jmNode = (AbstractNodeJobManager) node; + if (node instanceof POPNodeJobManager) { + POPNodeAJobManager jmNode = (POPNodeAJobManager) node; // contact if it has not been contacted before by someone else if (!oldExplorationList.contains(jmNode.getJobManagerAccessPoint())) { @@ -1738,9 +1698,9 @@ public void askResourcesDiscovery(@POPParameter(Direction.IN) SNRequest request, // add current node do wayback request.getWayback().push(getAccessPoint()); // request to all members of the network - for (POPNetworkNode node : connectorImpl.getNodes()) { - if (node instanceof AbstractNodeJobManager) { - AbstractNodeJobManager jmNode = (AbstractNodeJobManager) node; + for (POPNode node : network.getMembers(connectorImpl.getDescriptor())) { + if (node instanceof POPNodeAJobManager) { + POPNodeAJobManager jmNode = (POPNodeAJobManager) node; // contact if it's a new node if (!oldExplorationList.contains(jmNode.getJobManagerAccessPoint())) { try { diff --git a/workspace/popjava/src/popjava/service/jobmanager/connector/POPConnectorFactory.java b/workspace/popjava/src/popjava/service/jobmanager/connector/POPConnectorFactory.java deleted file mode 100644 index b1594511..00000000 --- a/workspace/popjava/src/popjava/service/jobmanager/connector/POPConnectorFactory.java +++ /dev/null @@ -1,32 +0,0 @@ -package popjava.service.jobmanager.connector; - -import popjava.util.LogWriter; - -/** - * Create a Protocol to createObject in the JobManager, this method should only be called when creating a Network - * - * @see popjava.service.jobmanager.network.POPNetwork - * @see popjava.service.jobmanager.POPJavaJobManager - * @author Davide Mazzoleni - */ -public class POPConnectorFactory { - public static POPConnector makeConnector(String connectorName) { - try { - POPConnector.Name connector = POPConnector.Name.from(connectorName); - return makeConnector(connector); - } catch(IllegalArgumentException e) { - LogWriter.writeDebugInfo("[Connector Factory] unknown connector '%s'", connectorName); - } - return null; - } - - public static POPConnector makeConnector(POPConnector.Name connector) { - switch (connector) { - // network and job manager are passed manually afterwards - case JOBMANAGER: return new POPConnectorJobManager(); - case DIRECT: return new POPConnectorDirect(); - case TFC: return new POPConnectorTFC(); - } - return null; - } -} diff --git a/workspace/popjava/src/popjava/service/jobmanager/network/NodeJobManager.java b/workspace/popjava/src/popjava/service/jobmanager/network/NodeJobManager.java deleted file mode 100644 index ca875f53..00000000 --- a/workspace/popjava/src/popjava/service/jobmanager/network/NodeJobManager.java +++ /dev/null @@ -1,21 +0,0 @@ -package popjava.service.jobmanager.network; - -import java.util.List; -import popjava.service.jobmanager.connector.POPConnector; - -/** - * A JobManager node - * - * @author Davide Mazzoleni - */ -public class NodeJobManager extends AbstractNodeJobManager { - - public NodeJobManager(String host, int port, String protocol) { - super(POPConnector.Name.JOBMANAGER, host, port, protocol); - - } - - NodeJobManager(List params) { - super(POPConnector.Name.JOBMANAGER, params); - } -} diff --git a/workspace/popjava/src/popjava/service/jobmanager/network/NodeTFC.java b/workspace/popjava/src/popjava/service/jobmanager/network/NodeTFC.java deleted file mode 100644 index e2b36bd1..00000000 --- a/workspace/popjava/src/popjava/service/jobmanager/network/NodeTFC.java +++ /dev/null @@ -1,21 +0,0 @@ -package popjava.service.jobmanager.network; - -import java.util.List; -import popjava.service.jobmanager.connector.POPConnector; - -/** - * A TFC node - * - * @author Davide Mazzoleni - */ -public class NodeTFC extends AbstractNodeJobManager { - - public NodeTFC(String host, int port, String protocol) { - super(POPConnector.Name.TFC, host, port, protocol); - } - - public NodeTFC(List params) { - super(POPConnector.Name.TFC, params); - } - -} diff --git a/workspace/popjava/src/popjava/service/jobmanager/connector/POPConnector.java b/workspace/popjava/src/popjava/service/jobmanager/network/POPConnector.java similarity index 60% rename from workspace/popjava/src/popjava/service/jobmanager/connector/POPConnector.java rename to workspace/popjava/src/popjava/service/jobmanager/network/POPConnector.java index 832306dd..67736927 100644 --- a/workspace/popjava/src/popjava/service/jobmanager/connector/POPConnector.java +++ b/workspace/popjava/src/popjava/service/jobmanager/network/POPConnector.java @@ -1,4 +1,4 @@ -package popjava.service.jobmanager.connector; +package popjava.service.jobmanager.network; import java.util.ArrayList; import java.util.Collections; @@ -6,53 +6,26 @@ import popjava.baseobject.ObjectDescription; import popjava.baseobject.POPAccessPoint; import popjava.service.jobmanager.POPJavaJobManager; -import popjava.service.jobmanager.network.POPNetwork; -import popjava.service.jobmanager.network.POPNetworkNode; /** * * @author Davide Mazzoleni */ public abstract class POPConnector { - - public enum Name { - JOBMANAGER("jobmanager"), - TFC("tfc"), - DIRECT("direct"); - - private final String globalName; - - private Name(String globalName) { - this.globalName = globalName; - } - - public String getGlobalName() { - return globalName; - } - - public static Name from(String global) { - for (Name name : values()) { - if (name.getGlobalName().toLowerCase().equals(global.toLowerCase())) { - return name; - } - } - throw new IllegalArgumentException("unknown enum for enum"); - } - } protected POPNetwork network; protected POPJavaJobManager jobManager; - protected final Name name; - protected final List nodes = new ArrayList<>(); + protected final POPNetworkDescriptor descriptor; + protected final List nodes = new ArrayList<>(); /** * The constructor define the name of the connector. * * @param name */ - public POPConnector(Name name) { - this.name = name; + public POPConnector(POPNetworkDescriptor name) { + this.descriptor = name; } /** @@ -75,12 +48,12 @@ public abstract int createObject(POPAccessPoint localservice, int howmany2, POPAccessPoint[] remotejobcontacts); /** - * The enum identifying this class. + * The descriptor identifying this class. * * @return */ - public Name getName() { - return name; + public POPNetworkDescriptor getDescriptor() { + return descriptor; } /** @@ -98,8 +71,8 @@ public boolean isEmpty() { * @param node The node to add * @return true if it's added, false otherwise */ - public boolean add(POPNetworkNode node) { - return nodes.contains(node) || nodes.add(node); + boolean addNode(POPNode node) { + return node.getConnectorDescriptor() == descriptor && nodes.contains(node) || nodes.add(node); } /** @@ -108,7 +81,7 @@ public boolean add(POPNetworkNode node) { * @param node The node to remove * @return true if it's added, false otherwise */ - public boolean remove(POPNetworkNode node) { + boolean removeNode(POPNode node) { return nodes.remove(node); } @@ -126,7 +99,7 @@ public int size() { * * @return */ - public List getNodes() { + List getNodes() { return Collections.unmodifiableList(nodes); } @@ -135,7 +108,7 @@ public List getNodes() { * * @param network */ - public void setNetwork(POPNetwork network) { + void setNetwork(POPNetwork network) { this.network = network; } @@ -144,7 +117,7 @@ public void setNetwork(POPNetwork network) { * * @param jobManager */ - public void setJobManager(POPJavaJobManager jobManager) { + void setJobManager(POPJavaJobManager jobManager) { this.jobManager = jobManager; } } diff --git a/workspace/popjava/src/popjava/service/jobmanager/connector/POPConnectorDirect.java b/workspace/popjava/src/popjava/service/jobmanager/network/POPConnectorDirect.java similarity index 63% rename from workspace/popjava/src/popjava/service/jobmanager/connector/POPConnectorDirect.java rename to workspace/popjava/src/popjava/service/jobmanager/network/POPConnectorDirect.java index b57d8a21..bc156aa3 100644 --- a/workspace/popjava/src/popjava/service/jobmanager/connector/POPConnectorDirect.java +++ b/workspace/popjava/src/popjava/service/jobmanager/network/POPConnectorDirect.java @@ -1,22 +1,34 @@ -package popjava.service.jobmanager.connector; +package popjava.service.jobmanager.network; +import java.util.List; import popjava.baseobject.ConnectionType; import popjava.baseobject.ObjectDescription; import popjava.baseobject.POPAccessPoint; import popjava.interfacebase.Interface; -import popjava.service.jobmanager.network.NodeDirect; /** * * @author Davide Mazzoleni */ public class POPConnectorDirect extends POPConnector { + + private static class DescriptorMethodImpl implements POPNetworkDescriptorMethod { + @Override + public POPConnector createConnector() { + return new POPConnectorDirect(); + } + + @Override + public POPNode createNode(List params) { + return new POPNodeDirect(params); + } + } + static final POPNetworkDescriptor DESCRIPTOR = new POPNetworkDescriptor("direct", new DescriptorMethodImpl()); - public static final String IDENTITY = "direct"; public static final String OD_SERVICE_PORT = "_service-port"; public POPConnectorDirect() { - super(Name.DIRECT); + super(DESCRIPTOR); } @Override @@ -24,7 +36,7 @@ public int createObject(POPAccessPoint localservice, String objname, ObjectDescr int howmany, POPAccessPoint[] objcontacts, int howmany2, POPAccessPoint[] remotejobcontacts) { // node in network // get a random node - NodeDirect node = (NodeDirect) nodes.get((int) (Math.random() * nodes.size())); + POPNodeDirect node = (POPNodeDirect) nodes.get((int) (Math.random() * nodes.size())); // set od hostname to connect directly od.setHostname(node.getHost()); diff --git a/workspace/popjava/src/popjava/service/jobmanager/connector/POPConnectorJobManager.java b/workspace/popjava/src/popjava/service/jobmanager/network/POPConnectorJobManager.java similarity index 89% rename from workspace/popjava/src/popjava/service/jobmanager/connector/POPConnectorJobManager.java rename to workspace/popjava/src/popjava/service/jobmanager/network/POPConnectorJobManager.java index 58f7a20a..ecbcf381 100644 --- a/workspace/popjava/src/popjava/service/jobmanager/connector/POPConnectorJobManager.java +++ b/workspace/popjava/src/popjava/service/jobmanager/network/POPConnectorJobManager.java @@ -1,5 +1,6 @@ -package popjava.service.jobmanager.connector; +package popjava.service.jobmanager.network; +import java.util.List; import popjava.PopJava; import popjava.base.POPErrorCode; import popjava.base.POPException; @@ -27,10 +28,23 @@ */ public class POPConnectorJobManager extends POPConnector implements POPConnectorSearchNodeInterface { + private static class DescriptorMethodImpl implements POPNetworkDescriptorMethod { + @Override + public POPConnector createConnector() { + return new POPConnectorJobManager(); + } + + @Override + public POPNode createNode(List params) { + return new POPNodeJobManager(params); + } + } + static final POPNetworkDescriptor DESCRIPTOR = new POPNetworkDescriptor("jobmanager", new DescriptorMethodImpl()); + private final Configuration conf = Configuration.getInstance(); public POPConnectorJobManager() { - super(Name.JOBMANAGER); + super(DESCRIPTOR); } @Override @@ -57,7 +71,7 @@ public int createObject(POPAccessPoint localservice, String objname, ObjectDescr String appServiceFingerprint = localservice.getFingerprint(); // use search node to find a suitable node - SNRequest request = new SNRequest(Util.generateUUID(), resourceReq, resourceMin, network.getFriendlyName(), name.getGlobalName(), appServiceFingerprint); + SNRequest request = new SNRequest(Util.generateUUID(), resourceReq, resourceMin, network.getFriendlyName(), descriptor.getGlobalName(), appServiceFingerprint); // setup request // distance between nodes if (od.getSearchMaxDepth() > 0) { diff --git a/workspace/popjava/src/popjava/service/jobmanager/connector/POPConnectorSearchNodeInterface.java b/workspace/popjava/src/popjava/service/jobmanager/network/POPConnectorSearchNodeInterface.java similarity index 88% rename from workspace/popjava/src/popjava/service/jobmanager/connector/POPConnectorSearchNodeInterface.java rename to workspace/popjava/src/popjava/service/jobmanager/network/POPConnectorSearchNodeInterface.java index 87a675f2..d52fabe9 100644 --- a/workspace/popjava/src/popjava/service/jobmanager/connector/POPConnectorSearchNodeInterface.java +++ b/workspace/popjava/src/popjava/service/jobmanager/network/POPConnectorSearchNodeInterface.java @@ -1,4 +1,4 @@ -package popjava.service.jobmanager.connector; +package popjava.service.jobmanager.network; import popjava.baseobject.POPAccessPoint; import popjava.service.jobmanager.search.SNExploration; diff --git a/workspace/popjava/src/popjava/service/jobmanager/connector/POPConnectorTFC.java b/workspace/popjava/src/popjava/service/jobmanager/network/POPConnectorTFC.java similarity index 88% rename from workspace/popjava/src/popjava/service/jobmanager/connector/POPConnectorTFC.java rename to workspace/popjava/src/popjava/service/jobmanager/network/POPConnectorTFC.java index 9ff17764..847099e8 100644 --- a/workspace/popjava/src/popjava/service/jobmanager/connector/POPConnectorTFC.java +++ b/workspace/popjava/src/popjava/service/jobmanager/network/POPConnectorTFC.java @@ -1,4 +1,4 @@ -package popjava.service.jobmanager.connector; +package popjava.service.jobmanager.network; import java.util.Collections; import java.util.HashMap; @@ -30,6 +30,22 @@ */ public class POPConnectorTFC extends POPConnector implements POPConnectorSearchNodeInterface { + private static class DescriptorMethodImpl implements POPNetworkDescriptorMethod { + @Override + public POPConnector createConnector() { + return new POPConnectorTFC(); + } + + @Override + public POPNode createNode(List params) { + return new POPNodeTFC(params); + } + } + static final POPNetworkDescriptor DESCRIPTOR = new POPNetworkDescriptor("tfc", new DescriptorMethodImpl()); + static { + System.out.println(DESCRIPTOR); + } + private final Configuration conf = Configuration.getInstance(); private static final String TFC_REQ_OBJECT = "_tfc_object"; @@ -38,13 +54,13 @@ public class POPConnectorTFC extends POPConnector implements POPConnectorSearchN private final Map> tfcObjects = new HashMap<>(); public POPConnectorTFC() { - super(Name.TFC); + super(DESCRIPTOR); } @Override public int createObject(POPAccessPoint localservice, String objname, ObjectDescription od, int howmany, POPAccessPoint[] objcontacts, int howmany2, POPAccessPoint[] remotejobcontacts) { // use search node to find a suitable node - SNRequest request = new SNRequest(Util.generateUUID(), new Resource(), new Resource(), network.getFriendlyName(), getName().getGlobalName(), null); + SNRequest request = new SNRequest(Util.generateUUID(), new Resource(), new Resource(), network.getFriendlyName(), getDescriptor().getGlobalName(), null); // setup request // distance between nodes if (od.getSearchMaxDepth() > 0) { diff --git a/workspace/popjava/src/popjava/service/jobmanager/network/POPNetwork.java b/workspace/popjava/src/popjava/service/jobmanager/network/POPNetwork.java index 97d742b4..87424a9c 100644 --- a/workspace/popjava/src/popjava/service/jobmanager/network/POPNetwork.java +++ b/workspace/popjava/src/popjava/service/jobmanager/network/POPNetwork.java @@ -7,8 +7,6 @@ import java.util.Map; import java.util.Objects; import popjava.service.jobmanager.POPJavaJobManager; -import popjava.service.jobmanager.connector.POPConnector; -import popjava.service.jobmanager.connector.POPConnectorFactory; import popjava.util.Util; /** @@ -20,7 +18,7 @@ public class POPNetwork { private final String uuid; private final String friendlyName; - private final Map connectors; + private final Map connectors; private final POPJavaJobManager jobManager; /** @@ -86,7 +84,7 @@ public POPConnector[] getConnectors() { * @return */ @SuppressWarnings("unchecked") - public T getConnector(POPConnector.Name connector) { + public T getConnector(POPNetworkDescriptor connector) { return (T) connectors.get(connector); } @@ -109,7 +107,7 @@ public int size() { * @param connectorName Which connector we are using * @return An immutable set we can loop through */ - public List getMembers(POPConnector.Name connectorName) { + public List getMembers(POPNetworkDescriptor connectorName) { POPConnector connector = connectors.get(connectorName); if (connector == null) { return Collections.EMPTY_LIST; @@ -125,16 +123,16 @@ public List getMembers(POPConnector.Name connectorName) { * @return true if the Node is added, false if not or not compatible */ @SuppressWarnings("unchecked") - public boolean add(POPNetworkNode node) { + public boolean add(POPNode node) { // connector - POPConnector connector = connectors.get(node.getConnectorName()); + POPConnector connector = connectors.get(node.getConnectorDescriptor()); if (connector == null) { - connector = POPConnectorFactory.makeConnector(node.getConnectorName()); + connector = node.getConnectorDescriptor().createConnector(); connector.setJobManager(jobManager); connector.setNetwork(this); - connectors.put(connector.getName(), connector); + connectors.put(connector.getDescriptor(), connector); } - return connector.add(node); + return connector.addNode(node); } /** @@ -143,15 +141,15 @@ public boolean add(POPNetworkNode node) { * @param node The node * @return true if the Node is remove, false otherwise */ - public boolean remove(POPNetworkNode node) { + public boolean remove(POPNode node) { // connector - POPConnector connector = connectors.get(node.getConnectorName()); + POPConnector connector = connectors.get(node.getConnectorDescriptor()); if (connector == null) { return false; } - boolean status = connector.remove(node); + boolean status = connector.removeNode(node); if (connector.isEmpty()) { - connectors.remove(connector.getName()); + connectors.remove(connector.getDescriptor()); } return status; } diff --git a/workspace/popjava/src/popjava/service/jobmanager/network/POPNetworkDescriptor.java b/workspace/popjava/src/popjava/service/jobmanager/network/POPNetworkDescriptor.java new file mode 100644 index 00000000..eed60a74 --- /dev/null +++ b/workspace/popjava/src/popjava/service/jobmanager/network/POPNetworkDescriptor.java @@ -0,0 +1,68 @@ +package popjava.service.jobmanager.network; + +import java.util.List; +import java.util.Objects; + +/** + * Describe a connector and gives the means to create it and its nodes. + * + * @author Davide Mazzoleni + */ +public final class POPNetworkDescriptor { + + private static final POPNetworkDescriptorFinder finder = POPNetworkDescriptorFinder.getInstance(); + /** + * Shorthand for {@link POPNetworkDescriptorFinder#find(java.lang.String) } + * + * @param globalName + * @return + */ + public static POPNetworkDescriptor from(String globalName) { + return finder.find(globalName); + } + + private final String globalName; + private final POPNetworkDescriptorMethod methods; + + public POPNetworkDescriptor(String globalName, POPNetworkDescriptorMethod methods) { + this.globalName = globalName; + this.methods = methods; + } + + public String getGlobalName() { + return globalName; + } + + public POPConnector createConnector() { + return methods.createConnector(); + } + + public POPNode createNode(List params) { + return methods.createNode(params); + } + + @Override + public int hashCode() { + int hash = 7; + hash = 43 * hash + Objects.hashCode(this.globalName); + return hash; + } + + @Override + public boolean equals(Object obj) { + if (this == obj) { + return true; + } + if (obj == null) { + return false; + } + if (getClass() != obj.getClass()) { + return false; + } + final POPNetworkDescriptor other = (POPNetworkDescriptor) obj; + if (!Objects.equals(this.globalName, other.globalName)) { + return false; + } + return true; + } +} \ No newline at end of file diff --git a/workspace/popjava/src/popjava/service/jobmanager/network/POPNetworkDescriptorFinder.java b/workspace/popjava/src/popjava/service/jobmanager/network/POPNetworkDescriptorFinder.java new file mode 100644 index 00000000..ddefb52e --- /dev/null +++ b/workspace/popjava/src/popjava/service/jobmanager/network/POPNetworkDescriptorFinder.java @@ -0,0 +1,54 @@ +package popjava.service.jobmanager.network; + +import java.util.HashMap; +import java.util.Map; +import popjava.util.Configuration; + +/** + * Find and register customs POP Network Descriptor (factories). + * + * @author Davide Mazzoleni + */ +public class POPNetworkDescriptorFinder { + + private static POPNetworkDescriptorFinder instance; + + private final Map descriptors = new HashMap<>(); + + private POPNetworkDescriptorFinder() { + POPNetworkDescriptor jm = POPConnectorJobManager.DESCRIPTOR; + POPNetworkDescriptor direct = POPConnectorDirect.DESCRIPTOR; + POPNetworkDescriptor tfc = POPConnectorTFC.DESCRIPTOR; + + descriptors.put(jm.getGlobalName(), jm); + descriptors.put(direct.getGlobalName(), direct); + descriptors.put(tfc.getGlobalName(), tfc); + + loadCustomDescriptors(); + } + + private void loadCustomDescriptors() { + // TODO from some file read and add class + } + + public void register(POPNetworkDescriptor descriptor) { + if (!descriptors.containsKey(descriptor.getGlobalName())) { + descriptors.put(descriptor.getGlobalName(), descriptor); + } + } + + public static POPNetworkDescriptorFinder getInstance() { + if (instance == null) { + instance = new POPNetworkDescriptorFinder(); + } + return instance; + } + + public POPNetworkDescriptor find(String globalName) { + if (globalName == null || globalName.isEmpty()) { + globalName = Configuration.getInstance().getJobManagerDefaultConnector(); + } + return descriptors.get(globalName); + } + +} diff --git a/workspace/popjava/src/popjava/service/jobmanager/network/POPNetworkDescriptorMethod.java b/workspace/popjava/src/popjava/service/jobmanager/network/POPNetworkDescriptorMethod.java new file mode 100644 index 00000000..a9382aea --- /dev/null +++ b/workspace/popjava/src/popjava/service/jobmanager/network/POPNetworkDescriptorMethod.java @@ -0,0 +1,16 @@ +package popjava.service.jobmanager.network; + +import java.util.List; + +/** + * The methods which will be use from a descriptor to create the implementation or generic POPConnector and POPNode. + * + * @author Davide Mazzoleni + */ +public interface POPNetworkDescriptorMethod { + + public POPConnector createConnector(); + + public POPNode createNode(List params); + +} diff --git a/workspace/popjava/src/popjava/service/jobmanager/network/POPNetworkNodeFactory.java b/workspace/popjava/src/popjava/service/jobmanager/network/POPNetworkNodeFactory.java deleted file mode 100644 index e59db6f5..00000000 --- a/workspace/popjava/src/popjava/service/jobmanager/network/POPNetworkNodeFactory.java +++ /dev/null @@ -1,43 +0,0 @@ -package popjava.service.jobmanager.network; - -import java.util.ArrayList; -import java.util.Arrays; -import java.util.List; -import popjava.service.jobmanager.connector.POPConnector; -import popjava.util.Configuration; -import popjava.util.LogWriter; -import popjava.util.Util; - -/** - * - * @author Davide Mazzoleni - */ -public class POPNetworkNodeFactory { - - private static final Configuration conf = Configuration.getInstance(); - - public static POPNetworkNode makeNode(String... other) { - return makeNode(new ArrayList<>(Arrays.asList(other))); - } - - public static POPNetworkNode makeNode(List other) { - String connectorName = Util.removeStringFromList(other, "connector="); - // use job manager if nothing is specified - if (connectorName == null) { - connectorName = conf.getJobManagerDefaultConnector(); - } - - try { - POPConnector.Name connector = POPConnector.Name.from(connectorName); - switch (connector) { - case JOBMANAGER: return new NodeJobManager(other); - case DIRECT: return new NodeDirect(other); - case TFC: return new NodeTFC(other); - } - } catch(IllegalArgumentException e) { - LogWriter.writeDebugInfo("[Node Factory] unknown connector specified '%s'", connectorName); - } - - return null; - } -} diff --git a/workspace/popjava/src/popjava/service/jobmanager/network/POPNetworkNode.java b/workspace/popjava/src/popjava/service/jobmanager/network/POPNode.java similarity index 71% rename from workspace/popjava/src/popjava/service/jobmanager/network/POPNetworkNode.java rename to workspace/popjava/src/popjava/service/jobmanager/network/POPNode.java index c7109d23..807e125f 100644 --- a/workspace/popjava/src/popjava/service/jobmanager/network/POPNetworkNode.java +++ b/workspace/popjava/src/popjava/service/jobmanager/network/POPNode.java @@ -1,25 +1,23 @@ package popjava.service.jobmanager.network; import java.util.Arrays; -import popjava.dataswaper.IPOPBase; -import popjava.service.jobmanager.connector.POPConnector; /** * A generic node which will be assigned to a specific POP Connector. * * @author Davide Mazzoleni */ -public abstract class POPNetworkNode { +public abstract class POPNode { protected String host; protected String[] creationParams; - protected final POPConnector.Name name; + protected final POPNetworkDescriptor descriptor; protected boolean temporary = false; - public POPNetworkNode(POPConnector.Name name) { - this.name = name; + public POPNode(POPNetworkDescriptor descriptor) { + this.descriptor = descriptor; } /** @@ -27,8 +25,8 @@ public POPNetworkNode(POPConnector.Name name) { * * @return */ - public POPConnector.Name getConnectorName() { - return name; + public POPNetworkDescriptor getConnectorDescriptor() { + return descriptor; } /** @@ -67,7 +65,7 @@ public void setTemporary(boolean temporary) { public abstract String toString(); /** - * The necessary parameters to create this node via {@link POPNetworkNodeFactory#makeNode} + * The necessary parameters to create this node via {@link POPNodeFactory#makeNode} * * @return */ diff --git a/workspace/popjava/src/popjava/service/jobmanager/network/AbstractNodeJobManager.java b/workspace/popjava/src/popjava/service/jobmanager/network/POPNodeAJobManager.java similarity index 81% rename from workspace/popjava/src/popjava/service/jobmanager/network/AbstractNodeJobManager.java rename to workspace/popjava/src/popjava/service/jobmanager/network/POPNodeAJobManager.java index efbe7446..66c7befc 100644 --- a/workspace/popjava/src/popjava/service/jobmanager/network/AbstractNodeJobManager.java +++ b/workspace/popjava/src/popjava/service/jobmanager/network/POPNodeAJobManager.java @@ -8,7 +8,6 @@ import popjava.baseobject.POPAccessPoint; import popjava.dataswaper.POPString; import popjava.service.jobmanager.POPJavaJobManager; -import popjava.service.jobmanager.connector.POPConnector; import popjava.util.Configuration; import popjava.util.Util; @@ -17,7 +16,7 @@ * * @author Davide Mazzoleni */ -public abstract class AbstractNodeJobManager extends POPNetworkNode { +public abstract class POPNodeAJobManager extends POPNode { protected POPAccessPoint jobManagerAccessPoint; protected POPJavaJobManager jm; @@ -25,8 +24,8 @@ public abstract class AbstractNodeJobManager extends POPNetworkNode { protected String protocol; protected boolean initialized = true; - public AbstractNodeJobManager(POPConnector.Name name, String host, int port, String protocol) { - super(name); + public POPNodeAJobManager(POPNetworkDescriptor descriptor, String host, int port, String protocol) { + super(descriptor); this.host = host; this.port = port; this.protocol = protocol; @@ -34,8 +33,8 @@ public AbstractNodeJobManager(POPConnector.Name name, String host, int port, Str init(); } - public AbstractNodeJobManager(POPConnector.Name name, List params) { - super(name); + public POPNodeAJobManager(POPNetworkDescriptor descriptor, List params) { + super(descriptor); // get potential params host = Util.removeStringFromList(params, "host="); @@ -72,7 +71,7 @@ private void init() { jobManagerAccessPoint = new POPAccessPoint(String.format("%s://%s:%d", protocol, host, port)); Set paramsSet = new HashSet<>(); - paramsSet.add("connector=" + name.getGlobalName()); + paramsSet.add("connector=" + descriptor.getGlobalName()); paramsSet.add("host=" + host); paramsSet.add("port=" + port); paramsSet.add("protocol=" + protocol); @@ -106,7 +105,7 @@ public final POPJavaJobManager getJobManager() { public int hashCode() { int hash = 7; hash = 67 * hash + Objects.hashCode(this.host); - hash = 67 * hash + Objects.hashCode(this.name); + hash = 67 * hash + Objects.hashCode(this.descriptor); hash = 67 * hash + this.port; hash = 67 * hash + Objects.hashCode(this.protocol); return hash; @@ -123,7 +122,7 @@ public boolean equals(Object obj) { if (getClass() != obj.getClass()) { return false; } - final AbstractNodeJobManager other = (AbstractNodeJobManager) obj; + final POPNodeAJobManager other = (POPNodeAJobManager) obj; if (this.port != other.port) { return false; } @@ -133,7 +132,7 @@ public boolean equals(Object obj) { if (!Objects.equals(this.protocol, other.protocol)) { return false; } - if (this.name != other.name) { + if (this.descriptor != other.descriptor) { return false; } return true; @@ -141,6 +140,6 @@ public boolean equals(Object obj) { @Override public String toString() { - return String.format("host=%s port=%s connector=%s protocol=%s", host, port, name.getGlobalName(), protocol); + return String.format("host=%s port=%s connector=%s protocol=%s", host, port, descriptor.getGlobalName(), protocol); } } diff --git a/workspace/popjava/src/popjava/service/jobmanager/network/NodeDirect.java b/workspace/popjava/src/popjava/service/jobmanager/network/POPNodeDirect.java similarity index 81% rename from workspace/popjava/src/popjava/service/jobmanager/network/NodeDirect.java rename to workspace/popjava/src/popjava/service/jobmanager/network/POPNodeDirect.java index 63479cb5..59a37f98 100644 --- a/workspace/popjava/src/popjava/service/jobmanager/network/NodeDirect.java +++ b/workspace/popjava/src/popjava/service/jobmanager/network/POPNodeDirect.java @@ -4,8 +4,6 @@ import java.util.List; import java.util.Objects; import java.util.Set; -import popjava.service.jobmanager.connector.POPConnector; -import popjava.service.jobmanager.connector.POPConnectorDirect; import popjava.util.Configuration; import popjava.util.Util; @@ -14,7 +12,7 @@ * * @author Davide Mazzoleni */ -public class NodeDirect extends POPNetworkNode { +public class POPNodeDirect extends POPNode { private int port; private boolean daemon; @@ -28,8 +26,8 @@ public class NodeDirect extends POPNetworkNode { * @param port * @param daemonSecret */ - public NodeDirect(String host, int port, String daemonSecret) { - super(POPConnector.Name.DIRECT); + public POPNodeDirect(String host, int port, String daemonSecret) { + super(POPConnectorDirect.DESCRIPTOR); this.host = host; this.port = port; this.daemon = true; @@ -44,8 +42,8 @@ public NodeDirect(String host, int port, String daemonSecret) { * @param host * @param port */ - public NodeDirect(String host, int port) { - super(POPConnector.Name.DIRECT); + public POPNodeDirect(String host, int port) { + super(POPConnectorDirect.DESCRIPTOR); this.host = host; this.port = port; this.daemon = false; @@ -54,8 +52,8 @@ public NodeDirect(String host, int port) { init(); } - NodeDirect(List params) { - super(POPConnector.Name.DIRECT); + public POPNodeDirect(List params) { + super(POPConnectorDirect.DESCRIPTOR); // get potential params String host = Util.removeStringFromList(params, "host="); @@ -91,7 +89,7 @@ public NodeDirect(String host, int port) { private void init() { // set parameters again for future creation and sharing, keep posible extra values Set paramsSet = new HashSet<>(); - paramsSet.add("connector=" + POPConnectorDirect.IDENTITY); + paramsSet.add("connector=" + descriptor.getGlobalName()); paramsSet.add("host=" + this.host); paramsSet.add("port=" + this.port); paramsSet.add("protocol=" + (this.daemon ? "daemon" : "ssh")); @@ -138,7 +136,7 @@ public boolean equals(Object obj) { if (getClass() != obj.getClass()) { return false; } - final NodeDirect other = (NodeDirect) obj; + final POPNodeDirect other = (POPNodeDirect) obj; if (this.port != other.port) { return false; } @@ -156,7 +154,7 @@ public boolean equals(Object obj) { @Override public String toString() { - return String.format("host=%s port=%d connector=%s protocol=%s %s", host, port, name.getGlobalName(), + return String.format("host=%s port=%d connector=%s protocol=%s %s", host, port, descriptor.getGlobalName(), daemon ? "daemon" : "ssh", daemonSecret == null ? "" : "secret=" + daemonSecret).trim(); } diff --git a/workspace/popjava/src/popjava/service/jobmanager/network/POPNodeJobManager.java b/workspace/popjava/src/popjava/service/jobmanager/network/POPNodeJobManager.java new file mode 100644 index 00000000..e26060fd --- /dev/null +++ b/workspace/popjava/src/popjava/service/jobmanager/network/POPNodeJobManager.java @@ -0,0 +1,20 @@ +package popjava.service.jobmanager.network; + +import java.util.List; + +/** + * A JobManager node + * + * @author Davide Mazzoleni + */ +public class POPNodeJobManager extends POPNodeAJobManager { + + public POPNodeJobManager(String host, int port, String protocol) { + super(POPConnectorJobManager.DESCRIPTOR, host, port, protocol); + + } + + public POPNodeJobManager(List params) { + super(POPConnectorJobManager.DESCRIPTOR, params); + } +} diff --git a/workspace/popjava/src/popjava/service/jobmanager/network/POPNodeTFC.java b/workspace/popjava/src/popjava/service/jobmanager/network/POPNodeTFC.java new file mode 100644 index 00000000..505f05d8 --- /dev/null +++ b/workspace/popjava/src/popjava/service/jobmanager/network/POPNodeTFC.java @@ -0,0 +1,20 @@ +package popjava.service.jobmanager.network; + +import java.util.List; + +/** + * A TFC node + * + * @author Davide Mazzoleni + */ +public class POPNodeTFC extends POPNodeAJobManager { + + public POPNodeTFC(String host, int port, String protocol) { + super(POPConnectorTFC.DESCRIPTOR, host, port, protocol); + } + + public POPNodeTFC(List params) { + super(POPConnectorTFC.DESCRIPTOR, params); + } + +} diff --git a/workspace/popjava/src/popjava/util/Configuration.java b/workspace/popjava/src/popjava/util/Configuration.java index 2900700f..27da4eec 100644 --- a/workspace/popjava/src/popjava/util/Configuration.java +++ b/workspace/popjava/src/popjava/util/Configuration.java @@ -16,8 +16,6 @@ import java.util.Set; import java.util.regex.Matcher; import java.util.regex.Pattern; -import popjava.service.jobmanager.connector.POPConnector; -import popjava.service.jobmanager.connector.POPConnectorJobManager; import popjava.util.ssl.KeyStoreDetails; import popjava.util.ssl.KeyStoreDetails.KeyStoreFormat; @@ -101,7 +99,7 @@ private enum Settable { private int jobManagerUpdateInterval = 10000; private int jobManagerSelfRegisterInterval = 43_200_000; - private String jobManagerDefaultConnector = POPConnector.Name.JOBMANAGER.getGlobalName(); + private String jobManagerDefaultConnector = "jobmanager"; private int searchNodeUnlockTimeout = 10000; private int searchNodeSearchTimeout = 0; private int tfcSearchTimeout = 5000; diff --git a/workspace/popjava/src/popjava/util/ssl/SSLUtils.java b/workspace/popjava/src/popjava/util/ssl/SSLUtils.java index cb024d7b..170e7e62 100644 --- a/workspace/popjava/src/popjava/util/ssl/SSLUtils.java +++ b/workspace/popjava/src/popjava/util/ssl/SSLUtils.java @@ -51,7 +51,7 @@ import org.bouncycastle.operator.bc.BcContentSignerBuilder; import org.bouncycastle.operator.bc.BcRSAContentSignerBuilder; import popjava.combox.ssl.POPTrustManager; -import popjava.service.jobmanager.network.POPNetworkNode; +import popjava.service.jobmanager.network.POPNode; import popjava.util.Configuration; import popjava.util.LogWriter; import popjava.util.MethodUtil; @@ -156,7 +156,7 @@ public static SSLContext getSSLContext() throws KeyStoreException, IOException, * @param networkName * @return */ - private static String confidenceLinkAlias(POPNetworkNode node, String networkName) { + private static String confidenceLinkAlias(POPNode node, String networkName) { return String.format("%x@%s", node.hashCode(), networkName.toLowerCase()); } @@ -169,7 +169,7 @@ private static String confidenceLinkAlias(POPNetworkNode node, String networkNam * @param mode false if we want to add the certificate, true if we want to replace it * @throws IOException */ - private static void addConfidenceLink(POPNetworkNode node, Certificate certificate, String networkName, boolean mode) throws IOException { + private static void addConfidenceLink(POPNode node, Certificate certificate, String networkName, boolean mode) throws IOException { try { // load the already existing keystore KeyStore keyStore = loadKeyStore(); @@ -204,7 +204,7 @@ private static void addConfidenceLink(POPNetworkNode node, Certificate certifica * @param networkName The network associated to this certificate * @throws IOException If we were not able to write to file */ - public static void addConfidenceLink(POPNetworkNode node, Certificate certificate, String networkName) throws IOException { + public static void addConfidenceLink(POPNode node, Certificate certificate, String networkName) throws IOException { addConfidenceLink(node, certificate, networkName, false); } @@ -217,7 +217,7 @@ public static void addConfidenceLink(POPNetworkNode node, Certificate certificat * @param networkName The network associated to this certificate * @throws IOException If we were not able to write to file */ - public static void replaceConfidenceLink(POPNetworkNode node, Certificate certificate, String networkName) throws IOException { + public static void replaceConfidenceLink(POPNode node, Certificate certificate, String networkName) throws IOException { addConfidenceLink(node, certificate, networkName, true); } @@ -228,7 +228,7 @@ public static void replaceConfidenceLink(POPNetworkNode node, Certificate certif * @param node A node created somehow, directly or with the factory * @throws IOException Many */ - public static void removeConfidenceLink(POPNetworkNode node, String networkName) throws IOException { + public static void removeConfidenceLink(POPNode node, String networkName) throws IOException { try { // load the already existing keystore KeyStore keyStore = loadKeyStore(); @@ -340,12 +340,12 @@ public static Certificate getLocalPublicCertificate() { * @param certificate */ public static void addCertToTempStore(byte[] certificate) { - MethodUtil.grant( + /*MethodUtil.grant( "popjava.service.jobmanager.POPJavaJobManager.askResourcesDiscovery", "popjava.service.jobmanager.POPJavaJobManager.callbackResult", - "popjava.service.jobmanager.connector.POPConnectorJobManager.askResourcesDiscoveryAction", - "popjava.service.jobmanager.connector.POPConnectorTFC.askResourcesDiscoveryAction" - ); + "popjava.service.jobmanager.network.POPConnectorJobManager.askResourcesDiscoveryAction", + "popjava.service.jobmanager.network.POPConnectorTFC.askResourcesDiscoveryAction" + );*/ addCertToTempStore(certificate, false); } @@ -356,11 +356,11 @@ public static void addCertToTempStore(byte[] certificate) { * @param reload */ public static void addCertToTempStore(byte[] certificate, boolean reload) { - MethodUtil.grant( + /*MethodUtil.grant( "popjava.util.ssl.SSLUtils.addCertToTempStore", "popjava.base.POPObject.PopRegisterFutureConnectorCertificate", "popjava.interfacebase.Interface.deserialize" - ); + );*/ try { // load it Certificate cert = certificateFromBytes(certificate);