Skip to content

Commit

Permalink
Use a factory (POPNetworkDescriptor) to define a Connector/Node pair.
Browse files Browse the repository at this point in the history
Refactoring for classes names and location.
Working with #10.

Testing required. Seems like JUnit has some problem loading POPNodeTFC.
  • Loading branch information
MDosky committed Oct 20, 2017
1 parent d939aeb commit 76ce578
Show file tree
Hide file tree
Showing 26 changed files with 574 additions and 537 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -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;
Expand All @@ -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;

/**
*
Expand Down Expand Up @@ -94,19 +96,19 @@ public void customResources() throws IOException {

@Test
public void networks() throws IOException {
Map<String,POPNetworkNode[]> 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<String,POPNode[]> 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<String, POPNetworkNode[]> entry : networks.entrySet()) {
for (Map.Entry<String, POPNode[]> 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 + " ");
Expand All @@ -125,12 +127,15 @@ public void networks() throws IOException {

for (String network : networks.keySet()) {
String[][] networkStringNodes = jm.getNetworkNodes(network);
Set<POPNetworkNode> networkNodes = new HashSet<>();
Set<POPNode> networkNodes = new HashSet<>();
for (int i = 0; i < networkStringNodes.length; i++) {
networkNodes.add(POPNetworkNodeFactory.makeNode(networkStringNodes[i]));
ArrayList<String> params = new ArrayList<>(Arrays.asList(networkStringNodes[i]));
String connector = Util.removeStringFromList(params, "connector=");
POPNetworkDescriptor descriptor = POPNetworkDescriptor.from(connector);
networkNodes.add(descriptor.createNode(params));
}

Set<POPNetworkNode> original = new HashSet<>(Arrays.asList(networks.get(network)));
Set<POPNode> original = new HashSet<>(Arrays.asList(networks.get(network)));

Assert.assertEquals(original, networkNodes);
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -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;
Expand All @@ -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();

Expand Down
31 changes: 18 additions & 13 deletions workspace/popjava/src/popjava/JobManagerConfig.java
Original file line number Diff line number Diff line change
Expand Up @@ -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;

/**
Expand Down Expand Up @@ -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());
}

Expand All @@ -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());
Expand All @@ -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;
Expand All @@ -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;
Expand All @@ -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;
Expand All @@ -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 {
Expand Down Expand Up @@ -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<String> 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;
Expand Down
16 changes: 8 additions & 8 deletions workspace/popjava/src/popjava/PopJava.java
Original file line number Diff line number Diff line change
Expand Up @@ -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;
Expand Down Expand Up @@ -104,7 +104,7 @@ public static <T> T newActiveFromBuffer(Class<T> 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()) {
Expand Down Expand Up @@ -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
Expand Down
2 changes: 1 addition & 1 deletion workspace/popjava/src/popjava/interfacebase/Interface.java
Original file line number Diff line number Diff line change
Expand Up @@ -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;
Expand Down
Loading

0 comments on commit 76ce578

Please sign in to comment.