@SuppressWarnings("unchecked") public static <T> Collection<T> copyOf(Collection<? extends T> source, Mapper<Object, ?> transformation) { Err.argMust(source != null, "source cannot be null!"); Collection<T> destination = newInstance(source); copy(destination, source, transformation); return destination; }
public synchronized Map<String, Object> info() { return U.map("Provided classes", Deep.copyOf(providedClasses, Msc.TRANSFORM_TO_SIMPLE_CLASS_NAME), "Provided instances", Deep.copyOf(providedInstances, Msc.TRANSFORM_TO_SIMPLE_CLASS_NAME), "Managed instances", Deep.copyOf(instances, Msc.TRANSFORM_TO_SIMPLE_CLASS_NAME), "By type", Deep.copyOf(providersByType, Msc.TRANSFORM_TO_SIMPLE_CLASS_NAME)); }
public synchronized IoCState copy() { IoCState copy = new IoCState(); Deep.copy(copy.providedClasses, this.providedClasses, null); Deep.copy(copy.providedInstances, this.providedInstances, null); Deep.copy(copy.providersByType, this.providersByType, null); Deep.copy(copy.instances, this.instances, null); return copy; }
@SuppressWarnings("unchecked") public static <T> T[] copyOf(T[] source, Mapper<Object, ?> transformation) { Err.argMust(source != null, "source cannot be null!"); T[] destination = newInstance(source); copy(destination, source, transformation); return destination; }
@Override public String toString() { return Deep.copyOf(state.instances, Msc.TRANSFORM_TO_SIMPLE_CLASS_NAME).toString(); }
@SuppressWarnings("unchecked") public static <K, V> Map<K, V> copyOf(Map<? extends K, ? extends V> source, Mapper<Object, ?> transformation) { Err.argMust(source != null, "source cannot be null!"); Map<K, V> destination = newInstance(source); copy(destination, source, transformation); return destination; }
@SuppressWarnings("unchecked") public static <K, V> void copy(Map<K, V> destination, Map<? extends K, ? extends V> source, Mapper<Object, ?> transformation) { Err.argMust(source != null, "source cannot be null!"); Err.argMust(destination != null, "destination cannot be null!"); destination.clear(); for (Map.Entry<? extends K, ? extends V> e : source.entrySet()) { K key = (K) copyOf(e.getKey(), transformation); V value = (V) copyOf(e.getValue(), transformation); destination.put(key, value); } }
@SuppressWarnings("unchecked") public static <T> void copy(Collection<T> destination, Collection<? extends T> source, Mapper<Object, ?> transformation) { Err.argMust(source != null, "source cannot be null!"); Err.argMust(destination != null, "destination cannot be null!"); destination.clear(); for (Object el : source) { destination.add((T) copyOf(el, transformation)); } }
@SuppressWarnings("unchecked") public static Object copyOf(Object source, Mapper<Object, ?> transformation) { Err.argMust(source != null, "source cannot be null!"); if (Coll.isCollection(source)) { return copyOf((Collection<?>) source, transformation); } else if (Coll.isMap(source)) { return copyOf((Map<?, ?>) source, transformation); } else if (source instanceof Object[]) { // FIXME support primitive arrays return copyOf((Object[]) source, transformation); } else { try { return transformation != null ? transformation.map(source) : source; } catch (Exception e) { throw new RuntimeException("Transformation error!", e); } } }
@SuppressWarnings("unchecked") public static <T> void copy(T[] destination, T[] source, Mapper<Object, ?> transformation) { Err.argMust(source != null, "source cannot be null!"); Err.argMust(destination != null, "destination cannot be null!"); Err.argMust(source.length == destination.length, "source and destination arrays must have the same length!"); for (int i = 0; i < destination.length; i++) { destination[i] = (T) copyOf(source[i], transformation); } }