-
Task
-
Resolution: Not an issue
-
Neutral
-
None
-
None
-
None
-
-
Empty show more show less
-
Empty show more show less
-
Basel 154
-
3
This is a follow-up issue to MGNLUI-4519. To reproduce
- enable the new content-app.yml's configuration for a single select (combo box) i.e.
class: info.magnolia.ui.databinding.definition.JcrSingleSelectFieldDefinition datasource: class: info.magnolia.ui.datasource.jcr.JcrDatasourceDefinition workspace: contacts describeByProperty: lastName allowedNodeTypes: - mgnl:contact
- try to select an item
The following ClassCastException occurs
Caused by: java.lang.ClassCastException: Cannot cast java.lang.String to javax.jcr.Node at java.lang.Class.cast(Class.java:3369) ~[?:1.8.0_131] at com.vaadin.data.Binder$BindingBuilderImpl.lambda$createConverter$f6099586$1(Binder.java:864) ~[vaadin-server-8.4.2.jar:8.4.2] at com.vaadin.data.Converter.lambda$null$fdd4de71$1(Converter.java:105) ~[vaadin-server-8.4.2.jar:8.4.2] at com.vaadin.data.Result.of(Result.java:91) ~[vaadin-server-8.4.2.jar:8.4.2] at com.vaadin.data.Converter.lambda$from$28ca080b$1(Converter.java:105) ~[vaadin-server-8.4.2.jar:8.4.2] at com.vaadin.data.Converter$1.convertToModel(Converter.java:131) ~[vaadin-server-8.4.2.jar:8.4.2] at com.vaadin.data.Converter$2.lambda$convertToModel$5daf174e$1(Converter.java:167) ~[vaadin-server-8.4.2.jar:8.4.2] at com.vaadin.data.SimpleResult.flatMap(SimpleResult.java:66) ~[vaadin-server-8.4.2.jar:8.4.2] at com.vaadin.data.ValidationResultWrap.flatMap(ValidationResultWrap.java:66) ~[vaadin-server-8.4.2.jar:8.4.2] at com.vaadin.data.Converter$2.convertToModel(Converter.java:167) ~[vaadin-server-8.4.2.jar:8.4.2] at com.vaadin.data.Binder$BindingImpl.doConversion(Binder.java:1097) ~[vaadin-server-8.4.2.jar:8.4.2] at com.vaadin.data.Binder$BindingImpl.doValidation(Binder.java:1114) ~[vaadin-server-8.4.2.jar:8.4.2] at com.vaadin.data.Binder$BindingImpl.validate(Binder.java:1061) ~[vaadin-server-8.4.2.jar:8.4.2] at com.vaadin.data.Binder$Binding.validate(Binder.java:135) ~[vaadin-server-8.4.2.jar:8.4.2]
From a first debugging session it looks something is wrong with the binding configuration. Upon selecting an item, the Vaadin's validation process kicks in and chained converters are invoked. At some point, JcrItemToLinkConverter is called and correctly converts the presentation type (JCR Node) into its model (an identifier, i.e. String). Then, other validators are called and some internal Vaadin converter expects again a Node but gets a String, hence ClassCastEx. Possibly the binding per locale implementation is messing up things due to an incomplete converter configuration?
See info.magnolia.ui.framework.databinding.view.FormView as a starting point for the logic creating the Binder per Locale.
- is related to
-
MGNLUI-4519 Migrate select fields to Vaadin 8
- Closed