[ 
https://issues.apache.org/jira/browse/CONNECTORS-1712?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=17533362#comment-17533362
 ] 

Karl Wright commented on CONNECTORS-1712:
-----------------------------------------

The problem is that we allow velocity templates to be associated with a class 
instance, and in order for that to work right somehow the class instance has to 
get into our custom velocity resource loader.  We were passing it as a 
constructor argument but we no longer are allowed to instantiate it ourselves.  
The velocity resource loader does receive an ExtProperties object which can 
include a Class property, but I don't know how to set this in the velocity 
properties so that it makes it through somehow to the resource loader.

There's also a fundamental change to how logging is done by Velocity that will 
require work, but it is not insurmountable.  The first problem is currently 
insurmountable however and we may need to request Velocity changes to allow 
this to be done again.


> Broken Velocity UI
> ------------------
>
>                 Key: CONNECTORS-1712
>                 URL: https://issues.apache.org/jira/browse/CONNECTORS-1712
>             Project: ManifoldCF
>          Issue Type: Bug
>          Components: API
>    Affects Versions: ManifoldCF 2.22
>            Reporter: Julien Massiera
>            Assignee: Karl Wright
>            Priority: Critical
>
> In the mcf-crawler-ui, we cannot enter in edition mode for any connector 
> because there is a problem with Velocity.
> We obtain the following error in the logs:
>  
> {code:java}
> java.lang.NoSuchMethodError: 'void 
> org.apache.velocity.app.VelocityEngine.setExtendedProperties(org.apache.commons.collections.ExtendedProperties)'
>     at 
> org.apache.manifoldcf.core.i18n.Messages.createVelocityEngine(Messages.java:62)
>  ~[mcf-core.jar:?]
>     at 
> org.apache.manifoldcf.ui.i18n.Messages.outputResourceWithVelocity(Messages.java:132)
>  ~[mcf-ui-core.jar:?]
>     at 
> com.francelabs.datafari.connectors.share.Messages.outputResourceWithVelocity(Messages.java:111)
>  ~[?:?]
>     at 
> com.francelabs.datafari.connectors.share.SharedDriveConnector.outputSpecificationHeader(SharedDriveConnector.java:2829)
>  ~[?:?]
>     at org.apache.jsp.editjob_jsp._jspService(editjob_jsp.java:977) 
> ~[mcf-crawler-ui.jar:?]
>     at org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:70) 
> ~[jasper.jar:9.0.56]
>     at javax.servlet.http.HttpServlet.service(HttpServlet.java:764) 
> ~[servlet-api.jar:4.0.FR]
>     at 
> org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:466)
>  ~[jasper.jar:9.0.56]
>     at 
> org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:379) 
> ~[jasper.jar:9.0.56]
>     at org.apache.jasper.servlet.JspServlet.service(JspServlet.java:327) 
> ~[jasper.jar:9.0.56]
>     at javax.servlet.http.HttpServlet.service(HttpServlet.java:764) 
> ~[servlet-api.jar:4.0.FR]
>     at 
> org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:227)
>  ~[catalina.jar:9.0.56]
>     at 
> org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:162)
>  ~[catalina.jar:9.0.56]
>     at org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:53) 
> ~[tomcat-websocket.jar:9.0.56]
>     at 
> org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:189)
>  ~[catalina.jar:9.0.56]
>     at 
> org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:162)
>  ~[catalina.jar:9.0.56]
>     at 
> org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:197)
>  [catalina.jar:9.0.56]
>     at 
> org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:97)
>  [catalina.jar:9.0.56]
>     at 
> org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:540)
>  [catalina.jar:9.0.56]
>     at 
> org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:135) 
> [catalina.jar:9.0.56]
>     at 
> org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:92) 
> [catalina.jar:9.0.56]
>     at 
> org.apache.catalina.valves.AbstractAccessLogValve.invoke(AbstractAccessLogValve.java:687)
>  [catalina.jar:9.0.56]
>     at 
> org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:78)
>  [catalina.jar:9.0.56]
>     at 
> org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:357) 
> [catalina.jar:9.0.56]
>     at org.apache.coyote.ajp.AjpProcessor.service(AjpProcessor.java:433) 
> [tomcat-coyote.jar:9.0.56]
>     at 
> org.apache.coyote.AbstractProcessorLight.process(AbstractProcessorLight.java:65)
>  [tomcat-coyote.jar:9.0.56]
>     at 
> org.apache.coyote.AbstractProtocol$ConnectionHandler.process(AbstractProtocol.java:895)
>  [tomcat-coyote.jar:9.0.56]
>     at 
> org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.doRun(NioEndpoint.java:1732)
>  [tomcat-coyote.jar:9.0.56]
>     at 
> org.apache.tomcat.util.net.SocketProcessorBase.run(SocketProcessorBase.java:49)
>  [tomcat-coyote.jar:9.0.56]
>     at 
> org.apache.tomcat.util.threads.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1191)
>  [tomcat-util.jar:9.0.56]
>     at 
> org.apache.tomcat.util.threads.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:659)
>  [tomcat-util.jar:9.0.56]
>     at 
> org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:61)
>  [tomcat-util.jar:9.0.56]
>     at java.lang.Thread.run(Thread.java:829) [?:?] {code}
>  
>  
> After some investigations it seems related to the updated velocity lib from 
> velocity-1.7 to velocity-engine-core-2.3 
> The first problem found is that the old velocity version libs and their 
> dependencies are still present in the MCF build for the MCF Agent AND the 
> mcf-crawler-ui.
> The concerned libs are:
> - commons-collections-3.2.2.jar
> - commons-lang-2.6.jar
> - velocity-1.7.jar
>  
> The second problem is that with the new velocity version, the way to set 
> properties to the engine has changed. So the code in the 
> org.apache.manifoldcf.core.i18n.Messages.createVelocityEngine method is no 
> longer valid and needs to be updated to fit with the new way which is:
> {code:java}
> VelocityEngine engine = new VelocityEngine();
> Properties configuration = new Properties();
> configuration.setProperty(VelocityEngine.RESOURCE_LOADER,"mcf");
> ....
> engine.setProperties(configuration); {code}



--
This message was sent by Atlassian Jira
(v8.20.7#820007)

Reply via email to