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/10/07 23:35:25 UTC

svn commit: r1882308 [2/2] - in /xmlbeans/trunk/src/main/java/org/apache/xmlbeans: ./ impl/common/ impl/schema/ impl/soap/ impl/store/ impl/tool/

Modified: xmlbeans/trunk/src/main/java/org/apache/xmlbeans/impl/schema/StscSimpleTypeResolver.java
URL: http://svn.apache.org/viewvc/xmlbeans/trunk/src/main/java/org/apache/xmlbeans/impl/schema/StscSimpleTypeResolver.java?rev=1882308&r1=1882307&r2=1882308&view=diff
==============================================================================
--- xmlbeans/trunk/src/main/java/org/apache/xmlbeans/impl/schema/StscSimpleTypeResolver.java (original)
+++ xmlbeans/trunk/src/main/java/org/apache/xmlbeans/impl/schema/StscSimpleTypeResolver.java Wed Oct  7 23:35:25 2020
@@ -15,32 +15,19 @@
 
 package org.apache.xmlbeans.impl.schema;
 
-import java.util.*;
-import java.util.List;
-import java.math.BigInteger;
-
-import javax.xml.namespace.QName;
-import org.apache.xmlbeans.impl.values.XmlValueOutOfRangeException;
-import org.apache.xmlbeans.impl.regex.RegularExpression;
-import org.apache.xmlbeans.impl.regex.ParseException;
+import org.apache.xmlbeans.*;
 import org.apache.xmlbeans.impl.common.QNameHelper;
-import org.apache.xmlbeans.SchemaType;
-import org.apache.xmlbeans.SimpleValue;
-import org.apache.xmlbeans.XmlAnySimpleType;
-import org.apache.xmlbeans.XmlByte;
-import org.apache.xmlbeans.XmlCursor;
-import org.apache.xmlbeans.XmlErrorCodes;
-import org.apache.xmlbeans.XmlInteger;
-import org.apache.xmlbeans.XmlNonNegativeInteger;
-import org.apache.xmlbeans.XmlObject;
-import org.apache.xmlbeans.XmlPositiveInteger;
-import org.apache.xmlbeans.XmlShort;
-import org.apache.xmlbeans.XmlUnsignedByte;
+import org.apache.xmlbeans.impl.regex.ParseException;
+import org.apache.xmlbeans.impl.regex.RegularExpression;
+import org.apache.xmlbeans.impl.values.XmlValueOutOfRangeException;
 import org.apache.xmlbeans.impl.xb.xsdschema.*;
 import org.apache.xmlbeans.impl.xb.xsdschema.SchemaDocument.Schema;
 
