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/24 23:11:07 UTC

svn commit: r1881992 [2/2] - in /xmlbeans/trunk/src/main/java/org/apache/xmlbeans/impl: inst2xsd/ inst2xsd/util/ schema/ store/ tool/ values/

Modified: xmlbeans/trunk/src/main/java/org/apache/xmlbeans/impl/schema/SchemaTypeLoaderImpl.java
URL: http://svn.apache.org/viewvc/xmlbeans/trunk/src/main/java/org/apache/xmlbeans/impl/schema/SchemaTypeLoaderImpl.java?rev=1881992&r1=1881991&r2=1881992&view=diff
==============================================================================
--- xmlbeans/trunk/src/main/java/org/apache/xmlbeans/impl/schema/SchemaTypeLoaderImpl.java (original)
+++ xmlbeans/trunk/src/main/java/org/apache/xmlbeans/impl/schema/SchemaTypeLoaderImpl.java Thu Sep 24 23:11:07 2020
@@ -16,60 +16,49 @@
 package org.apache.xmlbeans.impl.schema;
 
 import org.apache.xmlbeans.*;
-import org.apache.xmlbeans.impl.common.SystemCache;
 import org.apache.xmlbeans.impl.common.QNameHelper;
+import org.apache.xmlbeans.impl.common.SystemCache;
 import org.apache.xmlbeans.impl.common.XBeanDebug;
 import org.apache.xmlbeans.impl.xb.xsdschema.SchemaDocument;
 
 import javax.xml.namespace.QName;
-
 import java.io.InputStream;
-import java.util.Map;
-import java.util.HashMap;
-import java.util.Collections;
-import java.util.ArrayList;
-import java.util.List;
-import java.util.IdentityHashMap;
-
 import java.lang.ref.SoftReference;
