Configuration.properties contains configuration and internationalization values

Description

jsf/jsf-widgets/src/java/org/sakaiproject/jsf/Configuration.properties contains values that should be translated and others that shouldn't. When numerical values like the one for inputRichTextDefaultTextareaRows gets an extra space, you get the following:
2013-02-26 14:39:51,131 ERROR localhost-startStop-1 org.apache.myfaces.config.FacesConfigurator - failed to configure class org.sakaiproject.jsf.renderer.InputRichTextRenderer
java.lang.ExceptionInInitializerError
at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
at sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:39)
at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:27)
at java.lang.reflect.Constructor.newInstance(Constructor.java:513)
at java.lang.Class.newInstance0(Class.java:355)
at java.lang.Class.newInstance(Class.java:308)
at org.apache.myfaces.shared_impl.util.ClassUtils.newInstance(ClassUtils.java:277)
at org.apache.myfaces.shared_impl.util.ClassUtils.newInstance(ClassUtils.java:268)
at org.apache.myfaces.config.FacesConfigurator.configureRenderKits(FacesConfigurator.java:754)
at org.apache.myfaces.config.FacesConfigurator.configure(FacesConfigurator.java:149)
at org.apache.myfaces.webapp.StartupServletContextListener.initFaces(StartupServletContextListener.java:68)
at org.apache.myfaces.webapp.StartupServletContextListener.contextInitialized(StartupServletContextListener.java:51)
at org.apache.catalina.core.StandardContext.listenerStart(StandardContext.java:4791)
at org.apache.catalina.core.StandardContext.startInternal(StandardContext.java:5285)
at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:150)
at org.apache.catalina.core.ContainerBase.addChildInternal(ContainerBase.java:901)
at org.apache.catalina.core.ContainerBase.addChild(ContainerBase.java:877)
at org.apache.catalina.core.StandardHost.addChild(StandardHost.java:618)
at org.apache.catalina.startup.HostConfig.deployWAR(HostConfig.java:963)
at org.apache.catalina.startup.HostConfig$DeployWar.run(HostConfig.java:1600)
at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:441)
at java.util.concurrent.FutureTask$Sync.innerRun(FutureTask.java:303)
at java.util.concurrent.FutureTask.run(FutureTask.java:138)
at java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:886)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:908)
at java.lang.Thread.run(Thread.java:662)
Caused by: java.lang.NumberFormatException: For input string: "4 "
at java.lang.NumberFormatException.forInputString(NumberFormatException.java:48)
at java.lang.Integer.parseInt(Integer.java:458)
at java.lang.Integer.parseInt(Integer.java:499)
at org.sakaiproject.jsf.renderer.InputRichTextRenderer.<clinit>(InputRichTextRenderer.java:113)

Because of this:
DEFAULT_ROWS = Integer.parseInt(cr.get("inputRichTextDefaultTextareaRows"));

Check SAK-20809 for a similar problem with inputRichTextDefaultHeightPx.

Activity

Show:

Sam Ottenhoff March 7, 2013 at 3:26 PM

2.9.x r120907

Matthew Jones March 7, 2013 at 9:47 AM

This calls ConfigurationResource.get which does a try/catch internally and returns a empty string, so is safe to trim.
http://goo.gl/xm9uo

Jean-François Lévêque March 7, 2013 at 9:08 AM

Tested on local deployment of 2.9.1

Jean-François Lévêque March 1, 2013 at 5:12 AM
Edited

r120568 As a quick fix I've added trim()s for the 3 parsed ints that didn't have one.

Jean-François Lévêque February 27, 2013 at 2:18 AM

Raising to critical because it's hard to un-indie jsf for me and it could be the same for others.

Fixed

Details

Priority

Fix versions

Assignee

Reporter

Labels

Created February 26, 2013 at 8:11 AM
Updated June 8, 2013 at 12:59 PM
Resolved March 1, 2013 at 5:12 AM