Merge branch '1.1-rel'
[platform/upstream/iotivity.git] / cloud / interface / src / main / java / org / iotivity / cloud / ciserver / resources / KeepAliveResource.java
index 899f235..804bf81 100644 (file)
@@ -69,13 +69,20 @@ public class KeepAliveResource extends Resource {
         this.sessionManager = sessionManager;
         connectPool = new HashMap<ChannelHandlerContext, Long>();
         timer = new Timer();
-        timer.schedule(new KeepAliveTask(), 30000, 60000);
         cbor = new Cbor<HashMap<String, Integer>>();
     }
 
+    public void startSessionChecker() {
+        timer.schedule(new KeepAliveTask(), 30000, 60000);
+    }
+
+    public void stopSessionChecker() {
+        timer.cancel();
+    }
+
     /**
      * API for receiving message(message to keepalive resource)
-     * 
+     *
      * @param ctx
      *            ChannelHandlerContext of request message
      * @param request
@@ -100,14 +107,17 @@ public class KeepAliveResource extends Resource {
             case PUT:
                 HashMap<String, Integer> payloadData = null;
                 payloadData = cbor.parsePayloadFromCbor(request.getPayload(),
-                        new HashMap<String, Integer>().getClass());
+                        HashMap.class);
 
                 Logger.d("Receive payloadData : " + payloadData);
-                Logger.d("interval : " + payloadData.get("in"));
-
-                connectPool.put(ctx, System.currentTimeMillis()
-                        + (payloadData.get("in") * (long) 60000));
+                if (payloadData != null) {
+                    if (payloadData.containsKey("in")) {
+                        Logger.d("interval : " + payloadData.get("in"));
 
+                        connectPool.put(ctx, System.currentTimeMillis()
+                                + (payloadData.get("in") * (long) 60000));
+                    }
+                }
                 response = makeResponse(request);
                 break;
 
@@ -123,7 +133,7 @@ public class KeepAliveResource extends Resource {
 
     /**
      * API for making response to Resource
-     * 
+     *
      * @param request
      *            ChannelHandlerContext of request message
      */
@@ -136,7 +146,7 @@ public class KeepAliveResource extends Resource {
 
     /**
      * API for making interval and first response to Resource
-     * 
+     *
      * @param request
      *            ChannelHandlerContext of request message
      */
@@ -174,12 +184,18 @@ public class KeepAliveResource extends Resource {
                 // check interval
                 while (iterator.hasNext()) {
                     ChannelHandlerContext key = iterator.next();
-                    Long lifeTime = (Long) map.get(key);
-                    Logger.d("KeepAliveTask Operating : "
-                            + key.channel().toString() + ", Time : "
-                            + (lifeTime - currentTime));
-                    if (lifeTime < currentTime) {
-                        deleteList.add(key);
+                    if (map.containsKey(key)) {
+                        if (map.get(key) != null) {
+                            Long lifeTime = (Long) map.get(key);
+                            if (lifeTime != null) {
+                                Logger.d("KeepAliveTask Operating : "
+                                        + key.channel().toString() + ", Time : "
+                                        + (lifeTime - currentTime));
+                                if (lifeTime < currentTime) {
+                                    deleteList.add(key);
+                                }
+                            }
+                        }
                     }
                 }