ObjectUtility.java revision 608:7e06bf1dcb09
1/* 2 * Copyright (c) 2002, 2010, Oracle and/or its affiliates. All rights reserved. 3 * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. 4 * 5 * This code is free software; you can redistribute it and/or modify it 6 * under the terms of the GNU General Public License version 2 only, as 7 * published by the Free Software Foundation. Oracle designates this 8 * particular file as subject to the "Classpath" exception as provided 9 * by Oracle in the LICENSE file that accompanied this code. 10 * 11 * This code is distributed in the hope that it will be useful, but WITHOUT 12 * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or 13 * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License 14 * version 2 for more details (a copy is included in the LICENSE file that 15 * accompanied this code). 16 * 17 * You should have received a copy of the GNU General Public License version 18 * 2 along with this work; if not, write to the Free Software Foundation, 19 * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. 20 * 21 * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA 22 * or visit www.oracle.com if you need additional information or have any 23 * questions. 24 */ 25 26package com.sun.corba.se.impl.orbutil; 27 28import java.security.PrivilegedAction; 29import java.security.AccessController; 30import java.util.ArrayList; 31import java.util.Arrays; 32import java.util.Map; 33import java.util.List; 34import java.util.ListIterator; 35import java.util.Set; 36import java.util.Map.Entry; 37import java.util.Collection; 38import java.util.HashMap; 39import java.util.HashSet; 40import java.util.Hashtable; 41import java.util.Iterator; 42import java.util.Enumeration; 43import java.util.Properties; 44import java.util.IdentityHashMap; 45import java.lang.reflect.Array; 46import java.lang.reflect.Field; 47import java.lang.reflect.Method; 48import java.lang.reflect.Modifier; 49import java.math.BigInteger ; 50import java.math.BigDecimal ; 51 52public final class ObjectUtility { 53 private ObjectUtility() {} 54 55 56 /** If arr1 and arr2 are both arrays of the same component type, 57 * return an array of that component type that consists of the 58 * elements of arr1 followed by the elements of arr2. 59 * Throws IllegalArgumentException otherwise. 60 */ 61 public static Object concatenateArrays( Object arr1, Object arr2 ) 62 { 63 Class comp1 = arr1.getClass().getComponentType() ; 64 Class comp2 = arr2.getClass().getComponentType() ; 65 int len1 = Array.getLength( arr1 ) ; 66 int len2 = Array.getLength( arr2 ) ; 67 68 if ((comp1 == null) || (comp2 == null)) 69 throw new IllegalStateException( "Arguments must be arrays" ) ; 70 if (!comp1.equals( comp2 )) 71 throw new IllegalStateException( 72 "Arguments must be arrays with the same component type" ) ; 73 74 Object result = Array.newInstance( comp1, len1 + len2 ) ; 75 76 int index = 0 ; 77 78 for (int ctr=0; ctr<len1; ctr++) 79 Array.set( result, index++, Array.get( arr1, ctr ) ) ; 80 81 for (int ctr=0; ctr<len2; ctr++) 82 Array.set( result, index++, Array.get( arr2, ctr ) ) ; 83 84 return result ; 85 } 86 87} 88