Uploaded image for project: 'CMS'
  1. CMS
  2. CMS-9660

Multiple edition doesn't manage images correctly

    XMLWordPrintable

    Details

    • Type: Bug
    • Status: Closed
    • Priority: Critical
    • Resolution: Fixed
    • Affects Version/s: 4.1.11, 4.2.0
    • Fix Version/s: 4.1.12, 4.2.0
    • Component/s: None
    • Labels:
      None
    • Sprint:
      4.2 RC1

      Description

      Steps to reproduce

      1. Open two contents (with a rich text) in edition mode
      2. In the rich text, add an image to each content
      3. Save the two contents
      4. Open the two contents and save it again
      5. We get the following error on one of the contents :
        org.apache.excalibur.source.SourceException: Exception during processing of cocoon://_plugins/cms/convert/html2docbook
        	at org.apache.cocoon.components.source.impl.SitemapSource.getInputStream(SitemapSource.java:277)
        	at org.ametys.cms.transformation.AbstractRichTextTransformer.transform(AbstractRichTextTransformer.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:498)
        	at org.ametys.runtime.plugin.component.PluginsComponentManager$ComponentInvocationHandler.invoke(PluginsComponentManager.java:177)
        	at com.sun.proxy.$Proxy11.transform(Unknown Source)
        	at org.ametys.cms.workflow.EditContentFunction._transformRichText(EditContentFunction.java:4619)
        	at org.ametys.cms.workflow.EditContentFunction._synchronizeRichTextMetadata(EditContentFunction.java:4589)
        	at org.ametys.cms.workflow.EditContentFunction._synchronizeMetadata(EditContentFunction.java:2685)
        	at org.ametys.cms.workflow.EditContentFunction._synchronizeMetadataSetElement(EditContentFunction.java:696)
        	at org.ametys.cms.workflow.EditContentFunction._bindAndValidateContent(EditContentFunction.java:592)
        	at org.ametys.cms.workflow.EditContentFunction.execute(EditContentFunction.java:326)
        	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:498)
        	at org.ametys.runtime.plugin.component.PluginsComponentManager$ComponentInvocationHandler.invoke(PluginsComponentManager.java:177)
        	at com.sun.proxy.$Proxy32.execute(Unknown Source)
        	at com.opensymphony.workflow.AbstractWorkflow.executeFunction(AbstractWorkflow.java:871)
        	at com.opensymphony.workflow.AbstractWorkflow.transitionWorkflow(AbstractWorkflow.java:1044)
        	at org.ametys.plugins.workflow.AbstractAmetysWorkflow.transitionWorkflow(AbstractAmetysWorkflow.java:212)
        	at com.opensymphony.workflow.AbstractWorkflow.doAction(AbstractWorkflow.java:567)
        	at org.ametys.plugins.workflow.AbstractAmetysWorkflow.doAction(AbstractAmetysWorkflow.java:164)
        	at org.ametys.cms.workflow.ContentWorkflowAction._act(ContentWorkflowAction.java:69)
        	at org.ametys.plugins.workflow.cocoon.AbstractWorkflowAction.act(AbstractWorkflowAction.java:71)
        	at org.apache.cocoon.components.treeprocessor.sitemap.ActTypeNode.invoke(ActTypeNode.java:125)
        	at org.apache.cocoon.components.treeprocessor.AbstractParentProcessingNode.invokeNodes(AbstractParentProcessingNode.java:47)
        	at org.apache.cocoon.components.treeprocessor.sitemap.ActTypeNode.invoke(ActTypeNode.java:139)
        	at org.apache.cocoon.components.treeprocessor.AbstractParentProcessingNode.invokeNodes(AbstractParentProcessingNode.java:47)
        	at org.apache.cocoon.components.treeprocessor.sitemap.MatchNode.invoke(MatchNode.java:108)
        	at org.apache.cocoon.components.treeprocessor.AbstractParentProcessingNode.invokeNodes(AbstractParentProcessingNode.java:69)
        	at org.apache.cocoon.components.treeprocessor.sitemap.PipelineNode.invoke(PipelineNode.java:143)
        	at org.apache.cocoon.components.treeprocessor.AbstractParentProcessingNode.invokeNodes(AbstractParentProcessingNode.java:69)
        	at org.apache.cocoon.components.treeprocessor.sitemap.PipelinesNode.invoke(PipelinesNode.java:93)
        	at org.apache.cocoon.components.treeprocessor.ConcreteTreeProcessor.process(ConcreteTreeProcessor.java:236)
        	at org.apache.cocoon.components.treeprocessor.ConcreteTreeProcessor.buildPipeline(ConcreteTreeProcessor.java:194)
        	at org.apache.cocoon.components.treeprocessor.TreeProcessor.buildPipeline(TreeProcessor.java:267)
        	at org.apache.cocoon.components.treeprocessor.sitemap.MountNode.invoke(MountNode.java:111)
        	at org.apache.cocoon.components.treeprocessor.AbstractParentProcessingNode.invokeNodes(AbstractParentProcessingNode.java:47)
        	at org.apache.cocoon.components.treeprocessor.sitemap.MatchNode.invoke(MatchNode.java:108)
        	at org.apache.cocoon.components.treeprocessor.AbstractParentProcessingNode.invokeNodes(AbstractParentProcessingNode.java:69)
        	at org.apache.cocoon.components.treeprocessor.sitemap.PipelineNode.invoke(PipelineNode.java:143)
        	at org.apache.cocoon.components.treeprocessor.AbstractParentProcessingNode.invokeNodes(AbstractParentProcessingNode.java:69)
        	at org.apache.cocoon.components.treeprocessor.sitemap.PipelinesNode.invoke(PipelinesNode.java:93)
        	at org.apache.cocoon.components.treeprocessor.ConcreteTreeProcessor.process(ConcreteTreeProcessor.java:236)
        	at org.apache.cocoon.components.treeprocessor.ConcreteTreeProcessor.buildPipeline(ConcreteTreeProcessor.java:194)
        	at org.apache.cocoon.components.treeprocessor.TreeProcessor.buildPipeline(TreeProcessor.java:267)
        	at org.apache.cocoon.components.source.impl.SitemapSource.init(SitemapSource.java:333)
        	at org.apache.cocoon.components.source.impl.SitemapSource.<init>(SitemapSource.java:215)
        	at org.apache.cocoon.components.source.impl.SitemapSourceFactory.getSource(SitemapSourceFactory.java:68)
        	at org.apache.excalibur.source.impl.SourceResolverImpl.resolveURI(SourceResolverImpl.java:208)
        	at org.apache.cocoon.components.CocoonComponentManager.resolveURI(CocoonComponentManager.java:558)
        	at org.apache.cocoon.components.CocoonComponentManager.resolveURI(CocoonComponentManager.java:558)
        	at org.apache.cocoon.components.CocoonComponentManager.resolveURI(CocoonComponentManager.java:558)
        	at org.apache.cocoon.components.CocoonComponentManager.resolveURI(CocoonComponentManager.java:558)
        	at org.ametys.core.ui.dispatcher.DispatchGenerator._dispatching(DispatchGenerator.java:148)
        	at org.ametys.core.ui.dispatcher.DispatchGenerator.generate(DispatchGenerator.java:91)
        	at org.apache.cocoon.components.pipeline.AbstractProcessingPipeline.processXMLPipeline(AbstractProcessingPipeline.java:581)
        	at org.apache.cocoon.components.pipeline.impl.AbstractCachingProcessingPipeline.processXMLPipeline(AbstractCachingProcessingPipeline.java:301)
        	at org.apache.cocoon.components.pipeline.AbstractProcessingPipeline.process(AbstractProcessingPipeline.java:483)
        	at org.apache.cocoon.components.treeprocessor.sitemap.SerializeNode.invoke(SerializeNode.java:144)
        	at org.apache.cocoon.components.treeprocessor.AbstractParentProcessingNode.invokeNodes(AbstractParentProcessingNode.java:47)
        	at org.apache.cocoon.components.treeprocessor.sitemap.MatchNode.invoke(MatchNode.java:108)
        	at org.apache.cocoon.components.treeprocessor.AbstractParentProcessingNode.invokeNodes(AbstractParentProcessingNode.java:69)
        	at org.apache.cocoon.components.treeprocessor.sitemap.PipelineNode.invoke(PipelineNode.java:143)
        	at org.apache.cocoon.components.treeprocessor.AbstractParentProcessingNode.invokeNodes(AbstractParentProcessingNode.java:69)
        	at org.apache.cocoon.components.treeprocessor.sitemap.PipelinesNode.invoke(PipelinesNode.java:93)
        	at org.apache.cocoon.components.treeprocessor.ConcreteTreeProcessor.process(ConcreteTreeProcessor.java:236)
        	at org.apache.cocoon.components.treeprocessor.ConcreteTreeProcessor.process(ConcreteTreeProcessor.java:178)
        	at org.apache.cocoon.components.treeprocessor.TreeProcessor.process(TreeProcessor.java:254)
        	at org.apache.cocoon.components.treeprocessor.sitemap.MountNode.invoke(MountNode.java:118)
        	at org.apache.cocoon.components.treeprocessor.AbstractParentProcessingNode.invokeNodes(AbstractParentProcessingNode.java:47)
        	at org.apache.cocoon.components.treeprocessor.sitemap.MatchNode.invoke(MatchNode.java:108)
        	at org.apache.cocoon.components.treeprocessor.AbstractParentProcessingNode.invokeNodes(AbstractParentProcessingNode.java:69)
        	at org.apache.cocoon.components.treeprocessor.sitemap.PipelineNode.invoke(PipelineNode.java:143)
        	at org.apache.cocoon.components.treeprocessor.AbstractParentProcessingNode.invokeNodes(AbstractParentProcessingNode.java:69)
        	at org.apache.cocoon.components.treeprocessor.sitemap.PipelinesNode.invoke(PipelinesNode.java:93)
        	at org.apache.cocoon.components.treeprocessor.ConcreteTreeProcessor.process(ConcreteTreeProcessor.java:236)
        	at org.apache.cocoon.components.treeprocessor.ConcreteTreeProcessor.process(ConcreteTreeProcessor.java:178)
        	at org.apache.cocoon.components.treeprocessor.TreeProcessor.process(TreeProcessor.java:254)
        	at org.apache.cocoon.components.treeprocessor.sitemap.MountNode.invoke(MountNode.java:118)
        	at org.apache.cocoon.components.treeprocessor.AbstractParentProcessingNode.invokeNodes(AbstractParentProcessingNode.java:47)
        	at org.apache.cocoon.components.treeprocessor.sitemap.MatchNode.invoke(MatchNode.java:108)
        	at org.apache.cocoon.components.treeprocessor.AbstractParentProcessingNode.invokeNodes(AbstractParentProcessingNode.java:69)
        	at org.apache.cocoon.components.treeprocessor.sitemap.PipelineNode.invoke(PipelineNode.java:143)
        	at org.apache.cocoon.components.treeprocessor.AbstractParentProcessingNode.invokeNodes(AbstractParentProcessingNode.java:69)
        	at org.apache.cocoon.components.treeprocessor.sitemap.PipelinesNode.invoke(PipelinesNode.java:93)
        	at org.apache.cocoon.components.treeprocessor.ConcreteTreeProcessor.process(ConcreteTreeProcessor.java:236)
        	at org.apache.cocoon.components.treeprocessor.ConcreteTreeProcessor.process(ConcreteTreeProcessor.java:178)
        	at org.apache.cocoon.components.treeprocessor.TreeProcessor.process(TreeProcessor.java:254)
        	at org.apache.cocoon.components.treeprocessor.sitemap.MountNode.invoke(MountNode.java:118)
        	at org.apache.cocoon.components.treeprocessor.AbstractParentProcessingNode.invokeNodes(AbstractParentProcessingNode.java:47)
        	at org.apache.cocoon.components.treeprocessor.sitemap.MatchNode.invoke(MatchNode.java:108)
        	at org.apache.cocoon.components.treeprocessor.AbstractParentProcessingNode.invokeNodes(AbstractParentProcessingNode.java:69)
        	at org.apache.cocoon.components.treeprocessor.sitemap.PipelineNode.invoke(PipelineNode.java:143)
        	at org.apache.cocoon.components.treeprocessor.AbstractParentProcessingNode.invokeNodes(AbstractParentProcessingNode.java:69)
        	at org.apache.cocoon.components.treeprocessor.sitemap.PipelinesNode.invoke(PipelinesNode.java:93)
        	at org.apache.cocoon.components.treeprocessor.ConcreteTreeProcessor.process(ConcreteTreeProcessor.java:236)
        	at org.apache.cocoon.components.treeprocessor.ConcreteTreeProcessor.process(ConcreteTreeProcessor.java:178)
        	at org.apache.cocoon.components.treeprocessor.TreeProcessor.process(TreeProcessor.java:254)
        	at org.apache.cocoon.Cocoon.process(Cocoon.java:699)
        	at org.ametys.runtime.servlet.RuntimeServlet.service(RuntimeServlet.java:543)
        	at javax.servlet.http.HttpServlet.service(HttpServlet.java:729)
        	at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:292)
        	at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:207)
        	at org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:52)
        	at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:240)
        	at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:207)
        	at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:212)
        	at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:94)
        	at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:141)
        	at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:79)
        	at org.apache.catalina.valves.AbstractAccessLogValve.invoke(AbstractAccessLogValve.java:620)
        	at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:88)
        	at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:502)
        	at org.apache.coyote.http11.AbstractHttp11Processor.process(AbstractHttp11Processor.java:1132)
        	at org.apache.coyote.AbstractProtocol$AbstractConnectionHandler.process(AbstractProtocol.java:684)
        	at org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.doRun(NioEndpoint.java:1539)
        	at org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.run(NioEndpoint.java:1495)
        	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)
        Caused by: org.apache.cocoon.ProcessingException: Failed to process pipeline
        	at <map:serialize type="xml-utf8"> - resource://org/ametys/cms/sitemap.xmap:151:49
        	at <map:transform type="hierarchize"> - resource://org/ametys/cms/sitemap.xmap:150:52
        	at <map:transform> - resource://org/ametys/cms/sitemap.xmap:149:83
        	at <map:transform type="htmledition2docbook"> - resource://org/ametys/cms/sitemap.xmap:148:60
        	at <map:generate type="xhtml"> - resource://org/ametys/cms/sitemap.xmap:147:45
        	at org.apache.cocoon.ProcessingException.throwLocated(ProcessingException.java:145)
        	at org.apache.cocoon.components.pipeline.AbstractProcessingPipeline.handleException(AbstractProcessingPipeline.java:955)
        	at org.apache.cocoon.components.pipeline.AbstractProcessingPipeline.processXMLPipeline(AbstractProcessingPipeline.java:585)
        	at org.apache.cocoon.components.pipeline.impl.AbstractCachingProcessingPipeline.processXMLPipeline(AbstractCachingProcessingPipeline.java:301)
        	at org.apache.cocoon.components.pipeline.AbstractProcessingPipeline.process(AbstractProcessingPipeline.java:483)
        	at org.apache.cocoon.components.source.impl.SitemapSource.getInputStream(SitemapSource.java:267)
        	... 124 more
        Caused by: org.ametys.plugins.repository.metadata.UnknownMetadataException: javax.jcr.PathNotFoundException: image001.jpg
        	at org.ametys.plugins.repository.metadata.jcr.JCRFolder.getFile(JCRFolder.java:184)
        	at org.ametys.plugins.repository.metadata.jcr.JCRFolder.getFile(JCRFolder.java:43)
        	at org.ametys.cms.transformation.htmledition.UploadedDataHTMLEditionHandler._processLocal(UploadedDataHTMLEditionHandler.java:444)
        	at org.ametys.cms.transformation.htmledition.UploadedDataHTMLEditionHandler.startElement(UploadedDataHTMLEditionHandler.java:135)
        	at org.ametys.cms.transformation.htmledition.AbstractHTMLEditionHandler.startElement(AbstractHTMLEditionHandler.java:93)
        	at org.ametys.web.editor.WebHTMLEditionHandler.startElement(WebHTMLEditionHandler.java:113)
        	at org.ametys.cms.transformation.htmledition.HTMLEditorHandlers2DocbookTransformer.startElement(HTMLEditorHandlers2DocbookTransformer.java:106)
        	at org.apache.xerces.parsers.AbstractSAXParser.startElement(Unknown Source)
        	at org.apache.xerces.parsers.AbstractXMLDocumentParser.emptyElement(Unknown Source)
        	at org.apache.xerces.impl.XMLNSDocumentScannerImpl.scanStartElement(Unknown Source)
        	at org.apache.xerces.impl.XMLDocumentFragmentScannerImpl$FragmentContentDispatcher.dispatch(Unknown Source)
        	at org.apache.xerces.impl.XMLDocumentFragmentScannerImpl.scanDocument(Unknown Source)
        	at org.apache.xerces.parsers.XML11Configuration.parse(Unknown Source)
        	at org.apache.xerces.parsers.XML11Configuration.parse(Unknown Source)
        	at org.apache.xerces.parsers.XMLParser.parse(Unknown Source)
        	at org.apache.xerces.parsers.AbstractSAXParser.parse(Unknown Source)
        	at org.apache.xerces.jaxp.SAXParserImpl$JAXPSAXParser.parse(Unknown Source)
        	at org.apache.excalibur.xml.impl.JaxpParser.parse(JaxpParser.java:315)
        	at org.apache.excalibur.xml.impl.JaxpParser.parse(JaxpParser.java:334)
        	at org.ametys.cms.transformation.XhtmlGenerator.generate(XhtmlGenerator.java:60)
        	at org.apache.cocoon.components.pipeline.AbstractProcessingPipeline.processXMLPipeline(AbstractProcessingPipeline.java:581)
        	... 127 more
        Caused by: javax.jcr.PathNotFoundException: image001.jpg
        	at org.apache.jackrabbit.core.NodeImpl$8.perform(NodeImpl.java:2167)
        	at org.apache.jackrabbit.core.NodeImpl$8.perform(NodeImpl.java:2161)
        	at org.apache.jackrabbit.core.session.SessionState.perform(SessionState.java:216)
        	at org.apache.jackrabbit.core.ItemImpl.perform(ItemImpl.java:91)
        	at org.apache.jackrabbit.core.NodeImpl.getNode(NodeImpl.java:2161)
        	at org.ametys.plugins.repository.metadata.jcr.JCRFolder.getFile(JCRFolder.java:179)
        	... 147 more

      What happened ?
      The rich text data of the wrong content has a reference to his image but with the wrong content id.

      <imagedata type="local" fileref="defaultWebContent://281d7592-6c7f-4a7f-b5ff-98236e267d16@content;image001.jpg" width="1440px" depth="24px"/>

      Worse, in my case, I already had images in the contents and all the old images have now the wrong content id. But it seems it doesn't happen like this each time, I have seen another content with images with the good content id and others with the wrong one. Maybe it depends in which order the reproduce steps are executed.

      Source ?
      There conflict is probably in the interface (but not sure).

        Attachments

          Activity

            People

            • Assignee:
              raphael Raphaël Franchet
              Reporter:
              bmaurel Bérénice Maurel
            • Votes:
              0 Vote for this issue
              Watchers:
              1 Start watching this issue

              Dates

              • Created:
                Updated:
                Resolved: