Skip to content

EventMessageDetail - downcasting never kicks in #248

@PrimosK

Description

@PrimosK

I was looking through Microsoft Graph beta endpoint reference but couldn't find answer to my question.

It relates to:
com.microsoft.graph.models.EventMessageDetail
... and classes that extends this class:

CallEndedEventMessageDetail
CallRecordingEventMessageDetail
CallStartedEventMessageDetail
CallTranscriptEventMessageDetail
ChannelAddedEventMessageDetail
ChannelDeletedEventMessageDetail
ChannelDescriptionUpdatedEventMessageDetail
ChannelRenamedEventMessageDetail
ChannelSetAsFavoriteByDefaultEventMessageDetail
ChannelUnsetAsFavoriteByDefaultEventMessageDetail
ChatRenamedEventMessageDetail
ConversationMemberRoleUpdatedEventMessageDetail
MeetingPolicyUpdatedEventMessageDetail
MembersAddedEventMessageDetail
MembersDeletedEventMessageDetail
MembersJoinedEventMessageDetail
MembersLeftEventMessageDetail
TabUpdatedEventMessageDetail
TeamArchivedEventMessageDetail
TeamCreatedEventMessageDetail
TeamDescriptionUpdatedEventMessageDetail
TeamJoiningDisabledEventMessageDetail
TeamJoiningEnabledEventMessageDetail
TeamRenamedEventMessageDetail
TeamUnarchivedEventMessageDetail
TeamsAppInstalledEventMessageDetail
TeamsAppRemovedEventMessageDetail
TeamsAppUpgradedEventMessageDetail

I was expecting for something like this to work when calling com.microsoft.graph.models.ChatMessage#eventDetail:

final EventMessageDetail eventDetail = chatMessage.eventDetail;

if (eventDetail instanceof CallEndedEventMessageDetail) {
    final Duration callDuration = ((CallEndedEventMessageDetail) eventDetail).callDuration;
    // TBD
}
else if (eventDetail instanceof CallRecordingEventMessageDetail) {
    final Duration callRecordingDuration = ((CallRecordingEventMessageDetail) eventDetail).callRecordingDuration;
    // TBD
}
else ...

... but on my surprise is doesn't as instance of EventMessageDetail is always EventMessageDetail - so none of extended classes is ever instantiated.

Are my expectations of how this API should work wrong? Or is there something more to it?

Is there any other way to achieve what I want with the latest beta api?
AB#10151

Metadata

Metadata

Assignees

Labels

Standard GitHub labelIssue caused by core project dependency modules or librarybugSomething isn't workingunder-investigationResearch is required and being done to decide how this issue is going to be solved

Type

No type

Projects

No projects

Milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions