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/10/05 23:56:23 UTC

svn commit: r701892 - in /myfaces/extensions/validator/trunk: core/src/main/java/org/apache/myfaces/extensions/validator/core/ core/src/main/java/org/apache/myfaces/extensions/validator/core/metadata/transformer/mapper/ core/src/main/java/org/apache/my...

Author: gpetracek
Date: Sun Oct  5 14:56:22 2008
New Revision: 701892

URL: http://svn.apache.org/viewvc?rev=701892&view=rev
Log:
convention for custom startup listener, support for global properties

Modified:
    myfaces/extensions/validator/trunk/core/src/main/java/org/apache/myfaces/extensions/validator/core/CustomInfo.java
    myfaces/extensions/validator/trunk/core/src/main/java/org/apache/myfaces/extensions/validator/core/ExtValContext.java
    myfaces/extensions/validator/trunk/core/src/main/java/org/apache/myfaces/extensions/validator/core/InformationProviderBean.java
    myfaces/extensions/validator/trunk/core/src/main/java/org/apache/myfaces/extensions/validator/core/metadata/transformer/mapper/SimpleValidationStrategyToMetaDataTransformerNameMapper.java
    myfaces/extensions/validator/trunk/core/src/main/java/org/apache/myfaces/extensions/validator/core/startup/AbstractStartupListener.java
    myfaces/extensions/validator/trunk/core/src/main/java/org/apache/myfaces/extensions/validator/core/startup/ExtValStartupListener.java
    myfaces/extensions/validator/trunk/validation-modules/property-validation/src/main/java/org/apache/myfaces/extensions/validator/baseval/message/resolver/JpaValidationErrorMessageResolver.java

Modified: myfaces/extensions/validator/trunk/core/src/main/java/org/apache/myfaces/extensions/validator/core/CustomInfo.java
URL: http://svn.apache.org/viewvc/myfaces/extensions/validator/trunk/core/src/main/java/org/apache/myfaces/extensions/validator/core/CustomInfo.java?rev=701892&r1=701891&r2=701892&view=diff
==============================================================================
--- myfaces/extensions/validator/trunk/core/src/main/java/org/apache/myfaces/extensions/validator/core/CustomInfo.java (original)
+++ myfaces/extensions/validator/trunk/core/src/main/java/org/apache/myfaces/extensions/validator/core/CustomInfo.java Sun Oct  5 14:56:22 2008
@@ -38,6 +38,7 @@
     ANNOTATION_TO_VALIDATION_STRATEGY_NAME_MAPPER,
     VALIDATION_STRATEGY_TO_META_DATA_TRANSFORMER_NAME_MAPPER,
 
+    STARTUP_LISTENER,
     COMPONENT_INITIALIZER,
 
     MESSAGE_RESOLVER_FACTORY,

Modified: myfaces/extensions/validator/trunk/core/src/main/java/org/apache/myfaces/extensions/validator/core/ExtValContext.java
URL: http://svn.apache.org/viewvc/myfaces/extensions/validator/trunk/core/src/main/java/org/apache/myfaces/extensions/validator/core/ExtValContext.java?rev=701892&r1=701891&r2=701892&view=diff
==============================================================================
--- myfaces/extensions/validator/trunk/core/src/main/java/org/apache/myfaces/extensions/validator/core/ExtValContext.java (original)
+++ myfaces/extensions/validator/trunk/core/src/main/java/org/apache/myfaces/extensions/validator/core/ExtValContext.java Sun Oct  5 14:56:22 2008
@@ -28,6 +28,8 @@
 import org.apache.myfaces.extensions.validator.internal.UsageInformation;
 import org.apache.myfaces.extensions.validator.util.ClassUtils;
 import org.apache.myfaces.extensions.validator.util.ExtValUtils;
+import org.apache.commons.logging.Log;
+import org.apache.commons.logging.LogFactory;
 
 import javax.faces.context.FacesContext;
 import java.util.ArrayList;
@@ -42,6 +44,8 @@
 @UsageInformation(UsageCategory.API)
 public class ExtValContext
 {
+    private final Log logger = LogFactory.getLog(getClass());
+
     private static ExtValContext extValContext = new ExtValContext();
 
     private FactoryFinder factoryFinder = new DefaultFactoryFinder();
@@ -50,6 +54,8 @@
     private List<ProcessedInformationRecorder> processedInformationRecorders =
         new ArrayList<ProcessedInformationRecorder>();
 
+    private Map<String, Object> globalProperties = new HashMap<String, Object>();
+
     private List<String> staticStrategyMappings = new ArrayList<String>();
 
     public static ExtValContext getContext()
@@ -182,4 +188,32 @@
             this.staticStrategyMappings.add(resourceBundleName);
         }
     }
