From a0a9a3332355e3c3fefed3e905a458a5d529b44f Mon Sep 17 00:00:00 2001 From: PJ Fanning Date: Sun, 4 Oct 2026 13:54:51 +0100 Subject: [PATCH] require Java 17 and use pattern-matching instanceof in src/main Raise the source/target level to Java 17 (Gradle and Ant builds) and convert check-then-cast instanceof idioms in src/main to Java 17 pattern matching. The forbiddenApis block's targetCompatibility line was resolving to the project property and pinning the whole build to 14, so it is removed; forbiddenApis now follows the project target. Only language features are used; no new JDK APIs, so the Android API 26 animalsniffer check still passes. Co-Authored-By: Claude Opus 5.5 --- build.gradle | 26 ++---- build.xml | 22 ++--- .../java/org/apache/xmlbeans/QNameSet.java | 4 +- .../java/org/apache/xmlbeans/XmlOptions.java | 4 +- .../org/apache/xmlbeans/XmlSimpleList.java | 4 +- .../apache/xmlbeans/impl/common/IOUtil.java | 6 +- .../impl/common/IdentityConstraint.java | 6 +- .../apache/xmlbeans/impl/common/Sax2Dom.java | 4 +- .../xmlbeans/impl/common/XmlNameImpl.java | 4 +- .../impl/config/BindingConfigImpl.java | 14 ++- .../impl/config/InterfaceExtensionImpl.java | 8 +- .../impl/schema/SchemaParticleImpl.java | 3 +- .../impl/schema/SchemaTypeCodePrinter.java | 4 +- .../xmlbeans/impl/schema/SchemaTypeImpl.java | 12 +-- .../impl/schema/SchemaTypeLoaderBase.java | 3 +- .../impl/schema/SchemaTypeLoaderImpl.java | 7 +- .../xmlbeans/impl/schema/SchemaTypePool.java | 24 ++--- .../impl/schema/SchemaTypeSystemCompiler.java | 12 +-- .../impl/schema/StscComplexTypeResolver.java | 13 ++- .../xmlbeans/impl/schema/StscTranslator.java | 14 ++- .../xmlbeans/impl/schema/XsbReader.java | 7 +- .../apache/xmlbeans/impl/store/CharNode.java | 8 +- .../apache/xmlbeans/impl/store/CharUtil.java | 81 +++++++---------- .../org/apache/xmlbeans/impl/store/Cur.java | 9 +- .../apache/xmlbeans/impl/store/Cursor.java | 2 +- .../apache/xmlbeans/impl/store/DomImpl.java | 15 ++-- .../apache/xmlbeans/impl/store/Locale.java | 8 +- .../org/apache/xmlbeans/impl/store/Saver.java | 8 +- .../xmlbeans/impl/tool/SchemaCompiler.java | 8 +- .../apache/xmlbeans/impl/tool/SchemaCopy.java | 8 +- .../xmlbeans/impl/util/ExceptionUtil.java | 8 +- .../xmlbeans/impl/validator/Validator.java | 18 ++-- .../impl/values/JavaGDateHolderEx.java | 4 +- .../impl/values/JavaGDurationHolderEx.java | 4 +- .../impl/values/NamespaceContext.java | 4 +- .../xmlbeans/impl/values/XmlListImpl.java | 4 +- .../xmlbeans/impl/values/XmlObjectBase.java | 87 +++++++++---------- .../impl/values/XmlValueComparison.java | 4 +- .../xmlbeans/impl/xpath/saxon/SaxonXPath.java | 4 +- .../impl/xpath/saxon/SaxonXPathEngine.java | 20 ++--- .../impl/xpath/saxon/SaxonXQuery.java | 70 ++++++++------- xkit/README.txt | 4 +- 42 files changed, 265 insertions(+), 314 deletions(-) diff --git a/build.gradle b/build.gradle index 59f464643..ad50548d0 100644 --- a/build.gradle +++ b/build.gradle @@ -52,8 +52,8 @@ if (project.hasProperty('enableSonar')) { group = 'org.apache.xmlbeans' -sourceCompatibility = JavaVersion.VERSION_1_8 -targetCompatibility = JavaVersion.VERSION_1_8 +sourceCompatibility = JavaVersion.VERSION_17 +targetCompatibility = JavaVersion.VERSION_17 repositories { mavenCentral() @@ -72,7 +72,7 @@ ext { log4jVersion = '2.26.1' saxonVersion = '13.0' androidSdkMinimum = '26' - jdkVersion = (project.properties['jdkVersion'] ?: '8') as int + jdkVersion = (project.properties['jdkVersion'] ?: '17') as int } def testSchemas = [ @@ -271,18 +271,12 @@ javadoc { maxMemory = "1024M" doFirst { options { - if (JavaVersion.current() != JavaVersion.VERSION_1_8) { - addBooleanOption('html5', true) - } + addBooleanOption('html5', true) addBooleanOption('Xdoclint:all,-missing', true) links 'https://poi.apache.org/apidocs/dev/' - if (JavaVersion.current().ordinal() >= JavaVersion.VERSION_23.ordinal()) { - links 'https://docs.oracle.com/en/java/javase/23/docs/api/' - } else { - links 'https://docs.oracle.com/javase/8/docs/api/' - } + links 'https://docs.oracle.com/en/java/javase/17/docs/api/' links 'https://xmlbeans.apache.org/docs/5.0.0/' - source = "1.8" + source = "17" } } } @@ -296,10 +290,10 @@ task compileJava9(type: JavaCompile) { dependsOn 'compileJava' javaCompiler = javaToolchains.compilerFor { - languageVersion = JavaLanguageVersion.of(Math.max(11, jdkVersion)) + languageVersion = JavaLanguageVersion.of(jdkVersion) } - sourceCompatibility = 9 - targetCompatibility = 9 + sourceCompatibility = 17 + targetCompatibility = 17 destinationDirectory = file('build/classes/java9/main/META-INF/versions/9') source = file('src/main/java9') classpath = files() @@ -685,8 +679,6 @@ forbiddenApis { // signaturesFiles = files('src/test/resources/forbiddenApis/forbidden-signatures.txt') ignoreFailures = false suppressAnnotations = [ 'org.apache.xmlbeans.impl.util.SuppressForbidden' ] - // forbiddenapis bundled signatures max supported version is 14 - targetCompatibility = (JavaVersion.VERSION_14.isCompatibleWith(JavaVersion.current()) ? JavaVersion.current() : JavaVersion.VERSION_14) } //forbiddenApisMain.onlyIf { false } diff --git a/build.xml b/build.xml index 81f109bc7..47aaf14c1 100644 --- a/build.xml +++ b/build.xml @@ -17,8 +17,8 @@ xmlns:mvn="antlib:org.apache.maven.artifact.ant" xmlns:if="ant:if" xmlns:unless="ant:unless"> - - + + @@ -313,7 +313,7 @@ - - - - - - - - + + source="17"> diff --git a/src/main/java/org/apache/xmlbeans/QNameSet.java b/src/main/java/org/apache/xmlbeans/QNameSet.java index 40c4abedc..7636adf0f 100644 --- a/src/main/java/org/apache/xmlbeans/QNameSet.java +++ b/src/main/java/org/apache/xmlbeans/QNameSet.java @@ -166,8 +166,8 @@ public static QNameSet forArray(QName[] includedQNames) { * @return the copied QNameSet */ public static QNameSet forSpecification(QNameSetSpecification spec) { - if (spec instanceof QNameSet) { - return (QNameSet) spec; + if (spec instanceof QNameSet set) { + return set; } return QNameSet.forSets(spec.excludedURIs(), spec.includedURIs(), spec.excludedQNamesInIncludedURIs(), spec.includedQNamesInExcludedURIs()); } diff --git a/src/main/java/org/apache/xmlbeans/XmlOptions.java b/src/main/java/org/apache/xmlbeans/XmlOptions.java index 05e4a2bf9..4a7075b9b 100644 --- a/src/main/java/org/apache/xmlbeans/XmlOptions.java +++ b/src/main/java/org/apache/xmlbeans/XmlOptions.java @@ -1609,8 +1609,8 @@ public void setCompilePartialMethod(Set list) { */ public int getMaxNumberOfCharsForNumbers() { Object value = get(XmlOptionsKeys.MAX_NUMBER_CHARS); - if (value instanceof Number) { - return ((Number) value).intValue(); + if (value instanceof Number number) { + return number.intValue(); } return DEFAULT_MAX_NUMBER_CHARS; } diff --git a/src/main/java/org/apache/xmlbeans/XmlSimpleList.java b/src/main/java/org/apache/xmlbeans/XmlSimpleList.java index 5ad42220d..d0e5e3a64 100644 --- a/src/main/java/org/apache/xmlbeans/XmlSimpleList.java +++ b/src/main/java/org/apache/xmlbeans/XmlSimpleList.java @@ -253,8 +253,8 @@ public void add(Object o) { } private String stringValue(Object o) { - if (o instanceof SimpleValue) { - return ((SimpleValue) o).getStringValue(); + if (o instanceof SimpleValue value) { + return value.getStringValue(); } return o.toString(); } diff --git a/src/main/java/org/apache/xmlbeans/impl/common/IOUtil.java b/src/main/java/org/apache/xmlbeans/impl/common/IOUtil.java index 7d47a044a..cfa787fdd 100644 --- a/src/main/java/org/apache/xmlbeans/impl/common/IOUtil.java +++ b/src/main/java/org/apache/xmlbeans/impl/common/IOUtil.java @@ -31,10 +31,10 @@ public static void copyCompletely(InputStream input, OutputStream output) throws IOException { try { //if both are file streams, use channel IO - if ((output instanceof FileOutputStream) && (input instanceof FileInputStream)) { + if ((output instanceof FileOutputStream fos) && (input instanceof FileInputStream fis)) { try { - FileChannel target = ((FileOutputStream) output).getChannel(); - FileChannel source = ((FileInputStream) input).getChannel(); + FileChannel target = fos.getChannel(); + FileChannel source = fis.getChannel(); source.transferTo(0, Integer.MAX_VALUE, target); diff --git a/src/main/java/org/apache/xmlbeans/impl/common/IdentityConstraint.java b/src/main/java/org/apache/xmlbeans/impl/common/IdentityConstraint.java index 26611c3da..e3e0d4d3e 100644 --- a/src/main/java/org/apache/xmlbeans/impl/common/IdentityConstraint.java +++ b/src/main/java/org/apache/xmlbeans/impl/common/IdentityConstraint.java @@ -287,8 +287,7 @@ void createFieldState(Event e, SchemaType st) { void remove(Event e) { // Bubble up key, unique values to keyrefs for (ConstraintState cs = _next; cs != null; cs = cs._next) { - if (cs instanceof KeyrefState) { - KeyrefState kr = (KeyrefState) cs; + if (cs instanceof KeyrefState kr) { if (kr._constraint.getReferencedKey() == this._constraint) { kr.addKeyValues(_values, true); } @@ -345,8 +344,7 @@ void remove(Event e) { // First check if there are any keys at the same stack level as this // that may contribute key values to me for (ConstraintState cs = _next; cs != null && cs != _elementStack._savePoint; cs = cs._next) { - if (cs instanceof SelectorState) { - SelectorState sel = (SelectorState) cs; + if (cs instanceof SelectorState sel) { if (sel._constraint == _constraint.getReferencedKey()) { addKeyValues(sel._values, false); } diff --git a/src/main/java/org/apache/xmlbeans/impl/common/Sax2Dom.java b/src/main/java/org/apache/xmlbeans/impl/common/Sax2Dom.java index e76d7e154..626ec65d5 100644 --- a/src/main/java/org/apache/xmlbeans/impl/common/Sax2Dom.java +++ b/src/main/java/org/apache/xmlbeans/impl/common/Sax2Dom.java @@ -55,9 +55,9 @@ public Sax2Dom() throws ParserConfigurationException public Sax2Dom(Node root) throws ParserConfigurationException { _root = root; - if (root instanceof Document) + if (root instanceof Document document) { - _document = (Document) root; + _document = document; } else if (root != null) { diff --git a/src/main/java/org/apache/xmlbeans/impl/common/XmlNameImpl.java b/src/main/java/org/apache/xmlbeans/impl/common/XmlNameImpl.java index 03ade6130..c29f33b94 100644 --- a/src/main/java/org/apache/xmlbeans/impl/common/XmlNameImpl.java +++ b/src/main/java/org/apache/xmlbeans/impl/common/XmlNameImpl.java @@ -86,9 +86,7 @@ public final int hashCode() { public final boolean equals(Object obj) { if (obj == this) return true; - if (obj instanceof XMLName) { - final XMLName name= (XMLName) obj; - + if (obj instanceof XMLName name) { final String lname = localName; if (!(lname==null ? name.getLocalName()==null : lname.equals(name.getLocalName()))) diff --git a/src/main/java/org/apache/xmlbeans/impl/config/BindingConfigImpl.java b/src/main/java/org/apache/xmlbeans/impl/config/BindingConfigImpl.java index 4f9fc6519..33e674247 100755 --- a/src/main/java/org/apache/xmlbeans/impl/config/BindingConfigImpl.java +++ b/src/main/java/org/apache/xmlbeans/impl/config/BindingConfigImpl.java @@ -75,8 +75,7 @@ private BindingConfigImpl(Config[] configs, File[] javaFiles, File[] classpath) QName name = qnameconfig.getName(); String javaname = qnameconfig.getJavaname(); for (XmlAnySimpleType xmlAnySimpleType : applyto) { - if (xmlAnySimpleType instanceof Qnametargetenum) { - Qnametargetenum a = (Qnametargetenum) xmlAnySimpleType; + if (xmlAnySimpleType instanceof Qnametargetenum a) { switch (a.getEnumValue().intValue()) { case Qnametargetenum.INT_TYPE: _qnameTypeMap.put(name, javaname); @@ -170,9 +169,9 @@ private static void recordNamespaceSetting(Object key, String value, Map list) { // map uris to value - ((List) key).forEach(o -> result.put("##local".equals(o) ? "" : o, value)); + list.forEach(o -> result.put("##local".equals(o) ? "" : o, value)); } } @@ -193,9 +192,9 @@ private void recordExtensionSetting(Extensionconfig ext) { if (key instanceof String && "*".equals(key)) { xbeanSet = NameSet.EVERYTHING; - } else if (key instanceof List) { + } else if (key instanceof List list) { NameSetBuilder xbeanSetBuilder = new NameSetBuilder(); - for (Object o : (List) key) { + for (Object o : list) { xbeanSetBuilder.add(o.toString()); } xbeanSet = xbeanSetBuilder.toNameSet(); @@ -257,8 +256,7 @@ private String lookupByUriPrefix(Map mapByUriPrefix, String uri) if (!mapByUriPrefix.isEmpty()) { String uriprefix = null; for (Object o : mapByUriPrefix.keySet()) { - if (o instanceof String) { - String nextprefix = (String) o; + if (o instanceof String nextprefix) { if (uriprefix != null && nextprefix.length() < uriprefix.length()) { continue; } diff --git a/src/main/java/org/apache/xmlbeans/impl/config/InterfaceExtensionImpl.java b/src/main/java/org/apache/xmlbeans/impl/config/InterfaceExtensionImpl.java index 12f3afb09..da0cb3740 100755 --- a/src/main/java/org/apache/xmlbeans/impl/config/InterfaceExtensionImpl.java +++ b/src/main/java/org/apache/xmlbeans/impl/config/InterfaceExtensionImpl.java @@ -208,10 +208,10 @@ static MethodDeclaration getMethod(ClassOrInterfaceDeclaration cls, String name, private static String[] paramStrings(NodeList params) { return params.stream().map(p -> { - if (p instanceof Parameter) { - return ((Parameter)p).getType().resolve().describe(); - } else if (p instanceof TypeParameter) { - return ((TypeParameter)p).getNameAsString(); + if (p instanceof Parameter param) { + return param.getType().resolve().describe(); + } else if (p instanceof TypeParameter typeParam) { + return typeParam.getNameAsString(); } else { return "unknown"; } diff --git a/src/main/java/org/apache/xmlbeans/impl/schema/SchemaParticleImpl.java b/src/main/java/org/apache/xmlbeans/impl/schema/SchemaParticleImpl.java index cb87389cd..6911012f0 100644 --- a/src/main/java/org/apache/xmlbeans/impl/schema/SchemaParticleImpl.java +++ b/src/main/java/org/apache/xmlbeans/impl/schema/SchemaParticleImpl.java @@ -299,8 +299,7 @@ public String getDocumentation(){ private static String parseDocumentation(XmlObject parseObject){ try { - if (parseObject instanceof Element) { - Element e = (Element) parseObject; + if (parseObject instanceof Element e) { if (e.getAnnotation() != null) { Annotation a = e.getAnnotation(); if (a.getDocumentationArray() != null) { diff --git a/src/main/java/org/apache/xmlbeans/impl/schema/SchemaTypeCodePrinter.java b/src/main/java/org/apache/xmlbeans/impl/schema/SchemaTypeCodePrinter.java index 1d9f383bc..5e5d3729a 100644 --- a/src/main/java/org/apache/xmlbeans/impl/schema/SchemaTypeCodePrinter.java +++ b/src/main/java/org/apache/xmlbeans/impl/schema/SchemaTypeCodePrinter.java @@ -415,8 +415,8 @@ private static String getExtensionInterfaces(SchemaType sType) { } private static SchemaTypeImpl getImpl(SchemaType sType) { - if (sType instanceof SchemaTypeImpl) { - return (SchemaTypeImpl) sType; + if (sType instanceof SchemaTypeImpl impl) { + return impl; } else { return null; } diff --git a/src/main/java/org/apache/xmlbeans/impl/schema/SchemaTypeImpl.java b/src/main/java/org/apache/xmlbeans/impl/schema/SchemaTypeImpl.java index a91ffd612..39256e794 100644 --- a/src/main/java/org/apache/xmlbeans/impl/schema/SchemaTypeImpl.java +++ b/src/main/java/org/apache/xmlbeans/impl/schema/SchemaTypeImpl.java @@ -329,11 +329,11 @@ public String getSourceName() { SchemaField field = getContainerField(); if (field != null) { - if (field instanceof SchemaGlobalElement) { - return ((SchemaGlobalElement) field).getSourceName(); + if (field instanceof SchemaGlobalElement element) { + return element.getSourceName(); } - if (field instanceof SchemaGlobalAttribute) { - return ((SchemaGlobalAttribute) field).getSourceName(); + if (field instanceof SchemaGlobalAttribute attribute) { + return attribute.getSourceName(); } } return null; @@ -1867,8 +1867,8 @@ public XmlAnySimpleType newValue(Object obj, boolean validateOnSet) { // In the case of tree copy, need to call a specla setter to avoid // set(XmlObject) - if (obj instanceof XmlObject) { - result.set_newValue((XmlObject) obj); + if (obj instanceof XmlObject object) { + result.set_newValue(object); } else { result.setObjectValue(obj); } diff --git a/src/main/java/org/apache/xmlbeans/impl/schema/SchemaTypeLoaderBase.java b/src/main/java/org/apache/xmlbeans/impl/schema/SchemaTypeLoaderBase.java index 9faaeb419..a727404c4 100644 --- a/src/main/java/org/apache/xmlbeans/impl/schema/SchemaTypeLoaderBase.java +++ b/src/main/java/org/apache/xmlbeans/impl/schema/SchemaTypeLoaderBase.java @@ -184,8 +184,7 @@ public XmlObject parse(URL url, SchemaType type, XmlOptions options) throws XmlE conn = url.openConnection(); conn.addRequestProperty("User-Agent", USER_AGENT); conn.addRequestProperty("Accept", "application/xml, text/xml, */*"); - if (conn instanceof HttpURLConnection) { - HttpURLConnection httpcon = (HttpURLConnection) conn; + if (conn instanceof HttpURLConnection httpcon) { int code = httpcon.getResponseCode(); redirected = (code == HttpURLConnection.HTTP_MOVED_PERM || code == HttpURLConnection.HTTP_MOVED_TEMP); if (redirected && count > 5) { diff --git a/src/main/java/org/apache/xmlbeans/impl/schema/SchemaTypeLoaderImpl.java b/src/main/java/org/apache/xmlbeans/impl/schema/SchemaTypeLoaderImpl.java index 3f84b4a23..37ddadab0 100644 --- a/src/main/java/org/apache/xmlbeans/impl/schema/SchemaTypeLoaderImpl.java +++ b/src/main/java/org/apache/xmlbeans/impl/schema/SchemaTypeLoaderImpl.java @@ -97,8 +97,8 @@ public SchemaTypeLoader getFromTypeLoaderCache(ClassLoader cl) { } public void addToTypeLoaderCache(SchemaTypeLoader stl, ClassLoader cl) { - assert (stl instanceof SchemaTypeLoaderImpl) && - ((SchemaTypeLoaderImpl) stl)._classLoader == cl; + assert (stl instanceof SchemaTypeLoaderImpl stli) && + stli._classLoader == cl; List> a = _cachedTypeSystems.get(); // Make sure this entry is at the top of the stack @@ -180,8 +180,7 @@ void add(SchemaTypeLoader[] searchPath) { return; } for (SchemaTypeLoader stl : searchPath) { - if (stl instanceof SchemaTypeLoaderImpl) { - SchemaTypeLoaderImpl sub = (SchemaTypeLoaderImpl) stl; + if (stl instanceof SchemaTypeLoaderImpl sub) { if (sub._classLoader != null || sub._resourceLoader != null) { add(sub); } else { diff --git a/src/main/java/org/apache/xmlbeans/impl/schema/SchemaTypePool.java b/src/main/java/org/apache/xmlbeans/impl/schema/SchemaTypePool.java index 60e6d333e..4e91ec018 100644 --- a/src/main/java/org/apache/xmlbeans/impl/schema/SchemaTypePool.java +++ b/src/main/java/org/apache/xmlbeans/impl/schema/SchemaTypePool.java @@ -59,23 +59,23 @@ String handleForComponent(SchemaComponent comp) { if (comp.getTypeSystem() != typeSystem) { throw new IllegalArgumentException("Cannot supply handles for types from another type system"); } - if (comp instanceof SchemaType) { - return handleForType((SchemaType) comp); + if (comp instanceof SchemaType type) { + return handleForType(type); } - if (comp instanceof SchemaGlobalElement) { - return handleForElement((SchemaGlobalElement) comp); + if (comp instanceof SchemaGlobalElement element) { + return handleForElement(element); } - if (comp instanceof SchemaGlobalAttribute) { - return handleForAttribute((SchemaGlobalAttribute) comp); + if (comp instanceof SchemaGlobalAttribute attribute) { + return handleForAttribute(attribute); } - if (comp instanceof SchemaModelGroup) { - return handleForModelGroup((SchemaModelGroup) comp); + if (comp instanceof SchemaModelGroup group) { + return handleForModelGroup(group); } - if (comp instanceof SchemaAttributeGroup) { - return handleForAttributeGroup((SchemaAttributeGroup) comp); + if (comp instanceof SchemaAttributeGroup group) { + return handleForAttributeGroup(group); } - if (comp instanceof SchemaIdentityConstraint) { - return handleForIdentityConstraint((SchemaIdentityConstraint) comp); + if (comp instanceof SchemaIdentityConstraint constraint) { + return handleForIdentityConstraint(constraint); } throw new IllegalStateException("Component type cannot have a handle"); } diff --git a/src/main/java/org/apache/xmlbeans/impl/schema/SchemaTypeSystemCompiler.java b/src/main/java/org/apache/xmlbeans/impl/schema/SchemaTypeSystemCompiler.java index 5d193c3d5..f5a34b042 100644 --- a/src/main/java/org/apache/xmlbeans/impl/schema/SchemaTypeSystemCompiler.java +++ b/src/main/java/org/apache/xmlbeans/impl/schema/SchemaTypeSystemCompiler.java @@ -158,10 +158,10 @@ public static SchemaTypeSystemImpl compile(String name, SchemaTypeSystem existin if (input != null) { for (int i = 0; i < input.length; i++) { - if (input[i] instanceof Schema) { - schemas.add((Schema) input[i]); - } else if (input[i] instanceof SchemaDocument && ((SchemaDocument) input[i]).getSchema() != null) { - schemas.add(((SchemaDocument) input[i]).getSchema()); + if (input[i] instanceof Schema schema) { + schemas.add(schema); + } else if (input[i] instanceof SchemaDocument document && document.getSchema() != null) { + schemas.add(document.getSchema()); } else { throw new XmlException("Thread " + Thread.currentThread().getName() + ": The " + i + "th supplied input is not a schema document: its type is " + input[i].schemaType()); } @@ -364,7 +364,7 @@ private static Schema[] getSchemasToRecompile(SchemaTypeSystemImpl system, */ public static boolean generateTypes(SchemaTypeSystem system, Filer filer, XmlOptions options) { // partial type systems not allowed to be saved - if (system instanceof SchemaTypeSystemImpl && ((SchemaTypeSystemImpl) system).isIncomplete()) { + if (system instanceof SchemaTypeSystemImpl impl && impl.isIncomplete()) { return false; } @@ -384,7 +384,7 @@ public static boolean generateTypes(SchemaTypeSystem system, Filer filer, XmlOpt String indexClassName = SchemaTypeCodePrinter.indexClassForSystem(system); try (Writer out = filer.createSourceFile(indexClassName, options == null ? null : options.getCharacterEncoding())) { - Repackager repackager = (filer instanceof FilerImpl) ? ((FilerImpl) filer).getRepackager() : null; + Repackager repackager = (filer instanceof FilerImpl fi) ? fi.getRepackager() : null; printer.printHolder(out, system, options, repackager); } catch (IOException e) { System.err.println("IO Error " + e); diff --git a/src/main/java/org/apache/xmlbeans/impl/schema/StscComplexTypeResolver.java b/src/main/java/org/apache/xmlbeans/impl/schema/StscComplexTypeResolver.java index cd0fd16c2..64babf41b 100644 --- a/src/main/java/org/apache/xmlbeans/impl/schema/StscComplexTypeResolver.java +++ b/src/main/java/org/apache/xmlbeans/impl/schema/StscComplexTypeResolver.java @@ -86,8 +86,7 @@ else if (schema != null && schema.isSetFinalDefault()) { if (ds instanceof String && ds.equals("#all")) { // #ALL value finalExt = finalRest = finalList = finalUnion = true; - } else if (ds instanceof List) { - List dsl = (List) ds; + } else if (ds instanceof List dsl) { finalExt = dsl.contains("extension"); finalRest = dsl.contains("restriction"); @@ -119,8 +118,7 @@ else if (schema != null && schema.isSetFinalDefault()) { if (block instanceof String && block.equals("#all")) { // #ALL value blockExt = blockRest = true; - } else if (block instanceof List) { - List blist = (List) block; + } else if (block instanceof List blist) { if (blist.contains("extension")) { blockExt = true; } @@ -1482,12 +1480,11 @@ static SchemaProperty buildUseProperty(SchemaField use, SchemaType owner) { sPropImpl.setMinOccurs(use.getMinOccurs()); sPropImpl.setMaxOccurs(use.getMaxOccurs()); - if(use instanceof SchemaParticle){ - sPropImpl.setDocumentation(((SchemaParticle)use).getDocumentation()); + if(use instanceof SchemaParticle particle){ + sPropImpl.setDocumentation(particle.getDocumentation()); } - if (use instanceof SchemaLocalElementImpl) { - SchemaLocalElementImpl elt = (SchemaLocalElementImpl) use; + if (use instanceof SchemaLocalElementImpl elt) { sPropImpl.setAcceptedNames(elt.acceptedStartNames()); } diff --git a/src/main/java/org/apache/xmlbeans/impl/schema/StscTranslator.java b/src/main/java/org/apache/xmlbeans/impl/schema/StscTranslator.java index 28764de29..84d06adc9 100644 --- a/src/main/java/org/apache/xmlbeans/impl/schema/StscTranslator.java +++ b/src/main/java/org/apache/xmlbeans/impl/schema/StscTranslator.java @@ -909,8 +909,7 @@ public static SchemaLocalElementImpl translateElement( if (ds instanceof String && ds.equals("#all")) { // #ALL value finalExt = finalRest = true; - } else if (ds instanceof List) { - List dsList = (List) ds; + } else if (ds instanceof List dsList) { if (dsList.contains("extension")) { finalExt = true; } @@ -952,8 +951,8 @@ public static SchemaLocalElementImpl translateElement( Object[] grps = state.getCurrentProcessing(); QName[] context = new QName[grps.length]; for (int i = 0; i < context.length; i++) { - if (grps[i] instanceof SchemaModelGroupImpl) { - context[i] = ((SchemaModelGroupImpl) grps[i]).getName(); + if (grps[i] instanceof SchemaModelGroupImpl groupImpl) { + context[i] = groupImpl.getName(); } } SchemaType repeat = checkRecursiveGroupReference(context, qname, (SchemaTypeImpl) outerType); @@ -1028,8 +1027,7 @@ public static SchemaLocalElementImpl translateElement( if (block instanceof String && block.equals("#all")) { // #ALL value blockExt = blockRest = blockSubst = true; - } else if (block instanceof List) { - List blockList = (List) block; + } else if (block instanceof List blockList) { if (blockList.contains("extension")) { blockExt = true; } @@ -1562,8 +1560,8 @@ private static Object getUserData(XmlObject pos) { try (XmlCursor c = pos.newCursor()) { b = c.getBookmark(SchemaBookmark.class); } - if (b instanceof SchemaBookmark) { - return ((SchemaBookmark) b).getValue(); + if (b instanceof SchemaBookmark bookmark) { + return bookmark.getValue(); } else { return null; } diff --git a/src/main/java/org/apache/xmlbeans/impl/schema/XsbReader.java b/src/main/java/org/apache/xmlbeans/impl/schema/XsbReader.java index 0ec510670..bc2b29e76 100644 --- a/src/main/java/org/apache/xmlbeans/impl/schema/XsbReader.java +++ b/src/main/java/org/apache/xmlbeans/impl/schema/XsbReader.java @@ -1475,8 +1475,7 @@ void writeParticleData(SchemaParticle part) { flags |= FLAG_PART_ABSTRACT; } - if (lpart instanceof SchemaGlobalElement) { - SchemaGlobalElement gpart = (SchemaGlobalElement) lpart; + if (lpart instanceof SchemaGlobalElement gpart) { if (gpart.finalExtension()) { flags |= FLAG_PART_FINALEXT; } @@ -1504,9 +1503,7 @@ void writeParticleData(SchemaParticle part) { writeXmlValueObject(lpart.getDefaultValue()); writeSOAPArrayType(((SchemaWSDLArrayType) lpart).getWSDLArrayType()); writeAnnotation(lpart.getAnnotation()); - if (lpart instanceof SchemaGlobalElement) { - SchemaGlobalElement gpart = (SchemaGlobalElement) lpart; - + if (lpart instanceof SchemaGlobalElement gpart) { writeHandle(gpart.substitutionGroup()); QName[] substGroupMembers = gpart.substitutionGroupMembers(); diff --git a/src/main/java/org/apache/xmlbeans/impl/store/CharNode.java b/src/main/java/org/apache/xmlbeans/impl/store/CharNode.java index 67b1d6c41..bf04a8bcc 100644 --- a/src/main/java/org/apache/xmlbeans/impl/store/CharNode.java +++ b/src/main/java/org/apache/xmlbeans/impl/store/CharNode.java @@ -55,8 +55,8 @@ public void setChars(Object src, int off, int cch) { public DomImpl.Dom getDom() { assert isValid(); - if (_src instanceof DomImpl.Dom) - return (DomImpl.Dom) _src; + if (_src instanceof DomImpl.Dom dom) + return dom; return null; } @@ -209,8 +209,8 @@ public boolean isNodeAftertext() { } public void dump(PrintStream o, Object ref) { - if (_src instanceof DomImpl.Dom) - ((DomImpl.Dom) _src).dump(o, ref); + if (_src instanceof DomImpl.Dom dom) + dom.dump(o, ref); else o.println("Lonely CharNode: \"" + CharUtil.getString(_src, _off, _cch) + "\""); } diff --git a/src/main/java/org/apache/xmlbeans/impl/store/CharUtil.java b/src/main/java/org/apache/xmlbeans/impl/store/CharUtil.java index ca89b2239..92f0a06f1 100755 --- a/src/main/java/org/apache/xmlbeans/impl/store/CharUtil.java +++ b/src/main/java/org/apache/xmlbeans/impl/store/CharUtil.java @@ -49,11 +49,9 @@ public static void getString(StringBuffer sb, Object src, int off, int cch) { return; } - if (src instanceof char[]) { - sb.append((char[]) src, off, cch); - } else if (src instanceof String) { - String s = (String) src; - + if (src instanceof char[] chars) { + sb.append(chars, off, cch); + } else if (src instanceof String s) { if (off == 0 && cch == s.length()) { sb.append(s); } else { @@ -72,11 +70,10 @@ public static void getChars(char[] chars, int start, Object src, int off, int cc return; } - if (src instanceof char[]) { - char[] cs = (char[]) src; + if (src instanceof char[] cs) { System.arraycopy(cs, off, chars, start, cch); - } else if (src instanceof String) { - ((String) src).getChars(off, off + cch, chars, start); + } else if (src instanceof String string) { + string.getChars(off, off + cch, chars, start); } else { ((CharJoin) src).getChars(chars, start, off, cch); } @@ -89,13 +86,11 @@ public static String getString(Object src, int off, int cch) { return ""; } - if (src instanceof char[]) { - return new String((char[]) src, off, cch); + if (src instanceof char[] chars) { + return new String(chars, off, cch); } - if (src instanceof String) { - String s = (String) src; - + if (src instanceof String s) { if (off == 0 && cch == s.length()) { return s; } @@ -129,8 +124,8 @@ public final boolean isWhiteSpace(Object src, int off, int cch) { return true; } - if (src instanceof char[]) { - for (char[] chars = (char[]) src; cch > 0; cch--) { + if (src instanceof char[] chars) { + for (; cch > 0; cch--) { if (!isWhiteSpace(chars[off++])) { return false; } @@ -139,8 +134,8 @@ public final boolean isWhiteSpace(Object src, int off, int cch) { return true; } - if (src instanceof String) { - for (String s = (String) src; cch > 0; cch--) { + if (src instanceof String s) { + for (; cch > 0; cch--) { if (!isWhiteSpace(s.charAt(off++))) { return false; } @@ -167,16 +162,12 @@ public Object stripLeft(Object src, int off, int cch) { assert isValid(src, off, cch); if (cch > 0) { - if (src instanceof char[]) { - char[] chars = (char[]) src; - + if (src instanceof char[] chars) { while (cch > 0 && isWhiteSpace(chars[off])) { cch--; off++; } - } else if (src instanceof String) { - String s = (String) src; - + } else if (src instanceof String s) { while (cch > 0 && isWhiteSpace(s.charAt(off))) { cch--; off++; @@ -529,9 +520,7 @@ public static void dumpChars(PrintStream p, Object src, int off, int cch) { if (src == null) { p.print(""); - } else if (src instanceof String) { - String s = (String) src; - + } else if (src instanceof String s) { p.print("String"); if (off != 0 || cch != s.length()) { @@ -543,9 +532,7 @@ public static void dumpChars(PrintStream p, Object src, int off, int cch) { //p.print( ": " ); dumpText(p, s.substring(off, off + cch)); - } else if (src instanceof char[]) { - char[] chars = (char[]) src; - + } else if (src instanceof char[] chars) { p.print("char[]"); if (off != 0 || cch != chars.length) { @@ -557,10 +544,10 @@ public static void dumpChars(PrintStream p, Object src, int off, int cch) { //p.print( ": " ); dumpText(p, new String(chars, off, cch)); - } else if (src instanceof CharJoin) { + } else if (src instanceof CharJoin join) { p.print("CharJoin"); - ((CharJoin) src).dumpChars(p, off, cch); + join.dumpChars(p, off, cch); } else { p.print("Unknown text source"); } @@ -575,18 +562,16 @@ public static boolean isValid(Object src, int off, int cch) { return off == 0 && cch == 0; } - if (src instanceof char[]) { - char[] c = (char[]) src; + if (src instanceof char[] c) { return off <= c.length && off + cch <= c.length; } - if (src instanceof String) { - String s = (String) src; + if (src instanceof String s) { return off <= s.length() && off + cch <= s.length(); } - if (src instanceof CharJoin) { - return ((CharJoin) src).isValid(off, cch); + if (src instanceof CharJoin join) { + return join.isValid(off, cch); } return false; @@ -607,12 +592,12 @@ public CharJoin( int depth = 0; - if (srcLeft instanceof CharJoin) { - depth = ((CharJoin) srcLeft)._depth; + if (srcLeft instanceof CharJoin join) { + depth = join._depth; } - if (srcRight instanceof CharJoin) { - int rightDepth = ((CharJoin) srcRight)._depth; + if (srcRight instanceof CharJoin join) { + int rightDepth = join._depth; if (rightDepth > depth) { depth = rightDepth; @@ -631,12 +616,12 @@ private int cchRight(int off, int cch) { public int depth() { int depth = 0; - if (_srcLeft instanceof CharJoin) { - depth = ((CharJoin) _srcLeft).depth(); + if (_srcLeft instanceof CharJoin join) { + depth = join.depth(); } - if (_srcRight instanceof CharJoin) { - depth = Math.max(((CharJoin) _srcRight).depth(), depth); + if (_srcRight instanceof CharJoin join) { + depth = Math.max(join.depth(), depth); } return depth + 1; @@ -812,8 +797,8 @@ public void movePos(int newPos) { _srcLeafChars = null; _srcLeafString = null; - if (src instanceof char[]) { - _srcLeafChars = (char[]) src; + if (src instanceof char[] chars) { + _srcLeafChars = chars; } else { _srcLeafString = (String) src; } diff --git a/src/main/java/org/apache/xmlbeans/impl/store/Cur.java b/src/main/java/org/apache/xmlbeans/impl/store/Cur.java index 180c7f616..8679e3023 100755 --- a/src/main/java/org/apache/xmlbeans/impl/store/Cur.java +++ b/src/main/java/org/apache/xmlbeans/impl/store/Cur.java @@ -545,7 +545,7 @@ void moveToDom(Dom d) { assert _locale == d.locale(); assert d instanceof Xobj || d instanceof SoapPartDom; - moveTo(d instanceof Xobj ? (Xobj) d : ((SoapPartDom) d)._docXobj); + moveTo(d instanceof Xobj x ? x : ((SoapPartDom) d)._docXobj); } static final class Locations { @@ -2929,8 +2929,8 @@ public void attr(QName name, String value) { Xobj doc = c1._xobj; c1.release(); _locale.exit(); - if (doc instanceof DocumentXobj) { - ((DocumentXobj) doc).addIdElement(value, + if (doc instanceof DocumentXobj xobj) { + xobj.addIdElement(value, x._parent.getDom()); } } @@ -3278,8 +3278,7 @@ private static void dumpBookmarks(PrintStream o, Xobj xo, Object ref) { o.print("*:"); } - if (b._value instanceof XmlLineNumber) { - XmlLineNumber l = (XmlLineNumber) b._value; + if (b._value instanceof XmlLineNumber l) { o.print("" + "[" + b._pos + "]"); } else { o.print("" + "[" + b._pos + "]"); diff --git a/src/main/java/org/apache/xmlbeans/impl/store/Cursor.java b/src/main/java/org/apache/xmlbeans/impl/store/Cursor.java index b29ef05c1..5095bb87c 100755 --- a/src/main/java/org/apache/xmlbeans/impl/store/Cursor.java +++ b/src/main/java/org/apache/xmlbeans/impl/store/Cursor.java @@ -1293,7 +1293,7 @@ static XmlBookmark getBookmark(Object key, Cur c) { Object bm = c.getBookmark(key); - return bm instanceof XmlBookmark ? (XmlBookmark) bm : null; + return bm instanceof XmlBookmark xb ? xb : null; } public XmlBookmark _getBookmark(Object key) { diff --git a/src/main/java/org/apache/xmlbeans/impl/store/DomImpl.java b/src/main/java/org/apache/xmlbeans/impl/store/DomImpl.java index e868b392e..a520087f3 100755 --- a/src/main/java/org/apache/xmlbeans/impl/store/DomImpl.java +++ b/src/main/java/org/apache/xmlbeans/impl/store/DomImpl.java @@ -2041,8 +2041,7 @@ public static void node_setNodeValue(Dom n, String nodeValue) { if (((AttrXobj) n).isId()) { Document d = DomImpl.node_getOwnerDocument(n); String val = node_getNodeValue(n); - if (d instanceof DocumentXobj) { - DocumentXobj dox = (DocumentXobj) d; + if (d instanceof DocumentXobj dox) { dox.removeIdElement(val); dox.addIdElement(nodeValue, (Dom) attr_getOwnerElement(n)); } @@ -2160,8 +2159,8 @@ public static boolean _node_isSameNode(Dom n, Node arg) { if (n instanceof CharNode) { // ret = ((CharNode)n).getDom().equals(arg); ret = n.equals(arg); - } else if (n instanceof NodeXobj) { - ret = ((NodeXobj) n).getDom().equals(arg); + } else if (n instanceof NodeXobj xobj) { + ret = xobj.getDom().equals(arg); } else { throw new DomLevel3NotImplemented(); } @@ -2714,8 +2713,8 @@ public static Node attributes_removeNamedItem(Dom e, String name) { if (((AttrXobj) aa).isId()) { Node d = DomImpl.node_getOwnerDocument(aa); String val = node_getNodeValue(aa); - if (d instanceof DocumentXobj) { - ((DocumentXobj) d).removeIdElement(val); + if (d instanceof DocumentXobj xobj) { + xobj.removeIdElement(val); } } removeNode(aa); @@ -2761,8 +2760,8 @@ public static Node attributes_removeNamedItemNS(Dom e, String uri, String local) if (((AttrXobj) aa).isId()) { Node d = DomImpl.node_getOwnerDocument(aa); String val = node_getNodeValue(aa); - if (d instanceof DocumentXobj) { - ((DocumentXobj) d).removeIdElement(val); + if (d instanceof DocumentXobj xobj) { + xobj.removeIdElement(val); } } removeNode(aa); diff --git a/src/main/java/org/apache/xmlbeans/impl/store/Locale.java b/src/main/java/org/apache/xmlbeans/impl/store/Locale.java index 5093ccd5e..4fe1ca434 100755 --- a/src/main/java/org/apache/xmlbeans/impl/store/Locale.java +++ b/src/main/java/org/apache/xmlbeans/impl/store/Locale.java @@ -135,10 +135,10 @@ public static Locale getLocale(SchemaTypeLoader stl, XmlOptions options) { Locale l; - if (source instanceof Locale) { - l = (Locale) source; - } else if (source instanceof XmlTokenSource) { - l = (Locale) ((XmlTokenSource) source).monitor(); + if (source instanceof Locale locale) { + l = locale; + } else if (source instanceof XmlTokenSource tokenSource) { + l = (Locale) tokenSource.monitor(); } else { throw new IllegalArgumentException("Source locale not understood: " + source); } diff --git a/src/main/java/org/apache/xmlbeans/impl/store/Saver.java b/src/main/java/org/apache/xmlbeans/impl/store/Saver.java index 58edaadef..0593b7ba0 100755 --- a/src/main/java/org/apache/xmlbeans/impl/store/Saver.java +++ b/src/main/java/org/apache/xmlbeans/impl/store/Saver.java @@ -2699,9 +2699,9 @@ protected void emitText(SaveCur c) { Object src = c.getChars(); try { - if (src instanceof char[]) { + if (src instanceof char[] chars) { // Pray the user does not modify the buffer .... - _contentHandler.characters((char[]) src, c._offSrc, c._cchSrc); + _contentHandler.characters(chars, c._offSrc, c._cchSrc); } else { if (_buf == null) { _buf = new char[1024]; @@ -2735,9 +2735,9 @@ protected void emitComment(SaveCur c) { } else { Object src = c.getChars(); - if (src instanceof char[]) { + if (src instanceof char[] chars) { // Pray the user does not modify the buffer .... - _lexicalHandler.comment((char[]) src, c._offSrc, c._cchSrc); + _lexicalHandler.comment(chars, c._offSrc, c._cchSrc); } else { if (_buf == null || _buf.length < c._cchSrc) { _buf = new char[java.lang.Math.max(1024, c._cchSrc)]; diff --git a/src/main/java/org/apache/xmlbeans/impl/tool/SchemaCompiler.java b/src/main/java/org/apache/xmlbeans/impl/tool/SchemaCompiler.java index 25b948864..5923d0b82 100644 --- a/src/main/java/org/apache/xmlbeans/impl/tool/SchemaCompiler.java +++ b/src/main/java/org/apache/xmlbeans/impl/tool/SchemaCompiler.java @@ -445,10 +445,10 @@ private static SchemaTypeSystem loadTypeSystem(String name, File[] xsdFiles, Fil XmlObject urldoc = loader.parse(urlFile, null, options); - if ((urldoc instanceof org.apache.xmlbeans.impl.xb.substwsdl.DefinitionsDocument)) { - addWsdlSchemas(urlFile.toString(), (org.apache.xmlbeans.impl.xb.substwsdl.DefinitionsDocument) urldoc, errorListener, noVDoc, scontentlist); - } else if ((urldoc instanceof SchemaDocument)) { - addSchema(urlFile.toString(), (SchemaDocument) urldoc, + if ((urldoc instanceof org.apache.xmlbeans.impl.xb.substwsdl.DefinitionsDocument wsdlDoc)) { + addWsdlSchemas(urlFile.toString(), wsdlDoc, errorListener, noVDoc, scontentlist); + } else if ((urldoc instanceof SchemaDocument schemaDoc)) { + addSchema(urlFile.toString(), schemaDoc, errorListener, noVDoc, scontentlist); } else { StscState.addError(errorListener, XmlErrorCodes.INVALID_DOCUMENT_TYPE, diff --git a/src/main/java/org/apache/xmlbeans/impl/tool/SchemaCopy.java b/src/main/java/org/apache/xmlbeans/impl/tool/SchemaCopy.java index 8cfc66f0e..dec477743 100644 --- a/src/main/java/org/apache/xmlbeans/impl/tool/SchemaCopy.java +++ b/src/main/java/org/apache/xmlbeans/impl/tool/SchemaCopy.java @@ -166,10 +166,10 @@ private static Map findRelativeInOne(URI source, URI target) { Map result = new LinkedHashMap<>(); - if (xobj instanceof SchemaDocument) { - putMappingsFromSchema(result, source, target, ((SchemaDocument) xobj).getSchema()); - } else if (xobj instanceof DefinitionsDocument) { - putMappingsFromWsdl(result, source, target, ((DefinitionsDocument) xobj).getDefinitions()); + if (xobj instanceof SchemaDocument schemaDoc) { + putMappingsFromSchema(result, source, target, schemaDoc.getSchema()); + } else if (xobj instanceof DefinitionsDocument wsdlDoc) { + putMappingsFromWsdl(result, source, target, wsdlDoc.getDefinitions()); } return result; } catch (Exception e) { diff --git a/src/main/java/org/apache/xmlbeans/impl/util/ExceptionUtil.java b/src/main/java/org/apache/xmlbeans/impl/util/ExceptionUtil.java index 2a5457f56..20086fef2 100644 --- a/src/main/java/org/apache/xmlbeans/impl/util/ExceptionUtil.java +++ b/src/main/java/org/apache/xmlbeans/impl/util/ExceptionUtil.java @@ -51,11 +51,11 @@ public static boolean isFatal(Throwable throwable) { * @param throwable to check */ public static void rethrow(Throwable throwable) { - if (throwable instanceof Error) { - throw (Error) throwable; + if (throwable instanceof Error error) { + throw error; } - if (throwable instanceof RuntimeException) { - throw (RuntimeException) throwable; + if (throwable instanceof RuntimeException exception) { + throw exception; } throw new RuntimeException(throwable); } diff --git a/src/main/java/org/apache/xmlbeans/impl/validator/Validator.java b/src/main/java/org/apache/xmlbeans/impl/validator/Validator.java index e69a4aab4..da7b8bfec 100644 --- a/src/main/java/org/apache/xmlbeans/impl/validator/Validator.java +++ b/src/main/java/org/apache/xmlbeans/impl/validator/Validator.java @@ -402,8 +402,7 @@ private void beginEvent(Event event) { } } - if (elementField instanceof SchemaLocalElement) { - SchemaLocalElement sle = (SchemaLocalElement) elementField; + if (elementField instanceof SchemaLocalElement sle) { _localElement = sle; if (sle.blockExtension() || sle.blockRestriction()) { @@ -427,8 +426,7 @@ private void beginEvent(Event event) { elementType = xsiType; } - if (elementField instanceof SchemaLocalElement) { - SchemaLocalElement sle = (SchemaLocalElement) elementField; + if (elementField instanceof SchemaLocalElement sle) { _localElement = sle; if (sle.isAbstract()) { @@ -487,8 +485,8 @@ private void beginEvent(Event event) { _constraintEngine.element( event, elementType, - elementField instanceof SchemaLocalElement - ? ((SchemaLocalElement) elementField).getIdentityConstraints() + elementField instanceof SchemaLocalElement sle + ? sle.getIdentityConstraints() : null); } @@ -712,9 +710,7 @@ private void handleText( if (!emptyContent && !state._canHaveMixedContent && !event.textIsWhitespace() && !state._hasSimpleContent) { - if (field instanceof SchemaLocalElement) { - SchemaLocalElement e = (SchemaLocalElement) field; - + if (field instanceof SchemaLocalElement e) { assert state._type.getContentType() == SchemaType.EMPTY_CONTENT || state._type.getContentType() == SchemaType.ELEMENT_CONTENT; @@ -1596,8 +1592,8 @@ public SchemaLocalElement getCurrentElement() { //try getting it from the stack (this should happen after END) - if (_stateStack != null && _stateStack._field instanceof SchemaLocalElement) { - return (SchemaLocalElement) _stateStack._field; + if (_stateStack != null && _stateStack._field instanceof SchemaLocalElement element) { + return element; } return null; diff --git a/src/main/java/org/apache/xmlbeans/impl/values/JavaGDateHolderEx.java b/src/main/java/org/apache/xmlbeans/impl/values/JavaGDateHolderEx.java index 58021b1b1..7f4a478e5 100644 --- a/src/main/java/org/apache/xmlbeans/impl/values/JavaGDateHolderEx.java +++ b/src/main/java/org/apache/xmlbeans/impl/values/JavaGDateHolderEx.java @@ -240,8 +240,8 @@ protected void set_GDate(GDateSpecification v) { GDate candidate; - if (v.isImmutable() && (v instanceof GDate) && v.getBuiltinTypeCode() == code) { - candidate = (GDate) v; + if (v.isImmutable() && (v instanceof GDate date) && v.getBuiltinTypeCode() == code) { + candidate = date; } else { // truncate extra fields from the date if necessary. if (v.getBuiltinTypeCode() != code) { diff --git a/src/main/java/org/apache/xmlbeans/impl/values/JavaGDurationHolderEx.java b/src/main/java/org/apache/xmlbeans/impl/values/JavaGDurationHolderEx.java index 8d2490417..9612dd2ab 100644 --- a/src/main/java/org/apache/xmlbeans/impl/values/JavaGDurationHolderEx.java +++ b/src/main/java/org/apache/xmlbeans/impl/values/JavaGDurationHolderEx.java @@ -52,8 +52,8 @@ protected void set_GDuration(GDurationSpecification v) { validateValue(v, _schemaType, _voorVc); } - if (v.isImmutable() && (v instanceof GDuration)) { - _value = (GDuration) v; + if (v.isImmutable() && (v instanceof GDuration duration)) { + _value = duration; } else { _value = new GDuration(v); } diff --git a/src/main/java/org/apache/xmlbeans/impl/values/NamespaceContext.java b/src/main/java/org/apache/xmlbeans/impl/values/NamespaceContext.java index cf8a37c07..6345ebdad 100644 --- a/src/main/java/org/apache/xmlbeans/impl/values/NamespaceContext.java +++ b/src/main/java/org/apache/xmlbeans/impl/values/NamespaceContext.java @@ -155,8 +155,8 @@ public String getNamespaceForPrefix(String prefix) if (Proxy.isProxyClass(obj.getClass())) obj = Proxy.getInvocationHandler(obj); - if (obj instanceof TypeStoreUser) - return ((TypeStoreUser)obj).get_store().getNamespaceForPrefix(prefix); + if (obj instanceof TypeStoreUser user) + return user.get_store().getNamespaceForPrefix(prefix); try (XmlCursor cur = ((XmlObject)_obj).newCursor()) { if (cur != null) diff --git a/src/main/java/org/apache/xmlbeans/impl/values/XmlListImpl.java b/src/main/java/org/apache/xmlbeans/impl/values/XmlListImpl.java index 1abe25f7f..0168ecdb2 100644 --- a/src/main/java/org/apache/xmlbeans/impl/values/XmlListImpl.java +++ b/src/main/java/org/apache/xmlbeans/impl/values/XmlListImpl.java @@ -51,7 +51,7 @@ private static String compute_list_text(List xList) } private static String object2String(Object o) { - String s = (o instanceof SimpleValue) ? ((SimpleValue) o).getStringValue() : o.toString(); + String s = (o instanceof SimpleValue sv) ? sv.getStringValue() : o.toString(); return (s == null) ? "" : s; } @@ -202,7 +202,7 @@ public void set_list(List list) { } Function fun = (entry) -> { - if ((entry instanceof XmlObject) && permits_inner_space((XmlObject) entry)) { + if ((entry instanceof XmlObject object) && permits_inner_space(object)) { String stringrep = entry.toString(); if (contains_white_space(stringrep)) { throw new XmlValueOutOfRangeException(); diff --git a/src/main/java/org/apache/xmlbeans/impl/values/XmlObjectBase.java b/src/main/java/org/apache/xmlbeans/impl/values/XmlObjectBase.java index b80f9f86f..e8cf9f0ea 100644 --- a/src/main/java/org/apache/xmlbeans/impl/values/XmlObjectBase.java +++ b/src/main/java/org/apache/xmlbeans/impl/values/XmlObjectBase.java @@ -55,14 +55,14 @@ private static XmlObjectBase underlying(XmlObject obj) { if (obj == null) { return null; } - if (obj instanceof XmlObjectBase) { - return (XmlObjectBase) obj; + if (obj instanceof XmlObjectBase base) { + return base; } while (obj instanceof DelegateXmlObject) { obj = ((DelegateXmlObject) obj).underlyingXmlObject(); } - if (obj instanceof XmlObjectBase) { - return (XmlObjectBase) obj; + if (obj instanceof XmlObjectBase base) { + return base; } throw new IllegalStateException("Non-native implementations of XmlObject should extend FilterXmlObject or implement DelegateXmlObject"); } @@ -1781,44 +1781,44 @@ public void setObjectValue(Object o) { return; } - if (o instanceof XmlObject) { - set((XmlObject) o); - } else if (o instanceof String) { - setStringValue((String) o); - } else if (o instanceof StringEnumAbstractBase) { - setEnumValue((StringEnumAbstractBase) o); - } else if (o instanceof BigInteger) { - setBigIntegerValue((BigInteger) o); - } else if (o instanceof BigDecimal) { - setBigDecimalValue((BigDecimal) o); - } else if (o instanceof Byte) { - setByteValue((Byte) o); - } else if (o instanceof Short) { - setShortValue((Short) o); - } else if (o instanceof Integer) { - setIntValue((Integer) o); - } else if (o instanceof Long) { - setLongValue((Long) o); - } else if (o instanceof Boolean) { - setBooleanValue((Boolean) o); - } else if (o instanceof Float) { - setFloatValue((Float) o); - } else if (o instanceof Double) { - setDoubleValue((Double) o); - } else if (o instanceof Calendar) { - setCalendarValue(((Calendar) o)); - } else if (o instanceof Date) { - setDateValue((Date) o); - } else if (o instanceof GDateSpecification) { - setGDateValue((GDateSpecification) o); - } else if (o instanceof GDurationSpecification) { - setGDurationValue((GDurationSpecification) o); - } else if (o instanceof QName) { - setQNameValue((QName) o); - } else if (o instanceof List) { - setListValue((List) o); - } else if (o instanceof byte[]) { - setByteArrayValue((byte[]) o); + if (o instanceof XmlObject v) { + set(v); + } else if (o instanceof String v) { + setStringValue(v); + } else if (o instanceof StringEnumAbstractBase v) { + setEnumValue(v); + } else if (o instanceof BigInteger v) { + setBigIntegerValue(v); + } else if (o instanceof BigDecimal v) { + setBigDecimalValue(v); + } else if (o instanceof Byte v) { + setByteValue(v); + } else if (o instanceof Short v) { + setShortValue(v); + } else if (o instanceof Integer v) { + setIntValue(v); + } else if (o instanceof Long v) { + setLongValue(v); + } else if (o instanceof Boolean v) { + setBooleanValue(v); + } else if (o instanceof Float v) { + setFloatValue(v); + } else if (o instanceof Double v) { + setDoubleValue(v); + } else if (o instanceof Calendar v) { + setCalendarValue(v); + } else if (o instanceof Date v) { + setDateValue(v); + } else if (o instanceof GDateSpecification v) { + setGDateValue(v); + } else if (o instanceof GDurationSpecification v) { + setGDurationValue(v); + } else if (o instanceof QName v) { + setQNameValue(v); + } else if (o instanceof List v) { + setListValue(v); + } else if (o instanceof byte[] v) { + setByteArrayValue(v); } else { throw new XmlValueNotSupportedException( @@ -1834,8 +1834,7 @@ public final void set_newValue(XmlObject obj) { } primitive: - if (obj instanceof XmlAnySimpleType) { - XmlAnySimpleType v = (XmlAnySimpleType) obj; + if (obj instanceof XmlAnySimpleType v) { SchemaType instanceType = ((SimpleValue) v).instanceType(); assert (instanceType != null) : "Nil case should have been handled already"; diff --git a/src/main/java/org/apache/xmlbeans/impl/values/XmlValueComparison.java b/src/main/java/org/apache/xmlbeans/impl/values/XmlValueComparison.java index 6b0b66be5..4e7e5904e 100644 --- a/src/main/java/org/apache/xmlbeans/impl/values/XmlValueComparison.java +++ b/src/main/java/org/apache/xmlbeans/impl/values/XmlValueComparison.java @@ -231,8 +231,8 @@ private static boolean values_equal(XmlObject a, XmlObject b) { } try { - if (a instanceof XmlObjectBase && b instanceof XmlObjectBase) { - return ((XmlObjectBase) a).value_equals_locked(b); + if (a instanceof XmlObjectBase base && b instanceof XmlObjectBase) { + return base.value_equals_locked(b); } return a.valueEquals(b); } catch (XmlValueOutOfRangeException e) { diff --git a/src/main/java/org/apache/xmlbeans/impl/xpath/saxon/SaxonXPath.java b/src/main/java/org/apache/xmlbeans/impl/xpath/saxon/SaxonXPath.java index c0362efee..e10022726 100644 --- a/src/main/java/org/apache/xmlbeans/impl/xpath/saxon/SaxonXPath.java +++ b/src/main/java/org/apache/xmlbeans/impl/xpath/saxon/SaxonXPath.java @@ -115,8 +115,8 @@ public List selectNodes(Object node) { List saxonNodes = xpath.evaluate(dc); List retNodes = new ArrayList<>(saxonNodes.size()); for (Item o : saxonNodes) { - if (o instanceof DOMNodeWrapper) { - Node n = getUnderlyingNode((DOMNodeWrapper) o); + if (o instanceof DOMNodeWrapper wrapper) { + Node n = getUnderlyingNode(wrapper); retNodes.add(n); } else if (o instanceof NodeInfo) { retNodes.add(o.getStringValue()); diff --git a/src/main/java/org/apache/xmlbeans/impl/xpath/saxon/SaxonXPathEngine.java b/src/main/java/org/apache/xmlbeans/impl/xpath/saxon/SaxonXPathEngine.java index 19fc5c02e..1462486f4 100644 --- a/src/main/java/org/apache/xmlbeans/impl/xpath/saxon/SaxonXPathEngine.java +++ b/src/main/java/org/apache/xmlbeans/impl/xpath/saxon/SaxonXPathEngine.java @@ -70,17 +70,17 @@ public boolean next(Cur c) { if (!(node instanceof Node)) { Object obj = resultsList.get(i); String value; - if (obj instanceof Date) { - value = xmlDateFormat.format((Date) obj); - } else if (obj instanceof GDateValue) { - value = ((GDateValue) obj).getStringValue(); - } else if (obj instanceof DateTimeValue) { - value = ((DateTimeValue) obj).getStringValue(); - } else if (obj instanceof BigDecimal) { - value = ((BigDecimal) obj).toPlainString(); - } else if (obj instanceof AtomicValue) { + if (obj instanceof Date date) { + value = xmlDateFormat.format(date); + } else if (obj instanceof GDateValue dateValue) { + value = dateValue.getStringValue(); + } else if (obj instanceof DateTimeValue timeValue) { + value = timeValue.getStringValue(); + } else if (obj instanceof BigDecimal decimal) { + value = decimal.toPlainString(); + } else if (obj instanceof AtomicValue atomicValue) { // e.g. DurationValue - since Saxon 13, toString() no longer returns the lexical form - value = ((AtomicValue) obj).getStringValue(); + value = atomicValue.getStringValue(); } else { value = obj.toString(); } diff --git a/src/main/java/org/apache/xmlbeans/impl/xpath/saxon/SaxonXQuery.java b/src/main/java/org/apache/xmlbeans/impl/xpath/saxon/SaxonXQuery.java index 54f26c041..72a4f95ad 100644 --- a/src/main/java/org/apache/xmlbeans/impl/xpath/saxon/SaxonXQuery.java +++ b/src/main/java/org/apache/xmlbeans/impl/xpath/saxon/SaxonXQuery.java @@ -188,8 +188,8 @@ public List execQuery(Object node, Map variableBindings) for (Map.Entry me : variableBindings.entrySet()) { StructuredQName key = new StructuredQName("", emptyUri, me.getKey()); Object value = me.getValue(); - if (value instanceof XmlTokenSource) { - Node paramObject = ((XmlTokenSource) value).getDomNode(); + if (value instanceof XmlTokenSource source) { + Node paramObject = source.getDomNode(); dc.setParameter(key, docWrapper.wrap(paramObject)); } else { try { @@ -204,8 +204,8 @@ public List execQuery(Object node, Map variableBindings) List saxonNodes = xquery.evaluate(dc); for (ListIterator it = saxonNodes.listIterator(); it.hasNext(); ) { Object o = it.next(); - if (o instanceof NodeInfo) { - Node n = NodeOverNodeInfo.wrap((NodeInfo) o); + if (o instanceof NodeInfo info) { + Node n = NodeOverNodeInfo.wrap(info); it.set(n); } } @@ -222,37 +222,36 @@ private static Item objectToItem(Object value, Configuration config) throws XPat } // convert to switch.. - if (value instanceof Boolean) { - return BooleanValue.get((Boolean) value); - } else if (value instanceof byte[]) { - return new HexBinaryValue((byte[]) value); - } else if (value instanceof Byte) { - return new Int64Value((Byte) value, BuiltInAtomicType.BYTE, false); - } else if (value instanceof Float) { - return new FloatValue((Float) value); - } else if (value instanceof Double) { - return new DoubleValue((Double) value); - } else if (value instanceof Integer) { - return new Int64Value((Integer) value, BuiltInAtomicType.INT, false); - } else if (value instanceof Long) { - return new Int64Value((Long) value, BuiltInAtomicType.LONG, false); - } else if (value instanceof Short) { - return new Int64Value((Short) value, BuiltInAtomicType.SHORT, false); - } else if (value instanceof String) { - return new StringValue((String) value); - } else if (value instanceof BigDecimal) { - return new BigDecimalValue((BigDecimal) value); - } else if (value instanceof BigInteger) { - return new BigIntegerValue((BigInteger) value); - } else if (value instanceof SaxonDuration) { - return ((SaxonDuration) value).getDurationValue(); + if (value instanceof Boolean v) { + return BooleanValue.get(v); + } else if (value instanceof byte[] v) { + return new HexBinaryValue(v); + } else if (value instanceof Byte v) { + return new Int64Value(v, BuiltInAtomicType.BYTE, false); + } else if (value instanceof Float v) { + return new FloatValue(v); + } else if (value instanceof Double v) { + return new DoubleValue(v); + } else if (value instanceof Integer v) { + return new Int64Value(v, BuiltInAtomicType.INT, false); + } else if (value instanceof Long v) { + return new Int64Value(v, BuiltInAtomicType.LONG, false); + } else if (value instanceof Short v) { + return new Int64Value(v, BuiltInAtomicType.SHORT, false); + } else if (value instanceof String v) { + return new StringValue(v); + } else if (value instanceof BigDecimal v) { + return new BigDecimalValue(v); + } else if (value instanceof BigInteger v) { + return new BigIntegerValue(v); + } else if (value instanceof SaxonDuration v) { + return v.getDurationValue(); } else if (value instanceof Duration) { // this is simpler and safer (but perhaps slower) than extracting all the components return DurationValue.makeDuration(StringView.tidy(value.toString())).asAtomic(); - } else if (value instanceof SaxonXMLGregorianCalendar) { - return ((SaxonXMLGregorianCalendar) value).toCalendarValue(); - } else if (value instanceof XMLGregorianCalendar) { - XMLGregorianCalendar g = (XMLGregorianCalendar) value; + } else if (value instanceof SaxonXMLGregorianCalendar v) { + return v.toCalendarValue(); + } else if (value instanceof XMLGregorianCalendar g) { QName gtype = g.getXMLSchemaType(); if (gtype.equals(DatatypeConstants.DATETIME)) { return DateTimeValue.makeDateTimeValue(StringView.tidy(value.toString()), @@ -282,14 +281,13 @@ private static Item objectToItem(Object value, Configuration config) throws XPat } else { throw new AssertionError("Unknown Gregorian date type"); } - } else if (value instanceof QName) { - QName q = (QName) value; + } else if (value instanceof QName q) { return new QNameValue(q.getPrefix(), NamespaceUri.of(q.getNamespaceURI()), q.getLocalPart()); //BuiltInAtomicType.QNAME, null); } else if (value instanceof URI) { return new AnyURIValue(value.toString()); - } else if (value instanceof Map) { + } else if (value instanceof Map map) { GeneralMapBuilder mb = new GeneralMapBuilder(config.getMapSpecVersion()); - for (Map.Entry me : ((Map) value).entrySet()) { + for (Map.Entry me : map.entrySet()) { mb.put( (AtomicValue) objectToItem(me.getKey(), config), objectToItem(me.getValue(), config)); diff --git a/xkit/README.txt b/xkit/README.txt index ec1f5c5c1..9e79ec107 100644 --- a/xkit/README.txt +++ b/xkit/README.txt @@ -22,7 +22,7 @@ Welcome to XMLBeans! Kit contents: (1) One copy of xmlbeans-5.2.2.jar, which contains XMLBeans. - Should work on any JDK 1.8.x or newer. + Should work on any JDK 17 or newer. ./lib/xmlbeans-5.2.2.jar (2) License information for XML Beans and included libraries @@ -44,7 +44,7 @@ Where to start? (1) Setup. - 1. Make sure you have a JDK 1.8.x or later installed; that + 1. Make sure you have a JDK 17 or later installed; that java[.exe] is on your path and that JAVA_HOME/bin contains java[.exe], javac[.exe], and jar[.exe].