All Downloads are FREE. Search and download functionalities are using the official Maven repository.

kv-3.5.2.src.com.sleepycat.je.utilint.CollectionUtils Maven / Gradle / Ivy

Go to download

Oracle NoSQL Database Client - supplies build and runtime support for the client side of the Oracle NoSQL Database. Note that a running Oracle NoSQL Database Server (store) is required to do anything meaningful with this client.

There is a newer version: 18.3.10
Show newest version
/*-
 *
 *  This file is part of Oracle NoSQL Database
 *  Copyright (C) 2011, 2015 Oracle and/or its affiliates.  All rights reserved.
 *
 * If you have received this file as part of Oracle NoSQL Database the
 * following applies to the work as a whole:
 *
 *   Oracle NoSQL Database server software is free software: you can
 *   redistribute it and/or modify it under the terms of the GNU Affero
 *   General Public License as published by the Free Software Foundation,
 *   version 3.
 *
 *   Oracle NoSQL Database is distributed in the hope that it will be useful,
 *   but WITHOUT ANY WARRANTY; without even the implied warranty of
 *   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
 *   Affero General Public License for more details.
 *
 * If you have received this file as part of Oracle NoSQL Database Client or
 * distributed separately the following applies:
 *
 *   Oracle NoSQL Database client software is free software: you can
 *   redistribute it and/or modify it under the terms of the Apache License
 *   as published by the Apache Software Foundation, version 2.0.
 *
 * You should have received a copy of the GNU Affero General Public License
 * and/or the Apache License in the LICENSE file along with Oracle NoSQL
 * Database client or server distribution.  If not, see
 * 
 * or
 * .
 *
 * An active Oracle commercial licensing agreement for this product supersedes
 * these licenses and in such case the license notices, but not the copyright
 * notice, may be removed by you in connection with your distribution that is
 * in accordance with the commercial licensing terms.
 *
 * For more information please contact:
 *
 * [email protected]
 *
 */

package com.sleepycat.je.utilint;

import static java.util.Collections.emptySet;

import java.io.Serializable;
import java.util.AbstractMap;
import java.util.AbstractSet;
import java.util.Comparator;
import java.util.Iterator;
import java.util.NoSuchElementException;
import java.util.Set;
import java.util.SortedMap;
import java.util.SortedSet;

/**
 * Java Collection utilities.
 */
public final class CollectionUtils {

    /** This class cannot be instantiated. */
    private CollectionUtils() {
        throw new AssertionError();
    }

    /**
     * An empty, unmodifiable, serializable, sorted set used for
     * emptySortedSet.
     */
    private static class EmptySortedSet extends AbstractSet
            implements SortedSet, Serializable {

        private static final long serialVersionUID = 1;

        @SuppressWarnings("rawtypes")
        static final SortedSet INSTANCE = new EmptySortedSet();

        @SuppressWarnings("rawtypes")
        private static Iterator ITER = new Iterator() {
            @Override
            public boolean hasNext() { return false; }
            @Override
            public Object next() { throw new NoSuchElementException(); }
            @Override
            public void remove() {
                throw new UnsupportedOperationException("remove");
            }
        };

        /* Implement SortedSet */

        @Override
        public Comparator comparator() { return null; }
        @Override
        public SortedSet subSet(E fromElement, E toElement) {
            return emptySortedSet();
        }
        @Override
        public SortedSet headSet(E toElement) { return emptySortedSet(); }
        @Override
        public SortedSet tailSet(E fromElement) { return emptySortedSet(); }
        @Override
        public E first() { throw new NoSuchElementException(); }
        @Override
        public E last() { throw new NoSuchElementException(); }

        /* Implement Set */

        @SuppressWarnings("unchecked")
        @Override
        public Iterator iterator() { return (Iterator) ITER; }
        @Override
        public int size() { return 0; }

        /** Use canonical instance. */
        private Object readResolve() { return INSTANCE; }
    }

    /**
     * An empty, unmodifiable, serializable, sorted map used for
     * emptySortedMap.
     */
    private static class EmptySortedMap extends AbstractMap
            implements SortedMap, Serializable {

        private static final long serialVersionUID = 1;

        @SuppressWarnings("rawtypes")
        static final SortedMap INSTANCE =
            new EmptySortedMap();

        /* Implement SortedMap */

        @Override
        public Comparator comparator() { return null; }
        @Override
        public SortedMap subMap(K fromKey, K toKey) {
            return emptySortedMap();
        }
        @Override
        public SortedMap headMap(K toKey) { return emptySortedMap(); }
        @Override
        public SortedMap tailMap(K fromKey) { return emptySortedMap(); }
        @Override
        public K firstKey() { throw new NoSuchElementException(); }
        @Override
        public K lastKey()  { throw new NoSuchElementException(); }

        /* Implement Map */

        @Override
        public Set> entrySet() { return emptySet(); }

        /** Use canonical instance. */
        private Object readResolve() { return INSTANCE; }
    }

    /**
     * Returns an empty, immutable, serializable sorted set.
     *
     * @param  the element type
     * @return the empty sorted set
     */
    /* TODO: Replace with Collections.emptySortedSet in Java 8 */
    @SuppressWarnings("unchecked")
    public static  SortedSet emptySortedSet() {
        return (SortedSet) EmptySortedSet.INSTANCE;
    }

    /**
     * Returns an empty, immutable, serializable sorted map.
     *
     * @param  the key type
     * @param  the value type
     * @return the empty sorted map
     */
    /* TODO: Replace with Collections.emptySortedMap in Java 8 */
    @SuppressWarnings("unchecked")
    public static  SortedMap emptySortedMap() {
        return (SortedMap) EmptySortedMap.INSTANCE;
    }
}