private List gl_read_pear()

in uimaj-core/src/main/java/org/apache/uima/jcas/cas/FSArrayList.java [288:619]


  private List<T> gl_read_pear(List<T> baseItems) {
    
    return new List<T>() {
      /*
       * @see java.lang.Iterable#forEach(java.util.function.Consumer)
       */
      @Override
      public void forEach(Consumer<? super T> action) {
        baseItems.forEach(item -> {
            T pearedItem = _maybeGetPearFs(item);
            action.accept(pearedItem);
        });
      }

      /*
       * @see java.util.List#size()
       */
      @Override
      public int size() {
        return baseItems.size();
      }

      /*
       * @see java.util.List#isEmpty()
       */
      @Override
      public boolean isEmpty() {
        return baseItems.isEmpty();
      }

      /*
       * @see java.util.List#contains(java.lang.Object)
       */
      @Override
      public boolean contains(Object o) {
        return (o instanceof TOP top)
                 ? baseItems.contains(_maybeGetBaseForPearFs(top))
                 : false;
      }

      /*
       * @see java.util.List#iterator()
       */
      @Override
      public Iterator<T> iterator() {
        return new Iterator<T>() {
          
          Iterator<T> outerIt = baseItems.iterator();

          /*
           * @see java.util.Iterator#hasNext()
           */
          @Override
          public boolean hasNext() {
            return outerIt.hasNext();
          }

          /*
           * @see java.util.Iterator#next()
           */
          @Override
          public T next() {
            return _maybeGetPearFs(outerIt.next());
          }

        };
      }

      /*
       * @see java.util.List#toArray()
       */
      @Override
      public Object[] toArray() {
        Object[] a = baseItems.toArray();
        FSArrayList.this._casView.swapInPearVersion(a);
        return a;
      }
      
      /*
       * @see java.util.List#toArray(java.lang.Object[])
       */
      @Override
      public <U> U[] toArray(U[] a) {
        U[] aa = baseItems.toArray(a);
        FSArrayList.this._casView.swapInPearVersion(aa);
        return aa;    
      }

      /*
       * @see java.util.List#add(java.lang.Object)
       */
      @Override
      public boolean add(T e) {
        throw new UnsupportedOperationException();
     }

      /*
       * @see java.util.List#remove(java.lang.Object)
       */
      @Override
      public boolean remove(Object o) {
        throw new UnsupportedOperationException();
      }

      /*
       * @see java.util.List#containsAll(java.util.Collection)
       */
      @Override
      public boolean containsAll(Collection<?> c) {
        for (Object item : c) {
          if (!contains(item)) {
            return false;
          }
        }
        return true;
      }

      /*
       * @see java.util.List#addAll(java.util.Collection)
       */
      @Override
      public boolean addAll(Collection<? extends T> c) {
        throw new UnsupportedOperationException();
      }

      /*
       * @see java.util.List#addAll(int, java.util.Collection)
       */
      @Override
      public boolean addAll(int index, Collection<? extends T> c) {
        throw new UnsupportedOperationException();
      }

      /*
       * @see java.util.List#removeAll(java.util.Collection)
       */
      @Override
      public boolean removeAll(Collection<?> c) {
        throw new UnsupportedOperationException();
      }

      /*
       * @see java.util.List#retainAll(java.util.Collection)
       */
      @Override
      public boolean retainAll(Collection<?> c) {
        throw new UnsupportedOperationException();
      }

      /*
       * @see java.util.List#replaceAll(java.util.function.UnaryOperator)
       */
      @Override
      public void replaceAll(UnaryOperator<T> operator) {
        for (int i = size() - 1; i >= 0; i--) {
          baseItems.set(i, _maybeGetBaseForPearFs(
              operator.apply(_maybeGetPearFs(baseItems.get(i)))));
        }
      }

      /*
       * @see java.util.Collection#removeIf(java.util.function.Predicate)
       */
      @Override
      public boolean removeIf(Predicate<? super T> filter) {
        throw new UnsupportedOperationException();
      }

      /*
       * @see java.util.List#sort(java.util.Comparator)
       */
      @Override
      public void sort(Comparator<? super T> c) {
        baseItems.sort((o1, o2) -> c.compare(_maybeGetPearFs(o1), _maybeGetPearFs(o2))); 
      }

      /*
       * @see java.util.List#clear()
       */
      @Override
      public void clear() {
        throw new UnsupportedOperationException();
      }

      /*
       * @see java.util.List#equals(java.lang.Object)
       */
      @Override
      public boolean equals(Object o) {
        return baseItems.equals(o);
      }

      /*
       * @see java.util.List#hashCode()
       */
      @Override
      public int hashCode() {
        return baseItems.hashCode();
      }

      /*
       * @see java.util.List#get(int)
       */
      @Override
      public T get(int index) {
        return _maybeGetPearFs(baseItems.get(index));
      }

      /*
       * @see java.util.List#set(int, java.lang.Object)
       */
      @Override
      public T set(int index, T element) {
        return baseItems.set(index, _maybeGetBaseForPearFs(element));
      }

      /*
       * @see java.util.List#add(int, java.lang.Object)
       */
      @Override
      public void add(int index, T element) {
        throw new UnsupportedOperationException();
      }

      /*
       * @see java.util.Collection#stream()
       */
      @Override
      public Stream<T> stream() {
        return baseItems.stream().map(item -> _maybeGetPearFs(item));
      }

      /*
       * @see java.util.List#remove(int)
       */
      @Override
      public T remove(int index) {
        throw new UnsupportedOperationException();
      }

      /*
       * @see java.util.Collection#parallelStream()
       */
      @Override
      public Stream<T> parallelStream() {
        return baseItems.parallelStream().map(item -> _maybeGetPearFs(item));
      }

      @Override
      public int indexOf(Object o) {
        return baseItems.indexOf((o instanceof TOP top) ? _maybeGetBaseForPearFs(top) : o);
      }

      @Override
      public int lastIndexOf(Object o) {
        return baseItems.lastIndexOf((o instanceof TOP top) ? _maybeGetBaseForPearFs(top) : o);
      }

      @Override
      public ListIterator<T> listIterator() {
        return listIterator(0);
      }

      @Override
      public ListIterator<T> listIterator(int index) {
        return new ListIterator<T>() {
          
          ListIterator<T> baseIt = baseItems.listIterator(index);
          
          @Override
          public boolean hasNext() {
            return baseIt.hasNext();
          }

          @Override
          public T next() {
            return _maybeGetPearFs(baseIt.next());
          }

          @Override
          public boolean hasPrevious() {
            return baseIt.hasPrevious();
          }

          @Override
          public void forEachRemaining(Consumer<? super T> action) {
            baseIt.forEachRemaining(item -> action.accept(_maybeGetPearFs(item)));
          }

          @Override
          public T previous() {
            return baseIt.previous();
          }

          @Override
          public int nextIndex() {
            return baseIt.nextIndex();
          }

          @Override
          public int previousIndex() {
            return baseIt.previousIndex();
          }

          @Override
          public void remove() {
            throw new UnsupportedOperationException();
          }

          @Override
          public void set(T e) {
            baseIt.set(_maybeGetBaseForPearFs(e));
          }

          @Override
          public void add(T e) {
            throw new UnsupportedOperationException();
          }
        };
      }

      @Override
      public List<T> subList(int fromIndex, int toIndex) {
        return gl_read_pear(baseItems.subList(fromIndex, toIndex));
      }

      @Override
      public Spliterator<T> spliterator() {
        return FSArrayList.this._casView.makePearAware(baseItems.spliterator());
      }
    };
  }