[ 
https://issues.apache.org/jira/browse/XALANJ-2618?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=17811344#comment-17811344
 ] 

Joe Kesselman edited comment on XALANJ-2618 at 1/26/24 5:18 PM:
----------------------------------------------------------------

Or perhaps: Change the properties file so both java and mime name columns can 
be lists, with the rule that the first choice from the list is the preferred 
match.:

ISO8859-1,ISO8859_1,8859-1,1159_1     ISO-8859-1     0x00FF

and build the hashmaps so all the mime keys map to the first java key and all 
the java keys map to the first mime key.

May be overkill.

Or, to get that same behavior out of what we have now, just change the hashmap 
builder so it doesn't overwrite an existing entry for that key. The first 
instance of each key will define that key's behavior. Then the later 
alternative syntaxes only affect mapping from what's new, rather than 
overwriting what has already been asserted. (Looks like simply replacing put() 
with putIfAbsent() would have that effect.)


was (Author: JIRAUSER285361):
Or perhaps: Change the properties file so both java and mime name columns can 
be lists, with the rule that the first choice from the list is the preferred 
match.:

ISO8859-1,ISO8859_1,8859-1,1159_1     ISO-8859-1     0x00FF

and build the hashmaps so all the mime keys map to the first java key and all 
the java keys map to the first mime key.

May be overkill.

Or, to get that same behavior out of what we have now, just change the hashmap 
builder so it doesn't overwrite an existing entry for that key. The first 
instance of each key will define that key's behavior. Then the later 
alternative syntaxes only affect mapping from what's new, rather than 
overwriting what has already been asserted.

> Error in org/apache/xml/serializer/Encodings.properties
> -------------------------------------------------------
>
>                 Key: XALANJ-2618
>                 URL: https://issues.apache.org/jira/browse/XALANJ-2618
>             Project: XalanJ2
>          Issue Type: Bug
>      Security Level: No security risk; visible to anyone(Ordinary problems in 
> Xalan projects.  Anybody can view the issue.) 
>          Components: Serialization, transformation
>    Affects Versions: 2.7.2
>         Environment: Java 11
>            Reporter: Simon Schaarschmidt
>            Assignee: Steven J. Hathaway
>            Priority: Major
>              Labels: Java11
>
> We transform and serialize using encoding ISO-8859-1. With JDK 1.8 all is 
> fine, but with OpenJDK 11 the result will be written (from class 
> ToTextStream) in character references, e.g. 
> "*id=1*" instead of "*id=1*".
> In org/apache/xml/serializer/Encodings.properties (serializer.jar) are 
> various encodings defined, e.g.
> {{ISO8859-1  ISO-8859-1  0x00FF}}
> {{ISO8859_1  ISO-8859-1  0x00FF}}
> {{{color:#ff0000}8859-1{color}     ISO-8859-1  0x00FF}}
> {{{color:#ff0000}8859_1{color}     ISO-8859-1  0x00FF}}
> First value: Java encoding name
> Second value: comma separated preferred mime names.
> The class org.apache.xml.serializer.Encodings reads this file in a Properties 
> object and processes the definitions to create EncodingInfo objects and puts 
> them (see method loadEncodingInfo()) into the member fields 
> __encodingTableKeyJava_ and __encodingTableKeyMime_ (both Hashtable). 
> Especially putting Elements into _encodingTableKeyMime is critical because 
> there is not a 1:1 mapping and the latest returned Properties.keys() element 
> replaces the previous ElementInfo object.
> Until Java 1.8 the first line from above is the latest entry in Enumeration, 
> therefor _encodingTableKeyMime returns the EncodingInfo object with Java 
> encoding "{color:#14892c}ISO8859-1{color}" for encoding "ISO-8859-1". With 
> Java 11 the elements of the Enumeration returned by Properties.keys() has a 
> different order: the third line from above is the latest entry! Therefor 
> _encodingTableKeyMime returns the EncodingInfo object with Java encoding 
> "*{color:#ff0000}8859-1{color}*" when asking for encoding "ISO-8859-1". But: 
> "8859-1" ist not a valid Java encoding name! Method 
> EncodingInfo.inEncoding(char,String) fails internally with an 
> *UnsupportedEncodingException* and returns false.
> The methods in class Encodings first searches EncodingInfo object in 
> _encodingTableKeyJava and uses elements from _encodingTableKeyMime as 
> fallback.
> I suggest the definitions in Encodings.properties must be extended with 
> additional lines, e.g.
> {{*{color:#14892c}ISO-8859-1{color}* ISO-8859-1  0x00FF}}
> Also for encodings ISO-8859-2..9. Or all entries with Java encoding name 
> "8859*" should be removed. (They are not valid Java encoding names - 
> UnsupportedEncodingException!)
> Finally I think, the current mechanism of collecting the EncodingInfo objects 
> using two Hashtables is critical.



--
This message was sent by Atlassian Jira
(v8.20.10#820010)

---------------------------------------------------------------------
To unsubscribe, e-mail: dev-unsubscr...@xalan.apache.org
For additional commands, e-mail: dev-h...@xalan.apache.org

Reply via email to