Making classes final to make inheritance impossible
[iot2.git] / iotjava / iotruntime / slave / IoTSlave.java
index 24df680fcb114c9eec585f6fbf30e378c40578bc..7b83d20cc4f6cd1c0996b756422f25ab53202408 100644 (file)
@@ -47,7 +47,7 @@ import net.lingala.zip4j.core.ZipFile;
  * @version     1.0
  * @since       2016-06-16
  */
-public class IoTSlave {
+public final class IoTSlave {
 
        /**
         * IoTSlave class properties
@@ -214,10 +214,9 @@ public class IoTSlave {
                Class<?> clsSkel = Class.forName(strObjSkelName);
                Class<?> clsInt = Class.forName(STR_OBJ_CLS_PFX + "." + STR_INTERFACE_PFX + 
                        "." + sMessage.getObjectInterfaceName());
-               Class[] clsSkelParams = { clsInt, String.class, int.class };    // Port number is integer
+               Class[] clsSkelParams = { clsInt, int.class, int.class };       // Port number is integer
                Constructor<?> objSkelCons = clsSkel.getDeclaredConstructor(clsSkelParams);
-               String callbackAddress = InetAddress.getLocalHost().getHostAddress();   // Callback address is this machine's address
-               Object objSkelParams[] = { objMainCls, callbackAddress, iRMIStubPort };
+               Object objSkelParams[] = { objMainCls, iRMIStubPort, iRMIRegPort };
                // Create a new thread for each skeleton
                Thread objectThread = new Thread(new Runnable() {
                        public void run() {
@@ -447,18 +446,14 @@ public class IoTSlave {
                        // Instantiate the stub and put in the object
                        String strObjStubName = sMainObjectName + "." + sMessage.getObjectStubInterfaceName() + STUB_CLASS_SUFFIX;
                        Class<?> clsStub = Class.forName(strObjStubName);       // Port number is integer
-                       Class[] clsStubParams = { int.class, String.class, String.class, int.class, int[].class };
+                       Class[] clsStubParams = { int.class, int.class, int.class, int.class, String.class, int.class };
                        Constructor<?> objStubCons = clsStub.getDeclaredConstructor(clsStubParams);
-                       Integer[] portsInteger = sMessage.getRMICallbackPorts();
-                       int[] ports = Arrays.stream(portsInteger).mapToInt(Integer::intValue).toArray();
 
                        int rev = 0;
-                       String callbackAddress = InetAddress.getLocalHost().getHostAddress();   // Callback address is this machine's address
-                       Object objStubParams[] = { sMessage.getRMIStubPort(), sMessage.getHostAddress(), callbackAddress,
-                                                                               rev, ports };
+                       Object objStubParams[] = { 0, 0, sMessage.getRMIStubPort(), sMessage.getRMIRegPort(), sMessage.getHostAddress(), rev };
                        RuntimeOutput.print("IoTSlave: Creating RMI stub: " +
-                               sMessage.getHostAddress() + ":" + sMessage.getRMIRegPort() +
-                               " with callback address: " + callbackAddress + " and RMI stub port: " + sMessage.getRMIStubPort(), BOOL_VERBOSE);
+                               sMessage.getHostAddress() + ":" + sMessage.getRMIRegPort() + 
+                               " and RMI stub port: " + sMessage.getRMIStubPort(), BOOL_VERBOSE);
                        Object stubObj = objStubCons.newInstance(objStubParams);
                        // Class conversion to interface class of this class,
                        // e.g. ProximitySensorImpl has ProximitySensor interface
@@ -478,7 +473,6 @@ public class IoTSlave {
        private void getIoTSetObject() throws IOException,
                ClassNotFoundException, RemoteException, NotBoundException, NoSuchMethodException,
                InstantiationException, IllegalAccessException, InvocationTargetException {
-
                Object objRegistry = null;
                if (CAPAB_BASED_RMI)
                        objRegistry = getObjectFromStub();
@@ -500,7 +494,6 @@ public class IoTSlave {
        private void getIoTRelationFirstObject() throws IOException,
                ClassNotFoundException, RemoteException, NotBoundException, NoSuchMethodException,
                InstantiationException, IllegalAccessException, InvocationTargetException {
-
                Object objRegistry = null;
                if (CAPAB_BASED_RMI)
                        objRegistry = getObjectFromStub();
@@ -522,7 +515,6 @@ public class IoTSlave {
        private void getIoTRelationSecondObject() throws IOException,
                ClassNotFoundException, RemoteException, NotBoundException, NoSuchMethodException,
                InstantiationException, IllegalAccessException, InvocationTargetException {
-
                Object objRegistry = null;
                if (CAPAB_BASED_RMI)
                        objRegistry = getObjectFromStub();
@@ -550,7 +542,6 @@ public class IoTSlave {
 
                // Reinitialize IoTSet field after getting all the objects
                iotsetObject = new IoTSet<Object>(isetObject.values());
-
                // Private fields need getDeclaredField(), while public fields use getField()
                Field fld = clsMain.getDeclaredField(strFieldName);
                boolean bAccess = fld.isAccessible();
@@ -575,7 +566,6 @@ public class IoTSlave {
 
                // Reinitialize IoTSet field after getting all the objects
                iotrelObject = new IoTRelation<Object,Object>(irelObject.relationMap(), irelObject.size());
-
                // Private fields need getDeclaredField(), while public fields use getField()
                Field fld = clsMain.getDeclaredField(strFieldName);
                boolean bAccess = fld.isAccessible();
@@ -601,7 +591,6 @@ public class IoTSlave {
 
                // Translating into the actual Message class
                MessageGetDeviceObject sMessage = (MessageGetDeviceObject) sIoTMasterMsg;
-
                // Get IoTSet objects for IP address set on device driver/controller
                IoTDeviceAddress objDeviceAddress = new IoTDeviceAddress(sMessage.getHostAddress(),
                        sMessage.getSourceDeviceDriverPort(),
@@ -629,7 +618,6 @@ public class IoTSlave {
 
                // Translating into the actual Message class
                MessageGetSimpleDeviceObject sMessage = (MessageGetSimpleDeviceObject) sIoTMasterMsg;
-
                // Get IoTSet objects for IP address set on device driver/controller
                IoTZigbeeAddress objZBDevAddress = new IoTZigbeeAddress(sMessage.getHostAddress());
                RuntimeOutput.print("IoTSlave: Device address transferred: " + sMessage.getHostAddress(), BOOL_VERBOSE);
@@ -652,7 +640,6 @@ public class IoTSlave {
 
                // Translating into the actual Message class
                MessageGetSimpleDeviceObject sMessage = (MessageGetSimpleDeviceObject) sIoTMasterMsg;
-
                // Get IoTSet objects for IP address set on device driver/controller
                IoTAddress objAddress = new IoTAddress(sMessage.getHostAddress());
                RuntimeOutput.print("IoTSlave: Address transferred: " + sMessage.getHostAddress(), BOOL_VERBOSE);