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

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

I committed a tentative fix to trunk: r1900677

The way this fix works is to convert the class instance to a fully-qualified 
class name and pass that.  Then, inside the custom resource loader, I turn the 
class name back to a Class object using Class.forName().  That, of course, uses 
the class loader in place at that moment, which (crosses fingers) may always be 
one for which the Class can be loaded, even it it's inside a connector and we 
need the connector class path loader.  The VelocityContext is initialized 
inside a Connector method, after all, so that should be the case.

[~julienFL], you should be able to try this for your example using the 
following steps:

(1) Check out a fresh copy of mcf trunk.
(2) ant make-core-deps (should not download 1.7 anymore)
(3) ant build
(4) cd dist/example
(5) start, and try this out.

Please let me know ASAP if this is working as expected, or if there are 
problems.


> 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