Move BeanValidatorModule into a modules package
Project: http://git-wip-us.apache.org/repos/asf/tapestry-5/repo Commit: http://git-wip-us.apache.org/repos/asf/tapestry-5/commit/fcbb5cb3 Tree: http://git-wip-us.apache.org/repos/asf/tapestry-5/tree/fcbb5cb3 Diff: http://git-wip-us.apache.org/repos/asf/tapestry-5/diff/fcbb5cb3 Branch: refs/heads/master Commit: fcbb5cb356c94add3fbf4271be985b1831a51fdf Parents: 6fc351f Author: Howard M. Lewis Ship <[email protected]> Authored: Mon Apr 22 17:15:26 2013 -0700 Committer: Howard M. Lewis Ship <[email protected]> Committed: Mon Apr 22 17:15:26 2013 -0700 ---------------------------------------------------------------------- tapestry-beanvalidator/build.gradle | 2 +- .../beanvalidator/BeanValidatorModule.java | 179 -------------- .../beanvalidator/modules/BeanValidatorModule.java | 180 +++++++++++++++ .../org/example/testapp/services/AppModule.java | 4 +- 4 files changed, 183 insertions(+), 182 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/tapestry-5/blob/fcbb5cb3/tapestry-beanvalidator/build.gradle ---------------------------------------------------------------------- diff --git a/tapestry-beanvalidator/build.gradle b/tapestry-beanvalidator/build.gradle index a72108b..53fd1e7 100644 --- a/tapestry-beanvalidator/build.gradle +++ b/tapestry-beanvalidator/build.gradle @@ -32,4 +32,4 @@ idea.module { } } -jar.manifest.attributes 'Tapestry-Module-Classes': 'org.apache.tapestry5.beanvalidator.BeanValidatorModule' +jar.manifest.attributes 'Tapestry-Module-Classes': 'org.apache.tapestry5.beanvalidator.modules.BeanValidatorModule' http://git-wip-us.apache.org/repos/asf/tapestry-5/blob/fcbb5cb3/tapestry-beanvalidator/src/main/java/org/apache/tapestry5/beanvalidator/BeanValidatorModule.java ---------------------------------------------------------------------- diff --git a/tapestry-beanvalidator/src/main/java/org/apache/tapestry5/beanvalidator/BeanValidatorModule.java b/tapestry-beanvalidator/src/main/java/org/apache/tapestry5/beanvalidator/BeanValidatorModule.java deleted file mode 100644 index 0ce98a3..0000000 --- a/tapestry-beanvalidator/src/main/java/org/apache/tapestry5/beanvalidator/BeanValidatorModule.java +++ /dev/null @@ -1,179 +0,0 @@ -// Copyright 2009, 2010, 2011, 2012 The Apache Software Foundation -// -// Licensed 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.tapestry5.beanvalidator; - -import org.apache.tapestry5.MarkupWriter; -import org.apache.tapestry5.internal.beanvalidator.*; -import org.apache.tapestry5.ioc.Configuration; -import org.apache.tapestry5.ioc.MappedConfiguration; -import org.apache.tapestry5.ioc.OrderedConfiguration; -import org.apache.tapestry5.ioc.ServiceBinder; -import org.apache.tapestry5.ioc.annotations.Local; -import org.apache.tapestry5.ioc.services.PropertyShadowBuilder; -import org.apache.tapestry5.ioc.services.ThreadLocale; -import org.apache.tapestry5.services.FieldValidatorDefaultSource; -import org.apache.tapestry5.services.javascript.DataConstants; -import org.apache.tapestry5.services.javascript.JavaScriptSupport; - -import javax.validation.MessageInterpolator; -import javax.validation.Validator; -import javax.validation.ValidatorFactory; -import javax.validation.constraints.*; -import javax.validation.groups.Default; -import java.util.Map; - -/** - * Module for JSR-303 services. - * - * @since 5.2.0.0 - */ -public class BeanValidatorModule -{ - public static void bind(final ServiceBinder binder) - { - binder.bind(FieldValidatorDefaultSource.class, BeanFieldValidatorDefaultSource.class).withSimpleId(); - binder.bind(BeanValidatorGroupSource.class, BeanValidationGroupSourceImpl.class); - binder.bind(BeanValidatorSource.class, BeanValidatorSourceImpl.class); - binder.bind(ClientConstraintDescriptorSource.class, ClientConstraintDescriptorImpl.class); - } - - public static void contributeServiceOverride( - MappedConfiguration<Class, Object> configuration, - @Local FieldValidatorDefaultSource source) - { - configuration.add(FieldValidatorDefaultSource.class, source); - } - - public static Validator buildBeanValidator(ValidatorFactory validatorFactory, PropertyShadowBuilder propertyShadowBuilder) - { - return propertyShadowBuilder.build(validatorFactory, "validator", Validator.class); - } - - - public static ValidatorFactory buildValidatorFactory(BeanValidatorSource beanValidatorSource, PropertyShadowBuilder propertyShadowBuilder) - { - return propertyShadowBuilder.build(beanValidatorSource, "validatorFactory", ValidatorFactory.class); - } - - public static void contributeBeanValidatorGroupSource( - final Configuration<Class> configuration) - { - configuration.add(Default.class); - } - - public static void contributeBeanValidatorSource( - final OrderedConfiguration<BeanValidatorConfigurer> configuration, final ThreadLocale threadLocale) - { - configuration.add("LocaleAwareMessageInterpolator", new BeanValidatorConfigurer() - { - public void configure(javax.validation.Configuration<?> configuration) - { - MessageInterpolator defaultInterpolator = configuration.getDefaultMessageInterpolator(); - - configuration.messageInterpolator(new MessageInterpolatorImpl(defaultInterpolator, threadLocale)); - } - }); - } - - public static void contributeClientConstraintDescriptorSource(final JavaScriptSupport javaScriptSupport, - final Configuration<ClientConstraintDescriptor> configuration) - { - configuration.add(new BaseCCD(Max.class, "value") - { - public void applyClientValidation(MarkupWriter writer, String message, Map<String, Object> attributes) - { - javaScriptSupport.require("t5/core/validation"); - writer.attributes( - "data-validate", true, - "data-validate-max", attributes.get("value"), - "data-max-message", message); - - } - }); - - configuration.add(new BaseCCD(Min.class, "value") - { - public void applyClientValidation(MarkupWriter writer, String message, Map<String, Object> attributes) - { - javaScriptSupport.require("t5/core/validation"); - writer.attributes( - DataConstants.VALIDATION_ATTRIBUTE, true, - "data-validate-min", attributes.get("value"), - "data-min-message", message); - - } - }); - - configuration.add(new BaseCCD(NotNull.class) - { - public void applyClientValidation(MarkupWriter writer, String message, Map<String, Object> attributes) - { - javaScriptSupport.require("t5/core/validation"); - writer.attributes( - DataConstants.VALIDATION_ATTRIBUTE, true, - "data-optionality", "required", - "data-required-message", message); - } - }); - - configuration.add(new BaseCCD(Null.class) - { - public void applyClientValidation(MarkupWriter writer, String message, Map<String, Object> attributes) - { - javaScriptSupport.require("t5/beanvalidator/validation"); - writer.attributes( - DataConstants.VALIDATION_ATTRIBUTE, true, - "data-optionality", "prohibited", - "data-prohibited-message", message); - } - }); - - configuration.add(new BaseCCD(Pattern.class, "regexp") - { - public void applyClientValidation(MarkupWriter writer, String message, Map<String, Object> attributes) - { - javaScriptSupport.require("t5/core/validation"); - writer.attributes( - DataConstants.VALIDATION_ATTRIBUTE, true, - "data-validate-regexp", attributes.get("regexp"), - "data-regexp-message", message); - } - }); - - configuration.add(new BaseCCD(Size.class, "min", "max") - { - public void applyClientValidation(MarkupWriter writer, String message, Map<String, Object> attributes) - { - javaScriptSupport.require("t5/beanvalidator/validation"); - writer.attributes( - DataConstants.VALIDATION_ATTRIBUTE, true, - "data-range-message", message); - - int min = (Integer) attributes.get("min"); - - if (min != 0) - { - writer.attributes("data-range-min", min); - } - - int max = (Integer) attributes.get("max"); - - if (max != Integer.MAX_VALUE) - { - writer.attributes("data-range-max", max); - } - } - }); - } -} http://git-wip-us.apache.org/repos/asf/tapestry-5/blob/fcbb5cb3/tapestry-beanvalidator/src/main/java/org/apache/tapestry5/beanvalidator/modules/BeanValidatorModule.java ---------------------------------------------------------------------- diff --git a/tapestry-beanvalidator/src/main/java/org/apache/tapestry5/beanvalidator/modules/BeanValidatorModule.java b/tapestry-beanvalidator/src/main/java/org/apache/tapestry5/beanvalidator/modules/BeanValidatorModule.java new file mode 100644 index 0000000..013ff59 --- /dev/null +++ b/tapestry-beanvalidator/src/main/java/org/apache/tapestry5/beanvalidator/modules/BeanValidatorModule.java @@ -0,0 +1,180 @@ +// Copyright 2009-2013 The Apache Software Foundation +// +// Licensed 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.tapestry5.beanvalidator.modules; + +import org.apache.tapestry5.MarkupWriter; +import org.apache.tapestry5.beanvalidator.*; +import org.apache.tapestry5.internal.beanvalidator.*; +import org.apache.tapestry5.ioc.Configuration; +import org.apache.tapestry5.ioc.MappedConfiguration; +import org.apache.tapestry5.ioc.OrderedConfiguration; +import org.apache.tapestry5.ioc.ServiceBinder; +import org.apache.tapestry5.ioc.annotations.Local; +import org.apache.tapestry5.ioc.services.PropertyShadowBuilder; +import org.apache.tapestry5.ioc.services.ThreadLocale; +import org.apache.tapestry5.services.FieldValidatorDefaultSource; +import org.apache.tapestry5.services.javascript.DataConstants; +import org.apache.tapestry5.services.javascript.JavaScriptSupport; + +import javax.validation.MessageInterpolator; +import javax.validation.Validator; +import javax.validation.ValidatorFactory; +import javax.validation.constraints.*; +import javax.validation.groups.Default; +import java.util.Map; + +/** + * Module for JSR-303 services. + * + * @since 5.2.0.0 + */ +public class BeanValidatorModule +{ + public static void bind(final ServiceBinder binder) + { + binder.bind(FieldValidatorDefaultSource.class, BeanFieldValidatorDefaultSource.class).withSimpleId(); + binder.bind(BeanValidatorGroupSource.class, BeanValidationGroupSourceImpl.class); + binder.bind(BeanValidatorSource.class, BeanValidatorSourceImpl.class); + binder.bind(ClientConstraintDescriptorSource.class, ClientConstraintDescriptorImpl.class); + } + + public static void contributeServiceOverride( + MappedConfiguration<Class, Object> configuration, + @Local FieldValidatorDefaultSource source) + { + configuration.add(FieldValidatorDefaultSource.class, source); + } + + public static Validator buildBeanValidator(ValidatorFactory validatorFactory, PropertyShadowBuilder propertyShadowBuilder) + { + return propertyShadowBuilder.build(validatorFactory, "validator", Validator.class); + } + + + public static ValidatorFactory buildValidatorFactory(BeanValidatorSource beanValidatorSource, PropertyShadowBuilder propertyShadowBuilder) + { + return propertyShadowBuilder.build(beanValidatorSource, "validatorFactory", ValidatorFactory.class); + } + + public static void contributeBeanValidatorGroupSource( + final Configuration<Class> configuration) + { + configuration.add(Default.class); + } + + public static void contributeBeanValidatorSource( + final OrderedConfiguration<BeanValidatorConfigurer> configuration, final ThreadLocale threadLocale) + { + configuration.add("LocaleAwareMessageInterpolator", new BeanValidatorConfigurer() + { + public void configure(javax.validation.Configuration<?> configuration) + { + MessageInterpolator defaultInterpolator = configuration.getDefaultMessageInterpolator(); + + configuration.messageInterpolator(new MessageInterpolatorImpl(defaultInterpolator, threadLocale)); + } + }); + } + + public static void contributeClientConstraintDescriptorSource(final JavaScriptSupport javaScriptSupport, + final Configuration<ClientConstraintDescriptor> configuration) + { + configuration.add(new BaseCCD(Max.class, "value") + { + public void applyClientValidation(MarkupWriter writer, String message, Map<String, Object> attributes) + { + javaScriptSupport.require("t5/core/validation"); + writer.attributes( + "data-validate", true, + "data-validate-max", attributes.get("value"), + "data-max-message", message); + + } + }); + + configuration.add(new BaseCCD(Min.class, "value") + { + public void applyClientValidation(MarkupWriter writer, String message, Map<String, Object> attributes) + { + javaScriptSupport.require("t5/core/validation"); + writer.attributes( + DataConstants.VALIDATION_ATTRIBUTE, true, + "data-validate-min", attributes.get("value"), + "data-min-message", message); + + } + }); + + configuration.add(new BaseCCD(NotNull.class) + { + public void applyClientValidation(MarkupWriter writer, String message, Map<String, Object> attributes) + { + javaScriptSupport.require("t5/core/validation"); + writer.attributes( + DataConstants.VALIDATION_ATTRIBUTE, true, + "data-optionality", "required", + "data-required-message", message); + } + }); + + configuration.add(new BaseCCD(Null.class) + { + public void applyClientValidation(MarkupWriter writer, String message, Map<String, Object> attributes) + { + javaScriptSupport.require("t5/beanvalidator/validation"); + writer.attributes( + DataConstants.VALIDATION_ATTRIBUTE, true, + "data-optionality", "prohibited", + "data-prohibited-message", message); + } + }); + + configuration.add(new BaseCCD(Pattern.class, "regexp") + { + public void applyClientValidation(MarkupWriter writer, String message, Map<String, Object> attributes) + { + javaScriptSupport.require("t5/core/validation"); + writer.attributes( + DataConstants.VALIDATION_ATTRIBUTE, true, + "data-validate-regexp", attributes.get("regexp"), + "data-regexp-message", message); + } + }); + + configuration.add(new BaseCCD(Size.class, "min", "max") + { + public void applyClientValidation(MarkupWriter writer, String message, Map<String, Object> attributes) + { + javaScriptSupport.require("t5/beanvalidator/validation"); + writer.attributes( + DataConstants.VALIDATION_ATTRIBUTE, true, + "data-range-message", message); + + int min = (Integer) attributes.get("min"); + + if (min != 0) + { + writer.attributes("data-range-min", min); + } + + int max = (Integer) attributes.get("max"); + + if (max != Integer.MAX_VALUE) + { + writer.attributes("data-range-max", max); + } + } + }); + } +} http://git-wip-us.apache.org/repos/asf/tapestry-5/blob/fcbb5cb3/tapestry-beanvalidator/src/test/java/org/example/testapp/services/AppModule.java ---------------------------------------------------------------------- diff --git a/tapestry-beanvalidator/src/test/java/org/example/testapp/services/AppModule.java b/tapestry-beanvalidator/src/test/java/org/example/testapp/services/AppModule.java index 446d217..2a4344a 100644 --- a/tapestry-beanvalidator/src/test/java/org/example/testapp/services/AppModule.java +++ b/tapestry-beanvalidator/src/test/java/org/example/testapp/services/AppModule.java @@ -1,4 +1,4 @@ -// Copyright 2009 The Apache Software Foundation +// Copyright 2009-2013 The Apache Software Foundation // // Licensed under the Apache License, Version 2.0 (the "License"); // you may not use this file except in compliance with the License. @@ -15,7 +15,7 @@ package org.example.testapp.services; import org.apache.tapestry5.SymbolConstants; import org.apache.tapestry5.beanvalidator.BeanValidatorConfigurer; -import org.apache.tapestry5.beanvalidator.BeanValidatorModule; +import org.apache.tapestry5.beanvalidator.modules.BeanValidatorModule; import org.apache.tapestry5.ioc.Configuration; import org.apache.tapestry5.ioc.MappedConfiguration; import org.apache.tapestry5.ioc.OrderedConfiguration;
