@@ -63,11 +63,12 @@ CHIP_ERROR ChannelManager::HandleGetChannelList(AttributeValueEncoder & aEncoder
63
63
JniLocalReferenceScope scope (env);
64
64
65
65
ChipLogProgress (Zcl, " Received ChannelManager::HandleGetChannelList" );
66
- VerifyOrExit (mChannelManagerObject != nullptr , err = CHIP_ERROR_INCORRECT_STATE);
66
+ VerifyOrExit (mChannelManagerObject . HasValidObjectRef () , err = CHIP_ERROR_INCORRECT_STATE);
67
67
VerifyOrExit (mGetChannelListMethod != nullptr , err = CHIP_ERROR_INCORRECT_STATE);
68
68
69
69
return aEncoder.EncodeList ([this , env](const auto & encoder) -> CHIP_ERROR {
70
- jobjectArray channelInfoList = (jobjectArray) env->CallObjectMethod (mChannelManagerObject , mGetChannelListMethod );
70
+ jobjectArray channelInfoList =
71
+ (jobjectArray) env->CallObjectMethod (mChannelManagerObject .ObjectRef (), mGetChannelListMethod );
71
72
if (env->ExceptionCheck ())
72
73
{
73
74
ChipLogError (Zcl, " Java exception in ChannelManager::HandleGetChannelList" );
@@ -140,11 +141,11 @@ CHIP_ERROR ChannelManager::HandleGetLineup(AttributeValueEncoder & aEncoder)
140
141
JniLocalReferenceScope scope (env);
141
142
142
143
ChipLogProgress (Zcl, " Received ChannelManager::HandleGetLineup" );
143
- VerifyOrExit (mChannelManagerObject != nullptr , err = CHIP_ERROR_INCORRECT_STATE);
144
+ VerifyOrExit (mChannelManagerObject . HasValidObjectRef () , err = CHIP_ERROR_INCORRECT_STATE);
144
145
VerifyOrExit (mGetLineupMethod != nullptr , err = CHIP_ERROR_INCORRECT_STATE);
145
146
146
147
{
147
- jobject channelLineupObject = env->CallObjectMethod (mChannelManagerObject , mGetLineupMethod );
148
+ jobject channelLineupObject = env->CallObjectMethod (mChannelManagerObject . ObjectRef () , mGetLineupMethod );
148
149
if (channelLineupObject != nullptr )
149
150
{
150
151
jclass channelLineupClazz = env->GetObjectClass (channelLineupObject);
@@ -203,11 +204,11 @@ CHIP_ERROR ChannelManager::HandleGetCurrentChannel(AttributeValueEncoder & aEnco
203
204
JniLocalReferenceScope scope (env);
204
205
205
206
ChipLogProgress (Zcl, " Received ChannelManager::HandleGetCurrentChannel" );
206
- VerifyOrExit (mChannelManagerObject != nullptr , err = CHIP_ERROR_INCORRECT_STATE);
207
+ VerifyOrExit (mChannelManagerObject . HasValidObjectRef () , err = CHIP_ERROR_INCORRECT_STATE);
207
208
VerifyOrExit (mGetCurrentChannelMethod != nullptr , err = CHIP_ERROR_INCORRECT_STATE);
208
209
209
210
{
210
- jobject channelInfoObject = env->CallObjectMethod (mChannelManagerObject , mGetCurrentChannelMethod );
211
+ jobject channelInfoObject = env->CallObjectMethod (mChannelManagerObject . ObjectRef () , mGetCurrentChannelMethod );
211
212
if (channelInfoObject != nullptr )
212
213
{
213
214
jclass channelClass = env->GetObjectClass (channelInfoObject);
@@ -278,13 +279,13 @@ void ChannelManager::HandleChangeChannel(CommandResponseHelper<ChangeChannelResp
278
279
JniLocalReferenceScope scope (env);
279
280
280
281
ChipLogProgress (Zcl, " Received ChannelManager::HandleChangeChannel name %s" , name.c_str ());
281
- VerifyOrExit (mChannelManagerObject != nullptr , ChipLogError (Zcl, " mChannelManagerObject null" ));
282
+ VerifyOrExit (mChannelManagerObject . HasValidObjectRef () , ChipLogError (Zcl, " mChannelManagerObject null" ));
282
283
VerifyOrExit (mChangeChannelMethod != nullptr , ChipLogError (Zcl, " mChangeChannelMethod null" ));
283
284
284
285
{
285
286
UtfString jniname (env, name.c_str ());
286
287
env->ExceptionClear ();
287
- jobject channelObject = env->CallObjectMethod (mChannelManagerObject , mChangeChannelMethod , jniname.jniValue ());
288
+ jobject channelObject = env->CallObjectMethod (mChannelManagerObject . ObjectRef () , mChangeChannelMethod , jniname.jniValue ());
288
289
if (env->ExceptionCheck ())
289
290
{
290
291
ChipLogError (DeviceLayer, " Java exception in ChannelManager::HandleChangeChannel" );
@@ -325,12 +326,12 @@ bool ChannelManager::HandleChangeChannelByNumber(const uint16_t & majorNumber, c
325
326
326
327
ChipLogProgress (Zcl, " Received ChannelManager::HandleChangeChannelByNumber majorNumber %d, minorNumber %d" , majorNumber,
327
328
minorNumber);
328
- VerifyOrExit (mChannelManagerObject != nullptr , ChipLogError (Zcl, " mChannelManagerObject null" ));
329
+ VerifyOrExit (mChannelManagerObject . HasValidObjectRef () , ChipLogError (Zcl, " mChannelManagerObject null" ));
329
330
VerifyOrExit (mChangeChannelByNumberMethod != nullptr , ChipLogError (Zcl, " mChangeChannelByNumberMethod null" ));
330
331
331
332
env->ExceptionClear ();
332
333
333
- ret = env->CallBooleanMethod (mChannelManagerObject , mChangeChannelByNumberMethod , static_cast <jint>(majorNumber),
334
+ ret = env->CallBooleanMethod (mChannelManagerObject . ObjectRef () , mChangeChannelByNumberMethod , static_cast <jint>(majorNumber),
334
335
static_cast <jint>(minorNumber));
335
336
if (env->ExceptionCheck ())
336
337
{
@@ -352,12 +353,12 @@ bool ChannelManager::HandleSkipChannel(const int16_t & count)
352
353
JniLocalReferenceScope scope (env);
353
354
354
355
ChipLogProgress (Zcl, " Received ChannelManager::HandleSkipChannel count %d" , count);
355
- VerifyOrExit (mChannelManagerObject != nullptr , ChipLogError (Zcl, " mChannelManagerObject null" ));
356
+ VerifyOrExit (mChannelManagerObject . HasValidObjectRef () , ChipLogError (Zcl, " mChannelManagerObject null" ));
356
357
VerifyOrExit (mSkipChannelMethod != nullptr , ChipLogError (Zcl, " mSkipChannelMethod null" ));
357
358
358
359
env->ExceptionClear ();
359
360
360
- ret = env->CallBooleanMethod (mChannelManagerObject , mSkipChannelMethod , static_cast <jint>(count));
361
+ ret = env->CallBooleanMethod (mChannelManagerObject . ObjectRef () , mSkipChannelMethod , static_cast <jint>(count));
361
362
if (env->ExceptionCheck ())
362
363
{
363
364
ChipLogError (DeviceLayer, " Java exception in ChannelManager::HandleSkipChannel" );
@@ -390,7 +391,7 @@ void ChannelManager::HandleGetProgramGuide(
390
391
std::vector<JniUtfString *> needToFreeStrings;
391
392
392
393
ChipLogProgress (Zcl, " Received ChannelManager::HandleGetProgramGuide" );
393
- VerifyOrExit (mChannelManagerObject != nullptr , err = CHIP_ERROR_INCORRECT_STATE);
394
+ VerifyOrExit (mChannelManagerObject . HasValidObjectRef () , err = CHIP_ERROR_INCORRECT_STATE);
394
395
VerifyOrExit (mGetProgramGuideMethod != nullptr , err = CHIP_ERROR_INCORRECT_STATE);
395
396
396
397
{
@@ -401,7 +402,7 @@ void ChannelManager::HandleGetProgramGuide(
401
402
jobjectArray externalIDListArray = (jobjectArray) env->NewObjectArray (0 , env->FindClass (" java/util/Map$Entry" ), NULL );
402
403
403
404
jobject resp = env->CallObjectMethod (
404
- mChannelManagerObject , mGetProgramGuideMethod , static_cast <jlong>(startTime.ValueOr (0 )),
405
+ mChannelManagerObject . ObjectRef () , mGetProgramGuideMethod , static_cast <jlong>(startTime.ValueOr (0 )),
405
406
static_cast <jlong>(endTime.ValueOr (0 )), channelsArray, jToken.jniValue (),
406
407
static_cast <jboolean>(recordingFlag.ValueOr (0 ).Raw () != 0 ), externalIDListArray, jData.jniValue ());
407
408
if (env->ExceptionCheck ())
@@ -596,7 +597,7 @@ bool ChannelManager::HandleRecordProgram(const chip::CharSpan & programIdentifie
596
597
JniLocalReferenceScope scope (env);
597
598
598
599
ChipLogProgress (Zcl, " Received ChannelManager::HandleRecordProgram" );
599
- VerifyOrExit (mChannelManagerObject != nullptr , ChipLogError (Zcl, " mChannelManagerObject null" ));
600
+ VerifyOrExit (mChannelManagerObject . HasValidObjectRef () , ChipLogError (Zcl, " mChannelManagerObject null" ));
600
601
VerifyOrExit (mRecordProgramMethod != nullptr , ChipLogError (Zcl, " mRecordProgramMethod null" ));
601
602
602
603
env->ExceptionClear ();
@@ -608,7 +609,7 @@ bool ChannelManager::HandleRecordProgram(const chip::CharSpan & programIdentifie
608
609
UtfString jData (env, " " );
609
610
jobjectArray externalIDListArray = (jobjectArray) env->NewObjectArray (0 , env->FindClass (" java/util/Map$Entry" ), NULL );
610
611
611
- ret = env->CallBooleanMethod (mChannelManagerObject , mRecordProgramMethod , jIdentifier.jniValue (),
612
+ ret = env->CallBooleanMethod (mChannelManagerObject . ObjectRef () , mRecordProgramMethod , jIdentifier.jniValue (),
612
613
static_cast <jboolean>(shouldRecordSeries), externalIDListArray, jData.jniValue ());
613
614
if (env->ExceptionCheck ())
614
615
{
@@ -633,7 +634,7 @@ bool ChannelManager::HandleCancelRecordProgram(const chip::CharSpan & programIde
633
634
JniLocalReferenceScope scope (env);
634
635
635
636
ChipLogProgress (Zcl, " Received ChannelManager::HandleCancelRecordProgram" );
636
- VerifyOrExit (mChannelManagerObject != nullptr , ChipLogError (Zcl, " mChannelManagerObject null" ));
637
+ VerifyOrExit (mChannelManagerObject . HasValidObjectRef () , ChipLogError (Zcl, " mChannelManagerObject null" ));
637
638
VerifyOrExit (mCancelRecordProgramMethod != nullptr , ChipLogError (Zcl, " mCancelRecordProgramMethod null" ));
638
639
639
640
env->ExceptionClear ();
@@ -645,7 +646,7 @@ bool ChannelManager::HandleCancelRecordProgram(const chip::CharSpan & programIde
645
646
UtfString jData (env, " " );
646
647
jobjectArray externalIDListArray = (jobjectArray) env->NewObjectArray (0 , env->FindClass (" java/util/Map$Entry" ), NULL );
647
648
648
- ret = env->CallBooleanMethod (mChannelManagerObject , mCancelRecordProgramMethod , jIdentifier.jniValue (),
649
+ ret = env->CallBooleanMethod (mChannelManagerObject . ObjectRef () , mCancelRecordProgramMethod , jIdentifier.jniValue (),
649
650
static_cast <jboolean>(shouldRecordSeries), externalIDListArray, jData.jniValue ());
650
651
if (env->ExceptionCheck ())
651
652
{
@@ -665,10 +666,10 @@ void ChannelManager::InitializeWithObjects(jobject managerObject)
665
666
JNIEnv * env = JniReferences::GetInstance ().GetEnvForCurrentThread ();
666
667
VerifyOrReturn (env != nullptr , ChipLogError (Zcl, " Failed to GetEnvForCurrentThread for ChannelManager" ));
667
668
668
- mChannelManagerObject = env-> NewGlobalRef (managerObject);
669
- VerifyOrReturn ( mChannelManagerObject != nullptr , ChipLogError (Zcl, " Failed to NewGlobalRef ChannelManager " ));
669
+ VerifyOrReturn ( mChannelManagerObject . Init (managerObject) == CHIP_NO_ERROR,
670
+ ChipLogError (Zcl, " Failed to init mChannelManagerObject " ));
670
671
671
- jclass managerClass = env->GetObjectClass (mChannelManagerObject );
672
+ jclass managerClass = env->GetObjectClass (managerObject );
672
673
VerifyOrReturn (managerClass != nullptr , ChipLogError (Zcl, " Failed to get ChannelManager Java class" ));
673
674
674
675
mGetChannelListMethod = env->GetMethodID (managerClass, " getChannelList" , " ()[Lcom/matter/tv/server/tvapp/ChannelInfo;" );
0 commit comments