Hello,
I'm using SmartGWT Power 2013-01-22. I'm devlopping on Windows 7 with IE 9.0.
I have a form with a FileItem and when I attach a file with space in its name I get an ArrayIndexOutOfBoundsException on the server:
In the ISC Console RPC Log, this is what the request looks like:
I gave an example with an update, but with an add operation result is the same. After the error nothing gets back to the client and the operation times out.
On the same form if I attach a file with no spaces, all works well.
I'm using SmartGWT Power 2013-01-22. I'm devlopping on Windows 7 with IE 9.0.
I have a form with a FileItem and when I attach a file with space in its name I get an ArrayIndexOutOfBoundsException on the server:
Code:
=== 2013-01-23 13:39:28,958 [0-28] INFO DSRequest - We parsed 1 uploaded file(s): "C:/fakepath/20130101 - TERMO DE COMPROMISSO DE MANUTENÇÃO DE SIGILO E CUMPRIMENTO DAS NORMAS DE SEGURANÇA DA INFORMAÇÃO.docx" (25912 bytes) === 2013-01-23 13:39:28,958 [0-28] DEBUG DataSource - In DS.forName() for 'publicoInterno' with DSRequest: com.isomorphic.datasource.DSRequest@19cfb45 === 2013-01-23 13:39:28,958 [0-28] DEBUG DataSource - Creating instance of DataSource 'publicoInterno' === 2013-01-23 13:39:28,958 [0-28] DEBUG DataSource - In DS.forName() for 'discussao' with DSRequest: null === 2013-01-23 13:39:28,959 [0-28] DEBUG DataSource - Creating instance of DataSource 'discussao' === 2013-01-23 13:39:28,959 [0-28] DEBUG DataSource - In DS.forName() for 'visita' with DSRequest: null === 2013-01-23 13:39:28,959 [0-28] DEBUG DataSource - Creating instance of DataSource 'visita' === 2013-01-23 13:39:28,959 [0-28] ERROR IDACall - Top-level servlet error: java.lang.ArrayIndexOutOfBoundsException: -61 at org.apache.commons.codec.binary.Base64.isBase64(Base64.java:137) at org.apache.commons.codec.binary.Base64.discardNonBase64(Base64.java:478) at org.apache.commons.codec.binary.Base64.decodeBase64(Base64.java:374) at com.isomorphic.util.DataTools.base64Decode(DataTools.java:4805) at com.isomorphic.datasource.DSRequest.decodeUploadedStrings(DSRequest.java:665) at com.isomorphic.datasource.DSRequest.<init>(DSRequest.java:543) at com.isomorphic.rpc.RPCManager.parseRequest(RPCManager.java:1994) at com.isomorphic.rpc.RPCManager.<init>(RPCManager.java:284) at com.isomorphic.rpc.RPCManager.<init>(RPCManager.java:269) at com.isomorphic.servlet.IDACall.processRequest(IDACall.java:133) at com.isomorphic.servlet.IDACall.doPost(IDACall.java:74) at javax.servlet.http.HttpServlet.service(HttpServlet.java:637) at com.isomorphic.servlet.BaseServlet.service(BaseServlet.java:152) at javax.servlet.http.HttpServlet.service(HttpServlet.java:717) at org.mortbay.jetty.servlet.ServletHolder.handle(ServletHolder.java:487) at org.mortbay.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1097) at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:322) at org.springframework.security.web.access.intercept.FilterSecurityInterceptor.invoke(FilterSecurityInterceptor.java:116) at org.springframework.security.web.access.intercept.FilterSecurityInterceptor.doFilter(FilterSecurityInterceptor.java:83) at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:334) at org.springframework.security.web.access.ExceptionTranslationFilter.doFilter(ExceptionTranslationFilter.java:113) at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:334) at org.springframework.security.web.session.SessionManagementFilter.doFilter(SessionManagementFilter.java:103) at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:334) at org.springframework.security.web.authentication.AnonymousAuthenticationFilter.doFilter(AnonymousAuthenticationFilter.java:113) at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:334) at org.springframework.security.web.servletapi.SecurityContextHolderAwareRequestFilter.doFilter(SecurityContextHolderAwareRequestFilter.java:54) at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:334) at org.springframework.security.web.savedrequest.RequestCacheAwareFilter.doFilter(RequestCacheAwareFilter.java:45) at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:334) at org.springframework.security.web.authentication.AbstractAuthenticationProcessingFilter.doFilter(AbstractAuthenticationProcessingFilter.java:182) at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:334) at org.springframework.security.web.context.SecurityContextPersistenceFilter.doFilter(SecurityContextPersistenceFilter.java:87) at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:334) at org.springframework.security.web.FilterChainProxy.doFilterInternal(FilterChainProxy.java:184) at org.springframework.security.web.FilterChainProxy.doFilter(FilterChainProxy.java:155) at org.springframework.web.filter.DelegatingFilterProxy.invokeDelegate(DelegatingFilterProxy.java:346) at org.springframework.web.filter.DelegatingFilterProxy.doFilter(DelegatingFilterProxy.java:259) at org.mortbay.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1088) at org.springframework.web.filter.RequestContextFilter.doFilterInternal(RequestContextFilter.java:83) at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:76) at org.mortbay.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1088) at org.mortbay.jetty.servlet.ServletHandler.handle(ServletHandler.java:360) at org.mortbay.jetty.security.SecurityHandler.handle(SecurityHandler.java:216) at org.mortbay.jetty.servlet.SessionHandler.handle(SessionHandler.java:181) at org.mortbay.jetty.handler.ContextHandler.handle(ContextHandler.java:729) at org.mortbay.jetty.webapp.WebAppContext.handle(WebAppContext.java:405) at org.mortbay.jetty.handler.HandlerWrapper.handle(HandlerWrapper.java:152) at org.mortbay.jetty.handler.RequestLogHandler.handle(RequestLogHandler.java:49) at org.mortbay.jetty.handler.HandlerWrapper.handle(HandlerWrapper.java:152) at org.mortbay.jetty.Server.handle(Server.java:324) at org.mortbay.jetty.HttpConnection.handleRequest(HttpConnection.java:505) at org.mortbay.jetty.HttpConnection$RequestHandler.content(HttpConnection.java:843) at org.mortbay.jetty.HttpParser.parseNext(HttpParser.java:647) at org.mortbay.jetty.HttpParser.parseAvailable(HttpParser.java:205) at org.mortbay.jetty.HttpConnection.handle(HttpConnection.java:380) at org.mortbay.io.nio.SelectChannelEndPoint.run(SelectChannelEndPoint.java:395) at org.mortbay.thread.QueuedThreadPool$PoolThread.run(QueuedThreadPool.java:488)
Code:
{ dataSource:"publicoInterno", operationType:"update", componentId:"isc_DynamicForm_36", data:{ anexo:"C:\\fakepath\\20130101 - TERMO DE COMPROMISSO DE MANUTENÇÃO DE SIGILO E CUMPRIMENTO DAS NORMAS DE SEGURANÇA DA INFORMAÇÃO.docx", visitaTecnica:42, SQ_PUBLICO_INTERNO:101, discussaoTematica:22, telefoneComercial:"6190909090", nomeCandidato:"XXXX YYYY", cargo:"iouiouio", mesaRedonda:true, enviado:false, IM_ANEXO_filesize:84335, feira:true, unidadeExercicio:"iuoiuoi", escolaridade:1, IM_ANEXO_date_created:"2013-01-23T15:35:40", padrao:"iouoiu", login:"maria.matos", cpf:"12345", descricaoVisita:"Estádio Governador Magalhães Pinto - Mineirão", vinculoFunasa:3, nivel:2, identidade:"98098098", orgaoExpedidor:"SSP/DF", unidadeLotacao:"iouoiuoi", fax:"6190090909", classe:"iouoiuoi", unidadeOrigem:"uiouoi", IM_ANEXO_filename:"analytics.jar", descricaoDiscussao:"Esgotamento Sanitário", formacao:"Testador", matriculaSIAPE:"8979879", telefoneCelular:"61909090909", telefoneResidencial:"6198989890", email:"cedric.lamalle@ba.com", nomeEvento:"IV Seminário Internacional de Engenharia de Saúde", localEvento:"Belo Horizonte/MG", periodoEvento:"18 a 22/03/2013" }, callback:{ target:[DynamicForm ID:isc_DynamicForm_36], methodName:"saveEditorReply" }, showPrompt:true, prompt:"Salvando formulário...", oldValues:{ visitaTecnica:42, SQ_PUBLICO_INTERNO:101, discussaoTematica:22, telefoneComercial:"6190909090", nomeCandidato:"XXXX YYYY", cargo:"iouiouio", mesaRedonda:true, enviado:false, IM_ANEXO_filesize:84335, feira:true, unidadeExercicio:"iuoiuoi", escolaridade:1, IM_ANEXO_date_created:"2013-01-23T15:35:40", padrao:"iouoiu", login:"maria.matos", cpf:"12345", descricaoVisita:"Estádio Governador Magalhães Pinto - Mineirão", vinculoFunasa:3, nivel:2, identidade:"98098098", orgaoExpedidor:"SSP/DF", unidadeLotacao:"iouoiuoi", fax:"6190090909", classe:"iouoiuoi", unidadeOrigem:"uiouoi", IM_ANEXO_filename:"analytics.jar", descricaoDiscussao:"Esgotamento Sanitário", formacao:"Testador", matriculaSIAPE:"8979879", telefoneCelular:"61909090909", telefoneResidencial:"6198989890", email:"cedric.lamalle@ba.com" }, requestId:"publicoInterno$6274", clientContext:{ }, useStrictJSON:true, fallbackToEval:true, afterFlowCallback:"isc_DynamicForm_36.$49z(dsRequest, dsResponse, data)", directSubmit:true, submitForm:[DynamicForm ID:isc_DynamicForm_36], editor:[DynamicForm ID:isc_DynamicForm_36], bypassCache:true }
On the same form if I attach a file with no spaces, all works well.
Comment