    001package com.hammurapi.common;
    002
    003import java.lang.reflect.Array;
    004import java.util.ArrayList;
    005import java.util.Iterator;
    006import java.util.List;
    007import java.util.ServiceLoader;
    008
    009/**
    010 * Helper class.
    011 * @author Pavel Vlasov
    012 *
    013 */
    014public class Util {
    015
    016        /**
    017         * Loads single instance of service.
    018         * @param <T>
    019         * @param type
    020         * @return
    021         */
    022        static Context loadContext() {
    023                List<Context> parts = new ArrayList<Context>();
    024                Iterator<Context> it = ServiceLoader.load(Context.class, Util.class.getClassLoader()).iterator();
    025                while (it.hasNext()) {
    026                        parts.add(it.next());
    027                }
    028                parts.add(new DefaultContext(Util.class.getClassLoader(), null));
    029                return new CompositeContext(parts.toArray(new Context[parts.size()]));
    030        }
    031
    032        /**
    033         * Wraps a single object into array to avoid problems with generic arrays.
    034         * @param <V>
    035         * @param obj
    036         * @return
    037         */
    038        @SuppressWarnings("unchecked")
    039        public static <V> V[] wrap(V obj) {
    040                if (obj == null) {
    041                        return (V[]) new Object[] {null};
    042                }
    043                V[] ret = (V[]) Array.newInstance(obj.getClass(), 1);
    044                ret[0] = obj;
    045                return ret;
    046        }
    047
    048}