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 2009/10/12 17:09:13 UTC
svn commit: r824374 - in /myfaces/extensions/validator/trunk:
core/src/main/java/org/apache/myfaces/extensions/validator/core/mapper/
core/src/main/java/org/apache/myfaces/extensions/validator/core/metadata/transformer/
core/src/main/java/org/apache/my...
Author: gpetracek
Date: Mon Oct 12 15:09:13 2009
New Revision: 824374
URL: http://svn.apache.org/viewvc?rev=824374&view=rev
Log:
EXTVAL-64 first draft
Added:
myfaces/extensions/validator/trunk/core/src/main/java/org/apache/myfaces/extensions/validator/core/mapper/SubMapperAwareNameMapper.java
myfaces/extensions/validator/trunk/core/src/main/java/org/apache/myfaces/extensions/validator/core/mapper/SubNameMapper.java
myfaces/extensions/validator/trunk/core/src/main/java/org/apache/myfaces/extensions/validator/core/metadata/transformer/SortedNameMapperList.java
myfaces/extensions/validator/trunk/core/src/main/java/org/apache/myfaces/extensions/validator/core/metadata/transformer/mapper/ValidationStrategyToMetaDataTransformerSubMapperAwareNameMapper.java
- copied, changed from r823312, myfaces/extensions/validator/trunk/core/src/main/java/org/apache/myfaces/extensions/validator/core/metadata/transformer/mapper/AbstractValidationStrategyToMetaDataTransformerNameMapper.java
myfaces/extensions/validator/trunk/core/src/main/java/org/apache/myfaces/extensions/validator/core/validation/strategy/AbstractVirtualValidationStrategy.java
myfaces/extensions/validator/trunk/core/src/main/java/org/apache/myfaces/extensions/validator/core/validation/strategy/IdentifiableValidationStrategy.java
myfaces/extensions/validator/trunk/validation-modules/bean-validation/src/main/java/org/apache/myfaces/extensions/validator/beanval/metadata/transformer/StringSizeMetaDataTransformer.java
- copied, changed from r823638, myfaces/extensions/validator/trunk/validation-modules/bean-validation/src/main/java/org/apache/myfaces/extensions/validator/beanval/metadata/transformer/BeanValidationMetaDataTransformer.java
myfaces/extensions/validator/trunk/validation-modules/bean-validation/src/main/java/org/apache/myfaces/extensions/validator/beanval/metadata/transformer/mapper/SizeNameMapper.java
- copied, changed from r823638, myfaces/extensions/validator/trunk/validation-modules/bean-validation/src/main/java/org/apache/myfaces/extensions/validator/beanval/metadata/transformer/mapper/DefaultBeanValidationStrategyToMetaDataTransformerNameMapper.java
myfaces/extensions/validator/trunk/validation-modules/bean-validation/src/main/java/org/apache/myfaces/extensions/validator/beanval/validation/strategy/BeanValidationVirtualValidationStrategy.java
- copied, changed from r823312, myfaces/extensions/validator/trunk/validation-modules/bean-validation/src/main/java/org/apache/myfaces/extensions/validator/beanval/validation/strategy/BeanValidationStrategyAdapter.java
Removed:
myfaces/extensions/validator/trunk/validation-modules/bean-validation/src/main/java/org/apache/myfaces/extensions/validator/beanval/metadata/transformer/BeanValidationMetaDataTransformer.java
myfaces/extensions/validator/trunk/validation-modules/bean-validation/src/main/java/org/apache/myfaces/extensions/validator/beanval/metadata/transformer/mapper/DefaultBeanValidationStrategyToMetaDataTransformerNameMapper.java
myfaces/extensions/validator/trunk/validation-modules/bean-validation/src/main/java/org/apache/myfaces/extensions/validator/beanval/validation/strategy/BeanValidationStrategyAdapter.java
Modified:
myfaces/extensions/validator/trunk/core/src/main/java/org/apache/myfaces/extensions/validator/core/metadata/transformer/DefaultMetaDataTransformerFactory.java
myfaces/extensions/validator/trunk/validation-modules/bean-validation/src/main/java/org/apache/myfaces/extensions/validator/beanval/BeanValidationInterceptorUtils.java
myfaces/extensions/validator/trunk/validation-modules/bean-validation/src/main/java/org/apache/myfaces/extensions/validator/beanval/ExtValBeanValidationContext.java
myfaces/extensions/validator/trunk/validation-modules/bean-validation/src/main/java/org/apache/myfaces/extensions/validator/beanval/startup/BeanValidationStartupListener.java
Added: myfaces/extensions/validator/trunk/core/src/main/java/org/apache/myfaces/extensions/validator/core/mapper/SubMapperAwareNameMapper.java
URL: http://svn.apache.org/viewvc/myfaces/extensions/validator/trunk/core/src/main/java/org/apache/myfaces/extensions/validator/core/mapper/SubMapperAwareNameMapper.java?rev=824374&view=auto
==============================================================================
--- myfaces/extensions/validator/trunk/core/src/main/java/org/apache/myfaces/extensions/validator/core/mapper/SubMapperAwareNameMapper.java (added)
+++ myfaces/extensions/validator/trunk/core/src/main/java/org/apache/myfaces/extensions/validator/core/mapper/SubMapperAwareNameMapper.java Mon Oct 12 15:09:13 2009
@@ -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.mapper;
+
+import org.apache.myfaces.extensions.validator.internal.UsageCategory;
+import org.apache.myfaces.extensions.validator.internal.UsageInformation;
+
+/**
+ * interface for name-mappers which have to delegate to other (sub-)name-mappers
+ *
+ * @author Gerhard Petracek
+ * @since x.x.3
+ */
+@UsageInformation(UsageCategory.API)
+public interface SubMapperAwareNameMapper<T> extends NameMapper<T>
+{
+ void addNameMapper(SubNameMapper<T> nameMapper);
+}
\ No newline at end of file
Added: myfaces/extensions/validator/trunk/core/src/main/java/org/apache/myfaces/extensions/validator/core/mapper/SubNameMapper.java
URL: http://svn.apache.org/viewvc/myfaces/extensions/validator/trunk/core/src/main/java/org/apache/myfaces/extensions/validator/core/mapper/SubNameMapper.java?rev=824374&view=auto
==============================================================================
--- myfaces/extensions/validator/trunk/core/src/main/java/org/apache/myfaces/extensions/validator/core/mapper/SubNameMapper.java (added)
+++ myfaces/extensions/validator/trunk/core/src/main/java/org/apache/myfaces/extensions/validator/core/mapper/SubNameMapper.java Mon Oct 12 15:09:13 2009
@@ -0,0 +1,33 @@
+/*
+ * 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.mapper;
+
+import org.apache.myfaces.extensions.validator.internal.UsageCategory;
+import org.apache.myfaces.extensions.validator.internal.UsageInformation;
+
+/**
+ * marker interface
+ *
+ * @author Gerhard Petracek
+ * @since x.x.3
+ */
+@UsageInformation(UsageCategory.API)
+public interface SubNameMapper<T> extends NameMapper<T>
+{
+}
\ No newline at end of file
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=824374&r1=824373&r2=824374&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 Mon Oct 12 15:09:13 2009
@@ -22,11 +22,16 @@
import org.apache.myfaces.extensions.validator.core.factory.AbstractNameMapperAwareFactory;
import org.apache.myfaces.extensions.validator.core.validation.strategy.ValidationStrategy;
import org.apache.myfaces.extensions.validator.core.validation.strategy.BeanValidationStrategyAdapter;
+import org.apache.myfaces.extensions.validator.core.validation.strategy.IdentifiableValidationStrategy;
import org.apache.myfaces.extensions.validator.core.mapper.NameMapper;
+import org.apache.myfaces.extensions.validator.core.mapper.SubMapperAwareNameMapper;
+import org.apache.myfaces.extensions.validator.core.mapper.SubNameMapper;
import org.apache.myfaces.extensions.validator.core.initializer.configuration.StaticConfiguration;
import org.apache.myfaces.extensions.validator.core.initializer.configuration.StaticConfigurationNames;
import org.apache.myfaces.extensions.validator.core.initializer.configuration.StaticConfigurationEntry;
import org.apache.myfaces.extensions.validator.core.ExtValContext;
+import org.apache.myfaces.extensions.validator.core.metadata.transformer.mapper.
+ ValidationStrategyToMetaDataTransformerSubMapperAwareNameMapper;
import org.apache.myfaces.extensions.validator.util.ClassUtils;
import org.apache.myfaces.extensions.validator.internal.UsageInformation;
import org.apache.myfaces.extensions.validator.internal.UsageCategory;
@@ -57,6 +62,8 @@
private Map<String, String> validationStrategyToMetaDataTransformerMapping;
private List<NameMapper<ValidationStrategy>> nameMapperList = new ArrayList<NameMapper<ValidationStrategy>>();
+ private List<SubNameMapper<ValidationStrategy>> subNameMapperList =
+ new ArrayList<SubNameMapper<ValidationStrategy>>();
public DefaultMetaDataTransformerFactory()
{
@@ -64,35 +71,57 @@
{
logger.debug(getClass().getName() + " instantiated");
}
+
+ //since there is no guarantee that the startup listener of the core gets executed first
+ register(new ValidationStrategyToMetaDataTransformerSubMapperAwareNameMapper());
}
public MetaDataTransformer create(ValidationStrategy validationStrategy)
{
- String validationStrategyName = null;
+ String validationStrategyName = createValidationStrategyName(validationStrategy);
+
+ tryToInitStaticMappings();
- //proxy check
- if(validationStrategy.getClass().getPackage() != null)
+ MetaDataTransformer metaDataTransformer =
+ tryToResolveCachedMetaDataTransformer(validationStrategy, validationStrategyName);
+
+ if(metaDataTransformer != null)
{
- validationStrategyName = validationStrategy.getClass().getName();
+ return metaDataTransformer;
}
+
+ return createAndCacheMetaDataTransformer(validationStrategy, validationStrategyName);
+ }
+
+ private String createValidationStrategyName(ValidationStrategy validationStrategy)
+ {
+ boolean isProxyDetected = isProxy(validationStrategy);
//in case of a proxy and the usage of a BeanValidationStrategyAdapter
- else if (validationStrategy instanceof BeanValidationStrategyAdapter)
+ if (isProxyDetected && validationStrategy instanceof BeanValidationStrategyAdapter)
{
- validationStrategyName = ((BeanValidationStrategyAdapter)validationStrategy)
+ return ((BeanValidationStrategyAdapter)validationStrategy)
.getValidationStrategyClassName();
}
+ return !isProxyDetected ? validationStrategy.getClass().getName() : null;
+ }
+
+ private void tryToInitStaticMappings()
+ {
if (validationStrategyToMetaDataTransformerMapping == null)
{
initStaticMappings();
}
+ }
- if (validationStrategyToMetaDataTransformerMapping.containsKey(validationStrategyName))
- {
- return (MetaDataTransformer)ClassUtils.tryToInstantiateClassForName(
- validationStrategyToMetaDataTransformerMapping.get(validationStrategyName));
- }
+ private boolean isProxy(ValidationStrategy validationStrategy)
+ {
+ return validationStrategy.getClass().getPackage() == null;
+ }
+ private MetaDataTransformer createAndCacheMetaDataTransformer(
+ ValidationStrategy validationStrategy, String validationStrategyName)
+ {
MetaDataTransformer metaDataTransformer;
String transformerName;
//null -> use name mappers
@@ -105,16 +134,60 @@
continue;
}
- metaDataTransformer = (MetaDataTransformer)ClassUtils.tryToInstantiateClassForName(transformerName);
+ metaDataTransformer = tryToCreateAndCacheMetaDataTransformer(
+ validationStrategy, validationStrategyName, transformerName);
- if (metaDataTransformer != null)
+ if(metaDataTransformer != null)
{
- if(validationStrategyName != null)
+ return metaDataTransformer;
+ }
+ }
+
+ return null;
+ }
+
+ private MetaDataTransformer tryToResolveCachedMetaDataTransformer(
+ ValidationStrategy validationStrategy, String validationStrategyName)
+ {
+ if (validationStrategyToMetaDataTransformerMapping.containsKey(validationStrategyName))
+ {
+ return (MetaDataTransformer)ClassUtils.tryToInstantiateClassForName(
+ validationStrategyToMetaDataTransformerMapping.get(validationStrategyName));
+ }
+
+ if(validationStrategy instanceof IdentifiableValidationStrategy)
+ {
+ String newValidationStrategyName = validationStrategyName + IdentifiableValidationStrategy.ID_PREFIX +
+ ((IdentifiableValidationStrategy)validationStrategy).getId();
+
+ if (validationStrategyToMetaDataTransformerMapping.containsKey(newValidationStrategyName))
+ {
+ return (MetaDataTransformer)ClassUtils.tryToInstantiateClassForName(
+ validationStrategyToMetaDataTransformerMapping.get(newValidationStrategyName));
+ }
+ }
+
+ return null;
+ }
+
+ private MetaDataTransformer tryToCreateAndCacheMetaDataTransformer(
+ ValidationStrategy validationStrategy, String validationStrategyName, String transformerName)
+ {
+ MetaDataTransformer metaDataTransformer = (MetaDataTransformer)
+ ClassUtils.tryToInstantiateClassForName(transformerName);
+
+ if (metaDataTransformer != null)
+ {
+ if(validationStrategyName != null)
+ {
+ if(validationStrategy instanceof IdentifiableValidationStrategy)
{
- addMapping(validationStrategyName, transformerName);
+ validationStrategyName += IdentifiableValidationStrategy.ID_PREFIX +
+ ((IdentifiableValidationStrategy)validationStrategy).getId();
}
- return metaDataTransformer;
+ addMapping(validationStrategyName, transformerName);
}
+ return metaDataTransformer;
}
return null;
@@ -154,6 +227,36 @@
protected List<NameMapper<ValidationStrategy>> getNameMapperList()
{
- return nameMapperList;
+ return new SortedNameMapperList<NameMapper<ValidationStrategy>, SubNameMapper<ValidationStrategy>>(
+ this.nameMapperList, this.subNameMapperList);
+ }
+
+ @Override
+ public void register(NameMapper<ValidationStrategy> validationStrategyNameMapper)
+ {
+ tryToInitNameMapperWithExistingSubMappers(validationStrategyNameMapper);
+ super.register(validationStrategyNameMapper);
+ }
+
+ /**
+ * it's a very special case due to the missing order in the execution of startup-listeners (phase listeners)
+ * packaged in faces-config.xml files of jars
+ *
+ * normally the default SubMapperAwareNameMapper should be enough
+ * anyway, if a module adds a new SubMapperAwareNameMapper,
+ * all previous added SubNameMappers have to be added to avoid confusion in special cases.
+ * if a SubMapperAwareNameMapper should be considered as final extend the interface and filter it in addNameMapper
+ *
+ * @param validationStrategyNameMapper which has to be added
+ */
+ private void tryToInitNameMapperWithExistingSubMappers(NameMapper<ValidationStrategy> validationStrategyNameMapper)
+ {
+ if(validationStrategyNameMapper instanceof SubMapperAwareNameMapper)
+ {
+ for(SubNameMapper<ValidationStrategy> nameMapper : this.subNameMapperList)
+ {
+ ((SubMapperAwareNameMapper<ValidationStrategy>)validationStrategyNameMapper).addNameMapper(nameMapper);
+ }
+ }
}
}
Added: myfaces/extensions/validator/trunk/core/src/main/java/org/apache/myfaces/extensions/validator/core/metadata/transformer/SortedNameMapperList.java
URL: http://svn.apache.org/viewvc/myfaces/extensions/validator/trunk/core/src/main/java/org/apache/myfaces/extensions/validator/core/metadata/transformer/SortedNameMapperList.java?rev=824374&view=auto
==============================================================================
--- myfaces/extensions/validator/trunk/core/src/main/java/org/apache/myfaces/extensions/validator/core/metadata/transformer/SortedNameMapperList.java (added)
+++ myfaces/extensions/validator/trunk/core/src/main/java/org/apache/myfaces/extensions/validator/core/metadata/transformer/SortedNameMapperList.java Mon Oct 12 15:09:13 2009
@@ -0,0 +1,214 @@
+/*
+ * 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.metadata.transformer;
+
+import org.apache.myfaces.extensions.validator.core.mapper.NameMapper;
+import org.apache.myfaces.extensions.validator.core.mapper.SubMapperAwareNameMapper;
+import org.apache.myfaces.extensions.validator.core.mapper.SubNameMapper;
+import org.apache.myfaces.extensions.validator.internal.UsageCategory;
+import org.apache.myfaces.extensions.validator.internal.UsageInformation;
+
+import java.util.List;
+import java.util.Collections;
+import java.util.Collection;
+import java.util.Comparator;
+import java.util.Iterator;
+import java.util.ListIterator;
+
+
+/**
+ * @author Gerhard Petracek
+ * @since x.x.3
+ */
+@UsageInformation({UsageCategory.INTERNAL})
+class SortedNameMapperList<T extends NameMapper, S extends SubNameMapper> implements List<T>
+{
+ private List<T> wrapped;
+ private List<S> globalSubNameMapperList;
+
+ SortedNameMapperList(List<T> wrapped, List<S> subNameMapperList)
+ {
+ this.wrapped = wrapped;
+ this.globalSubNameMapperList = subNameMapperList;
+ }
+
+ public boolean add(T t)
+ {
+ if (t instanceof SubNameMapper /*due to a restriction in java*/)
+ {
+ return addSubNameMapper((S) t);
+ }
+ else
+ {
+ boolean result = wrapped.add(t);
+
+ Collections.sort(wrapped, new Comparator<T>()
+ {
+ public int compare(T nm1, T nm2)
+ {
+ if (nm1 instanceof SubMapperAwareNameMapper && nm2 instanceof SubMapperAwareNameMapper)
+ {
+ return 0;
+ }
+ return nm1 instanceof SubMapperAwareNameMapper ? 1 : -1;
+ }
+ });
+ return result;
+ }
+ }
+
+ @SuppressWarnings({"unchecked"})
+ private boolean addSubNameMapper(S subNameMapper)
+ {
+ boolean result = false;
+ for (NameMapper nameMapper : this.wrapped)
+ {
+ if (nameMapper instanceof SubMapperAwareNameMapper)
+ {
+ ((SubMapperAwareNameMapper) nameMapper).addNameMapper(subNameMapper);
+ result = true;
+ }
+ }
+
+ tryToAddMapperAsGlobalSubNameMapper(subNameMapper);
+ return result;
+ }
+
+ private void tryToAddMapperAsGlobalSubNameMapper(S subNameMapper)
+ {
+ if(!this.globalSubNameMapperList.contains(subNameMapper))
+ {
+ this.globalSubNameMapperList.add(subNameMapper);
+ }
+ }
+
+ /*
+ * generated
+ */
+ public int size()
+ {
+ return wrapped.size();
+ }
+
+ public boolean isEmpty()
+ {
+ return wrapped.isEmpty();
+ }
+
+ public boolean contains(Object o)
+ {
+ return wrapped.contains(o);
+ }
+
+ public Iterator<T> iterator()
+ {
+ return wrapped.iterator();
+ }
+
+ public Object[] toArray()
+ {
+ return wrapped.toArray();
+ }
+
+ @SuppressWarnings({"SuspiciousToArrayCall"})
+ public <T> T[] toArray(T[] a)
+ {
+ return wrapped.toArray(a);
+ }
+
+ public boolean remove(Object o)
+ {
+ return wrapped.remove(o);
+ }
+
+ public boolean containsAll(Collection<?> c)
+ {
+ return wrapped.containsAll(c);
+ }
+
+ public boolean addAll(Collection<? extends T> c)
+ {
+ return wrapped.addAll(c);
+ }
+
+ public boolean addAll(int index, Collection<? extends T> c)
+ {
+ return wrapped.addAll(index, c);
+ }
+
+ public boolean removeAll(Collection<?> c)
+ {
+ return wrapped.removeAll(c);
+ }
+
+ public boolean retainAll(Collection<?> c)
+ {
+ return wrapped.retainAll(c);
+ }
+
+ public void clear()
+ {
+ wrapped.clear();
+ }
+
+ public T get(int index)
+ {
+ return wrapped.get(index);
+ }
+
+ public T set(int index, T element)
+ {
+ return wrapped.set(index, element);
+ }
+
+ public void add(int index, T element)
+ {
+ wrapped.add(index, element);
+ }
+
+ public T remove(int index)
+ {
+ return wrapped.remove(index);
+ }
+
+ public int indexOf(Object o)
+ {
+ return wrapped.indexOf(o);
+ }
+
+ public int lastIndexOf(Object o)
+ {
+ return wrapped.lastIndexOf(o);
+ }
+
+ public ListIterator<T> listIterator()
+ {
+ return wrapped.listIterator();
+ }
+
+ public ListIterator<T> listIterator(int index)
+ {
+ return wrapped.listIterator(index);
+ }
+
+ public List<T> subList(int fromIndex, int toIndex)
+ {
+ return wrapped.subList(fromIndex, toIndex);
+ }
+}
\ No newline at end of file
Copied: myfaces/extensions/validator/trunk/core/src/main/java/org/apache/myfaces/extensions/validator/core/metadata/transformer/mapper/ValidationStrategyToMetaDataTransformerSubMapperAwareNameMapper.java (from r823312, myfaces/extensions/validator/trunk/core/src/main/java/org/apache/myfaces/extensions/validator/core/metadata/transformer/mapper/AbstractValidationStrategyToMetaDataTransformerNameMapper.java)
URL: http://svn.apache.org/viewvc/myfaces/extensions/validator/trunk/core/src/main/java/org/apache/myfaces/extensions/validator/core/metadata/transformer/mapper/ValidationStrategyToMetaDataTransformerSubMapperAwareNameMapper.java?p2=myfaces/extensions/validator/trunk/core/src/main/java/org/apache/myfaces/extensions/validator/core/metadata/transformer/mapper/ValidationStrategyToMetaDataTransformerSubMapperAwareNameMapper.java&p1=myfaces/extensions/validator/trunk/core/src/main/java/org/apache/myfaces/extensions/validator/core/metadata/transformer/mapper/AbstractValidationStrategyToMetaDataTransformerNameMapper.java&r1=823312&r2=824374&rev=824374&view=diff
==============================================================================
--- myfaces/extensions/validator/trunk/core/src/main/java/org/apache/myfaces/extensions/validator/core/metadata/transformer/mapper/AbstractValidationStrategyToMetaDataTransformerNameMapper.java (original)
+++ myfaces/extensions/validator/trunk/core/src/main/java/org/apache/myfaces/extensions/validator/core/metadata/transformer/mapper/ValidationStrategyToMetaDataTransformerSubMapperAwareNameMapper.java Mon Oct 12 15:09:13 2009
@@ -19,27 +19,47 @@
package org.apache.myfaces.extensions.validator.core.metadata.transformer.mapper;
import org.apache.myfaces.extensions.validator.core.mapper.NameMapper;
+import org.apache.myfaces.extensions.validator.core.mapper.SubMapperAwareNameMapper;
+import org.apache.myfaces.extensions.validator.core.mapper.SubNameMapper;
import org.apache.myfaces.extensions.validator.core.validation.strategy.ValidationStrategy;
import org.apache.myfaces.extensions.validator.internal.UsageInformation;
import org.apache.myfaces.extensions.validator.internal.UsageCategory;
-import org.apache.commons.logging.Log;
-import org.apache.commons.logging.LogFactory;
+
+import java.util.List;
+import java.util.ArrayList;
/**
* @author Gerhard Petracek
- * @since 1.x.1
+ * @since x.x.3
*/
@UsageInformation({UsageCategory.INTERNAL})
-public abstract class AbstractValidationStrategyToMetaDataTransformerNameMapper
- implements NameMapper<ValidationStrategy>
+public class ValidationStrategyToMetaDataTransformerSubMapperAwareNameMapper
+ extends AbstractValidationStrategyToMetaDataTransformerNameMapper
+ implements SubMapperAwareNameMapper<ValidationStrategy>
{
- protected final Log logger = LogFactory.getLog(getClass());
+ private List<NameMapper<ValidationStrategy>> subNameMappers = new ArrayList<NameMapper<ValidationStrategy>>();
+
+ public void addNameMapper(SubNameMapper<ValidationStrategy> nameMapper)
+ {
+ if(!this.subNameMappers.contains(nameMapper))
+ {
+ this.subNameMappers.add(nameMapper);
+ }
+ }
- public AbstractValidationStrategyToMetaDataTransformerNameMapper()
+ public String createName(ValidationStrategy source)
{
- if(logger.isDebugEnabled())
+ String result = null;
+
+ for(NameMapper<ValidationStrategy> mapper : this.subNameMappers)
{
- logger.debug(getClass().getName() + " instantiated");
+ result = mapper.createName(source);
+
+ if(result != null)
+ {
+ return result;
+ }
}
+ return result;
}
}
\ No newline at end of file
Added: myfaces/extensions/validator/trunk/core/src/main/java/org/apache/myfaces/extensions/validator/core/validation/strategy/AbstractVirtualValidationStrategy.java
URL: http://svn.apache.org/viewvc/myfaces/extensions/validator/trunk/core/src/main/java/org/apache/myfaces/extensions/validator/core/validation/strategy/AbstractVirtualValidationStrategy.java?rev=824374&view=auto
==============================================================================
--- myfaces/extensions/validator/trunk/core/src/main/java/org/apache/myfaces/extensions/validator/core/validation/strategy/AbstractVirtualValidationStrategy.java (added)
+++ myfaces/extensions/validator/trunk/core/src/main/java/org/apache/myfaces/extensions/validator/core/validation/strategy/AbstractVirtualValidationStrategy.java Mon Oct 12 15:09:13 2009
@@ -0,0 +1,42 @@
+/*
+ * 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.validation.strategy;
+
+import org.apache.myfaces.extensions.validator.internal.UsageCategory;
+import org.apache.myfaces.extensions.validator.internal.UsageInformation;
+import org.apache.myfaces.extensions.validator.core.metadata.MetaDataEntry;
+
+import javax.faces.context.FacesContext;
+import javax.faces.component.UIComponent;
+
+/**
+ * to map constraints directly to a meta-data transformer if there is no validation strategy (required by jsr 303)
+ *
+ * @author Gerhard Petracek
+ * @since x.x.3
+ */
+@UsageInformation(UsageCategory.REUSE)
+public abstract class AbstractVirtualValidationStrategy implements IdentifiableValidationStrategy
+{
+ public final void validate(
+ FacesContext facesContext, UIComponent uiComponent, MetaDataEntry metaDataEntry, Object convertedObject)
+ {
+ throw new UnsupportedOperationException("this is just an adapter e.g. for component initialization");
+ }
+}
\ No newline at end of file
Added: myfaces/extensions/validator/trunk/core/src/main/java/org/apache/myfaces/extensions/validator/core/validation/strategy/IdentifiableValidationStrategy.java
URL: http://svn.apache.org/viewvc/myfaces/extensions/validator/trunk/core/src/main/java/org/apache/myfaces/extensions/validator/core/validation/strategy/IdentifiableValidationStrategy.java?rev=824374&view=auto
==============================================================================
--- myfaces/extensions/validator/trunk/core/src/main/java/org/apache/myfaces/extensions/validator/core/validation/strategy/IdentifiableValidationStrategy.java (added)
+++ myfaces/extensions/validator/trunk/core/src/main/java/org/apache/myfaces/extensions/validator/core/validation/strategy/IdentifiableValidationStrategy.java Mon Oct 12 15:09:13 2009
@@ -0,0 +1,36 @@
+/*
+ * 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.validation.strategy;
+
+import org.apache.myfaces.extensions.validator.internal.UsageCategory;
+import org.apache.myfaces.extensions.validator.internal.UsageInformation;
+
+/**
+ * if an adapter is used for several constraints, this interface allows to identify instances
+ *
+ * @author Gerhard Petracek
+ * @since x.x.3
+ */
+@UsageInformation(UsageCategory.REUSE)
+public interface IdentifiableValidationStrategy extends ValidationStrategy
+{
+ String ID_PREFIX = ":";
+
+ String getId();
+}
\ No newline at end of file
Modified: myfaces/extensions/validator/trunk/validation-modules/bean-validation/src/main/java/org/apache/myfaces/extensions/validator/beanval/BeanValidationInterceptorUtils.java
URL: http://svn.apache.org/viewvc/myfaces/extensions/validator/trunk/validation-modules/bean-validation/src/main/java/org/apache/myfaces/extensions/validator/beanval/BeanValidationInterceptorUtils.java?rev=824374&r1=824373&r2=824374&view=diff
==============================================================================
--- myfaces/extensions/validator/trunk/validation-modules/bean-validation/src/main/java/org/apache/myfaces/extensions/validator/beanval/BeanValidationInterceptorUtils.java (original)
+++ myfaces/extensions/validator/trunk/validation-modules/bean-validation/src/main/java/org/apache/myfaces/extensions/validator/beanval/BeanValidationInterceptorUtils.java Mon Oct 12 15:09:13 2009
@@ -19,7 +19,7 @@
package org.apache.myfaces.extensions.validator.beanval;
import org.apache.commons.logging.Log;
-import org.apache.myfaces.extensions.validator.beanval.validation.strategy.BeanValidationStrategyAdapter;
+import org.apache.myfaces.extensions.validator.beanval.validation.strategy.BeanValidationVirtualValidationStrategy;
import org.apache.myfaces.extensions.validator.core.metadata.MetaDataEntry;
import org.apache.myfaces.extensions.validator.core.metadata.transformer.MetaDataTransformer;
import org.apache.myfaces.extensions.validator.core.property.PropertyDetails;
@@ -95,7 +95,8 @@
for (ConstraintDescriptor<?> constraintDescriptor :
elementDescriptor.findConstraints().unorderedAndMatchingGroups(foundGroups).getConstraintDescriptors())
{
- metaData = transformConstraintDescriptorToMetaData(constraintDescriptor);
+ metaData = transformConstraintDescriptorToMetaData(
+ constraintDescriptor, elementDescriptor.getElementClass());
if (metaData != null && !metaData.isEmpty())
{
@@ -105,21 +106,21 @@
}
@ToDo(Priority.HIGH)
- private Map<String, Object> transformConstraintDescriptorToMetaData(ConstraintDescriptor<?> constraintDescriptor)
+ private Map<String, Object> transformConstraintDescriptorToMetaData(
+ ConstraintDescriptor<?> constraintDescriptor, Class elementClass)
{
Map<String, Object> result = null;
MetaDataTransformer metaDataTransformer;
MetaDataEntry entry;
/*
* per default
- * org.apache.myfaces.extensions.validator.beanval.metadata.transformer.BeanValidationMetaDataTransformer
- * is bound to BeanValidationStrategyAdapter
+ * org.apache.myfaces.extensions.validator.beanval.metadata.transformer.*
+ * is bound to BeanValidationVirtualValidationStrategy
* don't use it directly - it's possible to deactivate
- * org.apache.myfaces.extensions.validator.beanval.metadata.transformer.mapper
- * .DefaultBeanValidationStrategyToMetaDataTransformerNameMapper
+ * org.apache.myfaces.extensions.validator.beanval.metadata.transformer.mapper.*
*/
metaDataTransformer = ExtValUtils.getMetaDataTransformerForValidationStrategy(
- new BeanValidationStrategyAdapter(constraintDescriptor));
+ new BeanValidationVirtualValidationStrategy(constraintDescriptor, elementClass));
if (metaDataTransformer != null)
{
Modified: myfaces/extensions/validator/trunk/validation-modules/bean-validation/src/main/java/org/apache/myfaces/extensions/validator/beanval/ExtValBeanValidationContext.java
URL: http://svn.apache.org/viewvc/myfaces/extensions/validator/trunk/validation-modules/bean-validation/src/main/java/org/apache/myfaces/extensions/validator/beanval/ExtValBeanValidationContext.java?rev=824374&r1=824373&r2=824374&view=diff
==============================================================================
--- myfaces/extensions/validator/trunk/validation-modules/bean-validation/src/main/java/org/apache/myfaces/extensions/validator/beanval/ExtValBeanValidationContext.java (original)
+++ myfaces/extensions/validator/trunk/validation-modules/bean-validation/src/main/java/org/apache/myfaces/extensions/validator/beanval/ExtValBeanValidationContext.java Mon Oct 12 15:09:13 2009
@@ -20,7 +20,7 @@
import org.apache.myfaces.extensions.validator.beanval.validation.message.interpolator.DefaultMessageInterpolator;
import org.apache.myfaces.extensions.validator.beanval.validation.message.interpolator.ExtValMessageInterpolatorAdapter;
-import org.apache.myfaces.extensions.validator.beanval.validation.strategy.BeanValidationStrategyAdapter;
+import org.apache.myfaces.extensions.validator.beanval.validation.strategy.BeanValidationVirtualValidationStrategy;
import org.apache.myfaces.extensions.validator.beanval.storage.ModelValidationEntry;
import org.apache.myfaces.extensions.validator.beanval.storage.ModelValidationStorage;
import org.apache.myfaces.extensions.validator.beanval.annotation.BeanValidation;
@@ -171,6 +171,6 @@
private ValidationStrategy getBeanValidationStrategy()
{
- return new BeanValidationStrategyAdapter(null);
+ return new BeanValidationVirtualValidationStrategy(null, null);
}
}
Copied: myfaces/extensions/validator/trunk/validation-modules/bean-validation/src/main/java/org/apache/myfaces/extensions/validator/beanval/metadata/transformer/StringSizeMetaDataTransformer.java (from r823638, myfaces/extensions/validator/trunk/validation-modules/bean-validation/src/main/java/org/apache/myfaces/extensions/validator/beanval/metadata/transformer/BeanValidationMetaDataTransformer.java)
URL: http://svn.apache.org/viewvc/myfaces/extensions/validator/trunk/validation-modules/bean-validation/src/main/java/org/apache/myfaces/extensions/validator/beanval/metadata/transformer/StringSizeMetaDataTransformer.java?p2=myfaces/extensions/validator/trunk/validation-modules/bean-validation/src/main/java/org/apache/myfaces/extensions/validator/beanval/metadata/transformer/StringSizeMetaDataTransformer.java&p1=myfaces/extensions/validator/trunk/validation-modules/bean-validation/src/main/java/org/apache/myfaces/extensions/validator/beanval/metadata/transformer/BeanValidationMetaDataTransformer.java&r1=823638&r2=824374&rev=824374&view=diff
==============================================================================
--- myfaces/extensions/validator/trunk/validation-modules/bean-validation/src/main/java/org/apache/myfaces/extensions/validator/beanval/metadata/transformer/BeanValidationMetaDataTransformer.java (original)
+++ myfaces/extensions/validator/trunk/validation-modules/bean-validation/src/main/java/org/apache/myfaces/extensions/validator/beanval/metadata/transformer/StringSizeMetaDataTransformer.java Mon Oct 12 15:09:13 2009
@@ -20,46 +20,46 @@
import org.apache.myfaces.extensions.validator.core.metadata.transformer.MetaDataTransformer;
import org.apache.myfaces.extensions.validator.core.metadata.MetaDataEntry;
-import org.apache.myfaces.extensions.validator.internal.ToDo;
-import org.apache.myfaces.extensions.validator.internal.Priority;
+import org.apache.myfaces.extensions.validator.core.metadata.CommonMetaDataKeys;
-import javax.validation.metadata.ConstraintDescriptor;
-import javax.validation.constraints.NotNull;
-import javax.validation.constraints.Pattern;
import javax.validation.constraints.Size;
+import javax.validation.metadata.ConstraintDescriptor;
import java.util.Map;
+import java.util.HashMap;
/**
* @author Gerhard Petracek
* @since x.x.3
*/
-@ToDo(value = Priority.HIGH, description = "select final transformer")
-public class BeanValidationMetaDataTransformer implements MetaDataTransformer
+public class StringSizeMetaDataTransformer implements MetaDataTransformer
{
- public Map<String, Object> convertMetaData(MetaDataEntry metaData)
+ public Map<String, Object> convertMetaData(MetaDataEntry metaDataEntry)
{
- if(isSupportedConstraint(metaData.getValue(ConstraintDescriptor.class)))
- {
-
- //TODO
- }
+ Map<String, Object> results = new HashMap<String, Object>();
+ Size annotation = (Size)metaDataEntry.getValue(ConstraintDescriptor.class).getAnnotation();
- //TODO
- return null;
- }
+ int minimum = annotation.min();
- protected boolean isSupportedConstraint(ConstraintDescriptor constraintDescriptor)
- {
- if(!constraintDescriptor.getAnnotation().annotationType().getName().startsWith("javax.validation.constraints"))
+ if(minimum != 0)
{
- return false;
+ results.put(CommonMetaDataKeys.MIN_LENGTH, minimum);
+ results.put(CommonMetaDataKeys.WEAK_REQUIRED, true);
+ }
+ else
+ {
+ results.put(CommonMetaDataKeys.MIN_LENGTH_DEFAULT, minimum);
}
- String name = constraintDescriptor.getAnnotation().annotationType().getName();
+ int maximum = annotation.max();
+ if(maximum != Integer.MAX_VALUE)
+ {
+ results.put(CommonMetaDataKeys.MAX_LENGTH, maximum);
+ }
+ else
+ {
+ results.put(CommonMetaDataKeys.MAX_LENGTH_DEFAULT, maximum);
+ }
- return NotNull.class.getName().equals(name) ||
- Size.class.getName().equals(name) ||
- Pattern.class.getName().equals(name);
+ return results;
}
-
}
Copied: myfaces/extensions/validator/trunk/validation-modules/bean-validation/src/main/java/org/apache/myfaces/extensions/validator/beanval/metadata/transformer/mapper/SizeNameMapper.java (from r823638, myfaces/extensions/validator/trunk/validation-modules/bean-validation/src/main/java/org/apache/myfaces/extensions/validator/beanval/metadata/transformer/mapper/DefaultBeanValidationStrategyToMetaDataTransformerNameMapper.java)
URL: http://svn.apache.org/viewvc/myfaces/extensions/validator/trunk/validation-modules/bean-validation/src/main/java/org/apache/myfaces/extensions/validator/beanval/metadata/transformer/mapper/SizeNameMapper.java?p2=myfaces/extensions/validator/trunk/validation-modules/bean-validation/src/main/java/org/apache/myfaces/extensions/validator/beanval/metadata/transformer/mapper/SizeNameMapper.java&p1=myfaces/extensions/validator/trunk/validation-modules/bean-validation/src/main/java/org/apache/myfaces/extensions/validator/beanval/metadata/transformer/mapper/DefaultBeanValidationStrategyToMetaDataTransformerNameMapper.java&r1=823638&r2=824374&rev=824374&view=diff
==============================================================================
--- myfaces/extensions/validator/trunk/validation-modules/bean-validation/src/main/java/org/apache/myfaces/extensions/validator/beanval/metadata/transformer/mapper/DefaultBeanValidationStrategyToMetaDataTransformerNameMapper.java (original)
+++ myfaces/extensions/validator/trunk/validation-modules/bean-validation/src/main/java/org/apache/myfaces/extensions/validator/beanval/metadata/transformer/mapper/SizeNameMapper.java Mon Oct 12 15:09:13 2009
@@ -18,27 +18,37 @@
*/
package org.apache.myfaces.extensions.validator.beanval.metadata.transformer.mapper;
-import org.apache.myfaces.extensions.validator.core.metadata.transformer.mapper
- .AbstractValidationStrategyToMetaDataTransformerNameMapper;
import org.apache.myfaces.extensions.validator.core.validation.strategy.ValidationStrategy;
+import org.apache.myfaces.extensions.validator.core.mapper.SubNameMapper;
import org.apache.myfaces.extensions.validator.internal.UsageInformation;
import org.apache.myfaces.extensions.validator.internal.UsageCategory;
-import org.apache.myfaces.extensions.validator.beanval.validation.strategy.BeanValidationStrategyAdapter;
-import org.apache.myfaces.extensions.validator.beanval.metadata.transformer.BeanValidationMetaDataTransformer;
+import org.apache.myfaces.extensions.validator.beanval.validation.strategy.BeanValidationVirtualValidationStrategy;
+import org.apache.myfaces.extensions.validator.beanval.metadata.transformer.StringSizeMetaDataTransformer;
+
+import javax.validation.metadata.ConstraintDescriptor;
+import javax.validation.constraints.Size;
/**
* @author Gerhard Petracek
* @since x.x.3
*/
@UsageInformation({UsageCategory.INTERNAL})
-public class DefaultBeanValidationStrategyToMetaDataTransformerNameMapper
- extends AbstractValidationStrategyToMetaDataTransformerNameMapper
+public class SizeNameMapper implements SubNameMapper<ValidationStrategy>
{
- public String createName(ValidationStrategy validationStrategy)
+ public String createName(ValidationStrategy source)
{
- if(validationStrategy instanceof BeanValidationStrategyAdapter)
+ if(source instanceof BeanValidationVirtualValidationStrategy)
{
- return BeanValidationMetaDataTransformer.class.getName();
+ BeanValidationVirtualValidationStrategy beanValidationAdapter =
+ (BeanValidationVirtualValidationStrategy)source;
+
+ ConstraintDescriptor descriptor = beanValidationAdapter.getConstraintDescriptor();
+
+ if(Size.class.getName().equals(descriptor.getAnnotation().annotationType().getName()) &&
+ String.class.getName().equals(beanValidationAdapter.getElementClass().getName()))
+ {
+ return StringSizeMetaDataTransformer.class.getName();
+ }
}
return null;
}
Modified: myfaces/extensions/validator/trunk/validation-modules/bean-validation/src/main/java/org/apache/myfaces/extensions/validator/beanval/startup/BeanValidationStartupListener.java
URL: http://svn.apache.org/viewvc/myfaces/extensions/validator/trunk/validation-modules/bean-validation/src/main/java/org/apache/myfaces/extensions/validator/beanval/startup/BeanValidationStartupListener.java?rev=824374&r1=824373&r2=824374&view=diff
==============================================================================
--- myfaces/extensions/validator/trunk/validation-modules/bean-validation/src/main/java/org/apache/myfaces/extensions/validator/beanval/startup/BeanValidationStartupListener.java (original)
+++ myfaces/extensions/validator/trunk/validation-modules/bean-validation/src/main/java/org/apache/myfaces/extensions/validator/beanval/startup/BeanValidationStartupListener.java Mon Oct 12 15:09:13 2009
@@ -21,8 +21,7 @@
import org.apache.myfaces.extensions.validator.beanval.BeanValidationInterceptor;
import org.apache.myfaces.extensions.validator.beanval.validation.ModelValidationPhaseListener;
import org.apache.myfaces.extensions.validator.beanval.interceptor.PropertyValidationGroupProvider;
-import org.apache.myfaces.extensions.validator.beanval.metadata.transformer.mapper
- .DefaultBeanValidationStrategyToMetaDataTransformerNameMapper;
+import org.apache.myfaces.extensions.validator.beanval.metadata.transformer.mapper.SizeNameMapper;
import org.apache.myfaces.extensions.validator.beanval.storage.DefaultModelValidationStorageManager;
import org.apache.myfaces.extensions.validator.beanval.storage.ModelValidationStorage;
import org.apache.myfaces.extensions.validator.beanval.storage.mapper.BeanValidationGroupStorageNameMapper;
@@ -36,6 +35,8 @@
import org.apache.myfaces.extensions.validator.core.storage.StorageManagerHolder;
import org.apache.myfaces.extensions.validator.internal.UsageCategory;
import org.apache.myfaces.extensions.validator.internal.UsageInformation;
+import org.apache.myfaces.extensions.validator.internal.ToDo;
+import org.apache.myfaces.extensions.validator.internal.Priority;
import org.apache.myfaces.extensions.validator.util.ExtValUtils;
import org.apache.myfaces.extensions.validator.util.JsfUtils;
@@ -78,10 +79,10 @@
ExtValContext.getContext().addPropertyValidationInterceptor(new PropertyValidationGroupProvider());
}
+ @ToDo(Priority.HIGH)
protected void registerMetaDataTransformerNameMapper()
{
- ExtValUtils.registerValidationStrategyToMetaDataTransformerNameMapper(
- new DefaultBeanValidationStrategyToMetaDataTransformerNameMapper());
+ ExtValUtils.registerValidationStrategyToMetaDataTransformerNameMapper(new SizeNameMapper());
}
@SuppressWarnings({"unchecked"})
Copied: myfaces/extensions/validator/trunk/validation-modules/bean-validation/src/main/java/org/apache/myfaces/extensions/validator/beanval/validation/strategy/BeanValidationVirtualValidationStrategy.java (from r823312, myfaces/extensions/validator/trunk/validation-modules/bean-validation/src/main/java/org/apache/myfaces/extensions/validator/beanval/validation/strategy/BeanValidationStrategyAdapter.java)
URL: http://svn.apache.org/viewvc/myfaces/extensions/validator/trunk/validation-modules/bean-validation/src/main/java/org/apache/myfaces/extensions/validator/beanval/validation/strategy/BeanValidationVirtualValidationStrategy.java?p2=myfaces/extensions/validator/trunk/validation-modules/bean-validation/src/main/java/org/apache/myfaces/extensions/validator/beanval/validation/strategy/BeanValidationVirtualValidationStrategy.java&p1=myfaces/extensions/validator/trunk/validation-modules/bean-validation/src/main/java/org/apache/myfaces/extensions/validator/beanval/validation/strategy/BeanValidationStrategyAdapter.java&r1=823312&r2=824374&rev=824374&view=diff
==============================================================================
--- myfaces/extensions/validator/trunk/validation-modules/bean-validation/src/main/java/org/apache/myfaces/extensions/validator/beanval/validation/strategy/BeanValidationStrategyAdapter.java (original)
+++ myfaces/extensions/validator/trunk/validation-modules/bean-validation/src/main/java/org/apache/myfaces/extensions/validator/beanval/validation/strategy/BeanValidationVirtualValidationStrategy.java Mon Oct 12 15:09:13 2009
@@ -18,34 +18,37 @@
*/
package org.apache.myfaces.extensions.validator.beanval.validation.strategy;
-import org.apache.myfaces.extensions.validator.core.validation.strategy.ValidationStrategy;
-import org.apache.myfaces.extensions.validator.core.metadata.MetaDataEntry;
+import org.apache.myfaces.extensions.validator.core.validation.strategy.AbstractVirtualValidationStrategy;
-import javax.faces.context.FacesContext;
-import javax.faces.component.UIComponent;
import javax.validation.metadata.ConstraintDescriptor;
/**
* @author Gerhard Petracek
* @since x.x.3
*/
-public class BeanValidationStrategyAdapter implements ValidationStrategy
+public class BeanValidationVirtualValidationStrategy extends AbstractVirtualValidationStrategy
{
private ConstraintDescriptor constraintDescriptor;
+ private Class elementClass; //property type
- public BeanValidationStrategyAdapter(ConstraintDescriptor constraintDescriptor)
+ public BeanValidationVirtualValidationStrategy(ConstraintDescriptor constraintDescriptor, Class elementClass)
{
this.constraintDescriptor = constraintDescriptor;
+ this.elementClass = elementClass;
}
- public void validate(
- FacesContext facesContext, UIComponent uiComponent, MetaDataEntry metaDataEntry, Object convertedObject)
+ public ConstraintDescriptor getConstraintDescriptor()
{
- throw new UnsupportedOperationException("this is just an adapter for component initialization");
+ return constraintDescriptor;
}
- public ConstraintDescriptor getConstraintDescriptor()
+ public Class getElementClass()
{
- return constraintDescriptor;
+ return elementClass;
+ }
+
+ public String getId()
+ {
+ return this.constraintDescriptor.getAnnotation().annotationType().getName();
}
}