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

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

This was the Velocity 1.x code:

{code}
            /**
             * Resource loader can be loaded either via class name or be passed 
             * in as an instance. 
             */ 
            ExtendedProperties configuration = (ExtendedProperties) it.next(); 
 
            String loaderClass = 
StringUtils.nullTrim(configuration.getString("class")); 
            ResourceLoader loaderInstance = (ResourceLoader) 
configuration.get("instance"); 
 
            if (loaderInstance != null) 
            { 
                resourceLoader = loaderInstance; 
            } 
            else if (loaderClass != null) 
            { 
                resourceLoader = ResourceLoaderFactory.getLoader(rsvc, 
loaderClass); 
            } 
            else 
            { 
                String msg = "Unable to find '" + 
                          configuration.getString(RESOURCE_LOADER_IDENTIFIER) + 
                          ".resource.loader.class' specification in 
configuration." + 
                          " This is a critical value.  Please adjust 
configuration."; 
                log.error(msg); 
                throw new VelocityException(msg); 
            } 
 
            resourceLoader.commonInit(rsvc, configuration); 
            resourceLoader.init(configuration); 
            resourceLoaders.add(resourceLoader); 
{code}

Note how you had your choice of providing the class (as a string), or the 
instance (as an object of type ResourceLoader).  AFAICT, they simply removed 
the "instance" option entirely in Velocity 2.x.  We need to find a way of doing 
the same thing.


> 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