Issue 121192

Summary: service EnumerableMap is too restrictive on data types
Product: App Dev Reporter: bmarcelly <marcelly.bernard>
Component: apiAssignee: AOO issues mailing list <issues>
Status: UNCONFIRMED --- QA Contact:
Severity: Normal    
Priority: P3 CC: issues, marcelly.bernard
Version: 3.3.0 or older (OOo)   
Target Milestone: ---   
Hardware: All   
OS: All   
Issue Type: DEFECT Latest Confirmation in: ---
Developer Difficulty: ---

Description bmarcelly 2012-10-10 10:20:47 UTC
If an enumerable map is declared as using a value of type long, it will not accept in Basic a value like 1234, because it is interpreted as short.
This probably happens with other language bindings.
Example:

Option Explicit

Sub Main
' Needs AOO 3.4.1 that solves Bug 116184
Dim dico As Object, enu As Object, elem As Variant, ville As String

dico = com.sun.star.container.EnumerableMap.create("string", "long")
dico.put("Angers",   49000) ' key "Angers", Item 49000

dico.put("Foix", 9000) ' throws IllegalTypeException ***

dico.put("Foix", CreateUnoValue("long", 9000)) ' works, but cumbersome
End Sub

The same problem can also happen with keys.
Keys and values handling should use the service c.s.s.script.Converter to widen from one type to another when it is possible (e.g. short > long or long > double).