From a4a9cc9fd0044b6e6ebd051d0d645c3176ae3472 Mon Sep 17 00:00:00 2001 From: olly Date: Wed, 11 Dec 2019 13:43:31 +0000 Subject: [PATCH] Suppress rawtypes warning when instantiating generic array Change FakeAdaptiveMediaPeriod back to this style for consistency. PiperOrigin-RevId: 284967667 --- .../exoplayer2/source/dash/DashMediaPeriod.java | 3 ++- .../source/smoothstreaming/SsMediaPeriod.java | 3 ++- .../testutil/FakeAdaptiveMediaPeriod.java | 15 ++++++++++----- 3 files changed, 14 insertions(+), 7 deletions(-) diff --git a/library/dash/src/main/java/com/google/android/exoplayer2/source/dash/DashMediaPeriod.java b/library/dash/src/main/java/com/google/android/exoplayer2/source/dash/DashMediaPeriod.java index bb8226e172..88de84603e 100644 --- a/library/dash/src/main/java/com/google/android/exoplayer2/source/dash/DashMediaPeriod.java +++ b/library/dash/src/main/java/com/google/android/exoplayer2/source/dash/DashMediaPeriod.java @@ -818,7 +818,8 @@ import org.checkerframework.checker.nullness.compatqual.NullableType; /* initializationData= */ null); } - @SuppressWarnings("unchecked") + // We won't assign the array to a variable that erases the generic type, and then write into it. + @SuppressWarnings({"unchecked", "rawtypes"}) private static ChunkSampleStream[] newSampleStreamArray(int length) { return new ChunkSampleStream[length]; } diff --git a/library/smoothstreaming/src/main/java/com/google/android/exoplayer2/source/smoothstreaming/SsMediaPeriod.java b/library/smoothstreaming/src/main/java/com/google/android/exoplayer2/source/smoothstreaming/SsMediaPeriod.java index 42ac82e553..f7940fed1b 100644 --- a/library/smoothstreaming/src/main/java/com/google/android/exoplayer2/source/smoothstreaming/SsMediaPeriod.java +++ b/library/smoothstreaming/src/main/java/com/google/android/exoplayer2/source/smoothstreaming/SsMediaPeriod.java @@ -277,7 +277,8 @@ import org.checkerframework.checker.nullness.compatqual.NullableType; return new TrackGroupArray(trackGroups); } - @SuppressWarnings("unchecked") + // We won't assign the array to a variable that erases the generic type, and then write into it. + @SuppressWarnings({"unchecked", "rawtypes"}) private static ChunkSampleStream[] newSampleStreamArray(int length) { return new ChunkSampleStream[length]; } diff --git a/testutils/src/main/java/com/google/android/exoplayer2/testutil/FakeAdaptiveMediaPeriod.java b/testutils/src/main/java/com/google/android/exoplayer2/testutil/FakeAdaptiveMediaPeriod.java index 26d29d71f6..011270d543 100644 --- a/testutils/src/main/java/com/google/android/exoplayer2/testutil/FakeAdaptiveMediaPeriod.java +++ b/testutils/src/main/java/com/google/android/exoplayer2/testutil/FakeAdaptiveMediaPeriod.java @@ -45,7 +45,7 @@ public class FakeAdaptiveMediaPeriod extends FakeMediaPeriod private final long durationUs; private Callback callback; - private List> sampleStreams; + private ChunkSampleStream[] sampleStreams; private SequenceableLoader sequenceableLoader; public FakeAdaptiveMediaPeriod( @@ -60,7 +60,7 @@ public class FakeAdaptiveMediaPeriod extends FakeMediaPeriod this.chunkSourceFactory = chunkSourceFactory; this.transferListener = transferListener; this.durationUs = durationUs; - this.sampleStreams = new ArrayList<>(); + this.sampleStreams = newSampleStreamArray(0); this.sequenceableLoader = new CompositeSequenceableLoader(new SequenceableLoader[0]); } @@ -94,9 +94,8 @@ public class FakeAdaptiveMediaPeriod extends FakeMediaPeriod validStreams.add((ChunkSampleStream) stream); } } - this.sampleStreams = validStreams; - this.sequenceableLoader = - new CompositeSequenceableLoader(sampleStreams.toArray(new SequenceableLoader[0])); + this.sampleStreams = validStreams.toArray(newSampleStreamArray(validStreams.size())); + this.sequenceableLoader = new CompositeSequenceableLoader(sampleStreams); return returnPositionUs; } @@ -166,4 +165,10 @@ public class FakeAdaptiveMediaPeriod extends FakeMediaPeriod public void onContinueLoadingRequested(ChunkSampleStream source) { callback.onContinueLoadingRequested(this); } + + // We won't assign the array to a variable that erases the generic type, and then write into it. + @SuppressWarnings({"unchecked", "rawtypes"}) + private static ChunkSampleStream[] newSampleStreamArray(int length) { + return new ChunkSampleStream[length]; + } }