+
+    public boolean addGlobalProperty(String name, Object value)
+    {
+        return addGlobalProperty(name , value, true);
+    }
+
+    public boolean addGlobalProperty(String name, Object value, boolean forceOverride)
+    {
+        if(this.globalProperties.containsKey(name))
+        {
+            if(!forceOverride)
+            {
+                return false;
+            }
+            else
+            {
+                logger.warn("override global property '" + name + "'");
+            }
+        }
+
+        this.globalProperties.put(name, value);
+        return true;
+    }
+
+    public Object getGlobalProperty(String name)
+    {
+        return this.globalProperties.get(name);
+    }
 }
\ No newline at end of file

Modified: myfaces/extensions/validator/trunk/core/src/main/java/org/apache/myfaces/extensions/validator/core/InformationProviderBean.java
URL: http://svn.apache.org/viewvc/myfaces/extensions/validator/trunk/core/src/main/java/org/apache/myfaces/extensions/validator/core/InformationProviderBean.java?rev=701892&r1=701891&r2=701892&view=diff
==============================================================================
--- myfaces/extensions/validator/trunk/core/src/main/java/org/apache/myfaces/extensions/validator/core/InformationProviderBean.java (original)
+++ myfaces/extensions/validator/trunk/core/src/main/java/org/apache/myfaces/extensions/validator/core/InformationProviderBean.java Sun Oct  5 14:56:22 2008
@@ -88,6 +88,7 @@
         customizableInfos.put(CustomInfo.VALIDATION_STRATEGY_TO_META_DATA_TRANSFORMER_NAME_MAPPER,
             "ValidationStrategyToMetaDataTransformerNameMapper");
 
+        customizableInfos.put(CustomInfo.STARTUP_LISTENER, "StartupListener");
         customizableInfos.put(CustomInfo.COMPONENT_INITIALIZER, "ComponentInitializer");
 
         customizableInfos.put(CustomInfo.MESSAGE_RESOLVER_FACTORY, "MessageResolverFactory");

Modified: myfaces/extensions/validator/trunk/core/src/main/java/org/apache/myfaces/extensions/validator/core/metadata/transformer/mapper/SimpleValidationStrategyToMetaDataTransformerNameMapper.java
URL: http://svn.apache.org/viewvc/myfaces/extensions/validator/trunk/core/src/main/java/org/apache/myfaces/extensions/validator/core/metadata/transformer/mapper/SimpleValidationStrategyToMetaDataTransformerNameMapper.java?rev=701892&r1=701891&r2=701892&view=diff
==============================================================================
--- myfaces/extensions/validator/trunk/core/src/main/java/org/apache/myfaces/extensions/validator/core/metadata/transformer/mapper/SimpleValidationStrategyToMetaDataTransformerNameMapper.java (original)
+++ myfaces/extensions/validator/trunk/core/src/main/java/org/apache/myfaces/extensions/validator/core/metadata/transformer/mapper/SimpleValidationStrategyToMetaDataTransformerNameMapper.java Sun Oct  5 14:56:22 2008
@@ -50,11 +50,18 @@
         String postfix = ExtValContext.getContext().getInformationProviderBean()
             .get(CustomInfo.META_DATA_TRANSFORMER_POSTFIX);
 
-        return validationStrategyPackageName + validationStrategyClassName
-                .replace(ExtValContext.getContext().getInformationProviderBean()
-                    .get(CustomInfo.VALIDATION_STRATEGY_POSTFIX) ,postfix)
-                .replace("ValidationStrategy", postfix)
-                .replace("Strategy", postfix);
+        if(validationStrategyClassName.endsWith("ValidationStrategy") ||
+           validationStrategyClassName.endsWith("Strategy"))
+        {
+            return validationStrategyPackageName + validationStrategyClassName
+                    .replace(ExtValContext.getContext().getInformationProviderBean()
+                        .get(CustomInfo.VALIDATION_STRATEGY_POSTFIX) ,postfix)
+                    .replace("ValidationStrategy", postfix)
+                    .replace("Strategy", postfix);
+        }
+
+        //in case of a static validation strategy mapping
+        return validationStrategyClassName + postfix;
     }
 
 }
\ No newline at end of file

Modified: myfaces/extensions/validator/trunk/core/src/main/java/org/apache/myfaces/extensions/validator/core/startup/AbstractStartupListener.java
URL: http://svn.apache.org/viewvc/myfaces/extensions/validator/trunk/core/src/main/java/org/apache/myfaces/extensions/validator/core/startup/AbstractStartupListener.java?rev=701892&r1=701891&r2=701892&view=diff
==============================================================================
--- myfaces/extensions/validator/trunk/core/src/main/java/org/apache/myfaces/extensions/validator/core/startup/AbstractStartupListener.java (original)
+++ myfaces/extensions/validator/trunk/core/src/main/java/org/apache/myfaces/extensions/validator/core/startup/AbstractStartupListener.java Sun Oct  5 14:56:22 2008
@@ -71,14 +71,19 @@
                         logger.info("start init of " + getClass().getName());
                     }
 
-                    init();
+                    try
+                    {
+                        init();
 
-                    if(logger.isInfoEnabled())
+                        if(logger.isInfoEnabled())
+                        {
+                            logger.info("init of " + getClass().getName() + " finished");
+                        }
+                    }
+                    finally
                     {
-                        logger.info("init of " + getClass().getName() + " finished");
+                        JsfUtils.deregisterPhaseListener(this);
                     }
