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: [email protected] For additional commands, e-mail: [email protected]
