That's exactly right. And yes, profile.nameCollision should move from templates.default to CoreResources.
There is probably going to be enough of this kind of activity to warrant creating a little tool to manage the moves/deletes/renames. I've been doing it by hand, and it is painful. Andrew On Tue, Jan 13, 2009 at 12:27 PM, Harry Metske <[email protected]> wrote: > Andrew, > > thanks for the explanation, good to have it here, I must have missed that > detail. > So, if I understand it correctly, it can be summarized as : > > - All Stripes related messages to CoreResources (new, or copied from > templates.default) > - If not used anymore by JSPs, delete from templates.default. > > And in this particular case, the profile.nameCollision should move from > templates.default to CoreResources. > > regards, > Harry > > 2009/1/13 Andrew Jaquith <[email protected]> > >> Harry -- >> >> Because of an earlier decision we made to move Stripes-related >> messages from the template bundles into CoreResources, I've been >> carefully doing some re-factoring of the resource bundles. The rules >> I've been using are these: >> >> (1) ActionBeans that need to emit messages should be put into >> CoreResources. >> (2) Field names used in stripes:* tags (e.g., stripes:label, >> stripes:input, stripes:submit etc.) should also be put into >> CoreResources >> >> Messages for these items are therefore copied from templates.default >> to CoreResources. >> >> (3) If the message isn't used anywhere else in the JSPs, I have also >> been deleting them from templates.default. I use grep to figure this >> out. Example: >> >> grep -r "login.password" src/templates >> >> If the grep turns up nothing, I figure it's safe to remove. >> >> (4) Stripes field names can be short ("loginname") or long >> ("com.ecyrd.jspwiki.action.UserProfileActionBean.loginname). Because >> most fields are likely to be re-used, I am renaming the message keys >> in CoreResources to use the short name in all cases except for submit >> buttons. >> >> (5) Above every renamed message key, I've placed a short comment >> indicating the previous (2.x) key name. >> >> If you are seeing messages on JSPs indicating that a resource can't be >> found, that generally means that I haven't moved the message key from >> templates.default to CoreResources, usually because I haven't gotten >> to it yet. For example, I haven't yet moved the message keys for group >> pages (Group.jsp), even though the JSPs themselves use Stripes tags. >> >> By the way, Harry, if you are feeling especially adventurous, I'd love >> to get some help on migrating the rest of the JSPs. It is basically a >> two-step process: move the scriptlet code into ActionBean handler >> methods & cleanup the top-level JSP, then modify JSP content pages to >> use the stripes tags. >> >> Andrew >> >> Andrew >> >> On Sun, Jan 11, 2009 at 2:05 PM, Harry Metske <[email protected]> >> wrote: >> > The current web.xml has the following defined for searching localizable >> > messages (Stripes) : >> > >> > <init-param> >> > >> > <param-name>LocalizationBundleFactory.ErrorMessageBundle</param-name> >> > <param-value>CoreResources</param-value> >> > </init-param> >> > >> > Now, I found the following error during some initial testing : >> > >> > Jan 11, 2009 3:18:01 PM org.apache.catalina.core.ApplicationDispatcher >> > invoke >> > SEVERE: Servlet.service() for servlet >> > org.apache.jspwiki.jsp.templates.default_.ProfileTab_jsp threw exception >> > java.util.MissingResourceException: Could not find an error message with >> > key: profile.nameCollision >> > at >> > >> net.sourceforge.stripes.validation.LocalizableError.getMessageTemplate(LocalizableError.java:109) >> > at >> > >> net.sourceforge.stripes.action.SimpleMessage.getMessage(SimpleMessage.java:91) >> > at >> > >> net.sourceforge.stripes.validation.SimpleError.getMessage(SimpleError.java:102) >> > at >> > net.sourceforge.stripes.tag.ErrorsTag.doEndTag(ErrorsTag.java:349) >> > at >> > >> org.apache.jspwiki.jsp.templates.default_.ProfileTab_jsp._jspService(Unknown >> > Source) >> > at >> > org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:94) >> > at javax.servlet.http.HttpServlet.service(HttpServlet.java:803) >> > >> > Adding to CoreResource.properties the following key: >> > profile.nameCollision=The {0} is already taken. >> > >> > solves the problem, but this key is already present in >> > templates/default.properties. >> > >> > Is this the intended solution, or should the default.properties be added >> to >> > LocalizationBundleFactory.ErrorMessageBundle, or something else ? >> > >> > regards, >> > Harry >> > >> >