-public class StscSimpleTypeResolver
-{
+import javax.xml.namespace.QName;
+import java.math.BigInteger;
+import java.util.*;
+
+public class StscSimpleTypeResolver {
 
     /**************************************************************************
      * SIMPLE TYPE RESOLUTION HERE
@@ -55,32 +42,28 @@ public class StscSimpleTypeResolver
      * in the end to have their "fundamental facets" resolved.
      */
 
-    public static void resolveSimpleType(SchemaTypeImpl sImpl)
-    {
-        SimpleType parseSt = (SimpleType)sImpl.getParseObject();
-        
+    public static void resolveSimpleType(SchemaTypeImpl sImpl) {
+        SimpleType parseSt = (SimpleType) sImpl.getParseObject();
+
         assert sImpl.isSimpleType();
 
         Schema schema = StscComplexTypeResolver.getSchema(parseSt);
 
         // Verify: have list, union, or restriction, but not more than one
         int count =
-                (parseSt.isSetList() ? 1 : 0) +
-                (parseSt.isSetUnion() ? 1 : 0) +
-                (parseSt.isSetRestriction() ? 1 : 0);
-        if (count > 1)
-        {
+            (parseSt.isSetList() ? 1 : 0) +
+            (parseSt.isSetUnion() ? 1 : 0) +
+            (parseSt.isSetRestriction() ? 1 : 0);
+        if (count > 1) {
             StscState.get().error(
-                    "A simple type must define either a list, a union, or a restriction: more than one found.",
-                    XmlErrorCodes.MALFORMED_SIMPLE_TYPE_DEFN,
-                    parseSt);
+                "A simple type must define either a list, a union, or a restriction: more than one found.",
+                XmlErrorCodes.MALFORMED_SIMPLE_TYPE_DEFN,
+                parseSt);
             // recovery: treat it as the first of list, union, restr
-        }
-        else if (count < 1)
-        {
+        } else if (count < 1) {
             StscState.get().error("A simple type must define either a list, a union, or a restriction: none was found.",
-                    XmlErrorCodes.MALFORMED_SIMPLE_TYPE_DEFN,
-                    parseSt);
+                XmlErrorCodes.MALFORMED_SIMPLE_TYPE_DEFN,
+                parseSt);
             // recovery: treat it as restriction of anySimpleType
             resolveErrorSimpleType(sImpl);
             return;
@@ -92,72 +75,63 @@ public class StscSimpleTypeResolver
         boolean finalUnion = false;
 
         Object finalValue = null;
-        if (parseSt.isSetFinal())
-        {
+        if (parseSt.isSetFinal()) {
             finalValue = parseSt.getFinal();
         }
         // Inspect the finalDefault attribute on the schema
-        else if (schema != null && schema.isSetFinalDefault())
-        {
+        else if (schema != null && schema.isSetFinalDefault()) {
             finalValue = schema.getFinalDefault();
         }
 
-        if (finalValue != null)
-        {
-            if (finalValue instanceof String)
-            {
-                if ("#all".equals((String)finalValue))
-                {
+        if (finalValue != null) {
+            if (finalValue instanceof String) {
+                if ("#all".equals(finalValue)) {
                     finalRest = finalList = finalUnion = true;
                 }
-            }
-            else if (finalValue instanceof List)
-            {
-                List lFinalValue = (List) finalValue;
-                if (lFinalValue.contains("restriction"))
+            } else if (finalValue instanceof List) {
+                @SuppressWarnings("unchecked")
+                List<String> lFinalValue = (List<String>) finalValue;
+                if (lFinalValue.contains("restriction")) {
                     finalRest = true;
+                }
 
-                if (lFinalValue.contains("list"))
+                if (lFinalValue.contains("list")) {
                     finalList = true;
+                }
 
-                if (lFinalValue.contains("union"))
-                    finalUnion= true;
+                if (lFinalValue.contains("union")) {
+                    finalUnion = true;
+                }
             }
         }
 
         sImpl.setSimpleFinal(finalRest, finalList, finalUnion);
 
-        List anonTypes = new ArrayList();
+        List<SchemaType> anonTypes = new ArrayList<>();
 
-        if (parseSt.getList() != null)
+        if (parseSt.getList() != null) {
             resolveListType(sImpl, parseSt.getList(), anonTypes);
-        else if (parseSt.getUnion() != null)
+        } else if (parseSt.getUnion() != null) {
             resolveUnionType(sImpl, parseSt.getUnion(), anonTypes);
-        else if (parseSt.getRestriction() != null)
+        } else if (parseSt.getRestriction() != null) {
             resolveSimpleRestrictionType(sImpl, parseSt.getRestriction(), anonTypes);
+        }
 
         sImpl.setAnonymousTypeRefs(makeRefArray(anonTypes));
     }
 
-    private static SchemaType.Ref[] makeRefArray(Collection typeList)
-    {
-        SchemaType.Ref[] result = new SchemaType.Ref[typeList.size()];
-        int j = 0;
-        for (Iterator i = typeList.iterator(); i.hasNext(); j++)
-            result[j] = ((SchemaType)i.next()).getRef();
-        return result;
+    private static SchemaType.Ref[] makeRefArray(List<? extends SchemaType> typeList) {
+        return typeList.stream().map(SchemaType::getRef).toArray(SchemaType.Ref[]::new);
     }
 
-    static void resolveErrorSimpleType(SchemaTypeImpl sImpl)
-    {
+    static void resolveErrorSimpleType(SchemaTypeImpl sImpl) {
         sImpl.setSimpleTypeVariety(SchemaType.ATOMIC);
         sImpl.setBaseTypeRef(BuiltinSchemaTypeSystem.ST_ANY_SIMPLE.getRef());
         sImpl.setBaseDepth(BuiltinSchemaTypeSystem.ST_ANY_SIMPLE.getBaseDepth() + 1);
         sImpl.setPrimitiveTypeRef(BuiltinSchemaTypeSystem.ST_ANY_SIMPLE.getRef());
     }
 
-    static void resolveListType(SchemaTypeImpl sImpl, org.apache.xmlbeans.impl.xb.xsdschema.ListDocument.List parseList, List anonTypes)
-    {
+    static void resolveListType(SchemaTypeImpl sImpl, org.apache.xmlbeans.impl.xb.xsdschema.ListDocument.List parseList, List<SchemaType> anonTypes) {
         StscState state = StscState.get();
 
         sImpl.setSimpleTypeVariety(SchemaType.LIST);
@@ -165,18 +139,16 @@ public class StscSimpleTypeResolver
         sImpl.setBaseDepth(BuiltinSchemaTypeSystem.ST_ANY_SIMPLE.getBaseDepth() + 1);
         sImpl.setDerivationType(SchemaType.DT_RESTRICTION);
 
-        if (sImpl.isRedefinition())
-        {
+        if (sImpl.isRedefinition()) {
             state.error(XmlErrorCodes.SCHEMA_REDEFINE$EXTEND_OR_RESTRICT,
-                new Object[] { "list" }, parseList);
+                new Object[]{"list"}, parseList);
             // recovery: oh well.
         }
-        
+
         QName itemName = parseList.getItemType();
         LocalSimpleType parseInner = parseList.getSimpleType();
 
-        if (itemName != null && parseInner != null)
-        {
+        if (itemName != null && parseInner != null) {
             state.error(XmlErrorCodes.SCHEMA_SIMPLE_TYPE$LIST_HAS_BOTH_ITEM_OR_SIMPLE_TYPE, null, parseList);
             // recovery: ignore the inner simple type.
             parseInner = null;
@@ -185,26 +157,20 @@ public class StscSimpleTypeResolver
         SchemaTypeImpl itemImpl;
         XmlObject errorLoc;
 
-        if (itemName != null)
-        {
+        if (itemName != null) {
             itemImpl = state.findGlobalType(itemName, sImpl.getChameleonNamespace(), sImpl.getTargetNamespace());
             errorLoc = parseList.xgetItemType();
-            if (itemImpl == null)
-            {
+            if (itemImpl == null) {
                 state.notFoundError(itemName, SchemaType.TYPE, parseList.xgetItemType(), true);
                 // recovery: treat it as a list of anySimpleType
                 itemImpl = BuiltinSchemaTypeSystem.ST_ANY_SIMPLE;
             }
-        }
-        else if (parseInner != null)
-        {
+        } else if (parseInner != null) {
             itemImpl = StscTranslator.translateAnonymousSimpleType(parseInner,
                 sImpl.getTargetNamespace(), sImpl.getChameleonNamespace() != null,
                 sImpl.getElemFormDefault(), sImpl.getAttFormDefault(), anonTypes, sImpl);
             errorLoc = parseInner;
-        }
-        else
-        {
+        } else {
             state.error(XmlErrorCodes.SCHEMA_SIMPLE_TYPE$LIST_HAS_NEITHER_ITEM_OR_SIMPLE_TYPE, null, parseList);
             // recovery: treat it as an extension of anySimpleType
             resolveErrorSimpleType(sImpl);
@@ -212,29 +178,27 @@ public class StscSimpleTypeResolver
         }
 
         // Verify final restrictions
-        if (itemImpl.finalList())
+        if (itemImpl.finalList()) {
             state.error(XmlErrorCodes.SIMPLE_TYPE_PROPERTIES$LIST_FINAL, null, parseList);
+        }
 
         // Recursion...
         StscResolver.resolveType(itemImpl);
 
-        if (!itemImpl.isSimpleType())
-        {
+        if (!itemImpl.isSimpleType()) {
             state.error(XmlErrorCodes.SIMPLE_TYPE_RESTRICTION$LIST_ITEM_NOT_SIMPLE, null, errorLoc);
             // recovery: treat the item type as anySimpleType
             sImpl = BuiltinSchemaTypeSystem.ST_ANY_SIMPLE;
         }
 
-        switch (itemImpl.getSimpleVariety())
-        {
+        switch (itemImpl.getSimpleVariety()) {
             case SchemaType.LIST:
                 state.error(XmlErrorCodes.SIMPLE_TYPE_RESTRICTION$LIST_ITEM_IS_LIST, null, errorLoc);
                 // recovery: treat the list as an anySimpleType
                 resolveErrorSimpleType(sImpl);
                 return;
             case SchemaType.UNION:
-                if (itemImpl.isUnionOfLists())
-                {
+                if (itemImpl.isUnionOfLists()) {
                     state.error(XmlErrorCodes.SIMPLE_TYPE_RESTRICTION$LIST_ITEM_IS_UNION_OF_LIST, null, errorLoc);
                     resolveErrorSimpleType(sImpl);
                     return;
@@ -243,68 +207,63 @@ public class StscSimpleTypeResolver
             case SchemaType.ATOMIC:
                 sImpl.setListItemTypeRef(itemImpl.getRef());
                 // Check that the item type is not a plan NOTATION
-                if (sImpl.getBuiltinTypeCode() == SchemaType.BTC_NOTATION)
+                if (sImpl.getBuiltinTypeCode() == SchemaType.BTC_NOTATION) {
                     state.recover(XmlErrorCodes.DATATYPE_ENUM_NOTATION, null, errorLoc);
+                }
                 break;
             default:
-                assert(false);
+                assert (false);
                 sImpl.setListItemTypeRef(BuiltinSchemaTypeSystem.ST_ANY_SIMPLE.getRef());
         }
 
         // now deal with facets
         sImpl.setBasicFacets(StscState.FACETS_LIST, StscState.FIXED_FACETS_LIST);
-        sImpl.setWhiteSpaceRule( SchemaType.WS_COLLAPSE );
+        sImpl.setWhiteSpaceRule(SchemaType.WS_COLLAPSE);
 
         // now compute our intrinsic properties
         resolveFundamentalFacets(sImpl);
     }
 
 
-
-
-    static void resolveUnionType(SchemaTypeImpl sImpl, UnionDocument.Union parseUnion, List anonTypes)
-    {
+    static void resolveUnionType(SchemaTypeImpl sImpl, UnionDocument.Union parseUnion, List<SchemaType> anonTypes) {
         sImpl.setSimpleTypeVariety(SchemaType.UNION);
         sImpl.setBaseTypeRef(BuiltinSchemaTypeSystem.ST_ANY_SIMPLE.getRef());
         sImpl.setBaseDepth(BuiltinSchemaTypeSystem.ST_ANY_SIMPLE.getBaseDepth() + 1);
         sImpl.setDerivationType(SchemaType.DT_RESTRICTION);
 
         StscState state = StscState.get();
-        
-        if (sImpl.isRedefinition())
-        {
+
+        if (sImpl.isRedefinition()) {
             state.error(XmlErrorCodes.SCHEMA_REDEFINE$EXTEND_OR_RESTRICT,
-                new Object[] { "union" }, parseUnion);
+                new Object[]{"union"}, parseUnion);
             // recovery: oh well.
         }
-        
-        List memberTypes = parseUnion.getMemberTypes();
+
+        @SuppressWarnings("unchecked")
+        List<QName> memberTypes = (List<QName>) parseUnion.getMemberTypes();
         SimpleType[] simpleTypes = parseUnion.getSimpleTypeArray();
 
-        List memberImplList = new ArrayList();
-        
-        if (simpleTypes.length == 0 && (memberTypes == null || memberTypes.size() == 0))
-        {
+        List<SchemaTypeImpl> memberImplList = new ArrayList<>();
+
+        if (simpleTypes.length == 0 && (memberTypes == null || memberTypes.size() == 0)) {
             state.error(XmlErrorCodes.SCHEMA_SIMPLE_TYPE$UNION_HAS_MEMBER_TYPES_OR_SIMPLE_TYPES, null, parseUnion);
             // recovery: oh well, zero member types is fine.
         }
 
-        if (memberTypes != null)
-        {
-            for (Iterator mNames = memberTypes.iterator(); mNames.hasNext(); )
-            {
-                QName mName = (QName)mNames.next();
+        if (memberTypes != null) {
+            for (QName mName : memberTypes) {
                 SchemaTypeImpl memberImpl = state.findGlobalType(mName, sImpl.getChameleonNamespace(), sImpl.getTargetNamespace());
                 if (memberImpl == null)
-                    // recovery: skip member
+                // recovery: skip member
+                {
                     state.notFoundError(mName, SchemaType.TYPE, parseUnion.xgetMemberTypes(), true);
-                else
+                } else {
                     memberImplList.add(memberImpl);
+                }
             }
         }
 
-        for (int i = 0; i < simpleTypes.length; i++)
-        {
+        for (int i = 0; i < simpleTypes.length; i++) {
             // BUGBUG: see if non<simpleType> children can leak through
             SchemaTypeImpl mImpl = StscTranslator.translateAnonymousSimpleType(simpleTypes[i],
                 sImpl.getTargetNamespace(), sImpl.getChameleonNamespace() != null,
@@ -314,55 +273,44 @@ public class StscSimpleTypeResolver
         }
 
         // Recurse and resolve all member types
-        for (Iterator mImpls = memberImplList.iterator(); mImpls.hasNext(); )
-        {
-            SchemaTypeImpl mImpl = (SchemaTypeImpl)mImpls.next();
-            if (!StscResolver.resolveType(mImpl))
-            {
+        for (Iterator<SchemaTypeImpl> mImpls = memberImplList.iterator(); mImpls.hasNext(); ) {
+            SchemaTypeImpl mImpl = mImpls.next();
+            if (!StscResolver.resolveType(mImpl)) {
                 // KHK: review
                 String memberName = "";
                 XmlObject errorLoc;
-                if (mImpl.getOuterType().equals(sImpl))
-                {
+                if (Objects.equals(mImpl.getOuterType(), sImpl)) {
                     errorLoc = mImpl.getParseObject();
-                }
-                else
-                {
+                } else {
                     memberName = QNameHelper.pretty(mImpl.getName()) + " ";
                     errorLoc = parseUnion.xgetMemberTypes();
                 }
 
-                state.error(XmlErrorCodes.SCHEMA_SIMPLE_TYPE$CYCLIC_UNION, new Object[] { memberName }, errorLoc);
+                state.error(XmlErrorCodes.SCHEMA_SIMPLE_TYPE$CYCLIC_UNION, new Object[]{memberName}, errorLoc);
 
                 // recovery: ignore the errant union member
                 mImpls.remove();
-                continue;
             }
         }
 
         // Now verify members
         boolean isUnionOfLists = false;
 
-        for (Iterator mImpls = memberImplList.iterator(); mImpls.hasNext(); )
-        {
-            SchemaTypeImpl mImpl = (SchemaTypeImpl)mImpls.next();
+        for (Iterator<SchemaTypeImpl> mImpls = memberImplList.iterator(); mImpls.hasNext(); ) {
+            SchemaTypeImpl mImpl = mImpls.next();
 
-            if (!mImpl.isSimpleType())
-            {
+            if (!mImpl.isSimpleType()) {
                 // KHK: review
                 String memberName = "";
                 XmlObject errorLoc;
-                if (mImpl.getOuterType() != null && mImpl.getOuterType().equals(sImpl))
-                {
+                if (mImpl.getOuterType() != null && mImpl.getOuterType().equals(sImpl)) {
                     errorLoc = mImpl.getParseObject();
-                }
-                else
-                {
+                } else {
                     memberName = QNameHelper.pretty(mImpl.getName()) + " ";
                     errorLoc = parseUnion.xgetMemberTypes();
                 }
 
-                state.error(XmlErrorCodes.SIMPLE_TYPE_RESTRICTION$UNION_MEMBER_NOT_SIMPLE, new Object[] { memberName }, errorLoc);
+                state.error(XmlErrorCodes.SIMPLE_TYPE_RESTRICTION$UNION_MEMBER_NOT_SIMPLE, new Object[]{memberName}, errorLoc);
 
                 // recovery: ignore the errant union member
                 mImpls.remove();
@@ -370,16 +318,16 @@ public class StscSimpleTypeResolver
             }
 
             if (mImpl.getSimpleVariety() == SchemaType.LIST ||
-                mImpl.getSimpleVariety() == SchemaType.UNION && mImpl.isUnionOfLists())
+                mImpl.getSimpleVariety() == SchemaType.UNION && mImpl.isUnionOfLists()) {
                 isUnionOfLists = true;
+            }
         }
 
         // Verify any final restrictions
-        for (int i = 0 ; i < memberImplList.size() ; i++)
-        {
-            SchemaTypeImpl mImpl = (SchemaTypeImpl)memberImplList.get(i);
-            if (mImpl.finalUnion())
+        for (SchemaTypeImpl schemaType : memberImplList) {
+            if (schemaType.finalUnion()) {
                 state.error(XmlErrorCodes.SIMPLE_TYPE_PROPERTIES$UNION_FINAL, null, parseUnion);
+            }
         }
 
         sImpl.setUnionOfLists(isUnionOfLists);
@@ -393,14 +341,12 @@ public class StscSimpleTypeResolver
         resolveFundamentalFacets(sImpl);
     }
 
-    static void resolveSimpleRestrictionType(SchemaTypeImpl sImpl, RestrictionDocument.Restriction parseRestr, List anonTypes)
-    {
+    static void resolveSimpleRestrictionType(SchemaTypeImpl sImpl, RestrictionDocument.Restriction parseRestr, List<SchemaType> anonTypes) {
         QName baseName = parseRestr.getBase();
         SimpleType parseInner = parseRestr.getSimpleType();
         StscState state = StscState.get();
 
-        if (baseName != null && parseInner != null)
-        {
+        if (baseName != null && parseInner != null) {
             state.error(XmlErrorCodes.SCHEMA_SIMPLE_TYPE$RESTRICTION_HAS_BOTH_BASE_OR_SIMPLE_TYPE, null, parseRestr);
             // recovery: ignore the inner simple type.
             parseInner = null;
@@ -408,68 +354,56 @@ public class StscSimpleTypeResolver
 
         SchemaTypeImpl baseImpl;
 
-        if (baseName != null)
-        {
-            if (sImpl.isRedefinition())
-            {
+        if (baseName != null) {
+            if (sImpl.isRedefinition()) {
                 baseImpl = state.findRedefinedGlobalType(parseRestr.getBase(), sImpl.getChameleonNamespace(), sImpl);
-                if (baseImpl != null && !baseImpl.getName().equals(sImpl.getName()))
-                {
+                if (baseImpl != null && !baseImpl.getName().equals(sImpl.getName())) {
                     state.error(XmlErrorCodes.SCHEMA_REDEFINE$SAME_TYPE,
-                        new Object[] { "<simpleType>",
-                                       QNameHelper.pretty(baseName), 
-                                       QNameHelper.pretty(sImpl.getName())
+                        new Object[]{"<simpleType>",
+                            QNameHelper.pretty(baseName),
+                            QNameHelper.pretty(sImpl.getName())
                         },
                         parseRestr);
                 }
-            }
-            else
-            {
+            } else {
                 baseImpl = state.findGlobalType(baseName, sImpl.getChameleonNamespace(), sImpl.getTargetNamespace());
             }
-            if (baseImpl == null)
-            {
+            if (baseImpl == null) {
                 state.notFoundError(baseName, SchemaType.TYPE, parseRestr.xgetBase(), true);
                 // recovery: treat it as an extension of anySimpleType
                 baseImpl = BuiltinSchemaTypeSystem.ST_ANY_SIMPLE;
             }
-        }
-        else if (parseInner != null)
-        {
-            if (sImpl.isRedefinition())
-            {
+        } else if (parseInner != null) {
+            if (sImpl.isRedefinition()) {
                 StscState.get().error(XmlErrorCodes.SCHEMA_REDEFINE$EXTEND_OR_RESTRICT,
-                    new Object[] { "<simpleType>" }, parseInner);
+                    new Object[]{"<simpleType>"}, parseInner);
                 // recovery: oh well.
             }
-            
+
             baseImpl = StscTranslator.translateAnonymousSimpleType(parseInner,
                 sImpl.getTargetNamespace(), sImpl.getChameleonNamespace() != null,
                 sImpl.getElemFormDefault(), sImpl.getAttFormDefault(), anonTypes, sImpl);
-        }
-        else
-        {
+        } else {
             state.error(XmlErrorCodes.SCHEMA_SIMPLE_TYPE$RESTRICTION_HAS_NEITHER_BASE_OR_SIMPLE_TYPE, null, parseRestr);
             // recovery: treat it as an extension of anySimpleType
             baseImpl = BuiltinSchemaTypeSystem.ST_ANY_SIMPLE;
         }
 
         // Recursion!
-        if (!StscResolver.resolveType(baseImpl))
-        {
+        if (!StscResolver.resolveType(baseImpl)) {
             // cyclic dependency recovery: treat it as an extension of anySimpleType
             baseImpl = BuiltinSchemaTypeSystem.ST_ANY_SIMPLE;
         }
 
-        if (baseImpl.finalRestriction())
+        if (baseImpl.finalRestriction()) {
             state.error(XmlErrorCodes.SIMPLE_TYPE_PROPERTIES$RESTRICTION_FINAL, null, parseRestr);
+        }
 
         sImpl.setBaseTypeRef(baseImpl.getRef());
         sImpl.setBaseDepth(baseImpl.getBaseDepth() + 1);
         sImpl.setDerivationType(SchemaType.DT_RESTRICTION);
 
-        if (!baseImpl.isSimpleType())
-        {
+        if (!baseImpl.isSimpleType()) {
             state.error(XmlErrorCodes.SIMPLE_TYPE_RESTRICTION$ATOMIC_NOT_SIMPLE, null, parseRestr.xgetBase());
             // recovery: treat it as a restriction of anySimpleType
             resolveErrorSimpleType(sImpl);
@@ -479,8 +413,7 @@ public class StscSimpleTypeResolver
         sImpl.setSimpleTypeVariety(baseImpl.getSimpleVariety());
 
         // copy variety-specific properties
-        switch (baseImpl.getSimpleVariety())
-        {
+        switch (baseImpl.getSimpleVariety()) {
             case SchemaType.ATOMIC:
                 sImpl.setPrimitiveTypeRef(baseImpl.getPrimitiveType().getRef());
                 break;
@@ -500,38 +433,36 @@ public class StscSimpleTypeResolver
         resolveFundamentalFacets(sImpl);
     }
 
-    static int translateWhitespaceCode(XmlAnySimpleType value)
-    {
+    static int translateWhitespaceCode(XmlAnySimpleType value) {
         // BUGBUG: add whitespace rule to textvalue.
         String textval = value.getStringValue();
 
-        if (textval.equals("collapse"))
+        if (textval.equals("collapse")) {
             return SchemaType.WS_COLLAPSE;
+        }
 
-        if (textval.equals("preserve"))
+        if (textval.equals("preserve")) {
             return SchemaType.WS_PRESERVE;
+        }
 
-        if (textval.equals("replace"))
+        if (textval.equals("replace")) {
             return SchemaType.WS_REPLACE;
+        }
 
         // KHK: s4s
         StscState.get().error("Unrecognized whitespace value \"" + textval + "\"", XmlErrorCodes.FACET_VALUE_MALFORMED, value);
         return SchemaType.WS_UNSPECIFIED;
     }
 
-    static boolean isMultipleFacet(int facetcode)
-    {
+    static boolean isMultipleFacet(int facetcode) {
         return (facetcode == SchemaType.FACET_ENUMERATION ||
                 facetcode == SchemaType.FACET_PATTERN);
     }
 
-    static boolean facetAppliesToType(int facetCode, SchemaTypeImpl baseImpl)
-    {
-        switch (baseImpl.getSimpleVariety())
-        {
+    static boolean facetAppliesToType(int facetCode, SchemaTypeImpl baseImpl) {
+        switch (baseImpl.getSimpleVariety()) {
             case SchemaType.LIST:
-                switch (facetCode)
-                {
+                switch (facetCode) {
                     case SchemaType.FACET_LENGTH:
                     case SchemaType.FACET_MIN_LENGTH:
                     case SchemaType.FACET_MAX_LENGTH:
@@ -543,8 +474,7 @@ public class StscSimpleTypeResolver
                 return false;
 
             case SchemaType.UNION:
-                switch (facetCode)
-                {
+                switch (facetCode) {
                     case SchemaType.FACET_ENUMERATION:
                     case SchemaType.FACET_PATTERN:
                         return true;
@@ -554,14 +484,12 @@ public class StscSimpleTypeResolver
 
         // the atomic case
 
-        switch (baseImpl.getPrimitiveType().getBuiltinTypeCode())
-        {
+        switch (baseImpl.getPrimitiveType().getBuiltinTypeCode()) {
             case SchemaType.BTC_ANY_SIMPLE:
                 return false;
 
             case SchemaType.BTC_BOOLEAN:
-                switch (facetCode)
-                {
+                switch (facetCode) {
                     case SchemaType.FACET_PATTERN:
                     case SchemaType.FACET_WHITE_SPACE:
                         return true;
@@ -579,8 +507,7 @@ public class StscSimpleTypeResolver
             case SchemaType.BTC_G_MONTH_DAY:
             case SchemaType.BTC_G_DAY:
             case SchemaType.BTC_G_MONTH:
-                switch (facetCode)
-                {
+                switch (facetCode) {
                     case SchemaType.FACET_MIN_EXCLUSIVE:
                     case SchemaType.FACET_MIN_INCLUSIVE:
                     case SchemaType.FACET_MAX_INCLUSIVE:
@@ -593,8 +520,7 @@ public class StscSimpleTypeResolver
                 return false;
 
             case SchemaType.BTC_DECIMAL:
-                switch (facetCode)
-                {
+                switch (facetCode) {
                     case SchemaType.FACET_MIN_EXCLUSIVE:
                     case SchemaType.FACET_MIN_INCLUSIVE:
                     case SchemaType.FACET_MAX_INCLUSIVE:
@@ -614,8 +540,7 @@ public class StscSimpleTypeResolver
             case SchemaType.BTC_QNAME:
             case SchemaType.BTC_NOTATION:
             case SchemaType.BTC_STRING:
-                switch (facetCode)
-                {
+                switch (facetCode) {
                     case SchemaType.FACET_LENGTH:
                     case SchemaType.FACET_MIN_LENGTH:
                     case SchemaType.FACET_MAX_LENGTH:
@@ -627,15 +552,13 @@ public class StscSimpleTypeResolver
                 return false;
 
             default:
-                assert(false);
+                assert (false);
                 return false;
         }
     }
 
-    private static int other_similar_limit(int facetcode)
-    {
-        switch (facetcode)
-        {
+    private static int other_similar_limit(int facetcode) {
+        switch (facetcode) {
             case SchemaType.FACET_MIN_EXCLUSIVE:
                 return SchemaType.FACET_MIN_INCLUSIVE;
             case SchemaType.FACET_MIN_INCLUSIVE:
@@ -645,58 +568,51 @@ public class StscSimpleTypeResolver
             case SchemaType.FACET_MAX_EXCLUSIVE:
                 return SchemaType.FACET_MAX_INCLUSIVE;
             default:
-                assert(false);
+                assert (false);
                 throw new IllegalStateException();
         }
     }
 
-    static void resolveFacets(SchemaTypeImpl sImpl, XmlObject restriction, SchemaTypeImpl baseImpl)
-    {
+    static void resolveFacets(SchemaTypeImpl sImpl, XmlObject restriction, SchemaTypeImpl baseImpl) {
         StscState state = StscState.get();
 
         boolean[] seenFacet = new boolean[SchemaType.LAST_FACET + 1];
         XmlAnySimpleType[] myFacets = baseImpl.getBasicFacets(); // makes a copy
         boolean[] fixedFacets = baseImpl.getFixedFacets();
         int wsr = SchemaType.WS_UNSPECIFIED;
-        List enumeratedValues = null;
-        List patterns = null;
+        List<XmlAnySimpleType> enumeratedValues = null;
+        List<RegularExpression> patterns = null;
 
-        if (restriction != null)
-        {
+        if (restriction != null) {
             XmlCursor cur = restriction.newCursor();
-            for (boolean more = cur.toFirstChild(); more; more = cur.toNextSibling())
-            {
+            for (boolean more = cur.toFirstChild(); more; more = cur.toNextSibling()) {
                 QName facetQName = cur.getName();
                 String facetName = facetQName.getLocalPart();
                 int code = translateFacetCode(facetQName);
-                if (code == -1)
+                if (code == -1) {
                     continue;
+                }
 
-                Facet facet = (Facet)cur.getObject();
+                Facet facet = (Facet) cur.getObject();
 
-                if (!facetAppliesToType(code, baseImpl))
-                {
+                if (!facetAppliesToType(code, baseImpl)) {
                     state.error(XmlErrorCodes.FACETS_APPLICABLE,
-                        new Object[] { facetName, QNameHelper.pretty(baseImpl.getName()) }, facet);
+                        new Object[]{facetName, QNameHelper.pretty(baseImpl.getName())}, facet);
                     continue;
-                }
-                else if (baseImpl.getSimpleVariety() == SchemaType.ATOMIC &&
-                    baseImpl.getPrimitiveType().getBuiltinTypeCode() == SchemaType.BTC_NOTATION
-                    && (code == SchemaType.FACET_LENGTH || code == SchemaType.FACET_MIN_LENGTH ||
-                    code == SchemaType.FACET_MAX_LENGTH))
-                {
+                } else if (baseImpl.getSimpleVariety() == SchemaType.ATOMIC &&
+                           baseImpl.getPrimitiveType().getBuiltinTypeCode() == SchemaType.BTC_NOTATION
+                           && (code == SchemaType.FACET_LENGTH || code == SchemaType.FACET_MIN_LENGTH ||
+                               code == SchemaType.FACET_MAX_LENGTH)) {
                     state.warning(XmlErrorCodes.FACETS_DEPRECATED_NOTATION,
-                        new Object[] {facetName, QNameHelper.pretty(baseImpl.getName()) }, facet);
+                        new Object[]{facetName, QNameHelper.pretty(baseImpl.getName())}, facet);
                 }
-                if (seenFacet[code] && !isMultipleFacet(code))
-                {
+                if (seenFacet[code] && !isMultipleFacet(code)) {
                     state.error(XmlErrorCodes.DATATYPE_SINGLE_FACET_VALUE, null, facet);
                     continue;
                 }
                 seenFacet[code] = true;
 
-                switch (code)
-                {
+                switch (code) {
                     case SchemaType.FACET_LENGTH:
 //                        if (myFacets[SchemaType.FACET_MIN_LENGTH] != null ||
 //                            myFacets[SchemaType.FACET_MAX_LENGTH] != null)
@@ -705,38 +621,32 @@ public class StscSimpleTypeResolver
 //                            continue;
 //                        }
                         XmlInteger len = StscTranslator.buildNnInteger(facet.getValue());
-                        if (len == null)
-                        {
+                        if (len == null) {
                             state.error("Must be a nonnegative integer", XmlErrorCodes.FACET_VALUE_MALFORMED, facet);
                             continue;
                         }
-                        if (fixedFacets[code] && !myFacets[code].valueEquals(len))
-                        {
-                            state.error(XmlErrorCodes.FACET_FIXED, new Object[] { facetName }, facet);
+                        if (fixedFacets[code] && !myFacets[code].valueEquals(len)) {
+                            state.error(XmlErrorCodes.FACET_FIXED, new Object[]{facetName}, facet);
                             continue;
                         }
-                        if (myFacets[SchemaType.FACET_MIN_LENGTH] != null)
-                        {
+                        if (myFacets[SchemaType.FACET_MIN_LENGTH] != null) {
                             // An error for 'length' and 'minLength' to be specified at the same time
                             // except if the base type had the same value for 'minLength' also
                             XmlAnySimpleType baseMinLength = baseImpl.getFacet(SchemaType.FACET_MIN_LENGTH);
                             if (!(baseMinLength != null &&
-                                baseMinLength.valueEquals(myFacets[SchemaType.FACET_MIN_LENGTH]) &&
-                                baseMinLength.compareValue(len) <= 0))
-                            {
+                                  baseMinLength.valueEquals(myFacets[SchemaType.FACET_MIN_LENGTH]) &&
+                                  baseMinLength.compareValue(len) <= 0)) {
                                 state.error(XmlErrorCodes.DATATYPE_LENGTH, null, facet);
                                 continue;
                             }
                         }
-                        if (myFacets[SchemaType.FACET_MAX_LENGTH] != null)
-                        {
+                        if (myFacets[SchemaType.FACET_MAX_LENGTH] != null) {
                             // An error for 'length' and 'maxLength' to be specified at the same time
                             // except if the base type had the same value for 'maxLength' also
                             XmlAnySimpleType baseMaxLength = baseImpl.getFacet(SchemaType.FACET_MAX_LENGTH);
                             if (!(baseMaxLength != null &&
-                                baseMaxLength.valueEquals(myFacets[SchemaType.FACET_MAX_LENGTH]) &&
-                                baseMaxLength.compareValue(len) >= 0))
-                            {
+                                  baseMaxLength.valueEquals(myFacets[SchemaType.FACET_MAX_LENGTH]) &&
+                                  baseMaxLength.compareValue(len) >= 0)) {
                                 state.error(XmlErrorCodes.DATATYPE_LENGTH, null, facet);
                                 continue;
                             }
@@ -747,45 +657,37 @@ public class StscSimpleTypeResolver
                     case SchemaType.FACET_MIN_LENGTH:
                     case SchemaType.FACET_MAX_LENGTH:
                         XmlInteger mlen = StscTranslator.buildNnInteger(facet.getValue());
-                        if (mlen == null)
-                        {
+                        if (mlen == null) {
                             state.error("Must be a nonnegative integer", XmlErrorCodes.FACET_VALUE_MALFORMED, facet);
                             continue;
                         }
-                        if (fixedFacets[code] && !myFacets[code].valueEquals(mlen))
-                        {
-                            state.error(XmlErrorCodes.FACET_FIXED, new Object[] { facetName }, facet);
+                        if (fixedFacets[code] && !myFacets[code].valueEquals(mlen)) {
+                            state.error(XmlErrorCodes.FACET_FIXED, new Object[]{facetName}, facet);
                             continue;
                         }
-                        if (myFacets[SchemaType.FACET_LENGTH] != null)
-                        {
+                        if (myFacets[SchemaType.FACET_LENGTH] != null) {
                             // It's an error for 'length' and 'minLength'/'maxLength' to be
                             // specified at the same time, except for the case when
                             // the base type had the same value for 'minLength'/'maxLength'
                             // and the two values are consistent
                             XmlAnySimpleType baseMinMaxLength = baseImpl.getFacet(code);
                             if (!(baseMinMaxLength != null &&
-                                baseMinMaxLength.valueEquals(mlen) &&
-                                (code == SchemaType.FACET_MIN_LENGTH ?
-                                    baseMinMaxLength.compareTo(myFacets[SchemaType.FACET_LENGTH]) <= 0 :
-                                    baseMinMaxLength.compareTo(myFacets[SchemaType.FACET_LENGTH]) >= 0)))
-                            {
+                                  baseMinMaxLength.valueEquals(mlen) &&
+                                  (code == SchemaType.FACET_MIN_LENGTH ?
+                                      baseMinMaxLength.compareTo(myFacets[SchemaType.FACET_LENGTH]) <= 0 :
+                                      baseMinMaxLength.compareTo(myFacets[SchemaType.FACET_LENGTH]) >= 0))) {
                                 state.error(XmlErrorCodes.DATATYPE_LENGTH, null, facet);
                                 continue;
                             }
                         }
-                        if (myFacets[SchemaType.FACET_MAX_LENGTH] != null)
-                        {
-                            if (mlen.compareValue(myFacets[SchemaType.FACET_MAX_LENGTH]) > 0)
-                            {
+                        if (myFacets[SchemaType.FACET_MAX_LENGTH] != null) {
+                            if (mlen.compareValue(myFacets[SchemaType.FACET_MAX_LENGTH]) > 0) {
                                 state.error(XmlErrorCodes.DATATYPE_MAX_LENGTH_RESTRICTION, null, facet);
                                 continue;
                             }
                         }
-                        if (myFacets[SchemaType.FACET_MIN_LENGTH] != null)
-                        {
-                            if (mlen.compareValue(myFacets[SchemaType.FACET_MIN_LENGTH]) < 0)
-                            {
+                        if (myFacets[SchemaType.FACET_MIN_LENGTH] != null) {
+                            if (mlen.compareValue(myFacets[SchemaType.FACET_MIN_LENGTH]) < 0) {
                                 state.error(XmlErrorCodes.DATATYPE_MIN_LENGTH_RESTRICTION, null, facet);
                                 continue;
                             }
@@ -795,45 +697,41 @@ public class StscSimpleTypeResolver
 
                     case SchemaType.FACET_TOTAL_DIGITS:
                         XmlPositiveInteger dig = StscTranslator.buildPosInteger(facet.getValue());
-                        if (dig == null)
-                        {
+                        if (dig == null) {
                             state.error("Must be a positive integer", XmlErrorCodes.FACET_VALUE_MALFORMED, facet);
                             break;
                         }
-                        if (fixedFacets[code] && !myFacets[code].valueEquals(dig))
-                        {
-                            state.error(XmlErrorCodes.FACET_FIXED, new Object[] { facetName }, facet);
+                        if (fixedFacets[code] && !myFacets[code].valueEquals(dig)) {
+                            state.error(XmlErrorCodes.FACET_FIXED, new Object[]{facetName}, facet);
                             continue;
                         }
-                        if (myFacets[SchemaType.FACET_TOTAL_DIGITS] != null)
-                        {
-                            if (dig.compareValue(myFacets[SchemaType.FACET_TOTAL_DIGITS]) > 0)
+                        if (myFacets[SchemaType.FACET_TOTAL_DIGITS] != null) {
+                            if (dig.compareValue(myFacets[SchemaType.FACET_TOTAL_DIGITS]) > 0) {
                                 state.error(XmlErrorCodes.DATATYPE_TOTAL_DIGITS_RESTRICTION, null, facet);
+                            }
                         }
                         myFacets[code] = dig;
                         break;
 
                     case SchemaType.FACET_FRACTION_DIGITS:
                         XmlNonNegativeInteger fdig = StscTranslator.buildNnInteger(facet.getValue());
-                        if (fdig == null)
-                        {
+                        if (fdig == null) {
                             state.error("Must be a nonnegative integer", XmlErrorCodes.FACET_VALUE_MALFORMED, facet);
                             break;
                         }
-                        if (fixedFacets[code] && !myFacets[code].valueEquals(fdig))
-                        {
-                            state.error(XmlErrorCodes.FACET_FIXED, new Object[] { facetName }, facet);
+                        if (fixedFacets[code] && !myFacets[code].valueEquals(fdig)) {
+                            state.error(XmlErrorCodes.FACET_FIXED, new Object[]{facetName}, facet);
                             continue;
                         }
-                        if (myFacets[SchemaType.FACET_FRACTION_DIGITS] != null)
-                        {
-                            if (fdig.compareValue(myFacets[SchemaType.FACET_FRACTION_DIGITS]) > 0)
+                        if (myFacets[SchemaType.FACET_FRACTION_DIGITS] != null) {
+                            if (fdig.compareValue(myFacets[SchemaType.FACET_FRACTION_DIGITS]) > 0) {
                                 state.error(XmlErrorCodes.DATATYPE_FRACTION_DIGITS_RESTRICTION, null, facet);
+                            }
                         }
-                        if (myFacets[SchemaType.FACET_TOTAL_DIGITS] != null)
-                        {
-                            if (fdig.compareValue(myFacets[SchemaType.FACET_TOTAL_DIGITS]) > 0)
+                        if (myFacets[SchemaType.FACET_TOTAL_DIGITS] != null) {
+                            if (fdig.compareValue(myFacets[SchemaType.FACET_TOTAL_DIGITS]) > 0) {
                                 state.error(XmlErrorCodes.DATATYPE_FRACTION_DIGITS_LE_TOTAL_DIGITS, null, facet);
+                            }
                         }
                         myFacets[code] = fdig;
                         break;
@@ -843,8 +741,7 @@ public class StscSimpleTypeResolver
                     case SchemaType.FACET_MAX_INCLUSIVE:
                     case SchemaType.FACET_MAX_EXCLUSIVE:
 
-                        if (seenFacet[other_similar_limit(code)])
-                        {
+                        if (seenFacet[other_similar_limit(code)]) {
                             state.error("Cannot define both inclusive and exclusive limit in the same restriciton", XmlErrorCodes.FACET_DUPLICATED, facet);
                             continue;
                         }
@@ -852,57 +749,49 @@ public class StscSimpleTypeResolver
                         boolean isexclusive = (code == SchemaType.FACET_MIN_EXCLUSIVE || code == SchemaType.FACET_MAX_EXCLUSIVE);
 
                         XmlAnySimpleType limit;
-                        try
-                        {
+                        try {
                             limit = baseImpl.newValue(facet.getValue(), true);
-                        }
-                        catch (XmlValueOutOfRangeException e)
-                        {
+                        } catch (XmlValueOutOfRangeException e) {
                             // note: this guarantees that the limit is a valid number in the
                             // base data type!!
-                            switch (code)
-                            {
-                            case SchemaType.FACET_MIN_EXCLUSIVE:
-                                state.error(XmlErrorCodes.DATATYPE_MIN_EXCLUSIVE_RESTRICTION,
-                                    new Object[] {e.getMessage()}, facet);
-                                break;
-                            case SchemaType.FACET_MIN_INCLUSIVE:
-                                state.error(XmlErrorCodes.DATATYPE_MIN_INCLUSIVE_RESTRICTION,
-                                    new Object[] {e.getMessage()}, facet);
-                                break;
-                            case SchemaType.FACET_MAX_INCLUSIVE:
-                                state.error(XmlErrorCodes.DATATYPE_MAX_INCLUSIVE_RESTRICTION,
-                                    new Object[] {e.getMessage()}, facet);
-                                break;
-                            case SchemaType.FACET_MAX_EXCLUSIVE:
-                                state.error(XmlErrorCodes.DATATYPE_MAX_EXCLUSIVE_RESTRICTION,
-                                    new Object[] {e.getMessage()}, facet);
-                                break;
+                            switch (code) {
+                                case SchemaType.FACET_MIN_EXCLUSIVE:
+                                    state.error(XmlErrorCodes.DATATYPE_MIN_EXCLUSIVE_RESTRICTION,
+                                        new Object[]{e.getMessage()}, facet);
+                                    break;
+                                case SchemaType.FACET_MIN_INCLUSIVE:
+                                    state.error(XmlErrorCodes.DATATYPE_MIN_INCLUSIVE_RESTRICTION,
+                                        new Object[]{e.getMessage()}, facet);
+                                    break;
+                                case SchemaType.FACET_MAX_INCLUSIVE:
+                                    state.error(XmlErrorCodes.DATATYPE_MAX_INCLUSIVE_RESTRICTION,
+                                        new Object[]{e.getMessage()}, facet);
+                                    break;
+                                case SchemaType.FACET_MAX_EXCLUSIVE:
+                                    state.error(XmlErrorCodes.DATATYPE_MAX_EXCLUSIVE_RESTRICTION,
+                                        new Object[]{e.getMessage()}, facet);
+                                    break;
                             }
 
                             // BUGBUG: if there are actual schemas that redefine min/maxExclusive,
                             // they will need this rule relaxed for them!!
                             continue;
                         }
-                        if (fixedFacets[code] && !myFacets[code].valueEquals(limit))
-                        {
-                            state.error(XmlErrorCodes.FACET_FIXED, new Object[] { facetName }, facet);
+                        if (fixedFacets[code] && !myFacets[code].valueEquals(limit)) {
+                            state.error(XmlErrorCodes.FACET_FIXED, new Object[]{facetName}, facet);
                             continue;
                         }
-                        if (myFacets[code] != null)
-                        {
+                        if (myFacets[code] != null) {
                             SchemaType limitSType = limit.schemaType();
-                            if ( limitSType!=null && !limitSType.isSimpleType() &&
-                                    limitSType.getContentType()==SchemaType.SIMPLE_CONTENT)
-                            {
+                            if (limitSType != null && !limitSType.isSimpleType() &&
+                                limitSType.getContentType() == SchemaType.SIMPLE_CONTENT) {
                                 // in the case of complex types with simple content that has facets
                                 // we need to compare values based on the content type
                                 limit = baseImpl.getContentBasedOnType().newValue(facet.getValue());
                             }
 
                             int comparison = limit.compareValue(myFacets[code]);
-                            if (comparison == 2 || comparison == (ismin ? -1 : 1))
-                            {
+                            if (comparison == 2 || comparison == (ismin ? -1 : 1)) {
                                 state.error(ismin ?
                                         (isexclusive ?
                                             "Must be greater than or equal to previous minExclusive" :
@@ -910,7 +799,7 @@ public class StscSimpleTypeResolver
                                         (isexclusive ?
                                             "Must be less than or equal to previous maxExclusive" :
                                             "Must be less than or equal to previous maxInclusive"),
-                                        XmlErrorCodes.FACET_VALUE_MALFORMED, facet);
+                                    XmlErrorCodes.FACET_VALUE_MALFORMED, facet);
                                 continue;
                             }
                         }
@@ -920,8 +809,7 @@ public class StscSimpleTypeResolver
 
                     case SchemaType.FACET_WHITE_SPACE:
                         wsr = translateWhitespaceCode(facet.getValue());
-                        if (baseImpl.getWhiteSpaceRule() > wsr)
-                        {
+                        if (baseImpl.getWhiteSpaceRule() > wsr) {
                             wsr = SchemaType.WS_UNSPECIFIED;
                             state.error(XmlErrorCodes.DATATYPE_WHITESPACE_RESTRICTION, null, facet);
                             continue;
@@ -930,39 +818,39 @@ public class StscSimpleTypeResolver
                         break;
 
                     case SchemaType.FACET_ENUMERATION:
-                        XmlObject enumval;
-                        try
-                        {
+                        XmlAnySimpleType enumval;
+                        try {
                             enumval = baseImpl.newValue(facet.getValue(), true);
                             // enumval.set(facet.getValue());
                             // ((XmlObjectBase)enumval).setImmutable();
-                        }
-                        catch (XmlValueOutOfRangeException e)
-                        {
-                            state.error(XmlErrorCodes.DATATYPE_ENUM_RESTRICTION, new Object[] { facet.getValue().getStringValue(), e.getMessage() }, facet);
+                        } catch (XmlValueOutOfRangeException e) {
+                            state.error(XmlErrorCodes.DATATYPE_ENUM_RESTRICTION, new Object[]{facet.getValue().getStringValue(), e.getMessage()}, facet);
                             continue;
                         }
-                        if (enumeratedValues == null)
-                            enumeratedValues = new ArrayList();
+                        if (enumeratedValues == null) {
+                            enumeratedValues = new ArrayList<>();
+                        }
                         enumeratedValues.add(enumval);
                         break;
 
                     case SchemaType.FACET_PATTERN:
                         RegularExpression p;
-                        try { p = new RegularExpression(facet.getValue().getStringValue(), "X"); }
-                        catch (ParseException e)
-                        {
-                            state.error(XmlErrorCodes.PATTERN_REGEX, new Object[] { facet.getValue().getStringValue(), e.getMessage() }, facet);
+                        try {
+                            p = new RegularExpression(facet.getValue().getStringValue(), "X");
+                        } catch (ParseException e) {
+                            state.error(XmlErrorCodes.PATTERN_REGEX, new Object[]{facet.getValue().getStringValue(), e.getMessage()}, facet);
                             continue;
                         }
-                        if (patterns == null)
-                            patterns = new ArrayList();
+                        if (patterns == null) {
+                            patterns = new ArrayList<>();
+                        }
                         patterns.add(p);
                         break;
                 }
 
-                if (facet.getFixed())
+                if (facet.getFixed()) {
                     fixedFacets[code] = true;
+                }
             }
         }
 
@@ -971,65 +859,59 @@ public class StscSimpleTypeResolver
         sImpl.setBasicFacets(makeValueRefArray(myFacets), fixedFacets);
 
         // Update the numeric whitespace rule
-        if (wsr == SchemaType.WS_UNSPECIFIED)
+        if (wsr == SchemaType.WS_UNSPECIFIED) {
             wsr = baseImpl.getWhiteSpaceRule();
+        }
         sImpl.setWhiteSpaceRule(wsr);
 
         // store away the enumerated values
-        if (enumeratedValues != null)
-        {
-            sImpl.setEnumerationValues(makeValueRefArray((XmlAnySimpleType[])
-                enumeratedValues.toArray(new XmlAnySimpleType[enumeratedValues.size()])));
+        if (enumeratedValues != null) {
+            sImpl.setEnumerationValues(makeValueRefArray(enumeratedValues.toArray(new XmlAnySimpleType[0])));
 
             SchemaType beType = sImpl;
-            if ( ((SchemaTypeImpl)sImpl).isRedefinition() ){
+            if (sImpl.isRedefinition()) {
                 beType = sImpl.getBaseType().getBaseEnumType();
-                if( beType == null || sImpl.getBaseType() == beType ){
+                if (beType == null || sImpl.getBaseType() == beType) {
                     beType = sImpl;
                 }
-            }
-            else if (sImpl.getBaseType().getBaseEnumType() != null)
+            } else if (sImpl.getBaseType().getBaseEnumType() != null) {
                 beType = sImpl.getBaseType().getBaseEnumType();
+            }
             sImpl.setBaseEnumTypeRef(beType.getRef());
-        }
-        else
-        {
+        } else {
             sImpl.copyEnumerationValues(baseImpl);
         }
 
         // store the pattern list
-        org.apache.xmlbeans.impl.regex.RegularExpression[] patternArray;
-        if (patterns != null)
-            patternArray = (org.apache.xmlbeans.impl.regex.RegularExpression[])patterns.toArray(EMPTY_REGEX_ARRAY);
-        else
-            patternArray = EMPTY_REGEX_ARRAY;
+        RegularExpression[] patternArray = patterns != null ? patterns.toArray(EMPTY_REGEX_ARRAY) : EMPTY_REGEX_ARRAY;
         sImpl.setPatternFacet((patternArray.length > 0 || baseImpl.hasPatternFacet()));
         sImpl.setPatterns(patternArray);
 
         // Check that, if the base type is NOTATION, there is an enumeration facet
         // http://www.w3.org/TR/xmlschema-2/#NOTATION
-        if (baseImpl.getBuiltinTypeCode() == SchemaType.BTC_NOTATION)
-            if (sImpl.getEnumerationValues() == null)
+        if (baseImpl.getBuiltinTypeCode() == SchemaType.BTC_NOTATION) {
+            if (sImpl.getEnumerationValues() == null) {
                 state.recover(XmlErrorCodes.DATATYPE_ENUM_NOTATION, null, restriction);
+            }
+        }
     }
 
-    private static XmlValueRef[] makeValueRefArray(XmlAnySimpleType[] source)
-    {
+    private static XmlValueRef[] makeValueRefArray(XmlAnySimpleType[] source) {
         XmlValueRef[] result = new XmlValueRef[source.length];
-        for (int i = 0; i < result.length; i++)
+        for (int i = 0; i < result.length; i++) {
             result[i] = (source[i] == null ? null : new XmlValueRef(source[i]));
+        }
         return result;
     }
 
-    private static final org.apache.xmlbeans.impl.regex.RegularExpression[] EMPTY_REGEX_ARRAY = new org.apache.xmlbeans.impl.regex.RegularExpression[0];
+    private static final RegularExpression[] EMPTY_REGEX_ARRAY = new RegularExpression[0];
 
-    private static boolean isDiscreteType(SchemaTypeImpl sImpl)
-    {
-        if (sImpl.getFacet(SchemaType.FACET_FRACTION_DIGITS) != null)
+    private static boolean isDiscreteType(SchemaTypeImpl sImpl) {
+        if (sImpl.getFacet(SchemaType.FACET_FRACTION_DIGITS) != null) {
             return true;
+        }
         // BUGBUG: spec is silent on enumerations; they're finite too.
-        switch (sImpl.getPrimitiveType().getBuiltinTypeCode())
-        {
+        switch (sImpl.getPrimitiveType().getBuiltinTypeCode()) {
             case SchemaType.BTC_DATE:
             case SchemaType.BTC_G_YEAR_MONTH:
             case SchemaType.BTC_G_YEAR:
@@ -1042,10 +924,8 @@ public class StscSimpleTypeResolver
         return false;
     }
 
-    private static boolean isNumericPrimitive(SchemaType sImpl)
-    {
-        switch (sImpl.getBuiltinTypeCode())
-        {
+    private static boolean isNumericPrimitive(SchemaType sImpl) {
+        switch (sImpl.getBuiltinTypeCode()) {
             case SchemaType.BTC_DECIMAL:
             case SchemaType.BTC_FLOAT:
             case SchemaType.BTC_DOUBLE:
@@ -1054,106 +934,125 @@ public class StscSimpleTypeResolver
         return false;
     }
 
-    private static int decimalSizeOfType(SchemaTypeImpl sImpl)
-    {
+    private static int decimalSizeOfType(SchemaTypeImpl sImpl) {
         int size = mathematicalSizeOfType(sImpl);
-        
+
         // byte and short are inconvenient, because setByte((byte)4) requires a cast.
         // So use "int" unless you're really a xs:byte, xs:short, or an xs:unsignedByte
         // (the last case is included for alignment with JAXB)
-        
-        if (size == SchemaType.SIZE_BYTE && !XmlByte.type.isAssignableFrom(sImpl))
+
+        if (size == SchemaType.SIZE_BYTE && !XmlByte.type.isAssignableFrom(sImpl)) {
             size = SchemaType.SIZE_SHORT;
-        if (size == SchemaType.SIZE_SHORT && !XmlShort.type.isAssignableFrom(sImpl) && !XmlUnsignedByte.type.isAssignableFrom(sImpl))
+        }
+        if (size == SchemaType.SIZE_SHORT && !XmlShort.type.isAssignableFrom(sImpl) && !XmlUnsignedByte.type.isAssignableFrom(sImpl)) {
             size = SchemaType.SIZE_INT;
-        
+        }
+
         return size;
     }
-    
-    private static int mathematicalSizeOfType(SchemaTypeImpl sImpl)
-    {
-        if (sImpl.getPrimitiveType().getBuiltinTypeCode() != SchemaType.BTC_DECIMAL)
+
+    private static int mathematicalSizeOfType(SchemaTypeImpl sImpl) {
+        if (sImpl.getPrimitiveType().getBuiltinTypeCode() != SchemaType.BTC_DECIMAL) {
             return SchemaType.NOT_DECIMAL;
+        }
 
         if (sImpl.getFacet(SchemaType.FACET_FRACTION_DIGITS) == null ||
-            ((SimpleValue)sImpl.getFacet(SchemaType.FACET_FRACTION_DIGITS)).getBigIntegerValue().signum() != 0)
+            ((SimpleValue) sImpl.getFacet(SchemaType.FACET_FRACTION_DIGITS)).getBigIntegerValue().signum() != 0) {
             return SchemaType.SIZE_BIG_DECIMAL;
+        }
 
         BigInteger min = null;
         BigInteger max = null;
 
-        if (sImpl.getFacet(SchemaType.FACET_MIN_EXCLUSIVE) != null)
-            min = ((SimpleValue)sImpl.getFacet(SchemaType.FACET_MIN_EXCLUSIVE)).getBigIntegerValue(); // .add(BigInteger.ONE);
-        if (sImpl.getFacet(SchemaType.FACET_MIN_INCLUSIVE) != null)
-            min = ((SimpleValue)sImpl.getFacet(SchemaType.FACET_MIN_INCLUSIVE)).getBigIntegerValue();
-        if (sImpl.getFacet(SchemaType.FACET_MAX_INCLUSIVE) != null)
-            max = ((SimpleValue)sImpl.getFacet(SchemaType.FACET_MAX_INCLUSIVE)).getBigIntegerValue();
-        if (sImpl.getFacet(SchemaType.FACET_MAX_EXCLUSIVE) != null)
-            max = ((SimpleValue)sImpl.getFacet(SchemaType.FACET_MAX_EXCLUSIVE)).getBigIntegerValue(); // .subtract(BigInteger.ONE);
+        if (sImpl.getFacet(SchemaType.FACET_MIN_EXCLUSIVE) != null) {
+            min = ((SimpleValue) sImpl.getFacet(SchemaType.FACET_MIN_EXCLUSIVE)).getBigIntegerValue(); // .add(BigInteger.ONE);
+        }
+        if (sImpl.getFacet(SchemaType.FACET_MIN_INCLUSIVE) != null) {
+            min = ((SimpleValue) sImpl.getFacet(SchemaType.FACET_MIN_INCLUSIVE)).getBigIntegerValue();
+        }
+        if (sImpl.getFacet(SchemaType.FACET_MAX_INCLUSIVE) != null) {
+            max = ((SimpleValue) sImpl.getFacet(SchemaType.FACET_MAX_INCLUSIVE)).getBigIntegerValue();
+        }
+        if (sImpl.getFacet(SchemaType.FACET_MAX_EXCLUSIVE) != null) {
+            max = ((SimpleValue) sImpl.getFacet(SchemaType.FACET_MAX_EXCLUSIVE)).getBigIntegerValue(); // .subtract(BigInteger.ONE);
+        }
 
-        if (sImpl.getFacet(SchemaType.FACET_TOTAL_DIGITS) != null)
-        {
+        if (sImpl.getFacet(SchemaType.FACET_TOTAL_DIGITS) != null) {
             BigInteger peg = null;
-            try
-            {
-                BigInteger totalDigits = ((SimpleValue)sImpl.getFacet(SchemaType.FACET_TOTAL_DIGITS)).getBigIntegerValue();
+            try {
+                BigInteger totalDigits = ((SimpleValue) sImpl.getFacet(SchemaType.FACET_TOTAL_DIGITS)).getBigIntegerValue();
 
-                switch (totalDigits.intValue())
-                {
-                    case 0: case 1: case 2:
-                         peg = BigInteger.valueOf(99L); // BYTE size
-                         break;
-                    case 3: case 4:
-                         peg = BigInteger.valueOf(9999L); // SHORT size
-                         break;
-                    case 5: case 6: case 7: case 8: case 9:
-                         peg = BigInteger.valueOf(999999999L); // INT size
-                         break;
-                    case 10: case 11: case 12: case 13: case 14:
-                    case 15: case 16: case 17: case 18:
-                         peg = BigInteger.valueOf(999999999999999999L); // LONG size
-                         break;
-                }
-            }
-            catch (XmlValueOutOfRangeException e) {}
-            if (peg != null)
-            {
+                switch (totalDigits.intValue()) {
+                    case 0:
+                    case 1:
+                    case 2:
+                        peg = BigInteger.valueOf(99L); // BYTE size
+                        break;
+                    case 3:
+                    case 4:
+                        peg = BigInteger.valueOf(9999L); // SHORT size
+                        break;
+                    case 5:
+                    case 6:
+                    case 7:
+                    case 8:
+                    case 9:
+                        peg = BigInteger.valueOf(999999999L); // INT size
+                        break;
+                    case 10:
+                    case 11:
+                    case 12:
+                    case 13:
+                    case 14:
+                    case 15:
+                    case 16:
+                    case 17:
+                    case 18:
+                        peg = BigInteger.valueOf(999999999999999999L); // LONG size
+                        break;
+                }
+            } catch (XmlValueOutOfRangeException ignored) {
+            }
+            if (peg != null) {
                 min = (min == null ? peg.negate() : min.max(peg.negate()));
                 max = (max == null ? peg : max.min(peg));
             }
         }
 
-        if (min != null && max != null)
-        {
+        if (min != null && max != null) {
             // find the largest "absolute value" number that must be dealt with
-            if (min.signum() < 0)
+            if (min.signum() < 0) {
                 min = min.negate().subtract(BigInteger.ONE);
-            if (max.signum() < 0)
+            }
+            if (max.signum() < 0) {
                 max = max.negate().subtract(BigInteger.ONE);
+            }
 
             max = max.max(min);
-            if (max.compareTo(BigInteger.valueOf(Byte.MAX_VALUE)) <= 0)
+            if (max.compareTo(BigInteger.valueOf(Byte.MAX_VALUE)) <= 0) {
                 return SchemaType.SIZE_BYTE;
-            if (max.compareTo(BigInteger.valueOf(Short.MAX_VALUE)) <= 0)
+            }
+            if (max.compareTo(BigInteger.valueOf(Short.MAX_VALUE)) <= 0) {
                 return SchemaType.SIZE_SHORT;
-            if (max.compareTo(BigInteger.valueOf(Integer.MAX_VALUE)) <= 0)
+            }
+            if (max.compareTo(BigInteger.valueOf(Integer.MAX_VALUE)) <= 0) {
                 return SchemaType.SIZE_INT;
-            if (max.compareTo(BigInteger.valueOf(Long.MAX_VALUE)) <= 0)
+            }
+            if (max.compareTo(BigInteger.valueOf(Long.MAX_VALUE)) <= 0) {
                 return SchemaType.SIZE_LONG;
+            }
         }
 
         return SchemaType.SIZE_BIG_INTEGER;
     }
 
 
-    static void resolveFundamentalFacets(SchemaTypeImpl sImpl)
-    {
+    static void resolveFundamentalFacets(SchemaTypeImpl sImpl) {
         // deal with, isOrdered, isBounded, isFinite, isNumeric
         // also deal with
-        switch (sImpl.getSimpleVariety())
-        {
+        switch (sImpl.getSimpleVariety()) {
             case SchemaType.ATOMIC:
-                SchemaTypeImpl baseImpl = (SchemaTypeImpl)sImpl.getBaseType();
+                SchemaTypeImpl baseImpl = (SchemaTypeImpl) sImpl.getBaseType();
                 sImpl.setOrdered(baseImpl.ordered());
                 sImpl.setBounded(
                     (sImpl.getFacet(SchemaType.FACET_MIN_EXCLUSIVE) != null ||
@@ -1163,7 +1062,7 @@ public class StscSimpleTypeResolver
                 sImpl.setFinite(baseImpl.isFinite() ||
                                 sImpl.isBounded() && isDiscreteType(sImpl));
                 sImpl.setNumeric(baseImpl.isNumeric() ||
-                                isNumericPrimitive(sImpl.getPrimitiveType()));
+                                 isNumericPrimitive(sImpl.getPrimitiveType()));
                 sImpl.setDecimalSize(decimalSizeOfType(sImpl));
                 break;
             case SchemaType.UNION:
@@ -1173,16 +1072,19 @@ public class StscSimpleTypeResolver
                 boolean isFinite = true;
                 boolean isNumeric = true;
                 // ordered if any is ordered, bounded if all are bounded.
-                for (int i = 0; i < mTypes.length; i++)
-                {
-                    if (mTypes[i].ordered() != SchemaType.UNORDERED)
+                for (SchemaType mType : mTypes) {
+                    if (mType.ordered() != SchemaType.UNORDERED) {
                         ordered = SchemaType.PARTIAL_ORDER;
-                    if (!mTypes[i].isBounded())
+                    }
+                    if (!mType.isBounded()) {
                         isBounded = false;
-                    if (!mTypes[i].isFinite())
+                    }
+                    if (!mType.isFinite()) {
                         isFinite = false;
-                    if (!mTypes[i].isNumeric())
+                    }
+                    if (!mType.isNumeric()) {
                         isNumeric = false;
+                    }
                 }
                 sImpl.setOrdered(ordered);
                 sImpl.setBounded(isBounded);
@@ -1194,7 +1096,7 @@ public class StscSimpleTypeResolver
                 sImpl.setOrdered(SchemaType.UNORDERED);
                 // BUGBUG: the schema spec is wrong here: MIN_LENGTH is not needed, beause len >=0
                 sImpl.setBounded(sImpl.getFacet(SchemaType.FACET_LENGTH) != null ||
-                    sImpl.getFacet(SchemaType.FACET_MAX_LENGTH) != null);
+                                 sImpl.getFacet(SchemaType.FACET_MAX_LENGTH) != null);
                 // BUGBUG: the schema spec is wrong here: finite cardinality requires item type is finite
                 sImpl.setFinite(sImpl.getListItemType().isFinite() && sImpl.isBounded());
                 sImpl.setNumeric(false);
@@ -1203,16 +1105,17 @@ public class StscSimpleTypeResolver
         }
     }
 
-    private static class CodeForNameEntry
-    {
-        CodeForNameEntry(QName name, int code)
-            { this.name = name; this.code = code; }
+    private static class CodeForNameEntry {
+        CodeForNameEntry(QName name, int code) {
+            this.name = name;
+            this.code = code;
+        }
+
         public QName name;
         public int code;
     }
 
-    private static CodeForNameEntry[] facetCodes = new CodeForNameEntry[]
-    {
+    private static final CodeForNameEntry[] facetCodes = {
         new CodeForNameEntry(QNameHelper.forLNS("length", "http://www.w3.org/2001/XMLSchema"), SchemaType.FACET_LENGTH),
         new CodeForNameEntry(QNameHelper.forLNS("minLength", "http://www.w3.org/2001/XMLSchema"), SchemaType.FACET_MIN_LENGTH),
         new CodeForNameEntry(QNameHelper.forLNS("maxLength", "http://www.w3.org/2001/XMLSchema"), SchemaType.FACET_MAX_LENGTH),
@@ -1227,21 +1130,17 @@ public class StscSimpleTypeResolver
         new CodeForNameEntry(QNameHelper.forLNS("fractionDigits", "http://www.w3.org/2001/XMLSchema"), SchemaType.FACET_FRACTION_DIGITS),
     };
 
-    private static final Map facetCodeMap = buildFacetCodeMap();
+    private static final Map<QName, Integer> facetCodeMap = buildFacetCodeMap();
 
-    private static Map buildFacetCodeMap()
-    {
-        Map result = new HashMap();
-        for (int i = 0; i < facetCodes.length; i++)
-            result.put(facetCodes[i].name,  new Integer(facetCodes[i].code));
+    private static Map<QName, Integer> buildFacetCodeMap() {
+        Map<QName, Integer> result = new HashMap<>();
+        for (CodeForNameEntry facetCode : facetCodes) {
+            result.put(facetCode.name, facetCode.code);
+        }
         return result;
     }
 
-    private static int translateFacetCode(QName name)
-    {
-        Integer result = ((Integer)facetCodeMap.get(name));
-        if (result == null)
-            return -1;
-        return result.intValue();
+    private static int translateFacetCode(QName name) {
+        return facetCodeMap.getOrDefault(name, -1);
     }
 }

Modified: xmlbeans/trunk/src/main/java/org/apache/xmlbeans/impl/schema/StscState.java
URL: http://svn.apache.org/viewvc/xmlbeans/trunk/src/main/java/org/apache/xmlbeans/impl/schema/StscState.java?rev=1882308&r1=1882307&r2=1882308&view=diff
==============================================================================
--- xmlbeans/trunk/src/main/java/org/apache/xmlbeans/impl/schema/StscState.java (original)
+++ xmlbeans/trunk/src/main/java/org/apache/xmlbeans/impl/schema/StscState.java Wed Oct  7 23:35:25 2020
@@ -611,7 +611,7 @@ public class StscState {
 
     private static String crunchName(QName name) {
         // lowercase, and drop namespace.
-        return name.getLocalPart().toLowerCase();
+        return name.getLocalPart().toLowerCase(Locale.ROOT);
     }
 
     void addSpelling(QName name, SchemaComponent comp) {
@@ -1269,9 +1269,9 @@ public class StscState {
                     expected,
                     expectedName,
                     found,
-                    (foundName == null ? new Integer(0) : new Integer(1)),
+                    (foundName == null ? 0 : 1),
                     foundName,
-                    (sourceName == null ? new Integer(0) : new Integer(1)),
+                    (sourceName == null ? 0 : 1),
                     sourceName
                 },
                 loc);

Modified: xmlbeans/trunk/src/main/java/org/apache/xmlbeans/impl/soap/FactoryFinder.java
URL: http://svn.apache.org/viewvc/xmlbeans/trunk/src/main/java/org/apache/xmlbeans/impl/soap/FactoryFinder.java?rev=1882308&r1=1882307&r2=1882308&view=diff
==============================================================================
--- xmlbeans/trunk/src/main/java/org/apache/xmlbeans/impl/soap/FactoryFinder.java (original)
+++ xmlbeans/trunk/src/main/java/org/apache/xmlbeans/impl/soap/FactoryFinder.java Wed Oct  7 23:35:25 2020
@@ -15,14 +15,11 @@
 
 package org.apache.xmlbeans.impl.soap;
 
-import java.io.BufferedReader;
-import java.io.File;
-import java.io.FileInputStream;
-import java.io.InputStream;
-import java.io.InputStreamReader;
+import org.apache.xmlbeans.SystemProperties;
 
+import java.io.*;
+import java.nio.charset.StandardCharsets;
 import java.util.Properties;
-import org.apache.xmlbeans.SystemProperties;
 
 /**
  * This class is used to locate factory classes for javax.xml.soap.
@@ -38,7 +35,7 @@ class FactoryFinder {
      * @throws SOAPException
      */
     private static Object newInstance(String factoryClassName) throws SOAPException {
-        ClassLoader classloader = null;
+        ClassLoader classloader;
         try {
             classloader = Thread.currentThread().getContextClassLoader();
         } catch (Exception exception) {
@@ -52,13 +49,14 @@ class FactoryFinder {
             } else {
                 try {
                     factory = classloader.loadClass(factoryClassName);
-                } catch (ClassNotFoundException cnfe) {}
+                } catch (ClassNotFoundException ignored) {
+                }
             }
             if (factory == null) {
                 classloader = FactoryFinder.class.getClassLoader();
                 factory = classloader.loadClass(factoryClassName);
             }
-            return factory.newInstance();
+            return factory.getDeclaredConstructor().newInstance();
         } catch (ClassNotFoundException classnotfoundexception) {
             throw new SOAPException("Provider " + factoryClassName + " not found", classnotfoundexception);
         } catch (Exception exception) {
@@ -81,7 +79,8 @@ class FactoryFinder {
             if (factoryClassName != null) {
                 return newInstance(factoryClassName);
             }
-        } catch (SecurityException securityexception) {}
+        } catch (SecurityException ignored) {
+        }
 
         try {
             String propertiesFileName = SystemProperties.getProperty("java.home")
@@ -96,21 +95,23 @@ class FactoryFinder {
                 String factoryClassName = properties.getProperty(factoryPropertyName);
                 return newInstance(factoryClassName);
             }
-        } catch (Exception exception1) {}
+        } catch (Exception ignored) {
+        }
 
         String factoryResource = "META-INF/services/" + factoryPropertyName;
 
         try {
             InputStream inputstream = getResource(factoryResource);
             if (inputstream != null) {
-                BufferedReader bufferedreader = new BufferedReader(new InputStreamReader(inputstream, "UTF-8"));
+                BufferedReader bufferedreader = new BufferedReader(new InputStreamReader(inputstream, StandardCharsets.UTF_8));
                 String factoryClassName = bufferedreader.readLine();
                 bufferedreader.close();
                 if ((factoryClassName != null) && !"".equals(factoryClassName)) {
                     return newInstance(factoryClassName);
                 }
             }
-        } catch (Exception exception2) {}
+        } catch (Exception ignored) {
+        }
 
         if (defaultFactoryClassName == null) {
             throw new SOAPException("Provider for " + factoryPropertyName + " cannot be found", null);
@@ -129,15 +130,16 @@ class FactoryFinder {
      * <code>getResourceAsStream()</code> on
      * <code>FactoryFinder.class.getClassLoader()</code>.
      *
-     * @param factoryResource  the resource name
-     * @return  an InputStream that can be used to read that resource, or
-     *              <code>null</code> if the resource could not be resolved
+     * @param factoryResource the resource name
+     * @return an InputStream that can be used to read that resource, or
+     * <code>null</code> if the resource could not be resolved
      */
     private static InputStream getResource(String factoryResource) {
         ClassLoader classloader = null;
         try {
             classloader = Thread.currentThread().getContextClassLoader();
-        } catch (SecurityException securityexception) {}
+        } catch (SecurityException ignored) {
+        }
 
         InputStream inputstream;
         if (classloader == null) {

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=1882308&r1=1882307&r2=1882308&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 Wed Oct  7 23:35:25 2020
@@ -958,7 +958,7 @@ public final class Locale
                     String attrName = a.getNodeName();
                     String attrValue = a.getNodeValue();
 
-                    if (attrName.toLowerCase().startsWith("xmlns")) {
+                    if (attrName.toLowerCase(java.util.Locale.ROOT).startsWith("xmlns")) {
                         if (attrName.length() == 5) {
                             context.xmlns(null, attrValue);
                         } else {
@@ -1728,7 +1728,7 @@ public final class Locale
 
         for (String prefix : namespaces.keySet()) {
             // Usually, this is the predefined xml namespace
-            if (!prefix.toLowerCase().startsWith("xml")) {
+            if (!prefix.toLowerCase(java.util.Locale.ROOT).startsWith("xml")) {
                 if (c.namespaceForPrefix(prefix, false) == null) {
                     c.push();
 

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=1882308&r1=1882307&r2=1882308&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 Wed Oct  7 23:35:25 2020
@@ -1494,7 +1494,7 @@ abstract class Xobj implements TypeStore
         // Sanitize the suggestion.
 
         if (suggestion != null &&
-            (suggestion.length() == 0 || suggestion.toLowerCase().startsWith("xml") ||
+            (suggestion.length() == 0 || suggestion.toLowerCase(java.util.Locale.ROOT).startsWith("xml") ||
              base.findXmlnsForPrefix(suggestion) != null)) {
             suggestion = null;
         }

Modified: xmlbeans/trunk/src/main/java/org/apache/xmlbeans/impl/tool/SchemaCompiler.java
URL: http://svn.apache.org/viewvc/xmlbeans/trunk/src/main/java/org/apache/xmlbeans/impl/tool/SchemaCompiler.java?rev=1882308&r1=1882307&r2=1882308&view=diff
==============================================================================
--- xmlbeans/trunk/src/main/java/org/apache/xmlbeans/impl/tool/SchemaCompiler.java (original)
+++ xmlbeans/trunk/src/main/java/org/apache/xmlbeans/impl/tool/SchemaCompiler.java Wed Oct  7 23:35:25 2020
@@ -30,6 +30,7 @@ import org.xml.sax.EntityResolver;
 
 import java.io.File;
 import java.io.IOException;
+import java.lang.reflect.InvocationTargetException;
 import java.net.URI;
 import java.net.URL;
 import java.util.*;
@@ -159,7 +160,7 @@ public class SchemaCompiler {
         if (codePrinterClass != null) {
             try {
                 codePrinter = (SchemaCodePrinter)
-                    Class.forName(codePrinterClass).newInstance();
+                    Class.forName(codePrinterClass).getDeclaredConstructor().newInstance();
             } catch (Exception e) {
                 System.err.println
                     ("Failed to load SchemaCodePrinter class " +
@@ -1050,12 +1051,12 @@ public class SchemaCompiler {
             while (i.hasNext()) {
                 Extension extension = i.next();
                 try {
-                    sce = (SchemaCompilerExtension) extension.getClassName().newInstance();
-                } catch (InstantiationException e) {
+                    sce = (SchemaCompilerExtension) extension.getClassName().getDeclaredConstructor().newInstance();
+                } catch (NoSuchMethodException | InstantiationException e) {
                     System.out.println("UNABLE to instantiate schema compiler extension:" + extension.getClassName().getName());
                     System.out.println("EXTENSION Class was not run");
                     break;
-                } catch (IllegalAccessException e) {
+                } catch (InvocationTargetException | IllegalAccessException e) {
                     System.out.println("ILLEGAL ACCESS Exception when attempting to instantiate schema compiler extension: " + extension.getClassName().getName());
                     System.out.println("EXTENSION Class was not run");
                     break;

Modified: xmlbeans/trunk/src/main/java/org/apache/xmlbeans/impl/tool/XMLBean.java
URL: http://svn.apache.org/viewvc/xmlbeans/trunk/src/main/java/org/apache/xmlbeans/impl/tool/XMLBean.java?rev=1882308&r1=1882307&r2=1882308&view=diff
==============================================================================
--- xmlbeans/trunk/src/main/java/org/apache/xmlbeans/impl/tool/XMLBean.java (original)
+++ xmlbeans/trunk/src/main/java/org/apache/xmlbeans/impl/tool/XMLBean.java Wed Oct  7 23:35:25 2020
@@ -309,7 +309,7 @@ public class XMLBean extends MatchingTas
         for (String s : paths) {
             int dot = s.lastIndexOf('.');
             if (dot > -1) {
-                String possExt = s.substring(dot).toLowerCase();
+                String possExt = s.substring(dot).toLowerCase(Locale.ROOT);
                 Set<File> set = _extRouter.get(possExt);
 
                 if (set != null) {

Modified: xmlbeans/trunk/src/main/java/org/apache/xmlbeans/impl/tool/XsbDumper.java
URL: http://svn.apache.org/viewvc/xmlbeans/trunk/src/main/java/org/apache/xmlbeans/impl/tool/XsbDumper.java?rev=1882308&r1=1882307&r2=1882308&view=diff
==============================================================================
--- xmlbeans/trunk/src/main/java/org/apache/xmlbeans/impl/tool/XsbDumper.java (original)
+++ xmlbeans/trunk/src/main/java/org/apache/xmlbeans/impl/tool/XsbDumper.java Wed Oct  7 23:35:25 2020
@@ -45,22 +45,20 @@ public class XsbDumper {
             return;
         }
 
-        for (int i = 0; i < args.length; i++) {
-            dump(new File(args[i]), true);
+        for (String arg : args) {
+            dump(new File(arg), true);
         }
     }
 
     private static void dump(File file, boolean force) {
         if (file.isDirectory()) {
             File[] files = file.listFiles(
-                new FileFilter() {
-                    public boolean accept(File file) {
-                        return file.isDirectory() || file.isFile() && file.getName().endsWith(".xsb");
-                    }
-                }
+                file1 -> file1.isDirectory() || file1.isFile() && file1.getName().endsWith(".xsb")
             );
-            for (int i = 0; i < files.length; i++) {
-                dump(files[i], false);
+            if (files != null) {
+                for (File value : files) {
+                    dump(value, false);
+                }
             }
         } else if (file.getName().endsWith(".jar") || file.getName().endsWith(".zip")) {
             dumpZip(file);
@@ -78,9 +76,9 @@ public class XsbDumper {
     public static void dumpZip(File file) {
         try {
             ZipFile zipFile = new ZipFile(file);
-            Enumeration e = zipFile.entries();
+            Enumeration<? extends ZipEntry> e = zipFile.entries();
             while (e.hasMoreElements()) {
-                ZipEntry entry = (ZipEntry) e.nextElement();
+                ZipEntry entry = e.nextElement();
                 if (entry.getName().endsWith(".xsb")) {
                     System.out.println(entry.getName());
                     dump(zipFile.getInputStream(entry), "  ");
@@ -120,28 +118,20 @@ public class XsbDumper {
         flush();
     }
 
-    void emit() {
-        _out.println();
-        flush();
-    }
-
     void error(Exception e) {
         _out.println(e.toString());
         flush();
-        IllegalStateException e2 = new IllegalStateException(e.getMessage());
-        e2.initCause(e);
-        throw e2;
+        throw new IllegalStateException(e.getMessage(), e);
     }
 
     void error(String str) {
         _out.println(str);
         flush();
-        IllegalStateException e2 = new IllegalStateException(str);
-        throw e2;
+        throw new IllegalStateException(str);
     }
 
     private String _indent;
-    private PrintStream _out;
+    private final PrintStream _out;
 
     void indent() {
         _indent += "  ";
@@ -485,8 +475,8 @@ public class XsbDumper {
 
 
     class StringPool {
-        private List intsToStrings = new ArrayList();
-        private Map stringsToInts = new HashMap();
+        private final List<String> intsToStrings = new ArrayList<>();
+        private final Map<String, Integer> stringsToInts = new HashMap<>();
 
         StringPool() {
             intsToStrings.add(null);
@@ -496,20 +486,20 @@ public class XsbDumper {
             if (code == 0) {
                 return null;
             }
-            return (String) intsToStrings.get(code);
+            return intsToStrings.get(code);
         }
 
         int codeForString(String str) {
             if (str == null) {
                 return 0;
             }
-            Integer result = (Integer) stringsToInts.get(str);
+            Integer result = stringsToInts.get(str);
             if (result == null) {
-                result = new Integer(intsToStrings.size());
+                result = intsToStrings.size();
                 intsToStrings.add(str);
                 stringsToInts.put(str, result);
             }
-            return result.intValue();
+            return result;
         }
 
         void readFrom(DataInputStream input) {
@@ -1313,19 +1303,19 @@ public class XsbDumper {
     QNameSet readQNameSet() {
         int flag = readShort();
 
-        Set uriSet = new HashSet();
+        Set<String> uriSet = new HashSet<>();
         int uriCount = readShort();
         for (int i = 0; i < uriCount; i++) {
             uriSet.add(readString());
         }
 
-        Set qnameSet1 = new HashSet();
+        Set<QName> qnameSet1 = new HashSet<>();
         int qncount1 = readShort();
         for (int i = 0; i < qncount1; i++) {
             qnameSet1.add(readQName());
         }
 
-        Set qnameSet2 = new HashSet();
+        Set<QName> qnameSet2 = new HashSet<>();
         int qncount2 = readShort();
         for (int i = 0; i < qncount2; i++) {
             qnameSet2.add(readQName());
@@ -1364,8 +1354,6 @@ public class XsbDumper {
         return new BigInteger(result);
     }
 
-    static final byte[] SINGLE_ZERO_BYTE = new byte[]{(byte) 0};
-
     private int _majorver;
     private int _minorver;
     private int _releaseno;



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