From d20627f50c7ad3f96ddfe44b708711e9ab0e2d6d Mon Sep 17 00:00:00 2001 From: Sudheer Shanka Date: Sat, 30 Dec 2017 23:58:08 -0800 Subject: Add createNewItem() to RingBuffer util class. Test: atest tests/net/java/com/android/internal/util/RingBufferTest.java Change-Id: Idec1f354fc702ead0603341806c6c4ff863c0522 --- .../java/com/android/internal/util/RingBuffer.java | 23 +++++++++++++--------- 1 file changed, 14 insertions(+), 9 deletions(-) diff --git a/core/java/com/android/internal/util/RingBuffer.java b/core/java/com/android/internal/util/RingBuffer.java index 9a6e542ccbbd..8fc4c30e54ab 100644 --- a/core/java/com/android/internal/util/RingBuffer.java +++ b/core/java/com/android/internal/util/RingBuffer.java @@ -67,16 +67,21 @@ public class RingBuffer { */ public T getNextSlot() { final int nextSlotIdx = indexOf(mCursor++); - T item = mBuffer[nextSlotIdx]; - if (item == null) { - try { - item = (T) mBuffer.getClass().getComponentType().newInstance(); - } catch (IllegalAccessException | InstantiationException e) { - return null; - } - mBuffer[nextSlotIdx] = item; + if (mBuffer[nextSlotIdx] == null) { + mBuffer[nextSlotIdx] = createNewItem(); + } + return mBuffer[nextSlotIdx]; + } + + /** + * @return a new object of type or null if a new object could not be created. + */ + protected T createNewItem() { + try { + return (T) mBuffer.getClass().getComponentType().newInstance(); + } catch (IllegalAccessException | InstantiationException e) { + return null; } - return item; } public T[] toArray() { -- cgit v1.2.3-59-g8ed1b