myfaces-users mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From David Delbecq <de...@oma.be>
Subject Re: from-outcome value
Date Thu, 21 Dec 2006 15:57:39 GMT
Sorry, but there are 2 places where typos can happen
the .xml file
the action method

in you case, you have moved the string from action to a property file.
Typos in your case can happen in 3 places
the .xml (typo in @key@)
the property file (bad key name)
the helper class that call an entry in properties file (bad key)

better suggestion:
'outcome.continue' on .xml file
'outcome.continue' as a public static final String OUTCOME_CONTINUE in
helper class
you only have 2 instances of the string outcome.continue all over your
code, typos in OUTCOME_CONTINUE variable will generates compilation
errors, it's easy to maintain, you don't have to go thru an over
engineered process, and you have one less place where a typo can arise.

example design

public class OutcomeConstants {
    public static final String OUTCOME_CONTINUE="outcome.continue";
}
public String someAction(){
    ...
    return OutcomeConstants.OUTCOME_CONTINUE;
}

navigation rule:

<from-outcome>outcome.continue</from-outcome>

En l'instant précis du 12/21/06 15:40, Anil Kommareddi s'exprimait dans
toute sa noblesse:
> Hi,
> I agree this is a bit of overengineering, but when working with developers
> whose first language is not english, typos or misspellings are a part of the
> cycle and this is one way to minimize them. We are working on a largish ERP
> project with over 200 navigation rules and can use whatever help we can get
> from tooling, automation and frameworks :).
>
> As I mentioned earlier, this is not an elegant solution and as you pointed,
> probably not desirable either as described. I am just soliciting ideas and
> providing my thoughts for a discussion.
>
> -----Original Message-----
> From: David Delbecq [mailto:delbd@oma.be] 
> Sent: Thursday, December 21, 2006 9:18 AM
> To: MyFaces Discussion
> Subject: Re: from-outcome value
>
> Hi,
>
> This all looks to me a bit over-engineering and useless round cycling
> (defining constants string reference that resolve to constant string
> reference...)
>
> Why could this pack of things:
> <from-outcome>@OUTCOME.CONTINUE@</from-outcome>
> public String someAction(){
>    ...
>    return outcomeUtils.getOutcoume("OUTCOME.CONTINUE");
> }
> outcome.properties:
> OUTCOME.CONTINUE=continue
> finally proceed thru a ant script to convert your file
>
> in any way be better and more maintainable than this:
> <from-outcome>OUTCOME.CONTINUE</from-outcome>
> public String someAction(){
>    return"OUTCOME.CONTINUE";
> }
>
> In both cases, you need OUTCOME.CONTINUE to be used inside your action and
> inside your navigation-case. Then use it as your action return!
>
> En l'instant précis du 12/21/06 14:52, Anil Kommareddi s'exprimait dans
> toute sa noblesse:
>   
>> Thanks Marco, that is exactly what we have been doing.
>>  
>> Here is one way that I thought of doing if anyone else is interested:
>>  
>> Define the outcomes in a properties file and use an ANT filterset to 
>> use this properties file to replace the outcomes in the 
>> faces-config.xml during the build process. To take your example, the 
>> Outcomes class would contain a method like this:
>>  
>> *public* *static* String getOutcome(String id) {
>>     *return* /getResourceString/(ResourceUtils./TYPE_OUTCOMES/, id); }
>>  
>> The navigation rule would look like this:
>>
>> <navigation-case>
>>     <from-outcome>@OUTCOME.CONTINUE@</from-outcome>
>>     <to-view-id>/somepage.jsp</to-view-id>
>> </navigation-case>
>>
>> and the Outcomes properties file will contain:
>>  
>> OUTCOME.CONTINUE=continue
>>  
>> While this works, if anyone has a more elegant solution, I would love 
>> to see it.
>>  
>> Thanks for your response.
>> - Anil.
>>
>> ----------------------------------------------------------------------
>> --
>> *From:* Beelen, Marco [mailto:marco_beelen@merck.com]
>> *Sent:* Thursday, December 21, 2006 4:01 AM
>> *To:* MyFaces Discussion
>> *Subject:* RE: from-outcome value
>>
>> Anil,
>>  
>> There is no way you can specify the name of an outcome just once and 
>> use a reference to it both in the java-code of your managed-bean and 
>> the navigation-rules in your faces-config.xml. Since your 
>> faces-config.xml doesn't get build or compile, there is no way to 
>> garantee that the values used for outcomes are 'valid' and match the 
>> String you use in the managed-bean.
>>  
>> For me it works fine to create a Outcomes-class which contains a set 
>> of static final String for all outcomes I use through out the entire 
>> application. It allows to reference to those outcomes in your 
>> managed-bean and set JavaDoc on the outcome-constants to spefify the 
>> String to use in the faces-config.xml.
>>  
>> public class Outcomes {
>>     /**
>>      * Outcome use to proceed to the next step in a wizard: "continue".
>>      */
>>     public static final String CONTINUE = "continue"; }
>>  
>> managed-bean:
>>  
>> public String someMethod() {
>>   return Outcomes.CONTINUE;
>> }
>>  
>> This doesn't prevent you from making mistakes and errors in typing the 
>> value for from-outcome, but does offer you the possibility to re-use 
>> your code better and made changes easier by allowing you to refactor 
>> your code instead of performing 'global' search and replace-action on 
>> your Strings used as outcomes.
>>  
>> With kind regards,
>>   Marco Beelen
>>  
>>  
>>  
>>  
>>  
>>  
>>  
>>  
>> ----------------------------------------------------------------------
>> --
>> *From:* Anil Kommareddi [mailto:anil.kommareddi@effone.com]
>> *Sent:* woensdag 20 december 2006 20:00
>> *To:* users@myfaces.apache.org
>> *Subject:* OT: from-outcome value
>>
>> Folks,
>> Has anyone devised or know of a pattern to be able to use a reference 
>> to a constant string or property file in the from-outcome tag of a 
>> navigation-case instead of 'hardcoding' the actual string there?
>>
>> My objective here is to maintain a common repository of outcomes 
>> either in a class or property file and refer to them from both the 
>> action method and the navigation case.
>>
>> Thanks - Anil.
>> ----------------------------------------------------------------------
>> --------
>> Notice:  This e-mail message, together with any attachments, contains 
>> information of Merck & Co., Inc. (One Merck Drive, Whitehouse Station, 
>> New Jersey, USA 08889), and/or its affiliates (which may be known 
>> outside the United States as Merck Frosst, Merck Sharp & Dohme or MSD 
>> and in Japan, as Banyu - direct contact information for affiliates is 
>> available at http://www.merck.com/contact/contacts.html) that may be 
>> confidential, proprietary copyrighted and/or legally privileged. It is 
>> intended solely for the use of the individual or entity named on this 
>> message. If you are not the intended recipient, and have received this 
>> message in error, please notify us immediately by reply e-mail and 
>> then delete it from your system.
>>
>> ----------------------------------------------------------------------
>> --------
>>     
>
>
>   


Mime
View raw message