-
-                    JsfUtils.deregisterPhaseListener(this);
                 }
                 catch (Throwable t)
                 {

Modified: myfaces/extensions/validator/trunk/core/src/main/java/org/apache/myfaces/extensions/validator/core/startup/ExtValStartupListener.java
URL: http://svn.apache.org/viewvc/myfaces/extensions/validator/trunk/core/src/main/java/org/apache/myfaces/extensions/validator/core/startup/ExtValStartupListener.java?rev=701892&r1=701891&r2=701892&view=diff
==============================================================================
--- myfaces/extensions/validator/trunk/core/src/main/java/org/apache/myfaces/extensions/validator/core/startup/ExtValStartupListener.java (original)
+++ myfaces/extensions/validator/trunk/core/src/main/java/org/apache/myfaces/extensions/validator/core/startup/ExtValStartupListener.java Sun Oct  5 14:56:22 2008
@@ -22,6 +22,8 @@
 import org.apache.myfaces.extensions.validator.internal.UsageInformation;
 import org.apache.myfaces.extensions.validator.core.interceptor.ValidationInterceptor;
 import org.apache.myfaces.extensions.validator.core.ExtValContext;
+import org.apache.myfaces.extensions.validator.core.CustomInfo;
+import org.apache.myfaces.extensions.validator.util.ClassUtils;
 
 /**
  * @author Gerhard Petracek
@@ -33,5 +35,30 @@
     protected void init()
     {
         ExtValContext.getContext().registerRendererInterceptor(new ValidationInterceptor());
+
+        executeCustomStartupListener();
+    }
+
+    private void executeCustomStartupListener()
+    {
+        String customStartupListenerName = ExtValContext.getContext().getInformationProviderBean()
+            .get(CustomInfo.STARTUP_LISTENER);
+        AbstractStartupListener customStartupListener =
+            (AbstractStartupListener)ClassUtils.tryToInstantiateClassForName(customStartupListenerName);
+
+        if(customStartupListener != null)
+        {
+            if(logger.isInfoEnabled())
+            {
+                logger.info("start init of " + customStartupListener.getClass().getName());
+            }
+
+            customStartupListener.init();
+
+            if(logger.isInfoEnabled())
+            {
+                logger.info("init of " + customStartupListener.getClass().getName() + " finished");
+            }
+        }
     }
 }
\ No newline at end of file

Modified: myfaces/extensions/validator/trunk/validation-modules/property-validation/src/main/java/org/apache/myfaces/extensions/validator/baseval/message/resolver/JpaValidationErrorMessageResolver.java
URL: http://svn.apache.org/viewvc/myfaces/extensions/validator/trunk/validation-modules/property-validation/src/main/java/org/apache/myfaces/extensions/validator/baseval/message/resolver/JpaValidationErrorMessageResolver.java?rev=701892&r1=701891&r2=701892&view=diff
==============================================================================
--- myfaces/extensions/validator/trunk/validation-modules/property-validation/src/main/java/org/apache/myfaces/extensions/validator/baseval/message/resolver/JpaValidationErrorMessageResolver.java (original)
+++ myfaces/extensions/validator/trunk/validation-modules/property-validation/src/main/java/org/apache/myfaces/extensions/validator/baseval/message/resolver/JpaValidationErrorMessageResolver.java Sun Oct  5 14:56:22 2008
@@ -20,19 +20,31 @@
 
 import org.apache.myfaces.extensions.validator.baseval.WebXmlParameter;
 import org.apache.myfaces.extensions.validator.core.validation.message.resolver.AbstractValidationErrorMessageResolver;
+import org.apache.myfaces.extensions.validator.core.ExtValContext;
 
 /**
  * @author Gerhard Petracek
  */
+/*
+ * the jpa support is an exception in view of some mechanisms - so there's no convention for the message bundle.
+ * instead of the convention there is a global property to have an alternative to web.xml configuration
+ */
 public class JpaValidationErrorMessageResolver extends AbstractValidationErrorMessageResolver
 {
+    public static final String JPA_VALIDATION_ERROR_MESSAGES = "JPA_VALIDATION_ERROR_MESSAGES";
+
     private static final String CUSTOM_BASE_NAME = WebXmlParameter.VALIDATION_MESSAGES_JPA;
     private static final String BASE_NAME = JpaValidationErrorMessageResolver.class
             .getPackage().getName().replace(".message.resolver", ".message.bundle")+ ".jpa_messages";
 
     protected String getCustomBaseName()
     {
-        return CUSTOM_BASE_NAME;
+        if(CUSTOM_BASE_NAME != null)
+        {
+            return CUSTOM_BASE_NAME;
+        }
+
+        return (String)ExtValContext.getContext().getGlobalProperty(JPA_VALIDATION_ERROR_MESSAGES);
     }
 
     protected String getBaseName()