[ 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)