[MGNLUI-3783] SwitchableField can't have a DamUploadField Created: 18/Feb/16  Updated: 14/Apr/16  Resolved: 14/Apr/16

Status: Closed
Project: Magnolia UI
Component/s: None
Affects Version/s: 5.4.4
Fix Version/s: None

Type: Bug Priority: Major
Reporter: Ugo La Giorgia Assignee: Ngoc Nguyenthanh
Resolution: Workaround exists Votes: 0
Labels: None
Remaining Estimate: 0d
Time Spent: 1d 0.5h
Original Estimate: 3.5h
Environment:

Windows


Attachments: File media-image.yaml     Text File stacktrace.txt     PNG File switchableFieldIssue.png    
Issue Links:
relation
is related to MGNLUI-2974 SwitchableField can't have a BasicUpl... Closed
Template:
Acceptance criteria:
Empty
Task DoD:
[ ]* Doc/release notes changes? Comment present?
[ ]* Downstream builds green?
[ ]* Solution information and context easily available?
[ ]* Tests
[ ]* FixVersion filled and not yet released
[ ]  Architecture Decision Record (ADR)
Bug DoR:
[ ]* Steps to reproduce, expected, and actual results filled
[ ]* Affected version filled
Date of First Response:
Sprint: Saigon 39
Story Points: 8

 Description   

ClassCastException occurs when DAMUploadField is added into SwitchableField.

I have uncluded the dialog configuration in YAML format

See stacktrace in attachment



 Comments   
Comment by Ugo La Giorgia [ 18/Feb/16 ]

Said it was fixed in 5.3 but apparently still an issue in 5.4.2 and in 5.4.4

Comment by Hieu Nguyen Duc [ 14/Apr/16 ]

I've reproduced it in 5.3.12. The error still occurs. Using DelegatingCompositeFieldTransformer fixes the problem.

