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/08 11:13:03 UTC
svn commit: r702761 - 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/factory/
core/src/main/java/org/apache/myfaces/extensions/val...
Author: gpetracek
Date: Wed Oct 8 02:13:03 2008
New Revision: 702761
URL: http://svn.apache.org/viewvc?rev=702761&view=rev
Log:
api for static mappings
Added:
myfaces/extensions/validator/trunk/core/src/main/java/org/apache/myfaces/extensions/validator/core/loader/
myfaces/extensions/validator/trunk/core/src/main/java/org/apache/myfaces/extensions/validator/core/loader/StaticInMemoryMappingConfig.java
myfaces/extensions/validator/trunk/core/src/main/java/org/apache/myfaces/extensions/validator/core/loader/StaticMappingConfigEntry.java
myfaces/extensions/validator/trunk/core/src/main/java/org/apache/myfaces/extensions/validator/core/loader/StaticMappingConfigLoader.java
myfaces/extensions/validator/trunk/core/src/main/java/org/apache/myfaces/extensions/validator/core/loader/StaticMappingConfigLoaderNames.java
myfaces/extensions/validator/trunk/core/src/main/java/org/apache/myfaces/extensions/validator/core/loader/StaticResourceBundleLoader.java
Modified:
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/factory/FactoryNames.java
myfaces/extensions/validator/trunk/core/src/main/java/org/apache/myfaces/extensions/validator/core/metadata/transformer/DefaultMetaDataTransformerFactory.java
myfaces/extensions/validator/trunk/core/src/main/java/org/apache/myfaces/extensions/validator/core/validation/message/resolver/DefaultMessageResolverFactory.java
myfaces/extensions/validator/trunk/core/src/main/java/org/apache/myfaces/extensions/validator/core/validation/strategy/DefaultValidationStrategyFactory.java
myfaces/extensions/validator/trunk/examples/feature-set_01/src/main/java/org/apache/myfaces/extensions/validator/demo/gui/beans/RegistrationPage.java
myfaces/extensions/validator/trunk/validation-modules/property-validation/src/main/java/org/apache/myfaces/extensions/validator/PropertyValidationModuleStartupListener.java
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=702761&r1=702760&r2=702761&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 Wed Oct 8 02:13:03 2008
@@ -24,6 +24,8 @@
import org.apache.myfaces.extensions.validator.core.recorder.ProcessedInformationRecorder;
import org.apache.myfaces.extensions.validator.core.factory.FactoryFinder;
import org.apache.myfaces.extensions.validator.core.factory.DefaultFactoryFinder;
+import org.apache.myfaces.extensions.validator.core.loader.StaticMappingConfigLoader;
+import org.apache.myfaces.extensions.validator.core.loader.StaticMappingConfigLoaderNames;
import org.apache.myfaces.extensions.validator.internal.UsageCategory;
import org.apache.myfaces.extensions.validator.internal.UsageInformation;
import org.apache.myfaces.extensions.validator.util.ClassUtils;
@@ -56,7 +58,9 @@
private Map<String, Object> globalProperties = new HashMap<String, Object>();
- private List<String> staticStrategyMappings = new ArrayList<String>();
+ private Map<StaticMappingConfigLoaderNames, List<StaticMappingConfigLoader<String, String>>>
+ staticMappingConfigLoaderMap
+ = new HashMap<StaticMappingConfigLoaderNames, List<StaticMappingConfigLoader<String, String>>>();
public static ExtValContext getContext()
{
@@ -185,16 +189,30 @@
}
}
- public List<String> getStaticStrategyMappingSources()
+ public List<StaticMappingConfigLoader<String, String>> getStaticMappingConfigLoaders(
+ StaticMappingConfigLoaderNames name)
{
- return this.staticStrategyMappings;
+ if(!this.staticMappingConfigLoaderMap.containsKey(name))
+ {
+ List<StaticMappingConfigLoader<String, String>> staticMappingConfigLoaderList
+ = new ArrayList<StaticMappingConfigLoader<String, String>>();
+ this.staticMappingConfigLoaderMap.put(name, staticMappingConfigLoaderList);
+ }
+ return this.staticMappingConfigLoaderMap.get(name);
}
- public void addStaticStrategyMappingSource(String resourceBundleName)
+ public void addStaticMappingConfigLoader(StaticMappingConfigLoaderNames name, StaticMappingConfigLoader<String,
+ String> staticMappingConfigLoader)
{
synchronized (this)
{
- this.staticStrategyMappings.add(resourceBundleName);
+ List<StaticMappingConfigLoader<String, String>> staticMappingConfigLoaderList;
+ if(!this.staticMappingConfigLoaderMap.containsKey(name))
+ {
+ staticMappingConfigLoaderList = new ArrayList<StaticMappingConfigLoader<String, String>>();
+ this.staticMappingConfigLoaderMap.put(name, staticMappingConfigLoaderList);
+ }
+ this.staticMappingConfigLoaderMap.get(name).add(staticMappingConfigLoader);
}
}
@@ -225,4 +243,4 @@
{
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/factory/FactoryNames.java
URL: http://svn.apache.org/viewvc/myfaces/extensions/validator/trunk/core/src/main/java/org/apache/myfaces/extensions/validator/core/factory/FactoryNames.java?rev=702761&r1=702760&r2=702761&view=diff
==============================================================================
--- myfaces/extensions/validator/trunk/core/src/main/java/org/apache/myfaces/extensions/validator/core/factory/FactoryNames.java (original)
+++ myfaces/extensions/validator/trunk/core/src/main/java/org/apache/myfaces/extensions/validator/core/factory/FactoryNames.java Wed Oct 8 02:13:03 2008
@@ -18,10 +18,14 @@
*/
package org.apache.myfaces.extensions.validator.core.factory;
+import org.apache.myfaces.extensions.validator.internal.UsageInformation;
+import org.apache.myfaces.extensions.validator.internal.UsageCategory;
+
/**
* @author Gerhard Petracek
* @since 1.x.1
*/
+@UsageInformation({UsageCategory.API})
public enum FactoryNames
{
COMPONENT_ANNOTATION_EXTRACTOR_FACTORY,
Added: myfaces/extensions/validator/trunk/core/src/main/java/org/apache/myfaces/extensions/validator/core/loader/StaticInMemoryMappingConfig.java
URL: http://svn.apache.org/viewvc/myfaces/extensions/validator/trunk/core/src/main/java/org/apache/myfaces/extensions/validator/core/loader/StaticInMemoryMappingConfig.java?rev=702761&view=auto
==============================================================================
--- myfaces/extensions/validator/trunk/core/src/main/java/org/apache/myfaces/extensions/validator/core/loader/StaticInMemoryMappingConfig.java (added)
+++ myfaces/extensions/validator/trunk/core/src/main/java/org/apache/myfaces/extensions/validator/core/loader/StaticInMemoryMappingConfig.java Wed Oct 8 02:13:03 2008
@@ -0,0 +1,53 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+package org.apache.myfaces.extensions.validator.core.loader;
+
+import org.apache.myfaces.extensions.validator.internal.UsageInformation;
+import org.apache.myfaces.extensions.validator.internal.UsageCategory;
+
+import java.util.List;
+import java.util.ArrayList;
+
+/**
+ * @author Gerhard Petracek
+ * @since 1.x.1
+ */
+@UsageInformation({UsageCategory.INTERNAL, UsageCategory.REUSE})
+public class StaticInMemoryMappingConfig implements StaticMappingConfigLoader<String, String>
+{
+ private List<StaticMappingConfigEntry<String, String>> mappings
+ = new ArrayList<StaticMappingConfigEntry<String, String>>();;
+
+ public void setSourceOfMapping(String path)
+ {
+ }
+
+ public List<StaticMappingConfigEntry<String, String>> getMapping()
+ {
+ return mappings;
+ }
+
+ public void addMapping(String source, String target)
+ {
+ StaticMappingConfigEntry<String, String> entry = new StaticMappingConfigEntry<String, String>();
+ entry.setSource(source);
+ entry.setTarget(target);
+ this.mappings.add(entry);
+ }
+}
\ No newline at end of file
Added: myfaces/extensions/validator/trunk/core/src/main/java/org/apache/myfaces/extensions/validator/core/loader/StaticMappingConfigEntry.java
URL: http://svn.apache.org/viewvc/myfaces/extensions/validator/trunk/core/src/main/java/org/apache/myfaces/extensions/validator/core/loader/StaticMappingConfigEntry.java?rev=702761&view=auto
==============================================================================
--- myfaces/extensions/validator/trunk/core/src/main/java/org/apache/myfaces/extensions/validator/core/loader/StaticMappingConfigEntry.java (added)
+++ myfaces/extensions/validator/trunk/core/src/main/java/org/apache/myfaces/extensions/validator/core/loader/StaticMappingConfigEntry.java Wed Oct 8 02:13:03 2008
@@ -0,0 +1,53 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+package org.apache.myfaces.extensions.validator.core.loader;
+
+import org.apache.myfaces.extensions.validator.internal.UsageCategory;
+import org.apache.myfaces.extensions.validator.internal.UsageInformation;
+
+/**
+ * @author Gerhard Petracek
+ * @since 1.x.1
+ */
+@UsageInformation(UsageCategory.API)
+public class StaticMappingConfigEntry<T, R>
+{
+ private T source;
+ private R target;
+
+ public T getSource()
+ {
+ return source;
+ }
+
+ public void setSource(T source)
+ {
+ this.source = source;
+ }
+
+ public R getTarget()
+ {
+ return target;
+ }
+
+ public void setTarget(R target)
+ {
+ this.target = target;
+ }
+}
\ No newline at end of file
Added: myfaces/extensions/validator/trunk/core/src/main/java/org/apache/myfaces/extensions/validator/core/loader/StaticMappingConfigLoader.java
URL: http://svn.apache.org/viewvc/myfaces/extensions/validator/trunk/core/src/main/java/org/apache/myfaces/extensions/validator/core/loader/StaticMappingConfigLoader.java?rev=702761&view=auto
==============================================================================
--- myfaces/extensions/validator/trunk/core/src/main/java/org/apache/myfaces/extensions/validator/core/loader/StaticMappingConfigLoader.java (added)
+++ myfaces/extensions/validator/trunk/core/src/main/java/org/apache/myfaces/extensions/validator/core/loader/StaticMappingConfigLoader.java Wed Oct 8 02:13:03 2008
@@ -0,0 +1,35 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+package org.apache.myfaces.extensions.validator.core.loader;
+
+import org.apache.myfaces.extensions.validator.internal.UsageCategory;
+import org.apache.myfaces.extensions.validator.internal.UsageInformation;
+
+import java.util.List;
+
+/**
+ * @author Gerhard Petracek
+ * @since 1.x.1
+ */
+@UsageInformation(UsageCategory.API)
+public interface StaticMappingConfigLoader<T, R>
+{
+ void setSourceOfMapping(String path);
+ List<StaticMappingConfigEntry<T, R>> getMapping();
+}
\ No newline at end of file
Added: myfaces/extensions/validator/trunk/core/src/main/java/org/apache/myfaces/extensions/validator/core/loader/StaticMappingConfigLoaderNames.java
URL: http://svn.apache.org/viewvc/myfaces/extensions/validator/trunk/core/src/main/java/org/apache/myfaces/extensions/validator/core/loader/StaticMappingConfigLoaderNames.java?rev=702761&view=auto
==============================================================================
--- myfaces/extensions/validator/trunk/core/src/main/java/org/apache/myfaces/extensions/validator/core/loader/StaticMappingConfigLoaderNames.java (added)
+++ myfaces/extensions/validator/trunk/core/src/main/java/org/apache/myfaces/extensions/validator/core/loader/StaticMappingConfigLoaderNames.java Wed Oct 8 02:13:03 2008
@@ -0,0 +1,34 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+package org.apache.myfaces.extensions.validator.core.loader;
+
+import org.apache.myfaces.extensions.validator.internal.UsageInformation;
+import org.apache.myfaces.extensions.validator.internal.UsageCategory;
+
+/**
+ * @author Gerhard Petracek
+ * @since 1.x.1
+ */
+@UsageInformation({UsageCategory.API})
+public enum StaticMappingConfigLoaderNames
+{
+ ANNOTATION_TO_VALIDATION_STRATEGY_CONFIG_LOADER,
+ VALIDATION_STRATEGY_TO_MESSAGE_RESOLVER_CONFIG_LOADER,
+ VALIDATION_STRATEGY_TO_META_DATA_TRANSFORMER_CONFIG_LOADER
+}
\ No newline at end of file
Added: myfaces/extensions/validator/trunk/core/src/main/java/org/apache/myfaces/extensions/validator/core/loader/StaticResourceBundleLoader.java
URL: http://svn.apache.org/viewvc/myfaces/extensions/validator/trunk/core/src/main/java/org/apache/myfaces/extensions/validator/core/loader/StaticResourceBundleLoader.java?rev=702761&view=auto
==============================================================================
--- myfaces/extensions/validator/trunk/core/src/main/java/org/apache/myfaces/extensions/validator/core/loader/StaticResourceBundleLoader.java (added)
+++ myfaces/extensions/validator/trunk/core/src/main/java/org/apache/myfaces/extensions/validator/core/loader/StaticResourceBundleLoader.java Wed Oct 8 02:13:03 2008
@@ -0,0 +1,85 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+package org.apache.myfaces.extensions.validator.core.loader;
+
+import org.apache.myfaces.extensions.validator.internal.UsageInformation;
+import org.apache.myfaces.extensions.validator.internal.UsageCategory;
+
+import java.util.List;
+import java.util.ResourceBundle;
+import java.util.Enumeration;
+import java.util.ArrayList;
+
+/**
+ * @author Gerhard Petracek
+ * @since 1.x.1
+ */
+@UsageInformation({UsageCategory.INTERNAL, UsageCategory.REUSE})
+public class StaticResourceBundleLoader implements StaticMappingConfigLoader<String, String>
+{
+ private String path;
+ private List<StaticMappingConfigEntry<String, String>> mappings;
+
+ public void setSourceOfMapping(String path)
+ {
+ this.path = path;
+ //force reload
+ mappings = null;
+ }
+
+ public List<StaticMappingConfigEntry<String, String>> getMapping()
+ {
+ if(mappings != null)
+ {
+ return mappings;
+ }
+
+ mappings = new ArrayList<StaticMappingConfigEntry<String, String>>();
+
+ ResourceBundle mapping = ResourceBundle.getBundle(path);
+
+ if (mapping == null)
+ {
+ //logging
+ return new ArrayList<StaticMappingConfigEntry<String, String>>();
+ }
+
+ Enumeration keys = mapping.getKeys();
+
+ String annotationClassName;
+ String validationStrategyClassName;
+
+ while (keys.hasMoreElements())
+ {
+ annotationClassName = (String) keys.nextElement();
+ validationStrategyClassName = mapping.getString(annotationClassName);
+
+ addMapping(annotationClassName, validationStrategyClassName);
+ }
+ return mappings;
+ }
+
+ private void addMapping(String annotationClassName, String validationStrategyClassName)
+ {
+ StaticMappingConfigEntry<String, String> entry = new StaticMappingConfigEntry<String, String>();
+ entry.setSource(annotationClassName);
+ entry.setTarget(validationStrategyClassName);
+ this.mappings.add(entry);
+ }
+}
Modified: myfaces/extensions/validator/trunk/core/src/main/java/org/apache/myfaces/extensions/validator/core/metadata/transformer/DefaultMetaDataTransformerFactory.java
URL: http://svn.apache.org/viewvc/myfaces/extensions/validator/trunk/core/src/main/java/org/apache/myfaces/extensions/validator/core/metadata/transformer/DefaultMetaDataTransformerFactory.java?rev=702761&r1=702760&r2=702761&view=diff
==============================================================================
--- myfaces/extensions/validator/trunk/core/src/main/java/org/apache/myfaces/extensions/validator/core/metadata/transformer/DefaultMetaDataTransformerFactory.java (original)
+++ myfaces/extensions/validator/trunk/core/src/main/java/org/apache/myfaces/extensions/validator/core/metadata/transformer/DefaultMetaDataTransformerFactory.java Wed Oct 8 02:13:03 2008
@@ -32,6 +32,10 @@
import org.apache.myfaces.extensions.validator.core.metadata.transformer.mapper
.BeanValidationStrategyToMetaDataTransformerNameMapper;
import org.apache.myfaces.extensions.validator.core.mapper.NameMapper;
+import org.apache.myfaces.extensions.validator.core.loader.StaticMappingConfigLoader;
+import org.apache.myfaces.extensions.validator.core.loader.StaticMappingConfigLoaderNames;
+import org.apache.myfaces.extensions.validator.core.loader.StaticMappingConfigEntry;
+import org.apache.myfaces.extensions.validator.core.ExtValContext;
import org.apache.myfaces.extensions.validator.util.ClassUtils;
import org.apache.myfaces.extensions.validator.internal.UsageInformation;
import org.apache.myfaces.extensions.validator.internal.UsageCategory;
@@ -60,7 +64,7 @@
{
protected final Log logger = LogFactory.getLog(getClass());
- private static Map<String, String> validationStrategyToMetaDataTransformerMapping = new HashMap<String, String>();
+ private static Map<String, String> validationStrategyToMetaDataTransformerMapping;
private static List<NameMapper<ValidationStrategy>> nameMapperList
= new ArrayList<NameMapper<ValidationStrategy>>();
@@ -102,6 +106,11 @@
.getValidationStrategyClassName();
}
+ if (validationStrategyToMetaDataTransformerMapping == null)
+ {
+ initStaticMappings();
+ }
+
if (validationStrategyToMetaDataTransformerMapping.containsKey(validationStrategyName))
{
return (MetaDataTransformer)ClassUtils.tryToInstantiateClassForName(
@@ -126,12 +135,7 @@
{
if(validationStrategyName != null)
{
- validationStrategyToMetaDataTransformerMapping.put(validationStrategyName, transformerName);
-
- if(logger.isTraceEnabled())
- {
- logger.trace(transformerName + " used for " + validationStrategyName);
- }
+ addMapping(validationStrategyName, transformerName);
}
return metaDataTransformer;
}
@@ -139,4 +143,42 @@
return null;
}
+
+ private void initStaticMappings()
+ {
+ synchronized (DefaultMetaDataTransformerFactory.class)
+ {
+ validationStrategyToMetaDataTransformerMapping = new HashMap<String, String>();
+
+ //setup internal static mappings
+ for (StaticMappingConfigLoader<String, String> staticMappingConfigLoader :
+ ExtValContext.getContext().getStaticMappingConfigLoaders(
+ StaticMappingConfigLoaderNames.VALIDATION_STRATEGY_TO_META_DATA_TRANSFORMER_CONFIG_LOADER))
+ {
+ setupStrategyMappings(staticMappingConfigLoader.getMapping());
+ }
+ }
+ }
+
+ private void setupStrategyMappings(List<StaticMappingConfigEntry<String, String>> mappings)
+ {
+ for(StaticMappingConfigEntry<String, String> mapping : mappings)
+ {
+ addMapping(mapping.getSource(), mapping.getTarget());
+ }
+ }
+
+ private void addMapping(String validationStrategyName, String transformerName)
+ {
+ if(logger.isTraceEnabled())
+ {
+ logger.trace("adding validation strategy to meta-data transformer mapping: "
+ + validationStrategyName + " -> " + transformerName);
+ }
+
+ synchronized (DefaultMetaDataTransformerFactory.class)
+ {
+ validationStrategyToMetaDataTransformerMapping.put(validationStrategyName, transformerName);
+ }
+ }
}
\ No newline at end of file
Modified: myfaces/extensions/validator/trunk/core/src/main/java/org/apache/myfaces/extensions/validator/core/validation/message/resolver/DefaultMessageResolverFactory.java
URL: http://svn.apache.org/viewvc/myfaces/extensions/validator/trunk/core/src/main/java/org/apache/myfaces/extensions/validator/core/validation/message/resolver/DefaultMessageResolverFactory.java?rev=702761&r1=702760&r2=702761&view=diff
==============================================================================
--- myfaces/extensions/validator/trunk/core/src/main/java/org/apache/myfaces/extensions/validator/core/validation/message/resolver/DefaultMessageResolverFactory.java (original)
+++ myfaces/extensions/validator/trunk/core/src/main/java/org/apache/myfaces/extensions/validator/core/validation/message/resolver/DefaultMessageResolverFactory.java Wed Oct 8 02:13:03 2008
@@ -31,6 +31,10 @@
import org.apache.myfaces.extensions.validator.core.validation.message.
resolver.mapper.SimpleValidationStrategyToMsgResolverNameMapper;
import org.apache.myfaces.extensions.validator.core.validation.strategy.ValidationStrategy;
+import org.apache.myfaces.extensions.validator.core.loader.StaticMappingConfigLoader;
+import org.apache.myfaces.extensions.validator.core.loader.StaticMappingConfigEntry;
+import org.apache.myfaces.extensions.validator.core.loader.StaticMappingConfigLoaderNames;
+import org.apache.myfaces.extensions.validator.core.ExtValContext;
import org.apache.myfaces.extensions.validator.util.ClassUtils;
import org.apache.myfaces.extensions.validator.internal.ToDo;
import org.apache.myfaces.extensions.validator.internal.Priority;
@@ -57,8 +61,7 @@
{
protected final Log logger = LogFactory.getLog(getClass());
- private static Map<String, String> strategyMessageResolverMapping =
- new HashMap<String, String>();
+ private static Map<String, String> strategyMessageResolverMapping;
private static List<NameMapper<ValidationStrategy>> nameMapperList =
new ArrayList<NameMapper<ValidationStrategy>>();
@@ -88,6 +91,11 @@
{
String strategyName = validationStrategy.getClass().getName();
+ if (strategyMessageResolverMapping == null)
+ {
+ initStaticMappings();
+ }
+
if (strategyMessageResolverMapping.containsKey(strategyName))
{
return (MessageResolver) ClassUtils
@@ -126,12 +134,42 @@
return new DefaultValidationErrorMessageResolver();
}
+ private void initStaticMappings()
+ {
+ synchronized (DefaultMessageResolverFactory.class)
+ {
+ strategyMessageResolverMapping = new HashMap<String, String>();
+
+ //setup internal static mappings
+ for (StaticMappingConfigLoader<String, String> staticMappingConfigLoader :
+ ExtValContext.getContext().getStaticMappingConfigLoaders(
+ StaticMappingConfigLoaderNames.VALIDATION_STRATEGY_TO_MESSAGE_RESOLVER_CONFIG_LOADER))
+ {
+ setupStrategyMappings(staticMappingConfigLoader.getMapping());
+ }
+ }
+ }
+
+ private void setupStrategyMappings(List<StaticMappingConfigEntry<String,String>> mappings)
+ {
+ for(StaticMappingConfigEntry<String, String> mapping : mappings)
+ {
+ addMapping(mapping.getSource(), mapping.getTarget());
+ }
+ }
+
@ToDo(value = Priority.MEDIUM, description = "logging")
- private void addMapping(String strategyName, String messageResolverName)
+ private void addMapping(String validationStrategyName, String messageResolverName)
{
+ if(logger.isTraceEnabled())
+ {
+ logger.trace("adding static validation strategy to message resolver mapping: "
+ + validationStrategyName + " -> " + messageResolverName);
+ }
+
synchronized (DefaultMessageResolverFactory.class)
{
- strategyMessageResolverMapping.put(strategyName, messageResolverName);
+ strategyMessageResolverMapping.put(validationStrategyName, messageResolverName);
}
}
}
Modified: myfaces/extensions/validator/trunk/core/src/main/java/org/apache/myfaces/extensions/validator/core/validation/strategy/DefaultValidationStrategyFactory.java
URL: http://svn.apache.org/viewvc/myfaces/extensions/validator/trunk/core/src/main/java/org/apache/myfaces/extensions/validator/core/validation/strategy/DefaultValidationStrategyFactory.java?rev=702761&r1=702760&r2=702761&view=diff
==============================================================================
--- myfaces/extensions/validator/trunk/core/src/main/java/org/apache/myfaces/extensions/validator/core/validation/strategy/DefaultValidationStrategyFactory.java (original)
+++ myfaces/extensions/validator/trunk/core/src/main/java/org/apache/myfaces/extensions/validator/core/validation/strategy/DefaultValidationStrategyFactory.java Wed Oct 8 02:13:03 2008
@@ -22,7 +22,11 @@
import org.apache.myfaces.extensions.validator.core.WebXmlParameter;
import org.apache.myfaces.extensions.validator.core.ExtValContext;
import org.apache.myfaces.extensions.validator.core.CustomInfo;
+import org.apache.myfaces.extensions.validator.core.loader.StaticMappingConfigLoader;
import org.apache.myfaces.extensions.validator.core.mapper.NameMapper;
+import org.apache.myfaces.extensions.validator.core.loader.StaticMappingConfigEntry;
+import org.apache.myfaces.extensions.validator.core.loader.StaticResourceBundleLoader;
+import org.apache.myfaces.extensions.validator.core.loader.StaticMappingConfigLoaderNames;
import org.apache.myfaces.extensions.validator.core.validation.strategy.mapper
.AnnotationToValidationStrategyBeanNameMapper;
import org.apache.myfaces.extensions.validator.core.validation.strategy.mapper
@@ -44,12 +48,10 @@
import java.lang.annotation.Annotation;
import java.util.ArrayList;
-import java.util.Enumeration;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.util.MissingResourceException;
-import java.util.ResourceBundle;
/**
@@ -102,7 +104,7 @@
{
if (annotationStrategyMapping == null)
{
- initStaticStrategyMappings();
+ initStaticMappings();
}
String annotationName = annotation.annotationType().getName();
@@ -153,33 +155,44 @@
}
@ToDo(value = Priority.MEDIUM, description = "logging")
- private void addMapping(String annotationName, String strategyName)
+ private void addMapping(String annotationName, String validationStrategyName)
{
+ if(logger.isTraceEnabled())
+ {
+ logger.trace("adding annotation to validation strategy mapping: "
+ + annotationName + " -> " + validationStrategyName);
+ }
+
synchronized (DefaultValidationStrategyFactory.class)
{
- annotationStrategyMapping.put(annotationName, strategyName);
+ annotationStrategyMapping.put(annotationName, validationStrategyName);
}
}
@ToDo(value = Priority.MEDIUM, description = "logging")
- private void initStaticStrategyMappings()
+ private void initStaticMappings()
{
synchronized (DefaultValidationStrategyFactory.class)
{
annotationStrategyMapping = new HashMap<String, String>();
//setup internal static mappings
- for (String internalMappingSource : ExtValContext.getContext().getStaticStrategyMappingSources())
+ for (StaticMappingConfigLoader<String, String> staticMappingConfigLoader :
+ ExtValContext.getContext().getStaticMappingConfigLoaders(
+ StaticMappingConfigLoaderNames.ANNOTATION_TO_VALIDATION_STRATEGY_CONFIG_LOADER))
{
- setupStrategyMappings(internalMappingSource);
+ setupStrategyMappings(staticMappingConfigLoader.getMapping());
}
+ StaticMappingConfigLoader<String, String> staticMappingConfigLoader = new StaticResourceBundleLoader();
//try to setup mapping with base name by convention - overrides default mapping
try
{
//build convention (strategy mapping)
- setupStrategyMappings(ExtValContext.getContext().getInformationProviderBean()
+ staticMappingConfigLoader.setSourceOfMapping(ExtValContext.getContext().getInformationProviderBean()
.get(CustomInfo.STATIC_STRATEGY_MAPPING_SOURCE));
+
+ setupStrategyMappings(staticMappingConfigLoader.getMapping());
}
catch (Throwable t)
{
@@ -192,7 +205,9 @@
{
try
{
- setupStrategyMappings(customMappingBaseName);
+ staticMappingConfigLoader = new StaticResourceBundleLoader();
+ staticMappingConfigLoader.setSourceOfMapping(customMappingBaseName);
+ setupStrategyMappings(staticMappingConfigLoader.getMapping());
}
catch (MissingResourceException e)
{
@@ -202,26 +217,11 @@
}
}
- private void setupStrategyMappings(String bundle)
+ private void setupStrategyMappings(List<StaticMappingConfigEntry<String,String>> mappings)
{
- ResourceBundle strategyMapping = ResourceBundle.getBundle(bundle);
-
- if (strategyMapping == null)
+ for(StaticMappingConfigEntry<String, String> mapping : mappings)
{
- return;
- }
-
- Enumeration keys = strategyMapping.getKeys();
-
- String annotationClassName;
- String validationStrategyClassName;
-
- while (keys.hasMoreElements())
- {
- annotationClassName = (String) keys.nextElement();
- validationStrategyClassName = strategyMapping.getString(annotationClassName);
-
- addMapping(annotationClassName, validationStrategyClassName);
+ addMapping(mapping.getSource(), mapping.getTarget());
}
}
}
Modified: myfaces/extensions/validator/trunk/examples/feature-set_01/src/main/java/org/apache/myfaces/extensions/validator/demo/gui/beans/RegistrationPage.java
URL: http://svn.apache.org/viewvc/myfaces/extensions/validator/trunk/examples/feature-set_01/src/main/java/org/apache/myfaces/extensions/validator/demo/gui/beans/RegistrationPage.java?rev=702761&r1=702760&r2=702761&view=diff
==============================================================================
--- myfaces/extensions/validator/trunk/examples/feature-set_01/src/main/java/org/apache/myfaces/extensions/validator/demo/gui/beans/RegistrationPage.java (original)
+++ myfaces/extensions/validator/trunk/examples/feature-set_01/src/main/java/org/apache/myfaces/extensions/validator/demo/gui/beans/RegistrationPage.java Wed Oct 8 02:13:03 2008
@@ -40,6 +40,7 @@
@Required
@Equals("passwordRepeated")
+ @JoinValidation(value = "#{registrationPage.person.password}")
private String password;
@Required(validationErrorMsgKey = "repeated_password_required")
Modified: myfaces/extensions/validator/trunk/validation-modules/property-validation/src/main/java/org/apache/myfaces/extensions/validator/PropertyValidationModuleStartupListener.java
URL: http://svn.apache.org/viewvc/myfaces/extensions/validator/trunk/validation-modules/property-validation/src/main/java/org/apache/myfaces/extensions/validator/PropertyValidationModuleStartupListener.java?rev=702761&r1=702760&r2=702761&view=diff
==============================================================================
--- myfaces/extensions/validator/trunk/validation-modules/property-validation/src/main/java/org/apache/myfaces/extensions/validator/PropertyValidationModuleStartupListener.java (original)
+++ myfaces/extensions/validator/trunk/validation-modules/property-validation/src/main/java/org/apache/myfaces/extensions/validator/PropertyValidationModuleStartupListener.java Wed Oct 8 02:13:03 2008
@@ -21,6 +21,9 @@
import org.apache.myfaces.extensions.validator.baseval.WebXmlParameter;
import org.apache.myfaces.extensions.validator.core.startup.AbstractStartupListener;
import org.apache.myfaces.extensions.validator.core.ExtValContext;
+import org.apache.myfaces.extensions.validator.core.loader.StaticResourceBundleLoader;
+import org.apache.myfaces.extensions.validator.core.loader.StaticMappingConfigLoader;
+import org.apache.myfaces.extensions.validator.core.loader.StaticMappingConfigLoaderNames;
import org.apache.myfaces.extensions.validator.internal.ToDo;
import org.apache.myfaces.extensions.validator.internal.Priority;
import org.apache.myfaces.extensions.validator.crossval.recorder.CrossValidationUserInputRecorder;
@@ -44,8 +47,12 @@
if (jpaBasedValidation == null
|| !jpaBasedValidation.equalsIgnoreCase("true"))
{
- ExtValContext.getContext().addStaticStrategyMappingSource(
- ExtValInformation.EXTENSIONS_VALIDATOR_BASE_PACKAGE_NAME + ".jpa_strategy_mappings");
+ StaticMappingConfigLoader<String, String> staticMappingConfigLoader = new StaticResourceBundleLoader();
+ staticMappingConfigLoader.setSourceOfMapping(
+ ExtValInformation.EXTENSIONS_VALIDATOR_BASE_PACKAGE_NAME +".jpa_strategy_mappings");
+
+ ExtValContext.getContext().addStaticMappingConfigLoader(
+ StaticMappingConfigLoaderNames.ANNOTATION_TO_VALIDATION_STRATEGY_CONFIG_LOADER, staticMappingConfigLoader);
}
}