[IOT-2405] Enable building generic java in Windows
authorGeorge Nash <george.nash@intel.com>
Tue, 13 Jun 2017 21:49:56 +0000 (14:49 -0700)
committerRick Bell <richard.s.bell@intel.com>
Wed, 5 Jul 2017 20:34:20 +0000 (20:34 +0000)
Changed the name of the iotivity-linux folder to
iotivity-java. Update the build scripts to account
for the name change of the folder. The name of the
output jar file is no longer iotivity-linux.jar it
is now iotivity.jar.

The JNI code links against the static librarys not
the shared librarys for oc, oc_logger, octbstack,
and connectivity_abstraction. Not all libraries are
have a dll built for windows, they must be statically
linked. This insures the Java code is identical for
all platforms. This also greatly reduces the number
of dependencies for the java code on native libraries.
The code now only needs to import ocstack-jni for the
IoTivity stack and ca-interface for security.

Other small updates to address compiler warnings.

Bug: https://jira.iotivity.org/browse/IOT-2405
Change-Id: I98392a6d0c2a5299746fa7dd6540724b0f5a4bc8
Signed-off-by: George Nash <george.nash@intel.com>
Reviewed-on: https://gerrit.iotivity.org/gerrit/21061
Tested-by: jenkins-iotivity <jenkins@iotivity.org>
Reviewed-by: Rick Bell <richard.s.bell@intel.com>
30 files changed:
build_common/external_libs.scons
build_common/windows/SConscript
extlibs/android/gradle/SConscript
java/SConscript
java/common/src/main/java/org/iotivity/base/OcRepresentation.java
java/common/src/main/java/org/iotivity/base/OcResourceResponse.java
java/examples-java/build.gradle
java/iotivity-android/src/main/java/org/iotivity/base/OcPlatform.java
java/iotivity-android/src/main/java/org/iotivity/ca/CaInterface.java
java/iotivity-java/build.gradle [moved from java/iotivity-linux/build.gradle with 100% similarity]
java/iotivity-java/settings.gradle [new file with mode: 0644]
java/iotivity-java/src/main/java/org/iotivity/base/OcPlatform.java [moved from java/iotivity-linux/src/main/java/org/iotivity/base/OcPlatform.java with 99% similarity]
java/iotivity-java/src/main/java/org/iotivity/base/PlatformConfig.java [moved from java/iotivity-linux/src/main/java/org/iotivity/base/PlatformConfig.java with 100% similarity]
java/iotivity-java/src/main/java/org/iotivity/ca/CaInterface.java [moved from java/iotivity-linux/src/main/java/org/iotivity/ca/CaInterface.java with 100% similarity]
java/iotivity-java/src/main/java/org/iotivity/ca/CaIpInterface.java [moved from java/iotivity-linux/src/main/java/org/iotivity/ca/CaIpInterface.java with 100% similarity]
java/jni/JniCaInterface.c
java/jni/JniOcPlatform.cpp
java/jni/JniOcProvisioning.cpp
java/jni/JniOcRDClient.cpp
java/jni/JniOcRepresentation.cpp
java/jni/JniOcRepresentation.h
java/jni/JniOcResource.cpp
java/jni/JniOcSecureResource.cpp
java/jni/JniOcStack.cpp
java/jni/JniSecureUtils.cpp
java/jni/JniUtils.cpp
java/jni/SConscript
resource/csdk/connectivity/src/adapter_util/caadapterutils.c
resource/src/SConscript
run.bat

index f9e61d5..cbf2720 100644 (file)
@@ -21,16 +21,22 @@ rd_mode = env.get('RD_MODE')
 if target_os == 'android':
     if target_arch == 'armeabi-v7a-hard':
         target_arch = 'armeabi-v7a'
-    env.AppendUnique(CCFLAGS=['-D__JAVA__'])
+    env.AppendUnique(CPPDEFINES=['__JAVA__'])
 
 if target_os == 'darwin':
-    env.AppendUnique(CPPPATH=['/usr/local/include'])
-    env.AppendUnique(LIBPATH=['/usr/local/lib'])
+    env.AppendUnique(CPPPATH = ['/usr/local/include'])
+    env.AppendUnique(LIBPATH = ['/usr/local/lib'])
 
 if env.get('BUILD_JAVA') == True and target_os != 'android':
     if env.get('JAVA_HOME') != None:
-        env.AppendUnique(CCFLAGS=['-D__JAVA__'])
-        env.AppendUnique(CPPPATH=[
+        env.AppendUnique(CPPDEFINES=['__JAVA__'])
+        if target_os in ['windows', 'winrt']:
+            env.AppendUnique(CPPPATH=[
+            env.get('JAVA_HOME') + '/include',
+            env.get('JAVA_HOME') + '/include/win32'
+            ])
+        else:
+            env.AppendUnique(CPPPATH=[
             env.get('JAVA_HOME') + '/include',
             env.get('JAVA_HOME') + '/include/' + target_os
         ])
@@ -41,13 +47,8 @@ if env.get('BUILD_JAVA') == True and target_os != 'android':
 # External library include files are in <src_dir>/deps/<target_os>/include
 # the library binaries are in <src_dir>/deps/<target_os>/lib/<arch>
 if target_os not in ['windows']:
-    env.AppendUnique(CPPPATH=[
-        os.path.join(env.get('SRC_DIR'), 'deps', target_os, 'include')
-    ])
-    env.AppendUnique(LIBPATH=[
-        os.path.join(
-            env.get('SRC_DIR'), 'deps', target_os, 'lib', target_arch)
-    ])
+    env.AppendUnique(CPPPATH = [os.path.join(env.get('SRC_DIR'), 'deps', target_os, 'include')])
+    env.AppendUnique(LIBPATH = [os.path.join(env.get('SRC_DIR'), 'deps', target_os, 'lib', target_arch)])
 
 # tinycbor build/fetch
 SConscript(os.path.join(env.get('SRC_DIR'), 'extlibs', 'tinycbor', 'SConscript'))
index 2f23dd2..2b144da 100644 (file)
@@ -4,6 +4,28 @@
 Import('env')
 import os.path
 
+help_vars = Variables()
+if env.get('BUILD_JAVA') == True:
+    if not env.get('ANDROID_GRADLE'):
+        SConscript('../../extlibs/android/gradle/SConscript')
+        help_vars.Add(PathVariable('ANDROID_GRADLE', 'Android Gradle directory', os.path.join(env.get('SRC_DIR'), 'extlibs', 'android', 'gradle', 'gradle-2.2.1/bin/gradle')))
+
+    if env.get('ANDROID_GRADLE'):
+        android_gradle = env.get('ANDROID_GRADLE')
+    else:
+        print(
+'''
+*************************************** Info **********************************
+*    Android Gradle path isn't set, the default will be used. You can set     *
+* environment variable ANDROID_GRADLE or add it in command line as:           *
+*      # scons ANDROID_GRADLE=<path to android GRADLE> ...                    *
+*******************************************************************************
+''')
+        android_gradle = os.path.join(env.get('SRC_DIR'), 'extlibs', 'android', 'gradle', 'gradle-2.2.1', 'bin', 'gradle')
+
+help_vars.Update(env)
+Help(help_vars.GenerateHelpText(env))
+
 # Set common flags
 if env['CC'] == 'cl':
     if env.get('UWP_APP') == '1':
index 4f4b9c1..15b8f21 100644 (file)
@@ -6,8 +6,6 @@ env = env.Clone()
 ndk_env = env.Clone()
 
 target_os = env.get('TARGET_OS')
-host_os = sys.platform
-print host_os
 ######################################################################
 # Build flags
 ######################################################################
@@ -21,8 +19,8 @@ if not os.path.exists(path):
         'gradle2.2.1.zip',
         'https://services.gradle.org/distributions/gradle-2.2.1-all.zip')
     gradle_dir = env.UnpackAll('gradle-2.2.1', gradle_zip)
-    print '''
+    print( '''
 ***********************************************************************
-* Downloading gradle:                    *
-*******************************************************************************
-'''
+* Downloading gradle:                                                 *
+***********************************************************************
+''')
index 1f11049..aa3321a 100644 (file)
@@ -63,7 +63,8 @@ if target_os == "android":
     os.environ['ANDROID_NDK_HOME'] = env.get('ANDROID_NDK')
     if not os.path.exists(android_home + '/platforms/android-21') or \
        not os.path.exists(android_home + '/build-tools/20.0.0'):
-        print '''
+        print(
+'''
 ***************************************** Info ********************************
 *   Either 'Android API 21' is not installed or 'Android SDK Build Tools      *
 *   20.0.0' is not installed. The Android SDK Manager will now open. Please   *
@@ -88,27 +89,30 @@ if target_os == "android":
 *******************************************************************************
 
 ...Opening Android SDK Manager now. Once you are finished, the build will continue.
-'''
+''')
         os.system(android_home + '/tools/android')
 
 
 def ensure_libs(target, source, env):
-    return target, [
-        source,
-        env.get('BUILD_DIR') + 'libca-interface.so',
-        env.get('BUILD_DIR') + 'liboc.so',
-        env.get('BUILD_DIR') + 'liboc_logger.so',
-        env.get('BUILD_DIR') + 'libocstack-jni.so'
-    ]
+    if platform.system() == 'Windows':
+        return target, [source, env.get('BUILD_DIR') + 'ca-interface.dll', 
+                                env.get('BUILD_DIR') + 'ocstack-jni.dll']
+    else:
+        return target, [source, env.get('BUILD_DIR') + 'libca-interface.so',
+                                env.get('BUILD_DIR') + 'libocstack-jni.so']
 
 
 jniOut = SConscript('jni/SConscript')
 
