From db5bf852a4d50da32f8670c4d5d90495bfc48176 Mon Sep 17 00:00:00 2001 From: joonhaengHeo <85541460+joonhaengHeo@users.noreply.github.com> Date: Wed, 12 Apr 2023 22:35:54 +0900 Subject: [PATCH] [Android] Fix to avoid NewStringUTF crash (#25936) * Fix to avoid NewStringUTF crash * restyle * Modify comments * Modify error check, add comments * restyle * Update CharToStringUTF input parameter, add errorCode return * restyle * Add String decode fail log * Add to set null --- .../java/templates/partials/decode_value.zapt | 2 +- .../CHIPAttributeTLVValueDecoder.cpp | 218 +++++++++--------- .../CHIPEventTLVValueDecoder.cpp | 8 +- .../zap-generated/CHIPInvokeCallbacks.cpp | 99 ++++---- .../java/zap-generated/CHIPReadCallbacks.cpp | 90 ++++---- src/lib/support/JniReferences.cpp | 30 +++ src/lib/support/JniReferences.h | 10 + 7 files changed, 235 insertions(+), 222 deletions(-) diff --git a/src/controller/java/templates/partials/decode_value.zapt b/src/controller/java/templates/partials/decode_value.zapt index a6fa4ab3cd2e3c..d1c51b5edeee33 100644 --- a/src/controller/java/templates/partials/decode_value.zapt +++ b/src/controller/java/templates/partials/decode_value.zapt @@ -60,7 +60,7 @@ if ({{source}}.IsNull()) { env->SetByteArrayRegion({{target}}ByteArray, 0, static_cast({{source}}.size()), reinterpret_cast({{source}}.data())); {{target}} = {{target}}ByteArray; {{else if (isCharString type)}} - {{target}} = env->NewStringUTF(std::string({{source}}.data(), {{source}}.size()).c_str()); + LogErrorOnFailure(chip::JniReferences::GetInstance().CharToStringUTF({{source}}, {{target}})); {{else}} std::string {{target}}ClassName = "{{asJniClassName type null cluster}}"; std::string {{target}}CtorSignature = "({{asJniSignature type null cluster false}})V"; diff --git a/src/controller/java/zap-generated/CHIPAttributeTLVValueDecoder.cpp b/src/controller/java/zap-generated/CHIPAttributeTLVValueDecoder.cpp index f435fdbdf3cc66..4e02a196cc0db1 100644 --- a/src/controller/java/zap-generated/CHIPAttributeTLVValueDecoder.cpp +++ b/src/controller/java/zap-generated/CHIPAttributeTLVValueDecoder.cpp @@ -1372,7 +1372,7 @@ jobject DecodeAttributeValue(const app::ConcreteAttributePath & aPath, TLV::TLVR return nullptr; } jobject value; - value = env->NewStringUTF(std::string(cppValue.data(), cppValue.size()).c_str()); + LogErrorOnFailure(chip::JniReferences::GetInstance().CharToStringUTF(cppValue, value)); return value; } case Attributes::Description::Id: { @@ -1384,7 +1384,7 @@ jobject DecodeAttributeValue(const app::ConcreteAttributePath & aPath, TLV::TLVR return nullptr; } jobject value; - value = env->NewStringUTF(std::string(cppValue.data(), cppValue.size()).c_str()); + LogErrorOnFailure(chip::JniReferences::GetInstance().CharToStringUTF(cppValue, value)); return value; } case Attributes::InactiveText::Id: { @@ -1396,7 +1396,7 @@ jobject DecodeAttributeValue(const app::ConcreteAttributePath & aPath, TLV::TLVR return nullptr; } jobject value; - value = env->NewStringUTF(std::string(cppValue.data(), cppValue.size()).c_str()); + LogErrorOnFailure(chip::JniReferences::GetInstance().CharToStringUTF(cppValue, value)); return value; } case Attributes::OutOfService::Id: { @@ -2540,7 +2540,7 @@ jobject DecodeAttributeValue(const app::ConcreteAttributePath & aPath, TLV::TLVR newElement_0_actionIDCtorSignature.c_str(), entry_0.actionID, newElement_0_actionID); jobject newElement_0_name; - newElement_0_name = env->NewStringUTF(std::string(entry_0.name.data(), entry_0.name.size()).c_str()); + LogErrorOnFailure(chip::JniReferences::GetInstance().CharToStringUTF(entry_0.name, newElement_0_name)); jobject newElement_0_type; std::string newElement_0_typeClassName = "java/lang/Integer"; std::string newElement_0_typeCtorSignature = "(I)V"; @@ -2614,7 +2614,7 @@ jobject DecodeAttributeValue(const app::ConcreteAttributePath & aPath, TLV::TLVR newElement_0_endpointListIDCtorSignature.c_str(), entry_0.endpointListID, newElement_0_endpointListID); jobject newElement_0_name; - newElement_0_name = env->NewStringUTF(std::string(entry_0.name.data(), entry_0.name.size()).c_str()); + LogErrorOnFailure(chip::JniReferences::GetInstance().CharToStringUTF(entry_0.name, newElement_0_name)); jobject newElement_0_type; std::string newElement_0_typeClassName = "java/lang/Integer"; std::string newElement_0_typeCtorSignature = "(I)V"; @@ -2669,7 +2669,7 @@ jobject DecodeAttributeValue(const app::ConcreteAttributePath & aPath, TLV::TLVR return nullptr; } jobject value; - value = env->NewStringUTF(std::string(cppValue.data(), cppValue.size()).c_str()); + LogErrorOnFailure(chip::JniReferences::GetInstance().CharToStringUTF(cppValue, value)); return value; } case Attributes::GeneratedCommandList::Id: { @@ -2832,7 +2832,7 @@ jobject DecodeAttributeValue(const app::ConcreteAttributePath & aPath, TLV::TLVR return nullptr; } jobject value; - value = env->NewStringUTF(std::string(cppValue.data(), cppValue.size()).c_str()); + LogErrorOnFailure(chip::JniReferences::GetInstance().CharToStringUTF(cppValue, value)); return value; } case Attributes::VendorID::Id: { @@ -2859,7 +2859,7 @@ jobject DecodeAttributeValue(const app::ConcreteAttributePath & aPath, TLV::TLVR return nullptr; } jobject value; - value = env->NewStringUTF(std::string(cppValue.data(), cppValue.size()).c_str()); + LogErrorOnFailure(chip::JniReferences::GetInstance().CharToStringUTF(cppValue, value)); return value; } case Attributes::ProductID::Id: { @@ -2886,7 +2886,7 @@ jobject DecodeAttributeValue(const app::ConcreteAttributePath & aPath, TLV::TLVR return nullptr; } jobject value; - value = env->NewStringUTF(std::string(cppValue.data(), cppValue.size()).c_str()); + LogErrorOnFailure(chip::JniReferences::GetInstance().CharToStringUTF(cppValue, value)); return value; } case Attributes::Location::Id: { @@ -2898,7 +2898,7 @@ jobject DecodeAttributeValue(const app::ConcreteAttributePath & aPath, TLV::TLVR return nullptr; } jobject value; - value = env->NewStringUTF(std::string(cppValue.data(), cppValue.size()).c_str()); + LogErrorOnFailure(chip::JniReferences::GetInstance().CharToStringUTF(cppValue, value)); return value; } case Attributes::HardwareVersion::Id: { @@ -2925,7 +2925,7 @@ jobject DecodeAttributeValue(const app::ConcreteAttributePath & aPath, TLV::TLVR return nullptr; } jobject value; - value = env->NewStringUTF(std::string(cppValue.data(), cppValue.size()).c_str()); + LogErrorOnFailure(chip::JniReferences::GetInstance().CharToStringUTF(cppValue, value)); return value; } case Attributes::SoftwareVersion::Id: { @@ -2952,7 +2952,7 @@ jobject DecodeAttributeValue(const app::ConcreteAttributePath & aPath, TLV::TLVR return nullptr; } jobject value; - value = env->NewStringUTF(std::string(cppValue.data(), cppValue.size()).c_str()); + LogErrorOnFailure(chip::JniReferences::GetInstance().CharToStringUTF(cppValue, value)); return value; } case Attributes::ManufacturingDate::Id: { @@ -2964,7 +2964,7 @@ jobject DecodeAttributeValue(const app::ConcreteAttributePath & aPath, TLV::TLVR return nullptr; } jobject value; - value = env->NewStringUTF(std::string(cppValue.data(), cppValue.size()).c_str()); + LogErrorOnFailure(chip::JniReferences::GetInstance().CharToStringUTF(cppValue, value)); return value; } case Attributes::PartNumber::Id: { @@ -2976,7 +2976,7 @@ jobject DecodeAttributeValue(const app::ConcreteAttributePath & aPath, TLV::TLVR return nullptr; } jobject value; - value = env->NewStringUTF(std::string(cppValue.data(), cppValue.size()).c_str()); + LogErrorOnFailure(chip::JniReferences::GetInstance().CharToStringUTF(cppValue, value)); return value; } case Attributes::ProductURL::Id: { @@ -2988,7 +2988,7 @@ jobject DecodeAttributeValue(const app::ConcreteAttributePath & aPath, TLV::TLVR return nullptr; } jobject value; - value = env->NewStringUTF(std::string(cppValue.data(), cppValue.size()).c_str()); + LogErrorOnFailure(chip::JniReferences::GetInstance().CharToStringUTF(cppValue, value)); return value; } case Attributes::ProductLabel::Id: { @@ -3000,7 +3000,7 @@ jobject DecodeAttributeValue(const app::ConcreteAttributePath & aPath, TLV::TLVR return nullptr; } jobject value; - value = env->NewStringUTF(std::string(cppValue.data(), cppValue.size()).c_str()); + LogErrorOnFailure(chip::JniReferences::GetInstance().CharToStringUTF(cppValue, value)); return value; } case Attributes::SerialNumber::Id: { @@ -3012,7 +3012,7 @@ jobject DecodeAttributeValue(const app::ConcreteAttributePath & aPath, TLV::TLVR return nullptr; } jobject value; - value = env->NewStringUTF(std::string(cppValue.data(), cppValue.size()).c_str()); + LogErrorOnFailure(chip::JniReferences::GetInstance().CharToStringUTF(cppValue, value)); return value; } case Attributes::LocalConfigDisabled::Id: { @@ -3054,7 +3054,7 @@ jobject DecodeAttributeValue(const app::ConcreteAttributePath & aPath, TLV::TLVR return nullptr; } jobject value; - value = env->NewStringUTF(std::string(cppValue.data(), cppValue.size()).c_str()); + LogErrorOnFailure(chip::JniReferences::GetInstance().CharToStringUTF(cppValue, value)); return value; } case Attributes::CapabilityMinima::Id: { @@ -3627,7 +3627,7 @@ jobject DecodeAttributeValue(const app::ConcreteAttributePath & aPath, TLV::TLVR return nullptr; } jobject value; - value = env->NewStringUTF(std::string(cppValue.data(), cppValue.size()).c_str()); + LogErrorOnFailure(chip::JniReferences::GetInstance().CharToStringUTF(cppValue, value)); return value; } case Attributes::SupportedLocales::Id: { @@ -3646,7 +3646,7 @@ jobject DecodeAttributeValue(const app::ConcreteAttributePath & aPath, TLV::TLVR { auto & entry_0 = iter_value_0.GetValue(); jobject newElement_0; - newElement_0 = env->NewStringUTF(std::string(entry_0.data(), entry_0.size()).c_str()); + LogErrorOnFailure(chip::JniReferences::GetInstance().CharToStringUTF(entry_0, newElement_0)); chip::JniReferences::GetInstance().AddToList(value, newElement_0); } return value; @@ -4327,7 +4327,7 @@ jobject DecodeAttributeValue(const app::ConcreteAttributePath & aPath, TLV::TLVR return nullptr; } jobject value; - value = env->NewStringUTF(std::string(cppValue.data(), cppValue.size()).c_str()); + LogErrorOnFailure(chip::JniReferences::GetInstance().CharToStringUTF(cppValue, value)); return value; } case Attributes::WiredAssessedInputVoltage::Id: { @@ -4639,7 +4639,7 @@ jobject DecodeAttributeValue(const app::ConcreteAttributePath & aPath, TLV::TLVR return nullptr; } jobject value; - value = env->NewStringUTF(std::string(cppValue.data(), cppValue.size()).c_str()); + LogErrorOnFailure(chip::JniReferences::GetInstance().CharToStringUTF(cppValue, value)); return value; } case Attributes::BatCommonDesignation::Id: { @@ -4666,7 +4666,7 @@ jobject DecodeAttributeValue(const app::ConcreteAttributePath & aPath, TLV::TLVR return nullptr; } jobject value; - value = env->NewStringUTF(std::string(cppValue.data(), cppValue.size()).c_str()); + LogErrorOnFailure(chip::JniReferences::GetInstance().CharToStringUTF(cppValue, value)); return value; } case Attributes::BatIECDesignation::Id: { @@ -4678,7 +4678,7 @@ jobject DecodeAttributeValue(const app::ConcreteAttributePath & aPath, TLV::TLVR return nullptr; } jobject value; - value = env->NewStringUTF(std::string(cppValue.data(), cppValue.size()).c_str()); + LogErrorOnFailure(chip::JniReferences::GetInstance().CharToStringUTF(cppValue, value)); return value; } case Attributes::BatApprovedChemistry::Id: { @@ -5664,7 +5664,7 @@ jobject DecodeAttributeValue(const app::ConcreteAttributePath & aPath, TLV::TLVR auto & entry_0 = iter_value_0.GetValue(); jobject newElement_0; jobject newElement_0_name; - newElement_0_name = env->NewStringUTF(std::string(entry_0.name.data(), entry_0.name.size()).c_str()); + LogErrorOnFailure(chip::JniReferences::GetInstance().CharToStringUTF(entry_0.name, newElement_0_name)); jobject newElement_0_isOperational; std::string newElement_0_isOperationalClassName = "java/lang/Boolean"; std::string newElement_0_isOperationalCtorSignature = "(Z)V"; @@ -6080,8 +6080,8 @@ jobject DecodeAttributeValue(const app::ConcreteAttributePath & aPath, TLV::TLVR else { jobject newElement_0_nameInsideOptional; - newElement_0_nameInsideOptional = - env->NewStringUTF(std::string(entry_0.name.Value().data(), entry_0.name.Value().size()).c_str()); + LogErrorOnFailure( + chip::JniReferences::GetInstance().CharToStringUTF(entry_0.name.Value(), newElement_0_nameInsideOptional)); chip::JniReferences::GetInstance().CreateOptional(newElement_0_nameInsideOptional, newElement_0_name); } jobject newElement_0_stackFreeCurrent; @@ -6400,7 +6400,7 @@ jobject DecodeAttributeValue(const app::ConcreteAttributePath & aPath, TLV::TLVR } else { - value = env->NewStringUTF(std::string(cppValue.Value().data(), cppValue.Value().size()).c_str()); + LogErrorOnFailure(chip::JniReferences::GetInstance().CharToStringUTF(cppValue.Value(), value)); } return value; } @@ -8606,7 +8606,7 @@ jobject DecodeAttributeValue(const app::ConcreteAttributePath & aPath, TLV::TLVR return nullptr; } jobject value; - value = env->NewStringUTF(std::string(cppValue.data(), cppValue.size()).c_str()); + LogErrorOnFailure(chip::JniReferences::GetInstance().CharToStringUTF(cppValue, value)); return value; } case Attributes::VendorID::Id: { @@ -8633,7 +8633,7 @@ jobject DecodeAttributeValue(const app::ConcreteAttributePath & aPath, TLV::TLVR return nullptr; } jobject value; - value = env->NewStringUTF(std::string(cppValue.data(), cppValue.size()).c_str()); + LogErrorOnFailure(chip::JniReferences::GetInstance().CharToStringUTF(cppValue, value)); return value; } case Attributes::NodeLabel::Id: { @@ -8645,7 +8645,7 @@ jobject DecodeAttributeValue(const app::ConcreteAttributePath & aPath, TLV::TLVR return nullptr; } jobject value; - value = env->NewStringUTF(std::string(cppValue.data(), cppValue.size()).c_str()); + LogErrorOnFailure(chip::JniReferences::GetInstance().CharToStringUTF(cppValue, value)); return value; } case Attributes::HardwareVersion::Id: { @@ -8672,7 +8672,7 @@ jobject DecodeAttributeValue(const app::ConcreteAttributePath & aPath, TLV::TLVR return nullptr; } jobject value; - value = env->NewStringUTF(std::string(cppValue.data(), cppValue.size()).c_str()); + LogErrorOnFailure(chip::JniReferences::GetInstance().CharToStringUTF(cppValue, value)); return value; } case Attributes::SoftwareVersion::Id: { @@ -8699,7 +8699,7 @@ jobject DecodeAttributeValue(const app::ConcreteAttributePath & aPath, TLV::TLVR return nullptr; } jobject value; - value = env->NewStringUTF(std::string(cppValue.data(), cppValue.size()).c_str()); + LogErrorOnFailure(chip::JniReferences::GetInstance().CharToStringUTF(cppValue, value)); return value; } case Attributes::ManufacturingDate::Id: { @@ -8711,7 +8711,7 @@ jobject DecodeAttributeValue(const app::ConcreteAttributePath & aPath, TLV::TLVR return nullptr; } jobject value; - value = env->NewStringUTF(std::string(cppValue.data(), cppValue.size()).c_str()); + LogErrorOnFailure(chip::JniReferences::GetInstance().CharToStringUTF(cppValue, value)); return value; } case Attributes::PartNumber::Id: { @@ -8723,7 +8723,7 @@ jobject DecodeAttributeValue(const app::ConcreteAttributePath & aPath, TLV::TLVR return nullptr; } jobject value; - value = env->NewStringUTF(std::string(cppValue.data(), cppValue.size()).c_str()); + LogErrorOnFailure(chip::JniReferences::GetInstance().CharToStringUTF(cppValue, value)); return value; } case Attributes::ProductURL::Id: { @@ -8735,7 +8735,7 @@ jobject DecodeAttributeValue(const app::ConcreteAttributePath & aPath, TLV::TLVR return nullptr; } jobject value; - value = env->NewStringUTF(std::string(cppValue.data(), cppValue.size()).c_str()); + LogErrorOnFailure(chip::JniReferences::GetInstance().CharToStringUTF(cppValue, value)); return value; } case Attributes::ProductLabel::Id: { @@ -8747,7 +8747,7 @@ jobject DecodeAttributeValue(const app::ConcreteAttributePath & aPath, TLV::TLVR return nullptr; } jobject value; - value = env->NewStringUTF(std::string(cppValue.data(), cppValue.size()).c_str()); + LogErrorOnFailure(chip::JniReferences::GetInstance().CharToStringUTF(cppValue, value)); return value; } case Attributes::SerialNumber::Id: { @@ -8759,7 +8759,7 @@ jobject DecodeAttributeValue(const app::ConcreteAttributePath & aPath, TLV::TLVR return nullptr; } jobject value; - value = env->NewStringUTF(std::string(cppValue.data(), cppValue.size()).c_str()); + LogErrorOnFailure(chip::JniReferences::GetInstance().CharToStringUTF(cppValue, value)); return value; } case Attributes::Reachable::Id: { @@ -8786,7 +8786,7 @@ jobject DecodeAttributeValue(const app::ConcreteAttributePath & aPath, TLV::TLVR return nullptr; } jobject value; - value = env->NewStringUTF(std::string(cppValue.data(), cppValue.size()).c_str()); + LogErrorOnFailure(chip::JniReferences::GetInstance().CharToStringUTF(cppValue, value)); return value; } case Attributes::GeneratedCommandList::Id: { @@ -9403,7 +9403,7 @@ jobject DecodeAttributeValue(const app::ConcreteAttributePath & aPath, TLV::TLVR newElement_0_nodeIDCtorSignature.c_str(), entry_0.nodeID, newElement_0_nodeID); jobject newElement_0_label; - newElement_0_label = env->NewStringUTF(std::string(entry_0.label.data(), entry_0.label.size()).c_str()); + LogErrorOnFailure(chip::JniReferences::GetInstance().CharToStringUTF(entry_0.label, newElement_0_label)); jobject newElement_0_fabricIndex; std::string newElement_0_fabricIndexClassName = "java/lang/Integer"; std::string newElement_0_fabricIndexCtorSignature = "(I)V"; @@ -9743,8 +9743,8 @@ jobject DecodeAttributeValue(const app::ConcreteAttributePath & aPath, TLV::TLVR else { jobject newElement_0_groupNameInsideOptional; - newElement_0_groupNameInsideOptional = - env->NewStringUTF(std::string(entry_0.groupName.Value().data(), entry_0.groupName.Value().size()).c_str()); + LogErrorOnFailure(chip::JniReferences::GetInstance().CharToStringUTF(entry_0.groupName.Value(), + newElement_0_groupNameInsideOptional)); chip::JniReferences::GetInstance().CreateOptional(newElement_0_groupNameInsideOptional, newElement_0_groupName); } jobject newElement_0_fabricIndex; @@ -9961,9 +9961,9 @@ jobject DecodeAttributeValue(const app::ConcreteAttributePath & aPath, TLV::TLVR auto & entry_0 = iter_value_0.GetValue(); jobject newElement_0; jobject newElement_0_label; - newElement_0_label = env->NewStringUTF(std::string(entry_0.label.data(), entry_0.label.size()).c_str()); + LogErrorOnFailure(chip::JniReferences::GetInstance().CharToStringUTF(entry_0.label, newElement_0_label)); jobject newElement_0_value; - newElement_0_value = env->NewStringUTF(std::string(entry_0.value.data(), entry_0.value.size()).c_str()); + LogErrorOnFailure(chip::JniReferences::GetInstance().CharToStringUTF(entry_0.value, newElement_0_value)); jclass labelStructStructClass_1; err = chip::JniReferences::GetInstance().GetClassRef( @@ -10140,9 +10140,9 @@ jobject DecodeAttributeValue(const app::ConcreteAttributePath & aPath, TLV::TLVR auto & entry_0 = iter_value_0.GetValue(); jobject newElement_0; jobject newElement_0_label; - newElement_0_label = env->NewStringUTF(std::string(entry_0.label.data(), entry_0.label.size()).c_str()); + LogErrorOnFailure(chip::JniReferences::GetInstance().CharToStringUTF(entry_0.label, newElement_0_label)); jobject newElement_0_value; - newElement_0_value = env->NewStringUTF(std::string(entry_0.value.data(), entry_0.value.size()).c_str()); + LogErrorOnFailure(chip::JniReferences::GetInstance().CharToStringUTF(entry_0.value, newElement_0_value)); jclass labelStructStructClass_1; err = chip::JniReferences::GetInstance().GetClassRef( @@ -10462,7 +10462,7 @@ jobject DecodeAttributeValue(const app::ConcreteAttributePath & aPath, TLV::TLVR return nullptr; } jobject value; - value = env->NewStringUTF(std::string(cppValue.data(), cppValue.size()).c_str()); + LogErrorOnFailure(chip::JniReferences::GetInstance().CharToStringUTF(cppValue, value)); return value; } case Attributes::StandardNamespace::Id: { @@ -10504,7 +10504,7 @@ jobject DecodeAttributeValue(const app::ConcreteAttributePath & aPath, TLV::TLVR auto & entry_0 = iter_value_0.GetValue(); jobject newElement_0; jobject newElement_0_label; - newElement_0_label = env->NewStringUTF(std::string(entry_0.label.data(), entry_0.label.size()).c_str()); + LogErrorOnFailure(chip::JniReferences::GetInstance().CharToStringUTF(entry_0.label, newElement_0_label)); jobject newElement_0_mode; std::string newElement_0_modeClassName = "java/lang/Integer"; std::string newElement_0_modeCtorSignature = "(I)V"; @@ -11078,7 +11078,7 @@ jobject DecodeAttributeValue(const app::ConcreteAttributePath & aPath, TLV::TLVR return nullptr; } jobject value; - value = env->NewStringUTF(std::string(cppValue.data(), cppValue.size()).c_str()); + LogErrorOnFailure(chip::JniReferences::GetInstance().CharToStringUTF(cppValue, value)); return value; } case Attributes::LEDSettings::Id: { @@ -14415,7 +14415,7 @@ jobject DecodeAttributeValue(const app::ConcreteAttributePath & aPath, TLV::TLVR return nullptr; } jobject value; - value = env->NewStringUTF(std::string(cppValue.data(), cppValue.size()).c_str()); + LogErrorOnFailure(chip::JniReferences::GetInstance().CharToStringUTF(cppValue, value)); return value; } case Attributes::ColorTemperatureMireds::Id: { @@ -15449,7 +15449,7 @@ jobject DecodeAttributeValue(const app::ConcreteAttributePath & aPath, TLV::TLVR return nullptr; } jobject value; - value = env->NewStringUTF(std::string(cppValue.data(), cppValue.size()).c_str()); + LogErrorOnFailure(chip::JniReferences::GetInstance().CharToStringUTF(cppValue, value)); return value; } case Attributes::LampManufacturer::Id: { @@ -15461,7 +15461,7 @@ jobject DecodeAttributeValue(const app::ConcreteAttributePath & aPath, TLV::TLVR return nullptr; } jobject value; - value = env->NewStringUTF(std::string(cppValue.data(), cppValue.size()).c_str()); + LogErrorOnFailure(chip::JniReferences::GetInstance().CharToStringUTF(cppValue, value)); return value; } case Attributes::LampRatedHours::Id: { @@ -17209,7 +17209,7 @@ jobject DecodeAttributeValue(const app::ConcreteAttributePath & aPath, TLV::TLVR return nullptr; } jobject value; - value = env->NewStringUTF(std::string(cppValue.data(), cppValue.size()).c_str()); + LogErrorOnFailure(chip::JniReferences::GetInstance().CharToStringUTF(cppValue, value)); return value; } case Attributes::GeneratedCommandList::Id: { @@ -17384,8 +17384,8 @@ jobject DecodeAttributeValue(const app::ConcreteAttributePath & aPath, TLV::TLVR else { jobject newElement_0_nameInsideOptional; - newElement_0_nameInsideOptional = - env->NewStringUTF(std::string(entry_0.name.Value().data(), entry_0.name.Value().size()).c_str()); + LogErrorOnFailure( + chip::JniReferences::GetInstance().CharToStringUTF(entry_0.name.Value(), newElement_0_nameInsideOptional)); chip::JniReferences::GetInstance().CreateOptional(newElement_0_nameInsideOptional, newElement_0_name); } jobject newElement_0_callSign; @@ -17396,8 +17396,8 @@ jobject DecodeAttributeValue(const app::ConcreteAttributePath & aPath, TLV::TLVR else { jobject newElement_0_callSignInsideOptional; - newElement_0_callSignInsideOptional = - env->NewStringUTF(std::string(entry_0.callSign.Value().data(), entry_0.callSign.Value().size()).c_str()); + LogErrorOnFailure(chip::JniReferences::GetInstance().CharToStringUTF(entry_0.callSign.Value(), + newElement_0_callSignInsideOptional)); chip::JniReferences::GetInstance().CreateOptional(newElement_0_callSignInsideOptional, newElement_0_callSign); } jobject newElement_0_affiliateCallSign; @@ -17408,8 +17408,8 @@ jobject DecodeAttributeValue(const app::ConcreteAttributePath & aPath, TLV::TLVR else { jobject newElement_0_affiliateCallSignInsideOptional; - newElement_0_affiliateCallSignInsideOptional = env->NewStringUTF( - std::string(entry_0.affiliateCallSign.Value().data(), entry_0.affiliateCallSign.Value().size()).c_str()); + LogErrorOnFailure(chip::JniReferences::GetInstance().CharToStringUTF( + entry_0.affiliateCallSign.Value(), newElement_0_affiliateCallSignInsideOptional)); chip::JniReferences::GetInstance().CreateOptional(newElement_0_affiliateCallSignInsideOptional, newElement_0_affiliateCallSign); } @@ -17454,8 +17454,8 @@ jobject DecodeAttributeValue(const app::ConcreteAttributePath & aPath, TLV::TLVR else { jobject value_operatorName; - value_operatorName = env->NewStringUTF( - std::string(cppValue.Value().operatorName.data(), cppValue.Value().operatorName.size()).c_str()); + LogErrorOnFailure( + chip::JniReferences::GetInstance().CharToStringUTF(cppValue.Value().operatorName, value_operatorName)); jobject value_lineupName; if (!cppValue.Value().lineupName.HasValue()) { @@ -17464,9 +17464,8 @@ jobject DecodeAttributeValue(const app::ConcreteAttributePath & aPath, TLV::TLVR else { jobject value_lineupNameInsideOptional; - value_lineupNameInsideOptional = env->NewStringUTF( - std::string(cppValue.Value().lineupName.Value().data(), cppValue.Value().lineupName.Value().size()) - .c_str()); + LogErrorOnFailure(chip::JniReferences::GetInstance().CharToStringUTF(cppValue.Value().lineupName.Value(), + value_lineupNameInsideOptional)); chip::JniReferences::GetInstance().CreateOptional(value_lineupNameInsideOptional, value_lineupName); } jobject value_postalCode; @@ -17477,9 +17476,8 @@ jobject DecodeAttributeValue(const app::ConcreteAttributePath & aPath, TLV::TLVR else { jobject value_postalCodeInsideOptional; - value_postalCodeInsideOptional = env->NewStringUTF( - std::string(cppValue.Value().postalCode.Value().data(), cppValue.Value().postalCode.Value().size()) - .c_str()); + LogErrorOnFailure(chip::JniReferences::GetInstance().CharToStringUTF(cppValue.Value().postalCode.Value(), + value_postalCodeInsideOptional)); chip::JniReferences::GetInstance().CreateOptional(value_postalCodeInsideOptional, value_postalCode); } jobject value_lineupInfoType; @@ -17546,8 +17544,8 @@ jobject DecodeAttributeValue(const app::ConcreteAttributePath & aPath, TLV::TLVR else { jobject value_nameInsideOptional; - value_nameInsideOptional = env->NewStringUTF( - std::string(cppValue.Value().name.Value().data(), cppValue.Value().name.Value().size()).c_str()); + LogErrorOnFailure(chip::JniReferences::GetInstance().CharToStringUTF(cppValue.Value().name.Value(), + value_nameInsideOptional)); chip::JniReferences::GetInstance().CreateOptional(value_nameInsideOptional, value_name); } jobject value_callSign; @@ -17558,8 +17556,8 @@ jobject DecodeAttributeValue(const app::ConcreteAttributePath & aPath, TLV::TLVR else { jobject value_callSignInsideOptional; - value_callSignInsideOptional = env->NewStringUTF( - std::string(cppValue.Value().callSign.Value().data(), cppValue.Value().callSign.Value().size()).c_str()); + LogErrorOnFailure(chip::JniReferences::GetInstance().CharToStringUTF(cppValue.Value().callSign.Value(), + value_callSignInsideOptional)); chip::JniReferences::GetInstance().CreateOptional(value_callSignInsideOptional, value_callSign); } jobject value_affiliateCallSign; @@ -17570,10 +17568,8 @@ jobject DecodeAttributeValue(const app::ConcreteAttributePath & aPath, TLV::TLVR else { jobject value_affiliateCallSignInsideOptional; - value_affiliateCallSignInsideOptional = - env->NewStringUTF(std::string(cppValue.Value().affiliateCallSign.Value().data(), - cppValue.Value().affiliateCallSign.Value().size()) - .c_str()); + LogErrorOnFailure(chip::JniReferences::GetInstance().CharToStringUTF(cppValue.Value().affiliateCallSign.Value(), + value_affiliateCallSignInsideOptional)); chip::JniReferences::GetInstance().CreateOptional(value_affiliateCallSignInsideOptional, value_affiliateCallSign); } @@ -17759,7 +17755,7 @@ jobject DecodeAttributeValue(const app::ConcreteAttributePath & aPath, TLV::TLVR newElement_0_identifierCtorSignature.c_str(), entry_0.identifier, newElement_0_identifier); jobject newElement_0_name; - newElement_0_name = env->NewStringUTF(std::string(entry_0.name.data(), entry_0.name.size()).c_str()); + LogErrorOnFailure(chip::JniReferences::GetInstance().CharToStringUTF(entry_0.name, newElement_0_name)); jclass targetInfoStructStructClass_1; err = chip::JniReferences::GetInstance().GetClassRef( @@ -18274,10 +18270,10 @@ jobject DecodeAttributeValue(const app::ConcreteAttributePath & aPath, TLV::TLVR newElement_0_inputTypeClassName.c_str(), newElement_0_inputTypeCtorSignature.c_str(), static_cast(entry_0.inputType), newElement_0_inputType); jobject newElement_0_name; - newElement_0_name = env->NewStringUTF(std::string(entry_0.name.data(), entry_0.name.size()).c_str()); + LogErrorOnFailure(chip::JniReferences::GetInstance().CharToStringUTF(entry_0.name, newElement_0_name)); jobject newElement_0_description; - newElement_0_description = - env->NewStringUTF(std::string(entry_0.description.data(), entry_0.description.size()).c_str()); + LogErrorOnFailure( + chip::JniReferences::GetInstance().CharToStringUTF(entry_0.description, newElement_0_description)); jclass inputInfoStructStructClass_1; err = chip::JniReferences::GetInstance().GetClassRef( @@ -18741,7 +18737,7 @@ jobject DecodeAttributeValue(const app::ConcreteAttributePath & aPath, TLV::TLVR { auto & entry_0 = iter_value_0.GetValue(); jobject newElement_0; - newElement_0 = env->NewStringUTF(std::string(entry_0.data(), entry_0.size()).c_str()); + LogErrorOnFailure(chip::JniReferences::GetInstance().CharToStringUTF(entry_0, newElement_0)); chip::JniReferences::GetInstance().AddToList(value, newElement_0); } return value; @@ -18926,7 +18922,7 @@ jobject DecodeAttributeValue(const app::ConcreteAttributePath & aPath, TLV::TLVR newElement_0_outputTypeClassName.c_str(), newElement_0_outputTypeCtorSignature.c_str(), static_cast(entry_0.outputType), newElement_0_outputType); jobject newElement_0_name; - newElement_0_name = env->NewStringUTF(std::string(entry_0.name.data(), entry_0.name.size()).c_str()); + LogErrorOnFailure(chip::JniReferences::GetInstance().CharToStringUTF(entry_0.name, newElement_0_name)); jclass outputInfoStructStructClass_1; err = chip::JniReferences::GetInstance().GetClassRef( @@ -19148,9 +19144,8 @@ jobject DecodeAttributeValue(const app::ConcreteAttributePath & aPath, TLV::TLVR value_application_catalogVendorIDClassName.c_str(), value_application_catalogVendorIDCtorSignature.c_str(), cppValue.Value().application.catalogVendorID, value_application_catalogVendorID); jobject value_application_applicationID; - value_application_applicationID = env->NewStringUTF(std::string(cppValue.Value().application.applicationID.data(), - cppValue.Value().application.applicationID.size()) - .c_str()); + LogErrorOnFailure(chip::JniReferences::GetInstance().CharToStringUTF(cppValue.Value().application.applicationID, + value_application_applicationID)); jclass applicationStructStructClass_2; err = chip::JniReferences::GetInstance().GetClassRef( @@ -19355,7 +19350,7 @@ jobject DecodeAttributeValue(const app::ConcreteAttributePath & aPath, TLV::TLVR return nullptr; } jobject value; - value = env->NewStringUTF(std::string(cppValue.data(), cppValue.size()).c_str()); + LogErrorOnFailure(chip::JniReferences::GetInstance().CharToStringUTF(cppValue, value)); return value; } case Attributes::VendorID::Id: { @@ -19382,7 +19377,7 @@ jobject DecodeAttributeValue(const app::ConcreteAttributePath & aPath, TLV::TLVR return nullptr; } jobject value; - value = env->NewStringUTF(std::string(cppValue.data(), cppValue.size()).c_str()); + LogErrorOnFailure(chip::JniReferences::GetInstance().CharToStringUTF(cppValue, value)); return value; } case Attributes::ProductID::Id: { @@ -19416,8 +19411,7 @@ jobject DecodeAttributeValue(const app::ConcreteAttributePath & aPath, TLV::TLVR value_catalogVendorIDCtorSignature.c_str(), cppValue.catalogVendorID, value_catalogVendorID); jobject value_applicationID; - value_applicationID = - env->NewStringUTF(std::string(cppValue.applicationID.data(), cppValue.applicationID.size()).c_str()); + LogErrorOnFailure(chip::JniReferences::GetInstance().CharToStringUTF(cppValue.applicationID, value_applicationID)); jclass applicationStructStructClass_0; err = chip::JniReferences::GetInstance().GetClassRef( @@ -19463,7 +19457,7 @@ jobject DecodeAttributeValue(const app::ConcreteAttributePath & aPath, TLV::TLVR return nullptr; } jobject value; - value = env->NewStringUTF(std::string(cppValue.data(), cppValue.size()).c_str()); + LogErrorOnFailure(chip::JniReferences::GetInstance().CharToStringUTF(cppValue, value)); return value; } case Attributes::AllowedVendorList::Id: { @@ -22569,7 +22563,7 @@ jobject DecodeAttributeValue(const app::ConcreteAttributePath & aPath, TLV::TLVR return nullptr; } jobject value; - value = env->NewStringUTF(std::string(cppValue.data(), cppValue.size()).c_str()); + LogErrorOnFailure(chip::JniReferences::GetInstance().CharToStringUTF(cppValue, value)); return value; } case Attributes::LongCharString::Id: { @@ -22581,7 +22575,7 @@ jobject DecodeAttributeValue(const app::ConcreteAttributePath & aPath, TLV::TLVR return nullptr; } jobject value; - value = env->NewStringUTF(std::string(cppValue.data(), cppValue.size()).c_str()); + LogErrorOnFailure(chip::JniReferences::GetInstance().CharToStringUTF(cppValue, value)); return value; } case Attributes::EpochUs::Id: { @@ -22706,8 +22700,8 @@ jobject DecodeAttributeValue(const app::ConcreteAttributePath & aPath, TLV::TLVR } else { - newElement_0_nullableString = env->NewStringUTF( - std::string(entry_0.nullableString.Value().data(), entry_0.nullableString.Value().size()).c_str()); + LogErrorOnFailure(chip::JniReferences::GetInstance().CharToStringUTF(entry_0.nullableString.Value(), + newElement_0_nullableString)); } jobject newElement_0_optionalString; if (!entry_0.optionalString.HasValue()) @@ -22717,8 +22711,8 @@ jobject DecodeAttributeValue(const app::ConcreteAttributePath & aPath, TLV::TLVR else { jobject newElement_0_optionalStringInsideOptional; - newElement_0_optionalStringInsideOptional = env->NewStringUTF( - std::string(entry_0.optionalString.Value().data(), entry_0.optionalString.Value().size()).c_str()); + LogErrorOnFailure(chip::JniReferences::GetInstance().CharToStringUTF( + entry_0.optionalString.Value(), newElement_0_optionalStringInsideOptional)); chip::JniReferences::GetInstance().CreateOptional(newElement_0_optionalStringInsideOptional, newElement_0_optionalString); } @@ -22736,10 +22730,8 @@ jobject DecodeAttributeValue(const app::ConcreteAttributePath & aPath, TLV::TLVR } else { - newElement_0_nullableOptionalStringInsideOptional = - env->NewStringUTF(std::string(entry_0.nullableOptionalString.Value().Value().data(), - entry_0.nullableOptionalString.Value().Value().size()) - .c_str()); + LogErrorOnFailure(chip::JniReferences::GetInstance().CharToStringUTF( + entry_0.nullableOptionalString.Value().Value(), newElement_0_nullableOptionalStringInsideOptional)); } chip::JniReferences::GetInstance().CreateOptional(newElement_0_nullableOptionalStringInsideOptional, newElement_0_nullableOptionalString); @@ -22777,8 +22769,8 @@ jobject DecodeAttributeValue(const app::ConcreteAttributePath & aPath, TLV::TLVR reinterpret_cast(entry_0.nullableStruct.Value().d.data())); newElement_0_nullableStruct_d = newElement_0_nullableStruct_dByteArray; jobject newElement_0_nullableStruct_e; - newElement_0_nullableStruct_e = env->NewStringUTF( - std::string(entry_0.nullableStruct.Value().e.data(), entry_0.nullableStruct.Value().e.size()).c_str()); + LogErrorOnFailure(chip::JniReferences::GetInstance().CharToStringUTF(entry_0.nullableStruct.Value().e, + newElement_0_nullableStruct_e)); jobject newElement_0_nullableStruct_f; std::string newElement_0_nullableStruct_fClassName = "java/lang/Integer"; std::string newElement_0_nullableStruct_fCtorSignature = "(I)V"; @@ -22859,8 +22851,8 @@ jobject DecodeAttributeValue(const app::ConcreteAttributePath & aPath, TLV::TLVR reinterpret_cast(entry_0.optionalStruct.Value().d.data())); newElement_0_optionalStructInsideOptional_d = newElement_0_optionalStructInsideOptional_dByteArray; jobject newElement_0_optionalStructInsideOptional_e; - newElement_0_optionalStructInsideOptional_e = env->NewStringUTF( - std::string(entry_0.optionalStruct.Value().e.data(), entry_0.optionalStruct.Value().e.size()).c_str()); + LogErrorOnFailure(chip::JniReferences::GetInstance().CharToStringUTF( + entry_0.optionalStruct.Value().e, newElement_0_optionalStructInsideOptional_e)); jobject newElement_0_optionalStructInsideOptional_f; std::string newElement_0_optionalStructInsideOptional_fClassName = "java/lang/Integer"; std::string newElement_0_optionalStructInsideOptional_fCtorSignature = "(I)V"; @@ -22956,10 +22948,8 @@ jobject DecodeAttributeValue(const app::ConcreteAttributePath & aPath, TLV::TLVR newElement_0_nullableOptionalStructInsideOptional_d = newElement_0_nullableOptionalStructInsideOptional_dByteArray; jobject newElement_0_nullableOptionalStructInsideOptional_e; - newElement_0_nullableOptionalStructInsideOptional_e = - env->NewStringUTF(std::string(entry_0.nullableOptionalStruct.Value().Value().e.data(), - entry_0.nullableOptionalStruct.Value().Value().e.size()) - .c_str()); + LogErrorOnFailure(chip::JniReferences::GetInstance().CharToStringUTF( + entry_0.nullableOptionalStruct.Value().Value().e, newElement_0_nullableOptionalStructInsideOptional_e)); jobject newElement_0_nullableOptionalStructInsideOptional_f; std::string newElement_0_nullableOptionalStructInsideOptional_fClassName = "java/lang/Integer"; std::string newElement_0_nullableOptionalStructInsideOptional_fCtorSignature = "(I)V"; @@ -23172,7 +23162,7 @@ jobject DecodeAttributeValue(const app::ConcreteAttributePath & aPath, TLV::TLVR reinterpret_cast(cppValue.d.data())); value_d = value_dByteArray; jobject value_e; - value_e = env->NewStringUTF(std::string(cppValue.e.data(), cppValue.e.size()).c_str()); + LogErrorOnFailure(chip::JniReferences::GetInstance().CharToStringUTF(cppValue.e, value_e)); jobject value_f; std::string value_fClassName = "java/lang/Integer"; std::string value_fCtorSignature = "(I)V"; @@ -23375,8 +23365,8 @@ jobject DecodeAttributeValue(const app::ConcreteAttributePath & aPath, TLV::TLVR newElement_0_nullableOptionalFabricSensitiveInt8u); } jobject newElement_0_fabricSensitiveCharString; - newElement_0_fabricSensitiveCharString = env->NewStringUTF( - std::string(entry_0.fabricSensitiveCharString.data(), entry_0.fabricSensitiveCharString.size()).c_str()); + LogErrorOnFailure(chip::JniReferences::GetInstance().CharToStringUTF(entry_0.fabricSensitiveCharString, + newElement_0_fabricSensitiveCharString)); jobject newElement_0_fabricSensitiveStruct; jobject newElement_0_fabricSensitiveStruct_a; std::string newElement_0_fabricSensitiveStruct_aClassName = "java/lang/Integer"; @@ -23407,8 +23397,8 @@ jobject DecodeAttributeValue(const app::ConcreteAttributePath & aPath, TLV::TLVR reinterpret_cast(entry_0.fabricSensitiveStruct.d.data())); newElement_0_fabricSensitiveStruct_d = newElement_0_fabricSensitiveStruct_dByteArray; jobject newElement_0_fabricSensitiveStruct_e; - newElement_0_fabricSensitiveStruct_e = env->NewStringUTF( - std::string(entry_0.fabricSensitiveStruct.e.data(), entry_0.fabricSensitiveStruct.e.size()).c_str()); + LogErrorOnFailure(chip::JniReferences::GetInstance().CharToStringUTF(entry_0.fabricSensitiveStruct.e, + newElement_0_fabricSensitiveStruct_e)); jobject newElement_0_fabricSensitiveStruct_f; std::string newElement_0_fabricSensitiveStruct_fClassName = "java/lang/Integer"; std::string newElement_0_fabricSensitiveStruct_fCtorSignature = "(I)V"; @@ -24150,7 +24140,7 @@ jobject DecodeAttributeValue(const app::ConcreteAttributePath & aPath, TLV::TLVR } else { - value = env->NewStringUTF(std::string(cppValue.Value().data(), cppValue.Value().size()).c_str()); + LogErrorOnFailure(chip::JniReferences::GetInstance().CharToStringUTF(cppValue.Value(), value)); } return value; } @@ -24212,7 +24202,7 @@ jobject DecodeAttributeValue(const app::ConcreteAttributePath & aPath, TLV::TLVR reinterpret_cast(cppValue.Value().d.data())); value_d = value_dByteArray; jobject value_e; - value_e = env->NewStringUTF(std::string(cppValue.Value().e.data(), cppValue.Value().e.size()).c_str()); + LogErrorOnFailure(chip::JniReferences::GetInstance().CharToStringUTF(cppValue.Value().e, value_e)); jobject value_f; std::string value_fClassName = "java/lang/Integer"; std::string value_fCtorSignature = "(I)V"; diff --git a/src/controller/java/zap-generated/CHIPEventTLVValueDecoder.cpp b/src/controller/java/zap-generated/CHIPEventTLVValueDecoder.cpp index ab27364d930ee3..066d36bdd1f4d2 100644 --- a/src/controller/java/zap-generated/CHIPEventTLVValueDecoder.cpp +++ b/src/controller/java/zap-generated/CHIPEventTLVValueDecoder.cpp @@ -1420,8 +1420,8 @@ jobject DecodeEventValue(const app::ConcreteEventPath & aPath, TLV::TLVReader & else { jobject value_nameInsideOptional; - value_nameInsideOptional = - env->NewStringUTF(std::string(cppValue.name.Value().data(), cppValue.name.Value().size()).c_str()); + LogErrorOnFailure( + chip::JniReferences::GetInstance().CharToStringUTF(cppValue.name.Value(), value_nameInsideOptional)); chip::JniReferences::GetInstance().CreateOptional(value_nameInsideOptional, value_name); } @@ -3498,7 +3498,7 @@ jobject DecodeEventValue(const app::ConcreteEventPath & aPath, TLV::TLVReader & reinterpret_cast(cppValue.arg4.d.data())); value_arg4_d = value_arg4_dByteArray; jobject value_arg4_e; - value_arg4_e = env->NewStringUTF(std::string(cppValue.arg4.e.data(), cppValue.arg4.e.size()).c_str()); + LogErrorOnFailure(chip::JniReferences::GetInstance().CharToStringUTF(cppValue.arg4.e, value_arg4_e)); jobject value_arg4_f; std::string value_arg4_fClassName = "java/lang/Integer"; std::string value_arg4_fCtorSignature = "(I)V"; @@ -3566,7 +3566,7 @@ jobject DecodeEventValue(const app::ConcreteEventPath & aPath, TLV::TLVReader & reinterpret_cast(entry_0.d.data())); newElement_0_d = newElement_0_dByteArray; jobject newElement_0_e; - newElement_0_e = env->NewStringUTF(std::string(entry_0.e.data(), entry_0.e.size()).c_str()); + LogErrorOnFailure(chip::JniReferences::GetInstance().CharToStringUTF(entry_0.e, newElement_0_e)); jobject newElement_0_f; std::string newElement_0_fClassName = "java/lang/Integer"; std::string newElement_0_fCtorSignature = "(I)V"; diff --git a/src/controller/java/zap-generated/CHIPInvokeCallbacks.cpp b/src/controller/java/zap-generated/CHIPInvokeCallbacks.cpp index f2527732efb160..2fb5e13227f298 100644 --- a/src/controller/java/zap-generated/CHIPInvokeCallbacks.cpp +++ b/src/controller/java/zap-generated/CHIPInvokeCallbacks.cpp @@ -157,7 +157,7 @@ void CHIPGroupsClusterViewGroupResponseCallback::CallbackFn( chip::JniReferences::GetInstance().CreateBoxedObject(GroupIDClassName.c_str(), GroupIDCtorSignature.c_str(), dataResponse.groupID, GroupID); jobject GroupName; - GroupName = env->NewStringUTF(std::string(dataResponse.groupName.data(), dataResponse.groupName.size()).c_str()); + LogErrorOnFailure(chip::JniReferences::GetInstance().CharToStringUTF(dataResponse.groupName, GroupName)); env->CallVoidMethod(javaCallbackRef, javaMethod, Status, GroupID, GroupName); } @@ -470,8 +470,8 @@ void CHIPScenesClusterViewSceneResponseCallback::CallbackFn( else { jobject SceneNameInsideOptional; - SceneNameInsideOptional = - env->NewStringUTF(std::string(dataResponse.sceneName.Value().data(), dataResponse.sceneName.Value().size()).c_str()); + LogErrorOnFailure( + chip::JniReferences::GetInstance().CharToStringUTF(dataResponse.sceneName.Value(), SceneNameInsideOptional)); chip::JniReferences::GetInstance().CreateOptional(SceneNameInsideOptional, SceneName); } jobject ExtensionFieldSets; @@ -1052,8 +1052,8 @@ void CHIPScenesClusterEnhancedViewSceneResponseCallback::CallbackFn( else { jobject SceneNameInsideOptional; - SceneNameInsideOptional = - env->NewStringUTF(std::string(dataResponse.sceneName.Value().data(), dataResponse.sceneName.Value().size()).c_str()); + LogErrorOnFailure( + chip::JniReferences::GetInstance().CharToStringUTF(dataResponse.sceneName.Value(), SceneNameInsideOptional)); chip::JniReferences::GetInstance().CreateOptional(SceneNameInsideOptional, SceneName); } jobject ExtensionFieldSets; @@ -1321,8 +1321,8 @@ void CHIPOtaSoftwareUpdateProviderClusterQueryImageResponseCallback::CallbackFn( else { jobject ImageURIInsideOptional; - ImageURIInsideOptional = - env->NewStringUTF(std::string(dataResponse.imageURI.Value().data(), dataResponse.imageURI.Value().size()).c_str()); + LogErrorOnFailure( + chip::JniReferences::GetInstance().CharToStringUTF(dataResponse.imageURI.Value(), ImageURIInsideOptional)); chip::JniReferences::GetInstance().CreateOptional(ImageURIInsideOptional, ImageURI); } jobject SoftwareVersion; @@ -1348,9 +1348,8 @@ void CHIPOtaSoftwareUpdateProviderClusterQueryImageResponseCallback::CallbackFn( else { jobject SoftwareVersionStringInsideOptional; - SoftwareVersionStringInsideOptional = env->NewStringUTF( - std::string(dataResponse.softwareVersionString.Value().data(), dataResponse.softwareVersionString.Value().size()) - .c_str()); + LogErrorOnFailure(chip::JniReferences::GetInstance().CharToStringUTF(dataResponse.softwareVersionString.Value(), + SoftwareVersionStringInsideOptional)); chip::JniReferences::GetInstance().CreateOptional(SoftwareVersionStringInsideOptional, SoftwareVersionString); } jobject UpdateToken; @@ -1532,7 +1531,7 @@ void CHIPGeneralCommissioningClusterArmFailSafeResponseCallback::CallbackFn( chip::JniReferences::GetInstance().CreateBoxedObject(ErrorCodeClassName.c_str(), ErrorCodeCtorSignature.c_str(), static_cast(dataResponse.errorCode), ErrorCode); jobject DebugText; - DebugText = env->NewStringUTF(std::string(dataResponse.debugText.data(), dataResponse.debugText.size()).c_str()); + LogErrorOnFailure(chip::JniReferences::GetInstance().CharToStringUTF(dataResponse.debugText, DebugText)); env->CallVoidMethod(javaCallbackRef, javaMethod, ErrorCode, DebugText); } @@ -1598,7 +1597,7 @@ void CHIPGeneralCommissioningClusterSetRegulatoryConfigResponseCallback::Callbac chip::JniReferences::GetInstance().CreateBoxedObject(ErrorCodeClassName.c_str(), ErrorCodeCtorSignature.c_str(), static_cast(dataResponse.errorCode), ErrorCode); jobject DebugText; - DebugText = env->NewStringUTF(std::string(dataResponse.debugText.data(), dataResponse.debugText.size()).c_str()); + LogErrorOnFailure(chip::JniReferences::GetInstance().CharToStringUTF(dataResponse.debugText, DebugText)); env->CallVoidMethod(javaCallbackRef, javaMethod, ErrorCode, DebugText); } @@ -1664,7 +1663,7 @@ void CHIPGeneralCommissioningClusterCommissioningCompleteResponseCallback::Callb chip::JniReferences::GetInstance().CreateBoxedObject(ErrorCodeClassName.c_str(), ErrorCodeCtorSignature.c_str(), static_cast(dataResponse.errorCode), ErrorCode); jobject DebugText; - DebugText = env->NewStringUTF(std::string(dataResponse.debugText.data(), dataResponse.debugText.size()).c_str()); + LogErrorOnFailure(chip::JniReferences::GetInstance().CharToStringUTF(dataResponse.debugText, DebugText)); env->CallVoidMethod(javaCallbackRef, javaMethod, ErrorCode, DebugText); } @@ -1737,8 +1736,8 @@ void CHIPNetworkCommissioningClusterScanNetworksResponseCallback::CallbackFn( else { jobject DebugTextInsideOptional; - DebugTextInsideOptional = - env->NewStringUTF(std::string(dataResponse.debugText.Value().data(), dataResponse.debugText.Value().size()).c_str()); + LogErrorOnFailure( + chip::JniReferences::GetInstance().CharToStringUTF(dataResponse.debugText.Value(), DebugTextInsideOptional)); chip::JniReferences::GetInstance().CreateOptional(DebugTextInsideOptional, DebugText); } jobject WiFiScanResults; @@ -1842,8 +1841,7 @@ void CHIPNetworkCommissioningClusterScanNetworksResponseCallback::CallbackFn( newElement_1_extendedPanIdCtorSignature.c_str(), entry_1.extendedPanId, newElement_1_extendedPanId); jobject newElement_1_networkName; - newElement_1_networkName = - env->NewStringUTF(std::string(entry_1.networkName.data(), entry_1.networkName.size()).c_str()); + LogErrorOnFailure(chip::JniReferences::GetInstance().CharToStringUTF(entry_1.networkName, newElement_1_networkName)); jobject newElement_1_channel; std::string newElement_1_channelClassName = "java/lang/Integer"; std::string newElement_1_channelCtorSignature = "(I)V"; @@ -1971,8 +1969,8 @@ void CHIPNetworkCommissioningClusterNetworkConfigResponseCallback::CallbackFn( else { jobject DebugTextInsideOptional; - DebugTextInsideOptional = - env->NewStringUTF(std::string(dataResponse.debugText.Value().data(), dataResponse.debugText.Value().size()).c_str()); + LogErrorOnFailure( + chip::JniReferences::GetInstance().CharToStringUTF(dataResponse.debugText.Value(), DebugTextInsideOptional)); chip::JniReferences::GetInstance().CreateOptional(DebugTextInsideOptional, DebugText); } jobject NetworkIndex; @@ -2061,8 +2059,8 @@ void CHIPNetworkCommissioningClusterConnectNetworkResponseCallback::CallbackFn( else { jobject DebugTextInsideOptional; - DebugTextInsideOptional = - env->NewStringUTF(std::string(dataResponse.debugText.Value().data(), dataResponse.debugText.Value().size()).c_str()); + LogErrorOnFailure( + chip::JniReferences::GetInstance().CharToStringUTF(dataResponse.debugText.Value(), DebugTextInsideOptional)); chip::JniReferences::GetInstance().CreateOptional(DebugTextInsideOptional, DebugText); } jobject ErrorValue; @@ -2451,8 +2449,8 @@ void CHIPOperationalCredentialsClusterNOCResponseCallback::CallbackFn( else { jobject DebugTextInsideOptional; - DebugTextInsideOptional = - env->NewStringUTF(std::string(dataResponse.debugText.Value().data(), dataResponse.debugText.Value().size()).c_str()); + LogErrorOnFailure( + chip::JniReferences::GetInstance().CharToStringUTF(dataResponse.debugText.Value(), DebugTextInsideOptional)); chip::JniReferences::GetInstance().CreateOptional(DebugTextInsideOptional, DebugText); } @@ -3135,8 +3133,7 @@ void CHIPDoorLockClusterGetUserResponseCallback::CallbackFn( } else { - UserName = - env->NewStringUTF(std::string(dataResponse.userName.Value().data(), dataResponse.userName.Value().size()).c_str()); + LogErrorOnFailure(chip::JniReferences::GetInstance().CharToStringUTF(dataResponse.userName.Value(), UserName)); } jobject UserUniqueID; if (dataResponse.userUniqueID.IsNull()) @@ -3683,8 +3680,7 @@ void CHIPChannelClusterChangeChannelResponseCallback::CallbackFn( else { jobject DataInsideOptional; - DataInsideOptional = - env->NewStringUTF(std::string(dataResponse.data.Value().data(), dataResponse.data.Value().size()).c_str()); + LogErrorOnFailure(chip::JniReferences::GetInstance().CharToStringUTF(dataResponse.data.Value(), DataInsideOptional)); chip::JniReferences::GetInstance().CreateOptional(DataInsideOptional, Data); } @@ -3757,8 +3753,7 @@ void CHIPTargetNavigatorClusterNavigateTargetResponseCallback::CallbackFn( else { jobject DataInsideOptional; - DataInsideOptional = - env->NewStringUTF(std::string(dataResponse.data.Value().data(), dataResponse.data.Value().size()).c_str()); + LogErrorOnFailure(chip::JniReferences::GetInstance().CharToStringUTF(dataResponse.data.Value(), DataInsideOptional)); chip::JniReferences::GetInstance().CreateOptional(DataInsideOptional, Data); } @@ -3829,8 +3824,7 @@ void CHIPMediaPlaybackClusterPlaybackResponseCallback::CallbackFn( else { jobject DataInsideOptional; - DataInsideOptional = - env->NewStringUTF(std::string(dataResponse.data.Value().data(), dataResponse.data.Value().size()).c_str()); + LogErrorOnFailure(chip::JniReferences::GetInstance().CharToStringUTF(dataResponse.data.Value(), DataInsideOptional)); chip::JniReferences::GetInstance().CreateOptional(DataInsideOptional, Data); } @@ -3961,8 +3955,7 @@ void CHIPContentLauncherClusterLauncherResponseCallback::CallbackFn( else { jobject DataInsideOptional; - DataInsideOptional = - env->NewStringUTF(std::string(dataResponse.data.Value().data(), dataResponse.data.Value().size()).c_str()); + LogErrorOnFailure(chip::JniReferences::GetInstance().CharToStringUTF(dataResponse.data.Value(), DataInsideOptional)); chip::JniReferences::GetInstance().CreateOptional(DataInsideOptional, Data); } @@ -4097,7 +4090,7 @@ void CHIPAccountLoginClusterGetSetupPINResponseCallback::CallbackFn( VerifyOrReturn(err == CHIP_NO_ERROR, ChipLogError(Zcl, "Error invoking Java callback: %s", ErrorStr(err))); jobject SetupPIN; - SetupPIN = env->NewStringUTF(std::string(dataResponse.setupPIN.data(), dataResponse.setupPIN.size()).c_str()); + LogErrorOnFailure(chip::JniReferences::GetInstance().CharToStringUTF(dataResponse.setupPIN, SetupPIN)); env->CallVoidMethod(javaCallbackRef, javaMethod, SetupPIN); } @@ -4574,7 +4567,7 @@ void CHIPUnitTestingClusterTestStructArrayArgumentResponseCallback::CallbackFn( reinterpret_cast(entry_0.c.d.data())); newElement_0_c_d = newElement_0_c_dByteArray; jobject newElement_0_c_e; - newElement_0_c_e = env->NewStringUTF(std::string(entry_0.c.e.data(), entry_0.c.e.size()).c_str()); + LogErrorOnFailure(chip::JniReferences::GetInstance().CharToStringUTF(entry_0.c.e, newElement_0_c_e)); jobject newElement_0_c_f; std::string newElement_0_c_fClassName = "java/lang/Integer"; std::string newElement_0_c_fCtorSignature = "(I)V"; @@ -4642,7 +4635,7 @@ void CHIPUnitTestingClusterTestStructArrayArgumentResponseCallback::CallbackFn( reinterpret_cast(entry_2.d.data())); newElement_2_d = newElement_2_dByteArray; jobject newElement_2_e; - newElement_2_e = env->NewStringUTF(std::string(entry_2.e.data(), entry_2.e.size()).c_str()); + LogErrorOnFailure(chip::JniReferences::GetInstance().CharToStringUTF(entry_2.e, newElement_2_e)); jobject newElement_2_f; std::string newElement_2_fClassName = "java/lang/Integer"; std::string newElement_2_fCtorSignature = "(I)V"; @@ -4776,7 +4769,7 @@ void CHIPUnitTestingClusterTestStructArrayArgumentResponseCallback::CallbackFn( reinterpret_cast(entry_0.d.data())); newElement_0_d = newElement_0_dByteArray; jobject newElement_0_e; - newElement_0_e = env->NewStringUTF(std::string(entry_0.e.data(), entry_0.e.size()).c_str()); + LogErrorOnFailure(chip::JniReferences::GetInstance().CharToStringUTF(entry_0.e, newElement_0_e)); jobject newElement_0_f; std::string newElement_0_fClassName = "java/lang/Integer"; std::string newElement_0_fCtorSignature = "(I)V"; @@ -5262,8 +5255,8 @@ void CHIPUnitTestingClusterTestComplexNullableOptionalResponseCallback::Callback else { jobject NullableStringValueInsideOptional; - NullableStringValueInsideOptional = env->NewStringUTF( - std::string(dataResponse.nullableStringValue.Value().data(), dataResponse.nullableStringValue.Value().size()).c_str()); + LogErrorOnFailure(chip::JniReferences::GetInstance().CharToStringUTF(dataResponse.nullableStringValue.Value(), + NullableStringValueInsideOptional)); chip::JniReferences::GetInstance().CreateOptional(NullableStringValueInsideOptional, NullableStringValue); } jobject OptionalStringWasPresent; @@ -5280,8 +5273,8 @@ void CHIPUnitTestingClusterTestComplexNullableOptionalResponseCallback::Callback else { jobject OptionalStringValueInsideOptional; - OptionalStringValueInsideOptional = env->NewStringUTF( - std::string(dataResponse.optionalStringValue.Value().data(), dataResponse.optionalStringValue.Value().size()).c_str()); + LogErrorOnFailure(chip::JniReferences::GetInstance().CharToStringUTF(dataResponse.optionalStringValue.Value(), + OptionalStringValueInsideOptional)); chip::JniReferences::GetInstance().CreateOptional(OptionalStringValueInsideOptional, OptionalStringValue); } jobject NullableOptionalStringWasPresent; @@ -5315,10 +5308,8 @@ void CHIPUnitTestingClusterTestComplexNullableOptionalResponseCallback::Callback else { jobject NullableOptionalStringValueInsideOptional; - NullableOptionalStringValueInsideOptional = - env->NewStringUTF(std::string(dataResponse.nullableOptionalStringValue.Value().data(), - dataResponse.nullableOptionalStringValue.Value().size()) - .c_str()); + LogErrorOnFailure(chip::JniReferences::GetInstance().CharToStringUTF(dataResponse.nullableOptionalStringValue.Value(), + NullableOptionalStringValueInsideOptional)); chip::JniReferences::GetInstance().CreateOptional(NullableOptionalStringValueInsideOptional, NullableOptionalStringValue); } jobject NullableStructWasNull; @@ -5361,9 +5352,8 @@ void CHIPUnitTestingClusterTestComplexNullableOptionalResponseCallback::Callback reinterpret_cast(dataResponse.nullableStructValue.Value().d.data())); NullableStructValueInsideOptional_d = NullableStructValueInsideOptional_dByteArray; jobject NullableStructValueInsideOptional_e; - NullableStructValueInsideOptional_e = env->NewStringUTF( - std::string(dataResponse.nullableStructValue.Value().e.data(), dataResponse.nullableStructValue.Value().e.size()) - .c_str()); + LogErrorOnFailure(chip::JniReferences::GetInstance().CharToStringUTF(dataResponse.nullableStructValue.Value().e, + NullableStructValueInsideOptional_e)); jobject NullableStructValueInsideOptional_f; std::string NullableStructValueInsideOptional_fClassName = "java/lang/Integer"; std::string NullableStructValueInsideOptional_fCtorSignature = "(I)V"; @@ -5448,9 +5438,8 @@ void CHIPUnitTestingClusterTestComplexNullableOptionalResponseCallback::Callback reinterpret_cast(dataResponse.optionalStructValue.Value().d.data())); OptionalStructValueInsideOptional_d = OptionalStructValueInsideOptional_dByteArray; jobject OptionalStructValueInsideOptional_e; - OptionalStructValueInsideOptional_e = env->NewStringUTF( - std::string(dataResponse.optionalStructValue.Value().e.data(), dataResponse.optionalStructValue.Value().e.size()) - .c_str()); + LogErrorOnFailure(chip::JniReferences::GetInstance().CharToStringUTF(dataResponse.optionalStructValue.Value().e, + OptionalStructValueInsideOptional_e)); jobject OptionalStructValueInsideOptional_f; std::string OptionalStructValueInsideOptional_fClassName = "java/lang/Integer"; std::string OptionalStructValueInsideOptional_fCtorSignature = "(I)V"; @@ -5555,10 +5544,8 @@ void CHIPUnitTestingClusterTestComplexNullableOptionalResponseCallback::Callback reinterpret_cast(dataResponse.nullableOptionalStructValue.Value().d.data())); NullableOptionalStructValueInsideOptional_d = NullableOptionalStructValueInsideOptional_dByteArray; jobject NullableOptionalStructValueInsideOptional_e; - NullableOptionalStructValueInsideOptional_e = - env->NewStringUTF(std::string(dataResponse.nullableOptionalStructValue.Value().e.data(), - dataResponse.nullableOptionalStructValue.Value().e.size()) - .c_str()); + LogErrorOnFailure(chip::JniReferences::GetInstance().CharToStringUTF(dataResponse.nullableOptionalStructValue.Value().e, + NullableOptionalStructValueInsideOptional_e)); jobject NullableOptionalStructValueInsideOptional_f; std::string NullableOptionalStructValueInsideOptional_fClassName = "java/lang/Integer"; std::string NullableOptionalStructValueInsideOptional_fCtorSignature = "(I)V"; @@ -5854,7 +5841,7 @@ void CHIPUnitTestingClusterSimpleStructResponseCallback::CallbackFn( reinterpret_cast(dataResponse.arg1.d.data())); arg1_d = arg1_dByteArray; jobject arg1_e; - arg1_e = env->NewStringUTF(std::string(dataResponse.arg1.e.data(), dataResponse.arg1.e.size()).c_str()); + LogErrorOnFailure(chip::JniReferences::GetInstance().CharToStringUTF(dataResponse.arg1.e, arg1_e)); jobject arg1_f; std::string arg1_fClassName = "java/lang/Integer"; std::string arg1_fCtorSignature = "(I)V"; diff --git a/src/controller/java/zap-generated/CHIPReadCallbacks.cpp b/src/controller/java/zap-generated/CHIPReadCallbacks.cpp index 0367add107cdf2..caf86b14ed9214 100644 --- a/src/controller/java/zap-generated/CHIPReadCallbacks.cpp +++ b/src/controller/java/zap-generated/CHIPReadCallbacks.cpp @@ -4836,7 +4836,7 @@ void CHIPActionsActionListAttributeCallback::CallbackFn( newElement_0_actionIDCtorSignature.c_str(), entry_0.actionID, newElement_0_actionID); jobject newElement_0_name; - newElement_0_name = env->NewStringUTF(std::string(entry_0.name.data(), entry_0.name.size()).c_str()); + LogErrorOnFailure(chip::JniReferences::GetInstance().CharToStringUTF(entry_0.name, newElement_0_name)); jobject newElement_0_type; std::string newElement_0_typeClassName = "java/lang/Integer"; std::string newElement_0_typeCtorSignature = "(I)V"; @@ -4955,7 +4955,7 @@ void CHIPActionsEndpointListsAttributeCallback::CallbackFn( newElement_0_endpointListIDCtorSignature.c_str(), entry_0.endpointListID, newElement_0_endpointListID); jobject newElement_0_name; - newElement_0_name = env->NewStringUTF(std::string(entry_0.name.data(), entry_0.name.size()).c_str()); + LogErrorOnFailure(chip::JniReferences::GetInstance().CharToStringUTF(entry_0.name, newElement_0_name)); jobject newElement_0_type; std::string newElement_0_typeClassName = "java/lang/Integer"; std::string newElement_0_typeCtorSignature = "(I)V"; @@ -6375,7 +6375,7 @@ void CHIPLocalizationConfigurationSupportedLocalesAttributeCallback::CallbackFn( { auto & entry_0 = iter_arrayListObj_0.GetValue(); jobject newElement_0; - newElement_0 = env->NewStringUTF(std::string(entry_0.data(), entry_0.size()).c_str()); + LogErrorOnFailure(chip::JniReferences::GetInstance().CharToStringUTF(entry_0, newElement_0)); chip::JniReferences::GetInstance().AddToList(arrayListObj, newElement_0); } @@ -9905,7 +9905,7 @@ void CHIPGeneralDiagnosticsNetworkInterfacesAttributeCallback::CallbackFn( auto & entry_0 = iter_arrayListObj_0.GetValue(); jobject newElement_0; jobject newElement_0_name; - newElement_0_name = env->NewStringUTF(std::string(entry_0.name.data(), entry_0.name.size()).c_str()); + LogErrorOnFailure(chip::JniReferences::GetInstance().CharToStringUTF(entry_0.name, newElement_0_name)); jobject newElement_0_isOperational; std::string newElement_0_isOperationalClassName = "java/lang/Boolean"; std::string newElement_0_isOperationalCtorSignature = "(Z)V"; @@ -10581,8 +10581,8 @@ void CHIPSoftwareDiagnosticsThreadMetricsAttributeCallback::CallbackFn( else { jobject newElement_0_nameInsideOptional; - newElement_0_nameInsideOptional = - env->NewStringUTF(std::string(entry_0.name.Value().data(), entry_0.name.Value().size()).c_str()); + LogErrorOnFailure( + chip::JniReferences::GetInstance().CharToStringUTF(entry_0.name.Value(), newElement_0_nameInsideOptional)); chip::JniReferences::GetInstance().CreateOptional(newElement_0_nameInsideOptional, newElement_0_name); } jobject newElement_0_stackFreeCurrent; @@ -11139,7 +11139,7 @@ void CHIPThreadNetworkDiagnosticsNetworkNameAttributeCallback::CallbackFn( } else { - javaValue = env->NewStringUTF(std::string(value.Value().data(), value.Value().size()).c_str()); + LogErrorOnFailure(chip::JniReferences::GetInstance().CharToStringUTF(value.Value(), javaValue)); } env->CallVoidMethod(javaCallbackRef, javaMethod, javaValue); @@ -15468,7 +15468,7 @@ void CHIPOperationalCredentialsFabricsAttributeCallback::CallbackFn( chip::JniReferences::GetInstance().CreateBoxedObject( newElement_0_nodeIDClassName.c_str(), newElement_0_nodeIDCtorSignature.c_str(), entry_0.nodeID, newElement_0_nodeID); jobject newElement_0_label; - newElement_0_label = env->NewStringUTF(std::string(entry_0.label.data(), entry_0.label.size()).c_str()); + LogErrorOnFailure(chip::JniReferences::GetInstance().CharToStringUTF(entry_0.label, newElement_0_label)); jobject newElement_0_fabricIndex; std::string newElement_0_fabricIndexClassName = "java/lang/Integer"; std::string newElement_0_fabricIndexCtorSignature = "(I)V"; @@ -16056,8 +16056,8 @@ void CHIPGroupKeyManagementGroupTableAttributeCallback::CallbackFn( else { jobject newElement_0_groupNameInsideOptional; - newElement_0_groupNameInsideOptional = - env->NewStringUTF(std::string(entry_0.groupName.Value().data(), entry_0.groupName.Value().size()).c_str()); + LogErrorOnFailure(chip::JniReferences::GetInstance().CharToStringUTF(entry_0.groupName.Value(), + newElement_0_groupNameInsideOptional)); chip::JniReferences::GetInstance().CreateOptional(newElement_0_groupNameInsideOptional, newElement_0_groupName); } jobject newElement_0_fabricIndex; @@ -16437,9 +16437,9 @@ void CHIPFixedLabelLabelListAttributeCallback::CallbackFn( auto & entry_0 = iter_arrayListObj_0.GetValue(); jobject newElement_0; jobject newElement_0_label; - newElement_0_label = env->NewStringUTF(std::string(entry_0.label.data(), entry_0.label.size()).c_str()); + LogErrorOnFailure(chip::JniReferences::GetInstance().CharToStringUTF(entry_0.label, newElement_0_label)); jobject newElement_0_value; - newElement_0_value = env->NewStringUTF(std::string(entry_0.value.data(), entry_0.value.size()).c_str()); + LogErrorOnFailure(chip::JniReferences::GetInstance().CharToStringUTF(entry_0.value, newElement_0_value)); jclass labelStructStructClass_1; err = chip::JniReferences::GetInstance().GetClassRef(env, "chip/devicecontroller/ChipStructs$FixedLabelClusterLabelStruct", @@ -16805,9 +16805,9 @@ void CHIPUserLabelLabelListAttributeCallback::CallbackFn( auto & entry_0 = iter_arrayListObj_0.GetValue(); jobject newElement_0; jobject newElement_0_label; - newElement_0_label = env->NewStringUTF(std::string(entry_0.label.data(), entry_0.label.size()).c_str()); + LogErrorOnFailure(chip::JniReferences::GetInstance().CharToStringUTF(entry_0.label, newElement_0_label)); jobject newElement_0_value; - newElement_0_value = env->NewStringUTF(std::string(entry_0.value.data(), entry_0.value.size()).c_str()); + LogErrorOnFailure(chip::JniReferences::GetInstance().CharToStringUTF(entry_0.value, newElement_0_value)); jclass labelStructStructClass_1; err = chip::JniReferences::GetInstance().GetClassRef(env, "chip/devicecontroller/ChipStructs$UserLabelClusterLabelStruct", @@ -17522,7 +17522,7 @@ void CHIPModeSelectSupportedModesAttributeCallback::CallbackFn( auto & entry_0 = iter_arrayListObj_0.GetValue(); jobject newElement_0; jobject newElement_0_label; - newElement_0_label = env->NewStringUTF(std::string(entry_0.label.data(), entry_0.label.size()).c_str()); + LogErrorOnFailure(chip::JniReferences::GetInstance().CharToStringUTF(entry_0.label, newElement_0_label)); jobject newElement_0_mode; std::string newElement_0_modeClassName = "java/lang/Integer"; std::string newElement_0_modeCtorSignature = "(I)V"; @@ -27709,8 +27709,8 @@ void CHIPChannelChannelListAttributeCallback::CallbackFn( else { jobject newElement_0_nameInsideOptional; - newElement_0_nameInsideOptional = - env->NewStringUTF(std::string(entry_0.name.Value().data(), entry_0.name.Value().size()).c_str()); + LogErrorOnFailure( + chip::JniReferences::GetInstance().CharToStringUTF(entry_0.name.Value(), newElement_0_nameInsideOptional)); chip::JniReferences::GetInstance().CreateOptional(newElement_0_nameInsideOptional, newElement_0_name); } jobject newElement_0_callSign; @@ -27721,8 +27721,8 @@ void CHIPChannelChannelListAttributeCallback::CallbackFn( else { jobject newElement_0_callSignInsideOptional; - newElement_0_callSignInsideOptional = - env->NewStringUTF(std::string(entry_0.callSign.Value().data(), entry_0.callSign.Value().size()).c_str()); + LogErrorOnFailure( + chip::JniReferences::GetInstance().CharToStringUTF(entry_0.callSign.Value(), newElement_0_callSignInsideOptional)); chip::JniReferences::GetInstance().CreateOptional(newElement_0_callSignInsideOptional, newElement_0_callSign); } jobject newElement_0_affiliateCallSign; @@ -27733,8 +27733,8 @@ void CHIPChannelChannelListAttributeCallback::CallbackFn( else { jobject newElement_0_affiliateCallSignInsideOptional; - newElement_0_affiliateCallSignInsideOptional = env->NewStringUTF( - std::string(entry_0.affiliateCallSign.Value().data(), entry_0.affiliateCallSign.Value().size()).c_str()); + LogErrorOnFailure(chip::JniReferences::GetInstance().CharToStringUTF(entry_0.affiliateCallSign.Value(), + newElement_0_affiliateCallSignInsideOptional)); chip::JniReferences::GetInstance().CreateOptional(newElement_0_affiliateCallSignInsideOptional, newElement_0_affiliateCallSign); } @@ -28115,7 +28115,7 @@ void CHIPTargetNavigatorTargetListAttributeCallback::CallbackFn( newElement_0_identifierCtorSignature.c_str(), entry_0.identifier, newElement_0_identifier); jobject newElement_0_name; - newElement_0_name = env->NewStringUTF(std::string(entry_0.name.data(), entry_0.name.size()).c_str()); + LogErrorOnFailure(chip::JniReferences::GetInstance().CharToStringUTF(entry_0.name, newElement_0_name)); jclass targetInfoStructStructClass_1; err = chip::JniReferences::GetInstance().GetClassRef( @@ -29039,9 +29039,9 @@ void CHIPMediaInputInputListAttributeCallback::CallbackFn( newElement_0_inputTypeClassName.c_str(), newElement_0_inputTypeCtorSignature.c_str(), static_cast(entry_0.inputType), newElement_0_inputType); jobject newElement_0_name; - newElement_0_name = env->NewStringUTF(std::string(entry_0.name.data(), entry_0.name.size()).c_str()); + LogErrorOnFailure(chip::JniReferences::GetInstance().CharToStringUTF(entry_0.name, newElement_0_name)); jobject newElement_0_description; - newElement_0_description = env->NewStringUTF(std::string(entry_0.description.data(), entry_0.description.size()).c_str()); + LogErrorOnFailure(chip::JniReferences::GetInstance().CharToStringUTF(entry_0.description, newElement_0_description)); jclass inputInfoStructStructClass_1; err = chip::JniReferences::GetInstance().GetClassRef( @@ -29969,7 +29969,7 @@ void CHIPContentLauncherAcceptHeaderAttributeCallback::CallbackFn(void * context { auto & entry_0 = iter_arrayListObj_0.GetValue(); jobject newElement_0; - newElement_0 = env->NewStringUTF(std::string(entry_0.data(), entry_0.size()).c_str()); + LogErrorOnFailure(chip::JniReferences::GetInstance().CharToStringUTF(entry_0, newElement_0)); chip::JniReferences::GetInstance().AddToList(arrayListObj, newElement_0); } @@ -30330,7 +30330,7 @@ void CHIPAudioOutputOutputListAttributeCallback::CallbackFn( newElement_0_outputTypeClassName.c_str(), newElement_0_outputTypeCtorSignature.c_str(), static_cast(entry_0.outputType), newElement_0_outputType); jobject newElement_0_name; - newElement_0_name = env->NewStringUTF(std::string(entry_0.name.data(), entry_0.name.size()).c_str()); + LogErrorOnFailure(chip::JniReferences::GetInstance().CharToStringUTF(entry_0.name, newElement_0_name)); jclass outputInfoStructStructClass_1; err = chip::JniReferences::GetInstance().GetClassRef( @@ -32663,8 +32663,8 @@ void CHIPUnitTestingListNullablesAndOptionalsStructAttributeCallback::CallbackFn } else { - newElement_0_nullableString = env->NewStringUTF( - std::string(entry_0.nullableString.Value().data(), entry_0.nullableString.Value().size()).c_str()); + LogErrorOnFailure( + chip::JniReferences::GetInstance().CharToStringUTF(entry_0.nullableString.Value(), newElement_0_nullableString)); } jobject newElement_0_optionalString; if (!entry_0.optionalString.HasValue()) @@ -32674,8 +32674,8 @@ void CHIPUnitTestingListNullablesAndOptionalsStructAttributeCallback::CallbackFn else { jobject newElement_0_optionalStringInsideOptional; - newElement_0_optionalStringInsideOptional = env->NewStringUTF( - std::string(entry_0.optionalString.Value().data(), entry_0.optionalString.Value().size()).c_str()); + LogErrorOnFailure(chip::JniReferences::GetInstance().CharToStringUTF(entry_0.optionalString.Value(), + newElement_0_optionalStringInsideOptional)); chip::JniReferences::GetInstance().CreateOptional(newElement_0_optionalStringInsideOptional, newElement_0_optionalString); } @@ -32693,10 +32693,8 @@ void CHIPUnitTestingListNullablesAndOptionalsStructAttributeCallback::CallbackFn } else { - newElement_0_nullableOptionalStringInsideOptional = - env->NewStringUTF(std::string(entry_0.nullableOptionalString.Value().Value().data(), - entry_0.nullableOptionalString.Value().Value().size()) - .c_str()); + LogErrorOnFailure(chip::JniReferences::GetInstance().CharToStringUTF( + entry_0.nullableOptionalString.Value().Value(), newElement_0_nullableOptionalStringInsideOptional)); } chip::JniReferences::GetInstance().CreateOptional(newElement_0_nullableOptionalStringInsideOptional, newElement_0_nullableOptionalString); @@ -32734,8 +32732,8 @@ void CHIPUnitTestingListNullablesAndOptionalsStructAttributeCallback::CallbackFn reinterpret_cast(entry_0.nullableStruct.Value().d.data())); newElement_0_nullableStruct_d = newElement_0_nullableStruct_dByteArray; jobject newElement_0_nullableStruct_e; - newElement_0_nullableStruct_e = env->NewStringUTF( - std::string(entry_0.nullableStruct.Value().e.data(), entry_0.nullableStruct.Value().e.size()).c_str()); + LogErrorOnFailure(chip::JniReferences::GetInstance().CharToStringUTF(entry_0.nullableStruct.Value().e, + newElement_0_nullableStruct_e)); jobject newElement_0_nullableStruct_f; std::string newElement_0_nullableStruct_fClassName = "java/lang/Integer"; std::string newElement_0_nullableStruct_fCtorSignature = "(I)V"; @@ -32815,8 +32813,8 @@ void CHIPUnitTestingListNullablesAndOptionalsStructAttributeCallback::CallbackFn reinterpret_cast(entry_0.optionalStruct.Value().d.data())); newElement_0_optionalStructInsideOptional_d = newElement_0_optionalStructInsideOptional_dByteArray; jobject newElement_0_optionalStructInsideOptional_e; - newElement_0_optionalStructInsideOptional_e = env->NewStringUTF( - std::string(entry_0.optionalStruct.Value().e.data(), entry_0.optionalStruct.Value().e.size()).c_str()); + LogErrorOnFailure(chip::JniReferences::GetInstance().CharToStringUTF(entry_0.optionalStruct.Value().e, + newElement_0_optionalStructInsideOptional_e)); jobject newElement_0_optionalStructInsideOptional_f; std::string newElement_0_optionalStructInsideOptional_fClassName = "java/lang/Integer"; std::string newElement_0_optionalStructInsideOptional_fCtorSignature = "(I)V"; @@ -32910,10 +32908,8 @@ void CHIPUnitTestingListNullablesAndOptionalsStructAttributeCallback::CallbackFn reinterpret_cast(entry_0.nullableOptionalStruct.Value().Value().d.data())); newElement_0_nullableOptionalStructInsideOptional_d = newElement_0_nullableOptionalStructInsideOptional_dByteArray; jobject newElement_0_nullableOptionalStructInsideOptional_e; - newElement_0_nullableOptionalStructInsideOptional_e = - env->NewStringUTF(std::string(entry_0.nullableOptionalStruct.Value().Value().e.data(), - entry_0.nullableOptionalStruct.Value().Value().e.size()) - .c_str()); + LogErrorOnFailure(chip::JniReferences::GetInstance().CharToStringUTF( + entry_0.nullableOptionalStruct.Value().Value().e, newElement_0_nullableOptionalStructInsideOptional_e)); jobject newElement_0_nullableOptionalStructInsideOptional_f; std::string newElement_0_nullableOptionalStructInsideOptional_fClassName = "java/lang/Integer"; std::string newElement_0_nullableOptionalStructInsideOptional_fCtorSignature = "(I)V"; @@ -33268,8 +33264,8 @@ void CHIPUnitTestingListFabricScopedAttributeCallback::CallbackFn( newElement_0_nullableOptionalFabricSensitiveInt8u); } jobject newElement_0_fabricSensitiveCharString; - newElement_0_fabricSensitiveCharString = env->NewStringUTF( - std::string(entry_0.fabricSensitiveCharString.data(), entry_0.fabricSensitiveCharString.size()).c_str()); + LogErrorOnFailure(chip::JniReferences::GetInstance().CharToStringUTF(entry_0.fabricSensitiveCharString, + newElement_0_fabricSensitiveCharString)); jobject newElement_0_fabricSensitiveStruct; jobject newElement_0_fabricSensitiveStruct_a; std::string newElement_0_fabricSensitiveStruct_aClassName = "java/lang/Integer"; @@ -33297,8 +33293,8 @@ void CHIPUnitTestingListFabricScopedAttributeCallback::CallbackFn( reinterpret_cast(entry_0.fabricSensitiveStruct.d.data())); newElement_0_fabricSensitiveStruct_d = newElement_0_fabricSensitiveStruct_dByteArray; jobject newElement_0_fabricSensitiveStruct_e; - newElement_0_fabricSensitiveStruct_e = - env->NewStringUTF(std::string(entry_0.fabricSensitiveStruct.e.data(), entry_0.fabricSensitiveStruct.e.size()).c_str()); + LogErrorOnFailure(chip::JniReferences::GetInstance().CharToStringUTF(entry_0.fabricSensitiveStruct.e, + newElement_0_fabricSensitiveStruct_e)); jobject newElement_0_fabricSensitiveStruct_f; std::string newElement_0_fabricSensitiveStruct_fClassName = "java/lang/Integer"; std::string newElement_0_fabricSensitiveStruct_fCtorSignature = "(I)V"; @@ -35184,7 +35180,7 @@ void CHIPUnitTestingNullableCharStringAttributeCallback::CallbackFn(void * conte } else { - javaValue = env->NewStringUTF(std::string(value.Value().data(), value.Value().size()).c_str()); + LogErrorOnFailure(chip::JniReferences::GetInstance().CharToStringUTF(value.Value(), javaValue)); } env->CallVoidMethod(javaCallbackRef, javaMethod, javaValue); diff --git a/src/lib/support/JniReferences.cpp b/src/lib/support/JniReferences.cpp index c7834348e06a1a..1a4fae9e22ff32 100644 --- a/src/lib/support/JniReferences.cpp +++ b/src/lib/support/JniReferences.cpp @@ -388,4 +388,34 @@ CHIP_ERROR JniReferences::GetObjectField(jobject objectToRead, const char * name return err; } +CHIP_ERROR JniReferences::CharToStringUTF(const chip::CharSpan & charSpan, jobject & outStr) +{ + JNIEnv * env = GetEnvForCurrentThread(); + jobject jbyteBuffer = env->NewDirectByteBuffer((void *) charSpan.data(), static_cast(charSpan.size())); + + jclass charSetClass = env->FindClass("java/nio/charset/Charset"); + jmethodID charsetForNameMethod = + env->GetStaticMethodID(charSetClass, "forName", "(Ljava/lang/String;)Ljava/nio/charset/Charset;"); + jobject charsetObject = env->CallStaticObjectMethod(charSetClass, charsetForNameMethod, env->NewStringUTF("UTF-8")); + + jclass charSetDocoderClass = env->FindClass("java/nio/charset/CharsetDecoder"); + jmethodID newDocoderMethod = env->GetMethodID(charSetClass, "newDecoder", "()Ljava/nio/charset/CharsetDecoder;"); + jobject decoderObject = env->CallObjectMethod(charsetObject, newDocoderMethod); + + jmethodID charSetDecodeMethod = env->GetMethodID(charSetDocoderClass, "decode", "(Ljava/nio/ByteBuffer;)Ljava/nio/CharBuffer;"); + jobject decodeObject = env->CallObjectMethod(decoderObject, charSetDecodeMethod, jbyteBuffer); + env->DeleteLocalRef(jbyteBuffer); + + // If decode exception occur, outStr will be set null. + outStr = nullptr; + + VerifyOrReturnError(!env->ExceptionCheck(), CHIP_JNI_ERROR_EXCEPTION_THROWN); + + jclass charBufferClass = env->FindClass("java/nio/CharBuffer"); + jmethodID charBufferToString = env->GetMethodID(charBufferClass, "toString", "()Ljava/lang/String;"); + outStr = static_cast(env->CallObjectMethod(decodeObject, charBufferToString)); + + return CHIP_NO_ERROR; +} + } // namespace chip diff --git a/src/lib/support/JniReferences.h b/src/lib/support/JniReferences.h index f2e357de2db46a..5e323d93f46394 100644 --- a/src/lib/support/JniReferences.h +++ b/src/lib/support/JniReferences.h @@ -20,6 +20,7 @@ #include #include #include +#include #include #include @@ -160,6 +161,15 @@ class JniReferences return CreateBoxedObject(boxedTypeClsName, constructorSignature, chip::to_underlying(value), outObj); } + /** + * Use instead of 'NewStringUTF' function + * If the value is not decoded with "UTF-8", the error will be returned. + * (The NewStringUTF function crashes when the value can not decoded as "UTF-8".) + * + * Creates a java string type based on char array. + */ + CHIP_ERROR CharToStringUTF(const chip::CharSpan & charSpan, jobject & outString); + private: JniReferences() {}