You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@poi.apache.org by ki...@apache.org on 2020/09/06 00:16:03 UTC

svn commit: r1881505 - in /xmlbeans/trunk/src/main/java/org/apache/xmlbeans/impl: schema/StscImporter.java store/CharUtil.java

Author: kiwiwings
Date: Sun Sep  6 00:16:02 2020
New Revision: 1881505

URL: http://svn.apache.org/viewvc?rev=1881505&view=rev
Log:
Spotbugs fixes & raw types to generics

Modified:
    xmlbeans/trunk/src/main/java/org/apache/xmlbeans/impl/schema/StscImporter.java
    xmlbeans/trunk/src/main/java/org/apache/xmlbeans/impl/store/CharUtil.java

Modified: xmlbeans/trunk/src/main/java/org/apache/xmlbeans/impl/schema/StscImporter.java
URL: http://svn.apache.org/viewvc/xmlbeans/trunk/src/main/java/org/apache/xmlbeans/impl/schema/StscImporter.java?rev=1881505&r1=1881504&r2=1881505&view=diff
==============================================================================
--- xmlbeans/trunk/src/main/java/org/apache/xmlbeans/impl/schema/StscImporter.java (original)
+++ xmlbeans/trunk/src/main/java/org/apache/xmlbeans/impl/schema/StscImporter.java Sun Sep  6 00:16:02 2020
@@ -365,7 +365,7 @@ public class StscImporter {
 
             // First resolve relative URLs with respect to base URL for doc
             URI baseURI = parseURI(baseURLForDoc(referencedBy));
-            String absoluteURL;
+            final String absoluteURL;
             try {
                 absoluteURL = baseURI == null ? locationURL : resolve(baseURI, locationURL).toString();
             } catch (URISyntaxException e) {
@@ -373,13 +373,15 @@ public class StscImporter {
                 return null;
             }
 
+            assert (absoluteURL != null);
+
             // probe 0: this url is already processed, from a previous compile
             if (state.isFileProcessed(absoluteURL)) {
                 return null;
             }
 
             // probe 1: ns+url - perfect match
-            if (absoluteURL != null && targetNamespace != null) {
+            if (targetNamespace != null) {
                 Schema result = schemaByNsLocPair.get(new NsLocPair(targetNamespace, absoluteURL));
                 if (result != null) {
                     return result;
@@ -414,19 +416,12 @@ public class StscImporter {
             }
 
             // probe 3: url only
-            if (absoluteURL != null) {
-                Schema result = schemaByNsLocPair.get(new NsLocPair(null, absoluteURL));
-                if (result != null) {
-                    return result;
-                }
+            final Schema result2 = schemaByNsLocPair.get(new NsLocPair(null, absoluteURL));
+            if (result2 != null) {
+                return result2;
             }
 
             // no match: error if we can't or won't download.
-            if (absoluteURL == null) {
-                state.error("Could not find resource - no valid location URL.", XmlErrorCodes.CANNOT_FIND_RESOURCE, referencedBy);
-                return null;
-            }
-
             if (previouslyFailedToDownload(absoluteURL)) {
                 // an error message has already been produced.
                 return null;

Modified: xmlbeans/trunk/src/main/java/org/apache/xmlbeans/impl/store/CharUtil.java
URL: http://svn.apache.org/viewvc/xmlbeans/trunk/src/main/java/org/apache/xmlbeans/impl/store/CharUtil.java?rev=1881505&r1=1881504&r2=1881505&view=diff
==============================================================================
--- xmlbeans/trunk/src/main/java/org/apache/xmlbeans/impl/store/CharUtil.java (original)
+++ xmlbeans/trunk/src/main/java/org/apache/xmlbeans/impl/store/CharUtil.java Sun Sep  6 00:16:02 2020
@@ -17,142 +17,142 @@ package org.apache.xmlbeans.impl.store;
 import java.io.PrintStream;
 import java.lang.ref.SoftReference;
 
-public final class CharUtil
-{
-    public CharUtil ( int charBufSize )
-    {
+public final class CharUtil {
+    public CharUtil(int charBufSize) {
         _charBufSize = charBufSize;
     }
 
-    public CharIterator getCharIterator ( Object src, int off, int cch )
-    {
-        _charIter.init( src, off, cch );
+    public CharIterator getCharIterator(Object src, int off, int cch) {
+        _charIter.init(src, off, cch);
         return _charIter;
     }
-    
-    public CharIterator getCharIterator ( Object src, int off, int cch, int start )
-    {
-        _charIter.init( src, off, cch, start );
+
+    public CharIterator getCharIterator(Object src, int off, int cch, int start) {
+        _charIter.init(src, off, cch, start);
         return _charIter;
     }
 
-    public static CharUtil getThreadLocalCharUtil ( )
-    {
-        SoftReference softRef = (SoftReference)tl_charUtil.get();
-        CharUtil charUtil = (CharUtil) softRef.get();
-        if (charUtil==null)
-        {
-            charUtil = new CharUtil( CHARUTIL_INITIAL_BUFSIZE );
-            tl_charUtil.set(new SoftReference(charUtil));
+    public static CharUtil getThreadLocalCharUtil() {
+        SoftReference<CharUtil> softRef = tl_charUtil.get();
+        CharUtil charUtil = softRef.get();
+        if (charUtil == null) {
+            charUtil = new CharUtil(CHARUTIL_INITIAL_BUFSIZE);
+            tl_charUtil.set(new SoftReference<>(charUtil));
         }
         return charUtil;
     }
 
-    public static void getString ( StringBuffer sb, Object src, int off, int cch )
-    {
-        assert isValid( src, off, cch );
+    public static void getString(StringBuffer sb, Object src, int off, int cch) {
+        assert isValid(src, off, cch);
 
-        if (cch == 0)
+        if (cch == 0) {
             return;
+        }
 
-        if (src instanceof char[])
-            sb.append( (char[]) src, off, cch );
-        else if (src instanceof String)
-        {
+        if (src instanceof char[]) {
+            sb.append((char[]) src, off, cch);
+        } else if (src instanceof String) {
             String s = (String) src;
-            
-            if (off == 0 && cch == s.length())
-                sb.append( (String) src );
-            else
-                sb.append( s.substring( off, off + cch ) );
-        }
-        else
-            ((CharJoin) src).getString( sb, off, cch );
-    }
-    
-    public static void getChars ( char[] chars, int start, Object src, int off, int cch )
-    {
-        assert isValid( src, off, cch );
+
+            if (off == 0 && cch == s.length()) {
+                sb.append(s);
+            } else {
+                sb.append(s, off, off + cch);
+            }
+        } else {
+            ((CharJoin) src).getString(sb, off, cch);
+        }
+    }
+
+    public static void getChars(char[] chars, int start, Object src, int off, int cch) {
+        assert isValid(src, off, cch);
         assert chars != null && start >= 0 && start <= chars.length;
 
-        if (cch == 0)
+        if (cch == 0) {
             return;
+        }
+
+        if (src instanceof char[]) {
+            char[] cs = (char[]) src;
+            System.arraycopy(cs, off, chars, start, cch);
+        } else if (src instanceof String) {
+            ((String) src).getChars(off, off + cch, chars, start);
+        } else {
+            ((CharJoin) src).getChars(chars, start, off, cch);
+        }
+    }
 
-        if (src instanceof char[])
-            System.arraycopy( (char[]) src, off, chars, start, cch );
-        else if (src instanceof String)
-            ((String) src).getChars( off, off + cch, chars, start );
-        else
-            ((CharJoin) src).getChars( chars, start, off, cch );
-    }
-    
-    public static String getString ( Object src, int off, int cch )
-    {
-        assert isValid( src, off, cch );
+    public static String getString(Object src, int off, int cch) {
+        assert isValid(src, off, cch);
 
-        if (cch == 0)
+        if (cch == 0) {
             return "";
+        }
 
-        if (src instanceof char[])
-            return new String( (char[]) src, off, cch );
+        if (src instanceof char[]) {
+            return new String((char[]) src, off, cch);
+        }
 
-        if (src instanceof String)
-        {
+        if (src instanceof String) {
             String s = (String) src;
 
-            if (off == 0 && cch == s.length())
+            if (off == 0 && cch == s.length()) {
                 return s;
+            }
 
-            return s.substring( off, off + cch );
+            return s.substring(off, off + cch);
         }
 
         StringBuffer sb = new StringBuffer();
-        
-        ((CharJoin) src).getString( sb, off, cch );
-        
+
+        ((CharJoin) src).getString(sb, off, cch);
+
         return sb.toString();
     }
 
-    public static final boolean isWhiteSpace ( char ch )
-    {
-        switch ( ch )
-        {
-            case ' ': case '\t': case '\n': case '\r': return true;
-            default                                  : return false;
+    public static boolean isWhiteSpace(char ch) {
+        switch (ch) {
+            case ' ':
+            case '\t':
+            case '\n':
+            case '\r':
+                return true;
+            default:
+                return false;
         }
     }
 
-    public final boolean isWhiteSpace ( Object src, int off, int cch )
-    {
-        assert isValid( src, off, cch );
+    public final boolean isWhiteSpace(Object src, int off, int cch) {
+        assert isValid(src, off, cch);
 
-        if (cch <= 0)
+        if (cch <= 0) {
             return true;
-        
-        if (src instanceof char[])
-        {
-            for ( char[] chars = (char[]) src ; cch > 0 ; cch-- )
-                if (!isWhiteSpace( chars[ off++ ] ))
+        }
+
+        if (src instanceof char[]) {
+            for (char[] chars = (char[]) src; cch > 0; cch--) {
+                if (!isWhiteSpace(chars[off++])) {
                     return false;
+                }
+            }
 
             return true;
         }
-            
-        if (src instanceof String)
-        {
-            for ( String s = (String) src ; cch > 0 ; cch-- )
-                if (!isWhiteSpace( s.charAt( off++ ) ))
+
+        if (src instanceof String) {
+            for (String s = (String) src; cch > 0; cch--) {
+                if (!isWhiteSpace(s.charAt(off++))) {
                     return false;
+                }
+            }
 
             return true;
         }
-            
+
         boolean isWhite = true;
 
-        for ( _charIter.init( src, off, cch ) ; _charIter.hasNext() ; )
-        {
-            if (!isWhiteSpace( _charIter.next() ))
-            {
+        for (_charIter.init(src, off, cch); _charIter.hasNext(); ) {
+            if (!isWhiteSpace(_charIter.next())) {
                 isWhite = false;
                 break;
             }
@@ -163,45 +163,43 @@ public final class CharUtil
         return isWhite;
     }
 
-    public Object stripLeft ( Object src, int off, int cch )
-    {
-        assert isValid( src, off, cch );
-
-        if (cch > 0)
-        {
-            if (src instanceof char[])
-            {
+    public Object stripLeft(Object src, int off, int cch) {
+        assert isValid(src, off, cch);
+
+        if (cch > 0) {
+            if (src instanceof char[]) {
                 char[] chars = (char[]) src;
 
-                while ( cch > 0 && isWhiteSpace( chars[ off ] ) )
-                    { cch--; off++; }
-            }
-            else if (src instanceof String)
-            {
+                while (cch > 0 && isWhiteSpace(chars[off])) {
+                    cch--;
+                    off++;
+                }
+            } else if (src instanceof String) {
                 String s = (String) src;
 
-                while ( cch > 0 && isWhiteSpace( s.charAt( off ) ) )
-                    { cch--; off++; }
-            }
-            else
-            {
+                while (cch > 0 && isWhiteSpace(s.charAt(off))) {
+                    cch--;
+                    off++;
+                }
+            } else {
                 int count = 0;
-                
-                for ( _charIter.init( src, off, cch ) ; _charIter.hasNext() ; count++ )
-                    if (!isWhiteSpace( _charIter.next() ))
+
+                for (_charIter.init(src, off, cch); _charIter.hasNext(); count++) {
+                    if (!isWhiteSpace(_charIter.next())) {
                         break;
-                
+                    }
+                }
+
                 _charIter.release();
 
                 off += count;
             }
         }
 
-        if (cch == 0)
-        {
+        if (cch == 0) {
             _offSrc = 0;
             _cchSrc = 0;
-            
+
             return null;
         }
 
@@ -211,24 +209,23 @@ public final class CharUtil
         return src;
     }
 
-    public Object stripRight ( Object src, int off, int cch )
-    {
-        assert isValid( src, off, cch );
-        
-        if (cch > 0)
-        {
-            for ( _charIter.init( src, off, cch, cch ) ; _charIter.hasPrev() ; cch-- )
-                if (!isWhiteSpace( _charIter.prev() ))
+    public Object stripRight(Object src, int off, int cch) {
+        assert isValid(src, off, cch);
+
+        if (cch > 0) {
+            for (_charIter.init(src, off, cch, cch); _charIter.hasPrev(); cch--) {
+                if (!isWhiteSpace(_charIter.prev())) {
                     break;
+                }
+            }
 
             _charIter.release();
         }
-        
-        if (cch == 0)
-        {
+
+        if (cch == 0) {
             _offSrc = 0;
             _cchSrc = 0;
-            
+
             return null;
         }
 
@@ -237,14 +234,13 @@ public final class CharUtil
 
         return src;
     }
-    
-    public Object insertChars (
+
+    public Object insertChars(
         int posInsert,
         Object src, int off, int cch,
-        Object srcInsert, int offInsert, int cchInsert )
-    {
-        assert isValid( src, off, cch );
-        assert isValid( srcInsert, offInsert, cchInsert );
+        Object srcInsert, int offInsert, int cchInsert) {
+        assert isValid(src, off, cch);
+        assert isValid(srcInsert, offInsert, cchInsert);
         assert posInsert >= 0 && posInsert <= cch;
 
         // TODO - at some point, instead of creating joins, I should
@@ -257,15 +253,13 @@ public final class CharUtil
         // or just create a new string ... this goes for remove chars
         // as well.
 
-        if (cchInsert == 0)
-        {
+        if (cchInsert == 0) {
             _cchSrc = cch;
             _offSrc = off;
             return src;
         }
 
-        if (cch == 0)
-        {
+        if (cch == 0) {
             _cchSrc = cchInsert;
             _offSrc = offInsert;
             return srcInsert;
@@ -275,138 +269,110 @@ public final class CharUtil
 
         Object newSrc;
 
-        if (_cchSrc <= MAX_COPY && canAllocate( _cchSrc ))
-        {
-            char[] c = allocate( _cchSrc );
-
-            getChars( c, _offSrc, src, off, posInsert );
-            getChars( c, _offSrc + posInsert, srcInsert, offInsert, cchInsert );
-            getChars( c, _offSrc + posInsert + cchInsert, src, off + posInsert, cch - posInsert );
+        if (_cchSrc <= MAX_COPY && canAllocate(_cchSrc)) {
+            char[] c = allocate(_cchSrc);
+
+            getChars(c, _offSrc, src, off, posInsert);
+            getChars(c, _offSrc + posInsert, srcInsert, offInsert, cchInsert);
+            getChars(c, _offSrc + posInsert + cchInsert, src, off + posInsert, cch - posInsert);
 
             newSrc = c;
-        }
-        else
-        {
+        } else {
             _offSrc = 0;
 
             CharJoin newJoin;
 
-            if (posInsert == 0)
-                newJoin = new CharJoin( srcInsert, offInsert, cchInsert, src, off );
-            else if (posInsert == cch)
-                newJoin = new CharJoin( src, off, cch, srcInsert, offInsert );
-            else
-            {
-                CharJoin j = new CharJoin( src, off, posInsert, srcInsert, offInsert );
-                newJoin = new CharJoin( j, 0, posInsert + cchInsert, src, off + posInsert );
-            }
-            
-            if (newJoin._depth > CharJoin.MAX_DEPTH)
-                newSrc = saveChars( newJoin, _offSrc, _cchSrc );
-            else
+            if (posInsert == 0) {
+                newJoin = new CharJoin(srcInsert, offInsert, cchInsert, src, off);
+            } else if (posInsert == cch) {
+                newJoin = new CharJoin(src, off, cch, srcInsert, offInsert);
+            } else {
+                CharJoin j = new CharJoin(src, off, posInsert, srcInsert, offInsert);
+                newJoin = new CharJoin(j, 0, posInsert + cchInsert, src, off + posInsert);
+            }
+
+            if (newJoin._depth > CharJoin.MAX_DEPTH) {
+                newSrc = saveChars(newJoin, _offSrc, _cchSrc);
+            } else {
                 newSrc = newJoin;
+            }
         }
 
-        assert isValid( newSrc, _offSrc, _cchSrc );
+        assert isValid(newSrc, _offSrc, _cchSrc);
 
         return newSrc;
     }
 
-    public Object removeChars ( int posRemove, int cchRemove, Object src, int off, int cch )
-    {
-        assert isValid( src, off, cch );
+    public Object removeChars(int posRemove, int cchRemove, Object src, int off, int cch) {
+        assert isValid(src, off, cch);
         assert posRemove >= 0 && posRemove <= cch;
         assert cchRemove >= 0 && posRemove + cchRemove <= cch;
 
         Object newSrc;
 
         _cchSrc = cch - cchRemove;
-        
-        if (_cchSrc == 0)
-        {
+
+        if (_cchSrc == 0) {
             newSrc = null;
             _offSrc = 0;
-        }
-        else if (posRemove == 0)
-        {
+        } else if (posRemove == 0) {
             newSrc = src;
             _offSrc = off + cchRemove;
-        }
-        else if (posRemove + cchRemove == cch)
-        {
+        } else if (posRemove + cchRemove == cch) {
             newSrc = src;
             _offSrc = off;
-        }
-        else
-        {
+        } else {
             int cchAfter = cch - cchRemove;
-            
-            if (cchAfter <= MAX_COPY && canAllocate( cchAfter ))
-            {
-                char[] chars = allocate( cchAfter );
 
-                getChars( chars, _offSrc, src, off, posRemove );
+            if (cchAfter <= MAX_COPY && canAllocate(cchAfter)) {
+                char[] chars = allocate(cchAfter);
+
+                getChars(chars, _offSrc, src, off, posRemove);
+
 
                 getChars(
                     chars, _offSrc + posRemove,
-                    src, off + posRemove + cchRemove, cch - posRemove - cchRemove );
+                    src, off + posRemove + cchRemove, cch - posRemove - cchRemove);
 
                 newSrc = chars;
-                _offSrc = _offSrc;
-            }
-            else
-            {
-                CharJoin j = new CharJoin( src, off, posRemove, src, off + posRemove + cchRemove );
-
-                if (j._depth > CharJoin.MAX_DEPTH)
-                    newSrc = saveChars( j, 0, _cchSrc );
-                else
-                {
+                // _offSrc = _offSrc;
+            } else {
+                CharJoin j = new CharJoin(src, off, posRemove, src, off + posRemove + cchRemove);
+
+                if (j._depth > CharJoin.MAX_DEPTH) {
+                    newSrc = saveChars(j, 0, _cchSrc);
+                } else {
                     newSrc = j;
                     _offSrc = 0;
                 }
             }
         }
-        
-        assert isValid( newSrc, _offSrc, _cchSrc );
-        
-        return newSrc;
-    }
 
-    private static int sizeof ( Object src )
-    {
-        assert src == null || src instanceof String || src instanceof char[];
-        
-        if (src instanceof char[])
-            return ((char[]) src).length;
+        assert isValid(newSrc, _offSrc, _cchSrc);
 
-        return src == null ? 0 : ((String) src).length();
+        return newSrc;
     }
 
-    private boolean canAllocate ( int cch )
-    {
+    private boolean canAllocate(int cch) {
         return _currentBuffer == null || _currentBuffer.length - _currentOffset >= cch;
     }
-    
-    private char[] allocate ( int cch )
-    {
+
+    private char[] allocate(int cch) {
         assert _currentBuffer == null || _currentBuffer.length - _currentOffset > 0;
-        
-        if (_currentBuffer == null)
-        {
-            _currentBuffer = new char [ Math.max( cch, _charBufSize ) ];
+
+        if (_currentBuffer == null) {
+            _currentBuffer = new char[Math.max(cch, _charBufSize)];
             _currentOffset = 0;
         }
 
         _offSrc = _currentOffset;
-        _cchSrc = Math.min( _currentBuffer.length - _currentOffset, cch );
+        _cchSrc = Math.min(_currentBuffer.length - _currentOffset, cch);
 
         char[] retBuf = _currentBuffer;
 
         assert _currentOffset + _cchSrc <= _currentBuffer.length;
 
-        if ((_currentOffset += _cchSrc) == _currentBuffer.length)
-        {
+        if ((_currentOffset += _cchSrc) == _currentBuffer.length) {
             _currentBuffer = null;
             _currentOffset = 0;
         }
@@ -414,15 +380,13 @@ public final class CharUtil
         return retBuf;
     }
 
-    public Object saveChars ( Object srcSave, int offSave, int cchSave )
-    {
-        return saveChars( srcSave, offSave, cchSave, null, 0, 0 );
+    public Object saveChars(Object srcSave, int offSave, int cchSave) {
+        return saveChars(srcSave, offSave, cchSave, null, 0, 0);
     }
-            
-    public Object saveChars (
+
+    public Object saveChars(
         Object srcSave, int offSave, int cchSave,
-        Object srcPrev, int offPrev, int cchPrev )
-    {
+        Object srcPrev, int offPrev, int cchPrev) {
         // BUGBUG (ericvas)
         //
         // There is a severe degenerate situation which can deveol here.  The cases is where
@@ -432,25 +396,25 @@ public final class CharUtil
         // out a way that a whole bunch of joins are not created.  I really only want to create
         // joins in situations where large amount of text is manipulated.
 
-        assert isValid( srcSave, offSave, cchSave );
-        assert isValid( srcPrev, offPrev, cchPrev );
+        assert isValid(srcSave, offSave, cchSave);
+        assert isValid(srcPrev, offPrev, cchPrev);
 
         // Allocate some space to save the text and copy it there.  This may not allocate all
         // the space I need.  This happens when I run out of buffer space.  Deal with this later.
-        
-        char[] srcAlloc = allocate( cchSave );
+
+        char[] srcAlloc = allocate(cchSave);
         int offAlloc = _offSrc;
         int cchAlloc = _cchSrc;
 
         assert cchAlloc <= cchSave;
 
-        getChars( srcAlloc, offAlloc, srcSave, offSave, cchAlloc );
+        getChars(srcAlloc, offAlloc, srcSave, offSave, cchAlloc);
 
         Object srcNew;
         int offNew;
 
         int cchNew = cchAlloc + cchPrev;
-        
+
         // The prev arguments specify a chunk of text which the caller wants prepended to the
         // text to be saved.  The optimization here is to detect the case where the prev text
         // and the newly allcoated and saved text are adjacent, so that I can avoid copying
@@ -460,33 +424,26 @@ public final class CharUtil
 
         CharJoin j;
 
-        if (cchPrev == 0)
-        {
+        if (cchPrev == 0) {
             srcNew = srcAlloc;
             offNew = offAlloc;
-        }
-        else if (srcPrev == srcAlloc && offPrev + cchPrev == offAlloc)
-        {
+        } else if (srcPrev == srcAlloc && offPrev + cchPrev == offAlloc) {
+            //noinspection ConstantConditions
             assert srcPrev instanceof char[];
-            
+
             srcNew = srcPrev;
             offNew = offPrev;
-        }
-        else if (srcPrev instanceof CharJoin && (j = (CharJoin) srcPrev)._srcRight == srcAlloc &&
-                    offPrev + cchPrev - j._cchLeft + j._offRight == offAlloc)
-        {
+        } else if (srcPrev instanceof CharJoin && (j = (CharJoin) srcPrev)._srcRight == srcAlloc &&
+                   offPrev + cchPrev - j._cchLeft + j._offRight == offAlloc) {
             assert j._srcRight instanceof char[];
 
             srcNew = srcPrev;
             offNew = offPrev;
-        }
-        else
-        {
-            j = new CharJoin( srcPrev, offPrev, cchPrev, srcAlloc, offAlloc );
+        } else {
+            j = new CharJoin(srcPrev, offPrev, cchPrev, srcAlloc, offAlloc);
 
-            srcNew = j;
             offNew = 0;
-            srcNew = j._depth > CharJoin.MAX_DEPTH ? saveChars( j, 0, cchNew ) : j;
+            srcNew = j._depth > CharJoin.MAX_DEPTH ? saveChars(j, 0, cchNew) : j;
         }
 
         // Now, srcNew and offNew specify the two parts of the triple which has the prev text and
@@ -494,147 +451,143 @@ public final class CharUtil
         // remaining text which was not allocated for earlier.  Effectively, this code deals with
         // the case where the text to save was greater than the remaining space in the buffer and
         // I need to allocate another buffer to save away the second part and then join the two.
-        
+
         int cchMore = cchSave - cchAlloc;
-        
-        if (cchMore > 0)
-        {
+
+        if (cchMore > 0) {
             // If we're here the the buffer got consumed.  So, this time it must allocate a new
             // buffer capable of containing all of the remaining text (no matter how large) and
             // return the beginning part of it.
-            
-            srcAlloc = allocate( cchMore );
+
+            srcAlloc = allocate(cchMore);
             offAlloc = _offSrc;
             cchAlloc = _cchSrc;
 
             assert cchAlloc == cchMore;
             assert offAlloc == 0;
 
-            getChars( srcAlloc, offAlloc, srcSave, offSave + (cchSave - cchMore), cchMore );
+            getChars(srcAlloc, offAlloc, srcSave, offSave + (cchSave - cchMore), cchMore);
+
+            j = new CharJoin(srcNew, offNew, cchNew, srcAlloc, offAlloc);
 
-            j = new CharJoin( srcNew, offNew, cchNew, srcAlloc, offAlloc );
-            
             offNew = 0;
             cchNew += cchMore;
-            srcNew = j._depth > CharJoin.MAX_DEPTH ? saveChars( j, 0, cchNew ) : j;
+            srcNew = j._depth > CharJoin.MAX_DEPTH ? saveChars(j, 0, cchNew) : j;
         }
 
         _offSrc = offNew;
         _cchSrc = cchNew;
-        
-        assert isValid( srcNew, _offSrc, _cchSrc );
-        
+
+        assert isValid(srcNew, _offSrc, _cchSrc);
+
         return srcNew;
     }
 
-    private static void dumpText ( PrintStream o, String s )
-    {
-        o.print( "\"" );
-
-        for ( int i = 0 ; i < s.length() ; i++ )
-        {
-            char ch = s.charAt( i );
-
-            if (i == 36)
-            {
-                o.print( "..." );
+    private static void dumpText(PrintStream o, String s) {
+        o.print("\"");
+
+        for (int i = 0; i < s.length(); i++) {
+            char ch = s.charAt(i);
+
+            if (i == 36) {
+                o.print("...");
                 break;
             }
 
-            if      (ch == '\n') o.print( "\\n" );
-            else if (ch == '\r') o.print( "\\r" );
-            else if (ch == '\t') o.print( "\\t" );
-            else if (ch == '\f') o.print( "\\f" );
-            else if (ch == '\f') o.print( "\\f" );
-            else if (ch == '"' ) o.print( "\\\"" );
-            else                 o.print( ch );
+            switch (ch) {
+                case '\n':
+                    o.print("\\n");
+                    break;
+                case '\r':
+                    o.print("\\r");
+                    break;
+                case '\t':
+                    o.print("\\t");
+                    break;
+                case '\f':
+                    o.print("\\f");
+                    break;
+                case '"':
+                    o.print("\\\"");
+                    break;
+                default:
+                    o.print(ch);
+                    break;
+            }
         }
 
-        o.print( "\"" );
+        o.print("\"");
     }
 
-    public static void dump ( Object src, int off, int cch )
-    {
-        dumpChars( System.out, src, off, cch );
+    public static void dump(Object src, int off, int cch) {
+        dumpChars(System.out, src, off, cch);
         System.out.println();
     }
-    
-    public static void dumpChars ( PrintStream p, Object src, int off, int cch )
-    {
-        p.print( "off=" + off + ", cch=" + cch + ", " );
-        
-        if (src == null)
-            p.print( "<null-src>" );
-        else if (src instanceof String)
-        {
+
+    public static void dumpChars(PrintStream p, Object src, int off, int cch) {
+        p.print("off=" + off + ", cch=" + cch + ", ");
+
+        if (src == null) {
+            p.print("<null-src>");
+        } else if (src instanceof String) {
             String s = (String) src;
 
-            p.print( "String" );
+            p.print("String");
 
-            if (off != 0 || cch != s.length())
-            {
-                if (off < 0 || off > s.length() || off + cch < 0 || off + cch > s.length())
-                {
-                    p.print( " (Error)" );
+            if (off != 0 || cch != s.length()) {
+                if (off < 0 || off > s.length() || off + cch < 0 || off + cch > s.length()) {
+                    p.print(" (Error)");
                     return;
                 }
             }
 
             //p.print( ": " );
-            dumpText( p, s.substring( off, off + cch ) );
-        }
-        else if (src instanceof char[])
-        {
+            dumpText(p, s.substring(off, off + cch));
+        } else if (src instanceof char[]) {
             char[] chars = (char[]) src;
 
-            p.print( "char[]" );
+            p.print("char[]");
 
-            if (off != 0 || cch != chars.length)
-            {
-                if (off < 0 || off > chars.length || off + cch < 0 || off + cch > chars.length)
-                {
-                    p.print( " (Error)" );
+            if (off != 0 || cch != chars.length) {
+                if (off < 0 || off > chars.length || off + cch < 0 || off + cch > chars.length) {
+                    p.print(" (Error)");
                     return;
                 }
             }
 
             //p.print( ": " );
-            dumpText( p, new String( chars, off, cch ) );
-        }
-        else if (src instanceof CharJoin)
-        {
-            p.print( "CharJoin" );
+            dumpText(p, new String(chars, off, cch));
+        } else if (src instanceof CharJoin) {
+            p.print("CharJoin");
 
-            ((CharJoin) src).dumpChars( p, off, cch );
-        }
-        else
-        {
-            p.print( "Unknown text source" );
+            ((CharJoin) src).dumpChars(p, off, cch);
+        } else {
+            p.print("Unknown text source");
         }
     }
 
-    public static boolean isValid ( Object src, int off, int cch )
-    {
-        if (cch < 0 || off < 0)
+    public static boolean isValid(Object src, int off, int cch) {
+        if (cch < 0 || off < 0) {
             return false;
+        }
 
-        if (src == null)
+        if (src == null) {
             return off == 0 && cch == 0;
+        }
 
-        if (src instanceof char[])
-        {
+        if (src instanceof char[]) {
             char[] c = (char[]) src;
             return off <= c.length && off + cch <= c.length;
         }
 
-        if (src instanceof String)
-        {
+        if (src instanceof String) {
             String s = (String) src;
             return off <= s.length() && off + cch <= s.length();
         }
 
-        if (src instanceof CharJoin)
-            return ((CharJoin) src).isValid( off, cch );
+        if (src instanceof CharJoin) {
+            return ((CharJoin) src).isValid(off, cch);
+        }
 
         return false;
     }
@@ -642,130 +595,123 @@ public final class CharUtil
     //
     // Private stuff
     //
-    
-    public static final class CharJoin
-    {
-        public CharJoin (
-            Object srcLeft, int offLeft, int cchLeft, Object srcRight, int offRight )
-        {
-            _srcLeft  = srcLeft;  _offLeft  = offLeft;  _cchLeft = cchLeft;
-            _srcRight = srcRight; _offRight = offRight;
+
+    public static final class CharJoin {
+        public CharJoin(
+            Object srcLeft, int offLeft, int cchLeft, Object srcRight, int offRight) {
+            _srcLeft = srcLeft;
+            _offLeft = offLeft;
+            _cchLeft = cchLeft;
+            _srcRight = srcRight;
+            _offRight = offRight;
 
             int depth = 0;
-            
-            if (srcLeft instanceof CharJoin)
+
+            if (srcLeft instanceof CharJoin) {
                 depth = ((CharJoin) srcLeft)._depth;
-            
-            if (srcRight instanceof CharJoin)
-            {
+            }
+
+            if (srcRight instanceof CharJoin) {
                 int rightDepth = ((CharJoin) srcRight)._depth;
-                
-                if (rightDepth > depth)
+
+                if (rightDepth > depth) {
                     depth = rightDepth;
+                }
             }
-            
+
             _depth = depth + 1;
 
             assert _depth <= MAX_DEPTH + 2;
         }
-        
-        private int cchRight ( int off, int cch )
-        {
-            return Math.max( 0, cch - _cchLeft - off );
+
+        private int cchRight(int off, int cch) {
+            return Math.max(0, cch - _cchLeft - off);
         }
 
-        public int depth ( )
-        {
+        public int depth() {
             int depth = 0;
-            
-            if (_srcLeft instanceof CharJoin)
+
+            if (_srcLeft instanceof CharJoin) {
                 depth = ((CharJoin) _srcLeft).depth();
-            
-            if (_srcRight instanceof CharJoin)
-                depth = Math.max( ((CharJoin)_srcRight).depth(), depth );
+            }
+
+            if (_srcRight instanceof CharJoin) {
+                depth = Math.max(((CharJoin) _srcRight).depth(), depth);
+            }
 
             return depth + 1;
         }
-        
-        public boolean isValid ( int off, int cch )
-        {
+
+        public boolean isValid(int off, int cch) {
             // Deep trees cause this to take forever
-            
-            if (_depth > 2)
+
+            if (_depth > 2) {
                 return true;
+            }
 
             assert _depth == depth();
-            
-            if (off < 0 || cch < 0)
-                return false;
 
-            if (!CharUtil.isValid( _srcLeft, _offLeft, _cchLeft ))
+            if (off < 0 || cch < 0) {
                 return false;
+            }
 
-            if (!CharUtil.isValid( _srcRight, _offRight, cchRight( off, cch ) ))
+            if (!CharUtil.isValid(_srcLeft, _offLeft, _cchLeft)) {
                 return false;
+            }
 
-            return true;
+            return CharUtil.isValid(_srcRight, _offRight, cchRight(off, cch));
         }
 
-        private void getString ( StringBuffer sb, int off, int cch )
-        {
+        private void getString(StringBuffer sb, int off, int cch) {
             assert cch > 0;
-            
-            if (off < _cchLeft)
-            {
-                int cchL = Math.min( _cchLeft - off, cch );
 
-                CharUtil.getString( sb, _srcLeft, _offLeft + off, cchL );
+            if (off < _cchLeft) {
+                int cchL = Math.min(_cchLeft - off, cch);
 
-                if (cch > cchL)
-                    CharUtil.getString( sb, _srcRight, _offRight, cch - cchL );
+                CharUtil.getString(sb, _srcLeft, _offLeft + off, cchL);
+
+                if (cch > cchL) {
+                    CharUtil.getString(sb, _srcRight, _offRight, cch - cchL);
+                }
+            } else {
+                CharUtil.getString(sb, _srcRight, _offRight + off - _cchLeft, cch);
             }
-            else
-                CharUtil.getString( sb, _srcRight, _offRight + off - _cchLeft, cch );
         }
 
-        private void getChars ( char[] chars, int start, int off, int cch )
-        {
+        private void getChars(char[] chars, int start, int off, int cch) {
             assert cch > 0;
 
-            if (off < _cchLeft)
-            {
-                int cchL = Math.min( _cchLeft - off, cch );
-                           
-                CharUtil.getChars( chars, start, _srcLeft, _offLeft + off, cchL );
-
-                if (cch > cchL)
-                    CharUtil.getChars( chars, start + cchL, _srcRight, _offRight, cch - cchL );
-            }
-            else
-                CharUtil.getChars( chars, start, _srcRight, _offRight + off - _cchLeft, cch );
-        }
-
-        private void dumpChars( int off, int cch )
-        {
-            dumpChars( System.out, off, cch );
-        }
-        
-        private void dumpChars( PrintStream p, int off, int cch )
-        {
-            p.print( "( " );
-            CharUtil.dumpChars( p, _srcLeft, _offLeft, _cchLeft );
-            p.print( ", " );
-            CharUtil.dumpChars( p, _srcRight, _offRight, cchRight( off, cch ) );
-            p.print( " )" );
+            if (off < _cchLeft) {
+                int cchL = Math.min(_cchLeft - off, cch);
+
+                CharUtil.getChars(chars, start, _srcLeft, _offLeft + off, cchL);
+
+                if (cch > cchL) {
+                    CharUtil.getChars(chars, start + cchL, _srcRight, _offRight, cch - cchL);
+                }
+            } else {
+                CharUtil.getChars(chars, start, _srcRight, _offRight + off - _cchLeft, cch);
+            }
         }
-        
+
+        private void dumpChars(PrintStream p, int off, int cch) {
+            p.print("( ");
+            CharUtil.dumpChars(p, _srcLeft, _offLeft, _cchLeft);
+            p.print(", ");
+            CharUtil.dumpChars(p, _srcRight, _offRight, cchRight(off, cch));
+            p.print(" )");
+        }
+
         //
         //
         //
-        
+
         public final Object _srcLeft;
-        public final int    _offLeft;
-        public final int    _cchLeft;
+        public final int _offLeft;
+        public final int _cchLeft;
 
         public final Object _srcRight;
-        public final int    _offRight;
+        public final int _offRight;
 
         public final int _depth;
 
@@ -775,83 +721,76 @@ public final class CharUtil
     //
     //
     //
-    
-    public final static class CharIterator
-    {
-        public void init ( Object src, int off, int cch )
-        {
-            init( src, off, cch, 0 );
-        }
-        
-        public void init ( Object src, int off, int cch, int startPos )
-        {
-            assert isValid( src, off, cch );
+
+    public final static class CharIterator {
+        public void init(Object src, int off, int cch) {
+            init(src, off, cch, 0);
+        }
+
+        public void init(Object src, int off, int cch, int startPos) {
+            assert isValid(src, off, cch);
 
             release();
-            
+
             _srcRoot = src;
             _offRoot = off;
             _cchRoot = cch;
 
             _minPos = _maxPos = -1;
-            
-            movePos( startPos );
+
+            movePos(startPos);
         }
 
-        public void release ( )
-        {
+        public void release() {
             _srcRoot = null;
             _srcLeafString = null;
             _srcLeafChars = null;
         }
 
-        public boolean hasNext ( ) { return _pos < _cchRoot; }
-        public boolean hasPrev ( ) { return _pos > 0;       }
-        
-        public char next ( )
-        {
-            assert hasNext() ;
+        public boolean hasNext() {
+            return _pos < _cchRoot;
+        }
+
+        public boolean hasPrev() {
+            return _pos > 0;
+        }
+
+        public char next() {
+            assert hasNext();
 
             char ch = currentChar();
 
-            movePos( _pos + 1 );
+            movePos(_pos + 1);
 
             return ch;
         }
-            
-        public char prev ( )
-        {
-            assert hasPrev() ;
-            
-            movePos( _pos - 1 );
-            
+
+        public char prev() {
+            assert hasPrev();
+
+            movePos(_pos - 1);
+
             return currentChar();
         }
 
-        public void movePos ( int newPos )
-        {
+        public void movePos(int newPos) {
             assert newPos >= 0 && newPos <= _cchRoot;
 
-            if (newPos < _minPos || newPos > _maxPos)
-            {
+            if (newPos < _minPos || newPos > _maxPos) {
                 // if newPos out of cached leaf, recache new leaf
-                Object  src    = _srcRoot;
-                int     off    = _offRoot + newPos;
-                int     cch    = _cchRoot;
+                Object src = _srcRoot;
+                int off = _offRoot + newPos;
+                int cch = _cchRoot;
 
-                for ( _offLeaf = _offRoot ; src instanceof CharJoin ; )
-                {
+                for (_offLeaf = _offRoot; src instanceof CharJoin; ) {
                     CharJoin j = (CharJoin) src;
 
-                    if (off < j._cchLeft)
-                    {
+                    if (off < j._cchLeft) {
                         src = j._srcLeft;
                         _offLeaf = j._offLeft;
                         off = off + j._offLeft;
                         cch = j._cchLeft;
-                    }
-                    else
-                    {
+                    } else {
                         src = j._srcRight;
                         _offLeaf = j._offRight;
                         off = off - (j._cchLeft - j._offRight);
@@ -864,71 +803,72 @@ public final class CharUtil
 //                _maxPos = newPos + Math.min( _cchRoot - newPos, sizeof( src ) - off );
                 _maxPos = _minPos + cch;
 
-                if (newPos < _cchRoot)
+                if (newPos < _cchRoot) {
                     _maxPos--;
+                }
 
                 // Cache the leaf src to avoid instanceof for every char
-                
+
                 _srcLeafChars = null;
                 _srcLeafString = null;
 
-                if (src instanceof char[])
+                if (src instanceof char[]) {
                     _srcLeafChars = (char[]) src;
-                else
+                } else {
                     _srcLeafString = (String) src;
-                
+                }
+
                 assert newPos >= _minPos && newPos <= _maxPos;
             }
 
             _pos = newPos;
         }
 
-        private char currentChar ( )
-        {
+        private char currentChar() {
             int i = _offLeaf + _pos - _minPos;
-            
-            return _srcLeafChars == null ? _srcLeafString.charAt( i ) : _srcLeafChars[ i ];
+
+            return _srcLeafChars == null ? _srcLeafString.charAt(i) : _srcLeafChars[i];
         }
 
         private Object _srcRoot; // Original triple
-        private int    _offRoot;
-        private int    _cchRoot;
+        private int _offRoot;
+        private int _cchRoot;
+
+        private int _pos;     // Current position
 
-        private int    _pos;     // Current position
+        private int _minPos;  // Min/max poses for current cached leaf
+        private int _maxPos;
 
-        private int    _minPos;  // Min/max poses for current cached leaf
-        private int    _maxPos;
+        private int _offLeaf;
 
-        private int    _offLeaf;
-        
         private String _srcLeafString;  // Cached leaf - either a char[] or a string
         private char[] _srcLeafChars;
     }
 
-    private static int CHARUTIL_INITIAL_BUFSIZE = 1024 * 32;
-    private static ThreadLocal tl_charUtil =
-        new ThreadLocal() { protected Object initialValue() { return new SoftReference(new CharUtil( CHARUTIL_INITIAL_BUFSIZE )); } };
+    private static final int CHARUTIL_INITIAL_BUFSIZE = 1024 * 32;
+    private static final ThreadLocal<SoftReference<CharUtil>> tl_charUtil =
+        ThreadLocal.withInitial(() -> new SoftReference<>(new CharUtil(CHARUTIL_INITIAL_BUFSIZE)));
 
     public static void clearThreadLocals() {
         tl_charUtil.remove();
     }
 
-    private CharIterator _charIter = new CharIterator();
+    private final CharIterator _charIter = new CharIterator();
 
     // TODO - 64 is kinda arbitrary.  Perhaps it should be configurable.
     private static final int MAX_COPY = 64;
 
     // Current char buffer we're allcoating new chars to
 
-    private int    _charBufSize;
-    private int    _currentOffset;
+    private final int _charBufSize;
+    private int _currentOffset;
     private char[] _currentBuffer;
-    
+
     // These members are used to communicate offset and character count
     // information back to a caller of various methods on CharUtil.
     // Usually, the methods returns the src Object, and these two hold
     // the offset and the char count.
-    
+
     public int _offSrc;
     public int _cchSrc;
-} 
\ No newline at end of file
+}
\ No newline at end of file



---------------------------------------------------------------------
To unsubscribe, e-mail: commits-unsubscribe@poi.apache.org
For additional commands, e-mail: commits-help@poi.apache.org