--- old/src/java.base/share/classes/sun/text/normalizer/CharacterIteratorWrapper.java 2020-01-10 13:50:04.000000000 -0800 +++ /dev/null 2020-01-10 13:50:04.000000000 -0800 @@ -1,145 +0,0 @@ -/* - * Copyright (c) 2005, 2015, Oracle and/or its affiliates. All rights reserved. - * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. - * - * This code is free software; you can redistribute it and/or modify it - * under the terms of the GNU General Public License version 2 only, as - * published by the Free Software Foundation. Oracle designates this - * particular file as subject to the "Classpath" exception as provided - * by Oracle in the LICENSE file that accompanied this code. - * - * This code 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 General Public License - * version 2 for more details (a copy is included in the LICENSE file that - * accompanied this code). - * - * You should have received a copy of the GNU General Public License version - * 2 along with this work; if not, write to the Free Software Foundation, - * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. - * - * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA - * or visit www.oracle.com if you need additional information or have any - * questions. - */ - -/* - ******************************************************************************* - * (C) Copyright IBM Corp. 1996-2005 - All Rights Reserved * - * * - * The original version of this source code and documentation is copyrighted * - * and owned by IBM, These materials are provided under terms of a License * - * Agreement between IBM and Sun. This technology is protected by multiple * - * US and International patents. This notice and attribution to IBM may not * - * to removed. * - ******************************************************************************* - */ - -package sun.text.normalizer; - -import java.text.CharacterIterator; - -/** - * This class is a wrapper around CharacterIterator and implements the - * UCharacterIterator protocol - * @author ram - */ - -class CharacterIteratorWrapper extends UCharacterIterator { - - private CharacterIterator iterator; - - public CharacterIteratorWrapper(CharacterIterator iter){ - if(iter==null){ - throw new IllegalArgumentException(); - } - iterator = iter; - } - - /** - * @see UCharacterIterator#current() - */ - public int current() { - int c = iterator.current(); - if(c==CharacterIterator.DONE){ - return DONE; - } - return c; - } - - /** - * @see UCharacterIterator#getLength() - */ - public int getLength() { - return (iterator.getEndIndex() - iterator.getBeginIndex()); - } - - /** - * @see UCharacterIterator#getIndex() - */ - public int getIndex() { - return iterator.getIndex(); - } - - /** - * @see UCharacterIterator#next() - */ - public int next() { - int i = iterator.current(); - iterator.next(); - if(i==CharacterIterator.DONE){ - return DONE; - } - return i; - } - - /** - * @see UCharacterIterator#previous() - */ - public int previous() { - int i = iterator.previous(); - if(i==CharacterIterator.DONE){ - return DONE; - } - return i; - } - - /** - * @see UCharacterIterator#setIndex(int) - */ - public void setIndex(int index) { - iterator.setIndex(index); - } - - /** - * @see UCharacterIterator#getText(char[]) - */ - public int getText(char[] fillIn, int offset){ - int length =iterator.getEndIndex() - iterator.getBeginIndex(); - int currentIndex = iterator.getIndex(); - if(offset < 0 || offset + length > fillIn.length){ - throw new IndexOutOfBoundsException(Integer.toString(length)); - } - - for (char ch = iterator.first(); ch != CharacterIterator.DONE; ch = iterator.next()) { - fillIn[offset++] = ch; - } - iterator.setIndex(currentIndex); - - return length; - } - - /** - * Creates a clone of this iterator. Clones the underlying character iterator. - * @see UCharacterIterator#clone() - */ - public Object clone(){ - try { - CharacterIteratorWrapper result = (CharacterIteratorWrapper) super.clone(); - result.iterator = (CharacterIterator)this.iterator.clone(); - return result; - } catch (CloneNotSupportedException e) { - return null; // only invoked if bad underlying character iterator - } - } -} --- /dev/null 2020-01-10 13:50:04.000000000 -0800 +++ new/src/java.base/share/classes/jdk/internal/icu/impl/CharacterIteratorWrapper.java 2020-01-10 13:50:03.000000000 -0800 @@ -0,0 +1,147 @@ +/* + * Copyright (c) 2005, 2020, Oracle and/or its affiliates. All rights reserved. + * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. + * + * This code is free software; you can redistribute it and/or modify it + * under the terms of the GNU General Public License version 2 only, as + * published by the Free Software Foundation. Oracle designates this + * particular file as subject to the "Classpath" exception as provided + * by Oracle in the LICENSE file that accompanied this code. + * + * This code 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 General Public License + * version 2 for more details (a copy is included in the LICENSE file that + * accompanied this code). + * + * You should have received a copy of the GNU General Public License version + * 2 along with this work; if not, write to the Free Software Foundation, + * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. + * + * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA + * or visit www.oracle.com if you need additional information or have any + * questions. + */ + +/* + ******************************************************************************* + * (C) Copyright IBM Corp. 1996-2005 - All Rights Reserved * + * * + * The original version of this source code and documentation is copyrighted * + * and owned by IBM, These materials are provided under terms of a License * + * Agreement between IBM and Sun. This technology is protected by multiple * + * US and International patents. This notice and attribution to IBM may not * + * to removed. * + ******************************************************************************* + */ + +package jdk.internal.icu.impl; + +import java.text.CharacterIterator; + +import jdk.internal.icu.text.UCharacterIterator; + +/** + * This class is a wrapper around CharacterIterator and implements the + * UCharacterIterator protocol + * @author ram + */ + +public class CharacterIteratorWrapper extends UCharacterIterator { + + private CharacterIterator iterator; + + public CharacterIteratorWrapper(CharacterIterator iter){ + if(iter==null){ + throw new IllegalArgumentException(); + } + iterator = iter; + } + + /** + * @see UCharacterIterator#current() + */ + public int current() { + int c = iterator.current(); + if(c==CharacterIterator.DONE){ + return DONE; + } + return c; + } + + /** + * @see UCharacterIterator#getLength() + */ + public int getLength() { + return (iterator.getEndIndex() - iterator.getBeginIndex()); + } + + /** + * @see UCharacterIterator#getIndex() + */ + public int getIndex() { + return iterator.getIndex(); + } + + /** + * @see UCharacterIterator#next() + */ + public int next() { + int i = iterator.current(); + iterator.next(); + if(i==CharacterIterator.DONE){ + return DONE; + } + return i; + } + + /** + * @see UCharacterIterator#previous() + */ + public int previous() { + int i = iterator.previous(); + if(i==CharacterIterator.DONE){ + return DONE; + } + return i; + } + + /** + * @see UCharacterIterator#setIndex(int) + */ + public void setIndex(int index) { + iterator.setIndex(index); + } + + /** + * @see UCharacterIterator#getText(char[]) + */ + public int getText(char[] fillIn, int offset){ + int length =iterator.getEndIndex() - iterator.getBeginIndex(); + int currentIndex = iterator.getIndex(); + if(offset < 0 || offset + length > fillIn.length){ + throw new IndexOutOfBoundsException(Integer.toString(length)); + } + + for (char ch = iterator.first(); ch != CharacterIterator.DONE; ch = iterator.next()) { + fillIn[offset++] = ch; + } + iterator.setIndex(currentIndex); + + return length; + } + + /** + * Creates a clone of this iterator. Clones the underlying character iterator. + * @see UCharacterIterator#clone() + */ + public Object clone(){ + try { + CharacterIteratorWrapper result = (CharacterIteratorWrapper) super.clone(); + result.iterator = (CharacterIterator)this.iterator.clone(); + return result; + } catch (CloneNotSupportedException e) { + return null; // only invoked if bad underlying character iterator + } + } +}