2016-04-14 13:33:52,432 WARN  info.magnolia.event.SimpleEventBus                : Exception caught when dispatching a class info.magnolia.ui.api.location.LocationChangedEvent event with class info.magnolia.ui.framework.app.AppControllerImpl eventHandler.
java.lang.ClassCastException: info.magnolia.ui.vaadin.integration.NullItem cannot be cast to info.magnolia.ui.vaadin.integration.jcr.JcrNodeAdapter
	at info.magnolia.ui.form.field.transformer.item.FileTransformer.getRootItem(FileTransformer.java:252)
	at info.magnolia.ui.form.field.transformer.item.FileTransformer.readFromItem(FileTransformer.java:123)
	at info.magnolia.ui.form.field.transformer.item.FileTransformer.readFromItem(FileTransformer.java:77)
	at info.magnolia.ui.form.field.transformer.TransformedProperty.<init>(TransformedProperty.java:59)
	at info.magnolia.ui.form.field.factory.AbstractFieldFactory.initializeProperty(AbstractFieldFactory.java:233)
	at info.magnolia.ui.form.field.factory.AbstractFieldFactory.createField(AbstractFieldFactory.java:114)
	at info.magnolia.ui.form.field.AbstractCustomMultiField.createLocalField(AbstractCustomMultiField.java:180)
	at info.magnolia.ui.form.field.SwitchableField.initFields(SwitchableField.java:111)
	at info.magnolia.ui.form.field.SwitchableField.initFields(SwitchableField.java:64)
	at info.magnolia.ui.form.field.AbstractCustomMultiField.initFields(AbstractCustomMultiField.java:145)
	at info.magnolia.ui.form.field.SwitchableField.initContent(SwitchableField.java:96)
	at com.vaadin.ui.CustomField.getContent(CustomField.java:92)
	at com.vaadin.ui.CustomField.attach(CustomField.java:82)
	at com.vaadin.server.AbstractClientConnector.attach(AbstractClientConnector.java:583)
	at com.vaadin.ui.AbstractComponent.attach(AbstractComponent.java:571)
	at com.vaadin.server.AbstractClientConnector.attach(AbstractClientConnector.java:583)
	at com.vaadin.ui.AbstractComponent.attach(AbstractComponent.java:571)
	at com.vaadin.server.AbstractClientConnector.attach(AbstractClientConnector.java:583)
	at com.vaadin.ui.AbstractComponent.attach(AbstractComponent.java:571)
	at com.vaadin.server.AbstractClientConnector.attach(AbstractClientConnector.java:583)
	at com.vaadin.ui.AbstractComponent.attach(AbstractComponent.java:571)
	at com.vaadin.server.AbstractClientConnector.attach(AbstractClientConnector.java:583)
	at com.vaadin.ui.AbstractComponent.attach(AbstractComponent.java:571)
	at com.vaadin.server.AbstractClientConnector.attach(AbstractClientConnector.java:583)
	at com.vaadin.ui.AbstractComponent.attach(AbstractComponent.java:571)
	at com.vaadin.server.AbstractClientConnector.attach(AbstractClientConnector.java:583)
	at com.vaadin.ui.AbstractComponent.attach(AbstractComponent.java:571)
	at com.vaadin.server.AbstractClientConnector.attach(AbstractClientConnector.java:583)
	at com.vaadin.ui.AbstractComponent.attach(AbstractComponent.java:571)
	at com.vaadin.server.AbstractClientConnector.attach(AbstractClientConnector.java:583)
	at com.vaadin.ui.AbstractComponent.attach(AbstractComponent.java:571)
	at com.vaadin.ui.AbstractComponent.setParent(AbstractComponent.java:478)
	at com.vaadin.ui.AbstractComponentContainer.addComponent(AbstractComponentContainer.java:215)
	at info.magnolia.ui.vaadin.magnoliashell.DeckLayout.addComponent(DeckLayout.java:60)
	at info.magnolia.ui.vaadin.magnoliashell.DeckLayout.display(DeckLayout.java:52)
	at info.magnolia.ui.vaadin.magnoliashell.viewport.ShellViewport.display(ShellViewport.java:69)
	at info.magnolia.ui.vaadin.magnoliashell.viewport.ShellViewport.setView(ShellViewport.java:59)
	at info.magnolia.ui.framework.app.AppControllerImpl.onLocationChanged(AppControllerImpl.java:339)
	at info.magnolia.ui.api.location.LocationChangedEvent.dispatch(LocationChangedEvent.java:64)
	at info.magnolia.ui.api.location.LocationChangedEvent.dispatch(LocationChangedEvent.java:42)
	at info.magnolia.event.SimpleEventBus.fireEvent(SimpleEventBus.java:78)
	at info.magnolia.ui.api.location.LocationController.goToWithoutChecks(LocationController.java:103)
	at info.magnolia.ui.api.location.LocationController.goTo(LocationController.java:97)
	at info.magnolia.ui.framework.app.AppControllerImpl.onLocationChanged(AppControllerImpl.java:329)
	at info.magnolia.ui.api.location.LocationChangedEvent.dispatch(LocationChangedEvent.java:64)
	at info.magnolia.ui.api.location.LocationChangedEvent.dispatch(LocationChangedEvent.java:42)
	at info.magnolia.event.SimpleEventBus.fireEvent(SimpleEventBus.java:78)
	at info.magnolia.ui.api.location.LocationController.goToWithoutChecks(LocationController.java:103)
	at info.magnolia.ui.api.location.LocationController.goTo(LocationController.java:97)
	at info.magnolia.ui.api.location.LocationHistoryHandler.handleFragment(LocationHistoryHandler.java:120)
	at info.magnolia.ui.api.location.LocationHistoryHandler.access$100(LocationHistoryHandler.java:49)
	at info.magnolia.ui.api.location.LocationHistoryHandler$1.onFragmentChanged(LocationHistoryHandler.java:79)
	at info.magnolia.ui.api.shell.FragmentChangedEvent.dispatch(FragmentChangedEvent.java:55)
	at info.magnolia.ui.api.shell.FragmentChangedEvent.dispatch(FragmentChangedEvent.java:41)
	at info.magnolia.event.EventHandlerCollection.dispatch(EventHandlerCollection.java:72)
	at info.magnolia.ui.framework.shell.ShellImpl$2.onFragmentChanged(ShellImpl.java:130)
	at info.magnolia.ui.vaadin.magnoliashell.MagnoliaShell.notifyOnFragmentChanged(MagnoliaShell.java:260)
	at info.magnolia.ui.framework.shell.ShellImpl.goToApp(ShellImpl.java:262)
	at info.magnolia.ui.framework.shell.ShellImpl.access$500(ShellImpl.java:78)
	at info.magnolia.ui.framework.shell.ShellImpl$2.goToApp(ShellImpl.java:150)
	at info.magnolia.ui.vaadin.magnoliashell.MagnoliaShell.goToApp(MagnoliaShell.java:130)
	at info.magnolia.ui.vaadin.magnoliashell.rpc.MagnoliaShellRpcDelegate.activateApp(MagnoliaShellRpcDelegate.java:68)
	at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
	at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
	at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
	at java.lang.reflect.Method.invoke(Method.java:497)
	at com.vaadin.server.ServerRpcManager.applyInvocation(ServerRpcManager.java:168)
	at com.vaadin.server.ServerRpcManager.applyInvocation(ServerRpcManager.java:118)
	at com.vaadin.server.communication.ServerRpcHandler.handleBurst(ServerRpcHandler.java:214)
	at com.vaadin.server.communication.ServerRpcHandler.handleRpc(ServerRpcHandler.java:111)
	at com.vaadin.server.communication.UidlRequestHandler.synchronizedHandleRequest(UidlRequestHandler.java:91)
	at com.vaadin.server.SynchronizedRequestHandler.handleRequest(SynchronizedRequestHandler.java:37)
	at com.vaadin.server.VaadinService.handleRequest(VaadinService.java:1371)
	at com.vaadin.server.VaadinServlet.service(VaadinServlet.java:238)
	at info.magnolia.ui.admincentral.AdmincentralVaadinServlet.service(AdmincentralVaadinServlet.java:136)
	at javax.servlet.http.HttpServlet.service(HttpServlet.java:731)
	at info.magnolia.cms.filters.ServletDispatchingFilter.doFilter(ServletDispatchingFilter.java:148)
	at info.magnolia.cms.filters.AbstractMgnlFilter.doFilter(AbstractMgnlFilter.java:85)
	at info.magnolia.cms.filters.MgnlFilterChain.doFilter(MgnlFilterChain.java:80)
	at info.magnolia.cms.filters.MgnlFilterChain.doFilter(MgnlFilterChain.java:82)
	at info.magnolia.cms.filters.MgnlFilterChain.doFilter(MgnlFilterChain.java:82)
	at info.magnolia.cms.filters.MgnlFilterChain.doFilter(MgnlFilterChain.java:82)
	at info.magnolia.cms.filters.MgnlFilterChain.doFilter(MgnlFilterChain.java:82)
	at info.magnolia.cms.filters.MgnlFilterChain.doFilter(MgnlFilterChain.java:82)
	at info.magnolia.cms.filters.CompositeFilter.doFilter(CompositeFilter.java:65)
	at info.magnolia.cms.filters.AbstractMgnlFilter.doFilter(AbstractMgnlFilter.java:85)
	at info.magnolia.cms.filters.MgnlFilterChain.doFilter(MgnlFilterChain.java:80)
	at info.magnolia.cms.filters.VirtualUriFilter.doFilter(VirtualUriFilter.java:68)
	at info.magnolia.cms.filters.AbstractMgnlFilter.doFilter(AbstractMgnlFilter.java:85)
	at info.magnolia.cms.filters.MgnlFilterChain.doFilter(MgnlFilterChain.java:80)
	at info.magnolia.module.cache.executor.Bypass.processCacheRequest(Bypass.java:58)
	at info.magnolia.module.cache.executor.CompositeExecutor.processCacheRequest(CompositeExecutor.java:66)
	at info.magnolia.module.cache.filter.CacheFilter.doFilter(CacheFilter.java:152)
	at info.magnolia.cms.filters.OncePerRequestAbstractMgnlFilter.doFilter(OncePerRequestAbstractMgnlFilter.java:58)
	at info.magnolia.cms.filters.MgnlFilterChain.doFilter(MgnlFilterChain.java:80)
	at info.magnolia.cms.i18n.I18nContentSupportFilter.doFilter(I18nContentSupportFilter.java:73)
	at info.magnolia.cms.filters.AbstractMgnlFilter.doFilter(AbstractMgnlFilter.java:85)
	at info.magnolia.cms.filters.MgnlFilterChain.doFilter(MgnlFilterChain.java:80)
	at info.magnolia.cms.filters.RangeSupportFilter.doFilter(RangeSupportFilter.java:84)
	at info.magnolia.cms.filters.AbstractMgnlFilter.doFilter(AbstractMgnlFilter.java:85)
	at info.magnolia.cms.filters.MgnlFilterChain.doFilter(MgnlFilterChain.java:80)
	at info.magnolia.cms.security.BaseSecurityFilter.doFilter(BaseSecurityFilter.java:57)
	at info.magnolia.cms.filters.AbstractMgnlFilter.doFilter(AbstractMgnlFilter.java:85)
	at info.magnolia.cms.filters.MgnlFilterChain.doFilter(MgnlFilterChain.java:80)
	at info.magnolia.cms.filters.MgnlFilterChain.doFilter(MgnlFilterChain.java:82)
	at info.magnolia.cms.security.SecurityCallbackFilter.doFilter(SecurityCallbackFilter.java:83)
	at info.magnolia.cms.filters.OncePerRequestAbstractMgnlFilter.doFilter(OncePerRequestAbstractMgnlFilter.java:58)
	at info.magnolia.cms.filters.MgnlFilterChain.doFilter(MgnlFilterChain.java:80)
	at info.magnolia.cms.security.LogoutFilter.doFilter(LogoutFilter.java:94)
	at info.magnolia.cms.filters.OncePerRequestAbstractMgnlFilter.doFilter(OncePerRequestAbstractMgnlFilter.java:58)
	at info.magnolia.cms.filters.MgnlFilterChain.doFilter(MgnlFilterChain.java:80)
	at info.magnolia.module.templatingkit.filters.SiteMergeFilter.doFilter(SiteMergeFilter.java:112)
	at info.magnolia.cms.filters.AbstractMgnlFilter.doFilter(AbstractMgnlFilter.java:85)
	at info.magnolia.cms.filters.MgnlFilterChain.doFilter(MgnlFilterChain.java:80)
	at info.magnolia.cms.filters.MultiChannelFilter.doFilter(MultiChannelFilter.java:83)
	at info.magnolia.cms.filters.AbstractMgnlFilter.doFilter(AbstractMgnlFilter.java:85)
	at info.magnolia.cms.filters.MgnlFilterChain.doFilter(MgnlFilterChain.java:80)
	at info.magnolia.module.cache.filter.GZipFilter.doFilter(GZipFilter.java:73)
	at info.magnolia.cms.filters.OncePerRequestAbstractMgnlFilter.doFilter(OncePerRequestAbstractMgnlFilter.java:58)
	at info.magnolia.cms.filters.MgnlFilterChain.doFilter(MgnlFilterChain.java:80)
	at info.magnolia.cms.filters.MgnlFilterChain.doFilter(MgnlFilterChain.java:82)
	at info.magnolia.cms.security.auth.login.LoginFilter.doFilter(LoginFilter.java:127)
	at info.magnolia.cms.filters.AbstractMgnlFilter.doFilter(AbstractMgnlFilter.java:85)
	at info.magnolia.cms.filters.MgnlFilterChain.doFilter(MgnlFilterChain.java:80)
	at info.magnolia.cms.filters.UnicodeNormalizationFilter.doFilter(UnicodeNormalizationFilter.java:87)
	at info.magnolia.cms.filters.AbstractMgnlFilter.doFilter(AbstractMgnlFilter.java:85)
	at info.magnolia.cms.filters.MgnlFilterChain.doFilter(MgnlFilterChain.java:80)
	at info.magnolia.cms.filters.MgnlFilterChain.doFilter(MgnlFilterChain.java:82)
	at info.magnolia.module.devicedetection.filter.DeviceDetectionFilter.doFilter(DeviceDetectionFilter.java:71)
	at info.magnolia.cms.filters.OncePerRequestAbstractMgnlFilter.doFilter(OncePerRequestAbstractMgnlFilter.java:58)
	at info.magnolia.cms.filters.MgnlFilterChain.doFilter(MgnlFilterChain.java:80)
	at info.magnolia.cms.filters.ContentTypeFilter.doFilter(ContentTypeFilter.java:148)
	at info.magnolia.cms.filters.AbstractMgnlFilter.doFilter(AbstractMgnlFilter.java:85)
	at info.magnolia.cms.filters.MgnlFilterChain.doFilter(MgnlFilterChain.java:80)
	at info.magnolia.cms.filters.ContextFilter.doFilter(ContextFilter.java:129)
	at info.magnolia.cms.filters.AbstractMgnlFilter.doFilter(AbstractMgnlFilter.java:85)
	at info.magnolia.cms.filters.MgnlFilterChain.doFilter(MgnlFilterChain.java:80)
	at info.magnolia.cms.filters.CompositeFilter.doFilter(CompositeFilter.java:65)
	at info.magnolia.cms.filters.AbstractMgnlFilter.doFilter(AbstractMgnlFilter.java:85)
	at info.magnolia.cms.filters.SafeDestroyMgnlFilterWrapper.doFilter(SafeDestroyMgnlFilterWrapper.java:106)
	at info.magnolia.cms.filters.MgnlFilterDispatcher.doDispatch(MgnlFilterDispatcher.java:66)
	at info.magnolia.cms.filters.MgnlMainFilter.doFilter(MgnlMainFilter.java:107)
	at info.magnolia.cms.filters.MgnlMainFilter.doFilter(MgnlMainFilter.java:93)
	at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:241)
	at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:208)
	at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:220)
	at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:122)
	at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:505)
	at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:169)
	at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:103)
	at org.apache.catalina.valves.AccessLogValve.invoke(AccessLogValve.java:956)
	at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:116)
	at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:423)
	at org.apache.coyote.http11.AbstractHttp11Processor.process(AbstractHttp11Processor.java:1079)
	at org.apache.coyote.AbstractProtocol$AbstractConnectionHandler.process(AbstractProtocol.java:625)
	at org.apache.tomcat.util.net.JIoEndpoint$SocketProcessor.run(JIoEndpoint.java:318)
	at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142)
	at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617)
	at org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:61)
	at java.lang.Thread.run(Thread.java:745)
