Uploaded image for project: 'Content Translation Support'
  1. Content Translation Support
  2. MGNLCTS-100

XLIF import fails when trans-unit elements have no extradata parameter

    XMLWordPrintable

Details

    • Bug
    • Resolution: Not an issue
    • Neutral
    • None
    • 2.2
    • None

    Description

       

      How to reproduce: Export content via Magnolia's Content Translation tool to XLIF. Open in QTLinguist, make some changes and save it.

      Sadly QTLinguist strips the extradata parameter from a <trans-unit> element which results in the stack trace below when trying to re-import:

       

       

      
      // 2018-12-05 08:47:25,797 ERROR lation.ui.action.TranslationFileUploadDialogAction: An error occurred when executing the command uploadTranslationFile from catalog translation
      java.lang.IllegalArgumentException: Could not parse date from string ''
      	at info.magnolia.translation.io.TranslationItem$Builder.withLastModificationTime(TranslationItem.java:166) ~[magnolia-content-translation-2.2.jar:?]
      	at info.magnolia.translation.io.reader.AbstractTranslationItemReader.readRow(AbstractTranslationItemReader.java:131) ~[magnolia-content-translation-2.2.jar:?]
      	at info.magnolia.translation.io.reader.AbstractTranslationItemReader.read(AbstractTranslationItemReader.java:62) ~[magnolia-content-translation-2.2.jar:?]
      	at info.magnolia.translation.io.ContentTransporter.importContent(ContentTransporter.java:117) ~[magnolia-content-translation-2.2.jar:?]
      	at info.magnolia.translation.commands.TranslationFileUploadCommand.importFile(TranslationFileUploadCommand.java:103) ~[magnolia-content-translation-2.2.jar:?]
      	at info.magnolia.translation.commands.TranslationFileUploadCommand.execute(TranslationFileUploadCommand.java:96) ~[magnolia-content-translation-2.2.jar:?]
      	at info.magnolia.commands.MgnlCommand.executeSynchronized(MgnlCommand.java:80) ~[magnolia-core-5.7.1.jar:?]
      	at info.magnolia.commands.MgnlCommand.execute(MgnlCommand.java:69) ~[magnolia-core-5.7.1.jar:?]
      	at info.magnolia.commands.CommandsManager.executeCommand(CommandsManager.java:257) ~[magnolia-core-5.7.1.jar:?]
      	at info.magnolia.commands.CommandsManager.executeCommand(CommandsManager.java:245) ~[magnolia-core-5.7.1.jar:?]
      	at info.magnolia.ui.framework.action.AbstractCommandAction.executeOnItem(AbstractCommandAction.java:201) [magnolia-ui-framework-5.7.1.jar:?]
      	at info.magnolia.ui.framework.action.AbstractMultiItemAction.execute(AbstractMultiItemAction.java:107) [magnolia-ui-framework-5.7.1.jar:?]
      	at info.magnolia.translation.ui.action.TranslationFileUploadDialogAction.access$001(TranslationFileUploadDialogAction.java:63) [magnolia-content-translation-2.2.jar:?]
      	at info.magnolia.translation.ui.action.TranslationFileUploadDialogAction$1.onSuccess(TranslationFileUploadDialogAction.java:147) [magnolia-content-translation-2.2.jar:?]
      	at info.magnolia.ui.framework.overlay.OverlayPresenter$4.onConfirmation(OverlayPresenter.java:185) [magnolia-ui-framework-5.7.1.jar:?]
      	at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) ~[?:1.8.0_181]
      	at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) ~[?:1.8.0_181]
      	at sun.reflect.DelegatingMethodAccessorImpl.__invoke(DelegatingMethodAccessorImpl.java:43) ~[?:1.8.0_181]
      	at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:45009) ~[?:1.8.0_181]
      	at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:45012) ~[?:1.8.0_181]
      	at java.lang.reflect.Method.invoke(Method.java:498) ~[?:1.8.0_181]
      	at com.vaadin.event.ListenerMethod.receiveEvent(ListenerMethod.java:499) [vaadin-server-8.4.2.jar:8.4.2]
      	at com.vaadin.event.EventRouter.fireEvent(EventRouter.java:273) [vaadin-server-8.4.2.jar:8.4.2]
      	at com.vaadin.event.EventRouter.fireEvent(EventRouter.java:237) [vaadin-server-8.4.2.jar:8.4.2]
      	at com.vaadin.server.AbstractClientConnector.fireEvent(AbstractClientConnector.java:1014) [vaadin-server-8.4.2.jar:8.4.2]
      	at info.magnolia.ui.vaadin.dialog.ConfirmationDialog.confirm(ConfirmationDialog.java:109) [magnolia-ui-vaadin-common-widgets-5.7.1.jar:5.7.1]
      	at info.magnolia.ui.vaadin.dialog.ConfirmationDialog$1.buttonClick(ConfirmationDialog.java:76) [magnolia-ui-vaadin-common-widgets-5.7.1.jar:5.7.1]
      	at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) ~[?:1.8.0_181]
      	at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) ~[?:1.8.0_181]
      	at sun.reflect.DelegatingMethodAccessorImpl.__invoke(DelegatingMethodAccessorImpl.java:43) ~[?:1.8.0_181]
      	at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:45009) ~[?:1.8.0_181]
      	at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:45012) ~[?:1.8.0_181]
      	at java.lang.reflect.Method.invoke(Method.java:498) ~[?:1.8.0_181]
      	at com.vaadin.event.ListenerMethod.receiveEvent(ListenerMethod.java:499) [vaadin-server-8.4.2.jar:8.4.2]
      	at com.vaadin.event.EventRouter.fireEvent(EventRouter.java:273) [vaadin-server-8.4.2.jar:8.4.2]
      	at com.vaadin.event.EventRouter.fireEvent(EventRouter.java:237) [vaadin-server-8.4.2.jar:8.4.2]
      	at com.vaadin.server.AbstractClientConnector.fireEvent(AbstractClientConnector.java:1014) [vaadin-server-8.4.2.jar:8.4.2]
      	at com.vaadin.ui.Button.fireClick(Button.java:384) [vaadin-server-8.4.2.jar:8.4.2]
      	at com.vaadin.ui.Button$1.click(Button.java:57) [vaadin-server-8.4.2.jar:8.4.2]
      	at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) ~[?:1.8.0_181]
      	at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) ~[?:1.8.0_181]
      	at sun.reflect.DelegatingMethodAccessorImpl.__invoke(DelegatingMethodAccessorImpl.java:43) ~[?:1.8.0_181]
      	at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:45009) ~[?:1.8.0_181]
      	at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:45012) ~[?:1.8.0_181]
      	at java.lang.reflect.Method.invoke(Method.java:498) ~[?:1.8.0_181]
      	at com.vaadin.server.ServerRpcManager.applyInvocation(ServerRpcManager.java:155) [vaadin-server-8.4.2.jar:8.4.2]
      	at com.vaadin.server.ServerRpcManager.applyInvocation(ServerRpcManager.java:116) [vaadin-server-8.4.2.jar:8.4.2]
      	at com.vaadin.server.communication.ServerRpcHandler.handleInvocation(ServerRpcHandler.java:445) [vaadin-server-8.4.2.jar:8.4.2]
      	at com.vaadin.server.communication.ServerRpcHandler.handleInvocations(ServerRpcHandler.java:410) [vaadin-server-8.4.2.jar:8.4.2]
      	at com.vaadin.server.communication.ServerRpcHandler.handleRpc(ServerRpcHandler.java:274) [vaadin-server-8.4.2.jar:8.4.2]
      	at com.vaadin.server.communication.UidlRequestHandler.synchronizedHandleRequest(UidlRequestHandler.java:90) [vaadin-server-8.4.2.jar:8.4.2]
      	at com.vaadin.server.SynchronizedRequestHandler.handleRequest(SynchronizedRequestHandler.java:40) [vaadin-server-8.4.2.jar:8.4.2]
      	at com.vaadin.server.VaadinService.handleRequest(VaadinService.java:1601) [vaadin-server-8.4.2.jar:8.4.2]
      	at com.vaadin.server.VaadinServlet.service(VaadinServlet.java:445) [vaadin-server-8.4.2.jar:8.4.2]
      	at info.magnolia.ui.admincentral.AdmincentralVaadinServlet.service(AdmincentralVaadinServlet.java:141) [magnolia-ui-admincentral-5.7.1.jar:?]
      	at javax.servlet.http.HttpServlet.service(HttpServlet.java:742) [servlet-api.jar:?]
      	at info.magnolia.cms.filters.ServletDispatchingFilter.doFilter(ServletDispatchingFilter.java:148) [magnolia-core-5.7.1.jar:?]
      	at info.magnolia.cms.filters.AbstractMgnlFilter.doFilter(AbstractMgnlFilter.java:85) [magnolia-core-5.7.1.jar:?]
      	at info.magnolia.cms.filters.MgnlFilterChain.doFilter(MgnlFilterChain.java:79) [magnolia-core-5.7.1.jar:?]
      	at info.magnolia.cms.filters.MgnlFilterChain.doFilter(MgnlFilterChain.java:81) [magnolia-core-5.7.1.jar:?]
      	at info.magnolia.cms.filters.MgnlFilterChain.doFilter(MgnlFilterChain.java:81) [magnolia-core-5.7.1.jar:?]
      	at info.magnolia.cms.filters.CompositeFilter.doFilter(CompositeFilter.java:65) [magnolia-core-5.7.1.jar:?]
      	at info.magnolia.cms.filters.AbstractMgnlFilter.doFilter(AbstractMgnlFilter.java:85) [magnolia-core-5.7.1.jar:?]
      	at info.magnolia.cms.filters.MgnlFilterChain.doFilter(MgnlFilterChain.java:79) [magnolia-core-5.7.1.jar:?]
      	at info.magnolia.virtualuri.VirtualUriFilter.doFilter(VirtualUriFilter.java:98) [magnolia-virtual-uri-5.7.1.jar:?]
      	at info.magnolia.cms.filters.AbstractMgnlFilter.doFilter(AbstractMgnlFilter.java:85) [magnolia-core-5.7.1.jar:?]
      	at info.magnolia.cms.filters.MgnlFilterChain.doFilter(MgnlFilterChain.java:79) [magnolia-core-5.7.1.jar:?]
      	at info.magnolia.module.cache.executor.Bypass.processCacheRequest(Bypass.java:58) [magnolia-cache-core-5.6.2.jar:?]
      	at info.magnolia.module.cache.executor.CompositeExecutor.processCacheRequest(CompositeExecutor.java:67) [magnolia-cache-core-5.6.2.jar:?]
      	at info.magnolia.module.cache.filter.CacheFilter.doFilter(CacheFilter.java:220) [magnolia-cache-core-5.6.2.jar:?]
      	at info.magnolia.cms.filters.AbstractMgnlFilter.doFilter(AbstractMgnlFilter.java:85) [magnolia-core-5.7.1.jar:?]
      	at info.magnolia.cms.filters.MgnlFilterChain.doFilter(MgnlFilterChain.java:79) [magnolia-core-5.7.1.jar:?]
      	at info.magnolia.cms.i18n.I18nContentSupportFilter.doFilter(I18nContentSupportFilter.java:89) [magnolia-core-5.7.1.jar:?]
      	at info.magnolia.cms.filters.AbstractMgnlFilter.doFilter(AbstractMgnlFilter.java:85) [magnolia-core-5.7.1.jar:?]
      	at info.magnolia.cms.filters.MgnlFilterChain.doFilter(MgnlFilterChain.java:79) [magnolia-core-5.7.1.jar:?]
      	at info.magnolia.cms.filters.RangeSupportFilter.doFilter(RangeSupportFilter.java:77) [magnolia-core-5.7.1.jar:?]
      	at info.magnolia.cms.filters.AbstractMgnlFilter.doFilter(AbstractMgnlFilter.java:85) [magnolia-core-5.7.1.jar:?]
      	at info.magnolia.cms.filters.MgnlFilterChain.doFilter(MgnlFilterChain.java:79) [magnolia-core-5.7.1.jar:?]
      	at info.magnolia.cms.security.BaseSecurityFilter.doFilter(BaseSecurityFilter.java:57) [magnolia-core-5.7.1.jar:?]
      	at info.magnolia.cms.filters.AbstractMgnlFilter.doFilter(AbstractMgnlFilter.java:85) [magnolia-core-5.7.1.jar:?]
      	at info.magnolia.cms.filters.MgnlFilterChain.doFilter(MgnlFilterChain.java:79) [magnolia-core-5.7.1.jar:?]
      	at info.magnolia.cms.filters.MgnlFilterChain.doFilter(MgnlFilterChain.java:81) [magnolia-core-5.7.1.jar:?]
      	at info.magnolia.cms.security.SecurityCallbackFilter.doFilter(SecurityCallbackFilter.java:84) [magnolia-core-5.7.1.jar:?]
      	at info.magnolia.cms.filters.OncePerRequestAbstractMgnlFilter.doFilter(OncePerRequestAbstractMgnlFilter.java:59) [magnolia-core-5.7.1.jar:?]
      	at info.magnolia.cms.filters.MgnlFilterChain.doFilter(MgnlFilterChain.java:79) [magnolia-core-5.7.1.jar:?]
      	at info.magnolia.cms.security.LogoutFilter.doFilter(LogoutFilter.java:94) [magnolia-core-5.7.1.jar:?]
      	at info.magnolia.cms.filters.OncePerRequestAbstractMgnlFilter.doFilter(OncePerRequestAbstractMgnlFilter.java:59) [magnolia-core-5.7.1.jar:?]
      	at info.magnolia.cms.filters.MgnlFilterChain.doFilter(MgnlFilterChain.java:79) [magnolia-core-5.7.1.jar:?]
      	at info.magnolia.module.site.filters.SiteMergeFilter.doFilter(SiteMergeFilter.java:119) [magnolia-site-1.2.2.jar:?]
      	at info.magnolia.cms.filters.AbstractMgnlFilter.doFilter(AbstractMgnlFilter.java:85) [magnolia-core-5.7.1.jar:?]
      	at info.magnolia.cms.filters.MgnlFilterChain.doFilter(MgnlFilterChain.java:79) [magnolia-core-5.7.1.jar:?]
      	at info.magnolia.cms.filters.MultiChannelFilter.doFilter(MultiChannelFilter.java:83) [magnolia-core-5.7.1.jar:?]
      	at info.magnolia.cms.filters.AbstractMgnlFilter.doFilter(AbstractMgnlFilter.java:85) [magnolia-core-5.7.1.jar:?]
      	at info.magnolia.cms.filters.MgnlFilterChain.doFilter(MgnlFilterChain.java:79) [magnolia-core-5.7.1.jar:?]
      	at info.magnolia.cms.filters.MgnlFilterChain.doFilter(MgnlFilterChain.java:81) [magnolia-core-5.7.1.jar:?]
      	at info.magnolia.cms.filters.MgnlFilterChain.doFilter(MgnlFilterChain.java:81) [magnolia-core-5.7.1.jar:?]
      	at info.magnolia.cms.security.auth.login.LoginFilter.doFilter(LoginFilter.java:127) [magnolia-core-5.7.1.jar:?]
      	at info.magnolia.cms.filters.AbstractMgnlFilter.doFilter(AbstractMgnlFilter.java:85) [magnolia-core-5.7.1.jar:?]
      	at info.magnolia.cms.filters.MgnlFilterChain.doFilter(MgnlFilterChain.java:79) [magnolia-core-5.7.1.jar:?]
      	at info.magnolia.enterprise.registration.RegistrationFilter.doFilter(RegistrationFilter.java:64) [magnolia-module-enterprise-5.7.1.jar:?]
      	at info.magnolia.cms.filters.AbstractMgnlFilter.doFilter(AbstractMgnlFilter.java:85) [magnolia-core-5.7.1.jar:?]
      	at info.magnolia.cms.filters.MgnlFilterChain.doFilter(MgnlFilterChain.java:79) [magnolia-core-5.7.1.jar:?]
      	at info.magnolia.cms.filters.UnicodeNormalizationFilter.doFilter(UnicodeNormalizationFilter.java:89) [magnolia-core-5.7.1.jar:?]
      	at info.magnolia.cms.filters.AbstractMgnlFilter.doFilter(AbstractMgnlFilter.java:85) [magnolia-core-5.7.1.jar:?]
      	at info.magnolia.cms.filters.MgnlFilterChain.doFilter(MgnlFilterChain.java:79) [magnolia-core-5.7.1.jar:?]
      	at info.magnolia.cms.filters.MgnlFilterChain.doFilter(MgnlFilterChain.java:81) [magnolia-core-5.7.1.jar:?]
      	at info.magnolia.personalization.preview.filter.PreviewFilter.doFilter(PreviewFilter.java:92) [magnolia-personalization-preview-app-1.6.1.jar:?]
      	at info.magnolia.cms.filters.OncePerRequestAbstractMgnlFilter.doFilter(OncePerRequestAbstractMgnlFilter.java:59) [magnolia-core-5.7.1.jar:?]
      	at info.magnolia.cms.filters.MgnlFilterChain.doFilter(MgnlFilterChain.java:79) [magnolia-core-5.7.1.jar:?]
      	at info.magnolia.cms.filters.MgnlFilterChain.doFilter(MgnlFilterChain.java:81) [magnolia-core-5.7.1.jar:?]
      	at info.magnolia.cms.filters.MgnlFilterChain.doFilter(MgnlFilterChain.java:81) [magnolia-core-5.7.1.jar:?]
      	at info.magnolia.cms.filters.MgnlFilterChain.doFilter(MgnlFilterChain.java:81) [magnolia-core-5.7.1.jar:?]
      	at info.magnolia.cms.filters.MgnlFilterChain.doFilter(MgnlFilterChain.java:81) [magnolia-core-5.7.1.jar:?]
      	at info.magnolia.cms.filters.ContentTypeFilter.doFilter(ContentTypeFilter.java:155) [magnolia-core-5.7.1.jar:?]
      	at info.magnolia.cms.filters.AbstractMgnlFilter.doFilter(AbstractMgnlFilter.java:85) [magnolia-core-5.7.1.jar:?]
      	at info.magnolia.cms.filters.MgnlFilterChain.doFilter(MgnlFilterChain.java:79) [magnolia-core-5.7.1.jar:?]
      	at com.elekta.oneweb.servlet.ContextFilter.doFilter(ContextFilter.java:146) [classes/:?]
      	at info.magnolia.cms.filters.AbstractMgnlFilter.doFilter(AbstractMgnlFilter.java:85) [magnolia-core-5.7.1.jar:?]
      	at info.magnolia.cms.filters.MgnlFilterChain.doFilter(MgnlFilterChain.java:79) [magnolia-core-5.7.1.jar:?]
      	at info.magnolia.cms.filters.CompositeFilter.doFilter(CompositeFilter.java:65) [magnolia-core-5.7.1.jar:?]
      	at info.magnolia.cms.filters.AbstractMgnlFilter.doFilter(AbstractMgnlFilter.java:85) [magnolia-core-5.7.1.jar:?]
      	at info.magnolia.cms.filters.SafeDestroyMgnlFilterWrapper.doFilter(SafeDestroyMgnlFilterWrapper.java:107) [magnolia-core-5.7.1.jar:?]
      	at info.magnolia.cms.filters.MgnlFilterDispatcher.doDispatch(MgnlFilterDispatcher.java:67) [magnolia-core-5.7.1.jar:?]
      	at info.magnolia.cms.filters.MgnlMainFilter.doFilter(MgnlMainFilter.java:110) [magnolia-core-5.7.1.jar:?]
      	at info.magnolia.cms.filters.MgnlMainFilter.doFilter(MgnlMainFilter.java:96) [magnolia-core-5.7.1.jar:?]
      	at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:193) [catalina.jar:8.5.32]
      	at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166) [catalina.jar:8.5.32]
      	at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:198) [catalina.jar:8.5.32]
      	at org.apache.catalina.core.StandardContextValve.__invoke(StandardContextValve.java:96) [catalina.jar:8.5.32]
      	at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:40002) [catalina.jar:8.5.32]
      	at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:493) [catalina.jar:8.5.32]
      	at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:140) [catalina.jar:8.5.32]
      	at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:81) [catalina.jar:8.5.32]
      	at org.apache.catalina.valves.AbstractAccessLogValve.invoke(AbstractAccessLogValve.java:650) [catalina.jar:8.5.32]
      	at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:87) [catalina.jar:8.5.32]
      	at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:342) [catalina.jar:8.5.32]
      	at org.apache.coyote.http11.Http11Processor.service(Http11Processor.java:800) [tomcat-coyote.jar:8.5.32]
      	at org.apache.coyote.AbstractProcessorLight.process(AbstractProcessorLight.java:66) [tomcat-coyote.jar:8.5.32]
      	at org.apache.coyote.AbstractProtocol$ConnectionHandler.process(AbstractProtocol.java:800) [tomcat-coyote.jar:8.5.32]
      	at org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.doRun(NioEndpoint.java:1471) [tomcat-coyote.jar:8.5.32]
      	at org.apache.tomcat.util.net.SocketProcessorBase.run(SocketProcessorBase.java:49) [tomcat-coyote.jar:8.5.32]
      	at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149) [?:1.8.0_181]
      	at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624) [?:1.8.0_181]
      	at org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:61) [tomcat-util.jar:8.5.32]
      	at java.lang.Thread.run(Thread.java:748) [?:1.8.0_181]
      Caused by: java.text.ParseException: Unparseable date: ""
      	at java.text.DateFormat.parse(DateFormat.java:366) ~[?:1.8.0_181]
      	at info.magnolia.translation.io.TranslationItem$Builder.withLastModificationTime(TranslationItem.java:160) ~[magnolia-content-translation-2.2.jar:?]
      	... 144 more
      
      

       

      My suggestion is to simply create a current timestamp if none is found:

      In info.magnolia.translation.io.TranslationItem.Builder#withLastModificationTime(java.lang.String) check if lastModificationString is empty and set the time to the current date and time.

       

       

      Checklists

        Acceptance criteria

        Attachments

          Activity

            People

              Unassigned Unassigned
              christian.hamm@elekta.com Christian Hamm
              Votes:
              0 Vote for this issue
              Watchers:
              1 Start watching this issue

              Dates

                Created:
                Updated:
                Resolved:

                Checklists

                  Bug DoR
                  Task DoD