From notifications-return-29994-archive-asf-public=cust-asf.ponee.io@ofbiz.apache.org Sat Jan 25 14:06:02 2020 Return-Path: X-Original-To: archive-asf-public@cust-asf.ponee.io Delivered-To: archive-asf-public@cust-asf.ponee.io Received: from mail.apache.org (hermes.apache.org [207.244.88.153]) by mx-eu-01.ponee.io (Postfix) with SMTP id 346EB18061A for ; Sat, 25 Jan 2020 15:06:02 +0100 (CET) Received: (qmail 85475 invoked by uid 500); 25 Jan 2020 14:06:01 -0000 Mailing-List: contact notifications-help@ofbiz.apache.org; run by ezmlm Precedence: bulk List-Help: List-Unsubscribe: List-Post: List-Id: Reply-To: dev@ofbiz.apache.org Delivered-To: mailing list notifications@ofbiz.apache.org Received: (qmail 85460 invoked by uid 99); 25 Jan 2020 14:06:01 -0000 Received: from mailrelay1-us-west.apache.org (HELO mailrelay1-us-west.apache.org) (209.188.14.139) by apache.org (qpsmtpd/0.29) with ESMTP; Sat, 25 Jan 2020 14:06:01 +0000 Received: from jira-he-de.apache.org (static.172.67.40.188.clients.your-server.de [188.40.67.172]) by mailrelay1-us-west.apache.org (ASF Mail Server at mailrelay1-us-west.apache.org) with ESMTP id B2645E0F04 for ; Sat, 25 Jan 2020 14:06:00 +0000 (UTC) Received: from jira-he-de.apache.org (localhost.localdomain [127.0.0.1]) by jira-he-de.apache.org (ASF Mail Server at jira-he-de.apache.org) with ESMTP id 30F727803B7 for ; Sat, 25 Jan 2020 14:06:00 +0000 (UTC) Date: Sat, 25 Jan 2020 14:06:00 +0000 (UTC) From: "Jacques Le Roux (Jira)" To: notifications@ofbiz.apache.org Message-ID: In-Reply-To: References: Subject: [jira] [Comment Edited] (OFBIZ-11246) The createTaskContent request does not work MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: quoted-printable X-JIRA-FingerPrint: 30527f35849b9dde25b450d4833f0394 [ https://issues.apache.org/jira/browse/OFBIZ-11246?page=3Dcom.atlassia= n.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=3D170= 23544#comment-17023544 ]=20 Jacques Le Roux edited comment on OFBIZ-11246 at 1/25/20 2:05 PM: ------------------------------------------------------------------ Thanks for sharing error logs [~jleroux], I am able to replicate the same on latest trunk and also did my research ar= ound it. Here are the details: -- *createWorkEffortContent* is being triggers on file upload, and the requ= est object is getting parsed using *ServletFileUpload* two times, 1.=C2=A0 Inside UtilHttp.getMultiPartParameterMap() while making combined m= ap object from request object using method UtilHttp.getCombinedMap(request)= . 2. from *createWorkEffortContent* event, inside LayoutWorker.uploadImageAnd= Parameters()=C2=A0 So before calling *createWorkEffortContent*=C2=A0event, from #1, the upload= ed file is getting removed from the parse method on request object: {code} uploadedItems =3D UtilGenerics.cast(upload.parseRequest(request)); {code} It seems that same request can not be parsed multiple times if it has multi= part object in it as the parse method remove it after that. Found one stackoverflow link around the same: [https://stackoverflow.com/questions/13881272/servletfileuploadparserequest= request-returns-an-empty-list]=C2=A0 I believe that all places/uploads using this workflow should resulting the = same issue. was (Author: ankush.upadhyay): Thanks for sharing error logs [~jleroux], I am able to replicate the same on latest trunk and also did my research ar= ound it. Here are the details: -- *createWorkEffortContent* is being triggers on file upload, and the requ= est object is getting parsed using *ServletFileUpload* two times, 1.=C2=A0 Inside UtilHttp.getMultiPartParameterMap() while making combined m= ap object from request object using method UtilHttp.getCombinedMap(request)= . 2. from *createWorkEffortContent* event, inside LayoutWorker.uploadImageAnd= Parameters()=C2=A0 So before calling *createWorkEffortContent*=C2=A0event, from #1, the upload= ed file is getting removed from the parse method on request object: {code} uploadedItems =3D UtilGenerics.cast(upload.parseRequest(request)); {code} It seems that same request can not be parsed multiple times if it has multi= part object in it as the parse method remove it after that. Found one stackoverflow link around the same: [https://stackoverflow.com/questions/13881272/servletfileuploadparserequest= request-returns-an-empty-list] =C2=A0 I believe that all places/uploads using this workflow should resulting the = same issue. =C2=A0 =C2=A0 =C2=A0 > The createTaskContent request does not work > ------------------------------------------- > > Key: OFBIZ-11246 > URL: https://issues.apache.org/jira/browse/OFBIZ-11246 > Project: OFBiz > Issue Type: Bug > Components: projectmgr, workeffort > Affects Versions: Trunk > Reporter: Jacques Le Roux > Assignee: Jacques Le Roux > Priority: Major > > While working on OFBIZ-11123 I found that the createTaskContent request d= oes not work. > If you get to [https://demo-trunk.ofbiz.apache.org/projectmgr/control/Edi= tTaskContents?workEffortId=3D9002] and enter values, the 1st error you get = in log is > {noformat} > 2019-10-11 10:01:12,097 |ajp-nio-8009-exec-8 |UtilProperties = |W| layoutEvents.no_files_uploaded is missing in ContentErrorUiLabels f= or locale en > 2019-10-11 10:01:12,097 |ajp-nio-8009-exec-8 |UtilProperties = |W| layoutEvents.no_files_uploaded is missing in ContentErrorUiLabels f= or locale en > 2019-10-11 10:01:12,097 |ajp-nio-8009-exec-8 |ServiceUtil = |E| {errorMessage=3DlayoutEvents.no_files_uploaded, responseMessage=3De= rror} > {noformat} > The error above comes from LayoutWorker::uploadImageAndParameters with th= e below stack > {noformat} > org.apache.ofbiz.content.layout.LayoutWorker.uploadImageAndParameters(jav= ax.servlet.http.HttpServletRequest, java.lang.String) line: 56=09 > sun.reflect.NativeMethodAccessorImpl.invoke0(java.lang.reflect.Method, ja= va.lang.Object, java.lang.Object[]) line: not available [native method]=09 > sun.reflect.NativeMethodAccessorImpl.invoke(java.lang.Object, java.lang.O= bject[]) line: 62=09 > sun.reflect.DelegatingMethodAccessorImpl.invoke(java.lang.Object, java.la= ng.Object[]) line: 43=09 > java.lang.reflect.Method.invoke(java.lang.Object, java.lang.Object...) li= ne: 498=09 > org.apache.ofbiz.minilang.MiniLangUtil.callMethod(org.apache.ofbiz.minila= ng.method.MethodOperation, org.apache.ofbiz.minilang.method.MethodContext, = java.util.List>, java.lang= .Class, java.lang.Object, java.lang.String, org.apache.ofbiz.base.util.c= ollections.FlexibleMapAccessor) line: 131=09 > org.apache.ofbiz.minilang.method.callops.CallClassMethod.exec(org.apache.= ofbiz.minilang.method.MethodContext) line: 93=09 > org.apache.ofbiz.minilang.SimpleMethod.runSubOps(java.util.List, org.apache.ofbiz.minilang.method.= MethodContext) line: 310=09 > org.apache.ofbiz.minilang.SimpleMethod.exec(org.apache.ofbiz.minilang.met= hod.MethodContext) line: 457=09 > org.apache.ofbiz.minilang.SimpleMethod.runSimpleMethod(java.lang.String, = java.lang.String, org.apache.ofbiz.minilang.method.MethodContext) line: 274= =09 > org.apache.ofbiz.minilang.SimpleMethod.runSimpleEvent(java.lang.String, j= ava.lang.String, javax.servlet.http.HttpServletRequest, javax.servlet.http.= HttpServletResponse) line: 257=09 > org.apache.ofbiz.webapp.event.SimpleEventHandler.invoke(org.apache.ofbiz.= webapp.control.ConfigXMLReader$Event, org.apache.ofbiz.webapp.control.Confi= gXMLReader$RequestMap, javax.servlet.http.HttpServletRequest, javax.servlet= .http.HttpServletResponse) line: 70=09 > org.apache.ofbiz.webapp.control.RequestHandler.runEvent(javax.servlet.htt= p.HttpServletRequest, javax.servlet.http.HttpServletResponse, org.apache.of= biz.webapp.control.ConfigXMLReader$Event, org.apache.ofbiz.webapp.control.C= onfigXMLReader$RequestMap, java.lang.String) line: 784=09 > org.apache.ofbiz.webapp.control.RequestHandler.doRequest(javax.servlet.ht= tp.HttpServletRequest, javax.servlet.http.HttpServletResponse, java.lang.St= ring, org.apache.ofbiz.entity.GenericValue, org.apache.ofbiz.entity.Delegat= or) line: 507=09 > org.apache.ofbiz.webapp.control.ControlServlet.doGet(javax.servlet.http.H= ttpServletRequest, javax.servlet.http.HttpServletResponse) line: 212=09 > org.apache.ofbiz.webapp.control.ControlServlet.doPost(javax.servlet.http.= HttpServletRequest, javax.servlet.http.HttpServletResponse) line: 85=09 > org.apache.ofbiz.webapp.control.ControlServlet(javax.servlet.http.HttpSer= vlet).service(javax.servlet.http.HttpServletRequest, javax.servlet.http.Htt= pServletResponse) line: 665=09 > org.apache.ofbiz.webapp.control.ControlServlet(javax.servlet.http.HttpSer= vlet).service(javax.servlet.ServletRequest, javax.servlet.ServletResponse) = line: 750=09 > org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(javax.se= rvlet.ServletRequest, javax.servlet.ServletResponse) line: 231=09 > org.apache.catalina.core.ApplicationFilterChain.doFilter(javax.servlet.Se= rvletRequest, javax.servlet.ServletResponse) line: 166=09 > org.apache.tomcat.websocket.server.WsFilter.doFilter(javax.servlet.Servle= tRequest, javax.servlet.ServletResponse, javax.servlet.FilterChain) line: 5= 3=09 > org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(javax.se= rvlet.ServletRequest, javax.servlet.ServletResponse) line: 193=09 > org.apache.catalina.core.ApplicationFilterChain.doFilter(javax.servlet.Se= rvletRequest, javax.servlet.ServletResponse) line: 166=09 > org.apache.ofbiz.webapp.control.ContextFilter.doFilter(javax.servlet.Serv= letRequest, javax.servlet.ServletResponse, javax.servlet.FilterChain) line:= 187=09 > org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(javax.se= rvlet.ServletRequest, javax.servlet.ServletResponse) line: 193=09 > org.apache.catalina.core.ApplicationFilterChain.doFilter(javax.servlet.Se= rvletRequest, javax.servlet.ServletResponse) line: 166=09 > org.apache.ofbiz.webapp.control.ControlFilter.doFilter(javax.servlet.http= .HttpServletRequest, javax.servlet.http.HttpServletResponse, javax.servlet.= FilterChain) line: 156=09 > org.apache.ofbiz.webapp.control.ControlFilter(javax.servlet.http.HttpFilt= er).doFilter(javax.servlet.ServletRequest, javax.servlet.ServletResponse, j= avax.servlet.FilterChain) line: 127=09 > org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(javax.se= rvlet.ServletRequest, javax.servlet.ServletResponse) line: 193=09 > org.apache.catalina.core.ApplicationFilterChain.doFilter(javax.servlet.Se= rvletRequest, javax.servlet.ServletResponse) line: 166=09 > org.apache.logging.log4j.web.Log4jServletFilter.doFilter(javax.servlet.Se= rvletRequest, javax.servlet.ServletResponse, javax.servlet.FilterChain) lin= e: 71=09 > org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(javax.se= rvlet.ServletRequest, javax.servlet.ServletResponse) line: 193=09 > org.apache.catalina.core.ApplicationFilterChain.doFilter(javax.servlet.Se= rvletRequest, javax.servlet.ServletResponse) line: 166=09 > org.apache.catalina.core.StandardWrapperValve.invoke(org.apache.catalina.= connector.Request, org.apache.catalina.connector.Response) line: 202=09 > org.apache.catalina.core.StandardContextValve.invoke(org.apache.catalina.= connector.Request, org.apache.catalina.connector.Response) line: 96=09 > org.apache.catalina.authenticator.NonLoginAuthenticator(org.apache.catali= na.authenticator.AuthenticatorBase).invoke(org.apache.catalina.connector.Re= quest, org.apache.catalina.connector.Response) line: 526=09 > org.apache.catalina.core.StandardHostValve.invoke(org.apache.catalina.con= nector.Request, org.apache.catalina.connector.Response) line: 139=09 > org.apache.catalina.valves.ErrorReportValve.invoke(org.apache.catalina.co= nnector.Request, org.apache.catalina.connector.Response) line: 92=09 > org.apache.catalina.core.StandardEngineValve.invoke(org.apache.catalina.c= onnector.Request, org.apache.catalina.connector.Response) line: 74=09 > org.apache.catalina.valves.AccessLogValve(org.apache.catalina.valves.Abst= ractAccessLogValve).invoke(org.apache.catalina.connector.Request, org.apach= e.catalina.connector.Response) line: 678=09 > org.apache.catalina.connector.CoyoteAdapter.service(org.apache.coyote.Req= uest, org.apache.coyote.Response) line: 343=09 > org.apache.coyote.http11.Http11Processor.service(org.apache.tomcat.util.n= et.SocketWrapperBase) line: 408=09 > org.apache.coyote.http11.Http11Processor(org.apache.coyote.AbstractProces= sorLight).process(org.apache.tomcat.util.net.SocketWrapperBase, org.apac= he.tomcat.util.net.SocketEvent) line: 66=09 > org.apache.coyote.AbstractProtocol$ConnectionHandler.process(org.apach= e.tomcat.util.net.SocketWrapperBase, org.apache.tomcat.util.net.SocketEv= ent) line: 860=09 > org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.doRun() line: 1589= =09 > org.apache.tomcat.util.net.NioEndpoint$SocketProcessor(org.apache.tomcat.= util.net.SocketProcessorBase).run() line: 49=09 > org.apache.tomcat.util.threads.ThreadPoolExecutor(java.util.concurrent.Th= readPoolExecutor).runWorker(java.util.concurrent.ThreadPoolExecutor$Worker)= line: 1149=09 > java.util.concurrent.ThreadPoolExecutor$Worker.run() line: 624=09 > org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run() line: 61= =09 > org.apache.tomcat.util.threads.TaskThread(java.lang.Thread).run() line: 7= 48=09 > {noformat} -- This message was sent by Atlassian Jira (v8.3.4#803005)