Page 1 of 1

Files with name containing "&" give error

PostPosted:Thu Jul 10, 2014 8:52 am
by Ben.Hahlen
I just upgraded to OpenKM Community 6.3 and noticed that filenames which contain an & give the following error:
Code: Select all
OKM-009015(GetAllGroups): Path not exist
and the following error in the log:
Code: Select all
2014-07-10 10:49:53,463 [ajp-bio-127.0.0.1-8009-exec-11] ERROR org.apache.catalina.core.ContainerBase.[Catalina].[localhost].[/OpenKM].[ConverterServlet] - Servlet.service() for servlet [ConverterServlet] in context with path [/OpenKM] threw exception [com.openkm.frontend.client.OKMException: /okm:root/Ben/location/2012/2012-12-20 - name & stuff.pdf] with root cause
com.openkm.frontend.client.OKMException: /okm:root/Ben/location/2012/2012-12-20 - name & stuff 2013.pdf
	at com.openkm.servlet.frontend.ConverterServlet.service(ConverterServlet.java:173)
	at javax.servlet.http.HttpServlet.service(HttpServlet.java:722)
	at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:305)
	at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:210)
	at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:311)
	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:323)
	at org.springframework.security.web.access.ExceptionTranslationFilter.doFilter(ExceptionTranslationFilter.java:113)
	at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:323)
	at org.springframework.security.web.session.SessionManagementFilter.doFilter(SessionManagementFilter.java:101)
	at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:323)
	at org.springframework.security.web.authentication.AnonymousAuthenticationFilter.doFilter(AnonymousAuthenticationFilter.java:113)
	at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:323)
	at org.springframework.security.web.servletapi.SecurityContextHolderAwareRequestFilter.doFilter(SecurityContextHolderAwareRequestFilter.java:54)
	at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:323)
	at org.springframework.security.web.savedrequest.RequestCacheAwareFilter.doFilter(RequestCacheAwareFilter.java:45)
	at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:323)
	at org.springframework.security.web.authentication.AbstractAuthenticationProcessingFilter.doFilter(AbstractAuthenticationProcessingFilter.java:182)
	at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:323)
	at org.springframework.security.web.context.SecurityContextPersistenceFilter.doFilter(SecurityContextPersistenceFilter.java:87)
	at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:323)
	at org.springframework.security.web.FilterChainProxy.doFilter(FilterChainProxy.java:173)
	at org.springframework.web.filter.DelegatingFilterProxy.invokeDelegate(DelegatingFilterProxy.java:346)
	at org.springframework.web.filter.DelegatingFilterProxy.doFilter(DelegatingFilterProxy.java:259)
	at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:243)
	at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:210)
	at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:225)
	at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:169)
	at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:472)
	at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:168)
	at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:98)
	at org.apache.catalina.valves.AccessLogValve.invoke(AccessLogValve.java:927)
	at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:118)
	at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:407)
	at org.apache.coyote.ajp.AjpProcessor.process(AjpProcessor.java:200)
	at org.apache.coyote.AbstractProtocol$AbstractConnectionHandler.process(AbstractProtocol.java:565)
	at org.apache.tomcat.util.net.JIoEndpoint$SocketProcessor.run(JIoEndpoint.java:307)
	at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1145)
	at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:615)
	at java.lang.Thread.run(Thread.java:745)
This did not happen in 6.2.5

Re: Files with name containing "&" give error

PostPosted:Fri Jul 11, 2014 4:24 pm
by jllort
I think we've missed one step in migration guide, but before test it, please do a backup of your system.

Go to the scripting and execute this script:
Code: Select all
import com.openkm.dao.bean.*;
import com.openkm.dao.*;
import com.openkm.util.*;
import org.hibernate.*;
 
String qs = "from NodeBase nb where nb.name like '%&%' and nb.uuid NOT IN (select nb.uuid from NodeBase nb where nb.name like '%&%')";
Session session = null;
Transaction tx = null;
  
try {
    session = HibernateUtil.getSessionFactory().openSession();
    tx = session.beginTransaction();
    Query q = session.createQuery(qs);
     
    for (NodeBase nBase : q.list()) {
       print(nBase.getUuid() + " -> " + nBase.getName() + "<br>");
       nBase.setName(PathUtils.encodeEntities(nBase.getName()));
       session.update(nBase);
    }
     
    HibernateUtil.commit(tx);
} catch (Exception e) {
    HibernateUtil.rollback(tx);
    e.printStackTrace();
} finally {
    HibernateUtil.close(session);
}
Please confirm to me if that solved the problem.

Re: Files with name containing "&" give error

PostPosted:Sat Jul 12, 2014 10:02 am
by pavila
Executing this solved your problem?

Re: Files with name containing "&" give error

PostPosted:Mon Jul 14, 2014 6:29 am
by Ben.Hahlen
The mail from the forum landed in my junk-mail, so I didn't see it before.

I can report that executing the script fixed the problem :)
Thanks for the fast reply.

Re: Files with name containing "&" give error

PostPosted:Mon Jul 14, 2014 7:04 am
by pavila
Good to know :)

Re: Files with name containing "&" give error

PostPosted:Mon Jul 14, 2014 8:01 am
by jllort
We've updated the migration guide with this missing step.