This is an automated email from the ASF dual-hosted git repository.

coheigea pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/ws-xmlschema.git


The following commit(s) were added to refs/heads/master by this push:
     new c5d996e4 Read "1" and surrounding whitespace as true for xs:boolean 
attributes (#176)
c5d996e4 is described below

commit c5d996e42768a03c480e5160294c6a76eed89d6e
Author: Colm O hEigeartaigh <[email protected]>
AuthorDate: Thu Sep 24 15:00:55 2026 +0100

    Read "1" and surrounding whitespace as true for xs:boolean attributes (#176)
---
 .../apache/ws/commons/schema/SchemaBuilder.java    | 36 ++++++++++------------
 .../apache/ws/commons/schema/XmlSchemaFacet.java   |  5 +--
 2 files changed, 17 insertions(+), 24 deletions(-)

diff --git 
a/xmlschema-core/src/main/java/org/apache/ws/commons/schema/SchemaBuilder.java 
b/xmlschema-core/src/main/java/org/apache/ws/commons/schema/SchemaBuilder.java
index c4ff118e..8aa39151 100644
--- 
a/xmlschema-core/src/main/java/org/apache/ws/commons/schema/SchemaBuilder.java
+++ 
b/xmlschema-core/src/main/java/org/apache/ws/commons/schema/SchemaBuilder.java
@@ -195,6 +195,17 @@ public class SchemaBuilder {
         }
     }
 
+    /**
+     * Reads an xs:boolean attribute value. XML Schema allows "1" as well as 
"true", and surrounding
+     * whitespace, so taking only "true" read abstract="1" or nillable=" true 
" as false and dropped
+     * the setting from the model. As before, "true" is accepted in any case, 
and a value that is
+     * not a boolean at all is read as false.
+     */
+    static boolean parseBoolean(String value) {
+        final String trimmed = value.trim();
+        return "true".equalsIgnoreCase(trimmed) || "1".equals(trimmed);
+    }
+
     private static int getIntProperty(String name, int defaultValue) {
         try {
             Integer value = Integer.getInteger(name);
@@ -437,20 +448,10 @@ public class SchemaBuilder {
             ct.setFinal(XmlSchemaDerivationMethod.schemaValueOf(finalstr));
         }
         if (complexEl.hasAttribute("abstract")) {
-            String abs = complexEl.getAttribute("abstract");
-            if (abs.equalsIgnoreCase("true")) {
-                ct.setAbstract(true);
-            } else {
-                ct.setAbstract(false);
-            }
+            ct.setAbstract(parseBoolean(complexEl.getAttribute("abstract")));
         }
         if (complexEl.hasAttribute("mixed")) {
-            String mixed = complexEl.getAttribute("mixed");
-            if (mixed.equalsIgnoreCase("true")) {
-                ct.setMixed(true);
-            } else {
-                ct.setMixed(false);
-            }
+            ct.setMixed(parseBoolean(complexEl.getAttribute("mixed")));
         }
 
         // process extra attributes and elements
@@ -562,7 +563,7 @@ public class SchemaBuilder {
         }
 
         if (el.hasAttribute("abstract")) {
-            
element.setAbstractElement(Boolean.valueOf(el.getAttribute("abstract")).booleanValue());
+            
element.setAbstractElement(parseBoolean(el.getAttribute("abstract")));
         }
 
         if (el.hasAttribute("block")) {
@@ -586,7 +587,7 @@ public class SchemaBuilder {
         }
 
         if (el.hasAttribute("nillable")) {
-            
element.setNillable(Boolean.valueOf(el.getAttribute("nillable")).booleanValue());
+            element.setNillable(parseBoolean(el.getAttribute("nillable")));
         }
 
         if (el.hasAttribute("substitutionGroup")) {
@@ -1313,12 +1314,7 @@ public class SchemaBuilder {
         }
 
         if (complexEl.hasAttribute("mixed")) {
-            String mixed = complexEl.getAttribute("mixed");
-            if (mixed.equalsIgnoreCase("true")) {
-                complexContent.setMixed(true);
-            } else {
-                complexContent.setMixed(false);
-            }
+            
complexContent.setMixed(parseBoolean(complexEl.getAttribute("mixed")));
         }
 
         return complexContent;
diff --git 
a/xmlschema-core/src/main/java/org/apache/ws/commons/schema/XmlSchemaFacet.java 
b/xmlschema-core/src/main/java/org/apache/ws/commons/schema/XmlSchemaFacet.java
index 6a1000e8..ba5d6a7a 100644
--- 
a/xmlschema-core/src/main/java/org/apache/ws/commons/schema/XmlSchemaFacet.java
+++ 
b/xmlschema-core/src/main/java/org/apache/ws/commons/schema/XmlSchemaFacet.java
@@ -45,10 +45,7 @@ public abstract class XmlSchemaFacet extends 
XmlSchemaAnnotated {
 
     public static XmlSchemaFacet construct(Element el) {
         String name = el.getLocalName();
-        boolean fixed = false;
-        if (el.getAttribute("fixed").equals("true")) {
-            fixed = true;
-        }
+        boolean fixed = SchemaBuilder.parseBoolean(el.getAttribute("fixed"));
         XmlSchemaFacet facet;
         if ("enumeration".equals(name)) {
             facet = new XmlSchemaEnumerationFacet();

Reply via email to