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

Reply via email to