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