BUG-2383: Fix array instantiation 50/17650/1
authorRobert Varga <rovarga@cisco.com>
Thu, 2 Apr 2015 15:21:15 +0000 (17:21 +0200)
committerRobert Varga <rovarga@cisco.com>
Thu, 2 Apr 2015 15:23:14 +0000 (17:23 +0200)
Arrays cannot be trivially cast, so use a reflective method to
instantiate new arrays.

Change-Id: I821ae52c49f94414813ebc6f753194db716cd15a
Signed-off-by: Robert Varga <rovarga@cisco.com>
bgp/rib-impl/src/main/java/org/opendaylight/protocol/bgp/rib/impl/OffsetMap.java

index 1dcb46dba3f22c2f2c1edd5ec47e2befd4801ffd..0641489fc405220853abff5b6af8bef151610789 100644 (file)
@@ -14,6 +14,7 @@ import com.google.common.cache.LoadingCache;
 import com.google.common.collect.ImmutableSet;
 import com.google.common.collect.ImmutableSet.Builder;
 import com.google.common.primitives.UnsignedInteger;
+import java.lang.reflect.Array;
 import java.util.Arrays;
 import java.util.Collections;
 import java.util.Comparator;
@@ -86,7 +87,7 @@ final class OffsetMap {
 
     <T> T[] expand(final OffsetMap oldOffsets, final T[] oldArray, final int offset) {
         @SuppressWarnings("unchecked")
-        final T[] ret = (T[]) new Object[this.routerIds.length];
+        final T[] ret = (T[]) Array.newInstance(oldArray.getClass().getComponentType(), this.routerIds.length);
         final int oldSize = oldOffsets.routerIds.length;
 
         System.arraycopy(oldArray, 0, ret, 0, offset);