Making classes final to make inheritance impossible
[iot2.git] / iotjava / iotrmi / Java / IoTRMIObject.java
index 90e5b548f558890f6ad4b72d9c75d8a026e59704..06a56ce5638a6e653411cffd373a00a6066da01e 100644 (file)
@@ -10,6 +10,9 @@ import java.util.Map;
 import java.util.Set;
 import java.lang.reflect.*;
 
+import java.util.concurrent.locks.Lock;
+import java.util.concurrent.locks.ReentrantLock;
+
 
 /** Class IoTRMIObject is a class that stores info of an object.
  *  <p>
@@ -23,7 +26,7 @@ import java.lang.reflect.*;
  * @version     1.0
  * @since       2016-10-03
  */
-public class IoTRMIObject {
+public final class IoTRMIObject {
 
        /**
         * Class Properties
@@ -32,6 +35,7 @@ public class IoTRMIObject {
        private IoTRMIUtil rmiUtil;
        private IoTSocketServer rmiServer;
        private byte[] methodBytes;
+       private Lock lock = new ReentrantLock();
 
 
        /**
@@ -54,8 +58,9 @@ public class IoTRMIObject {
        public byte[] getMethodBytes() throws IOException {
 
                // Receive method info
+               //System.out.println("Method RMIObj before: " + Arrays.toString(methodBytes));
                methodBytes = rmiServer.receiveBytes(methodBytes);
-               System.out.println("Method: " + Arrays.toString(methodBytes));
+               //System.out.println("Method RMIObj after: " + Arrays.toString(methodBytes));
                return methodBytes;
        }
 
@@ -114,6 +119,22 @@ public class IoTRMIObject {
        }
 
 
+       /**
+        * static version of getMethodId()
+        */
+       public static int getMethodId(byte[] methodBytes) {
+
+               // Get method Id bytes
+               byte[] methodIdBytes = new byte[IoTRMIUtil.METHOD_ID_LEN];
+               // Method Id is positioned after object Id in the byte array
+               System.arraycopy(methodBytes, IoTRMIUtil.OBJECT_ID_LEN, methodIdBytes, 0, IoTRMIUtil.METHOD_ID_LEN);
+               // Get method Id
+               int methodId = IoTRMIUtil.byteArrayToInt(methodIdBytes);
+               // Get method Id
+               return methodId;
+       }
+
+
        /**
         * getMethodParams() gets method params based on byte array received
         * <p>
@@ -220,16 +241,4 @@ public class IoTRMIObject {
 
                return retBytes;
        }
-
-
-       public static void main(String[] args) throws Exception {
-
-               int port = 5010;
-               IoTRMIObject rmiObj = new IoTRMIObject(port);
-
-               Class<?>[] retCls = new Class<?>[] { int.class, String.class, int.class };
-               Object[] retObj = new Object[] { 1234, "teststring", 5432 };
-
-               System.out.println("Bytes: " + Arrays.toString(rmiObj.returnToBytes(retCls, retObj)));
-       }
 }