From: Chad B. <cwb...@us...> - 2008-05-14 20:29:08
|
User: cwbrandon Date: 08/05/14 13:29:14 Modified: andromda-jsf2/src/main/resources/templates/jsf2/utils MessagePhaseListener.java.vsl Log: Add ability to set override default jsf validation messages. Revision Changes Path 1.3 +73 -1 cartridges/andromda-jsf2/src/main/resources/templates/jsf2/utils/MessagePhaseListener.java.vsl Index: MessagePhaseListener.java.vsl =================================================================== RCS file: /cvsroot/andromdaplugins/cartridges/andromda-jsf2/src/main/resources/templates/jsf2/utils/MessagePhaseListener.java.vsl,v retrieving revision 1.2 retrieving revision 1.3 diff -u -w -r1.2 -r1.3 --- MessagePhaseListener.java.vsl 21 Mar 2008 16:07:13 -0000 1.2 +++ MessagePhaseListener.java.vsl 14 May 2008 20:29:14 -0000 1.3 @@ -17,11 +17,37 @@ @Override protected void handleBeforePhase(javax.faces.event.PhaseEvent event) { + final javax.faces.context.FacesContext context = event.getFacesContext(); + final javax.faces.component.UIViewRoot root = context.getViewRoot(); + for (final java.util.Iterator iterator = context.getClientIdsWithMessages(); iterator.hasNext();) + { + final String clientId = (String) iterator.next(); + final javax.faces.component.UIComponent component = root.findComponent(clientId); + for (final java.util.Iterator iterator2 = context.getMessages(clientId); iterator2.hasNext();) + { + final javax.faces.application.FacesMessage facesMessage = (javax.faces.application.FacesMessage)iterator2.next(); + final String messageKey = this.getMessageKey(facesMessage.getDetail()); + final String newMessage = Messages.get(messageKey, null); + if (!newMessage.equals(messageKey)) + { + final int maxIndex = this.getMaxIndex(newMessage); + if (maxIndex > N0_ARGUMENTS) + { + final Object[] arguments = new Object[maxIndex + 1]; + for (int ctr = 0; ctr <= maxIndex; ctr++) + { + final Object argument = component.getAttributes().get("arg" + ctr); + arguments[ctr] = argument == null ? "{" + ctr + "}" : argument; + } + facesMessage.setDetail(java.text.MessageFormat.format(newMessage, arguments)); + } + } + } + } #if ($standalone) org.apache.myfaces.trinidad.context.RequestContext context = org.apache.myfaces.trinidad.context.RequestContext.getCurrentInstance(); final Object form = context != null ? context.getPageFlowScope().get("$actionFormKey") : null; #else - final javax.faces.context.FacesContext context = event.getFacesContext(); final Object form = context != null ? context.getApplication().getVariableResolver().resolveVariable(context, "$actionFormKey") : null; #end if (form != null) @@ -56,4 +82,50 @@ { return javax.faces.event.PhaseId.RENDER_RESPONSE; } + + private String getMessageKey(final String detail) + { + return detail != null ? detail.replaceAll(".*:", "").replace(".", "").trim().replaceAll("\\s+", ".").toLowerCase() : null; + } + + private static final String ARGUMENT_PATTERN = "(\\{\\s*\\d+\\s*\\})"; + + private static final String REPLACEMENT_PATTERN = "\\{\\s*|\\}\\s*"; + + private static final int N0_ARGUMENTS = -1; + + /** + * Gets the max index from the given string (the max index of the arguments in the format + * {0}, {1}, etc). + * + * @param string the string from which to retrieve the max index. + * @return the max index. + */ + private int getMaxIndex(String string) + { + int maxIndex = N0_ARGUMENTS; + final java.util.regex.Matcher matcher = java.util.regex.Pattern.compile(ARGUMENT_PATTERN).matcher(string); + if (matcher.find()) + { + do + { + final String indexString = matcher.group().replaceAll(REPLACEMENT_PATTERN, ""); + try + { + int index = Integer.valueOf(indexString); + if (index > maxIndex) + { + maxIndex = index; + } + } + catch (NumberFormatException exception) + { + // - ignore, just don't attempt replacement + } + + } + while (matcher.find()); + } + return maxIndex; + } } \ No newline at end of file |
From: Chad B. <cwb...@us...> - 2008-05-14 22:22:07
|
User: cwbrandon Date: 08/05/14 15:22:13 Modified: andromda-jsf2/src/main/resources/templates/jsf2/utils MessagePhaseListener.java.vsl Log: message handling improvement Revision Changes Path 1.4 +19 -52 cartridges/andromda-jsf2/src/main/resources/templates/jsf2/utils/MessagePhaseListener.java.vsl Index: MessagePhaseListener.java.vsl =================================================================== RCS file: /cvsroot/andromdaplugins/cartridges/andromda-jsf2/src/main/resources/templates/jsf2/utils/MessagePhaseListener.java.vsl,v retrieving revision 1.3 retrieving revision 1.4 diff -u -w -r1.3 -r1.4 --- MessagePhaseListener.java.vsl 14 May 2008 20:29:14 -0000 1.3 +++ MessagePhaseListener.java.vsl 14 May 2008 22:22:12 -0000 1.4 @@ -14,6 +14,8 @@ { private static final long serialVersionUID = 1L; + private static final String ARGUMENT_PREFIX = "arg:"; + @Override protected void handleBeforePhase(javax.faces.event.PhaseEvent event) { @@ -23,6 +25,22 @@ { final String clientId = (String) iterator.next(); final javax.faces.component.UIComponent component = root.findComponent(clientId); + final java.util.Collection<Object> arguments = new java.util.ArrayList<Object>(); + for (final java.util.Iterator iterator2 = component.getChildren().iterator(); iterator2.hasNext();) + { + final Object child = iterator2.next(); + if (child instanceof javax.faces.component.UIParameter) + { + final javax.faces.component.UIParameter parameter = (javax.faces.component.UIParameter)child; + if (parameter.getName() != null) + { + if (parameter.getName().startsWith(ARGUMENT_PREFIX)) + { + arguments.add(parameter.getValue()); + } + } + } + } for (final java.util.Iterator iterator2 = context.getMessages(clientId); iterator2.hasNext();) { final javax.faces.application.FacesMessage facesMessage = (javax.faces.application.FacesMessage)iterator2.next(); @@ -30,17 +48,7 @@ final String newMessage = Messages.get(messageKey, null); if (!newMessage.equals(messageKey)) { - final int maxIndex = this.getMaxIndex(newMessage); - if (maxIndex > N0_ARGUMENTS) - { - final Object[] arguments = new Object[maxIndex + 1]; - for (int ctr = 0; ctr <= maxIndex; ctr++) - { - final Object argument = component.getAttributes().get("arg" + ctr); - arguments[ctr] = argument == null ? "{" + ctr + "}" : argument; - } - facesMessage.setDetail(java.text.MessageFormat.format(newMessage, arguments)); - } + facesMessage.setDetail(java.text.MessageFormat.format(newMessage, arguments.toArray(new Object[0]))); } } } @@ -87,45 +95,4 @@ { return detail != null ? detail.replaceAll(".*:", "").replace(".", "").trim().replaceAll("\\s+", ".").toLowerCase() : null; } - - private static final String ARGUMENT_PATTERN = "(\\{\\s*\\d+\\s*\\})"; - - private static final String REPLACEMENT_PATTERN = "\\{\\s*|\\}\\s*"; - - private static final int N0_ARGUMENTS = -1; - - /** - * Gets the max index from the given string (the max index of the arguments in the format - * {0}, {1}, etc). - * - * @param string the string from which to retrieve the max index. - * @return the max index. - */ - private int getMaxIndex(String string) - { - int maxIndex = N0_ARGUMENTS; - final java.util.regex.Matcher matcher = java.util.regex.Pattern.compile(ARGUMENT_PATTERN).matcher(string); - if (matcher.find()) - { - do - { - final String indexString = matcher.group().replaceAll(REPLACEMENT_PATTERN, ""); - try - { - int index = Integer.valueOf(indexString); - if (index > maxIndex) - { - maxIndex = index; - } - } - catch (NumberFormatException exception) - { - // - ignore, just don't attempt replacement - } - - } - while (matcher.find()); - } - return maxIndex; - } } \ No newline at end of file |
From: Chad B. <cwb...@us...> - 2008-05-15 14:19:36
|
User: cwbrandon Date: 08/05/15 07:19:35 Modified: andromda-jsf2/src/main/resources/templates/jsf2/utils MessagePhaseListener.java.vsl Log: rename trinidad RequestContext to requestContext (to avoid context name collision) Revision Changes Path 1.5 +2 -2 cartridges/andromda-jsf2/src/main/resources/templates/jsf2/utils/MessagePhaseListener.java.vsl Index: MessagePhaseListener.java.vsl =================================================================== RCS file: /cvsroot/andromdaplugins/cartridges/andromda-jsf2/src/main/resources/templates/jsf2/utils/MessagePhaseListener.java.vsl,v retrieving revision 1.4 retrieving revision 1.5 diff -u -w -r1.4 -r1.5 --- MessagePhaseListener.java.vsl 14 May 2008 22:22:12 -0000 1.4 +++ MessagePhaseListener.java.vsl 15 May 2008 14:19:34 -0000 1.5 @@ -53,8 +53,8 @@ } } #if ($standalone) - org.apache.myfaces.trinidad.context.RequestContext context = org.apache.myfaces.trinidad.context.RequestContext.getCurrentInstance(); - final Object form = context != null ? context.getPageFlowScope().get("$actionFormKey") : null; + org.apache.myfaces.trinidad.context.RequestContext requestContext = org.apache.myfaces.trinidad.context.RequestContext.getCurrentInstance(); + final Object form = requestContext != null ? requestContext.getPageFlowScope().get("$actionFormKey") : null; #else final Object form = context != null ? context.getApplication().getVariableResolver().resolveVariable(context, "$actionFormKey") : null; #end |
From: Chad B. <cwb...@us...> - 2008-05-28 17:23:24
|
User: cwbrandon Date: 08/05/28 10:23:31 Modified: andromda-jsf2/src/main/resources/templates/jsf2/utils MessagePhaseListener.java.vsl Log: cleanup some warnings Revision Changes Path 1.6 +1 -2 cartridges/andromda-jsf2/src/main/resources/templates/jsf2/utils/MessagePhaseListener.java.vsl Index: MessagePhaseListener.java.vsl =================================================================== RCS file: /cvsroot/andromdaplugins/cartridges/andromda-jsf2/src/main/resources/templates/jsf2/utils/MessagePhaseListener.java.vsl,v retrieving revision 1.5 retrieving revision 1.6 diff -u -w -r1.5 -r1.6 --- MessagePhaseListener.java.vsl 15 May 2008 14:19:34 -0000 1.5 +++ MessagePhaseListener.java.vsl 28 May 2008 17:23:26 -0000 1.6 @@ -69,8 +69,7 @@ { javax.faces.context.FacesContext.getCurrentInstance().addMessage(null, (javax.faces.application.FacesMessage)iterator.next()); } - final java.lang.reflect.Method method = form.getClass().getMethod("clearJsfMessages",null); - method.invoke(form,null); + form.getClass().getMethod("clearJsfMessages", (Class[])null).invoke(form, (Object[])null); } } catch (final Exception exception) |
From: Chad B. <cwb...@us...> - 2008-07-03 15:01:31
|
User: cwbrandon Date: 08/07/03 08:01:40 Modified: andromda-jsf2/src/main/resources/templates/jsf2/utils MessagePhaseListener.java.vsl Log: prevent null pointers (JSF-41) Revision Changes Path 1.8 +29 -23 cartridges/andromda-jsf2/src/main/resources/templates/jsf2/utils/MessagePhaseListener.java.vsl Index: MessagePhaseListener.java.vsl =================================================================== RCS file: /cvsroot/andromdaplugins/cartridges/andromda-jsf2/src/main/resources/templates/jsf2/utils/MessagePhaseListener.java.vsl,v retrieving revision 1.7 retrieving revision 1.8 diff -u -w -r1.7 -r1.8 --- MessagePhaseListener.java.vsl 28 May 2008 19:04:29 -0000 1.7 +++ MessagePhaseListener.java.vsl 3 Jul 2008 15:01:36 -0000 1.8 @@ -24,8 +24,12 @@ for (final java.util.Iterator iterator = context.getClientIdsWithMessages(); iterator.hasNext();) { final String clientId = (String) iterator.next(); + if (clientId != null) + { final javax.faces.component.UIComponent component = root.findComponent(clientId); final java.util.Collection<Object> arguments = new java.util.ArrayList<Object>(); + if (component != null) + { for (final java.util.Iterator iterator2 = component.getChildren().iterator(); iterator2.hasNext();) { final Object child = iterator2.next(); @@ -41,6 +45,7 @@ } } } + } for (final java.util.Iterator iterator2 = context.getMessages(clientId); iterator2.hasNext();) { final javax.faces.application.FacesMessage facesMessage = (javax.faces.application.FacesMessage)iterator2.next(); @@ -52,6 +57,7 @@ } } } + } #if ($standalone) org.apache.myfaces.trinidad.context.RequestContext requestContext = org.apache.myfaces.trinidad.context.RequestContext.getCurrentInstance(); final Object form = requestContext != null ? requestContext.getPageFlowScope().get("$actionFormKey") : null; |