You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@myfaces.apache.org by gp...@apache.org on 2008/08/03 00:03:48 UTC

svn commit: r682068 - in /myfaces/extensions/validator/trunk/core/src/main/java/org/apache/myfaces/extensions/validator/core/validation: message/resolver/AbstractValidationErrorMessageResolver.java strategy/AbstractValidationStrategy.java

Author: gpetracek
Date: Sat Aug  2 15:03:47 2008
New Revision: 682068

URL: http://svn.apache.org/viewvc?rev=682068&view=rev
Log:
optional feature to configure a message resolver via a bean in order to use dependency injection

Modified:
    myfaces/extensions/validator/trunk/core/src/main/java/org/apache/myfaces/extensions/validator/core/validation/message/resolver/AbstractValidationErrorMessageResolver.java
    myfaces/extensions/validator/trunk/core/src/main/java/org/apache/myfaces/extensions/validator/core/validation/strategy/AbstractValidationStrategy.java

Modified: myfaces/extensions/validator/trunk/core/src/main/java/org/apache/myfaces/extensions/validator/core/validation/message/resolver/AbstractValidationErrorMessageResolver.java
URL: http://svn.apache.org/viewvc/myfaces/extensions/validator/trunk/core/src/main/java/org/apache/myfaces/extensions/validator/core/validation/message/resolver/AbstractValidationErrorMessageResolver.java?rev=682068&r1=682067&r2=682068&view=diff
==============================================================================
--- myfaces/extensions/validator/trunk/core/src/main/java/org/apache/myfaces/extensions/validator/core/validation/message/resolver/AbstractValidationErrorMessageResolver.java (original)
+++ myfaces/extensions/validator/trunk/core/src/main/java/org/apache/myfaces/extensions/validator/core/validation/message/resolver/AbstractValidationErrorMessageResolver.java Sat Aug  2 15:03:47 2008
@@ -22,6 +22,7 @@
 import org.apache.commons.logging.LogFactory;
 import org.apache.myfaces.extensions.validator.core.WebXmlParameter;
 import org.apache.myfaces.extensions.validator.util.ExtValUtils;
+import org.apache.myfaces.extensions.validator.util.ELUtils;
 
 import java.util.Locale;
 import java.util.MissingResourceException;
@@ -33,6 +34,9 @@
 public abstract class AbstractValidationErrorMessageResolver implements MessageResolver {
     private static String deactivateDefaultConvention = WebXmlParameter.DEACTIVATE_DEFAULT_CONVENTION;
     private static ResourceBundle defaultBundle = null;
+    private String messageBundleBaseName;
+    //with jsf 1.1 only available if there is a custom bean
+    private String messageBundleVarName;
 
     protected final Log logger = LogFactory.getLog(getClass());
 
@@ -41,7 +45,37 @@
             return null;
         }
 
-        String customMessage = tryToUseMessageBundleConvention(key, locale);
+        ResourceBundle resourceBundle = null;
+        String customMessage = null;
+
+        //only in case of a ValidationErrorMessageResolver which is configured as bean
+        if(this.messageBundleBaseName != null) {
+            resourceBundle = ResourceBundle.getBundle(this.messageBundleBaseName, locale);
+            if(resourceBundle != null) {
+                customMessage = resourceBundle.getString(key);
+            } else {
+                logger.warn("message bundle " + this.messageBundleBaseName + " not found");
+            }
+        }
+
+        //only in case of a ValidationErrorMessageResolver which is configured as bean
+        if(this.messageBundleVarName != null && customMessage == null) {
+            resourceBundle = (ResourceBundle)ELUtils.getBean(messageBundleVarName);
+            if(resourceBundle != null) {
+                customMessage = resourceBundle.getString(key);
+            } else {
+                logger.warn("message bundle var name " + this.messageBundleVarName + " not found");
+            }
+        }
+
+        if (customMessage != null) {
+            return customMessage;
+        }
+
+        /*
+         * try to use the convention for the message bundle
+         */
+        customMessage = tryToUseMessageBundleConvention(key, locale);
 
         if (customMessage != null) {
             return customMessage;
@@ -50,7 +84,6 @@
         /*
          * no message bundle or message found (with the convention)?
          */
-        ResourceBundle resourceBundle = null;
 
         //try to load custom messages
         try {
@@ -109,4 +142,12 @@
     protected String getCustomBaseName() {
         return null;
     }
+
+    public void setMessageBundleBaseName(String messageBundleBaseName) {
+        this.messageBundleBaseName = messageBundleBaseName;
+    }
+
+    public void setMessageBundleVarName(String messageBundleVarName) {
+        this.messageBundleVarName = messageBundleVarName;
+    }
 }

Modified: myfaces/extensions/validator/trunk/core/src/main/java/org/apache/myfaces/extensions/validator/core/validation/strategy/AbstractValidationStrategy.java
URL: http://svn.apache.org/viewvc/myfaces/extensions/validator/trunk/core/src/main/java/org/apache/myfaces/extensions/validator/core/validation/strategy/AbstractValidationStrategy.java?rev=682068&r1=682067&r2=682068&view=diff
==============================================================================
--- myfaces/extensions/validator/trunk/core/src/main/java/org/apache/myfaces/extensions/validator/core/validation/strategy/AbstractValidationStrategy.java (original)
+++ myfaces/extensions/validator/trunk/core/src/main/java/org/apache/myfaces/extensions/validator/core/validation/strategy/AbstractValidationStrategy.java Sat Aug  2 15:03:47 2008
@@ -19,6 +19,7 @@
 package org.apache.myfaces.extensions.validator.core.validation.strategy;
 
 import org.apache.myfaces.extensions.validator.util.FactoryUtils;
+import org.apache.myfaces.extensions.validator.core.validation.message.resolver.MessageResolver;
 
 import javax.faces.application.FacesMessage;
 import javax.faces.context.FacesContext;
@@ -31,11 +32,12 @@
  */
 public abstract class AbstractValidationStrategy extends AbstractValidatorAdapter {
     protected static final String DETAIL_MESSAGE_KEY_POSTFIX = "_details";
+    private MessageResolver messageResolver;
 
     protected String resolveMessage(String key) {
         Locale locale = FacesContext.getCurrentInstance().getViewRoot().getLocale();
 
-        return FactoryUtils.getMessageResolverFactory().create(this).getMessage(key, locale);
+        return this.messageResolver != null ? this.messageResolver.getMessage(key, locale) : FactoryUtils.getMessageResolverFactory().create(this).getMessage(key, locale);
     }
 
     protected String getErrorMessageSummary(Annotation annotation) {
@@ -57,4 +59,8 @@
     }
 
     protected abstract String getValidationErrorMsgKey(Annotation annotation);
+
+    public void setMessageResolver(MessageResolver messageResolver) {
+        this.messageResolver = messageResolver;
+    }
 }