001 /*
002 * Licensed to the Apache Software Foundation (ASF) under one or more
003 * contributor license agreements. See the NOTICE file distributed with
004 * this work for additional information regarding copyright ownership.
005 * The ASF licenses this file to You under the Apache License, Version 2.0
006 * (the "License"); you may not use this file except in compliance with
007 * the License. You may obtain a copy of the License at
008 *
009 * http://www.apache.org/licenses/LICENSE-2.0
010 *
011 * Unless required by applicable law or agreed to in writing, software
012 * distributed under the License is distributed on an "AS IS" BASIS,
013 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
014 * See the License for the specific language governing permissions and
015 * limitations under the License.
016 */
017 package org.apache.commons.collections.primitives;
018
019 import org.apache.commons.collections.primitives.decorators.UnmodifiableByteIterator;
020 import org.apache.commons.collections.primitives.decorators.UnmodifiableByteList;
021 import org.apache.commons.collections.primitives.decorators.UnmodifiableByteListIterator;
022
023 /**
024 * This class consists exclusively of static methods that operate on or
025 * return ByteCollections.
026 * <p>
027 * The methods of this class all throw a NullPoByteerException if the
028 * provided collection is null.
029 *
030 * @version $Revision: 480460 $ $Date: 2006-11-29 09:14:21 +0100 (Wed, 29 Nov 2006) $
031 *
032 * @author Rodney Waldhoff
033 */
034 public final class ByteCollections {
035
036 /**
037 * Returns an unmodifiable ByteList containing only the specified element.
038 * @param value the single value
039 * @return an unmodifiable ByteList containing only the specified element.
040 */
041 public static ByteList singletonByteList(byte value) {
042 // TODO: a specialized implementation of ByteList may be more performant
043 ByteList list = new ArrayByteList(1);
044 list.add(value);
045 return UnmodifiableByteList.wrap(list);
046 }
047
048 /**
049 * Returns an unmodifiable ByteIterator containing only the specified element.
050 * @param value the single value
051 * @return an unmodifiable ByteIterator containing only the specified element.
052 */
053 public static ByteIterator singletonByteIterator(byte value) {
054 return singletonByteList(value).iterator();
055 }
056
057 /**
058 * Returns an unmodifiable ByteListIterator containing only the specified element.
059 * @param value the single value
060 * @return an unmodifiable ByteListIterator containing only the specified element.
061 */
062 public static ByteListIterator singletonByteListIterator(byte value) {
063 return singletonByteList(value).listIterator();
064 }
065
066 /**
067 * Returns an unmodifiable version of the given non-null ByteList.
068 * @param list the non-null ByteList to wrap in an unmodifiable decorator
069 * @return an unmodifiable version of the given non-null ByteList
070 * @throws NullPointerException if the given ByteList is null
071 * @see org.apache.commons.collections.primitives.decorators.UnmodifiableByteList#wrap
072 */
073 public static ByteList unmodifiableByteList(ByteList list) throws NullPointerException {
074 if(null == list) {
075 throw new NullPointerException();
076 }
077 return UnmodifiableByteList.wrap(list);
078 }
079
080 /**
081 * Returns an unmodifiable version of the given non-null ByteIterator.
082 * @param iter the non-null ByteIterator to wrap in an unmodifiable decorator
083 * @return an unmodifiable version of the given non-null ByteIterator
084 * @throws NullPointerException if the given ByteIterator is null
085 * @see org.apache.commons.collections.primitives.decorators.UnmodifiableByteIterator#wrap
086 */
087 public static ByteIterator unmodifiableByteIterator(ByteIterator iter) {
088 if(null == iter) {
089 throw new NullPointerException();
090 }
091 return UnmodifiableByteIterator.wrap(iter);
092 }
093
094 /**
095 * Returns an unmodifiable version of the given non-null ByteListIterator.
096 * @param iter the non-null ByteListIterator to wrap in an unmodifiable decorator
097 * @return an unmodifiable version of the given non-null ByteListIterator
098 * @throws NullPointerException if the given ByteListIterator is null
099 * @see org.apache.commons.collections.primitives.decorators.UnmodifiableByteListIterator#wrap
100 */
101 public static ByteListIterator unmodifiableByteListIterator(ByteListIterator iter) {
102 if(null == iter) {
103 throw new NullPointerException();
104 }
105 return UnmodifiableByteListIterator.wrap(iter);
106 }
107
108 /**
109 * Returns an unmodifiable, empty ByteList.
110 * @return an unmodifiable, empty ByteList.
111 * @see #EMPTY_BYTE_LIST
112 */
113 public static ByteList getEmptyByteList() {
114 return EMPTY_BYTE_LIST;
115 }
116
117 /**
118 * Returns an unmodifiable, empty ByteIterator
119 * @return an unmodifiable, empty ByteIterator.
120 * @see #EMPTY_BYTE_ITERATOR
121 */
122 public static ByteIterator getEmptyByteIterator() {
123 return EMPTY_BYTE_ITERATOR;
124 }
125
126 /**
127 * Returns an unmodifiable, empty ByteListIterator
128 * @return an unmodifiable, empty ByteListIterator.
129 * @see #EMPTY_BYTE_LIST_ITERATOR
130 */
131 public static ByteListIterator getEmptyByteListIterator() {
132 return EMPTY_BYTE_LIST_ITERATOR;
133 }
134
135 /**
136 * An unmodifiable, empty ByteList
137 * @see #getEmptyByteList
138 */
139 public static final ByteList EMPTY_BYTE_LIST = unmodifiableByteList(new ArrayByteList(0));
140
141 /**
142 * An unmodifiable, empty ByteIterator
143 * @see #getEmptyByteIterator
144 */
145 public static final ByteIterator EMPTY_BYTE_ITERATOR = unmodifiableByteIterator(EMPTY_BYTE_LIST.iterator());
146
147 /**
148 * An unmodifiable, empty ByteListIterator
149 * @see #getEmptyByteListIterator
150 */
151 public static final ByteListIterator EMPTY_BYTE_LIST_ITERATOR = unmodifiableByteListIterator(EMPTY_BYTE_LIST.listIterator());
152 }