+target_variant = "java"
+if target_os == 'android':
+    target_variant = "android"
+
 jdk_env = Environment(ENV=os.environ)
 jdk_env['BUILDERS']['Gradle'] = Builder(
     action=env.get('ANDROID_GRADLE') + ' build -b ' + env.get('SRC_DIR') +
     '/java/iotivity-%s/build.gradle -PPROJECT_VERSION=%s -PWITH_TRANSPORT_EDR=%s -PWITH_TRANSPORT_BLE=%s -PWITH_TRANSPORT_NFC=%s -PTARGET_ARCH=%s -PRELEASE=%s -PSECURED=%s -DSECURE=%s -PWITH_CLOUD=%s -PRD_MODE=%s -PWITH_MQ_PUB=%s -PWITH_MQ_SUB=%s -PWITH_MQ_BROKER=%s -PWITH_TCP=%s -PMULTIPLE_OWNER=%s -PBUILD_DIR=%s --stacktrace'
-    % (target_os, PROJECT_VERSION, TRANSPORT_EDR, TRANSPORT_BLE, TRANSPORT_NFC,
+    % (target_variant, PROJECT_VERSION, TRANSPORT_EDR, TRANSPORT_BLE, TRANSPORT_NFC,
        TARGET_ARCH, RELEASE, SECURED, SECURED, CLOUD, RD_MODE, MQ_PUB, MQ_SUB,
        MQ_BROKER, TCP, ANDROID_MULTIPLE_OWNER, env.get('BUILD_DIR')),
     emitter=ensure_libs)
@@ -117,22 +121,19 @@ cmdBuildApi = jdk_env.Gradle(
     target="base/objs",
     source="common/src/main/java/org/iotivity/base/OcResource.java")
 
-examples_target = "java"
-if target_os == 'android':
-    examples_target = "android"
 jdk_env['BUILDERS']['Gradle'] = Builder(
     action=env.get('ANDROID_GRADLE') + ' build -b ' +
     'java/examples-%s/build.gradle -PPROJECT_VERSION=%s -DWITH_TRANSPORT_EDR=%s -DWITH_TRANSPORT_BLE=%s -DWITH_TRANSPORT_NFC=%s -PTARGET_OS=%s -PTARGET_ARCH=%s -PRELEASE=%s -PSECURED=%s -DSECURE=%s -PWITH_CLOUD=%s -PRD_MODE=%s -PWITH_MQ_PUB=%s -PWITH_MQ_SUB=%s -PWITH_MQ_BROKER=%s -PWITH_TCP=%s -PMULTIPLE_OWNER=%s -PBUILD_DIR=%s --stacktrace'
-    % (examples_target, PROJECT_VERSION, TRANSPORT_EDR, TRANSPORT_BLE,
+    % (target_variant, PROJECT_VERSION, TRANSPORT_EDR, TRANSPORT_BLE,
        TRANSPORT_NFC, target_os, TARGET_ARCH, RELEASE, SECURED, SECURED, CLOUD,
        RD_MODE, MQ_PUB, MQ_SUB, MQ_BROKER, TCP, ANDROID_MULTIPLE_OWNER,
        env.get('BUILD_DIR')))
-#cmdBuildExamples=jdk_env.Gradle(target="../examples-%s/devicediscoveryclient/apk" % (examples_target, ), source="examples-%s/devicediscoveryclient/src/main/java/org/iotivity/base/examples/DeviceDiscoveryClient.java" % (examples_target, ))
+#cmdBuildExamples=jdk_env.Gradle(target="../examples-%s/devicediscoveryclient/apk" % (target_variant, ), source="examples-%s/devicediscoveryclient/src/main/java/org/iotivity/base/examples/DeviceDiscoveryClient.java" % (target_variant, ))
 cmdBuildExamples = jdk_env.Gradle(
-    target="examples-%s/simpleclient/jar" % (examples_target, ),
+    target="examples-%s/simpleclient/jar" % (target_variant, ),
     source=
     "examples-%s/simpleclient/src/main/java/org/iotivity/base/examples/SimpleClient.java"
-    % (examples_target, ))
+    % (target_variant, ))
 
 if target_os != 'android':
     exampleAclFiles = jdk_env.Install(
index bed9eb7..89fc4b5 100644 (file)
@@ -33,7 +33,6 @@ import java.util.Map;
 public class OcRepresentation {
 
     static {
-        System.loadLibrary("oc");
         System.loadLibrary("ocstack-jni");
     }
 
index b078061..80a3235 100644 (file)
@@ -30,7 +30,6 @@ import java.util.List;
 public class OcResourceResponse {
 
     static {
-        System.loadLibrary("oc");
         System.loadLibrary("ocstack-jni");
     }
 
index 8b82b2b..5f5a666 100755 (executable)
@@ -17,6 +17,6 @@ allprojects {
         jcenter()\r
     }\r
     dependencies {\r
-        compile fileTree(dir: "../../iotivity-$TARGET_OS/build/libs/", include: '*.jar')\r
+        compile fileTree(dir: "../../iotivity-java/build/libs/", include: '*.jar')\r
     }\r
 }\r
index 3276103..5eea4ec 100644 (file)
@@ -37,10 +37,6 @@ public final class OcPlatform {
 
     static {
         System.loadLibrary("gnustl_shared");
-        System.loadLibrary("connectivity_abstraction");
-        System.loadLibrary("oc_logger");
-        System.loadLibrary("octbstack");
-        System.loadLibrary("oc");
         if (0 != BuildConfig.SECURED)
         {
             System.loadLibrary("ocprovision");
index 5cad309..310ac42 100644 (file)
@@ -30,7 +30,6 @@ import org.iotivity.base.OcConnectivityType;
 
 public class CaInterface {
     static {
-        System.loadLibrary("connectivity_abstraction");
         System.loadLibrary("ca-interface");
     }
     private static volatile boolean isConnectionManagerInitialized = false;
diff --git a/java/iotivity-java/settings.gradle b/java/iotivity-java/settings.gradle
new file mode 100644 (file)
index 0000000..2fd480c
--- /dev/null
@@ -0,0 +1,23 @@
+/*
+ *******************************************************************
+ *
+ * Copyright 2017 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.
+ *
+ *-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
+ */
+
+ rootProject.name='iotivity'
\ No newline at end of file
@@ -36,9 +36,6 @@ import java.util.List;
 public final class OcPlatform {
 
     static {
-        System.loadLibrary("oc_logger");
-        System.loadLibrary("octbstack");
-        System.loadLibrary("oc");
         System.loadLibrary("ocstack-jni");
     }
 
index bba7597..a5d39f9 100644 (file)
@@ -20,6 +20,7 @@
 #include <jni.h>
 #include "logger.h"
 #include <stdio.h>
+#include "caadapterutils.h"
 #include "cainterface.h"
 #include "JniCaInterface.h"
 #include "cautilinterface.h"
@@ -35,17 +36,22 @@ static JavaVM *g_jvm = NULL;
 static jclass g_jni_cls_enum = NULL;
 static jmethodID g_jni_mid_enum = NULL;
 
-JNIEXPORT jint JNI_OnLoad(JavaVM *jvm, void *reserved)
+JNIEXPORT jint JNICALL
+JNI_OnLoad(JavaVM *jvm, void *reserved)
 {
-    LOGI("JNI_OnLoad");
+    OC_UNUSED(reserved);
+    LOGI("CaInterface_initialize");
     g_jvm = jvm;
     CANativeJNISetJavaVM(jvm);
 
     return JNI_VERSION_1_6;
 }
 
-void JNI_OnUnload(JavaVM *jvm, void *reserved)
+JNIEXPORT void JNICALL
+JNI_OnUnload(JavaVM *jvm, void *reserved)
 {
+    OC_UNUSED(jvm);
+    OC_UNUSED(reserved);
     return;
 }
 
@@ -61,9 +67,10 @@ Java_org_iotivity_ca_CaInterface_initialize
 }
 #else
 JNIEXPORT void JNICALL
-Java_org_iotivity_ca_CaInterface_initialize
-(JNIEnv *env, jclass clazz)
+Java_org_iotivity_ca_CaInterface_initialize(JNIEnv *env, jclass clazz)
 {
+    OC_UNUSED(env);
+    OC_UNUSED(clazz);
     LOGI("CaInterface_initialize");
 }
 #endif
@@ -244,7 +251,8 @@ JNIEXPORT void JNICALL
 Java_org_iotivity_ca_CaInterface_caManagerInitialize(JNIEnv *env, jclass clazz,
                                                      jobject listener)
 {
-    LOGI("CaManager_initialize");
+    OC_UNUSED(clazz);
+    LOGI("CaManagere_initialize");
 
     g_listenerObject = (*env)->NewGlobalRef(env, listener);
 
@@ -256,6 +264,7 @@ Java_org_iotivity_ca_CaInterface_caManagerInitialize(JNIEnv *env, jclass clazz,
 JNIEXPORT void JNICALL
 Java_org_iotivity_ca_CaInterface_caManagerTerminate(JNIEnv *env, jclass clazz)
 {
+    OC_UNUSED(clazz);
     LOGI("CaManager_terminate");
 
     CAUtilClientTerminate(env);
@@ -285,6 +294,7 @@ Java_org_iotivity_ca_CaInterface_caManagerSetAutoConnectionDeviceInfo(JNIEnv *en
                                                                       jclass clazz,
                                                                       jstring jaddress)
 {
+    OC_UNUSED(clazz);
     LOGI("CaManager_setAutoConnectionDeviceInfo");
     if (!jaddress)
     {
@@ -309,6 +319,7 @@ Java_org_iotivity_ca_CaInterface_caManagerUnsetAutoConnectionDeviceInfo(JNIEnv *
                                                                         jclass clazz,
                                                                         jstring jaddress)
 {
+    OC_UNUSED(clazz);
     LOGI("CaManager_unsetAutoConnectionDeviceInfo");
     if (!jaddress)
     {
@@ -445,7 +456,7 @@ JNIEXPORT jint JNICALL Java_org_iotivity_ca_CaInterface_setCipherSuiteImpl
     LOGI("setCipherSuiteImpl");
     (void)env;
     (void)clazz;
-    CAResult_t ret = CASelectCipherSuite(cipherSuite, (CATransportAdapter_t) adapter);
+    CAResult_t ret = CASelectCipherSuite((uint16_t)cipherSuite, (CATransportAdapter_t) adapter);
     if (CA_STATUS_OK != ret)
     {
         LOGE("CASelectCipherSuite has failed");
index 291e44f..f022bad 100644 (file)
@@ -18,6 +18,7 @@
 //
 //-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
 
+#include <climits>
 #include "JniOcPlatform.h"
 #include "OCPlatform.h"
 #include "JniOcResource.h"
@@ -619,6 +620,7 @@ JNIEXPORT void JNICALL Java_org_iotivity_base_OcPlatform_configure
 (JNIEnv *env, jclass clazz, jint jServiceType, jint jModeType, jstring jIpAddress, jint jPort,
  jint jQOS, jstring jDbPath, jint jTransport)
 {
+    OC_UNUSED(clazz);
     LOGI("OcPlatform_configure");
 
     std::string ipAddress;
@@ -658,6 +660,7 @@ JNIEXPORT void JNICALL Java_org_iotivity_base_OcPlatform_configure
 JNIEXPORT void JNICALL Java_org_iotivity_base_OcPlatform_stop
 (JNIEnv *env, jclass clazz)
 {
+    OC_UNUSED(clazz);
     LOGI("OcPlatform.stop");
 
     try {
@@ -683,6 +686,7 @@ JNIEXPORT void JNICALL Java_org_iotivity_base_OcPlatform_stop
 JNIEXPORT void JNICALL Java_org_iotivity_base_OcPlatform_start
 (JNIEnv *env, jclass clazz)
 {
+    OC_UNUSED(clazz);
     LOGI("OcPlatform.start");
 
     try {
@@ -708,6 +712,7 @@ JNIEXPORT void JNICALL Java_org_iotivity_base_OcPlatform_start
 JNIEXPORT void JNICALL Java_org_iotivity_base_OcPlatform_notifyAllObservers0
 (JNIEnv *env, jclass clazz, jobject jResourceHandle)
 {
+    OC_UNUSED(clazz);
     LOGI("OcPlatform_notifyAllObservers");
     if (!jResourceHandle)
     {
@@ -748,6 +753,7 @@ JNIEXPORT void JNICALL Java_org_iotivity_base_OcPlatform_notifyAllObservers0
 JNIEXPORT void JNICALL Java_org_iotivity_base_OcPlatform_notifyAllObservers1
 (JNIEnv *env, jclass clazz, jobject jResourceHandle, jint jQoS)
 {
+    OC_UNUSED(clazz);
     LOGI("OcPlatform_notifyAllObservers1");
 
     if (!jResourceHandle)
@@ -793,6 +799,7 @@ JNIEXPORT void JNICALL Java_org_iotivity_base_OcPlatform_notifyListOfObservers2(
     jbyteArray jObservationIdArr,
     jobject jResourceResponse)
 {
+    OC_UNUSED(clazz);
     LOGD("OcPlatform_notifyListOfObservers2");
     if (!jResourceHandle)
     {
@@ -867,6 +874,7 @@ JNIEXPORT void JNICALL Java_org_iotivity_base_OcPlatform_notifyListOfObservers3(
     jobject jResourceResponse,
     jint jQoS)
 {
+    OC_UNUSED(clazz);
     LOGD("OcPlatform_notifyListOfObservers3");
     if (!jResourceHandle)
     {
@@ -942,6 +950,7 @@ JNIEXPORT void JNICALL Java_org_iotivity_base_OcPlatform_findResource0(
     jint jConnectivityType,
     jobject jListener)
 {
+    OC_UNUSED(clazz);
     LOGD("OcPlatform_findResource");
     std::string host;
     if (jHost)
@@ -1007,6 +1016,7 @@ JNIEXPORT void JNICALL Java_org_iotivity_base_OcPlatform_findResource1(
     jobject jListener,
     jint jQoS)
 {
+    OC_UNUSED(clazz);
     LOGD("OcPlatform_findResource");
     std::string host;
     if (jHost)
@@ -1071,6 +1081,7 @@ JNIEXPORT void JNICALL Java_org_iotivity_base_OcPlatform_findResources0(
     jint jConnectivityType,
     jobject jListener)
 {
+    OC_UNUSED(clazz);
     LOGD("OcPlatform_findResources0");
     if (!jListener)
     {
@@ -1156,6 +1167,7 @@ JNIEXPORT void JNICALL Java_org_iotivity_base_OcPlatform_findResources1(
     jobject jListener,
     jint jQoS)
 {
+    OC_UNUSED(clazz);
     LOGD("OcPlatform_findResources1");
     if (!jListener)
     {
@@ -1235,8 +1247,13 @@ JNIEXPORT void JNICALL Java_org_iotivity_base_OcPlatform_findResources1(
 JNIEXPORT void JNICALL Java_org_iotivity_base_OcPlatform_findDirectPairingDevices
   (JNIEnv * env, jclass clazz, jint jTimeout, jobject jListener)
 {
+    OC_UNUSED(clazz);
     LOGD("OcPlatform_findDirectPairingDevices");
-
+    if (jTimeout > USHRT_MAX)
+    {
+        ThrowOcException(OC_STACK_INVALID_PARAM, "timeout exceeds max timeout.");
+        return;
+    }
     if (!jListener)
     {
         ThrowOcException(OC_STACK_INVALID_PARAM, "onDPDevicesFoundListener cannot be null");
@@ -1252,10 +1269,11 @@ JNIEXPORT void JNICALL Java_org_iotivity_base_OcPlatform_findDirectPairingDevice
                     DPFunc::FIND_DIRECT_PAIRED_DEV_LIST);
         };
 
+
     try
     {
-        OCStackResult result = OCPlatform::findDirectPairingDevices(jTimeout,
-                getDirectPairedCallback);
+        OCStackResult result = OCPlatform::findDirectPairingDevices(
+                static_cast<unsigned short>(jTimeout), getDirectPairedCallback);
         if (OC_STACK_OK != result)
         {
             ThrowOcException(result, "OCPlatform::findDirectPairingDevices has failed");
@@ -1277,6 +1295,7 @@ JNIEXPORT void JNICALL Java_org_iotivity_base_OcPlatform_findDirectPairingDevice
 JNIEXPORT void JNICALL Java_org_iotivity_base_OcPlatform_getDirectPairedDevices
 (JNIEnv *env, jclass jclazz, jobject jListener)
 {
+    OC_UNUSED(jclazz);
     LOGD("OcPlatform_getDirectPairedDevices");
 
     if (!jListener)
@@ -1319,6 +1338,7 @@ JNIEXPORT void JNICALL Java_org_iotivity_base_OcPlatform_getDirectPairedDevices
 JNIEXPORT void JNICALL Java_org_iotivity_base_OcPlatform_doDirectPairing0
 (JNIEnv *env, jclass clazz, jobject jpeer, jint jprmType, jstring jpin, jobject jListener)
 {
+    OC_UNUSED(clazz);
     LOGD("OcPlatform_doDirectPairing");
 
     if (!jListener)
@@ -1379,6 +1399,7 @@ JNIEXPORT void JNICALL Java_org_iotivity_base_OcPlatform_getDeviceInfo0(
     jint jConnectivityType,
     jobject jListener)
 {
+    OC_UNUSED(clazz);
     LOGD("OcPlatform_getDeviceInfo0");
     std::string host;
     if (jHost)
@@ -1437,6 +1458,7 @@ JNIEXPORT void JNICALL Java_org_iotivity_base_OcPlatform_getDeviceInfo1(
     jobject jListener,
     jint jQoS)
 {
+    OC_UNUSED(clazz);
     LOGD("OcPlatform_getDeviceInfo1");
     std::string host;
     if (jHost)
@@ -1495,6 +1517,7 @@ JNIEXPORT void JNICALL Java_org_iotivity_base_OcPlatform_getPlatformInfo0(
     jint jConnectivityType,
     jobject jListener)
 {
+    OC_UNUSED(clazz);
     LOGD("OcPlatform_getPlatformInfo0");
     std::string host;
     if (jHost)
@@ -1553,6 +1576,7 @@ JNIEXPORT void JNICALL Java_org_iotivity_base_OcPlatform_getPlatformInfo1(
     jobject jListener,
     jint jQoS)
 {
+    OC_UNUSED(clazz);
     LOGD("OcPlatform_getPlatformInfo1");
     std::string host;
     if (jHost)
@@ -1606,6 +1630,7 @@ JNIEXPORT void JNICALL Java_org_iotivity_base_OcPlatform_getPlatformInfo1(
 JNIEXPORT jobject JNICALL Java_org_iotivity_base_OcPlatform_registerResource0(
     JNIEnv *env, jclass clazz, jobject jResource)
 {
+    OC_UNUSED(clazz);
     LOGD("OcPlatform_registerResource");
     if (!jResource)
     {
@@ -1662,6 +1687,7 @@ JNIEXPORT jobject JNICALL Java_org_iotivity_base_OcPlatform_registerResource1(
     jstring jResourceInterface,
 jobject jListener, jint jResourceProperty)
 {
+    OC_UNUSED(clazz);
     LOGI("OcPlatform_registerResource1");
     std::string resourceUri;
     if (jResourceUri)
@@ -1699,7 +1725,9 @@ jobject jListener, jint jResourceProperty)
             resourceTypeName,
             resourceInterface,
             handleEntityCallback,
-            static_cast<int>(jResourceProperty));
+            // jResoruceProperty comes from an enum and should always fit in
+            // uint8_t see ResourceProperty.java
+            static_cast<uint8_t>(jResourceProperty));
 
         if (OC_STACK_OK != result)
         {
@@ -1740,6 +1768,7 @@ JNIEXPORT void JNICALL Java_org_iotivity_base_OcPlatform_registerDeviceInfo0(
     jstring jDeviceName,
     jobjectArray jDeviceTypes)
 {
+    OC_UNUSED(clazz);
     LOGI("OcPlatform_registerDeviceInfo");
 
     if (!jDeviceName)
@@ -1783,6 +1812,8 @@ JNIEXPORT void JNICALL Java_org_iotivity_base_OcPlatform_registerDeviceInfo0(
     }
     catch (std::exception &e)
     {
+        OC_UNUSED(e);
+        LOGE("%s", e.what());
         ThrowOcException(JNI_EXCEPTION, "Failed to construct device info");
         return;
     }
@@ -1826,6 +1857,7 @@ JNIEXPORT void JNICALL Java_org_iotivity_base_OcPlatform_registerPlatformInfo0(
     jstring jSupportUrl,
     jstring jSystemTime)
 {
+    OC_UNUSED(clazz);
     LOGI("OcPlatform_registerPlatformInfo");
 
 
@@ -1903,6 +1935,8 @@ JNIEXPORT void JNICALL Java_org_iotivity_base_OcPlatform_registerPlatformInfo0(
         }
         catch (std::exception &e)
         {
+            OC_UNUSED(e);
+            LOGE("%s", e.what());
             ThrowOcException(JNI_EXCEPTION, "Failed to construct platform info");
             return;
         }
@@ -1944,6 +1978,7 @@ JNIEXPORT void JNICALL Java_org_iotivity_base_OcPlatform_registerPlatformInfo0(
 JNIEXPORT void JNICALL Java_org_iotivity_base_OcPlatform_setPropertyValue0
     (JNIEnv *env, jclass clazz, jint jType, jstring jPropName, jobjectArray jPropValue)
 {
+    OC_UNUSED(clazz);
     try
     {
         OCPayloadType type = (OCPayloadType)jType;
@@ -1980,6 +2015,7 @@ JNIEXPORT void JNICALL Java_org_iotivity_base_OcPlatform_setPropertyValue0
 JNIEXPORT void JNICALL Java_org_iotivity_base_OcPlatform_setPropertyValue1
     (JNIEnv *env, jclass clazz, jint jType, jstring jPropName, jstring jPropValue)
 {
+    OC_UNUSED(clazz);
     try
     {
         OCPayloadType type = (OCPayloadType)jType;
@@ -2015,6 +2051,7 @@ JNIEXPORT void JNICALL Java_org_iotivity_base_OcPlatform_setPropertyValue1
 JNIEXPORT jstring JNICALL Java_org_iotivity_base_OcPlatform_getPropertyValue0
     (JNIEnv *env, jclass clazz, jint jType, jstring jPropName)
 {
+    OC_UNUSED(clazz);
     try
     {
         OCPayloadType type = (OCPayloadType) jType;
@@ -2049,6 +2086,7 @@ JNIEXPORT jstring JNICALL Java_org_iotivity_base_OcPlatform_getPropertyValue0
 JNIEXPORT void JNICALL Java_org_iotivity_base_OcPlatform_unregisterResource0(
     JNIEnv *env, jclass clazz, jobject jResourceHandle)
 {
+    OC_UNUSED(clazz);
     LOGI("OcPlatform_unregisterResource");
     if (!jResourceHandle)
     {
@@ -2086,6 +2124,7 @@ JNIEXPORT void JNICALL Java_org_iotivity_base_OcPlatform_unregisterResource0(
 JNIEXPORT void JNICALL Java_org_iotivity_base_OcPlatform_bindResource0
 (JNIEnv *env, jclass clazz, jobject jResourceCollectionHandle, jobject jResourceHandle)
 {
+    OC_UNUSED(clazz);
     LOGI("OcPlatform_bindResource");
     if (!jResourceCollectionHandle)
     {
@@ -2141,6 +2180,7 @@ JNIEXPORT void JNICALL Java_org_iotivity_base_OcPlatform_bindResources0(
     jobject jResourceCollectionHandle,
     jobjectArray jResourceHandleArray)
 {
+    OC_UNUSED(clazz);
     LOGI("OcPlatform_bindResources");
 
     if (!jResourceCollectionHandle)
@@ -2213,6 +2253,7 @@ JNIEXPORT void JNICALL Java_org_iotivity_base_OcPlatform_unbindResource0(
     jobject jResourceCollectionHandle,
     jobject jResourceHandle)
 {
+    OC_UNUSED(clazz);
     LOGI("OcPlatform_unbindResource");
     if (!jResourceCollectionHandle)
     {
@@ -2268,6 +2309,7 @@ JNIEXPORT void JNICALL Java_org_iotivity_base_OcPlatform_unbindResources0(
     jobject jResourceCollectionHandle,
     jobjectArray jResourceHandleArray)
 {
+    OC_UNUSED(clazz);
     LOGI("OcPlatform_unbindResources");
     if (!jResourceCollectionHandle)
     {
@@ -2339,6 +2381,7 @@ JNIEXPORT void JNICALL Java_org_iotivity_base_OcPlatform_bindTypeToResource0(
     jobject jResourceHandle,
     jstring jResourceTypeName)
 {
+    OC_UNUSED(clazz);
     LOGI("OcPlatform_bindTypeToResource");
     if (!jResourceHandle)
     {
@@ -2385,6 +2428,7 @@ JNIEXPORT void JNICALL Java_org_iotivity_base_OcPlatform_bindTypeToResource0(
 JNIEXPORT void JNICALL Java_org_iotivity_base_OcPlatform_bindInterfaceToResource0
 (JNIEnv *env, jclass clazz, jobject jResourceHandle, jstring jResourceInterfaceName)
 {
+    OC_UNUSED(clazz);
     LOGI("OcPlatform_bindInterfaceToResource");
     if (!jResourceHandle)
     {
@@ -2431,6 +2475,7 @@ JNIEXPORT void JNICALL Java_org_iotivity_base_OcPlatform_bindInterfaceToResource
 JNIEXPORT void JNICALL Java_org_iotivity_base_OcPlatform_startPresence0(
     JNIEnv *env, jclass clazz, jint ttl)
 {
+    OC_UNUSED(clazz);
     LOGI("OcPlatform_startPresence");
 
     try
@@ -2457,6 +2502,7 @@ JNIEXPORT void JNICALL Java_org_iotivity_base_OcPlatform_startPresence0(
 JNIEXPORT void JNICALL Java_org_iotivity_base_OcPlatform_stopPresence0(
     JNIEnv *env, jclass clazz)
 {
+    OC_UNUSED(clazz);
     LOGI("OcPlatform_stopPresence");
 
     try
@@ -2487,6 +2533,7 @@ JNIEXPORT jobject JNICALL Java_org_iotivity_base_OcPlatform_subscribePresence0(
     jint jConnectivityType,
     jobject jListener)
 {
+    OC_UNUSED(clazz);
     LOGD("OcPlatform_subscribePresence");
     std::string host;
     if (jHost)
@@ -2557,6 +2604,7 @@ JNIEXPORT jobject JNICALL Java_org_iotivity_base_OcPlatform_subscribePresence1(
     jint jConnectivityType,
     jobject jListener)
 {
+    OC_UNUSED(clazz);
     LOGD("OcPlatform_subscribePresence1");
     std::string host;
     if (jHost)
@@ -2625,6 +2673,7 @@ JNIEXPORT jobject JNICALL Java_org_iotivity_base_OcPlatform_subscribePresence1(
 JNIEXPORT void JNICALL Java_org_iotivity_base_OcPlatform_unsubscribePresence0(
     JNIEnv *env, jclass clazz, jobject jPresenceHandle)
 {
+    OC_UNUSED(clazz);
     LOGD("OcPlatform_unsubscribePresence");
     if (!jPresenceHandle)
     {
@@ -2681,6 +2730,7 @@ JNIEXPORT jobject JNICALL Java_org_iotivity_base_OcPlatform_subscribeDevicePrese
     jint jConnectivityType,
     jobject jListener)
 {
+    OC_UNUSED(clazz);
     LOGD("OcPlatform_subscribeDevicePresence0");
 #ifdef WITH_CLOUD
     std::string host;
@@ -2746,6 +2796,11 @@ JNIEXPORT jobject JNICALL Java_org_iotivity_base_OcPlatform_subscribeDevicePrese
     }
     return jPresenceHandle;
 #else
+    OC_UNUSED(env);
+    OC_UNUSED(jHost);
+    OC_UNUSED(jDiArray);
+    OC_UNUSED(jConnectivityType);
+    OC_UNUSED(jListener);
     ThrowOcException(JNI_NO_SUPPORT, "Not supported");
     return nullptr;
 #endif
@@ -2767,6 +2822,7 @@ JNIEXPORT jobject JNICALL Java_org_iotivity_base_OcPlatform_constructResourceObj
     jobjectArray jResourceTypeArray,
     jobjectArray jInterfaceArray)
 {
+    OC_UNUSED(clazz);
     LOGD("OcPlatform_constructResourceObject");
     std::string host;
     if (jHost)
@@ -2799,7 +2855,7 @@ JNIEXPORT jobject JNICALL Java_org_iotivity_base_OcPlatform_constructResourceObj
         host,
         uri,
         static_cast<OCConnectivityType>(jConnectivityType),
-        static_cast<bool>(jIsObservable),
+        (jIsObservable != 0),
         resourceTypes,
         interfaces);
 
@@ -2834,6 +2890,7 @@ JNIEXPORT jobject JNICALL Java_org_iotivity_base_OcPlatform_constructResourceObj
 JNIEXPORT void JNICALL Java_org_iotivity_base_OcPlatform_sendResponse0(
     JNIEnv *env, jclass clazz, jobject jResourceResponse)
 {
+    OC_UNUSED(clazz);
     LOGD("OcPlatform_sendResponse");
     if (!jResourceResponse)
     {
@@ -2876,7 +2933,11 @@ JNIEXPORT jobject JNICALL Java_org_iotivity_base_OcPlatform_constructAccountMana
     jstring jHost,
     jint jConnectivityType)
 {
+    OC_UNUSED(clazz);
 #ifndef WITH_CLOUD
+    OC_UNUSED(env);
+    OC_UNUSED(jHost);
+    OC_UNUSED(jConnectivityType);
     ThrowOcException(OC_STACK_ERROR,
                      "OCAccountManager is not supported. (Please build with WITH_CLOUD=1 option)");
     return nullptr;
@@ -2933,6 +2994,7 @@ JNIEXPORT jobject JNICALL Java_org_iotivity_base_OcPlatform_constructAccountMana
 JNIEXPORT jbyteArray JNICALL Java_org_iotivity_base_OcPlatform_getDeviceId
 (JNIEnv *env, jobject thiz)
 {
+    OC_UNUSED(thiz);
     LOGD("OcPlatform_getDeviceId");
     OCUUIdentity deviceId;
 
@@ -2975,6 +3037,7 @@ JNIEXPORT jbyteArray JNICALL Java_org_iotivity_base_OcPlatform_getDeviceId
 JNIEXPORT void JNICALL Java_org_iotivity_base_OcPlatform_setDeviceId(
     JNIEnv *env, jobject thiz, jbyteArray data)
 {
+    OC_UNUSED(thiz);
     LOGI("OcPlatform_setDeviceId");
     OCUUIdentity deviceId;
     try
@@ -3014,6 +3077,7 @@ JNIEXPORT void JNICALL Java_org_iotivity_base_OcPlatform_setDeviceId(
 JNIEXPORT jstring JNICALL Java_org_iotivity_base_OcPlatform_getIoTivityVersion(
     JNIEnv *env, jclass thiz)
 {
+    OC_UNUSED(thiz);
     LOGI("OcPlatform_getIoTivityVersion");
     return env->NewStringUTF(IOTIVITY_VERSION);
 }
index abe51b8..151a3f1 100644 (file)
@@ -28,6 +28,7 @@
 #include "oxmverifycommon.h"
 #include "JniDisplayVerifyNumListener.h"
 #include "JniConfirmNumListener.h"
+#include <climits>
 
 using namespace OC;
 namespace PH = std::placeholders;
@@ -37,7 +38,7 @@ static JniDisplayPinListener *jniDisplayPinListener = nullptr;
 static JniDisplayVerifyNumListener *jniDisplayMutualVerifyNumListener = nullptr;
 static JniConfirmNumListener *jniConfirmMutualVerifyNumListener = nullptr;
 
-void Callback(char *buf, size_t size)
+void JNICALL Callback(char *buf, size_t size)
 {
     if (jniPinListener)
     {
@@ -49,7 +50,7 @@ void Callback(char *buf, size_t size)
     }
 }
 
-void displayPinCB(char *pinBuf, size_t pinSize)
+void JNICALL displayPinCB(char *pinBuf, size_t pinSize)
 {
     if (jniDisplayPinListener)
     {
@@ -101,6 +102,7 @@ OCStackResult confirmMutualVerifNumCB()
 JNIEXPORT void JNICALL Java_org_iotivity_base_OcProvisioning_ownershipTransferCBdata
   (JNIEnv *env, jobject thiz, jint OxmType, jobject jListener)
 {
+    OC_UNUSED(thiz);
     LOGD("OcProvisioning_ownershipTransferCBdata");
     OCStackResult result = OC_STACK_ERROR;
 
@@ -147,6 +149,7 @@ JNIEXPORT void JNICALL Java_org_iotivity_base_OcProvisioning_ownershipTransferCB
 JNIEXPORT jobjectArray JNICALL Java_org_iotivity_base_OcProvisioning_discoverUnownedDevices1
   (JNIEnv *env, jclass clazz, jint timeout)
 {
+    OC_UNUSED(clazz);
     LOGI("OcProvisioning_discoverUnownedDevices");
     DeviceList_t list;
 
@@ -181,8 +184,9 @@ JNIEXPORT jobjectArray JNICALL Java_org_iotivity_base_OcProvisioning_discoverUno
  * Signature: (Ljava/lang/String;)V
  */
 JNIEXPORT void JNICALL Java_org_iotivity_base_OcProvisioning_provisionInit
-  (JNIEnv *env, jclass calzz, jstring jdbPath)
+  (JNIEnv *env, jclass clazz, jstring jdbPath)
 {
+    OC_UNUSED(clazz);
     LOGI("OcProvisioning_provisionInit");
     char *dbpath;
 
@@ -220,6 +224,7 @@ JNIEXPORT void JNICALL Java_org_iotivity_base_OcProvisioning_provisionInit
 JNIEXPORT jobjectArray JNICALL Java_org_iotivity_base_OcProvisioning_discoverOwnedDevices1
   (JNIEnv *env, jclass clazz , jint timeout)
 {
+    OC_UNUSED(clazz);
     LOGI("OcProvisioning_discoverOwnedDevices");
     DeviceList_t list;
 
@@ -255,6 +260,7 @@ JNIEXPORT jobjectArray JNICALL Java_org_iotivity_base_OcProvisioning_discoverOwn
 JNIEXPORT jobjectArray JNICALL Java_org_iotivity_base_OcProvisioning_getDeviceStatusList1
   (JNIEnv *env, jclass clazz, jint timeout)
 {
+    OC_UNUSED(clazz);
     LOGI("OcProvisioning_getDeviceStatusList");
     DeviceList_t  ownedDevList, unownedDevList;
 
@@ -291,6 +297,7 @@ JNIEXPORT jobjectArray JNICALL Java_org_iotivity_base_OcProvisioning_getDeviceSt
 JNIEXPORT void JNICALL Java_org_iotivity_base_OcProvisioning_setDisplayNumListener
   (JNIEnv *env, jclass clazz, jobject jListener)
 {
+    OC_UNUSED(clazz);
     LOGI("OcProvisioning_setDisplayNumListener");
 
     if (!jListener)
@@ -326,6 +333,7 @@ JNIEXPORT void JNICALL Java_org_iotivity_base_OcProvisioning_setDisplayNumListen
 JNIEXPORT jint JNICALL Java_org_iotivity_base_OcProvisioning_unsetDisplayNumListener
   (JNIEnv * env, jclass clazz)
 {
+    OC_UNUSED(clazz);
     LOGI("OcProvisioning_unsetDisplayNumListener");
 
     OCStackResult result = OCSecure::deregisterDisplayNumCallback();
@@ -346,6 +354,7 @@ JNIEXPORT jint JNICALL Java_org_iotivity_base_OcProvisioning_unsetDisplayNumList
 JNIEXPORT jint JNICALL Java_org_iotivity_base_OcProvisioning_setPinType0
   (JNIEnv *env, jclass thiz, jint pinSize, jint pinType)
 {
+    OC_UNUSED(thiz);
     LOGI("OcProvisioning_setPinType0");
 
     OCStackResult result = OC_STACK_ERROR;
@@ -373,6 +382,7 @@ JNIEXPORT jint JNICALL Java_org_iotivity_base_OcProvisioning_setPinType0
 JNIEXPORT void JNICALL Java_org_iotivity_base_OcProvisioning_setConfirmNumListener
   (JNIEnv *env, jclass clazz, jobject jListener)
 {
+    OC_UNUSED(clazz);
     LOGI("OcProvisioning_setConfirmNumListener");
 
     if (!jListener)
@@ -408,6 +418,7 @@ JNIEXPORT void JNICALL Java_org_iotivity_base_OcProvisioning_setConfirmNumListen
 JNIEXPORT jint JNICALL Java_org_iotivity_base_OcProvisioning_unsetConfirmNumListener
   (JNIEnv *env, jclass clazz)
 {
+    OC_UNUSED(clazz);
     LOGI("OcProvisioning_unsetConfirmNumListener");
 
     OCStackResult result = OCSecure::deregisterUserConfirmCallback();
@@ -427,6 +438,7 @@ JNIEXPORT jint JNICALL Java_org_iotivity_base_OcProvisioning_unsetConfirmNumList
 JNIEXPORT jint JNICALL Java_org_iotivity_base_OcProvisioning_setMVJustWorksOptions0
   (JNIEnv *env, jclass clazz, jint options)
 {
+    OC_UNUSED(clazz);
     LOGI("OcProvisioning_setMVJustWorksOptions0");
 
     OCStackResult result = OCSecure::setVerifyOptionMask((VerifyOptionBitmask_t)options);
@@ -448,7 +460,7 @@ JNIEXPORT jint JNICALL Java_org_iotivity_base_OcProvisioning_setMVJustWorksOptio
 JNIEXPORT void JNICALL Java_org_iotivity_base_OcProvisioning_setDisplayPinListener
   (JNIEnv *env, jclass thiz, jobject jListener)
 {
-
+    OC_UNUSED(thiz);
     LOGI("OcProvisioning_setDisplayPinListener");
 
     if (!jListener)
@@ -483,6 +495,7 @@ JNIEXPORT void JNICALL Java_org_iotivity_base_OcProvisioning_setDisplayPinListen
 JNIEXPORT jobjectArray JNICALL Java_org_iotivity_base_OcProvisioning_discoverMOTEnabledDevices1
   (JNIEnv *env, jclass thiz, jint timeout)
 {
+    OC_UNUSED(thiz);
     LOGI("OcProvisioning_discoverMOTEnabledDevices1");
 #if defined(MULTIPLE_OWNER)
     DeviceList_t list;
@@ -512,6 +525,8 @@ JNIEXPORT jobjectArray JNICALL Java_org_iotivity_base_OcProvisioning_discoverMOT
         return nullptr;
     }
 #else
+    OC_UNUSED(env);
+    OC_UNUSED(timeout);
     ThrowOcException(OC_STACK_INVALID_PARAM, "MULTIPLE_OWNER not enabled");
     return nullptr;
 #endif
@@ -525,6 +540,7 @@ JNIEXPORT jobjectArray JNICALL Java_org_iotivity_base_OcProvisioning_discoverMOT
 JNIEXPORT jobjectArray JNICALL Java_org_iotivity_base_OcProvisioning_discoverMOTEnabledOwnedDevices1
   (JNIEnv *env, jclass thiz, jint timeout)
 {
+    OC_UNUSED(thiz);
     LOGI("OcProvisioning_discoverMOTEnabledOwnedDevices1");
 #if defined(MULTIPLE_OWNER)
     DeviceList_t list;
@@ -554,6 +570,8 @@ JNIEXPORT jobjectArray JNICALL Java_org_iotivity_base_OcProvisioning_discoverMOT
         return nullptr;
     }
 #else
+    OC_UNUSED(env);
+    OC_UNUSED(timeout);
     ThrowOcException(OC_STACK_INVALID_PARAM, "MULTIPLE_OWNER not enabled");
     return nullptr;
 #endif
@@ -567,11 +585,14 @@ JNIEXPORT jobjectArray JNICALL Java_org_iotivity_base_OcProvisioning_discoverMOT
     JNIEXPORT jint JNICALL Java_org_iotivity_base_OcProvisioning_saveTrustCertChain1
 (JNIEnv *env, jobject thiz, jbyteArray trustCertChain, jint encodingType)
 {
+    OC_UNUSED(thiz);
     LOGD("OcProvisioning_saveTrustCertChain1");
 #if defined(__WITH_DTLS__) || defined(__WITH_TLS__)
     jbyte* trustCertChainBytes = env->GetByteArrayElements(trustCertChain, 0);
+    // TODO figure out why trustCertChainBytes is created an not used.
+    OC_UNUSED(trustCertChainBytes);
     jsize arrayLength = env->GetArrayLength(trustCertChain);
-    uint16_t credId = -1;
+    uint16_t credId = USHRT_MAX;
     unsigned char* trustedCertChar = new unsigned char[arrayLength];
     try
     {
@@ -591,6 +612,9 @@ JNIEXPORT jobjectArray JNICALL Java_org_iotivity_base_OcProvisioning_discoverMOT
     }
     return (jint)credId;
 #else
+    OC_UNUSED(env);
+    OC_UNUSED(trustCertChain);
+    OC_UNUSED(encodingType);
     ThrowOcException(OC_STACK_INVALID_PARAM, "WITH_TLS not enabled");
     return -1;
 #endif // __WITH_DTLS__ || __WITH_TLS__
@@ -604,6 +628,7 @@ JNIEXPORT jobjectArray JNICALL Java_org_iotivity_base_OcProvisioning_discoverMOT
 JNIEXPORT void JNICALL Java_org_iotivity_base_OcProvisioning_saveACL
   (JNIEnv *env , jclass thiz, jobject jacl)
 {
+    OC_UNUSED(thiz);
     LOGD("OcProvisioning_saveACL");
 
     if (!jacl)
@@ -649,7 +674,7 @@ JNIEXPORT void JNICALL Java_org_iotivity_base_OcProvisioning_saveACL
 JNIEXPORT void JNICALL Java_org_iotivity_base_OcProvisioning_doSelfOwnershiptransfer
   (JNIEnv *env, jclass thiz)
 {
-
+    OC_UNUSED(thiz);
     LOGD("OcProvisioning_doSelfOwnershiptransfer");
     try
     {
@@ -675,6 +700,7 @@ JNIEXPORT void JNICALL Java_org_iotivity_base_OcProvisioning_doSelfOwnershiptran
     JNIEXPORT jint JNICALL Java_org_iotivity_base_OcProvisioning_setDeviceIdSeed1
 (JNIEnv *env, jobject thiz, jbyteArray seed)
 {
+    OC_UNUSED(thiz);
     LOGD("OcProvisioning_setDeviceIdSeed1");
 #if defined(__WITH_DTLS__) || defined(__WITH_TLS__)
     jbyte* byteSeed = env->GetByteArrayElements(seed, 0);
@@ -696,6 +722,8 @@ JNIEXPORT void JNICALL Java_org_iotivity_base_OcProvisioning_doSelfOwnershiptran
     }
     return 0;
 #else
+    OC_UNUSED(env);
+    OC_UNUSED(seed);
     ThrowOcException(OC_STACK_INVALID_PARAM, "WITH_TLS not enabled");
     return -1;
 #endif // __WITH_DTLS__ || __WITH_TLS__
index 41c7a5d..11976ea 100644 (file)
@@ -202,6 +202,7 @@ JNIEXPORT void JNICALL Java_org_iotivity_base_OcRDClient_publishResourceToRD0(
         jobject jListener,
         jint jQoS)
 {
+    OC_UNUSED(clazz);
     LOGD("OcRDClient_publishResourceToRD");
 #ifdef RD_CLIENT
     std::string host;
@@ -243,6 +244,12 @@ JNIEXPORT void JNICALL Java_org_iotivity_base_OcRDClient_publishResourceToRD0(
         ThrowOcException(e.code(), e.reason().c_str());
     }
 #else
+    OC_UNUSED(env);
+    OC_UNUSED(clazz);
+    OC_UNUSED(jHost)
+    OC_UNUSED(jConnectivityType);
+    OC_UNUSED(jListener);
+    OC_UNUSED(jQoS);
     ThrowOcException(JNI_NO_SUPPORT, "Not supported");
     return;
 #endif
@@ -262,6 +269,7 @@ JNIEXPORT void JNICALL Java_org_iotivity_base_OcRDClient_publishResourceToRD1(
         jobject jListener,
         jint jQoS)
 {
+    OC_UNUSED(clazz);
     LOGD("OcRDClient_publishResourceToRD");
 #ifdef RD_CLIENT
     if (!env)
@@ -294,8 +302,8 @@ JNIEXPORT void JNICALL Java_org_iotivity_base_OcRDClient_publishResourceToRD1(
     };
 
     std::vector<OCResourceHandle> resourceHandleList;
-    size_t len = env->GetArrayLength(jResourceHandleArray);
-    for (size_t i = 0; i < len; ++i)
+    jsize len = env->GetArrayLength(jResourceHandleArray);
+    for (jsize i = 0; i < len; ++i)
     {
         jobject jResourceHandle = env->GetObjectArrayElement(jResourceHandleArray, i);
         if (!jResourceHandle)
@@ -335,6 +343,12 @@ JNIEXPORT void JNICALL Java_org_iotivity_base_OcRDClient_publishResourceToRD1(
         ThrowOcException(e.code(), e.reason().c_str());
     }
 #else
+    OC_UNUSED(env);
+    OC_UNUSED(jHost);
+    OC_UNUSED(jConnectivityType);
+    OC_UNUSED(jResourceHandleArray);
+    OC_UNUSED(jListener);
+    OC_UNUSED(jQoS);
     ThrowOcException(JNI_NO_SUPPORT, "Not supported");
     return;
 #endif
@@ -353,6 +367,7 @@ JNIEXPORT void JNICALL Java_org_iotivity_base_OcRDClient_deleteResourceFromRD0(
         jobject jListener,
         jint jQoS)
 {
+    OC_UNUSED(clazz);
     LOGD("OcRDClient_deleteResourceFromRD");
 #ifdef RD_CLIENT
     std::string host;
@@ -391,6 +406,12 @@ JNIEXPORT void JNICALL Java_org_iotivity_base_OcRDClient_deleteResourceFromRD0(
          ThrowOcException(e.code(), e.reason().c_str());
      }
  #else
+     OC_UNUSED(env);
+     OC_UNUSED(clazz);
+     OC_UNUSED(jHost);
+     OC_UNUSED(jConnectivityType);
+     OC_UNUSED(jListener);
+     OC_UNUSED(jQoS);
      ThrowOcException(JNI_NO_SUPPORT, "Not supported");
      return;
  #endif
@@ -410,6 +431,7 @@ JNIEXPORT void JNICALL Java_org_iotivity_base_OcRDClient_deleteResourceFromRD0(
          jobject jListener,
          jint jQoS)
  {
+     OC_UNUSED(clazz);
      LOGD("OcRDClient_deleteResourceFromRD");
  #ifdef RD_CLIENT
      if (!env)
@@ -440,8 +462,8 @@ JNIEXPORT void JNICALL Java_org_iotivity_base_OcRDClient_deleteResourceFromRD0(
      };
 
      std::vector<OCResourceHandle> resourceHandleList;
-     size_t len = env->GetArrayLength(jResourceHandleArray);
-     for (size_t i = 0; i < len; ++i)
+     jsize len = env->GetArrayLength(jResourceHandleArray);
+     for (jsize i = 0; i < len; ++i)
      {
          jobject jResourceHandle = env->GetObjectArrayElement(jResourceHandleArray, i);
          if (!jResourceHandle)
@@ -482,6 +504,12 @@ JNIEXPORT void JNICALL Java_org_iotivity_base_OcRDClient_deleteResourceFromRD0(
          ThrowOcException(e.code(), e.reason().c_str());
      }
  #else
+     OC_UNUSED(env);
+     OC_UNUSED(jHos);
+     OC_UNUSED(jConnectivityType);
+     OC_UNUSED(jResourceHandleArray);
+     OC_UNUSED(jListener);
+     OC_UNUSED(jQoS);
      ThrowOcException(JNI_NO_SUPPORT, "Not supported");
      return;
  #endif
index 27e96a9..16b479e 100644 (file)
@@ -172,7 +172,7 @@ JNIEXPORT void JNICALL Java_org_iotivity_base_OcRepresentation_setValueBoolean
     }
 
     std::string str = env->GetStringUTFChars(jKey, nullptr);
-    rep->setValue(str, static_cast<bool>(jValue));
+    rep->setValue(str, (jValue != 0));
 }
 
 /*
@@ -511,7 +511,7 @@ JNIEXPORT void JNICALL Java_org_iotivity_base_OcRepresentation_setValueBooleanAr
     std::vector<bool> value;
     for (jsize i = 0; i < len; ++i)
     {
-        value.push_back(static_cast<bool>(booleans[i]));
+        value.push_back((booleans[i] != 0));
     }
     env->ReleaseBooleanArrayElements(jValue, booleans, JNI_ABORT);
 
@@ -550,7 +550,7 @@ JNIEXPORT void JNICALL Java_org_iotivity_base_OcRepresentation_setValueBoolean2D
         std::vector<bool> innerVector;
         for (jsize i = 0; i < lenInner; ++i)
         {
-            innerVector.push_back(static_cast<bool>(booleans[i]));
+            innerVector.push_back((booleans[i] != 0));
         }
         env->ReleaseBooleanArrayElements(jInnerArray, booleans, JNI_ABORT);
         env->DeleteLocalRef(jInnerArray);
@@ -597,7 +597,7 @@ JNIEXPORT void JNICALL Java_org_iotivity_base_OcRepresentation_setValueBoolean3D
             std::vector<bool> innerVector;
             for (jsize i = 0; i < lenInner; ++i)
             {
-                innerVector.push_back(static_cast<bool>(booleans[i]));
+                innerVector.push_back((booleans[i] != 0));
             }
             env->ReleaseBooleanArrayElements(jInnerArray, booleans, JNI_ABORT);
             env->DeleteLocalRef(jInnerArray);
index 63825dc..48c9463 100644 (file)
@@ -89,7 +89,7 @@ struct JObjectConverter : boost::static_visitor < jobject >
     // Sequences:
     jobject operator()(const std::vector<int>& val) const
     {
-        size_t len = val.size();
+        jsize len = static_cast<jsize>(val.size());
         jintArray jIntArray = env->NewIntArray(len);
         if (!jIntArray)
         {
@@ -101,7 +101,7 @@ struct JObjectConverter : boost::static_visitor < jobject >
     }
     jobject operator()(const std::vector<double>& val) const
     {
-        size_t len = val.size();
+        jsize len = static_cast<jsize>(val.size());
         jdoubleArray jDoubleArray = env->NewDoubleArray(len);
         if (!jDoubleArray)
         {
@@ -113,14 +113,14 @@ struct JObjectConverter : boost::static_visitor < jobject >
     }
     jobject operator()(const std::vector<bool>& val) const
     {
-        size_t len = val.size();
+        jsize len = static_cast<jsize>(val.size());
         jbooleanArray jBooleanArray = env->NewBooleanArray(len);
         if (!jBooleanArray)
         {
             return nullptr;
         }
         jboolean* booleans = new jboolean[len];
-        for (size_t i = 0; i < len; ++i)
+        for (jsize i = 0; i < len; ++i)
         {
             booleans[i] = static_cast<jboolean>(val[i]);
         }
@@ -134,13 +134,13 @@ struct JObjectConverter : boost::static_visitor < jobject >
     }
     jobject operator()(const std::vector<std::string>& val) const
     {
-        size_t len = val.size();
+        jsize len = static_cast<jsize>(val.size());
         jobjectArray strArr = env->NewObjectArray(len, g_cls_String, nullptr);
         if (!strArr)
         {
             return nullptr;
         }
-        for (size_t i = 0; i < len; ++i)
+        for (jsize i = 0; i < len; ++i)
         {
             jstring jString = env->NewStringUTF(val[i].c_str());
             env->SetObjectArrayElement(strArr, static_cast<jsize>(i), jString);
@@ -155,12 +155,13 @@ struct JObjectConverter : boost::static_visitor < jobject >
     // OCByteString and arrays:
     jobject operator()(const OCByteString &val) const
     {
-        jbyteArray jByteArray = env->NewByteArray(val.len);
+        jsize len = static_cast<jsize>(val.len);
+        jbyteArray jByteArray = env->NewByteArray(len);
         if (!jByteArray)
         {
             return nullptr;
         }
-        env->SetByteArrayRegion(jByteArray, 0, val.len, reinterpret_cast<const jbyte *>(val.bytes));
+        env->SetByteArrayRegion(jByteArray, 0, len, reinterpret_cast<const jbyte *>(val.bytes));
         if (env->ExceptionCheck())
         {
             env->DeleteLocalRef(jByteArray);
@@ -280,7 +281,7 @@ struct JObjectConverter : boost::static_visitor < jobject >
     }
     jobject operator()(const std::vector<uint8_t>& val) const
     {
-        size_t len = val.size();
+        jsize len = static_cast<jsize>(val.size());
         jbyteArray jByteArray = env->NewByteArray(len);
         if (!jByteArray)
         {
@@ -302,7 +303,7 @@ struct JObjectConverter : boost::static_visitor < jobject >
         }
         for (jsize i = 0; i < lenOuter; ++i)
         {
-            size_t lenInner = val[i].size();
+            jsize lenInner = static_cast<jsize>(val[i].size());
             jintArray jIntArray = env->NewIntArray(lenInner);
             if (!jIntArray)
             {
@@ -383,7 +384,7 @@ struct JObjectConverter : boost::static_visitor < jobject >
 
         for (jsize i = 0; i < lenOuter; ++i)
         {
-            size_t lenInner = val[i].size();
+            jsize lenInner = static_cast<jsize>(val[i].size());
             jdoubleArray jDoubleArray = env->NewDoubleArray(lenInner);
             if (!jDoubleArray)
             {
@@ -463,14 +464,14 @@ struct JObjectConverter : boost::static_visitor < jobject >
         }
         for (jsize i = 0; i < lenOuter; ++i)
         {
-            size_t lenInner = val[i].size();
+            jsize lenInner = static_cast<jsize>(val[i].size());
             jbooleanArray jBooleanArray = env->NewBooleanArray(lenInner);
             if (!jBooleanArray)
             {
                 return nullptr;
             }
             jboolean* booleans = new jboolean[lenInner];
-            for (size_t j = 0; j < lenInner; ++j)
+            for (jsize j = 0; j < lenInner; ++j)
             {
                 booleans[j] = static_cast<jboolean>(val[i][j]);
             }
@@ -511,10 +512,10 @@ struct JObjectConverter : boost::static_visitor < jobject >
             }
             for (jsize i = 0; i < lenMiddle; ++i)
             {
-                size_t lenInner = val[k][i].size();
+                jsize lenInner = static_cast<jsize>(val[k][i].size());
                 jbooleanArray jBooleanArray = env->NewBooleanArray(lenInner);
                 jboolean* booleans = new jboolean[lenInner];
-                for (size_t j = 0; j < lenInner; ++j)
+                for (jsize j = 0; j < lenInner; ++j)
                 {
                     booleans[j] = val[k][i][j];
                 }
index ae8fe0c..3968f30 100644 (file)
@@ -1781,7 +1781,6 @@ JNIEXPORT void JNICALL Java_org_iotivity_base_OcResource_discoveryMQTopicsImpl
 (JNIEnv *env, jobject thiz, jobject jQueryParamsMap, jobject jListener, jint jQoS)
 {
     LOGD("OcResource_discoveryMQTopicsImpl");
-
 #ifdef WITH_MQ
     if (!jQueryParamsMap)
     {
@@ -1823,6 +1822,11 @@ JNIEXPORT void JNICALL Java_org_iotivity_base_OcResource_discoveryMQTopicsImpl
         ThrowOcException(e.code(), e.reason().c_str());
     }
 #else
+    OC_UNUSED(env);
+    OC_UNUSED(thiz);
+    OC_UNUSED(jQueryParamsMap);
+    OC_UNUSED(jListener);
+    OC_UNUSED(jQoS);
     ThrowOcException(JNI_NO_SUPPORT, "not support");
 #endif
 }
@@ -1838,7 +1842,6 @@ JNIEXPORT void JNICALL Java_org_iotivity_base_OcResource_createMQTopicImpl
  jobject jQueryParamsMap, jobject jListener, jint jQoS)
 {
     LOGD("OcResource_createMQTopicImpl");
-
 #ifdef WITH_MQ
     if (!jQueryParamsMap)
     {
@@ -1901,6 +1904,13 @@ JNIEXPORT void JNICALL Java_org_iotivity_base_OcResource_createMQTopicImpl
         ThrowOcException(e.code(), e.reason().c_str());
     }
 #else
+    OC_UNUSED(env);
+    OC_UNUSED(thiz);
+    OC_UNUSED(jRepresentation);
+    OC_UNUSED(jUri);
+    OC_UNUSED(jQueryParamsMap);
+    OC_UNUSED(jListener);
+    OC_UNUSED(jQoS);
     ThrowOcException(JNI_NO_SUPPORT, "not support");
 #endif
 }
@@ -1953,6 +1963,11 @@ JNIEXPORT void JNICALL Java_org_iotivity_base_OcResource_subscribeMQTopicImpl
         ThrowOcException(e.code(), e.reason().c_str());
     }
 #else
+    OC_UNUSED(env);
+    OC_UNUSED(thiz);
+    OC_UNUSED(jQueryParamsMap);
+    OC_UNUSED(jListener);
+    OC_UNUSED(jQoS);
     ThrowOcException(JNI_NO_SUPPORT, "not support");
 #endif
 }
@@ -1988,6 +2003,9 @@ JNIEXPORT void JNICALL Java_org_iotivity_base_OcResource_unsubscribeMQTopicImpl
         ThrowOcException(e.code(), e.reason().c_str());
     }
 #else
+    OC_UNUSED(env);
+    OC_UNUSED(thiz);
+    OC_UNUSED(jQoS);
     ThrowOcException(JNI_NO_SUPPORT, "not support");
 #endif
 }
@@ -2000,6 +2018,7 @@ JNIEXPORT void JNICALL Java_org_iotivity_base_OcResource_unsubscribeMQTopicImpl
 JNIEXPORT void JNICALL Java_org_iotivity_base_OcResource_requestMQPublishImpl
 (JNIEnv *env, jobject thiz, jobject jQueryParamsMap, jobject jListener, jint jQoS)
 {
+    OC_UNUSED(thiz);
     LOGD("OcResource_requestMQPublishImpl");
 #ifdef MQ_SUBSCRIBER
     if (!jQueryParamsMap)
@@ -2041,6 +2060,10 @@ JNIEXPORT void JNICALL Java_org_iotivity_base_OcResource_requestMQPublishImpl
         ThrowOcException(e.code(), e.reason().c_str());
     }
 #else
+    OC_UNUSED(env);
+    OC_UNUSED(jQueryParamsMap);
+    OC_UNUSED(jListener);
+    OC_UNUSED(jQoS);
     ThrowOcException(JNI_NO_SUPPORT, "not support");
 #endif
 }
@@ -2055,6 +2078,7 @@ JNIEXPORT void JNICALL Java_org_iotivity_base_OcResource_publishMQTopicImpl
 (JNIEnv *env, jobject thiz, jobject jRepresentation, jobject jQueryParamsMap,
  jobject jListener, jint jQoS)
 {
+    OC_UNUSED(thiz);
     LOGD("OcResource_publishMQTopicImpl");
 #ifdef MQ_PUBLISHER
     if (!jRepresentation)
@@ -2111,6 +2135,11 @@ JNIEXPORT void JNICALL Java_org_iotivity_base_OcResource_publishMQTopicImpl
         ThrowOcException(e.code(), e.reason().c_str());
     }
 #else
+    OC_UNUSED(env);
+    OC_UNUSED(jRepresentation);
+    OC_UNUSED(jQueryParamsMap);
+    OC_UNUSED(jListener);
+    OC_UNUSED(jQoS);
     ThrowOcException(JNI_NO_SUPPORT, "not support");
 #endif
 }
index 186c92f..e9c61a9 100644 (file)
@@ -156,11 +156,16 @@ OCStackResult JniOcSecureResource::doOwnershipTransfer(JNIEnv* env, jobject jLis
 
 OCStackResult JniOcSecureResource::getLinkedDevices(JNIEnv *env, UuidList_t &uuidList)
 {
+    OC_UNUSED(env);
     return m_sharedSecureResource->getLinkedDevices(uuidList);
 }
 
 OCStackResult JniOcSecureResource::removeDevice(JNIEnv* env, jint timeout, jobject jListener)
 {
+    if (timeout > USHRT_MAX)
+    {
+        return OC_STACK_INVALID_PARAM;
+    }
     JniProvisionResultListner *resultListener = AddProvisionResultListener(env, jListener);
 
     ResultCallBack resultCallback = [resultListener](PMResultList_t *result, int hasError)
@@ -168,7 +173,7 @@ OCStackResult JniOcSecureResource::removeDevice(JNIEnv* env, jint timeout, jobje
         resultListener->ProvisionResultCallback(result, hasError, ListenerFunc::REMOVEDEVICE);
     };
 
-    return m_sharedSecureResource->removeDevice((int)timeout, resultCallback);
+    return m_sharedSecureResource->removeDevice(static_cast<unsigned short>(timeout), resultCallback);
 }
 
 OCStackResult JniOcSecureResource::unlinkDevices(JNIEnv* env, jobject _device2, jobject jListener)
@@ -222,8 +227,8 @@ OCStackResult JniOcSecureResource::provisionTrustCertChain(JNIEnv* env, jint typ
         resultListener->ProvisionResultCallback(result, hasError, ListenerFunc::PROVISIONTRUSTCERTCHAIN);
     };
 
-    return m_sharedSecureResource->provisionTrustCertChain((OicSecCredType_t)type, credId,
-            resultCallback);
+    return m_sharedSecureResource->provisionTrustCertChain((OicSecCredType_t)type,
+            static_cast<uint16_t>(credId), resultCallback);
 }
 #endif
 
@@ -294,12 +299,12 @@ OCStackResult JniOcSecureResource::provisionDirectPairing(JNIEnv* env, jobjectAr
 
     pconf = new OicSecPconf_t;
     memset(pconf, 0, sizeof(OicSecPconf_t));
-    pconf->edp = edp;
+    pconf->edp = (edp != 0);
     pconf->prmLen = prms.size();
     pconf->prm = new OicSecPrm_t[pconf->prmLen];
     pconf->pddevLen = 0;
 
-    for (int i = 0 ; i < prms.size(); i++)
+    for (size_t i = 0 ; i < prms.size(); i++)
         pconf->prm[i] = (OicSecPrm_t)prms[i];
 
     memcpy(pconf->pin.val, pin.c_str(), DP_PIN_LENGTH);
@@ -440,6 +445,7 @@ OCStackResult JniOcSecureResource::changeMOTMode(JNIEnv* env, jint momType, jobj
 
 OCStackResult JniOcSecureResource::addPreconfigPIN(JNIEnv* env, std::string pin, int size)
 {
+    OC_UNUSED(env);
     OCStackResult ret;
     ret = m_sharedSecureResource->addPreconfigPIN(pin.c_str(), (size_t) size);
     return ret;
@@ -542,6 +548,7 @@ JNIEXPORT void JNICALL Java_org_iotivity_base_OcSecureResource_removeDevice
 
     try
     {
+
         OCStackResult result = secureResource->removeDevice(env, timeout, jListener);
         if (OC_STACK_OK != result)
         {
index 89c835c..8fcc674 100644 (file)
@@ -200,8 +200,10 @@ void throwOcException(JNIEnv* env, jobject ex)
 }
 
 // JNI OnLoad
-JNIEXPORT jint JNICALL JNI_OnLoad(JavaVM* vm, void* reserved)
+JNIEXPORT jint JNICALL
+JNI_OnLoad(JavaVM* vm, void* reserved)
 {
+    OC_UNUSED(reserved);
     LOGI("JNI_OnLoad");
     JNIEnv* env = nullptr;
     g_jvm = vm;
@@ -674,8 +676,10 @@ JNIEXPORT jint JNICALL JNI_OnLoad(JavaVM* vm, void* reserved)
     return JNI_CURRENT_VERSION;
 }
 
-JNIEXPORT void JNICALL JNI_OnUnload(JavaVM *vm, void *reserved)
+JNIEXPORT void JNICALL
+JNI_OnUnload(JavaVM *vm, void *reserved)
 {
+    OC_UNUSED(reserved);
     LOGI("JNI_OnUnload");
     JNIEnv* env = nullptr;
 
index 4b6e18a..0e12dce 100644 (file)
@@ -189,15 +189,15 @@ static OicSecValidity_t* getValiditiesList(JNIEnv *env, jobject validityObject)
             jvalue argv[1];
             tmp->recurrences = (char**)OICCalloc(jrecurrenceLen, sizeof(char*));
 
-            for (int i = 0 ; i < jrecurrenceLen; i++)
+            for (int j = 0 ; j < jrecurrenceLen; j++)
             {
-                argv[0].i = i;
+                argv[0].i = j;
                 jData = (jstring)env->CallObjectMethodA(element, g_mid_OcOicSecAcl_validity_get_recurrences, argv);
                 if (!jData || env->ExceptionCheck())
                 {
                     return nullptr;
                 }
-                tmp->recurrences[i] = (char*)env->GetStringUTFChars(jData, 0);
+                tmp->recurrences[j] = (char*)env->GetStringUTFChars(jData, 0);
             }
         }
         if (NULL == valHead)
@@ -258,15 +258,15 @@ static OicSecRsrc_t * getResourcesList(JNIEnv *env, jobject resourceObject)
             jvalue argv[1];
             tmp->types = (char**)OICCalloc(len, sizeof(char*));
 
-            for (int i = 0 ; i < len; i++)
+            for (int j = 0 ; j < len; j++)
             {
-                argv[0].i = i;
+                argv[0].i = j;
                 jData = (jstring)env->CallObjectMethodA(element, g_mid_OcOicSecAcl_resr_get_types, argv);
                 if (!jData || env->ExceptionCheck())
                 {
                     return nullptr;
                 }
-                tmp->types[i] = (char*)env->GetStringUTFChars(jData, 0);
+                tmp->types[j] = (char*)env->GetStringUTFChars(jData, 0);
             }
         }
 
@@ -277,15 +277,15 @@ static OicSecRsrc_t * getResourcesList(JNIEnv *env, jobject resourceObject)
             jvalue argv[1];
             tmp->interfaces = (char**)OICCalloc(len, sizeof(char*));
 
-            for (int i = 0 ; i < len; i++)
+            for (int j = 0 ; j < len; j++)
             {
-                argv[0].i = i;
+                argv[0].i = j;
                 jData = (jstring)env->CallObjectMethodA(element, g_mid_OcOicSecAcl_resr_get_interfaces, argv);
                 if (!jData || env->ExceptionCheck())
                 {
                     return nullptr;
                 }
-                tmp->interfaces[i] = (char*)env->GetStringUTFChars(jData, 0);
+                tmp->interfaces[j] = (char*)env->GetStringUTFChars(jData, 0);
             }
         }
 
@@ -428,7 +428,7 @@ OCStackResult JniSecureUtils::convertJavaPdACLToOCAcl(JNIEnv *env, jobject in, O
         return OC_STACK_ERROR;
     }
 
-    pdacl->permission = jCount;
+    pdacl->permission = static_cast<uint16_t>(jCount);
     jCount = (jint) env->CallIntMethod(in, g_mid_OcOicSecPdAcl_get_periods_cnt);
     if (env->ExceptionCheck())
     {
index 1851a16..2fef834 100644 (file)
@@ -93,7 +93,9 @@ void JniUtils::convertJavaHeaderOptionsArrToVector(JNIEnv *env, jobjectArray jHe
         jint jId = env->CallIntMethod(header, g_mid_OcHeaderOption_get_id);
         jstring jData = (jstring)env->CallObjectMethod(header, g_mid_OcHeaderOption_get_data);
         OC::HeaderOption::OCHeaderOption hopt(
-            static_cast<int>(jId),
+            // jId comes from an enumerated list and should always fit in the
+            // down case uint16_t see getOptionId method
+            static_cast<uint16_t>(jId),
             env->GetStringUTFChars(jData, nullptr));
 
         headerOptions.push_back(hopt);
index be80644..09559d2 100644 (file)
@@ -27,6 +27,7 @@ lib_env = env.Clone()
 SConscript(env.get('SRC_DIR') + '/resource/third_party_libs.scons', 'lib_env')
 
 jni_env = lib_env.Clone()
+rd_mode = jni_env.get('RD_MODE')
 
 ######################################################################
 # Build flags
@@ -47,6 +48,8 @@ jni_env.AppendUnique(CPPPATH=[
     env.get('SRC_DIR') + '/resource/c_common/oic_string/include',
     env.get('SRC_DIR') + '/resource/c_common/oic_malloc/include',
     env.get('SRC_DIR') + '/resource/csdk/include',
+    env.get('SRC_DIR') + '/resource/csdk/connectivity/inc',
+    env.get('SRC_DIR') + '/resource/csdk/connectivity/common/inc',
     env.get('SRC_DIR') + '/resource/csdk/stack/include',
     env.get('SRC_DIR') + '/resource/csdk/ocsocket/include',
     env.get('SRC_DIR') + '/resource/csdk/resource-directory/include',
@@ -62,29 +65,60 @@ jni_env.AppendUnique(CPPPATH=[
 ])
 
 target_os = env.get('TARGET_OS')
-jni_env.AppendUnique(CCFLAGS=[
-    '-Wno-error', '-Wno-comment', '-Wno-unused-function',
-    '-Wno-unused-parameter'
-])
 if target_os not in ['windows', 'winrt']:
+    jni_env.AppendUnique(CCFLAGS=[
+        '-Wno-error', '-Wno-comment', '-Wno-unused-function',
+        '-Wno-unused-parameter'
+    ])
     jni_env.AppendUnique(CXXFLAGS=['-std=c++0x', '-Wall', '-pthread'])
-
     # Note: 'pthread' is in libc for android. On other platform, if use
     # new gcc(>4.9?) it isn't required, otherwise, it's required
     if target_os != 'android':
         jni_env.AppendUnique(LIBS=['-lpthread'])
-
-jni_env.AppendUnique(LIBPATH=[env.get('BUILD_DIR')])
+else:
+    # Disable the following warnings:
+    #  - warning C4047: different levels of indirection
+    #    - Disabled due un-avoidable error when using AttachCurrentThread
+    #  - warning C4022: pointer missmatch for actual parameter
+    #    - Disabled due un-avoidable error when using AttachCurrentThread
+    #  - waring C4505: unreferenced local function has been removed
+    #    - Disabled due to compiler incorrectly specifying JNI functions as
+    #      unreferenced
+    jni_env.AppendUnique(CCFLAGS=['/wd4047', '/wd4022', '/wd4505',])
+jni_env.AppendUnique(LIBPATH=[env.get('BUILD_DIR'), '#/exlibs/sqlite3'])
 jni_env.AppendUnique(RPATH=[env.get('BUILD_DIR')])
+# make sure we link with the static oc library. This is important since Windows does not build a shared library for the oc library
+# The oc library can not be imported into the Java on all of the platfroms so must be statically linked to make Java code work on
+# all platforms.
 jni_env.PrependUnique(LIBS=[
-    'resource_directory', 'oc', 'octbstack', 'oc_logger',
-    'connectivity_abstraction'
+    'resource_directory',
+    'oc_logger_internal',
+    'coap',
+    'octbstack_internal',
+    'connectivity_abstraction_internal',
+    'ocsrm',
+    'routingmanager'
 ])
+
+if target_os not in ['windows', 'winrt']:
+    jni_env.PrependUnique(LIBS=['oc_internal'])
+else:
+    jni_env.PrependUnique(LIBS=[
+        'oc',
+        'mbedcrypto',
+        'resource_directory_internal',
+        'sqlite3'
+    ])
+
 if env.get('SECURED') == '1':
     jni_env.AppendUnique(CPPDEFINES=['__WITH_TLS__'])
-    jni_env.PrependUnique(LIBS=['mbedtls', 'ocprovision', 'ocpmapi'])
-    jni_env.AppendUnique(
-        CPPPATH=['#resource/csdk/security/include/internal', '#extlibs/cjson'])
+    jni_env.PrependUnique(LIBS=['mbedtls', 'mbedx509', 'ocprovision'])
+    if target_os not in ['windows', 'winrt']:
+        jni_env.PrependUnique(LIBS=['ocpmapi'])
+    else:
+        jni_env.PrependUnique(LIBS=['ocpmapi_internal',])
+    jni_env.AppendUnique(CPPPATH=['#resource/csdk/security/include/internal',
+                                  '#extlibs/cjson'])
     if env.get('WITH_CLOUD') == '1':
         jni_env.AppendUnique(
             CPPPATH=['#resource/csdk/security/provisioning/include/cloud'])
index f9cac50..a106a67 100644 (file)
@@ -244,6 +244,7 @@ JavaVM *CANativeJNIGetJavaVM()
 
 void CADeleteGlobalReferences(JNIEnv *env)
 {
+    OC_UNUSED(env);
 #ifdef __ANDROID__
     if (g_Context)
     {
index d1a0c77..3c51730 100644 (file)
@@ -123,7 +123,8 @@ if target_os in ['windows', 'ios']:
        # TODO: Add OC_EXPORT prefixes to enable DLL generation
        oclib = oclib_env.StaticLibrary('oc', oclib_src)
 else:
-       oclib = oclib_env.SharedLibrary('oc', oclib_src)
+    oclib = oclib_env.StaticLibrary('oc_internal', oclib_src)
+    oclib += oclib_env.SharedLibrary('oc', oclib_src)
 oclib_env.InstallTarget(oclib, 'oc')
 oclib_env.UserInstallTargetLib(oclib, 'oc')
 header_dir = os.path.join(oclib_env.get('SRC_DIR') , 'resource' , 'include') + os.sep
diff --git a/run.bat b/run.bat
index 0853949..d7205db 100644 (file)
--- a/run.bat
+++ b/run.bat
@@ -60,6 +60,11 @@ if "%UWP_APP%" == "" (
   set UWP_APP=0
 )
 
+if "%BUILD_JAVA%" == "" (
+  REM Do not build Java by default
+  set BUILD_JAVA=0
+)
+
 set THREAD_COUNT=%NUMBER_OF_PROCESSORS%
 
 set ROUTING=EP
@@ -113,6 +118,9 @@ IF NOT "%1"=="" (
   IF /I "%1"=="-uwp" (
     set UWP_APP=1
   )
+  IF /I "%1"=="-java" (
+    set BUILD_JAVA=1
+  )
 
   SHIFT
   GOTO :processArgs
@@ -136,7 +144,7 @@ IF "%BUILD_MSYS%" == "" (
   set PATH=!PATH!;!BUILD_DIR!;C:\msys64\mingw64\bin
 )
 
-set BUILD_OPTIONS= TARGET_OS=%TARGET_OS% TARGET_ARCH=%TARGET_ARCH% UWP_APP=%UWP_APP% RELEASE=%RELEASE% WITH_RA=0 TARGET_TRANSPORT=IP SECURED=%SECURED% WITH_TCP=%WITH_TCP% BUILD_SAMPLE=ON LOGGING=%LOGGING% LOG_LEVEL=%LOG_LEVEL% RD_MODE=%RD_MODE% ROUTING=%ROUTING% WITH_UPSTREAM_LIBCOAP=%WITH_UPSTREAM_LIBCOAP% MULTIPLE_OWNER=%MULTIPLE_OWNER% AUTOMATIC_UPDATE=%AUTOMATIC_UPDATE%
+set BUILD_OPTIONS= TARGET_OS=%TARGET_OS% TARGET_ARCH=%TARGET_ARCH% UWP_APP=%UWP_APP% RELEASE=%RELEASE% WITH_RA=0 TARGET_TRANSPORT=IP SECURED=%SECURED% WITH_TCP=%WITH_TCP% BUILD_SAMPLE=ON LOGGING=%LOGGING% LOG_LEVEL=%LOG_LEVEL% RD_MODE=%RD_MODE% ROUTING=%ROUTING% WITH_UPSTREAM_LIBCOAP=%WITH_UPSTREAM_LIBCOAP% MULTIPLE_OWNER=%MULTIPLE_OWNER% AUTOMATIC_UPDATE=%AUTOMATIC_UPDATE% BUILD_JAVA=%BUILD_JAVA%
 
 REM Use MSVC_VERSION=12.0 for VS2013, or MSVC_VERSION=14.0 for VS2015.
 REM If MSVC_VERSION has not been defined here, SCons chooses automatically a VS version.
@@ -208,6 +216,7 @@ if "!RUN_ARG!"=="server" (
   echo   MSVC_VERSION=%MSVC_VERSION%
   echo   THREAD_COUNT=%THREAD_COUNT%
   echo   AUTOMATIC_UPDATE=%AUTOMATIC_UPDATE%
+  echo   BUILD_JAVA=%BUILD_JAVA%
 
   REM First step:
   REM   - Generate coap.h, to avoid race conditions during second step below (see IOT-2376).
@@ -305,6 +314,8 @@ echo   -automaticUpdate             - Automatically update libcoap to required v
 echo.
 echo   -uwp                         - Build for the Universal Windows Platform (UWP).
 echo.
+echo   -java                        - Build Java. The JDK path must be set in the JAVA_HOME environment variable.
+echo.
 echo.
 echo. Usage examples:
 echo.