Apr 14, 2016 1:33:52 PM com.vaadin.server.DefaultErrorHandler doDefault
SEVERE: 
java.lang.NullPointerException
	at info.magnolia.ui.form.field.SwitchableField.isEmpty(SwitchableField.java:190)
	at com.vaadin.ui.AbstractField.validate(AbstractField.java:924)
	at com.vaadin.ui.AbstractField.getErrorMessage(AbstractField.java:1036)
	at info.magnolia.ui.form.field.AbstractCustomMultiField.getErrorMessage(AbstractCustomMultiField.java:294)
	at com.vaadin.ui.AbstractComponent.beforeClientResponse(AbstractComponent.java:671)
	at com.vaadin.ui.AbstractField.beforeClientResponse(AbstractField.java:1694)
	at com.vaadin.server.communication.UidlWriter.write(UidlWriter.java:96)
	at com.vaadin.server.communication.UidlRequestHandler.writeUidl(UidlRequestHandler.java:149)
	at com.vaadin.server.communication.UidlRequestHandler.synchronizedHandleRequest(UidlRequestHandler.java:97)
	at com.vaadin.server.SynchronizedRequestHandler.handleRequest(SynchronizedRequestHandler.java:37)
	at com.vaadin.server.VaadinService.handleRequest(VaadinService.java:1371)
	at com.vaadin.server.VaadinServlet.service(VaadinServlet.java:238)
	at info.magnolia.ui.admincentral.AdmincentralVaadinServlet.service(AdmincentralVaadinServlet.java:136)
	at javax.servlet.http.HttpServlet.service(HttpServlet.java:731)
	at info.magnolia.cms.filters.ServletDispatchingFilter.doFilter(ServletDispatchingFilter.java:148)
	at info.magnolia.cms.filters.AbstractMgnlFilter.doFilter(AbstractMgnlFilter.java:85)
	at info.magnolia.cms.filters.MgnlFilterChain.doFilter(MgnlFilterChain.java:80)
	at info.magnolia.cms.filters.MgnlFilterChain.doFilter(MgnlFilterChain.java:82)
	at info.magnolia.cms.filters.MgnlFilterChain.doFilter(MgnlFilterChain.java:82)
	at info.magnolia.cms.filters.MgnlFilterChain.doFilter(MgnlFilterChain.java:82)
	at info.magnolia.cms.filters.MgnlFilterChain.doFilter(MgnlFilterChain.java:82)
	at info.magnolia.cms.filters.MgnlFilterChain.doFilter(MgnlFilterChain.java:82)
	at info.magnolia.cms.filters.CompositeFilter.doFilter(CompositeFilter.java:65)
	at info.magnolia.cms.filters.AbstractMgnlFilter.doFilter(AbstractMgnlFilter.java:85)
	at info.magnolia.cms.filters.MgnlFilterChain.doFilter(MgnlFilterChain.java:80)
	at info.magnolia.cms.filters.VirtualUriFilter.doFilter(VirtualUriFilter.java:68)
	at info.magnolia.cms.filters.AbstractMgnlFilter.doFilter(AbstractMgnlFilter.java:85)
	at info.magnolia.cms.filters.MgnlFilterChain.doFilter(MgnlFilterChain.java:80)
	at info.magnolia.module.cache.executor.Bypass.processCacheRequest(Bypass.java:58)
	at info.magnolia.module.cache.executor.CompositeExecutor.processCacheRequest(CompositeExecutor.java:66)
	at info.magnolia.module.cache.filter.CacheFilter.doFilter(CacheFilter.java:152)
	at info.magnolia.cms.filters.OncePerRequestAbstractMgnlFilter.doFilter(OncePerRequestAbstractMgnlFilter.java:58)
	at info.magnolia.cms.filters.MgnlFilterChain.doFilter(MgnlFilterChain.java:80)
	at info.magnolia.cms.i18n.I18nContentSupportFilter.doFilter(I18nContentSupportFilter.java:73)
	at info.magnolia.cms.filters.AbstractMgnlFilter.doFilter(AbstractMgnlFilter.java:85)
	at info.magnolia.cms.filters.MgnlFilterChain.doFilter(MgnlFilterChain.java:80)
	at info.magnolia.cms.filters.RangeSupportFilter.doFilter(RangeSupportFilter.java:84)
	at info.magnolia.cms.filters.AbstractMgnlFilter.doFilter(AbstractMgnlFilter.java:85)
	at info.magnolia.cms.filters.MgnlFilterChain.doFilter(MgnlFilterChain.java:80)
	at info.magnolia.cms.security.BaseSecurityFilter.doFilter(BaseSecurityFilter.java:57)
	at info.magnolia.cms.filters.AbstractMgnlFilter.doFilter(AbstractMgnlFilter.java:85)
	at info.magnolia.cms.filters.MgnlFilterChain.doFilter(MgnlFilterChain.java:80)
	at info.magnolia.cms.filters.MgnlFilterChain.doFilter(MgnlFilterChain.java:82)
	at info.magnolia.cms.security.SecurityCallbackFilter.doFilter(SecurityCallbackFilter.java:83)
	at info.magnolia.cms.filters.OncePerRequestAbstractMgnlFilter.doFilter(OncePerRequestAbstractMgnlFilter.java:58)
	at info.magnolia.cms.filters.MgnlFilterChain.doFilter(MgnlFilterChain.java:80)
	at info.magnolia.cms.security.LogoutFilter.doFilter(LogoutFilter.java:94)
	at info.magnolia.cms.filters.OncePerRequestAbstractMgnlFilter.doFilter(OncePerRequestAbstractMgnlFilter.java:58)
	at info.magnolia.cms.filters.MgnlFilterChain.doFilter(MgnlFilterChain.java:80)
	at info.magnolia.module.templatingkit.filters.SiteMergeFilter.doFilter(SiteMergeFilter.java:112)
	at info.magnolia.cms.filters.AbstractMgnlFilter.doFilter(AbstractMgnlFilter.java:85)
	at info.magnolia.cms.filters.MgnlFilterChain.doFilter(MgnlFilterChain.java:80)
	at info.magnolia.cms.filters.MultiChannelFilter.doFilter(MultiChannelFilter.java:83)
	at info.magnolia.cms.filters.AbstractMgnlFilter.doFilter(AbstractMgnlFilter.java:85)
	at info.magnolia.cms.filters.MgnlFilterChain.doFilter(MgnlFilterChain.java:80)
	at info.magnolia.module.cache.filter.GZipFilter.doFilter(GZipFilter.java:73)
	at info.magnolia.cms.filters.OncePerRequestAbstractMgnlFilter.doFilter(OncePerRequestAbstractMgnlFilter.java:58)
	at info.magnolia.cms.filters.MgnlFilterChain.doFilter(MgnlFilterChain.java:80)
	at info.magnolia.cms.filters.MgnlFilterChain.doFilter(MgnlFilterChain.java:82)
	at info.magnolia.cms.security.auth.login.LoginFilter.doFilter(LoginFilter.java:127)
	at info.magnolia.cms.filters.AbstractMgnlFilter.doFilter(AbstractMgnlFilter.java:85)
	at info.magnolia.cms.filters.MgnlFilterChain.doFilter(MgnlFilterChain.java:80)
	at info.magnolia.cms.filters.UnicodeNormalizationFilter.doFilter(UnicodeNormalizationFilter.java:87)
	at info.magnolia.cms.filters.AbstractMgnlFilter.doFilter(AbstractMgnlFilter.java:85)
	at info.magnolia.cms.filters.MgnlFilterChain.doFilter(MgnlFilterChain.java:80)
	at info.magnolia.cms.filters.MgnlFilterChain.doFilter(MgnlFilterChain.java:82)
	at info.magnolia.module.devicedetection.filter.DeviceDetectionFilter.doFilter(DeviceDetectionFilter.java:71)
	at info.magnolia.cms.filters.OncePerRequestAbstractMgnlFilter.doFilter(OncePerRequestAbstractMgnlFilter.java:58)
	at info.magnolia.cms.filters.MgnlFilterChain.doFilter(MgnlFilterChain.java:80)
	at info.magnolia.cms.filters.ContentTypeFilter.doFilter(ContentTypeFilter.java:148)
	at info.magnolia.cms.filters.AbstractMgnlFilter.doFilter(AbstractMgnlFilter.java:85)
	at info.magnolia.cms.filters.MgnlFilterChain.doFilter(MgnlFilterChain.java:80)
	at info.magnolia.cms.filters.ContextFilter.doFilter(ContextFilter.java:129)
	at info.magnolia.cms.filters.AbstractMgnlFilter.doFilter(AbstractMgnlFilter.java:85)
	at info.magnolia.cms.filters.MgnlFilterChain.doFilter(MgnlFilterChain.java:80)
	at info.magnolia.cms.filters.CompositeFilter.doFilter(CompositeFilter.java:65)
	at info.magnolia.cms.filters.AbstractMgnlFilter.doFilter(AbstractMgnlFilter.java:85)
	at info.magnolia.cms.filters.SafeDestroyMgnlFilterWrapper.doFilter(SafeDestroyMgnlFilterWrapper.java:106)
	at info.magnolia.cms.filters.MgnlFilterDispatcher.doDispatch(MgnlFilterDispatcher.java:66)
	at info.magnolia.cms.filters.MgnlMainFilter.doFilter(MgnlMainFilter.java:107)
	at info.magnolia.cms.filters.MgnlMainFilter.doFilter(MgnlMainFilter.java:93)
	at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:241)
	at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:208)
	at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:220)
	at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:122)
	at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:505)
	at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:169)
	at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:103)
	at org.apache.catalina.valves.AccessLogValve.invoke(AccessLogValve.java:956)
	at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:116)
	at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:423)
	at org.apache.coyote.http11.AbstractHttp11Processor.process(AbstractHttp11Processor.java:1079)
	at org.apache.coyote.AbstractProtocol$AbstractConnectionHandler.process(AbstractProtocol.java:625)
	at org.apache.tomcat.util.net.JIoEndpoint$SocketProcessor.run(JIoEndpoint.java:318)
	at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142)
	at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617)
	at org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:61)
	at java.lang.Thread.run(Thread.java:745)
