1 /*
2 * Copyright (c) 2017, Oracle and/or its affiliates. All rights reserved.
3 */
4 /*
5 * Licensed to the Apache Software Foundation (ASF) under one or more
6 * contributor license agreements. See the NOTICE file distributed with
7 * this work for additional information regarding copyright ownership.
8 * The ASF licenses this file to You under the Apache License, Version 2.0
9 * (the "License"); you may not use this file except in compliance with
10 * the License. You may obtain a copy of the License at
11 *
12 * http://www.apache.org/licenses/LICENSE-2.0
13 *
14 * Unless required by applicable law or agreed to in writing, software
15 * distributed under the License is distributed on an "AS IS" BASIS,
16 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
17 * See the License for the specific language governing permissions and
18 * limitations under the License.
19 */
20
21 package com.sun.org.apache.xerces.internal.impl.xs;
22
23 import com.sun.org.apache.xerces.internal.xs.StringList;
24 import java.util.AbstractList;
25
26 /**
27 * StringList implementation for schema error codes and error messages.
28 *
29 * @xerces.internal
30 *
31 * @author Michael Glavassevich, IBM
32 *
33 * @LastModified: Oct 2017
34 */
35 final class PSVIErrorList extends AbstractList<String> implements StringList {
36
37 private final String[] fArray;
38 private final int fLength;
39 private final int fOffset;
40
41 public PSVIErrorList(String[] array, boolean even) {
42 fArray = array;
43 fLength = (fArray.length >> 1);
44 fOffset = even ? 0 : 1;
45 }
46
47 public boolean contains(String item) {
48 if (item == null) {
49 for (int i = 0; i < fLength; ++i) {
50 if (fArray[(i << 1) + fOffset] == null) {
51 return true;
52 }
53 }
54 }
55 else {
56 for (int i = 0; i < fLength; ++i) {
57 if (item.equals(fArray[(i << 1) + fOffset])) {
58 return true;
59 }
60 }
61 }
62 return false;
63 }
64
65 public int getLength() {
66 return fLength;
67 }
68
69 public String item(int index) {
70 if (index < 0 || index >= fLength) {
71 return null;
72 }
73 return fArray[(index << 1) + fOffset];
74 }
75
76 /*
77 * List methods
78 */
79
80 public String get(int index) {
81 if (index >= 0 && index < fLength) {
82 return fArray[(index << 1) + fOffset];
83 }
84 throw new IndexOutOfBoundsException("Index: " + index);
85 }
86
87 public int size() {
88 return getLength();
89 }
90
91 } // class PSVIErrorList
--- EOF ---