+import java.util.*;
 
 import static org.apache.xmlbeans.impl.schema.SchemaTypeSystemImpl.METADATA_PACKAGE_GEN;
 
 public class SchemaTypeLoaderImpl extends SchemaTypeLoaderBase {
-    private ResourceLoader _resourceLoader;
-    private ClassLoader _classLoader;
+    private final ResourceLoader _resourceLoader;
+    private final ClassLoader _classLoader;
     private final SchemaTypeLoader[] _searchPath;
 
-    private Map _classpathTypeSystems;
-    private Map _classLoaderTypeSystems;
-    private Map _elementCache;
-    private Map _attributeCache;
-    private Map _modelGroupCache;
-    private Map _attributeGroupCache;
-    private Map _idConstraintCache;
-    private Map _typeCache;
-    private Map _documentCache;
-    private Map _attributeTypeCache;
-    private Map _classnameCache;
+    private Map<String, SchemaTypeSystemImpl> _classpathTypeSystems;
+    private Map<String, SchemaTypeSystemImpl> _classLoaderTypeSystems;
+    private Map<QName, Object> _elementCache;
+    private Map<QName, Object> _attributeCache;
+    private Map<QName, Object> _modelGroupCache;
+    private Map<QName, Object> _attributeGroupCache;
+    private Map<QName, Object> _idConstraintCache;
+    private Map<QName, Object> _typeCache;
+    private Map<QName, Object> _documentCache;
+    private Map<QName, Object> _attributeTypeCache;
+    private Map<String, Object> _classnameCache;
     private final String _metadataPath;
 
     public static String METADATA_PACKAGE_LOAD = METADATA_PACKAGE_GEN;
     private static final Object CACHED_NOT_FOUND = new Object();
 
-    private static final String[] basePackage = { "org.apache.xmlbeans.metadata", "schemaorg_apache_xmlbeans" };
-    private static final String[] baseSchemas = { "sXMLCONFIG", "sXMLLANG", "sXMLSCHEMA", "sXMLTOOLS" };
+    private static final String[] basePackage = {"org.apache.xmlbeans.metadata", "schemaorg_apache_xmlbeans"};
+    private static final String[] baseSchemas = {"sXMLCONFIG", "sXMLLANG", "sXMLSCHEMA", "sXMLTOOLS"};
 
 
-
-
-    private static class SchemaTypeLoaderCache extends SystemCache
-    {
+    private static class SchemaTypeLoaderCache extends SystemCache {
         // The following maintains a cache of SchemaTypeLoaders per ClassLoader per Thread.
         // I use soft references to allow the garbage collector to reclain the type loaders
         // and/pr class loaders at will.
 
-        private ThreadLocal _cachedTypeSystems =
-            new ThreadLocal() { protected Object initialValue() { return new ArrayList(); } };
+        private final ThreadLocal<List<SoftReference<SchemaTypeLoaderImpl>>> _cachedTypeSystems = ThreadLocal.withInitial(ArrayList::new);
 
         @Override
         public void clearThreadLocals() {
@@ -78,38 +67,28 @@ public class SchemaTypeLoaderImpl extend
             super.clearThreadLocals();
         }
 
-        public SchemaTypeLoader getFromTypeLoaderCache(ClassLoader cl)
-        {
-            ArrayList a = (ArrayList) _cachedTypeSystems.get();
+        public SchemaTypeLoader getFromTypeLoaderCache(ClassLoader cl) {
+            List<SoftReference<SchemaTypeLoaderImpl>> a = _cachedTypeSystems.get();
 
             int candidate = -1;
             SchemaTypeLoaderImpl result = null;
 
-            for ( int i = 0 ; i < a.size() ; i++ )
-            {
-                SchemaTypeLoaderImpl tl = (SchemaTypeLoaderImpl) ((SoftReference) a.get(i)).get();
-
-                if (tl == null)
-                {
-                    assert i > candidate;
-                    a.remove(i--);
-                }
-                else if (tl._classLoader == cl)
-                {
-                    assert candidate == -1 && result == null;
+            for (int i = 0; i < a.size(); i++) {
+                SchemaTypeLoaderImpl tl = a.get(i).get();
 
+                if (tl == null) {
+                    a.remove(i--);
+                } else if (tl._classLoader == cl) {
                     candidate = i;
                     result = tl;
-
                     break;
                 }
             }
 
             // Make sure the most recently accessed entry is at the beginning of the array
 
-            if (candidate > 0)
-            {
-                Object t = a.get(0);
+            if (candidate > 0) {
+                SoftReference<SchemaTypeLoaderImpl> t = a.get(0);
                 a.set(0, a.get(candidate));
                 a.set(candidate, t);
             }
@@ -117,32 +96,28 @@ public class SchemaTypeLoaderImpl extend
             return result;
         }
 
-        public void addToTypeLoaderCache(SchemaTypeLoader stl, ClassLoader cl)
-        {
+        public void addToTypeLoaderCache(SchemaTypeLoader stl, ClassLoader cl) {
             assert (stl instanceof SchemaTypeLoaderImpl) &&
                    ((SchemaTypeLoaderImpl) stl)._classLoader == cl;
 
-            ArrayList a = (ArrayList) _cachedTypeSystems.get();
+            List<SoftReference<SchemaTypeLoaderImpl>> a = _cachedTypeSystems.get();
             // Make sure this entry is at the top of the stack
-            if (a.size() > 0)
-            {
-                Object t = a.get(0);
-                a.set(0, new SoftReference(stl));
+            if (a.size() > 0) {
+                SoftReference<SchemaTypeLoaderImpl> t = a.get(0);
+                a.set(0, new SoftReference<>((SchemaTypeLoaderImpl) stl));
                 a.add(t);
+            } else {
+                a.add(new SoftReference<>((SchemaTypeLoaderImpl) stl));
             }
-            else
-                a.add(new SoftReference(stl));
         }
     }
 
-    public static SchemaTypeLoaderImpl getContextTypeLoader ( )
-    {
+    public static SchemaTypeLoaderImpl getContextTypeLoader() {
         ClassLoader cl = Thread.currentThread().getContextClassLoader();
         SchemaTypeLoaderImpl result = (SchemaTypeLoaderImpl)
             SystemCache.get().getFromTypeLoaderCache(cl);
 
-        if (result == null)
-        {
+        if (result == null) {
             result =
                 new SchemaTypeLoaderImpl(
                     new SchemaTypeLoader[]{BuiltinSchemaTypeSystem.get()}, null, cl, null);
@@ -159,12 +134,11 @@ public class SchemaTypeLoaderImpl extend
     /**
      * Initialize a SchemaTypeLoader via the given loaders and paths
      *
-     * @param searchPath the searchPath to use
+     * @param searchPath     the searchPath to use
      * @param resourceLoader the resourceLoader to use
-     * @param classLoader the classLoader to use
-     * @param metadataPath the custom metadata path
+     * @param classLoader    the classLoader to use
+     * @param metadataPath   the custom metadata path
      * @return the schemaTypeLoader
-     *
      * @since XmlBeans 3.1.0
      */
     public static SchemaTypeLoader build(final SchemaTypeLoader[] searchPath, ResourceLoader resourceLoader, ClassLoader classLoader, String metadataPath) {
@@ -173,18 +147,19 @@ public class SchemaTypeLoaderImpl extend
 
         list.add(searchPath);
 
-        ClassLoader cl = (classLoader == null) ? SchemaDocument.class.getClassLoader() :  classLoader;
+        ClassLoader cl = (classLoader == null) ? SchemaDocument.class.getClassLoader() : classLoader;
 
         for (String prefix : basePackage) {
             for (String holder : baseSchemas) {
                 String clName = prefix + ".system." + holder + ".TypeSystemHolder";
-                if (cl.getResource(clName.replace(".","/")+".class") == null) {
+                if (cl.getResource(clName.replace(".", "/") + ".class") == null) {
                     // if the first class isn't found in the package, continue with the next package
                     break;
                 }
                 try {
-                    Class cls = Class.forName(clName, true, cl);
-                    list.add((SchemaTypeLoader)cls.getDeclaredField("typeSystem").get(null));
+                    @SuppressWarnings("unchecked")
+                    Class<? extends SchemaTypeLoader> cls = (Class<? extends SchemaTypeLoader>) Class.forName(clName, true, cl);
+                    list.add((SchemaTypeLoader) cls.getDeclaredField("typeSystem").get(null));
                 } catch (Exception e) {
                     throw new XmlRuntimeException(e);
                 }
@@ -197,10 +172,9 @@ public class SchemaTypeLoaderImpl extend
     /**
      * Just used to avoid duplicate path entries
      */
-    private static class SubLoaderList
-    {
-        private final List<SchemaTypeLoader> theList = new ArrayList<SchemaTypeLoader>();
-        private final Map<SchemaTypeLoader,Object> seen = new IdentityHashMap<SchemaTypeLoader,Object>();
+    private static class SubLoaderList {
+        private final List<SchemaTypeLoader> theList = new ArrayList<>();
+        private final Map<SchemaTypeLoader, Object> seen = new IdentityHashMap<>();
 
         void add(SchemaTypeLoader[] searchPath) {
             if (searchPath == null) {
@@ -208,7 +182,7 @@ public class SchemaTypeLoaderImpl extend
             }
             for (SchemaTypeLoader stl : searchPath) {
                 if (stl instanceof SchemaTypeLoaderImpl) {
-                    SchemaTypeLoaderImpl sub = (SchemaTypeLoaderImpl)stl;
+                    SchemaTypeLoaderImpl sub = (SchemaTypeLoaderImpl) stl;
                     if (sub._classLoader != null || sub._resourceLoader != null) {
                         add(sub);
                     } else {
@@ -235,19 +209,18 @@ public class SchemaTypeLoaderImpl extend
     /**
      * Constructs a SchemaTypeLoaderImpl that searches for objects
      * in the following order:
-     *
+     * <p>
      * (1) First on the searchPath of other SchemaTypeSystems supplied,
-     *     in order that they are listed.
+     * in order that they are listed.
      * (2) Next on the classpath of .jar files or directories supplied,
-     *     in the order that they are listed. When types are returned in
-     *     this way, they are instantiated from a private typesystem.
-     *     In other words, if a type is loaded from another SchemaTypeLoaderImpl
-     *     that was initialized on the same file, the instance of the type will
-     *     be different.
+     * in the order that they are listed. When types are returned in
+     * this way, they are instantiated from a private typesystem.
+     * In other words, if a type is loaded from another SchemaTypeLoaderImpl
+     * that was initialized on the same file, the instance of the type will
+     * be different.
      * (3) Finally on the classloader supplied.
      */
-    private SchemaTypeLoaderImpl(SchemaTypeLoader[] searchPath, ResourceLoader resourceLoader, ClassLoader classLoader, String metadataPath)
-    {
+    private SchemaTypeLoaderImpl(SchemaTypeLoader[] searchPath, ResourceLoader resourceLoader, ClassLoader classLoader, String metadataPath) {
         _searchPath = (searchPath == null) ? EMPTY_SCHEMATYPELOADER_ARRAY : searchPath;
         _resourceLoader = resourceLoader;
         _classLoader = classLoader;
@@ -255,7 +228,7 @@ public class SchemaTypeLoaderImpl extend
         if (metadataPath != null) {
             this._metadataPath = metadataPath;
         } else {
-            final String path26 = "schema" + METADATA_PACKAGE_LOAD.replace("/","_");
+            final String path26 = "schema" + METADATA_PACKAGE_LOAD.replace("/", "_");
             this._metadataPath = (isPath30(_classLoader)) ? METADATA_PACKAGE_LOAD : path26;
         }
 
@@ -271,94 +244,84 @@ public class SchemaTypeLoaderImpl extend
     /**
      * Initializes the caches.
      */
-    private final void initCaches()
-    {
-        _classpathTypeSystems = Collections.synchronizedMap(new HashMap());
-        _classLoaderTypeSystems = Collections.synchronizedMap(new HashMap());
-        _elementCache = Collections.synchronizedMap(new HashMap());
-        _attributeCache = Collections.synchronizedMap(new HashMap());
-        _modelGroupCache = Collections.synchronizedMap(new HashMap());
-        _attributeGroupCache = Collections.synchronizedMap(new HashMap());
-        _idConstraintCache = Collections.synchronizedMap(new HashMap());
-        _typeCache = Collections.synchronizedMap(new HashMap());
-        _documentCache = Collections.synchronizedMap(new HashMap());
-        _attributeTypeCache = Collections.synchronizedMap(new HashMap());
-        _classnameCache = Collections.synchronizedMap(new HashMap());
+    private void initCaches() {
+        _classpathTypeSystems = Collections.synchronizedMap(new HashMap<>());
+        _classLoaderTypeSystems = Collections.synchronizedMap(new HashMap<>());
+        _elementCache = Collections.synchronizedMap(new HashMap<>());
+        _attributeCache = Collections.synchronizedMap(new HashMap<>());
+        _modelGroupCache = Collections.synchronizedMap(new HashMap<>());
+        _attributeGroupCache = Collections.synchronizedMap(new HashMap<>());
+        _idConstraintCache = Collections.synchronizedMap(new HashMap<>());
+        _typeCache = Collections.synchronizedMap(new HashMap<>());
+        _documentCache = Collections.synchronizedMap(new HashMap<>());
+        _attributeTypeCache = Collections.synchronizedMap(new HashMap<>());
+        _classnameCache = Collections.synchronizedMap(new HashMap<>());
     }
 
-    SchemaTypeSystemImpl typeSystemForComponent(String searchdir, QName name)
-    {
+    SchemaTypeSystemImpl typeSystemForComponent(String searchdir, QName name) {
         String searchfor = searchdir + QNameHelper.hexsafedir(name) + ".xsb";
         String tsname = null;
 
-        if (_resourceLoader != null)
+        if (_resourceLoader != null) {
             tsname = crackEntry(_resourceLoader, searchfor);
+        }
 
-        if (_classLoader != null)
+        if (_classLoader != null) {
             tsname = crackEntry(_classLoader, searchfor);
+        }
 
-        if (tsname != null)
-            return (SchemaTypeSystemImpl)typeSystemForName(tsname);
+        if (tsname != null) {
+            return (SchemaTypeSystemImpl) typeSystemForName(tsname);
+        }
 
         return null;
     }
 
-    public SchemaTypeSystem typeSystemForName(String name)
-    {
-        if (_resourceLoader != null)
-        {
+    public SchemaTypeSystem typeSystemForName(String name) {
+        if (_resourceLoader != null) {
             SchemaTypeSystem result = getTypeSystemOnClasspath(name);
-            if (result != null)
+            if (result != null) {
                 return result;
+            }
         }
 
-        if (_classLoader != null)
-        {
+        if (_classLoader != null) {
             SchemaTypeSystem result = getTypeSystemOnClassloader(name);
-            if (result != null)
+            if (result != null) {
                 return result;
+            }
         }
         return null;
     }
 
-    SchemaTypeSystemImpl typeSystemForClassname(String searchdir, String name)
-    {
+    SchemaTypeSystemImpl typeSystemForClassname(String searchdir, String name) {
         String searchfor = searchdir + name.replace('.', '/') + ".xsb";
 
-        if (_resourceLoader != null)
-        {
+        if (_resourceLoader != null) {
             String tsname = crackEntry(_resourceLoader, searchfor);
-            if (tsname != null)
+            if (tsname != null) {
                 return getTypeSystemOnClasspath(tsname);
+            }
         }
 
-        if (_classLoader != null)
-        {
+        if (_classLoader != null) {
             String tsname = crackEntry(_classLoader, searchfor);
-            if (tsname != null)
+            if (tsname != null) {
                 return getTypeSystemOnClassloader(tsname);
+            }
         }
 
         return null;
     }
 
-    SchemaTypeSystemImpl getTypeSystemOnClasspath(String name)
-    {
-        SchemaTypeSystemImpl result = (SchemaTypeSystemImpl)_classpathTypeSystems.get(name);
-        if (result == null)
-        {
-            result = new SchemaTypeSystemImpl(_resourceLoader, name, this);
-            _classpathTypeSystems.put(name, result);
-        }
-        return result;
+    SchemaTypeSystemImpl getTypeSystemOnClasspath(String name) {
+        return _classpathTypeSystems.computeIfAbsent(name, n -> new SchemaTypeSystemImpl(_resourceLoader, n, this));
     }
 
-    SchemaTypeSystemImpl getTypeSystemOnClassloader(String name)
-    {
+    SchemaTypeSystemImpl getTypeSystemOnClassloader(String name) {
         XBeanDebug.trace(XBeanDebug.TRACE_SCHEMA_LOADING, "Finding type system " + name + " on classloader", 0);
-        SchemaTypeSystemImpl result = (SchemaTypeSystemImpl)_classLoaderTypeSystems.get(name);
-        if (result == null)
-        {
+        SchemaTypeSystemImpl result = _classLoaderTypeSystems.get(name);
+        if (result == null) {
             XBeanDebug.trace(XBeanDebug.TRACE_SCHEMA_LOADING, "Type system " + name + " not cached - consulting field", 0);
             result = SchemaTypeSystemImpl.forName(name, _classLoader);
             _classLoaderTypeSystems.put(name, result);
@@ -366,62 +329,51 @@ public class SchemaTypeLoaderImpl extend
         return result;
     }
 
-    static String crackEntry(ResourceLoader loader, String searchfor)
-    {
+    static String crackEntry(ResourceLoader loader, String searchfor) {
         InputStream is = loader.getResourceAsStream(searchfor);
-        if (is == null)
-            return null;
-        return crackPointer(is);
+        return is == null ? null : crackPointer(is);
     }
 
-    static String crackEntry(ClassLoader loader, String searchfor)
-    {
+    static String crackEntry(ClassLoader loader, String searchfor) {
         InputStream stream = loader.getResourceAsStream(searchfor);
-        if (stream == null)
-            return null;
-        return crackPointer(stream);
+        return stream == null ? null : crackPointer(stream);
     }
 
-    static String crackPointer(InputStream stream)
-    {
+    static String crackPointer(InputStream stream) {
         return SchemaTypeSystemImpl.crackPointer(stream);
     }
 
-    public boolean isNamespaceDefined(String namespace)
-    {
-        for (int i = 0; i < _searchPath.length; i++)
-            if (_searchPath[i].isNamespaceDefined(namespace))
+    public boolean isNamespaceDefined(String namespace) {
+        for (SchemaTypeLoader schemaTypeLoader : _searchPath) {
+            if (schemaTypeLoader.isNamespaceDefined(namespace)) {
                 return true;
+            }
+        }
 
         SchemaTypeSystem sts = typeSystemForComponent(_metadataPath + "/namespace/", new QName(namespace, "xmlns"));
         return (sts != null);
     }
 
-    public SchemaType.Ref findTypeRef(QName name)
-    {
-        /**
-         * The maps are synchronized, we use two accesses to the cache (one read
-         * and one write), but the code inbetween is not synchronized. The
-         * assumption is that the underlying datastructures (the search path and
-         * the classloader) do not change, so two threads running the code in
-         * parallel will come up with the same result.
-         */
+    public SchemaType.Ref findTypeRef(QName name) {
+        // The maps are synchronized, we use two accesses to the cache (one read and one write), but the code in-between
+        // is not synchronized. The assumption is that the underlying datastructures (the search path and the classloader)
+        // do not change, so two threads running the code in parallel will come up with the same result.
         Object cached = _typeCache.get(name);
-        if (cached == CACHED_NOT_FOUND)
+        if (cached == CACHED_NOT_FOUND) {
             return null;
+        }
         SchemaType.Ref result = (SchemaType.Ref) cached;
-        if (result == null)
-        {
-            for (int i = 0; i < _searchPath.length; i++)
-                if (null != (result = _searchPath[i].findTypeRef(name)))
+        if (result == null) {
+            for (SchemaTypeLoader schemaTypeLoader : _searchPath) {
+                if (null != (result = schemaTypeLoader.findTypeRef(name))) {
                     break;
-            if (result == null)
-            {
+                }
+            }
+            if (result == null) {
                 SchemaTypeSystem ts = typeSystemForComponent(_metadataPath + "/type/", name);
-                if (ts != null)
-                {
+                if (ts != null) {
                     result = ts.findTypeRef(name);
-                    assert(result != null) : "Type system registered type " + QNameHelper.pretty(name) + " but does not return it";
+                    assert (result != null) : "Type system registered type " + QNameHelper.pretty(name) + " but does not return it";
                 }
             }
             _typeCache.put(name, result == null ? CACHED_NOT_FOUND : result);
@@ -429,26 +381,25 @@ public class SchemaTypeLoaderImpl extend
         return result;
     }
 
-    public SchemaType typeForClassname(String classname)
-    {
+    public SchemaType typeForClassname(String classname) {
         classname = classname.replace('$', '.');
 
         Object cached = _classnameCache.get(classname);
-        if (cached == CACHED_NOT_FOUND)
+        if (cached == CACHED_NOT_FOUND) {
             return null;
+        }
         SchemaType result = (SchemaType) cached;
-        if (result == null)
-        {
-            for (int i = 0; i < _searchPath.length; i++)
-                if (null != (result = _searchPath[i].typeForClassname(classname)))
+        if (result == null) {
+            for (SchemaTypeLoader schemaTypeLoader : _searchPath) {
+                if (null != (result = schemaTypeLoader.typeForClassname(classname))) {
                     break;
-            if (result == null)
-            {
+                }
+            }
+            if (result == null) {
                 SchemaTypeSystem ts = typeSystemForClassname(_metadataPath + "/javaname/", classname);
-                if (ts != null)
-                {
+                if (ts != null) {
                     result = ts.typeForClassname(classname);
-                    assert(result != null) : "Type system registered type " + classname + " but does not return it";
+                    assert (result != null) : "Type system registered type " + classname + " but does not return it";
                 }
             }
             _classnameCache.put(classname, result == null ? CACHED_NOT_FOUND : result);
@@ -456,24 +407,23 @@ public class SchemaTypeLoaderImpl extend
         return result;
     }
 
-    public SchemaType.Ref findDocumentTypeRef(QName name)
-    {
+    public SchemaType.Ref findDocumentTypeRef(QName name) {
         Object cached = _documentCache.get(name);
-        if (cached == CACHED_NOT_FOUND)
+        if (cached == CACHED_NOT_FOUND) {
             return null;
+        }
         SchemaType.Ref result = (SchemaType.Ref) cached;
-        if (result == null)
-        {
-            for (int i = 0; i < _searchPath.length; i++)
-                if (null != (result = _searchPath[i].findDocumentTypeRef(name)))
+        if (result == null) {
+            for (SchemaTypeLoader schemaTypeLoader : _searchPath) {
+                if (null != (result = schemaTypeLoader.findDocumentTypeRef(name))) {
                     break;
-            if (result == null)
-            {
+                }
+            }
+            if (result == null) {
                 SchemaTypeSystem ts = typeSystemForComponent(_metadataPath + "/element/", name);
-                if (ts != null)
-                {
+                if (ts != null) {
                     result = ts.findDocumentTypeRef(name);
-                    assert(result != null) : "Type system registered element " + QNameHelper.pretty(name) + " but does not contain document type";
+                    assert (result != null) : "Type system registered element " + QNameHelper.pretty(name) + " but does not contain document type";
                 }
             }
             _documentCache.put(name, result == null ? CACHED_NOT_FOUND : result);
@@ -481,24 +431,23 @@ public class SchemaTypeLoaderImpl extend
         return result;
     }
 
-    public SchemaType.Ref findAttributeTypeRef(QName name)
-    {
+    public SchemaType.Ref findAttributeTypeRef(QName name) {
         Object cached = _attributeTypeCache.get(name);
-        if (cached == CACHED_NOT_FOUND)
+        if (cached == CACHED_NOT_FOUND) {
             return null;
+        }
         SchemaType.Ref result = (SchemaType.Ref) cached;
-        if (result == null)
-        {
-            for (int i = 0; i < _searchPath.length; i++)
-                if (null != (result = _searchPath[i].findAttributeTypeRef(name)))
+        if (result == null) {
+            for (SchemaTypeLoader schemaTypeLoader : _searchPath) {
+                if (null != (result = schemaTypeLoader.findAttributeTypeRef(name))) {
                     break;
-            if (result == null)
-            {
+                }
+            }
+            if (result == null) {
                 SchemaTypeSystem ts = typeSystemForComponent(_metadataPath + "/attribute/", name);
-                if (ts != null)
-                {
+                if (ts != null) {
                     result = ts.findAttributeTypeRef(name);
-                    assert(result != null) : "Type system registered attribute " + QNameHelper.pretty(name) + " but does not contain attribute type";
+                    assert (result != null) : "Type system registered attribute " + QNameHelper.pretty(name) + " but does not contain attribute type";
                 }
             }
             _attributeTypeCache.put(name, result == null ? CACHED_NOT_FOUND : result);
@@ -506,24 +455,23 @@ public class SchemaTypeLoaderImpl extend
         return result;
     }
 
-    public SchemaGlobalElement.Ref findElementRef(QName name)
-    {
+    public SchemaGlobalElement.Ref findElementRef(QName name) {
         Object cached = _elementCache.get(name);
-        if (cached == CACHED_NOT_FOUND)
+        if (cached == CACHED_NOT_FOUND) {
             return null;
+        }
         SchemaGlobalElement.Ref result = (SchemaGlobalElement.Ref) cached;
-        if (result == null)
-        {
-            for (int i = 0; i < _searchPath.length; i++)
-                if (null != (result = _searchPath[i].findElementRef(name)))
+        if (result == null) {
+            for (SchemaTypeLoader schemaTypeLoader : _searchPath) {
+                if (null != (result = schemaTypeLoader.findElementRef(name))) {
                     break;
-            if (result == null)
-            {
+                }
+            }
+            if (result == null) {
                 SchemaTypeSystem ts = typeSystemForComponent(_metadataPath + "/element/", name);
-                if (ts != null)
-                {
+                if (ts != null) {
                     result = ts.findElementRef(name);
-                    assert(result != null) : "Type system registered element " + QNameHelper.pretty(name) + " but does not return it";
+                    assert (result != null) : "Type system registered element " + QNameHelper.pretty(name) + " but does not return it";
                 }
             }
             _elementCache.put(name, result == null ? CACHED_NOT_FOUND : result);
@@ -531,24 +479,23 @@ public class SchemaTypeLoaderImpl extend
         return result;
     }
 
-    public SchemaGlobalAttribute.Ref findAttributeRef(QName name)
-    {
+    public SchemaGlobalAttribute.Ref findAttributeRef(QName name) {
         Object cached = _attributeCache.get(name);
-        if (cached == CACHED_NOT_FOUND)
+        if (cached == CACHED_NOT_FOUND) {
             return null;
+        }
         SchemaGlobalAttribute.Ref result = (SchemaGlobalAttribute.Ref) cached;
-        if (result == null)
-        {
-            for (int i = 0; i < _searchPath.length; i++)
-                if (null != (result = _searchPath[i].findAttributeRef(name)))
+        if (result == null) {
+            for (SchemaTypeLoader schemaTypeLoader : _searchPath) {
+                if (null != (result = schemaTypeLoader.findAttributeRef(name))) {
                     break;
-            if (result == null)
-            {
+                }
+            }
+            if (result == null) {
                 SchemaTypeSystem ts = typeSystemForComponent(_metadataPath + "/attribute/", name);
-                if (ts != null)
-                {
+                if (ts != null) {
                     result = ts.findAttributeRef(name);
-                    assert(result != null) : "Type system registered attribute " + QNameHelper.pretty(name) + " but does not return it";
+                    assert (result != null) : "Type system registered attribute " + QNameHelper.pretty(name) + " but does not return it";
                 }
             }
             _attributeCache.put(name, result == null ? CACHED_NOT_FOUND : result);
@@ -556,24 +503,23 @@ public class SchemaTypeLoaderImpl extend
         return result;
     }
 
-    public SchemaModelGroup.Ref findModelGroupRef(QName name)
-    {
+    public SchemaModelGroup.Ref findModelGroupRef(QName name) {
         Object cached = _modelGroupCache.get(name);
-        if (cached == CACHED_NOT_FOUND)
+        if (cached == CACHED_NOT_FOUND) {
             return null;
+        }
         SchemaModelGroup.Ref result = (SchemaModelGroup.Ref) cached;
-        if (result == null)
-        {
-            for (int i = 0; i < _searchPath.length; i++)
-                if (null != (result = _searchPath[i].findModelGroupRef(name)))
+        if (result == null) {
+            for (SchemaTypeLoader schemaTypeLoader : _searchPath) {
+                if (null != (result = schemaTypeLoader.findModelGroupRef(name))) {
                     break;
-            if (result == null)
-            {
+                }
+            }
+            if (result == null) {
                 SchemaTypeSystem ts = typeSystemForComponent(_metadataPath + "/modelgroup/", name);
-                if (ts != null)
-                {
+                if (ts != null) {
                     result = ts.findModelGroupRef(name);
-                    assert(result != null) : "Type system registered model group " + QNameHelper.pretty(name) + " but does not return it";
+                    assert (result != null) : "Type system registered model group " + QNameHelper.pretty(name) + " but does not return it";
                 }
             }
             _modelGroupCache.put(name, result == null ? CACHED_NOT_FOUND : result);
@@ -581,24 +527,23 @@ public class SchemaTypeLoaderImpl extend
         return result;
     }
 
-    public SchemaAttributeGroup.Ref findAttributeGroupRef(QName name)
-    {
+    public SchemaAttributeGroup.Ref findAttributeGroupRef(QName name) {
         Object cached = _attributeGroupCache.get(name);
-        if (cached == CACHED_NOT_FOUND)
+        if (cached == CACHED_NOT_FOUND) {
             return null;
+        }
         SchemaAttributeGroup.Ref result = (SchemaAttributeGroup.Ref) cached;
-        if (result == null)
-        {
-            for (int i = 0; i < _searchPath.length; i++)
-                if (null != (result = _searchPath[i].findAttributeGroupRef(name)))
+        if (result == null) {
+            for (SchemaTypeLoader schemaTypeLoader : _searchPath) {
+                if (null != (result = schemaTypeLoader.findAttributeGroupRef(name))) {
                     break;
-            if (result == null)
-            {
+                }
+            }
+            if (result == null) {
                 SchemaTypeSystem ts = typeSystemForComponent(_metadataPath + "/attributegroup/", name);
-                if (ts != null)
-                {
+                if (ts != null) {
                     result = ts.findAttributeGroupRef(name);
-                    assert(result != null) : "Type system registered attribute group " + QNameHelper.pretty(name) + " but does not return it";
+                    assert (result != null) : "Type system registered attribute group " + QNameHelper.pretty(name) + " but does not return it";
                 }
             }
             _attributeGroupCache.put(name, result == null ? CACHED_NOT_FOUND : result);
@@ -606,24 +551,23 @@ public class SchemaTypeLoaderImpl extend
         return result;
     }
 
-    public SchemaIdentityConstraint.Ref findIdentityConstraintRef(QName name)
-    {
+    public SchemaIdentityConstraint.Ref findIdentityConstraintRef(QName name) {
         Object cached = _idConstraintCache.get(name);
-        if (cached == CACHED_NOT_FOUND)
+        if (cached == CACHED_NOT_FOUND) {
             return null;
+        }
         SchemaIdentityConstraint.Ref result = (SchemaIdentityConstraint.Ref) cached;
-        if (result == null)
-        {
-            for (int i = 0; i < _searchPath.length; i++)
-                if (null != (result = _searchPath[i].findIdentityConstraintRef(name)))
+        if (result == null) {
+            for (SchemaTypeLoader schemaTypeLoader : _searchPath) {
+                if (null != (result = schemaTypeLoader.findIdentityConstraintRef(name))) {
                     break;
-            if (result == null)
-            {
+                }
+            }
+            if (result == null) {
                 SchemaTypeSystem ts = typeSystemForComponent(_metadataPath + "/identityconstraint/", name);
-                if (ts != null)
-                {
+                if (ts != null) {
                     result = ts.findIdentityConstraintRef(name);
-                    assert(result != null) : "Type system registered identity constraint " + QNameHelper.pretty(name) + " but does not return it";
+                    assert (result != null) : "Type system registered identity constraint " + QNameHelper.pretty(name) + " but does not return it";
                 }
             }
             _idConstraintCache.put(name, result == null ? CACHED_NOT_FOUND : result);
@@ -631,27 +575,29 @@ public class SchemaTypeLoaderImpl extend
         return result;
     }
 
-    public InputStream getSourceAsStream(String sourceName)
-    {
+    public InputStream getSourceAsStream(String sourceName) {
         InputStream result = null;
 
-        if (!sourceName.startsWith("/"))
+        if (!sourceName.startsWith("/")) {
             sourceName = "/" + sourceName;
+        }
 
-        if (_resourceLoader != null)
+        if (_resourceLoader != null) {
             result = _resourceLoader.getResourceAsStream(_metadataPath + "/src" + sourceName);
+        }
 
-        if (result == null && _classLoader != null)
+        if (result == null && _classLoader != null) {
             return _classLoader.getResourceAsStream(_metadataPath + "/src" + sourceName);
+        }
 
         return result;
     }
 
     private static final SchemaTypeLoader[] EMPTY_SCHEMATYPELOADER_ARRAY = new SchemaTypeLoader[0];
 
-    static
-    {
-        if (SystemCache.get() instanceof SystemCache)
+    static {
+        if (SystemCache.get() != null) {
             SystemCache.set(new SchemaTypeLoaderCache());
+        }
     }
 }

Modified: xmlbeans/trunk/src/main/java/org/apache/xmlbeans/impl/store/Cur.java
URL: http://svn.apache.org/viewvc/xmlbeans/trunk/src/main/java/org/apache/xmlbeans/impl/store/Cur.java?rev=1881992&r1=1881991&r2=1881992&view=diff
==============================================================================
--- xmlbeans/trunk/src/main/java/org/apache/xmlbeans/impl/store/Cur.java (original)
+++ xmlbeans/trunk/src/main/java/org/apache/xmlbeans/impl/store/Cur.java Thu Sep 24 23:11:07 2020
@@ -28,6 +28,8 @@ import javax.xml.namespace.QName;
 import java.io.PrintStream;
 import java.util.Map;
 
+import static org.apache.xmlbeans.impl.values.TypeStore.WS_PRESERVE;
+
 // DOM Level 3
 
 
@@ -2303,7 +2305,7 @@ public final class Cur {
     String getCharsAsString() {
         assert isNormal() && _xobj != null;
 
-        return getCharsAsString(Locale.WS_PRESERVE);
+        return getCharsAsString(WS_PRESERVE);
     }
 
     String getCharsAsString(int wsr) {
@@ -3190,8 +3192,8 @@ public final class Cur {
         private final boolean _stripWhitespace;
         private final boolean _stripComments;
         private final boolean _stripProcinsts;
-        private final Map<String,String> _substituteNamespaces;
-        private final Map<String,String> _additionalNamespaces;
+        private final Map<String, String> _substituteNamespaces;
+        private final Map<String, String> _additionalNamespaces;
 
         private String _doctypeName;
         private String _doctypePublicId;

Modified: xmlbeans/trunk/src/main/java/org/apache/xmlbeans/impl/store/Cursor.java
URL: http://svn.apache.org/viewvc/xmlbeans/trunk/src/main/java/org/apache/xmlbeans/impl/store/Cursor.java?rev=1881992&r1=1881991&r2=1881992&view=diff
==============================================================================
--- xmlbeans/trunk/src/main/java/org/apache/xmlbeans/impl/store/Cursor.java (original)
+++ xmlbeans/trunk/src/main/java/org/apache/xmlbeans/impl/store/Cursor.java Thu Sep 24 23:11:07 2020
@@ -37,6 +37,8 @@ import java.util.Collection;
 import java.util.Map;
 import java.util.function.Supplier;
 
+import static org.apache.xmlbeans.impl.values.TypeStore.WS_PRESERVE;
+
 public final class Cursor implements XmlCursor, ChangeListener {
     static final int ROOT = Cur.ROOT;
     static final int ELEM = Cur.ELEM;
@@ -1047,7 +1049,7 @@ public final class Cursor implements Xml
         // If there are no children (hopefully the common case), I can get the text faster.
 
         if (_cur.hasChildren()) {
-            return Locale.getTextValue(_cur, Locale.WS_PRESERVE, chars, offset, max);
+            return Locale.getTextValue(_cur, WS_PRESERVE, chars, offset, max);
         }
 
         // Fast way

Modified: xmlbeans/trunk/src/main/java/org/apache/xmlbeans/impl/store/Locale.java
URL: http://svn.apache.org/viewvc/xmlbeans/trunk/src/main/java/org/apache/xmlbeans/impl/store/Locale.java?rev=1881992&r1=1881991&r2=1881992&view=diff
==============================================================================
--- xmlbeans/trunk/src/main/java/org/apache/xmlbeans/impl/store/Locale.java (original)
+++ xmlbeans/trunk/src/main/java/org/apache/xmlbeans/impl/store/Locale.java Thu Sep 24 23:11:07 2020
@@ -21,8 +21,6 @@ import org.apache.xmlbeans.impl.common.*
 import org.apache.xmlbeans.impl.store.Cur.Locations;
 import org.apache.xmlbeans.impl.store.DomImpl.Dom;
 import org.apache.xmlbeans.impl.store.Saaj.SaajCallback;
-import org.apache.xmlbeans.impl.values.TypeStore;
-import org.apache.xmlbeans.xml.stream.XMLEvent;
 import org.w3c.dom.*;
 import org.xml.sax.*;
 import org.xml.sax.ext.DeclHandler;
@@ -40,6 +38,9 @@ import java.lang.ref.ReferenceQueue;
 import java.lang.ref.SoftReference;
 import java.util.HashMap;
 import java.util.Map;
+import java.util.Objects;
+
+import static org.apache.xmlbeans.impl.values.TypeStore.*;
 
 public final class Locale
     implements DOMImplementation, SaajCallback, XmlLocale {
@@ -52,11 +53,6 @@ public final class Locale
     static final int PROCINST = Cur.PROCINST;
     static final int TEXT = Cur.TEXT;
 
-    static final int WS_UNSPECIFIED = TypeStore.WS_UNSPECIFIED;
-    static final int WS_PRESERVE = TypeStore.WS_PRESERVE;
-    static final int WS_REPLACE = TypeStore.WS_REPLACE;
-    static final int WS_COLLAPSE = TypeStore.WS_COLLAPSE;
-
     static final String _xsi = "http://www.w3.org/2001/XMLSchema-instance";
     static final String _schema = "http://www.w3.org/2001/XMLSchema";
     static final String _openFragUri = "http://www.openuri.org/fragment";
@@ -286,15 +282,7 @@ public final class Locale
             return false;
         }
 
-        if (n1.getNamespaceURI() == n2.getNamespaceURI()) {
-            return true;
-        }
-
-        if (n1.getNamespaceURI() == null || n2.getNamespaceURI() == null) {
-            return false;
-        }
-
-        return n1.getNamespaceURI().equals(n2.getNamespaceURI());
+        return Objects.equals(n1.getNamespaceURI(), n2.getNamespaceURI());
     }
 
     private static void addNamespace(StringBuffer sb, QName name) {
@@ -341,12 +329,12 @@ public final class Locale
                         sb.append(" got ");
                         addNamespace(sb, name);
                     } else if (namespacesSame(docElemName, name)) {
-                        sb.append(": document element local name mismatch ");
-                        sb.append("expected " + docElemName.getLocalPart());
-                        sb.append(" got " + name.getLocalPart());
+                        sb.append(": document element local name mismatch expected ")
+                            .append(docElemName.getLocalPart())
+                            .append(" got ")
+                            .append(name.getLocalPart());
                     } else {
-                        sb.append(": document element mismatch ");
-                        sb.append("got ");
+                        sb.append(": document element mismatch got ");
                         sb.append(QNameHelper.pretty(name));
                     }
                 }
@@ -448,8 +436,6 @@ public final class Locale
 
             // Move to next token
 
-            assert k != ATTR;
-
             if (k != TEXT) {
                 start.toEnd();
             }
@@ -521,7 +507,7 @@ public final class Locale
 
     public static DOMImplementation newDomImplementation(SchemaTypeLoader stl,
                                                          XmlOptions options) {
-        return (DOMImplementation) getLocale(stl, options);
+        return getLocale(stl, options);
     }
 
     //
@@ -566,9 +552,8 @@ public final class Locale
 
     Cur parse(String s, SchemaType type, XmlOptions options)
         throws XmlException {
-        Reader r = new StringReader(s);
 
-        try {
+        try (Reader r = new StringReader(s)) {
             Cur c = getSaxLoader(options).load(this, new InputSource(r),
                 options);
 
@@ -579,11 +564,6 @@ public final class Locale
             assert false : "StringReader should not throw IOException";
 
             throw new XmlException(e.getMessage(), e);
-        } finally {
-            try {
-                r.close();
-            } catch (IOException e) {
-            }
         }
     }
 
@@ -640,14 +620,6 @@ public final class Locale
         return x;
     }
 
-    private static void lineNumber(XMLEvent xe, LoadContext context) {
-        org.apache.xmlbeans.xml.stream.Location loc = xe.getLocation();
-
-        if (loc != null) {
-            context.lineNumber(loc.getLineNumber(), loc.getColumnNumber(), -1);
-        }
-    }
-
     private static void lineNumber(XMLStreamReader xsr, LoadContext context) {
         javax.xml.stream.Location loc = xsr.getLocation();
 
@@ -1037,7 +1009,7 @@ public final class Locale
     //
     //
 
-    private class XmlSaxHandlerImpl
+    private static class XmlSaxHandlerImpl
         extends SaxHandler
         implements XmlSaxHandler {
         XmlSaxHandlerImpl(Locale l, SchemaType type, XmlOptions options) {
@@ -1096,8 +1068,8 @@ public final class Locale
             }
         }
 
-        private SchemaType _type;
-        private XmlOptions _options;
+        private final SchemaType _type;
+        private final XmlOptions _options;
     }
 
     public static XmlSaxHandler newSaxHandler(SchemaTypeLoader stl,
@@ -1163,7 +1135,7 @@ public final class Locale
 
     static private class DocProps
         extends XmlDocumentProperties {
-        private HashMap _map = new HashMap();
+        private final HashMap<Object, Object> _map = new HashMap<>();
 
         public Object put(Object key, Object value) {
             return _map.put(key, value);
@@ -1182,7 +1154,6 @@ public final class Locale
         c.push();
 
         while (c.toParent()) {
-            ;
         }
 
         DocProps props = (DocProps) c.getBookmark(DocProps.class);
@@ -1305,7 +1276,7 @@ public final class Locale
                     return processWhiteSpaceRule(s, wsr);
                 }
             }
-        } else if (wsr == Locale.WS_COLLAPSE) {
+        } else if (wsr == WS_COLLAPSE) {
             if (CharUtil.isWhiteSpace(s.charAt(0)) ||
                 CharUtil.isWhiteSpace(s.charAt(l - 1))) {
                 return processWhiteSpaceRule(s, wsr);
@@ -1352,7 +1323,7 @@ public final class Locale
                 return;
             }
 
-            if (_wsr == Locale.WS_PRESERVE) {
+            if (_wsr == WS_PRESERVE) {
                 CharUtil.getString(_sb, src, off, cch);
                 return;
             }
@@ -1384,7 +1355,7 @@ public final class Locale
 
                     start = i + 1;
 
-                    if (_wsr == Locale.WS_REPLACE) {
+                    if (_wsr == WS_REPLACE) {
                         _sb.append(' ');
                     } else if (_state == NOSPACE_STATE) {
                         _state = SPACE_SEEN_STATE;
@@ -1414,26 +1385,22 @@ public final class Locale
         private int _wsr;
 
         private char[] _srcBuf = new char[1024];
-        private StringBuffer _sb;
+        private final StringBuffer _sb;
     }
 
-    private static ThreadLocal tl_scrubBuffer =
-        new ThreadLocal() {
-            protected Object initialValue() {
-                return new SoftReference(new ScrubBuffer());
-            }
-        };
+    private static final ThreadLocal<SoftReference<ScrubBuffer>> tl_scrubBuffer =
+        ThreadLocal.withInitial(() -> new SoftReference<>(new ScrubBuffer()));
 
     public static void clearThreadLocals() {
         tl_scrubBuffer.remove();
     }
 
     static ScrubBuffer getScrubBuffer(int wsr) {
-        SoftReference softRef = (SoftReference) tl_scrubBuffer.get();
-        ScrubBuffer scrubBuffer = (ScrubBuffer) (softRef).get();
+        SoftReference<ScrubBuffer> softRef = tl_scrubBuffer.get();
+        ScrubBuffer scrubBuffer = softRef.get();
         if (scrubBuffer == null) {
             scrubBuffer = new ScrubBuffer();
-            tl_scrubBuffer.set(new SoftReference(scrubBuffer));
+            tl_scrubBuffer.set(new SoftReference<>(scrubBuffer));
         }
 
         scrubBuffer.init(wsr);
@@ -1756,14 +1723,10 @@ public final class Locale
         return false;
     }
 
-    static void applyNamespaces(Cur c, Map namespaces) {
+    static void applyNamespaces(Cur c, Map<String, String> namespaces) {
         assert c.isContainer();
 
-        java.util.Iterator i = namespaces.keySet().iterator();
-
-        while (i.hasNext()) {
-            String prefix = (String) i.next();
-
+        for (String prefix : namespaces.keySet()) {
             // Usually, this is the predefined xml namespace
             if (!prefix.toLowerCase().startsWith("xml")) {
                 if (c.namespaceForPrefix(prefix, false) == null) {
@@ -1773,7 +1736,7 @@ public final class Locale
                     c.createAttr(c._locale.createXmlns(prefix));
                     c.next();
 
-                    c.insertString((String) namespaces.get(prefix));
+                    c.insertString(namespaces.get(prefix));
 
                     c.pop();
                 }

Modified: xmlbeans/trunk/src/main/java/org/apache/xmlbeans/impl/store/Xobj.java
URL: http://svn.apache.org/viewvc/xmlbeans/trunk/src/main/java/org/apache/xmlbeans/impl/store/Xobj.java?rev=1881992&r1=1881991&r2=1881992&view=diff
==============================================================================
--- xmlbeans/trunk/src/main/java/org/apache/xmlbeans/impl/store/Xobj.java (original)
+++ xmlbeans/trunk/src/main/java/org/apache/xmlbeans/impl/store/Xobj.java Thu Sep 24 23:11:07 2020
@@ -1114,7 +1114,7 @@ abstract class Xobj implements TypeStore
 
         Object src = getChars(p, cch);
 
-        if (wsr == Locale.WS_PRESERVE) {
+        if (wsr == WS_PRESERVE) {
             return CharUtil.getString(src, _locale._offSrc, _locale._cchSrc);
         }
 
@@ -1130,20 +1130,18 @@ abstract class Xobj implements TypeStore
         if (offset == posMax()) {
             offset = -1;
         }
-        return getCharsAsString(offset, cch,
-            Locale.WS_PRESERVE);
+        return getCharsAsString(offset, cch, WS_PRESERVE);
     }
 
     String getCharsValueAsString(int off, int cch) {
-        return getCharsAsString(off + 1, cch,
-            Locale.WS_PRESERVE);
+        return getCharsAsString(off + 1, cch, WS_PRESERVE);
     }
 
     String getValueAsString(int wsr) {
         if (!hasChildren()) {
             Object src = getFirstChars();
 
-            if (wsr == Locale.WS_PRESERVE) {
+            if (wsr == WS_PRESERVE) {
                 String s = CharUtil.getString(src, _locale._offSrc, _locale._cchSrc);
 
                 // Cache string to be able to use it later again
@@ -1200,7 +1198,7 @@ abstract class Xobj implements TypeStore
     }
 
     String getValueAsString() {
-        return getValueAsString(Locale.WS_PRESERVE);
+        return getValueAsString(WS_PRESERVE);
     }
 
     // Returns just chars just after the begin tag ... does not get all the text if there are
@@ -1537,7 +1535,7 @@ abstract class Xobj implements TypeStore
         // when I make the store capable of handling strong simple types this
         // can be done ...
 
-        String value = getValueAsString(Locale.WS_COLLAPSE);
+        String value = getValueAsString(WS_COLLAPSE);
 
         String prefix, localname;
 
@@ -1930,7 +1928,7 @@ abstract class Xobj implements TypeStore
                 return false;
             }
 
-            String value = a.getValueAsString(Locale.WS_COLLAPSE);
+            String value = a.getValueAsString(WS_COLLAPSE);
 
             return value.equals("true") || value.equals("1");
         } finally {
@@ -1989,17 +1987,17 @@ abstract class Xobj implements TypeStore
     public <T extends XmlObject> void find_all_element_users(QName name, List<T> fillMeUp) {
         for (Xobj x = _firstChild; x != null; x = x._nextSibling) {
             if (x.isElem() && x._name.equals(name)) {
-                fillMeUp.add((T)x.getUser());
+                fillMeUp.add((T) x.getUser());
             }
         }
     }
 
     @SuppressWarnings("unchecked")
     @Override
-    public <T extends XmlObject>  void find_all_element_users(QNameSet names, List<T> fillMeUp) {
+    public <T extends XmlObject> void find_all_element_users(QNameSet names, List<T> fillMeUp) {
         for (Xobj x = _firstChild; x != null; x = x._nextSibling) {
             if (x.isElem() && names.contains(x._name)) {
-                fillMeUp.add((T)x.getUser());
+                fillMeUp.add((T) x.getUser());
             }
         }
     }
@@ -2345,9 +2343,9 @@ abstract class Xobj implements TypeStore
             find_all_element_users(elementName, elementsUser);
 
             List<Xobj> elements = elementsUser.stream()
-                .map(x -> (TypeStoreUser)x)
+                .map(x -> (TypeStoreUser) x)
                 .map(TypeStoreUser::get_store)
-                .map(x -> (Xobj)x)
+                .map(x -> (Xobj) x)
                 .collect(Collectors.toList());
 
             assert elements.size() == n;

Modified: xmlbeans/trunk/src/main/java/org/apache/xmlbeans/impl/tool/BaseSchemaResourceManager.java
URL: http://svn.apache.org/viewvc/xmlbeans/trunk/src/main/java/org/apache/xmlbeans/impl/tool/BaseSchemaResourceManager.java?rev=1881992&r1=1881991&r2=1881992&view=diff
==============================================================================
--- xmlbeans/trunk/src/main/java/org/apache/xmlbeans/impl/tool/BaseSchemaResourceManager.java (original)
+++ xmlbeans/trunk/src/main/java/org/apache/xmlbeans/impl/tool/BaseSchemaResourceManager.java Thu Sep 24 23:11:07 2020
@@ -15,23 +15,20 @@
 
 package org.apache.xmlbeans.impl.tool;
 
-import org.apache.xmlbeans.impl.xb.xsdownload.DownloadedSchemasDocument;
+import org.apache.xmlbeans.XmlBeans;
+import org.apache.xmlbeans.XmlOptions;
+import org.apache.xmlbeans.impl.common.IOUtil;
+import org.apache.xmlbeans.impl.util.HexBin;
 import org.apache.xmlbeans.impl.xb.xsdownload.DownloadedSchemaEntry;
+import org.apache.xmlbeans.impl.xb.xsdownload.DownloadedSchemasDocument;
 import org.apache.xmlbeans.impl.xb.xsdownload.DownloadedSchemasDocument.DownloadedSchemas;
-import org.apache.xmlbeans.impl.util.HexBin;
-import org.apache.xmlbeans.impl.common.IOUtil;
-import org.apache.xmlbeans.XmlOptions;
-import org.apache.xmlbeans.XmlBeans;
+import org.apache.xmlbeans.impl.xb.xsdschema.SchemaDocument;
+import org.apache.xmlbeans.impl.xb.xsdschema.SchemaDocument.Schema;
 
+import java.io.ByteArrayInputStream;
+import java.io.ByteArrayOutputStream;
 import java.io.IOException;
 import java.io.InputStream;
-import java.io.ByteArrayOutputStream;
-import java.io.ByteArrayInputStream;
-import java.util.Set;
-import java.util.HashSet;
-import java.util.Iterator;
-import java.util.Map;
-import java.util.HashMap;
 import java.net.URI;
 import java.net.URISyntaxException;
 import java.net.URL;
@@ -39,146 +36,121 @@ import java.net.URLConnection;
 import java.security.DigestInputStream;
 import java.security.MessageDigest;
 import java.security.NoSuchAlgorithmException;
+import java.util.HashMap;
+import java.util.HashSet;
+import java.util.Map;
+import java.util.Set;
 
-import org.apache.xmlbeans.impl.xb.xsdschema.SchemaDocument.Schema;
-import org.apache.xmlbeans.impl.xb.xsdschema.SchemaDocument;
-
-public abstract class BaseSchemaResourceManager extends SchemaImportResolver
-{
+public abstract class BaseSchemaResourceManager extends SchemaImportResolver {
     private static final String USER_AGENT = "XMLBeans/" + XmlBeans.getVersion() + " (" + XmlBeans.getTitle() + ")";
 
     private String _defaultCopyDirectory;
     private DownloadedSchemasDocument _importsDoc;
-    private Map _resourceForFilename = new HashMap();
-    private Map _resourceForURL = new HashMap();
-    private Map _resourceForNamespace = new HashMap();
-    private Map _resourceForDigest = new HashMap();
-    private Map _resourceForCacheEntry = new HashMap();
-    private Set _redownloadSet = new HashSet();
+    private final Map<String, SchemaResource> _resourceForFilename = new HashMap<>();
+    private final Map<String, SchemaResource> _resourceForURL = new HashMap<>();
+    private final Map<String, SchemaResource> _resourceForNamespace = new HashMap<>();
+    private final Map<String, SchemaResource> _resourceForDigest = new HashMap<>();
+    private final Map<DownloadedSchemaEntry, SchemaResource> _resourceForCacheEntry = new HashMap<>();
+    private Set<SchemaResource> _redownloadSet = new HashSet<>();
 
-    protected BaseSchemaResourceManager()
-    {
+    protected BaseSchemaResourceManager() {
         // concrete subclasses should call init in their constructors
     }
 
-    protected final void init()
-    {
-        if (fileExists(getIndexFilename()))
-        {
-            try
-            {
-                _importsDoc = DownloadedSchemasDocument.Factory.parse( inputStreamForFile( getIndexFilename() ) );
-            }
-            catch (IOException e)
-            {
+    protected final void init() {
+        if (fileExists(getIndexFilename())) {
+            try {
+                _importsDoc = DownloadedSchemasDocument.Factory.parse(inputStreamForFile(getIndexFilename()));
+            } catch (IOException e) {
                 _importsDoc = null;
-            }
-            catch (Exception e)
-            {
-                throw (IllegalStateException)(new IllegalStateException("Problem reading xsdownload.xml: please fix or delete this file")).initCause(e);
+            } catch (Exception e) {
+                throw new IllegalStateException("Problem reading xsdownload.xml: please fix or delete this file", e);
             }
         }
-        if (_importsDoc == null)
-        {
-            try
-            {
+        if (_importsDoc == null) {
+            try {
                 _importsDoc = DownloadedSchemasDocument.Factory.parse(
                     "<dls:downloaded-schemas xmlns:dls='http://www.bea.com/2003/01/xmlbean/xsdownload' defaultDirectory='" + getDefaultSchemaDir() + "'/>"
                 );
-            }
-            catch (Exception e)
-            {
-                throw (IllegalStateException)(new IllegalStateException()).initCause(e);
+            } catch (Exception e) {
+                throw new IllegalStateException(e);
             }
         }
 
         String defaultDir = _importsDoc.getDownloadedSchemas().getDefaultDirectory();
-        if (defaultDir == null)
-            defaultDir = getDefaultSchemaDir();;
+        if (defaultDir == null) {
+            defaultDir = getDefaultSchemaDir();
+        }
         _defaultCopyDirectory = defaultDir;
 
         // now initialize data structures
         DownloadedSchemaEntry[] entries = _importsDoc.getDownloadedSchemas().getEntryArray();
-        for (int i = 0; i < entries.length; i++)
-        {
-            updateResource(entries[i]);
+        for (DownloadedSchemaEntry entry : entries) {
+            updateResource(entry);
         }
     }
 
-    public final void writeCache() throws IOException
-    {
+    public final void writeCache() throws IOException {
         InputStream input = _importsDoc.newInputStream(new XmlOptions().setSavePrettyPrint());
         writeInputStreamToFile(input, getIndexFilename());
     }
 
-    public final void processAll(boolean sync, boolean refresh, boolean imports)
-    {
-        if (refresh)
-        {
-            _redownloadSet = new HashSet();
-        }
-        else
-        {
-            _redownloadSet = null;
-        }
+    public final void processAll(boolean sync, boolean refresh, boolean imports) {
+        _redownloadSet = refresh ? new HashSet<>() : null;
 
         String[] allFilenames = getAllXSDFilenames();
 
-        if (sync)
+        if (sync) {
             syncCacheWithLocalXsdFiles(allFilenames, false);
+        }
 
-        SchemaResource[] starters = (SchemaResource[])
-                _resourceForFilename.values().toArray(new SchemaResource[0]);
+        SchemaResource[] starters = _resourceForFilename.values().toArray(new SchemaResource[0]);
 
-        if (refresh)
+        if (refresh) {
             redownloadEntries(starters);
+        }
 
-        if (imports)
+        if (imports) {
             resolveImports(starters);
+        }
 
         _redownloadSet = null;
     }
 
-    public final void process(String[] uris, String[] filenames, boolean sync, boolean refresh, boolean imports)
-    {
-        if (refresh)
-        {
-            _redownloadSet = new HashSet();
-        }
-        else
-        {
-            _redownloadSet = null;
-        }
+    public final void process(String[] uris, String[] filenames, boolean sync, boolean refresh, boolean imports) {
+        _redownloadSet = refresh ? new HashSet<>() : null;
 
-        if (filenames.length > 0)
+        if (filenames.length > 0) {
             syncCacheWithLocalXsdFiles(filenames, true);
-        else if (sync)
+        } else if (sync) {
             syncCacheWithLocalXsdFiles(getAllXSDFilenames(), false);
+        }
 
-        Set starterset = new HashSet();
+        Set<SchemaResource> starterset = new HashSet<>();
 
-        for (int i = 0; i < uris.length; i++)
-        {
-            SchemaResource resource = (SchemaResource)lookupResource(null, uris[i]);
-            if (resource != null)
+        for (String s : uris) {
+            SchemaResource resource = (SchemaResource) lookupResource(null, s);
+            if (resource != null) {
                 starterset.add(resource);
+            }
         }
 
-        for (int i = 0; i < filenames.length; i++)
-        {
-            SchemaResource resource = (SchemaResource)_resourceForFilename.get(filenames);
-            if (resource != null)
+        for (String filename : filenames) {
+            SchemaResource resource = _resourceForFilename.get(filename);
+            if (resource != null) {
                 starterset.add(resource);
+            }
         }
 
-        SchemaResource[] starters = (SchemaResource[])
-               starterset.toArray(new SchemaResource[0]);
+        SchemaResource[] starters = starterset.toArray(new SchemaResource[0]);
 
-        if (refresh)
+        if (refresh) {
             redownloadEntries(starters);
+        }
 
-        if (imports)
+        if (imports) {
             resolveImports(starters);
+        }
 
         _redownloadSet = null;
     }
@@ -186,56 +158,49 @@ public abstract class BaseSchemaResource
     /**
      * Adds items to the cache that point to new files that aren't
      * described in the cache, and optionally deletes old entries.
-     *
+     * <p>
      * If an old file is gone and a new file is
      * found with exactly the same contents, the cache entry is moved
      * to point to the new file.
      */
-    public final void syncCacheWithLocalXsdFiles(String[] filenames, boolean deleteOnlyMentioned)
-    {
-        Set seenResources = new HashSet();
-        Set vanishedResources = new HashSet();
-
-        for (int i = 0; i < filenames.length; i++)
-        {
-            String filename = filenames[i];
+    public final void syncCacheWithLocalXsdFiles(String[] filenames, boolean deleteOnlyMentioned) {
+        Set<SchemaResource> seenResources = new HashSet<>();
+        Set<SchemaResource> vanishedResources = new HashSet<>();
 
+        for (String filename : filenames) {
             // first, if the filename matches exactly, trust the filename
-            SchemaResource resource = (SchemaResource)_resourceForFilename.get(filename);
-            if (resource != null)
-            {
-                if (fileExists(filename))
+            SchemaResource resource = _resourceForFilename.get(filename);
+            if (resource != null) {
+                if (fileExists(filename)) {
                     seenResources.add(resource);
-                else
+                } else {
                     vanishedResources.add(resource);
+                }
                 continue;
             }
 
             // new file that is not in the index?
             // not if the digest is known to the index and the original file is gone - that's a rename!
             String digest = null;
-            try
-            {
+            try {
                 digest = shaDigestForFile(filename);
-                resource = (SchemaResource)_resourceForDigest.get(digest);
-                if (resource != null)
-                {
+                resource = _resourceForDigest.get(digest);
+                if (resource != null) {
                     String oldFilename = resource.getFilename();
-                    if (!fileExists(oldFilename))
-                    {
+                    if (!fileExists(oldFilename)) {
                         warning("File " + filename + " is a rename of " + oldFilename);
                         resource.setFilename(filename);
                         seenResources.add(resource);
-                        if (_resourceForFilename.get(oldFilename) == resource)
+                        if (_resourceForFilename.get(oldFilename) == resource) {
                             _resourceForFilename.remove(oldFilename);
-                        if (_resourceForFilename.containsKey(filename))
+                        }
+                        if (_resourceForFilename.containsKey(filename)) {
                             _resourceForFilename.put(filename, resource);
+                        }
                         continue;
                     }
                 }
-            }
-            catch (IOException e)
-            {
+            } catch (IOException e) {
                 // unable to read digest... no problem, ignore then
             }
 
@@ -243,68 +208,65 @@ public abstract class BaseSchemaResource
             DownloadedSchemaEntry newEntry = addNewEntry();
             newEntry.setFilename(filename);
             warning("Caching information on new local file " + filename);
-            if (digest != null)
+            if (digest != null) {
                 newEntry.setSha1(digest);
+            }
 
             seenResources.add(updateResource(newEntry));
         }
 
-        if (deleteOnlyMentioned)
+        if (deleteOnlyMentioned) {
             deleteResourcesInSet(vanishedResources, true);
-        else
+        } else {
             deleteResourcesInSet(seenResources, false);
+        }
     }
 
     /**
      * Iterates through every entry and refetches it from its primary URL,
      * if known.  Replaces the contents of the file if the data is different.
      */
-    private void redownloadEntries(SchemaResource[] resources)
-    {
-        for (int i = 0; i < resources.length; i++)
-        {
-            redownloadResource(resources[i]);
+    private void redownloadEntries(SchemaResource[] resources) {
+        for (SchemaResource resource : resources) {
+            redownloadResource(resource);
         }
     }
 
-    private void deleteResourcesInSet(Set seenResources, boolean setToDelete)
-    {
-        Set seenCacheEntries = new HashSet();
-        for (Iterator i = seenResources.iterator(); i.hasNext(); )
-        {
-            SchemaResource resource = (SchemaResource)i.next();
+    private void deleteResourcesInSet(Set<SchemaResource> seenResources, boolean setToDelete) {
+        Set<DownloadedSchemaEntry> seenCacheEntries = new HashSet<>();
+        for (SchemaResource resource : seenResources) {
             seenCacheEntries.add(resource._cacheEntry);
         }
 
         DownloadedSchemas downloadedSchemas = _importsDoc.getDownloadedSchemas();
-        for (int i = 0; i < downloadedSchemas.sizeOfEntryArray(); i++)
-        {
+        for (int i = 0; i < downloadedSchemas.sizeOfEntryArray(); i++) {
             DownloadedSchemaEntry cacheEntry = downloadedSchemas.getEntryArray(i);
 
-            if (seenCacheEntries.contains(cacheEntry) == setToDelete)
-            {
-                SchemaResource resource = (SchemaResource)_resourceForCacheEntry.get(cacheEntry);
-                warning("Removing obsolete cache entry for " + resource.getFilename());
+            if (seenCacheEntries.contains(cacheEntry) == setToDelete) {
+                SchemaResource resource = _resourceForCacheEntry.get(cacheEntry);
 
-                if (resource != null)
-                {
+                if (resource != null) {
+                    warning("Removing obsolete cache entry for " + resource.getFilename());
                     _resourceForCacheEntry.remove(cacheEntry);
 
-                    if (resource == _resourceForFilename.get(resource.getFilename()))
+                    if (resource == _resourceForFilename.get(resource.getFilename())) {
                         _resourceForFilename.remove(resource.getFilename());
+                    }
 
-                    if (resource == _resourceForDigest.get(resource.getSha1()))
+                    if (resource == _resourceForDigest.get(resource.getSha1())) {
                         _resourceForDigest.remove(resource.getSha1());
+                    }
 
-                    if (resource == _resourceForNamespace.get(resource.getNamespace()))
+                    if (resource == _resourceForNamespace.get(resource.getNamespace())) {
                         _resourceForNamespace.remove(resource.getNamespace());
+                    }
 
                     // Finally, any or all URIs
                     String[] urls = resource.getSchemaLocationArray();
-                    for (int j = 0; j < urls.length; j++)
-                    {
-                        if (resource == _resourceForURL.get(urls[j]))
-                            _resourceForURL.remove(urls[j]);
+                    for (String url : urls) {
+                        if (resource == _resourceForURL.get(url)) {
+                            _resourceForURL.remove(url);
+                        }
                     }
                 }
 
@@ -314,141 +276,130 @@ public abstract class BaseSchemaResource
         }
     }
 
-    private SchemaResource updateResource(DownloadedSchemaEntry entry)
-    {
+    private SchemaResource updateResource(DownloadedSchemaEntry entry) {
         // The file
         String filename = entry.getFilename();
-        if (filename == null)
+        if (filename == null) {
             return null;
+        }
 
         SchemaResource resource = new SchemaResource(entry);
         _resourceForCacheEntry.put(entry, resource);
 
-        if (!_resourceForFilename.containsKey(filename))
+        if (!_resourceForFilename.containsKey(filename)) {
             _resourceForFilename.put(filename, resource);
+        }
 
         // The digest
         String digest = resource.getSha1();
-        if (digest != null)
-        {
-            if (!_resourceForDigest.containsKey(digest))
+        if (digest != null) {
+            if (!_resourceForDigest.containsKey(digest)) {
                 _resourceForDigest.put(digest, resource);
+            }
         }
 
         // Next, the namespace
         String namespace = resource.getNamespace();
-        if (namespace != null)
-        {
-            if (!_resourceForNamespace.containsKey(namespace))
+        if (namespace != null) {
+            if (!_resourceForNamespace.containsKey(namespace)) {
                 _resourceForNamespace.put(namespace, resource);
+            }
         }
 
         // Finally, any or all URIs
         String[] urls = resource.getSchemaLocationArray();
-        for (int j = 0; j < urls.length; j++)
-        {
-            if (!_resourceForURL.containsKey(urls[j]))
-                _resourceForURL.put(urls[j], resource);
+        for (String url : urls) {
+            if (!_resourceForURL.containsKey(url)) {
+                _resourceForURL.put(url, resource);
+            }
         }
 
         return resource;
     }
 
-    private static DigestInputStream digestInputStream(InputStream input)
-    {
+    private static DigestInputStream digestInputStream(InputStream input) {
         MessageDigest sha;
-        try
-        {
+        try {
             sha = MessageDigest.getInstance("SHA");
+        } catch (NoSuchAlgorithmException e) {
+            throw new IllegalStateException(e);
         }
-        catch (NoSuchAlgorithmException e)
-        {
-            throw (IllegalStateException)(new IllegalStateException().initCause(e));
-        }
-
-        DigestInputStream str = new DigestInputStream(input, sha);
 
-        return str;
+        return new DigestInputStream(input, sha);
     }
 
-    private DownloadedSchemaEntry addNewEntry()
-    {
+    private DownloadedSchemaEntry addNewEntry() {
         return _importsDoc.getDownloadedSchemas().addNewEntry();
     }
 
-    private class SchemaResource implements SchemaImportResolver.SchemaResource
-    {
-        SchemaResource(DownloadedSchemaEntry entry)
-        {
+    private class SchemaResource implements SchemaImportResolver.SchemaResource {
+        SchemaResource(DownloadedSchemaEntry entry) {
             _cacheEntry = entry;
         }
 
         DownloadedSchemaEntry _cacheEntry;
 
-        public void setFilename(String filename)
-        {
+        public void setFilename(String filename) {
             _cacheEntry.setFilename(filename);
         }
 
-        public String getFilename()
-        {
+        public String getFilename() {
             return _cacheEntry.getFilename();
         }
 
-        public Schema getSchema()
-        {
-            if (!fileExists(getFilename()))
+        public Schema getSchema() {
+            if (!fileExists(getFilename())) {
                 redownloadResource(this);
+            }
 
-            try
-            {
+            try {
                 return SchemaDocument.Factory.parse(inputStreamForFile(getFilename())).getSchema();
-            }
-            catch (Exception e)
-            {
+            } catch (Exception e) {
                 return null; // return null if _any_ problems reading schema file
             }
         }
 
-        public String getSha1()
-        {
+        public String getSha1() {
             return _cacheEntry.getSha1();
         }
 
-        public String getNamespace()
-        {
+        public String getNamespace() {
             return _cacheEntry.getNamespace();
         }
 
-        public void setNamespace(String namespace)
-        {
+        public void setNamespace(String namespace) {
             _cacheEntry.setNamespace(namespace);
         }
 
-        public String getSchemaLocation()
-        {
-            if (_cacheEntry.sizeOfSchemaLocationArray() > 0)
+        public String getSchemaLocation() {
+            if (_cacheEntry.sizeOfSchemaLocationArray() > 0) {
                 return _cacheEntry.getSchemaLocationArray(0);
+            }
             return null;
         }
 
-        public String[] getSchemaLocationArray()
-        {
+        public String[] getSchemaLocationArray() {
             return _cacheEntry.getSchemaLocationArray();
         }
 
-        public int hashCode()
-        {
+        public int hashCode() {
             return getFilename().hashCode();
         }
 
-        public boolean equals(Object obj)
-        {
-            return this == obj || getFilename().equals(((SchemaResource)obj).getFilename());
+        public boolean equals(Object obj) {
+            if (this == obj) {
+                return true;
+            }
+
+            if (!(obj instanceof SchemaResource)) {
+                return false;
+            }
+
+            SchemaResource sr = (SchemaResource) obj;
+            return getFilename().equals(sr.getFilename());
         }
 
-        public void addSchemaLocation(String schemaLocation)
-        {
+        public void addSchemaLocation(String schemaLocation) {
             _cacheEntry.addSchemaLocation(schemaLocation);
         }
     }
@@ -458,74 +409,72 @@ public abstract class BaseSchemaResource
      * given import.  Should return a SchemaResource whose
      * "equals" relationship reveals when a SchemaResource is
      * duplicated and shouldn't be examined again.
-     *
+     * <p>
      * Returns null if the resource reference should be ignored.
      */
-    public SchemaImportResolver.SchemaResource lookupResource(String nsURI, String schemaLocation)
-    {
+    public SchemaImportResolver.SchemaResource lookupResource(String nsURI, String schemaLocation) {
         SchemaResource result = fetchFromCache(nsURI, schemaLocation);
-        if (result != null)
-        {
-            if (_redownloadSet != null)
-            {
+        if (result != null) {
+            if (_redownloadSet != null) {
                 redownloadResource(result);
             }
             return result;
         }
 
-        if (schemaLocation == null)
-        {
+        if (schemaLocation == null) {
             warning("No cached schema for namespace '" + nsURI + "', and no url specified");
             return null;
         }
 
         result = copyOrIdentifyDuplicateURL(schemaLocation, nsURI);
-        if (_redownloadSet != null)
+        if (_redownloadSet != null) {
             _redownloadSet.add(result);
+        }
         return result;
     }
 
-    private SchemaResource fetchFromCache(String nsURI, String schemaLocation)
-    {
+    private SchemaResource fetchFromCache(String nsURI, String schemaLocation) {
         SchemaResource result;
 
-        if (schemaLocation != null)
-        {
-            result = (SchemaResource)_resourceForURL.get(schemaLocation);
-            if (result != null)
+        if (schemaLocation != null) {
+            result = _resourceForURL.get(schemaLocation);
+            if (result != null) {
                 return result;
+            }
         }
 
-        if (nsURI != null)
-        {
-            result = (SchemaResource)_resourceForNamespace.get(nsURI);
-            if (result != null)
+        if (nsURI != null) {
+            result = _resourceForNamespace.get(nsURI);
+            if (result != null) {
                 return result;
+            }
         }
 
         return null;
     }
 
-    private String uniqueFilenameForURI(String schemaLocation) throws IOException, URISyntaxException
-    {
-        String localFilename = new URI( schemaLocation ).getRawPath();
+    private String uniqueFilenameForURI(String schemaLocation) throws IOException, URISyntaxException {
+        String localFilename = new URI(schemaLocation).getRawPath();
         int i = localFilename.lastIndexOf('/');
-        if (i >= 0)
+        if (i >= 0) {
             localFilename = localFilename.substring(i + 1);
-        if (localFilename.endsWith(".xsd"))
+        }
+        if (localFilename.endsWith(".xsd")) {
             localFilename = localFilename.substring(0, localFilename.length() - 4);
-        if (localFilename.length() == 0)
+        }
+        if (localFilename.length() == 0) {
             localFilename = "schema";
+        }
 
         // TODO: remove other unsafe characters for filenames?
 
         String candidateFilename = localFilename;
         int suffix = 1;
-        while (suffix < 1000)
-        {
+        while (suffix < 1000) {
             String candidate = _defaultCopyDirectory + "/" + candidateFilename + ".xsd";
-            if (!fileExists(candidate))
+            if (!fileExists(candidate)) {
                 return candidate;
+            }
             suffix += 1;
             candidateFilename = localFilename + suffix;
         }
@@ -533,54 +482,47 @@ public abstract class BaseSchemaResource
         throw new IOException("Problem with filename " + localFilename + ".xsd");
     }
 
-    private void redownloadResource(SchemaResource resource)
-    {
-        if (_redownloadSet != null)
-        {
-            if (_redownloadSet.contains(resource))
+    private void redownloadResource(SchemaResource resource) {
+        if (_redownloadSet != null) {
+            if (_redownloadSet.contains(resource)) {
                 return;
+            }
             _redownloadSet.add(resource);
         }
 
         String filename = resource.getFilename();
         String schemaLocation = resource.getSchemaLocation();
-        String digest = null;
+        String digest;
 
         // nothing to do?
-        if (schemaLocation == null || filename == null)
+        if (schemaLocation == null || filename == null) {
             return;
+        }
 
         ByteArrayOutputStream buffer = new ByteArrayOutputStream();
 
-        try
-        {
-            URL url = new URL( schemaLocation );
+        try {
+            URL url = new URL(schemaLocation);
             URLConnection conn = url.openConnection();
             conn.addRequestProperty("User-Agent", USER_AGENT);
             conn.addRequestProperty("Accept", "application/xml, text/xml, */*");
             DigestInputStream input = digestInputStream(conn.getInputStream());
             IOUtil.copyCompletely(input, buffer);
             digest = HexBin.bytesToString(input.getMessageDigest().digest());
-        }
-        catch (Exception e)
-        {
+        } catch (Exception e) {
             warning("Could not copy remote resource " + schemaLocation + ":" + e.getMessage());
             return;
         }
 
-        if (digest.equals(resource.getSha1()) && fileExists(filename))
-        {
+        if (digest.equals(resource.getSha1()) && fileExists(filename)) {
             warning("Resource " + filename + " is unchanged from " + schemaLocation + ".");
             return;
         }
 
-        try
-        {
+        try {
             InputStream source = new ByteArrayInputStream(buffer.toByteArray());
             writeInputStreamToFile(source, filename);
-        }
-        catch (IOException e)
-        {
+        } catch (IOException e) {
             warning("Could not write to file " + filename + " for " + schemaLocation + ":" + e.getMessage());
             return;
         }
@@ -588,47 +530,38 @@ public abstract class BaseSchemaResource
         warning("Refreshed " + filename + " from " + schemaLocation);
     }
 
-    private SchemaResource copyOrIdentifyDuplicateURL(String schemaLocation, String namespace)
-    {
+    private SchemaResource copyOrIdentifyDuplicateURL(String schemaLocation, String namespace) {
         String targetFilename;
         String digest;
         SchemaResource result;
 
-        try
-        {
+        try {
             targetFilename = uniqueFilenameForURI(schemaLocation);
-        }
-        catch (URISyntaxException e)
-        {
+        } catch (URISyntaxException e) {
             warning("Invalid URI '" + schemaLocation + "':" + e.getMessage());
             return null;
-        }
-        catch (IOException e)
-        {
+        } catch (IOException e) {
             warning("Could not create local file for " + schemaLocation + ":" + e.getMessage());
             return null;
         }
 
-        try
-        {
-            URL url = new URL( schemaLocation );
+        try {
+            URL url = new URL(schemaLocation);
             DigestInputStream input = digestInputStream(url.openStream());
             writeInputStreamToFile(input, targetFilename);
             digest = HexBin.bytesToString(input.getMessageDigest().digest());
-        }
-        catch (Exception e)
-        {
+        } catch (Exception e) {
             warning("Could not copy remote resource " + schemaLocation + ":" + e.getMessage());
             return null;
         }
 
-        result = (SchemaResource)_resourceForDigest.get(digest);
-        if (result != null)
-        {
+        result = _resourceForDigest.get(digest);
+        if (result != null) {
             deleteFile(targetFilename);
             result.addSchemaLocation(schemaLocation);
-            if (!_resourceForURL.containsKey(schemaLocation))
+            if (!_resourceForURL.containsKey(schemaLocation)) {
                 _resourceForURL.put(schemaLocation, result);
+            }
             return result;
         }
 
@@ -637,8 +570,9 @@ public abstract class BaseSchemaResource
         DownloadedSchemaEntry newEntry = addNewEntry();
         newEntry.setFilename(targetFilename);
         newEntry.setSha1(digest);
-        if (namespace != null)
+        if (namespace != null) {
             newEntry.setNamespace(namespace);
+        }
         newEntry.addSchemaLocation(schemaLocation);
         return updateResource(newEntry);
     }
@@ -646,23 +580,26 @@ public abstract class BaseSchemaResource
     /**
      * Updates actual namespace in the table.
      */
-    public void reportActualNamespace(SchemaImportResolver.SchemaResource rresource, String actualNamespace)
-    {
-        SchemaResource resource = (SchemaResource)rresource;
+    public void reportActualNamespace(SchemaImportResolver.SchemaResource rresource, String actualNamespace) {
+        SchemaResource resource = (SchemaResource) rresource;
         String oldNamespace = resource.getNamespace();
-        if (oldNamespace != null && _resourceForNamespace.get(oldNamespace) == resource)
+        if (oldNamespace != null && _resourceForNamespace.get(oldNamespace) == resource) {
             _resourceForNamespace.remove(oldNamespace);
-        if (!_resourceForNamespace.containsKey(actualNamespace))
+        }
+        if (!_resourceForNamespace.containsKey(actualNamespace)) {
             _resourceForNamespace.put(actualNamespace, resource);
+        }
         resource.setNamespace(actualNamespace);
     }
 
-    private String shaDigestForFile(String filename) throws IOException
-    {
+    private String shaDigestForFile(String filename) throws IOException {
         DigestInputStream str = digestInputStream(inputStreamForFile(filename));
 
         byte[] dummy = new byte[4096];
-        for (int i = 1; i > 0; i = str.read(dummy));
+        int i = 1;
+        while (i > 0) {
+            i = str.read(dummy);
+        }
 
         str.close();
 
@@ -671,13 +608,11 @@ public abstract class BaseSchemaResource
 
     // SOME METHODS TO OVERRIDE ============================
 
-    protected String getIndexFilename()
-    {
+    protected String getIndexFilename() {
         return "./xsdownload.xml";
     }
 
-    protected String getDefaultSchemaDir()
-    {
+    protected String getDefaultSchemaDir() {
         return "./schema";
     }
 

Modified: xmlbeans/trunk/src/main/java/org/apache/xmlbeans/impl/values/JavaBase64Holder.java
URL: http://svn.apache.org/viewvc/xmlbeans/trunk/src/main/java/org/apache/xmlbeans/impl/values/JavaBase64Holder.java?rev=1881992&r1=1881991&r2=1881992&view=diff
==============================================================================
--- xmlbeans/trunk/src/main/java/org/apache/xmlbeans/impl/values/JavaBase64Holder.java (original)
+++ xmlbeans/trunk/src/main/java/org/apache/xmlbeans/impl/values/JavaBase64Holder.java Thu Sep 24 23:11:07 2020
@@ -132,6 +132,6 @@ public abstract class JavaBase64Holder e
         }
 
         byte[] res = md5.digest(_value);
-        return hashcode = res[0] << 24 + res[1] << 16 + res[2] << 8 + res[3];
+        return hashcode = (res[0] << 24) | (res[1] << 16) | (res[2] << 8) | res[3];
     }
 }

Modified: xmlbeans/trunk/src/main/java/org/apache/xmlbeans/impl/values/JavaHexBinaryHolder.java
URL: http://svn.apache.org/viewvc/xmlbeans/trunk/src/main/java/org/apache/xmlbeans/impl/values/JavaHexBinaryHolder.java?rev=1881992&r1=1881991&r2=1881992&view=diff
==============================================================================
--- xmlbeans/trunk/src/main/java/org/apache/xmlbeans/impl/values/JavaHexBinaryHolder.java (original)
+++ xmlbeans/trunk/src/main/java/org/apache/xmlbeans/impl/values/JavaHexBinaryHolder.java Thu Sep 24 23:11:07 2020
@@ -133,7 +133,7 @@ public abstract class JavaHexBinaryHolde
         }
 
         byte[] res = md5.digest(_value);
-        return hashcode = res[0] << 24 + res[1] << 16 + res[2] << 8 + res[3];
+        return hashcode = (res[0] << 24) | (res[1] << 16) | (res[2] << 8) | res[3];
     }
 
 }



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