Comment by Mikaël Geljić [ 14/Apr/16 ]

Thanks yorkish, hieu.nguyen,

Ah yes indeed, BasicUploadField (and DamUploadField) have their own transformer (the FileTransformer). Let me explain shortly how to leverage it:

This is the default when you use upload fields directly inside the dialog/tab definition. However, CompositeField, SwitchableField and MultiField have default transformers which try to handle field values on behalf of their sub-fields (hence the FileTransformer is not used). This is admittedly limiting to only "basic" sub-fields—those typically with a BasicTransformer as default.

In order to use "less basic" fields under composite, switchable or multi-value fields, we highly recommend using delegating transformers. These do *not* handle field-values on behalf of their sub-fields, but rather—as their name suggests—delegate to the sub-fields transformers.
You can read more about that here: https://documentation.magnolia-cms.com/display/DOCS/Transforming+field+values

By the way, this is also documented on the upload field pages themselves (at the bottom):
https://documentation.magnolia-cms.com/display/DOCS/Basic+upload+field
https://documentation.magnolia-cms.com/display/DOCS/DAM+upload+field
Perhaps we can also make this more prominent, or in javadoc. Could you tell us where it would have been most helpful to you?

As much as we encourage using the delegating transformers as a first-choice, we haven't taken the step yet to make them the default ones. If we find a nice way to be backwards-compatible, we can reconsider that for the next major too.

I'll close this issue as "Workaround exists", but please do let us know if this fixes your issue, or reopen if you still encounter difficulties.

Cheers,
Mika

Generated at Mon Feb 12 09:10:02 CET 2024 using Jira 9.4.2#940002-sha1:46d1a51de284217efdcb32434eab47a99af2938b.