Merge 'security-basecamp' branch into master with CBOR
[platform/upstream/iotivity.git] / android / android_api / base / src / main / java / org / iotivity / base / OcPlatform.java
index 891d487..46dedf2 100644 (file)
-/*
- * //******************************************************************
- * //
- * // Copyright 2015 Intel Corporation.
- * //
- * //-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
- * //
- * // Licensed under the Apache License, Version 2.0 (the "License");
- * // you may not use this file except in compliance with the License.
- * // You may obtain a copy of the License at
- * //
- * //      http://www.apache.org/licenses/LICENSE-2.0
- * //
- * // Unless required by applicable law or agreed to in writing, software
- * // distributed under the License is distributed on an "AS IS" BASIS,
- * // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * // See the License for the specific language governing permissions and
- * // limitations under the License.
- * //
- * //-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
- */
-
-package org.iotivity.base;
-
-import org.iotivity.ca.CaInterface;
-
-import java.util.EnumSet;
-import java.util.Iterator;
-import java.util.List;
-
-/**
- * Contains the main entrance/functionality of the product. To set a custom configuration, the
- * implementer must make a call to OcPlatform.Configure before the first usage of a function in this
- * class.
- */
-public final class OcPlatform {
-
-    static {
-        System.loadLibrary("oc_logger");
-        System.loadLibrary("octbstack");
-        System.loadLibrary("connectivity_abstraction");
-        System.loadLibrary("oc");
-        System.loadLibrary("ocstack-jni");
-    }
-
-    /**
-     * Default interface
-     */
-    public static final String DEFAULT_INTERFACE = "oic.if.baseline";
-
-    /**
-     * Used in discovering (GET) links to other resources of a collection
-     */
-    public static final String LINK_INTERFACE = "oic.if.ll";
-
-    /**
-     * Used in GET, PUT, POST, DELETE methods on links to other resources of a collection
-     */
-    public static final String BATCH_INTERFACE = "oic.if.b";
-
-    /**
-     * Used in GET, PUT, POST methods on links to other remote resources of a group
-     */
-    public static final String GROUP_INTERFACE = "oic.mi.grp";
-
-    public static final String WELL_KNOWN_QUERY = "224.0.1.187:5683/oic/res";
-    public static final String MULTICAST_PREFIX = "224.0.1.187:5683";
-    public static final String MULTICAST_IP = "224.0.1.187";
-    public static final int MULTICAST_PORT = 5683;
-    public static final int DEFAULT_PRESENCE_TTL = 60;
-    public static final String DEVICE_URI = "/oic/d";
-    public static final String PRESENCE_URI = "/oic/ad";
-
-    private static volatile boolean sIsPlatformInitialized = false;
-
-    private OcPlatform() {
-    }
-
-    /**
-     * API for setting the configuration of the OcPlatform.
-     * Note: Any calls made to this AFTER the first call to OcPlatform.Configure will have no affect
-     *
-     * @param platformConfig platform configuration
-     */
-    public synchronized static void Configure(PlatformConfig platformConfig) {
-        if (!sIsPlatformInitialized) {
-            CaInterface.initialize(platformConfig.getContext());
-
-            OcPlatform.configure(
-                    platformConfig.getServiceType().getValue(),
-                    platformConfig.getModeType().getValue(),
-                    platformConfig.getIpAddress(),
-                    platformConfig.getPort(),
-                    platformConfig.getQualityOfService().getValue()
-            );
-
-            sIsPlatformInitialized = true;
-        }
-    }
-
-    private static native void configure(int serviceType,
-                                         int modeType,
-                                         String ipAddress,
-                                         int port,
-                                         int qualityOfService);
-
-    /**
-     * API for notifying base that resource's attributes have changed.
-     *
-     * @param ocResourceHandle resource handle of the resource
-     * @throws OcException
-     */
-    public static void notifyAllObservers(
-            OcResourceHandle ocResourceHandle) throws OcException {
-        OcPlatform.initCheck();
-        OcPlatform.notifyAllObservers0(ocResourceHandle);
-    }
-
-    private static native void notifyAllObservers0(
-            OcResourceHandle ocResourceHandle) throws OcException;
-
-    /**
-     * API for notifying base that resource's attributes have changed.
-     *
-     * @param ocResourceHandle resource handle of the resource
-     * @param qualityOfService the quality of communication
-     * @throws OcException
-     */
-    public static void notifyAllObservers(
-            OcResourceHandle ocResourceHandle,
-            QualityOfService qualityOfService) throws OcException {
-        OcPlatform.initCheck();
-        OcPlatform.notifyAllObservers1(ocResourceHandle, qualityOfService.getValue());
-    }
-
-    private static native void notifyAllObservers1(
-            OcResourceHandle ocResourceHandle,
-            int qualityOfService) throws OcException;
-
-    /**
-     * API for notifying only specific clients that resource's attributes have changed.
-     *
-     * @param ocResourceHandle    resource handle of the resource
-     * @param ocObservationIdList These set of ids are ones which which will be notified upon
-     *                            resource change.
-     * @param ocResourceResponse  OcResourceResponse object used by app to fill the response for
-     *                            this resource change
-     * @throws OcException
-     */
-    public static void notifyListOfObservers(
-            OcResourceHandle ocResourceHandle,
-            List<Byte> ocObservationIdList,
-            OcResourceResponse ocResourceResponse) throws OcException {
-        OcPlatform.initCheck();
-
-        byte[] idArr = new byte[ocObservationIdList.size()];
-        Iterator<Byte> it = ocObservationIdList.iterator();
-        int i = 0;
-        while (it.hasNext()) {
-            idArr[i++] = (byte) it.next();
-        }
-
-        OcPlatform.notifyListOfObservers2(
-                ocResourceHandle,
-                idArr,
-                ocResourceResponse);
-    }
-
-    private static native void notifyListOfObservers2(
-            OcResourceHandle ocResourceHandle,
-            byte[] ocObservationIdArray,
-            OcResourceResponse ocResourceResponse) throws OcException;
-
-    /**
-     * API for notifying only specific clients that resource's attributes have changed.
-     *
-     * @param ocResourceHandle    resource handle of the resource
-     * @param ocObservationIdList These set of ids are ones which which will be notified upon
-     *                            resource change.
-     * @param ocResourceResponse  OcResourceResponse object used by app to fill the response for
-     *                            this resource change
-     * @param qualityOfService    the quality of communication
-     * @throws OcException
-     */
-    public static void notifyListOfObservers(
-            OcResourceHandle ocResourceHandle,
-            List<Byte> ocObservationIdList,
-            OcResourceResponse ocResourceResponse,
-            QualityOfService qualityOfService) throws OcException {
-        OcPlatform.initCheck();
-
-        byte[] idArr = new byte[ocObservationIdList.size()];
-        Iterator<Byte> it = ocObservationIdList.iterator();
-        int i = 0;
-        while (it.hasNext()) {
-            idArr[i++] = (byte) it.next();
-        }
-
-        OcPlatform.notifyListOfObservers3(
-                ocResourceHandle,
-                idArr,
-                ocResourceResponse,
-                qualityOfService.getValue()
-        );
-    }
-
-    private static native void notifyListOfObservers3(
-            OcResourceHandle ocResourceHandle,
-            byte[] ocObservationIdArray,
-            OcResourceResponse ocResourceResponse,
-            int qualityOfService) throws OcException;
-
-    /**
-     * API for Service and Resource Discovery. NOTE: This API applies to client side only
-     *
-     * @param host                    Host IP Address of a service to direct resource discovery query.
-     *                                If empty, performs multicast resource discovery query
-     * @param resourceUri             name of the resource. If null or empty, performs search for all
-     *                                resource names
-     * @param connectivityType        a type of connectivity indicating the interface. Example: IPV4,
-     *                                IPV6, ALL
-     * @param onResourceFoundListener Handles events, success states and failure states.
-     * @throws OcException
-     */
-    public static void findResource(
-            String host,
-            String resourceUri,
-            OcConnectivityType connectivityType,
-            OnResourceFoundListener onResourceFoundListener) throws OcException {
-        OcPlatform.initCheck();
-        OcPlatform.findResource0(
-                host,
-                resourceUri,
-                connectivityType.getValue(),
-                onResourceFoundListener
-        );
-    }
-
-    private static native void findResource0(
-            String host,
-            String resourceUri,
-            int connectivityType,
-            OnResourceFoundListener onResourceFoundListener) throws OcException;
-
-    /**
-     * API for Service and Resource Discovery. NOTE: This API applies to client side only
-     *
-     * @param host                    Host IP Address of a service to direct resource discovery query.
-     *                                If empty, performs multicast resource discovery query
-     * @param resourceUri             name of the resource. If null or empty, performs search for all
-     *                                resource names
-     * @param connectivityType        a type of connectivity indicating the interface. Example: IPV4,
-     *                                IPV6, ALL
-     * @param onResourceFoundListener Handles events, success states and failure states.
-     * @param qualityOfService        the quality of communication
-     * @throws OcException
-     */
-    public static void findResource(
-            String host,
-            String resourceUri,
-            OcConnectivityType connectivityType,
-            OnResourceFoundListener onResourceFoundListener,
-            QualityOfService qualityOfService) throws OcException {
-        OcPlatform.initCheck();
-        OcPlatform.findResource1(host,
-                resourceUri,
-                connectivityType.getValue(),
-                onResourceFoundListener,
-                qualityOfService.getValue()
-        );
-    }
-
-    private static native void findResource1(
-            String host,
-            String resourceUri,
-            int connectivityType,
-            OnResourceFoundListener onResourceFoundListener,
-            int qualityOfService) throws OcException;
-
-    /**
-     * API for Device Discovery
-     *
-     * @param host                  Host IP Address. If null or empty, Multicast is performed.
-     * @param deviceUri             Uri containing address to the virtual device
-     * @param connectivityType      a type of connectivity indicating the interface. Example: IPV4,
-     *                              IPV6, ALL
-     * @param onDeviceFoundListener Handles events, success states and failure states.
-     * @throws OcException
-     */
-    public static void getDeviceInfo(
-            String host,
-            String deviceUri,
-            OcConnectivityType connectivityType,
-            OnDeviceFoundListener onDeviceFoundListener) throws OcException {
-        OcPlatform.initCheck();
-        OcPlatform.getDeviceInfo0(
-                host,
-                deviceUri,
-                connectivityType.getValue(),
-                onDeviceFoundListener
-        );
-    }
-
-    private static native void getDeviceInfo0(
-            String host,
-            String deviceUri,
-            int connectivityType,
-            OnDeviceFoundListener onDeviceFoundListener) throws OcException;
-
-    /**
-     * API for Device Discovery
-     *
-     * @param host                  Host IP Address. If null or empty, Multicast is performed.
-     * @param deviceUri             Uri containing address to the virtual device
-     * @param connectivityType      a type of connectivity indicating the interface. Example: IPV4,
-     *                              IPV6, ALL
-     * @param onDeviceFoundListener Handles events, success states and failure states.
-     * @param qualityOfService      the quality of communication
-     * @throws OcException
-     */
-    public static void getDeviceInfo(
-            String host,
-            String deviceUri,
-            OcConnectivityType connectivityType,
-            OnDeviceFoundListener onDeviceFoundListener,
-            QualityOfService qualityOfService) throws OcException {
-        OcPlatform.initCheck();
-        OcPlatform.getDeviceInfo1(
-                host,
-                deviceUri,
-                connectivityType.getValue(),
-                onDeviceFoundListener,
-                qualityOfService.getValue()
-        );
-    }
-
-    private static native void getDeviceInfo1(
-            String host,
-            String deviceUri,
-            int connectivityType,
-            OnDeviceFoundListener onDeviceFoundListener,
+/*\r
+ * //******************************************************************\r
+ * //\r
+ * // Copyright 2015 Intel Corporation.\r
+ * //\r
+ * //-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=\r
+ * //\r
+ * // Licensed under the Apache License, Version 2.0 (the "License");\r
+ * // you may not use this file except in compliance with the License.\r
+ * // You may obtain a copy of the License at\r
+ * //\r
+ * //      http://www.apache.org/licenses/LICENSE-2.0\r
+ * //\r
+ * // Unless required by applicable law or agreed to in writing, software\r
+ * // distributed under the License is distributed on an "AS IS" BASIS,\r
+ * // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r
+ * // See the License for the specific language governing permissions and\r
+ * // limitations under the License.\r
+ * //\r
+ * //-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=\r
+ */\r
+\r
+package org.iotivity.base;\r
+\r
+import org.iotivity.ca.CaInterface;\r
+\r
+import java.util.EnumSet;\r
+import java.util.Iterator;\r
+import java.util.List;\r
+\r
+/**\r
+ * Contains the main entrance/functionality of the product. To set a custom configuration, the\r
+ * implementer must make a call to OcPlatform.Configure before the first usage of a function in this\r
+ * class.\r
+ */\r
+public final class OcPlatform {\r
+\r
+    static {\r
+        System.loadLibrary("oc_logger");\r
+        System.loadLibrary("octbstack");\r
+        System.loadLibrary("connectivity_abstraction");\r
+        System.loadLibrary("oc");\r
+        System.loadLibrary("ocstack-jni");\r
+    }\r
+\r
+    /**\r
+     * Default interface\r
+     */\r
+    public static final String DEFAULT_INTERFACE = "oic.if.baseline";\r
+\r
+    /**\r
+     * Used in discovering (GET) links to other resources of a collection\r
+     */\r
+    public static final String LINK_INTERFACE = "oic.if.ll";\r
+\r
+    /**\r
+     * Used in GET, PUT, POST, DELETE methods on links to other resources of a collection\r
+     */\r
+    public static final String BATCH_INTERFACE = "oic.if.b";\r
+\r
+    /**\r
+     * Used in GET, PUT, POST methods on links to other remote resources of a group\r
+     */\r
+    public static final String GROUP_INTERFACE = "oic.mi.grp";\r
+\r
+    public static final String WELL_KNOWN_QUERY = "224.0.1.187:5683/oic/res";\r
+    public static final String MULTICAST_PREFIX = "224.0.1.187:5683";\r
+    public static final String MULTICAST_IP = "224.0.1.187";\r
+    public static final int MULTICAST_PORT = 5683;\r
+    public static final int DEFAULT_PRESENCE_TTL = 60;\r
+    public static final String DEVICE_URI = "/oic/d";\r
+    public static final String PRESENCE_URI = "/oic/ad";\r
+\r
+    private static volatile boolean sIsPlatformInitialized = false;\r
+\r
+    private OcPlatform() {\r
+    }\r
+\r
+    /**\r
+     * API for setting the configuration of the OcPlatform.\r
+     * Note: Any calls made to this AFTER the first call to OcPlatform.Configure will have no affect\r
+     *\r
+     * @param platformConfig platform configuration\r
+     */\r
+    public synchronized static void Configure(PlatformConfig platformConfig) {\r
+        if (!sIsPlatformInitialized) {\r
+            CaInterface.initialize(platformConfig.getContext());\r
+\r
+            OcPlatform.configure(\r
+                    platformConfig.getServiceType().getValue(),\r
+                    platformConfig.getModeType().getValue(),\r
+                    platformConfig.getIpAddress(),\r
+                    platformConfig.getPort(),\r
+                    platformConfig.getQualityOfService().getValue(),
+                    platformConfig.getSvrDbPath()
+            );\r
+\r
+            sIsPlatformInitialized = true;\r
+        }\r
+    }\r
+\r
+    private static native void configure(int serviceType,\r
+                                         int modeType,\r
+                                         String ipAddress,\r
+                                         int port,\r
+                                         int qualityOfService,
+                                         String dbPath);
+\r
+    /**\r
+     * API for notifying base that resource's attributes have changed.\r
+     *\r
+     * @param ocResourceHandle resource handle of the resource\r
+     * @throws OcException\r
+     */\r
+    public static void notifyAllObservers(\r
+            OcResourceHandle ocResourceHandle) throws OcException {\r
+        OcPlatform.initCheck();\r
+        OcPlatform.notifyAllObservers0(ocResourceHandle);\r
+    }\r
+\r
+    private static native void notifyAllObservers0(\r
+            OcResourceHandle ocResourceHandle) throws OcException;\r
+\r
+    /**\r
+     * API for notifying base that resource's attributes have changed.\r
+     *\r
+     * @param ocResourceHandle resource handle of the resource\r
+     * @param qualityOfService the quality of communication\r
+     * @throws OcException\r
+     */\r
+    public static void notifyAllObservers(\r
+            OcResourceHandle ocResourceHandle,\r
+            QualityOfService qualityOfService) throws OcException {\r
+        OcPlatform.initCheck();\r
+        OcPlatform.notifyAllObservers1(ocResourceHandle, qualityOfService.getValue());\r
+    }\r
+\r
+    private static native void notifyAllObservers1(\r
+            OcResourceHandle ocResourceHandle,\r
+            int qualityOfService) throws OcException;\r
+\r
+    /**\r
+     * API for notifying only specific clients that resource's attributes have changed.\r
+     *\r
+     * @param ocResourceHandle    resource handle of the resource\r
+     * @param ocObservationIdList These set of ids are ones which which will be notified upon\r
+     *                            resource change.\r
+     * @param ocResourceResponse  OcResourceResponse object used by app to fill the response for\r
+     *                            this resource change\r
+     * @throws OcException\r
+     */\r
+    public static void notifyListOfObservers(\r
+            OcResourceHandle ocResourceHandle,\r
+            List<Byte> ocObservationIdList,\r
+            OcResourceResponse ocResourceResponse) throws OcException {\r
+        OcPlatform.initCheck();\r
+\r
+        byte[] idArr = new byte[ocObservationIdList.size()];\r
+        Iterator<Byte> it = ocObservationIdList.iterator();\r
+        int i = 0;\r
+        while (it.hasNext()) {\r
+            idArr[i++] = (byte) it.next();\r
+        }\r
+\r
+        OcPlatform.notifyListOfObservers2(\r
+                ocResourceHandle,\r
+                idArr,\r
+                ocResourceResponse);\r
+    }\r
+\r
+    private static native void notifyListOfObservers2(\r
+            OcResourceHandle ocResourceHandle,\r
+            byte[] ocObservationIdArray,\r
+            OcResourceResponse ocResourceResponse) throws OcException;\r
+\r
+    /**\r
+     * API for notifying only specific clients that resource's attributes have changed.\r
+     *\r
+     * @param ocResourceHandle    resource handle of the resource\r
+     * @param ocObservationIdList These set of ids are ones which which will be notified upon\r
+     *                            resource change.\r
+     * @param ocResourceResponse  OcResourceResponse object used by app to fill the response for\r
+     *                            this resource change\r
+     * @param qualityOfService    the quality of communication\r
+     * @throws OcException\r
+     */\r
+    public static void notifyListOfObservers(\r
+            OcResourceHandle ocResourceHandle,\r
+            List<Byte> ocObservationIdList,\r
+            OcResourceResponse ocResourceResponse,\r
+            QualityOfService qualityOfService) throws OcException {\r
+        OcPlatform.initCheck();\r
+\r
+        byte[] idArr = new byte[ocObservationIdList.size()];\r
+        Iterator<Byte> it = ocObservationIdList.iterator();\r
+        int i = 0;\r
+        while (it.hasNext()) {\r
+            idArr[i++] = (byte) it.next();\r
+        }\r
+\r
+        OcPlatform.notifyListOfObservers3(\r
+                ocResourceHandle,\r
+                idArr,\r
+                ocResourceResponse,\r
+                qualityOfService.getValue()\r
+        );\r
+    }\r
+\r
+    private static native void notifyListOfObservers3(\r
+            OcResourceHandle ocResourceHandle,\r
+            byte[] ocObservationIdArray,\r
+            OcResourceResponse ocResourceResponse,\r
+            int qualityOfService) throws OcException;\r
+\r
+    /**\r
+     * API for Service and Resource Discovery. NOTE: This API applies to client side only\r
+     *\r
+     * @param host                    Host IP Address of a service to direct resource discovery query.\r
+     *                                If empty, performs multicast resource discovery query\r
+     * @param resourceUri             name of the resource. If null or empty, performs search for all\r
+     *                                resource names\r
+     * @param connectivityType        a type of connectivity indicating the interface. Example: IPV4,\r
+     *                                IPV6, ALL\r
+     * @param onResourceFoundListener Handles events, success states and failure states.\r
+     * @throws OcException\r
+     */\r
+    public static void findResource(\r
+            String host,\r
+            String resourceUri,\r
+            OcConnectivityType connectivityType,\r
+            OnResourceFoundListener onResourceFoundListener) throws OcException {\r
+        OcPlatform.initCheck();\r
+        OcPlatform.findResource0(\r
+                host,\r
+                resourceUri,\r
+                connectivityType.getValue(),\r
+                onResourceFoundListener\r
+        );\r
+    }\r
+\r
+    private static native void findResource0(\r
+            String host,\r
+            String resourceUri,\r
+            int connectivityType,\r
+            OnResourceFoundListener onResourceFoundListener) throws OcException;\r
+\r
+    /**\r
+     * API for Service and Resource Discovery. NOTE: This API applies to client side only\r
+     *\r
+     * @param host                    Host IP Address of a service to direct resource discovery query.\r
+     *                                If empty, performs multicast resource discovery query\r
+     * @param resourceUri             name of the resource. If null or empty, performs search for all\r
+     *                                resource names\r
+     * @param connectivityType        a type of connectivity indicating the interface. Example: IPV4,\r
+     *                                IPV6, ALL\r
+     * @param onResourceFoundListener Handles events, success states and failure states.\r
+     * @param qualityOfService        the quality of communication\r
+     * @throws OcException\r
+     */\r
+    public static void findResource(\r
+            String host,\r
+            String resourceUri,\r
+            OcConnectivityType connectivityType,\r
+            OnResourceFoundListener onResourceFoundListener,\r
+            QualityOfService qualityOfService) throws OcException {\r
+        OcPlatform.initCheck();\r
+        OcPlatform.findResource1(host,\r
+                resourceUri,\r
+                connectivityType.getValue(),\r
+                onResourceFoundListener,\r
+                qualityOfService.getValue()\r
+        );\r
+    }\r
+\r
+    private static native void findResource1(\r
+            String host,\r
+            String resourceUri,\r
+            int connectivityType,\r
+            OnResourceFoundListener onResourceFoundListener,\r
+            int qualityOfService) throws OcException;\r
+\r
+    /**\r
+     * API for Device Discovery\r
+     *\r
+     * @param host                  Host IP Address. If null or empty, Multicast is performed.\r
+     * @param deviceUri             Uri containing address to the virtual device\r
+     * @param connectivityType      a type of connectivity indicating the interface. Example: IPV4,\r
+     *                              IPV6, ALL\r
+     * @param onDeviceFoundListener Handles events, success states and failure states.\r
+     * @throws OcException\r
+     */\r
+    public static void getDeviceInfo(\r
+            String host,\r
+            String deviceUri,\r
+            OcConnectivityType connectivityType,\r
+            OnDeviceFoundListener onDeviceFoundListener) throws OcException {\r
+        OcPlatform.initCheck();\r
+        OcPlatform.getDeviceInfo0(\r
+                host,\r
+                deviceUri,\r
+                connectivityType.getValue(),\r
+                onDeviceFoundListener\r
+        );\r
+    }\r
+\r
+    private static native void getDeviceInfo0(\r
+            String host,\r
+            String deviceUri,\r
+            int connectivityType,\r
+            OnDeviceFoundListener onDeviceFoundListener) throws OcException;\r
+\r
+    /**\r
+     * API for Device Discovery\r
+     *\r
+     * @param host                  Host IP Address. If null or empty, Multicast is performed.\r
+     * @param deviceUri             Uri containing address to the virtual device\r
+     * @param connectivityType      a type of connectivity indicating the interface. Example: IPV4,\r
+     *                              IPV6, ALL\r
+     * @param onDeviceFoundListener Handles events, success states and failure states.\r
+     * @param qualityOfService      the quality of communication\r
+     * @throws OcException\r
+     */\r
+    public static void getDeviceInfo(\r
+            String host,\r
+            String deviceUri,\r
+            OcConnectivityType connectivityType,\r
+            OnDeviceFoundListener onDeviceFoundListener,\r
+            QualityOfService qualityOfService) throws OcException {\r
+        OcPlatform.initCheck();\r
+        OcPlatform.getDeviceInfo1(\r
+                host,\r
+                deviceUri,\r
+                connectivityType.getValue(),\r
+                onDeviceFoundListener,\r
+                qualityOfService.getValue()\r
+        );\r
+    }\r
+\r
+    private static native void getDeviceInfo1(\r
+            String host,\r
+            String deviceUri,\r
+            int connectivityType,\r
+            OnDeviceFoundListener onDeviceFoundListener,\r
             int qualityOfService) throws OcException;
 
     /**
@@ -405,83 +407,83 @@ public final class OcPlatform {
             String platformUri,
             int connectivityType,
             OnPlatformFoundListener onPlatformFoundListener,
-            int qualityOfService) throws OcException;
-
-    /**
-     * This API registers a resource with the server NOTE: This API applies to server side only.
-     *
-     * @param ocResource The instance of OcResource with all data filled
-     * @return resource handle
-     * @throws OcException
-     */
-    public static OcResourceHandle registerResource(
-            OcResource ocResource) throws OcException {
-        OcPlatform.initCheck();
-        return OcPlatform.registerResource0(ocResource);
-    }
-
-    private static native OcResourceHandle registerResource0(
-            OcResource ocResource) throws OcException;
-
-    /**
-     * This API registers a resource with the server NOTE: This API applies to server side only.
-     *
-     * @param resourceUri         The URI of the resource. Example: "a/light"
-     * @param resourceTypeName    The resource type. Example: "light"
-     * @param resourceInterface   The resource interface (whether it is collection etc).
-     * @param entityHandler       entity handler.
-     * @param resourcePropertySet indicates the property of the resource
-     * @return resource handle
-     * @throws OcException
-     */
-    public static OcResourceHandle registerResource(
-            String resourceUri,
-            String resourceTypeName,
-            String resourceInterface,
-            EntityHandler entityHandler,
-            EnumSet<ResourceProperty> resourcePropertySet) throws OcException {
-        OcPlatform.initCheck();
-
-        int resProperty = 0;
-
-        for (ResourceProperty prop : ResourceProperty.values()) {
-            if (resourcePropertySet.contains(prop))
-                resProperty |= prop.getValue();
-        }
-
-        return OcPlatform.registerResource1(resourceUri,
-                resourceTypeName,
-                resourceInterface,
-                entityHandler,
-                resProperty);
-    }
-
-    private static native OcResourceHandle registerResource1(
-            String resourceUri,
-            String resourceTypeName,
-            String resourceInterface,
-            EntityHandler entityHandler,
-            int resourceProperty) throws OcException;
-
-    /**
-     * Register Device Info
-     *
-     * @param ocDeviceInfo object containing all the device specific information
-     * @throws OcException
-     */
-    public static void registerDeviceInfo(
-            OcDeviceInfo ocDeviceInfo) throws OcException {
-        OcPlatform.initCheck();
-        OcPlatform.registerDeviceInfo0(
-                ocDeviceInfo.getDeviceName()
-        );
-    }
-
-    private static native void registerDeviceInfo0(
-            String deviceName
-            ) throws OcException;
-
-    /**
+            int qualityOfService) throws OcException;\r
+\r
+    /**\r
+     * This API registers a resource with the server NOTE: This API applies to server side only.\r
+     *\r
+     * @param ocResource The instance of OcResource with all data filled\r
+     * @return resource handle\r
+     * @throws OcException\r
+     */\r
+    public static OcResourceHandle registerResource(\r
+            OcResource ocResource) throws OcException {\r
+        OcPlatform.initCheck();\r
+        return OcPlatform.registerResource0(ocResource);\r
+    }\r
+\r
+    private static native OcResourceHandle registerResource0(\r
+            OcResource ocResource) throws OcException;\r
+\r
+    /**\r
+     * This API registers a resource with the server NOTE: This API applies to server side only.\r
+     *\r
+     * @param resourceUri         The URI of the resource. Example: "a/light"\r
+     * @param resourceTypeName    The resource type. Example: "light"\r
+     * @param resourceInterface   The resource interface (whether it is collection etc).\r
+     * @param entityHandler       entity handler.\r
+     * @param resourcePropertySet indicates the property of the resource\r
+     * @return resource handle\r
+     * @throws OcException\r
+     */\r
+    public static OcResourceHandle registerResource(\r
+            String resourceUri,\r
+            String resourceTypeName,\r
+            String resourceInterface,\r
+            EntityHandler entityHandler,\r
+            EnumSet<ResourceProperty> resourcePropertySet) throws OcException {\r
+        OcPlatform.initCheck();\r
+\r
+        int resProperty = 0;\r
+\r
+        for (ResourceProperty prop : ResourceProperty.values()) {\r
+            if (resourcePropertySet.contains(prop))\r
+                resProperty |= prop.getValue();\r
+        }\r
+\r
+        return OcPlatform.registerResource1(resourceUri,\r
+                resourceTypeName,\r
+                resourceInterface,\r
+                entityHandler,\r
+                resProperty);\r
+    }\r
+\r
+    private static native OcResourceHandle registerResource1(\r
+            String resourceUri,\r
+            String resourceTypeName,\r
+            String resourceInterface,\r
+            EntityHandler entityHandler,\r
+            int resourceProperty) throws OcException;\r
+\r
+    /**\r
+     * Register Device Info\r
+     *\r
+     * @param ocDeviceInfo object containing all the device specific information\r
+     * @throws OcException\r
+     */\r
+    public static void registerDeviceInfo(\r
+            OcDeviceInfo ocDeviceInfo) throws OcException {\r
+        OcPlatform.initCheck();\r
+        OcPlatform.registerDeviceInfo0(\r
+                ocDeviceInfo.getDeviceName()\r
+        );\r
+    }\r
+\r
+    private static native void registerDeviceInfo0(\r
+            String deviceName\r
+            ) throws OcException;\r
+\r
+    /**\r
      * Register Platform Info
      *
      * @param ocPlatformInfo object containing all the platform specific information
@@ -513,320 +515,320 @@ public final class OcPlatform {
     ) throws OcException;
 
     /**
-     * This API unregisters a resource with the server NOTE: This API applies to server side only.
-     *
-     * @param ocResourceHandle This is the resource handle which we which to unregister from the
-     *                         server
-     * @throws OcException
-     */
-    public static void unregisterResource(
-            OcResourceHandle ocResourceHandle) throws OcException {
-        OcPlatform.initCheck();
-        OcPlatform.unregisterResource0(ocResourceHandle);
-    }
-
-    private static native void unregisterResource0(
-            OcResourceHandle ocResourceHandle) throws OcException;
-
-
-    /**
-     * Add a resource to a collection resource
-     *
-     * @param ocResourceCollectionHandle handle to the collection resource
-     * @param ocResourceHandle           handle to resource to be added to the collection resource
-     * @throws OcException
-     */
-    public static void bindResource(
-            OcResourceHandle ocResourceCollectionHandle,
-            OcResourceHandle ocResourceHandle) throws OcException {
-        OcPlatform.initCheck();
-        OcPlatform.bindResource0(ocResourceCollectionHandle, ocResourceHandle);
-    }
-
-    private static native void bindResource0(
-            OcResourceHandle ocResourceCollectionHandle,
-            OcResourceHandle ocResourceHandle) throws OcException;
-
-    /**
-     * Add multiple resources to a collection resource.
-     *
-     * @param ocResourceCollectionHandle handle to the collection resource
-     * @param ocResourceHandleList       reference to list of resource handles to be added to the
-     *                                   collection resource
-     * @throws OcException
-     */
-    public static void bindResources(
-            OcResourceHandle ocResourceCollectionHandle,
-            List<OcResourceHandle> ocResourceHandleList) throws OcException {
-        OcPlatform.initCheck();
-        OcPlatform.bindResources0(
-                ocResourceCollectionHandle,
-                ocResourceHandleList.toArray(
-                        new OcResourceHandle[ocResourceHandleList.size()])
-        );
-    }
-
-    private static native void bindResources0(
-            OcResourceHandle ocResourceCollectionHandle,
-            OcResourceHandle[] ocResourceHandleArray) throws OcException;
-
-    /**
-     * Unbind a resource from a collection resource.
-     *
-     * @param ocResourceCollectionHandle handle to the collection resource
-     * @param ocResourceHandle           resource handle to be unbound from the collection resource
-     * @throws OcException
-     */
-    public static void unbindResource(
-            OcResourceHandle ocResourceCollectionHandle,
-            OcResourceHandle ocResourceHandle) throws OcException {
-        OcPlatform.initCheck();
-        OcPlatform.unbindResource0(ocResourceCollectionHandle, ocResourceHandle);
-    }
-
-    private static native void unbindResource0(
-            OcResourceHandle ocResourceCollectionHandle,
-            OcResourceHandle ocResourceHandle) throws OcException;
-
-    /**
-     * Unbind resources from a collection resource.
-     *
-     * @param ocResourceCollectionHandle Handle to the collection resource
-     * @param ocResourceHandleList       List of resource handles to be unbound from the collection
-     *                                   resource
-     * @throws OcException
-     */
-    public static void unbindResources(
-            OcResourceHandle ocResourceCollectionHandle,
-            List<OcResourceHandle> ocResourceHandleList) throws OcException {
-        OcPlatform.initCheck();
-        OcPlatform.unbindResources0(
-                ocResourceCollectionHandle,
-                ocResourceHandleList.toArray(
-                        new OcResourceHandle[ocResourceHandleList.size()])
-        );
-    }
-
-    private static native void unbindResources0(
-            OcResourceHandle ocResourceCollectionHandle,
-            OcResourceHandle[] ocResourceHandleArray) throws OcException;
-
-    /**
-     * Binds a type to a particular resource
-     *
-     * @param ocResourceHandle handle to the resource
-     * @param resourceTypeName new typename to bind to the resource
-     * @throws OcException
-     */
-    public static void bindTypeToResource(
-            OcResourceHandle ocResourceHandle,
-            String resourceTypeName) throws OcException {
-        OcPlatform.initCheck();
-        OcPlatform.bindTypeToResource0(ocResourceHandle, resourceTypeName);
-    }
-
-    private static native void bindTypeToResource0(
-            OcResourceHandle ocResourceHandle,
-            String resourceTypeName) throws OcException;
-
-    /**
-     * Binds an interface to a particular resource
-     *
-     * @param ocResourceHandle      handle to the resource
-     * @param resourceInterfaceName new interface to bind to the resource
-     * @throws OcException
-     */
-    public static void bindInterfaceToResource(
-            OcResourceHandle ocResourceHandle,
-            String resourceInterfaceName) throws OcException {
-        OcPlatform.initCheck();
-        OcPlatform.bindInterfaceToResource0(ocResourceHandle, resourceInterfaceName);
-    }
-
-    private static native void bindInterfaceToResource0(
-            OcResourceHandle ocResourceHandle,
-            String resourceInterfaceName) throws OcException;
-
-    /**
-     * Start Presence announcements.
-     *
-     * @param ttl time to live in seconds
-     * @throws OcException
-     */
-    public static void startPresence(int ttl) throws OcException {
-        OcPlatform.initCheck();
-        OcPlatform.startPresence0(ttl);
-    }
-
-    private static native void startPresence0(int ttl) throws OcException;
-
-    /**
-     * Stop Presence announcements.
-     *
-     * @throws OcException
-     */
-    public static void stopPresence() throws OcException {
-        OcPlatform.initCheck();
-        OcPlatform.stopPresence0();
-    }
-
-    private static native void stopPresence0() throws OcException;
-
-    /**
-     * Subscribes to a server's presence change events. By making this subscription, every time a
-     * server adds/removes/alters a resource, starts or is intentionally stopped
-     *
-     * @param host               The IP address/addressable name of the server to subscribe to
-     * @param connectivityType   a type of connectivity indicating the interface. Example: IPV4,
-     *                           IPV6, ALL
-     * @param onPresenceListener listener that will receive notifications/subscription events
-     * @return a handle object that can be used to identify this subscription request. It can be
-     * used to unsubscribe from these events in the future
-     * @throws OcException
-     */
-    public static OcPresenceHandle subscribePresence(
-            String host,
-            OcConnectivityType connectivityType,
-            OnPresenceListener onPresenceListener) throws OcException {
-        OcPlatform.initCheck();
-        return OcPlatform.subscribePresence0(
-                host,
-                connectivityType.getValue(),
-                onPresenceListener
-        );
-    }
-
-    private static native OcPresenceHandle subscribePresence0(
-            String host,
-            int connectivityType,
-            OnPresenceListener onPresenceListener) throws OcException;
-
-    /**
-     * Subscribes to a server's presence change events. By making this subscription, every time a
-     * server adds/removes/alters a resource, starts or is intentionally stopped
-     *
-     * @param host               The IP address/addressable name of the server to subscribe to
-     * @param resourceType       a resource type specified as a filter for subscription events.
-     * @param connectivityType   a type of connectivity indicating the interface. Example: IPV4,
-     *                           IPV6, ALL
-     * @param onPresenceListener listener that will receive notifications/subscription events
-     * @return a handle object that can be used to identify this subscription request. It can be
-     * used to unsubscribe from these events in the future
-     * @throws OcException
-     */
-    public static OcPresenceHandle subscribePresence(
-            String host,
-            String resourceType,
-            OcConnectivityType connectivityType,
-            OnPresenceListener onPresenceListener) throws OcException {
-        OcPlatform.initCheck();
-        return OcPlatform.subscribePresence1(
-                host,
-                resourceType,
-                connectivityType.getValue(),
-                onPresenceListener);
-    }
-
-    private static native OcPresenceHandle subscribePresence1(
-            String host,
-            String resourceType,
-            int connectivityType,
-            OnPresenceListener onPresenceListener) throws OcException;
-
-    /**
-     * Unsubscribes from a previously subscribed server's presence events. Note that you may for
-     * a short time still receive events from the server since it may take time for the
-     * unsubscribe to take effect.
-     *
-     * @param ocPresenceHandle the handle object provided by the subscribePresence call that
-     *                         identifies this subscription
-     * @throws OcException
-     */
-    public static void unsubscribePresence(
-            OcPresenceHandle ocPresenceHandle) throws OcException {
-        OcPlatform.initCheck();
-        OcPlatform.unsubscribePresence0(ocPresenceHandle);
-    }
-
-    private static native void unsubscribePresence0(
-            OcPresenceHandle ocPresenceHandle) throws OcException;
-
-    /**
-     * Creates a resource proxy object so that get/put/observe functionality can be used without
-     * discovering the object in advance. Note that the consumer of this method needs to provide
-     * all of the details required to correctly contact and observe the object. If the consumer
-     * lacks any of this information, they should discover the resource object normally.
-     * Additionally, you can only create this object if OcPlatform was initialized to be a Client
-     * or Client/Server.
-     *
-     * @param host             a string containing a resolvable host address of the server holding
-     *                         the resource
-     * @param uri              the rest of the resource's URI that will permit messages to be
-     *                         properly routed.
-     *                         Example: /a/light
-     * @param connectivityType a type of connectivity indicating the interface. Example: IPV4,
-     *                         IPV6, ALL
-     * @param isObservable     a boolean containing whether the resource supports observation
-     * @param resourceTypeList a collection of resource types implemented by the resource
-     * @param interfaceList    a collection of interfaces that the resource supports/implements
-     * @return new resource object
-     * @throws OcException
-     */
-    public static OcResource constructResourceObject(
-            String host,
-            String uri,
-            OcConnectivityType connectivityType,
-            boolean isObservable,
-            List<String> resourceTypeList,
-            List<String> interfaceList) throws OcException {
-        OcPlatform.initCheck();
-        return OcPlatform.constructResourceObject0(
-                host,
-                uri,
-                connectivityType.getValue(),
-                isObservable,
-                resourceTypeList.toArray(new String[resourceTypeList.size()]),
-                interfaceList.toArray(new String[interfaceList.size()])
-        );
-    }
-
-    private static native OcResource constructResourceObject0(
-            String host,
-            String uri,
-            int connectivityType,
-            boolean isObservable,
-            String[] resourceTypes,
-            String[] interfaces) throws OcException;
-
-    /**
-     * Allows application entity handler to send response to an incoming request.
-     *
-     * @param ocResourceResponse resource response
-     * @throws OcException
-     */
-    public static void sendResponse(OcResourceResponse ocResourceResponse)
-            throws OcException {
-        OcPlatform.initCheck();
-        OcPlatform.sendResponse0(ocResourceResponse);
-    }
-
-    private static native void sendResponse0(OcResourceResponse ocResourceResponse)
-            throws OcException;
-
-    /**
-     * An OnResourceFoundListener can be registered via the OcPlatform.findResource call.
-     * Event listeners are notified asynchronously
-     */
-    public interface OnResourceFoundListener {
-        public void onResourceFound(OcResource resource);
-    }
-
-    /**
-     * An OnDeviceFoundListener can be registered via the OcPlatform.getDeviceInfo call.
-     * Event listeners are notified asynchronously
-     */
-    public interface OnDeviceFoundListener {
-        public void onDeviceFound(OcRepresentation ocRepresentation);
+     * This API unregisters a resource with the server NOTE: This API applies to server side only.\r
+     *\r
+     * @param ocResourceHandle This is the resource handle which we which to unregister from the\r
+     *                         server\r
+     * @throws OcException\r
+     */\r
+    public static void unregisterResource(\r
+            OcResourceHandle ocResourceHandle) throws OcException {\r
+        OcPlatform.initCheck();\r
+        OcPlatform.unregisterResource0(ocResourceHandle);\r
+    }\r
+\r
+    private static native void unregisterResource0(\r
+            OcResourceHandle ocResourceHandle) throws OcException;\r
+\r
+\r
+    /**\r
+     * Add a resource to a collection resource\r
+     *\r
+     * @param ocResourceCollectionHandle handle to the collection resource\r
+     * @param ocResourceHandle           handle to resource to be added to the collection resource\r
+     * @throws OcException\r
+     */\r
+    public static void bindResource(\r
+            OcResourceHandle ocResourceCollectionHandle,\r
+            OcResourceHandle ocResourceHandle) throws OcException {\r
+        OcPlatform.initCheck();\r
+        OcPlatform.bindResource0(ocResourceCollectionHandle, ocResourceHandle);\r
+    }\r
+\r
+    private static native void bindResource0(\r
+            OcResourceHandle ocResourceCollectionHandle,\r
+            OcResourceHandle ocResourceHandle) throws OcException;\r
+\r
+    /**\r
+     * Add multiple resources to a collection resource.\r
+     *\r
+     * @param ocResourceCollectionHandle handle to the collection resource\r
+     * @param ocResourceHandleList       reference to list of resource handles to be added to the\r
+     *                                   collection resource\r
+     * @throws OcException\r
+     */\r
+    public static void bindResources(\r
+            OcResourceHandle ocResourceCollectionHandle,\r
+            List<OcResourceHandle> ocResourceHandleList) throws OcException {\r
+        OcPlatform.initCheck();\r
+        OcPlatform.bindResources0(\r
+                ocResourceCollectionHandle,\r
+                ocResourceHandleList.toArray(\r
+                        new OcResourceHandle[ocResourceHandleList.size()])\r
+        );\r
+    }\r
+\r
+    private static native void bindResources0(\r
+            OcResourceHandle ocResourceCollectionHandle,\r
+            OcResourceHandle[] ocResourceHandleArray) throws OcException;\r
+\r
+    /**\r
+     * Unbind a resource from a collection resource.\r
+     *\r
+     * @param ocResourceCollectionHandle handle to the collection resource\r
+     * @param ocResourceHandle           resource handle to be unbound from the collection resource\r
+     * @throws OcException\r
+     */\r
+    public static void unbindResource(\r
+            OcResourceHandle ocResourceCollectionHandle,\r
+            OcResourceHandle ocResourceHandle) throws OcException {\r
+        OcPlatform.initCheck();\r
+        OcPlatform.unbindResource0(ocResourceCollectionHandle, ocResourceHandle);\r
+    }\r
+\r
+    private static native void unbindResource0(\r
+            OcResourceHandle ocResourceCollectionHandle,\r
+            OcResourceHandle ocResourceHandle) throws OcException;\r
+\r
+    /**\r
+     * Unbind resources from a collection resource.\r
+     *\r
+     * @param ocResourceCollectionHandle Handle to the collection resource\r
+     * @param ocResourceHandleList       List of resource handles to be unbound from the collection\r
+     *                                   resource\r
+     * @throws OcException\r
+     */\r
+    public static void unbindResources(\r
+            OcResourceHandle ocResourceCollectionHandle,\r
+            List<OcResourceHandle> ocResourceHandleList) throws OcException {\r
+        OcPlatform.initCheck();\r
+        OcPlatform.unbindResources0(\r
+                ocResourceCollectionHandle,\r
+                ocResourceHandleList.toArray(\r
+                        new OcResourceHandle[ocResourceHandleList.size()])\r
+        );\r
+    }\r
+\r
+    private static native void unbindResources0(\r
+            OcResourceHandle ocResourceCollectionHandle,\r
+            OcResourceHandle[] ocResourceHandleArray) throws OcException;\r
+\r
+    /**\r
+     * Binds a type to a particular resource\r
+     *\r
+     * @param ocResourceHandle handle to the resource\r
+     * @param resourceTypeName new typename to bind to the resource\r
+     * @throws OcException\r
+     */\r
+    public static void bindTypeToResource(\r
+            OcResourceHandle ocResourceHandle,\r
+            String resourceTypeName) throws OcException {\r
+        OcPlatform.initCheck();\r
+        OcPlatform.bindTypeToResource0(ocResourceHandle, resourceTypeName);\r
+    }\r
+\r
+    private static native void bindTypeToResource0(\r
+            OcResourceHandle ocResourceHandle,\r
+            String resourceTypeName) throws OcException;\r
+\r
+    /**\r
+     * Binds an interface to a particular resource\r
+     *\r
+     * @param ocResourceHandle      handle to the resource\r
+     * @param resourceInterfaceName new interface to bind to the resource\r
+     * @throws OcException\r
+     */\r
+    public static void bindInterfaceToResource(\r
+            OcResourceHandle ocResourceHandle,\r
+            String resourceInterfaceName) throws OcException {\r
+        OcPlatform.initCheck();\r
+        OcPlatform.bindInterfaceToResource0(ocResourceHandle, resourceInterfaceName);\r
+    }\r
+\r
+    private static native void bindInterfaceToResource0(\r
+            OcResourceHandle ocResourceHandle,\r
+            String resourceInterfaceName) throws OcException;\r
+\r
+    /**\r
+     * Start Presence announcements.\r
+     *\r
+     * @param ttl time to live in seconds\r
+     * @throws OcException\r
+     */\r
+    public static void startPresence(int ttl) throws OcException {\r
+        OcPlatform.initCheck();\r
+        OcPlatform.startPresence0(ttl);\r
+    }\r
+\r
+    private static native void startPresence0(int ttl) throws OcException;\r
+\r
+    /**\r
+     * Stop Presence announcements.\r
+     *\r
+     * @throws OcException\r
+     */\r
+    public static void stopPresence() throws OcException {\r
+        OcPlatform.initCheck();\r
+        OcPlatform.stopPresence0();\r
+    }\r
+\r
+    private static native void stopPresence0() throws OcException;\r
+\r
+    /**\r
+     * Subscribes to a server's presence change events. By making this subscription, every time a\r
+     * server adds/removes/alters a resource, starts or is intentionally stopped\r
+     *\r
+     * @param host               The IP address/addressable name of the server to subscribe to\r
+     * @param connectivityType   a type of connectivity indicating the interface. Example: IPV4,\r
+     *                           IPV6, ALL\r
+     * @param onPresenceListener listener that will receive notifications/subscription events\r
+     * @return a handle object that can be used to identify this subscription request. It can be\r
+     * used to unsubscribe from these events in the future\r
+     * @throws OcException\r
+     */\r
+    public static OcPresenceHandle subscribePresence(\r
+            String host,\r
+            OcConnectivityType connectivityType,\r
+            OnPresenceListener onPresenceListener) throws OcException {\r
+        OcPlatform.initCheck();\r
+        return OcPlatform.subscribePresence0(\r
+                host,\r
+                connectivityType.getValue(),\r
+                onPresenceListener\r
+        );\r
+    }\r
+\r
+    private static native OcPresenceHandle subscribePresence0(\r
+            String host,\r
+            int connectivityType,\r
+            OnPresenceListener onPresenceListener) throws OcException;\r
+\r
+    /**\r
+     * Subscribes to a server's presence change events. By making this subscription, every time a\r
+     * server adds/removes/alters a resource, starts or is intentionally stopped\r
+     *\r
+     * @param host               The IP address/addressable name of the server to subscribe to\r
+     * @param resourceType       a resource type specified as a filter for subscription events.\r
+     * @param connectivityType   a type of connectivity indicating the interface. Example: IPV4,\r
+     *                           IPV6, ALL\r
+     * @param onPresenceListener listener that will receive notifications/subscription events\r
+     * @return a handle object that can be used to identify this subscription request. It can be\r
+     * used to unsubscribe from these events in the future\r
+     * @throws OcException\r
+     */\r
+    public static OcPresenceHandle subscribePresence(\r
+            String host,\r
+            String resourceType,\r
+            OcConnectivityType connectivityType,\r
+            OnPresenceListener onPresenceListener) throws OcException {\r
+        OcPlatform.initCheck();\r
+        return OcPlatform.subscribePresence1(\r
+                host,\r
+                resourceType,\r
+                connectivityType.getValue(),\r
+                onPresenceListener);\r
+    }\r
+\r
+    private static native OcPresenceHandle subscribePresence1(\r
+            String host,\r
+            String resourceType,\r
+            int connectivityType,\r
+            OnPresenceListener onPresenceListener) throws OcException;\r
+\r
+    /**\r
+     * Unsubscribes from a previously subscribed server's presence events. Note that you may for\r
+     * a short time still receive events from the server since it may take time for the\r
+     * unsubscribe to take effect.\r
+     *\r
+     * @param ocPresenceHandle the handle object provided by the subscribePresence call that\r
+     *                         identifies this subscription\r
+     * @throws OcException\r
+     */\r
+    public static void unsubscribePresence(\r
+            OcPresenceHandle ocPresenceHandle) throws OcException {\r
+        OcPlatform.initCheck();\r
+        OcPlatform.unsubscribePresence0(ocPresenceHandle);\r
+    }\r
+\r
+    private static native void unsubscribePresence0(\r
+            OcPresenceHandle ocPresenceHandle) throws OcException;\r
+\r
+    /**\r
+     * Creates a resource proxy object so that get/put/observe functionality can be used without\r
+     * discovering the object in advance. Note that the consumer of this method needs to provide\r
+     * all of the details required to correctly contact and observe the object. If the consumer\r
+     * lacks any of this information, they should discover the resource object normally.\r
+     * Additionally, you can only create this object if OcPlatform was initialized to be a Client\r
+     * or Client/Server.\r
+     *\r
+     * @param host             a string containing a resolvable host address of the server holding\r
+     *                         the resource\r
+     * @param uri              the rest of the resource's URI that will permit messages to be\r
+     *                         properly routed.\r
+     *                         Example: /a/light\r
+     * @param connectivityType a type of connectivity indicating the interface. Example: IPV4,\r
+     *                         IPV6, ALL\r
+     * @param isObservable     a boolean containing whether the resource supports observation\r
+     * @param resourceTypeList a collection of resource types implemented by the resource\r
+     * @param interfaceList    a collection of interfaces that the resource supports/implements\r
+     * @return new resource object\r
+     * @throws OcException\r
+     */\r
+    public static OcResource constructResourceObject(\r
+            String host,\r
+            String uri,\r
+            OcConnectivityType connectivityType,\r
+            boolean isObservable,\r
+            List<String> resourceTypeList,\r
+            List<String> interfaceList) throws OcException {\r
+        OcPlatform.initCheck();\r
+        return OcPlatform.constructResourceObject0(\r
+                host,\r
+                uri,\r
+                connectivityType.getValue(),\r
+                isObservable,\r
+                resourceTypeList.toArray(new String[resourceTypeList.size()]),\r
+                interfaceList.toArray(new String[interfaceList.size()])\r
+        );\r
+    }\r
+\r
+    private static native OcResource constructResourceObject0(\r
+            String host,\r
+            String uri,\r
+            int connectivityType,\r
+            boolean isObservable,\r
+            String[] resourceTypes,\r
+            String[] interfaces) throws OcException;\r
+\r
+    /**\r
+     * Allows application entity handler to send response to an incoming request.\r
+     *\r
+     * @param ocResourceResponse resource response\r
+     * @throws OcException\r
+     */\r
+    public static void sendResponse(OcResourceResponse ocResourceResponse)\r
+            throws OcException {\r
+        OcPlatform.initCheck();\r
+        OcPlatform.sendResponse0(ocResourceResponse);\r
+    }\r
+\r
+    private static native void sendResponse0(OcResourceResponse ocResourceResponse)\r
+            throws OcException;\r
+\r
+    /**\r
+     * An OnResourceFoundListener can be registered via the OcPlatform.findResource call.\r
+     * Event listeners are notified asynchronously\r
+     */\r
+    public interface OnResourceFoundListener {\r
+        public void onResourceFound(OcResource resource);\r
+    }\r
+\r
+    /**\r
+     * An OnDeviceFoundListener can be registered via the OcPlatform.getDeviceInfo call.\r
+     * Event listeners are notified asynchronously\r
+     */\r
+    public interface OnDeviceFoundListener {\r
+        public void onDeviceFound(OcRepresentation ocRepresentation);\r
     }
 
     /**
@@ -835,28 +837,28 @@ public final class OcPlatform {
      */
     public interface OnPlatformFoundListener {
         public void onPlatformFound(OcRepresentation ocRepresentation);
-    }
-
-    /**
-     * An OnPresenceListener can be registered via the OcPlatform.subscribePresence call.
-     * Event listeners are notified asynchronously
-     */
-    public interface OnPresenceListener {
-        public void onPresence(OcPresenceStatus ocPresenceStatus, int nonce, String hostAddress);
-    }
-
-    /**
-     * An EntityHandler can be registered via the OcPlatform.registerResource call.
-     * Event listeners are notified asynchronously
-     */
-    public interface EntityHandler {
-        public EntityHandlerResult handleEntity(OcResourceRequest ocResourceRequest);
-    }
-
-    private static void initCheck() {
-        if (!sIsPlatformInitialized) {
-            throw new IllegalStateException("OcPlatform must be configured by making a call to " +
-                    "OcPlatform.Configure before any other API calls are permitted");
-        }
-    }
-}
+    }\r
+\r
+    /**\r
+     * An OnPresenceListener can be registered via the OcPlatform.subscribePresence call.\r
+     * Event listeners are notified asynchronously\r
+     */\r
+    public interface OnPresenceListener {\r
+        public void onPresence(OcPresenceStatus ocPresenceStatus, int nonce, String hostAddress);\r
+    }\r
+\r
+    /**\r
+     * An EntityHandler can be registered via the OcPlatform.registerResource call.\r
+     * Event listeners are notified asynchronously\r
+     */\r
+    public interface EntityHandler {\r
+        public EntityHandlerResult handleEntity(OcResourceRequest ocResourceRequest);\r
+    }\r
+\r
+    private static void initCheck() {\r
+        if (!sIsPlatformInitialized) {\r
+            throw new IllegalStateException("OcPlatform must be configured by making a call to " +\r
+                    "OcPlatform.Configure before any other API calls are permitted");\r
+        }\r
+    }\r
+}\r