[ 
https://issues.apache.org/jira/browse/XMLBEANS-599?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
 ]

PJ Fanning resolved XMLBEANS-599.
---------------------------------
      Assignee: PJ Fanning
    Resolution: Fixed

I have changed the code in svn and it will appear in 5.1.0 release. Feel free 
to try it out by building xmlbeans yourself or try jars from 
https://ci-builds.apache.org/job/POI/job/POI-XMLBeans-DSL-1.8/

> Line breaks in base64binary cause a validation error
> ----------------------------------------------------
>
>                 Key: XMLBEANS-599
>                 URL: https://issues.apache.org/jira/browse/XMLBEANS-599
>             Project: XMLBeans
>          Issue Type: Bug
>    Affects Versions: Version 5.0.3
>            Reporter: Daniel Hengst
>            Assignee: PJ Fanning
>            Priority: Major
>             Fix For: Version 5.1.0
>
>          Time Spent: 10m
>  Remaining Estimate: 0h
>
> When trying to migrate from XmlBeans 3.1.0 to 5.0.3 the following issue 
> caused some unit tests to fail:
>  
> The XML data contains elements of type base64binary which have line breaks.
> Validation via XmlObject.validate() now returns an error:
> "error: base64Binary: Invalid value: not encoded properly".
> The error originates from the class 
> org.apache.xmlbeans.impl.values.JavaBase64Holder:
> {code:java}
>     public static byte[] lex(String v, ValidationContext c) {
>         try {
>             return Base64.getDecoder().decode(v);
>         } catch (IllegalArgumentException var3) {
>             c.invalid("base64Binary", new Object[]{"not encoded properly"});
>             return null;
>         }
>     }
> {code}
> The decode call fails with an IllegalArgumentException "Illegal base64 
> character 20".
> (It's character 20 because XmlBeans converts the line break to a space in 
> XmlWhitespace.collapse().)
> The definition of the base64binary type allows for the presence of whitespace
> [https://www.w3.org/TR/xmlschema-2/#base64Binary]
> Therefore I'd suggest to change the Base64 call as follows:
> {code:java}
> Base64.getMimeDecoder().decode(v);
> {code}



--
This message was sent by Atlassian Jira
(v8.20.1#820001)

---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]

Reply via email to