[maven-release-plugin] copy for tag 0.4
git-svn-id: http://svn.apache.org/repos/asf/bval/tags/0.4@1311457 13f79535-47bb-0310-9956-ffa450edef68
diff --git a/bval-tck/pom.xml b/bval-tck/pom.xml
index a37a474..60513fe 100644
--- a/bval-tck/pom.xml
+++ b/bval-tck/pom.xml
@@ -62,41 +62,48 @@
<skip>true</skip>
</configuration>
</plugin>
+ <plugin>
+ <groupId>org.apache.maven.plugins</groupId>
+ <artifactId>maven-javadoc-plugin</artifactId>
+ <configuration>
+ <skip>true</skip>
+ </configuration>
+ </plugin>
</plugins>
<pluginManagement>
- <plugins>
- <!--This plugin's configuration is used to store Eclipse m2e settings only. It has no influence on the Maven build itself.-->
- <plugin>
- <groupId>org.eclipse.m2e</groupId>
- <artifactId>lifecycle-mapping</artifactId>
- <version>1.0.0</version>
- <configuration>
- <lifecycleMappingMetadata>
- <pluginExecutions>
- <pluginExecution>
- <pluginExecutionFilter>
- <groupId>
- org.apache.maven.plugins
- </groupId>
- <artifactId>
- maven-dependency-plugin
- </artifactId>
- <versionRange>
- [2.1,)
- </versionRange>
- <goals>
- <goal>copy</goal>
- </goals>
- </pluginExecutionFilter>
- <action>
- <ignore />
- </action>
- </pluginExecution>
- </pluginExecutions>
- </lifecycleMappingMetadata>
- </configuration>
- </plugin>
- </plugins>
+ <plugins>
+ <!--This plugin's configuration is used to store Eclipse m2e settings only. It has no influence on the Maven build itself.-->
+ <plugin>
+ <groupId>org.eclipse.m2e</groupId>
+ <artifactId>lifecycle-mapping</artifactId>
+ <version>1.0.0</version>
+ <configuration>
+ <lifecycleMappingMetadata>
+ <pluginExecutions>
+ <pluginExecution>
+ <pluginExecutionFilter>
+ <groupId>
+ org.apache.maven.plugins
+ </groupId>
+ <artifactId>
+ maven-dependency-plugin
+ </artifactId>
+ <versionRange>
+ [2.1,)
+ </versionRange>
+ <goals>
+ <goal>copy</goal>
+ </goals>
+ </pluginExecutionFilter>
+ <action>
+ <ignore />
+ </action>
+ </pluginExecution>
+ </pluginExecutions>
+ </lifecycleMappingMetadata>
+ </configuration>
+ </plugin>
+ </plugins>
</pluginManagement>
</build>
diff --git a/pom.xml b/pom.xml
index 8dabaf8..914dbf0 100644
--- a/pom.xml
+++ b/pom.xml
@@ -385,41 +385,22 @@
</archive>
</configuration>
</plugin>
- <!--plugin>
+ <plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-javadoc-plugin</artifactId>
<configuration>
<encoding>${project.build.sourceEncoding}</encoding>
+ <additionalparam>${javadoc.additionalparam}</additionalparam>
+ <aggregate>true</aggregate>
+ <subpackages>org.apache</subpackages>
+ <verbose>false</verbose>
+ <maxmemory>512m</maxmemory>
+ <links>
+ <link>http://java.sun.com/j2se/1.5.0/docs/api</link>
+ <link>http://java.sun.com/javaee/6/docs/api</link>
+ </links>
</configuration>
- <executions>
- <execution>
- <id>attach-javadoc</id>
- <phase>package</phase>
- <goals>
- <goal>jar</goal>
- </goals>
- </execution>
- <execution>
- <phase>process-classes</phase>
- <goals>
- <goal>javadoc</goal>
- </goals>
- <configuration>
- <additionalparam>
- ${javadoc.additionalparam}
- </additionalparam>
- <aggregate>true</aggregate>
- <subpackages>org.apache</subpackages>
- <verbose>false</verbose>
- <maxmemory>512m</maxmemory>
- <links>
- <link>http://java.sun.com/j2se/1.5.0/docs/api</link>
- <link>http://java.sun.com/javaee/6/docs/api</link>
- </links>
- </configuration>
- </execution>
- </executions>
- </plugin-->
+ </plugin>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-remote-resources-plugin</artifactId>
@@ -520,12 +501,15 @@
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-release-plugin</artifactId>
+ <!-- avoid 2.2.2 due to http://jira.codehaus.org/browse/MRELEASE-742 -->
+ <version>2.2.1</version>
<configuration>
<useReleaseProfile>false</useReleaseProfile>
<goals>deploy site site-deploy</goals>
<arguments>-Papache-release</arguments>
<autoVersionSubmodules>true</autoVersionSubmodules>
<preparationGoals>clean install</preparationGoals>
+ <tagNameFormat>@{project.version}</tagNameFormat>
</configuration>
</plugin>
<plugin>
diff --git a/trunk/CHANGES.txt b/trunk/CHANGES.txt
deleted file mode 100644
index 56144d3..0000000
--- a/trunk/CHANGES.txt
+++ /dev/null
@@ -1,214 +0,0 @@
-Apache BVal (incubating) - CHANGES.txt
-Licensed under Apache License 2.0 - http://www.apache.org/licenses/LICENSE-2.0
---------------------------------------------------------------------------------
-
-Content
-=======
- * Overview
- * Disclaimer
- * Prerequisites
- * Documentation
- * Getting Involved
- * Release Notes
-
-
-Overview
-========
-This is an implementation of JSR 303 (Bean Validation), a specification of the
-Java API for Javabean validation in Java EE and Java SE.
-The technical objective is to provide a class level constraint declaration and
-validation facility for the Java application developer, as well as a constraint
-metadata repository and query API.
-
-This implementation is based on the validation framework of agimatec GmbH,
-which was contributed to the ASF under a software grant.
-
-
-Disclaimer
-==========
-Apache BVal is an effort undergoing incubation at The Apache Software
-Foundation (ASF), sponsored by the Apache Incubator PMC. Incubation is required
-of all newly accepted projects until a further review indicates that the
-infrastructure, communications, and decision making process have stabilized in a
-manner consistent with other successful ASF projects. While incubation status is
-not necessarily a reflection of the completeness or stability of the code, it
-does indicate that the project has yet to be fully endorsed by the ASF.
-
-
-Prerequisites
-=============
-You need a platform that supports Java SE 5 or later.
-
-
-Documentation
-=============
-Please refer to the project page at:
- http://incubator.apache.org/bval/
-
-
-Getting Involved
-================
-The Apache BVal project is being built by the open source community
-for the open source community - we welcome your input and contributions!
-
-What are we looking for?
- * Source code and fixes contributions
- * Documentation assistance
- * Project and feature suggestions
- * Integration and testing with other projects
- * Detailed and constructive feedback
- * Articles and whitepapers
-
-How do I Contribute?
- * To discuss BVal topics, check out the mailing lists.
- * Bugs and other issues can be posted on the project JIRA.
-
-
-Release Notes - BVal - Version 0.4
-==================================
-
-Bug
----
- * [BVAL-54] - Handle Java security policies and managers
- * [BVAL-63] - use java.util.ServiceLoader in DefaultValidationProviderResolver#getValidationProviders()
- * [BVAL-89] - Application specific constraints and artifacts not visible by provider in OSGI-based app server
- * [BVAL-90] - Inconsistent fraction handling of @Digits when target is a BigDecimal
- * [BVAL-91] - Security hole in org.apache.bval.util.MethodAccess.get()
- * [BVAL-92] - Security holes in org.apache.bval.util.PrivilegedActions
- * [BVAL-94] - Missing SVN EOL properties
- * [BVAL-95] - Beanvalidation with Generic-DataTypes
- * [BVAL-96] - Use correct encoding for localization messages
- * [BVAL-97] - More than one META-INF/validation.xml in tomcat webapp
- * [BVAL-100] - Java2 Security AccessControlException after moving to use common-lang3
- * [BVAL-104] - german validation messages properties are broken
-
-Improvement
------------
- * [BVAL-68] - Use FindBugs to reduce coding errors
-
-Task
-----
- * [BVAL-99] - upgrade to apache parent pom 10
- * [BVAL-103] - switch BVal from slf4j to java.util.logging
-
-
-Release Notes for 0.3-incubating
-================================
-
-Bug
----
- * [BVAL-84] - CNFEX org.slf4j.impl.StaticLoggerBinder building xstream and guice
- * [BVAL-86] - Missing DecimalMax/DecimalMin constraint messages in ValidationMessages.properties
- * [BVAL-87] - Java 2 security violations in ClassValidator.validate
- * [BVAL-88] - Cascaded validation adds a constraint violation for valid child property
-
-Improvement
------------
- * [BVAL-60] - Use SLF4J API for logging
- * [BVAL-85] - bval-core has no dependency on slf4j-jcl*
-
-
-Release Notes for 0.2-incubating
-================================
-
-Bug
----
- * [BVAL-47] - Correctly follow GroupSequence definitions when validating
- * [BVAL-70] - Remove @Override annotations from methods implementing interfaces
- * [BVAL-71] - Compile errors with Java SE 5
- * [BVAL-72] - NPE when doing methodvalidation
- * [BVAL-77] - Recent changes made the bval-xstream module required, instead of optional
-
-Improvement
------------
- * [BVAL-59] - Write or reuse an scm-plugin mojo to capture the svn revision
- * [BVAL-69] - make dependency to com.thoughtworks.xstream of bval-core optional or obsolete
- * [BVAL-73] - Alternative way of addressing code reuse issue between the validators
- * [BVAL-74] - Remove redundant method call from ClassValidator.validateProperty()
- * [BVAL-75] - javadocs, compiler (generics) warnings, etc.
- * [BVAL-76] - Correct spelling error in API: ConstraintValidationListener.getConstaintViolations()
- * [BVAL-78] - Avoid unsafe casting and object swapping when processing @ReportAsSingleViolation composed constraints
- * [BVAL-79] - email validation can easily work for any CharSequence rather than String only
-
-
-Release Notes for 0.1-incubating
-================================
-
-Sub-task
---------
- * [BVAL-3] - Move all copyrights to NOTICE files
- * [BVAL-4] - Rename java packages
- * [BVAL-5] - Update builds for incubator
- * [BVAL-7] - Setup initial structure/navigation/content in the wiki
- * [BVAL-8] - Setup confluence autoexport template
- * [BVAL-9] - Setup rsync cron job to copy autoexport content over to www staging area
-
-Bug
----
- * [BVAL-11] - After moved java packages tests don't work
- * [BVAL-13] - ConstraintViolationImpl must be Serialziable according to JSR303 spec
- * [BVAL-15] - @Min and @Max fail with very high values of long
- * [BVAL-17] - PathImpl keeps a null-named first node on unindexed property paths
- * [BVAL-18] - DefaultMessageInterpolator substitutes unexistant variables with the whole message
- * [BVAL-19] - Several changes to pass 12 more tests
- * [BVAL-20] - When building a MetaBean, the full tree of subclasses/interfaces must be considered
- * [BVAL-21] - ConstraintViolations set should not have duplicates and should store ElementType and use it in equals()
- * [BVAL-22] - Incorrect output or IOBException when interpolating messages when annotation values have $ or \
- * [BVAL-23] - Circular dependency check produces false positives
- * [BVAL-24] - IllegalArgumentException should be thrown when calling Validator.getConstraintsForClass() with a null class
- * [BVAL-26] - IllegalAccessException is thrown when accesing annotation values
- * [BVAL-27] - IllegalArgumentException should be thrown when calling BeanDescriptor.getConstraintsForProperty(null)
- * [BVAL-28] - Property path for nodes inside iterables that do not implement List should not contain the index
- * [BVAL-29] - Defer node creation in implementation of ConstraintViolationBuilder API
- * [BVAL-30] - Groups from the main constraint annotation must be inherited by the composing annotations
- * [BVAL-31] - A ConstraintDefinitionException should be thrown when the resolved validator is not compatible with the annotation type
- * [BVAL-32] - Annotations associated with composited contraints must reflect inherited groups
- * [BVAL-33] - Payload value must also be inherited in compositing constraints
- * [BVAL-34] - Parameter for @Pattern message should be {regexp}
- * [BVAL-35] - Improved support of @OverridesAttribute
- * [BVAL-36] - Improve @ReportAsSingleValidation implementation
- * [BVAL-37] - Ensure constraint definitions are valid
- * [BVAL-38] - Groups and payload values must be part of the ConstraintDescriptor attributes
- * [BVAL-39] - Implicit groups should be correctly set in constraint descriptors
- * [BVAL-41] - Package bval artifacts as bundles
- * [BVAL-42] - Stop group sequence validation when at least 1 violation is already reported
- * [BVAL-43] - GroupDefinitionException must be thrown on cyclic group detection
- * [BVAL-45] - ValidationException must be thrown when validating a bean with an annotated method which isn't a valid getter
- * [BVAL-48] - jUnit failure during build on Windows - trunk rev 945800
- * [BVAL-49] - ValidationException must be thrown in case ConstraintValidatorFactory returns null for a valid getInstance call
- * [BVAL-50] - Fix TraversableResolver usage
- * [BVAL-51] - Several fixes in ElementDescriptor and subinterfaces impls
- * [BVAL-53] - Several fixes for XML metadata processing impl
- * [BVAL-55] - Fix remaining TCK tests
- * [BVAL-58] - Clean up build before release
- * [BVAL-62] - add missing ASL headers
- * [BVAL-64] - org.apache.bval.bundle needs a custom NOTICE file
- * [BVAL-65] - Incubator required DISCLAIMER missing from jars
- * [BVAL-67] - Resolve NOTICE file issues fond during RC2 vote
-
-Improvement
------------
- * [BVAL-12] - Current implementation of method validation (appendix C of JSR-303) doesn't work with some constraints
- * [BVAL-16] - Maven project to launch TCK suite
- * [BVAL-44] - Move optional JSON code out of bval-core to a bval-json module
- * [BVAL-46] - Create project source assembly
- * [BVAL-52] - ValidationParser.getInputStream() should call getResourceAsStream() for TCK suite to work
- * [BVAL-57] - Create a single apache-bval jar/bundle
- * [BVAL-66] - Method validation parameter processing problems
-
-New Feature
------------
- * [BVAL-40] - Provide a way to display the BVal version being used
- * [BVAL-56] - make bval work with geronimo spec osgi service locator
-
-Task
-----
- * [BVAL-2] - Initial codebase donation tasks
- * [BVAL-6] - Setup project website
-
-Test
-----
- * [BVAL-10] - Setup continuous builds
-
---------------------------------------------------------------------------------
-
diff --git a/trunk/LICENSE b/trunk/LICENSE
deleted file mode 100644
index 6b0b127..0000000
--- a/trunk/LICENSE
+++ /dev/null
@@ -1,203 +0,0 @@
-
- Apache License
- Version 2.0, January 2004
- http://www.apache.org/licenses/
-
- TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION
-
- 1. Definitions.
-
- "License" shall mean the terms and conditions for use, reproduction,
- and distribution as defined by Sections 1 through 9 of this document.
-
- "Licensor" shall mean the copyright owner or entity authorized by
- the copyright owner that is granting the License.
-
- "Legal Entity" shall mean the union of the acting entity and all
- other entities that control, are controlled by, or are under common
- control with that entity. For the purposes of this definition,
- "control" means (i) the power, direct or indirect, to cause the
- direction or management of such entity, whether by contract or
- otherwise, or (ii) ownership of fifty percent (50%) or more of the
- outstanding shares, or (iii) beneficial ownership of such entity.
-
- "You" (or "Your") shall mean an individual or Legal Entity
- exercising permissions granted by this License.
-
- "Source" form shall mean the preferred form for making modifications,
- including but not limited to software source code, documentation
- source, and configuration files.
-
- "Object" form shall mean any form resulting from mechanical
- transformation or translation of a Source form, including but
- not limited to compiled object code, generated documentation,
- and conversions to other media types.
-
- "Work" shall mean the work of authorship, whether in Source or
- Object form, made available under the License, as indicated by a
- copyright notice that is included in or attached to the work
- (an example is provided in the Appendix below).
-
- "Derivative Works" shall mean any work, whether in Source or Object
- form, that is based on (or derived from) the Work and for which the
- editorial revisions, annotations, elaborations, or other modifications
- represent, as a whole, an original work of authorship. For the purposes
- of this License, Derivative Works shall not include works that remain
- separable from, or merely link (or bind by name) to the interfaces of,
- the Work and Derivative Works thereof.
-
- "Contribution" shall mean any work of authorship, including
- the original version of the Work and any modifications or additions
- to that Work or Derivative Works thereof, that is intentionally
- submitted to Licensor for inclusion in the Work by the copyright owner
- or by an individual or Legal Entity authorized to submit on behalf of
- the copyright owner. For the purposes of this definition, "submitted"
- means any form of electronic, verbal, or written communication sent
- to the Licensor or its representatives, including but not limited to
- communication on electronic mailing lists, source code control systems,
- and issue tracking systems that are managed by, or on behalf of, the
- Licensor for the purpose of discussing and improving the Work, but
- excluding communication that is conspicuously marked or otherwise
- designated in writing by the copyright owner as "Not a Contribution."
-
- "Contributor" shall mean Licensor and any individual or Legal Entity
- on behalf of whom a Contribution has been received by Licensor and
- subsequently incorporated within the Work.
-
- 2. Grant of Copyright License. Subject to the terms and conditions of
- this License, each Contributor hereby grants to You a perpetual,
- worldwide, non-exclusive, no-charge, royalty-free, irrevocable
- copyright license to reproduce, prepare Derivative Works of,
- publicly display, publicly perform, sublicense, and distribute the
- Work and such Derivative Works in Source or Object form.
-
- 3. Grant of Patent License. Subject to the terms and conditions of
- this License, each Contributor hereby grants to You a perpetual,
- worldwide, non-exclusive, no-charge, royalty-free, irrevocable
- (except as stated in this section) patent license to make, have made,
- use, offer to sell, sell, import, and otherwise transfer the Work,
- where such license applies only to those patent claims licensable
- by such Contributor that are necessarily infringed by their
- Contribution(s) alone or by combination of their Contribution(s)
- with the Work to which such Contribution(s) was submitted. If You
- institute patent litigation against any entity (including a
- cross-claim or counterclaim in a lawsuit) alleging that the Work
- or a Contribution incorporated within the Work constitutes direct
- or contributory patent infringement, then any patent licenses
- granted to You under this License for that Work shall terminate
- as of the date such litigation is filed.
-
- 4. Redistribution. You may reproduce and distribute copies of the
- Work or Derivative Works thereof in any medium, with or without
- modifications, and in Source or Object form, provided that You
- meet the following conditions:
-
- (a) You must give any other recipients of the Work or
- Derivative Works a copy of this License; and
-
- (b) You must cause any modified files to carry prominent notices
- stating that You changed the files; and
-
- (c) You must retain, in the Source form of any Derivative Works
- that You distribute, all copyright, patent, trademark, and
- attribution notices from the Source form of the Work,
- excluding those notices that do not pertain to any part of
- the Derivative Works; and
-
- (d) If the Work includes a "NOTICE" text file as part of its
- distribution, then any Derivative Works that You distribute must
- include a readable copy of the attribution notices contained
- within such NOTICE file, excluding those notices that do not
- pertain to any part of the Derivative Works, in at least one
- of the following places: within a NOTICE text file distributed
- as part of the Derivative Works; within the Source form or
- documentation, if provided along with the Derivative Works; or,
- within a display generated by the Derivative Works, if and
- wherever such third-party notices normally appear. The contents
- of the NOTICE file are for informational purposes only and
- do not modify the License. You may add Your own attribution
- notices within Derivative Works that You distribute, alongside
- or as an addendum to the NOTICE text from the Work, provided
- that such additional attribution notices cannot be construed
- as modifying the License.
-
- You may add Your own copyright statement to Your modifications and
- may provide additional or different license terms and conditions
- for use, reproduction, or distribution of Your modifications, or
- for any such Derivative Works as a whole, provided Your use,
- reproduction, and distribution of the Work otherwise complies with
- the conditions stated in this License.
-
- 5. Submission of Contributions. Unless You explicitly state otherwise,
- any Contribution intentionally submitted for inclusion in the Work
- by You to the Licensor shall be under the terms and conditions of
- this License, without any additional terms or conditions.
- Notwithstanding the above, nothing herein shall supersede or modify
- the terms of any separate license agreement you may have executed
- with Licensor regarding such Contributions.
-
- 6. Trademarks. This License does not grant permission to use the trade
- names, trademarks, service marks, or product names of the Licensor,
- except as required for reasonable and customary use in describing the
- origin of the Work and reproducing the content of the NOTICE file.
-
- 7. Disclaimer of Warranty. Unless required by applicable law or
- agreed to in writing, Licensor provides the Work (and each
- Contributor provides its Contributions) on an "AS IS" BASIS,
- WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
- implied, including, without limitation, any warranties or conditions
- of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A
- PARTICULAR PURPOSE. You are solely responsible for determining the
- appropriateness of using or redistributing the Work and assume any
- risks associated with Your exercise of permissions under this License.
-
- 8. Limitation of Liability. In no event and under no legal theory,
- whether in tort (including negligence), contract, or otherwise,
- unless required by applicable law (such as deliberate and grossly
- negligent acts) or agreed to in writing, shall any Contributor be
- liable to You for damages, including any direct, indirect, special,
- incidental, or consequential damages of any character arising as a
- result of this License or out of the use or inability to use the
- Work (including but not limited to damages for loss of goodwill,
- work stoppage, computer failure or malfunction, or any and all
- other commercial damages or losses), even if such Contributor
- has been advised of the possibility of such damages.
-
- 9. Accepting Warranty or Additional Liability. While redistributing
- the Work or Derivative Works thereof, You may choose to offer,
- and charge a fee for, acceptance of support, warranty, indemnity,
- or other liability obligations and/or rights consistent with this
- License. However, in accepting such obligations, You may act only
- on Your own behalf and on Your sole responsibility, not on behalf
- of any other Contributor, and only if You agree to indemnify,
- defend, and hold each Contributor harmless for any liability
- incurred by, or claims asserted against, such Contributor by reason
- of your accepting any such warranty or additional liability.
-
- END OF TERMS AND CONDITIONS
-
- APPENDIX: How to apply the Apache License to your work.
-
- To apply the Apache License to your work, attach the following
- boilerplate notice, with the fields enclosed by brackets "[]"
- replaced with your own identifying information. (Don't include
- the brackets!) The text should be enclosed in the appropriate
- comment syntax for the file format. We also recommend that a
- file or class name and description of purpose be included on the
- same "printed page" as the copyright notice for easier
- identification within third-party archives.
-
- Copyright [yyyy] [name of copyright owner]
-
- 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.
-
diff --git a/trunk/NOTICE b/trunk/NOTICE
deleted file mode 100644
index 28b288f..0000000
--- a/trunk/NOTICE
+++ /dev/null
@@ -1,14 +0,0 @@
-
-Apache Incubator - BVal project
-Copyright 2010-2012 The Apache Software Foundation.
-
-This product includes software developed by
-The Apache Software Foundation (http://www.apache.org/).
-
-
-The following copyright notice(s) were affixed to portions of this code
-with which this file is now or was at one time distributed.
-
-This product includes software developed by Agimatec GmbH.
-Copyright 2007-2010 Agimatec GmbH. All rights reserved.
-
diff --git a/trunk/README.txt b/trunk/README.txt
deleted file mode 100644
index 5047689..0000000
--- a/trunk/README.txt
+++ /dev/null
@@ -1,66 +0,0 @@
-Apache BVal - README.txt
-Licensed under Apache License 2.0 - http://www.apache.org/licenses/LICENSE-2.0
---------------------------------------------------------------------------------
-
-About
-=====
-This is an implementation of JSR 303 (Bean Validation), a specification of the
-Java API for Javabean validation in Java EE and Java SE.
-The technical objective is to provide a class level constraint declaration and
-validation facility for the Java application developer, as well as a constraint
-metadata repository and query API.
-
-
-Release Notes
-=============
-Please refer to the included CHANGES.txt for a complete list of new features
-available and issues resolved in this release.
-
-
-Getting Started
-===============
-Please visit the project website for the latest information:
- http://bval.apache.org/
-
-Along with the developer mailing list archive:
- http://mail-archives.apache.org/mod_mbox/bval-dev/
-
-
-System Requirements
-===================
-You need a platform that supports Java SE 5 or later.
-Most testing has been done with Java SE 6 on Mac OS X, Windows and Linux.
-
-
-Building
-==========================
-To build from source code:
- - Sources require Java SE 5 or higher. (Tested with JDK 1.5.0_22 and 1.6.0_21)
- - The project is built with Apache Maven (suggested is at least 2.2.1).
- You need to download and install Maven from: http://maven.apache.org/
- - Invoke maven in the root directory or a module subdirectory:
- mvn install
-
-Checkout the Building section on the project web site for more details:
- http://bval.apache.org/
-
-
-Support
-=======
-Any problems with this release can be reported to the user mailing list or
-opened in the Jira issue tracker.
-
- Mailing list archive:
- http://mail-archives.apache.org/mod_mbox/bval-user/
-
- User mailing list:
- user@bval.apache.org
-
- User mailing list subscription:
- user-subscribe@bval.apache.org
-
- Jira:
- https://issues.apache.org/jira/browse/BVAL/
-
---------------------------------------------------------------------------------
-
diff --git a/trunk/bundle/pom.xml b/trunk/bundle/pom.xml
deleted file mode 100644
index dd7a55b..0000000
--- a/trunk/bundle/pom.xml
+++ /dev/null
@@ -1,114 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!--
- 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.
--->
-<!--
- Maven release plugin requires the project tag to be on a single line.
--->
-<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
-
- <modelVersion>4.0.0</modelVersion>
-
- <parent>
- <groupId>org.apache.bval</groupId>
- <artifactId>bval-parent</artifactId>
- <version>0.4</version>
- </parent>
-
- <!-- use fully qualified naming for OSGi bundles -->
- <artifactId>org.apache.bval.bundle</artifactId>
- <name>Apache BVal :: org.apache.bval.bundle</name>
- <packaging>bundle</packaging>
-
- <description>Apache BVal - Aggregate OSGi Bundle (bval-core + bval-jsr303)</description>
-
- <dependencies>
- <!-- JARs to include in aggregate JAR via maven-shade-plugin -->
- <dependency>
- <groupId>org.apache.bval</groupId>
- <artifactId>bval-core</artifactId>
- <version>${project.version}</version>
- </dependency>
- <dependency>
- <groupId>org.apache.bval</groupId>
- <artifactId>bval-jsr303</artifactId>
- <version>${project.version}</version>
- </dependency>
- </dependencies>
-
- <build>
- <plugins>
- <plugin>
- <groupId>org.apache.felix</groupId>
- <artifactId>maven-bundle-plugin</artifactId>
- <extensions>true</extensions>
- <configuration>
- <instructions>
- <!-- OSGi Bundle Metadata -->
- <Main-Class>org.apache.bval.util.BValVersion</Main-Class>
- <Implementation-Title>Apache BVal</Implementation-Title>
- <Implementation-Build>${buildNumber}</Implementation-Build>
- <Specification-Title>JSR-303 Bean Validation</Specification-Title>
- <Specification-Vendor>Sun Microsystems, Inc.</Specification-Vendor>
- <Specification-Version>1.0</Specification-Version>
- <Bundle-DocURL>${project.url}</Bundle-DocURL>
- <Embed-Dependency>*;inline=true</Embed-Dependency>
- <Private-Package />
- <Export-Package>org.apache.bval.*</Export-Package>
- <Import-Package>javax.persistence.*;resolution:=optional,org.apache.bval.xml.*;resolution:=optional,*</Import-Package>
- <!-- geronimo spec osgi services support -->
- <SPI-Provider>true</SPI-Provider>
- </instructions>
- </configuration>
- </plugin>
- <plugin>
- <groupId>org.codehaus.mojo</groupId>
- <artifactId>findbugs-maven-plugin</artifactId>
- <configuration>
- <skip>true</skip>
- </configuration>
- </plugin>
- </plugins>
- </build>
-
- <profiles>
- <profile>
- <id>apache-release</id>
- <build>
- <plugins>
- <plugin>
- <groupId>org.apache.maven.plugins</groupId>
- <artifactId>maven-javadoc-plugin</artifactId>
- <configuration>
- <skip>true</skip>
- </configuration>
- </plugin>
- <plugin>
- <groupId>org.apache.maven.plugins</groupId>
- <artifactId>maven-source-plugin</artifactId>
- <configuration>
- <attach>false</attach>
- </configuration>
- </plugin>
- </plugins>
- </build>
- </profile>
- </profiles>
-
-</project>
-
diff --git a/trunk/bundle/src/main/appended-resources/META-INF/NOTICE.vm b/trunk/bundle/src/main/appended-resources/META-INF/NOTICE.vm
deleted file mode 100644
index 05ddae6..0000000
--- a/trunk/bundle/src/main/appended-resources/META-INF/NOTICE.vm
+++ /dev/null
@@ -1,26 +0,0 @@
-##
-## 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.
-##
-
-
-The following copyright notice(s) were affixed to portions of this code
-with which this file is now or was at one time distributed.
-
-This product includes software developed by agimatec GmbH.
-Copyright 2007-2010 Agimatec GmbH. All rights reserved.
-
diff --git a/trunk/bval-core/pom.xml b/trunk/bval-core/pom.xml
deleted file mode 100644
index 5251d67..0000000
--- a/trunk/bval-core/pom.xml
+++ /dev/null
@@ -1,159 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!--
- 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.
--->
-<!--
- Maven release plugin requires the project tag to be on a single line.
--->
-<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
-
- <modelVersion>4.0.0</modelVersion>
-
- <parent>
- <groupId>org.apache.bval</groupId>
- <artifactId>bval-parent</artifactId>
- <version>0.4</version>
- </parent>
-
- <artifactId>bval-core</artifactId>
- <name>Apache BVal :: bval-core</name>
- <packaging>jar</packaging>
-
- <description>BVal Metadata Engine</description>
-
- <dependencies>
- <dependency>
- <groupId>org.apache.commons</groupId>
- <artifactId>commons-lang3</artifactId>
- </dependency>
- <dependency>
- <groupId>commons-beanutils</groupId>
- <artifactId>commons-beanutils-core</artifactId>
- </dependency>
- <dependency>
- <groupId>junit</groupId>
- <artifactId>junit</artifactId>
- <scope>test</scope>
- </dependency>
- </dependencies>
-
- <build>
- <plugins>
- <!--
- get the svn revision number and project version
- and set it in a properties file for later retrieval
- -->
- <plugin>
- <groupId>org.apache.maven.plugins</groupId>
- <artifactId>maven-antrun-plugin</artifactId>
- <executions>
- <execution>
- <id>set subversion revision</id>
- <phase>compile</phase>
- <configuration>
- <tasks>
- <echo>Version: ${project.version}</echo>
- <echo>Revision: ${buildNumber}</echo>
- <echo>Date: ${timestamp}</echo>
- <mkdir dir="${project.build.outputDirectory}/META-INF" />
- <echo file="${project.build.outputDirectory}/META-INF/org.apache.bval.revision.properties">
-# Licensed under Apache License 2.0 - http://www.apache.org/licenses/LICENSE-2.0
-project.name=Apache BVal
-project.version=${project.version}
-svn.revision=${buildNumber}
-svn.branch=${scmBranch}
-build.timestamp=${timestamp}
- </echo>
- </tasks>
- </configuration>
- <goals>
- <goal>run</goal>
- </goals>
- </execution>
- </executions>
- </plugin>
-
- <!-- create mainClass attribute -->
- <plugin>
- <groupId>org.apache.maven.plugins</groupId>
- <artifactId>maven-jar-plugin</artifactId>
- <executions>
- <execution>
- <id>default-jar</id>
- <goals>
- <goal>jar</goal>
- </goals>
- <configuration>
- <archive>
- <manifest>
- <addDefaultImplementationEntries>true</addDefaultImplementationEntries>
- <mainClass>org.apache.bval.util.BValVersion</mainClass>
- </manifest>
- <manifestEntries>
- <Implementation-Build>${buildNumber}</Implementation-Build>
- </manifestEntries>
- </archive>
- </configuration>
- </execution>
- <execution>
- <id>attach-tests</id>
- <goals>
- <goal>test-jar</goal>
- </goals>
- </execution>
- </executions>
- </plugin>
- </plugins>
- <pluginManagement>
- <plugins>
- <!--This plugin's configuration is used to store Eclipse m2e settings only. It has no influence on the Maven build itself.-->
- <plugin>
- <groupId>org.eclipse.m2e</groupId>
- <artifactId>lifecycle-mapping</artifactId>
- <version>1.0.0</version>
- <configuration>
- <lifecycleMappingMetadata>
- <pluginExecutions>
- <pluginExecution>
- <pluginExecutionFilter>
- <groupId>
- org.apache.maven.plugins
- </groupId>
- <artifactId>
- maven-antrun-plugin
- </artifactId>
- <versionRange>
- [1.3,)
- </versionRange>
- <goals>
- <goal>run</goal>
- </goals>
- </pluginExecutionFilter>
- <action>
- <ignore />
- </action>
- </pluginExecution>
- </pluginExecutions>
- </lifecycleMappingMetadata>
- </configuration>
- </plugin>
- </plugins>
- </pluginManagement>
- </build>
-</project>
-
diff --git a/trunk/bval-core/src/main/appended-resources/META-INF/NOTICE.vm b/trunk/bval-core/src/main/appended-resources/META-INF/NOTICE.vm
deleted file mode 100644
index 9a0c1ee..0000000
--- a/trunk/bval-core/src/main/appended-resources/META-INF/NOTICE.vm
+++ /dev/null
@@ -1,25 +0,0 @@
-##
-## 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.
-##
-
-The following copyright notice(s) were affixed to portions of this code
-with which this file is now or was at one time distributed.
-
-This product includes software developed by agimatec GmbH.
-Copyright 2007-2010 Agimatec GmbH. All rights reserved.
-
diff --git a/trunk/bval-core/src/main/java/org/apache/bval/BeanValidationContext.java b/trunk/bval-core/src/main/java/org/apache/bval/BeanValidationContext.java
deleted file mode 100644
index b9b8373..0000000
--- a/trunk/bval-core/src/main/java/org/apache/bval/BeanValidationContext.java
+++ /dev/null
@@ -1,331 +0,0 @@
-/*
- * 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.bval;
-
-import org.apache.bval.model.*;
-import org.apache.bval.util.AccessStrategy;
-import org.apache.bval.util.PropertyAccess;
-
-import java.util.IdentityHashMap;
-import java.util.Map;
-
-/**
- * Description: Context during validation to help the {@link org.apache.bval.model.Validation}
- * and the {@link BeanValidator} do their jobs.
- * Used to bundle {@link BeanValidationContext} and {@link ValidationListener}
- * together <br/>
- * <b>This class is NOT thread-safe: a new instance will be created for each
- * validation
- * processing per thread.<br/></b>
- */
-public class BeanValidationContext<T extends ValidationListener>
- implements ValidationContext<T> {
- /** represent an unknown propertyValue. */
- private static final Object UNKNOWN = new Object() {
- public String toString() {
- return "unknown property value";
- };
- };
-
- /** metainfo of current object. */
- private MetaBean metaBean;
- /** current object. */
- private Object bean;
- /** metainfo of current property. */
- private MetaProperty metaProperty;
- /**
- * cached value of current property.
- * Cached because of potential redundant access for different Validations
- */
- private Object propertyValue = UNKNOWN;
-
- /** access strategy used for previous access */
- private AccessStrategy access;
-
- /** set of objects already validated to avoid endless loops. */
- @SuppressWarnings({ "rawtypes" })
- protected Map validatedObjects;
-
- /**
- * true when value is fixed, so that it will NOT be dynamically
- * determined from the annotated element or the metaProperty.
- * <b><br>Note: When value is UNKNOWN, it will be determined THE FIRST TIME
- * IT IS ACCESSED.</b>
- */
- private boolean fixed;
-
- /** listener notified of validation constraint violations. */
- private T listener;
-
- /**
- * Create a new BeanValidationContext instance.
- * @param listener
- */
- @SuppressWarnings({ "rawtypes" })
- public BeanValidationContext(T listener) {
- this(listener, new IdentityHashMap());
- }
-
- /**
- * Create a new BeanValidationContext instance.
- * @param listener
- * @param validatedMap
- */
- @SuppressWarnings({ "rawtypes" })
- protected BeanValidationContext(T listener, Map validatedMap) {
- this.listener = listener;
- this.validatedObjects = validatedMap;
- }
-
- /**
- * {@inheritDoc}
- */
- public T getListener() {
- return listener;
- }
-
- /**
- * Set the listener.
- * @param listener T
- */
- public void setListener(T listener) {
- this.listener = listener;
- }
-
- /**
- * {@inheritDoc}
- * Here, state equates to a given bean reference.
- */
- @SuppressWarnings("unchecked")
- public boolean collectValidated() {
- return validatedObjects.put(getBean(), Boolean.TRUE) == null;
- }
-
- /**
- * Learn whether a particular object has been validated.
- * @param object
- * @return true when the object has already been validated in this context
- */
- public boolean isValidated(Object object) {
- return validatedObjects.containsKey(object);
- }
-
- /**
- * Clear map of validated objects (invoke when you want to 'reuse' the
- * context for different validations)
- */
- public void resetValidated() {
- validatedObjects.clear();
- }
-
- /**
- * {@inheritDoc}
- */
- public void setBean(Object aBean, MetaBean aMetaBean) {
- bean = aBean;
- metaBean = aMetaBean;
- metaProperty = null;
- unknownValue();
- }
-
- /**
- * Get the cached value or access it somehow (via field or method)<br>
- * <b>you should prefer getPropertyValue(AccessStrategy) instead of this method</b>
- *
- * @return the current value of the property accessed by reflection
- * @throws IllegalArgumentException - error accessing attribute (config error, reflection problem)
- * @throws IllegalStateException - when no property is currently set in the context (application logic bug)
- */
- public Object getPropertyValue() {
- if (access == null) { // undefined access strategy
- return getPropertyValue(
- new PropertyAccess(bean.getClass(), metaProperty.getName()));
- } else {
- return getPropertyValue(access);
- }
- }
-
- /**
- * {@inheritDoc}
- * Caches retrieved value.
- */
- public Object getPropertyValue(AccessStrategy access)
- throws IllegalArgumentException, IllegalStateException {
- if (propertyValue == UNKNOWN || (this.access != access && !fixed)) {
- propertyValue = access.get(bean);
- this.access = access;
- }
- return propertyValue;
- }
-
- /**
- * Convenience method to access metaProperty.name
- *
- * @return null or the name of the current property
- */
- public String getPropertyName() {
- return metaProperty == null ? null : metaProperty.getName();
- }
-
- /**
- * Set the current property value.
- * @param propertyValue
- */
- public void setPropertyValue(Object propertyValue) {
- this.propertyValue = propertyValue;
- }
-
- /**
- * Set the property value, fixed.
- * @param value
- */
- public void setFixedValue(Object value) {
- setPropertyValue(value);
- setFixed(true);
- }
-
- /**
- * Learn whether the current property value is "fixed."
- * @return boolean
- */
- public boolean isFixed() {
- return fixed;
- }
-
- /**
- * Potentially declare the current property value as being "fixed."
- * If <code>true</code>, the context will reuse any not-<code>UNKNOWN</code>
- * propertyValue regardless of the {@link AccessStrategy} by which it is requested.
- * @param fixed
- */
- public void setFixed(boolean fixed) {
- this.fixed = fixed;
- }
-
- /**
- * Depending on whether we have a metaProperty or not,
- * this returns the metaProperty or otherwise the metaBean.
- * This is used to have a simple way to request features
- * in the Validation for both bean- and property-level validations.
- *
- * @return something that is capable to deliver features
- */
- public FeaturesCapable getMeta() {
- return (metaProperty == null) ? metaBean : metaProperty;
- }
-
- /**
- * Drop cached value, marking the internal cachedValue as <code>UNKNOWN</code>.
- * This forces the BeanValidationContext to recompute the value
- * the next time it is accessed.
- * Use this method inside tests or when the propertyValue has been
- * changed during validation.
- */
- public void unknownValue() {
- propertyValue = UNKNOWN;
- access = null;
- fixed = false;
- }
-
- /**
- * {@inheritDoc}
- */
- public MetaBean getMetaBean() {
- return metaBean;
- }
-
- /**
- * {@inheritDoc}
- */
- public Object getBean() {
- return bean;
- }
-
- /**
- * {@inheritDoc}
- */
- public MetaProperty getMetaProperty() {
- return metaProperty;
- }
-
- /**
- * {@inheritDoc}
- */
- public void setMetaBean(MetaBean metaBean) {
- this.metaBean = metaBean;
- }
-
- /**
- * {@inheritDoc}
- */
- public void setBean(Object bean) {
- this.bean = bean;
- unknownValue();
- }
-
- /**
- * {@inheritDoc}
- */
- public void setMetaProperty(MetaProperty metaProperty) {
- this.metaProperty = metaProperty;
- unknownValue();
- }
-
- /**
- * {@inheritDoc}
- */
- public String toString() {
- return "BeanValidationContext{ bean=" + bean + ", metaProperty=" + metaProperty +
- ", propertyValue=" + propertyValue + '}';
- }
-
- /**
- * {@inheritDoc}
- */
- public void moveDown(MetaProperty prop, AccessStrategy access) {
- setBean(getPropertyValue(access), prop.getMetaBean());
- }
-
- /**
- * {@inheritDoc}
- */
- public void moveUp(Object bean, MetaBean aMetaBean) {
- setBean(bean, aMetaBean); // reset context state
- }
-
- /**
- * {@inheritDoc}
- */
- public void setCurrentIndex(Integer index) {
- // do nothing
- }
-
- /**
- * {@inheritDoc}
- */
- public void setCurrentKey(Object key) {
- // do nothing
- }
-
- /**
- * {@inheritDoc}
- */
- public AccessStrategy getAccess() {
- return this.access;
- }
-
-}
diff --git a/trunk/bval-core/src/main/java/org/apache/bval/BeanValidator.java b/trunk/bval-core/src/main/java/org/apache/bval/BeanValidator.java
deleted file mode 100644
index 175e657..0000000
--- a/trunk/bval-core/src/main/java/org/apache/bval/BeanValidator.java
+++ /dev/null
@@ -1,280 +0,0 @@
-/*
- * 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.bval;
-
-import java.lang.annotation.Annotation;
-import java.lang.reflect.Method;
-import java.util.Collection;
-
-import org.apache.bval.model.Features;
-import org.apache.bval.model.MetaBean;
-import org.apache.bval.model.MetaProperty;
-import org.apache.bval.model.ValidationContext;
-import org.apache.bval.model.ValidationListener;
-import org.apache.bval.util.AccessStrategy;
-import org.apache.bval.util.PropertyAccess;
-import org.apache.bval.util.ValidationHelper;
-
-// TODO: centralize treatMapsLikeBeans
-
-/**
- * Description: Top-Level API-class to validate objects or object-trees. You can
- * invoke, extend or utilize this class if you need other ways to integrate
- * validation in your application.
- * <p/>
- * This class supports cyclic object graphs by keeping track of validated
- * instances in the validation context.<br/>
- */
-public class BeanValidator<T extends ValidationListener> {
- private final MetaBeanFinder metaBeanFinder;
-
- /**
- * Create a new BeanValidator instance. Convenience constructor. Use the
- * global instance of MetaBeanManagerFactory.getFinder().
- */
- public BeanValidator() {
- this(MetaBeanManagerFactory.getFinder());
- }
-
- /**
- * Create a new BeanValidator instance.
- *
- * @param metaBeanFinder
- */
- public BeanValidator(MetaBeanFinder metaBeanFinder) {
- this.metaBeanFinder = metaBeanFinder;
- }
-
- /**
- * Convenience API. validate a root object with all related objects with its
- * default metaBean definition.
- *
- * @param bean
- * @return results - validation results found
- */
- public T validate(Object bean) {
- MetaBean metaBean = getMetaBeanFinder().findForClass(bean.getClass());
- return validate(bean, metaBean);
- }
-
- /**
- * Convenience API. validate a root object with all related objects
- * according to the metaBean.
- *
- * @param bean
- * - a single bean or a collection of beans (that share the same
- * metaBean!)
- * @param metaBean
- * @return results - validation results found
- */
- public T validate(Object bean, MetaBean metaBean) {
- ValidationContext<T> context = createContext();
- context.setBean(bean, metaBean);
- ValidationHelper.validateContext(context, new BeanValidatorCallback(context), treatMapsLikeBeans);
- return context.getListener();
- }
-
- /**
- * Validate the method parameters based on @Validate annotations.
- * Requirements: Parameter, that are to be validated must be annotated with @Validate
- *
- * @param method
- * - a method
- * @param parameters
- * - the parameters suitable to the method
- * @return a validation result or null when there was nothing to validate
- * @see Validate
- */
- public T validateCall(Method method, Object[] parameters) {
- if (parameters.length > 0) {
- // shortcut (for performance!)
- Annotation[][] annotations = method.getParameterAnnotations();
- ValidationContext<T> context = null;
- for (int i = 0; i < parameters.length; i++) {
- for (Annotation anno : annotations[i]) {
- if (anno instanceof Validate) {
- if (context == null)
- context = createContext();
- if (determineMetaBean((Validate) anno, parameters[i], context)) {
- ValidationHelper.validateContext(context, new BeanValidatorCallback(context),
- treatMapsLikeBeans);
- break; // next parameter
- }
- }
- }
- }
- return context != null ? context.getListener() : null;
- }
- return null;
- }
-
- /**
- * Determine the metabean for the given object.
- *
- * @param <VL>
- * @param validate
- * @param parameter
- * @param context
- * @return true when validation should happen, false to skip it
- */
- protected <VL extends ValidationListener> boolean determineMetaBean(Validate validate, Object parameter,
- ValidationContext<VL> context) {
- if (validate.value().length() == 0) {
- if (parameter == null)
- return false;
- Class<?> beanClass;
- if (parameter instanceof Collection<?>) { // do not validate empty
- // collection
- Collection<?> coll = ((Collection<?>) parameter);
- if (coll.isEmpty())
- return false;
- beanClass = coll.iterator().next().getClass(); // get first
- // object
- } else if (parameter.getClass().isArray()) {
- beanClass = parameter.getClass().getComponentType();
- } else {
- beanClass = parameter.getClass();
- }
- context.setBean(parameter, getMetaBeanFinder().findForClass(beanClass));
- } else {
- context.setBean(parameter, getMetaBeanFinder().findForId(validate.value()));
- }
- return true;
- }
-
- /**
- * factory method - overwrite in subclasses
- *
- * @return ValidationListener of the proper type
- */
- @SuppressWarnings("unchecked")
- protected T createResults() {
- return (T) new ValidationResults();
- }
-
- /**
- * factory method - overwrite in subclasses
- *
- * @return ValidationContext parameterized with our listener type
- */
- protected ValidationContext<T> createContext() {
- return new BeanValidationContext<T>(createResults());
- }
-
- /**
- * Convenience API. validate a single property.
- *
- * @param bean
- * - the root object
- * @param metaProperty
- * - metadata for the property
- * @return validation results
- */
- public T validateProperty(Object bean, MetaProperty metaProperty) {
- ValidationContext<T> context = createContext();
- context.setBean(bean);
- context.setMetaProperty(metaProperty);
- ValidationHelper.validateProperty(context);
- return context.getListener();
- }
-
- /**
- * {@inheritDoc} internal validate a bean (=not a collection of beans) and
- * its related beans
- */
- protected <VL extends ValidationListener> void validateBeanNet(ValidationContext<VL> context) {
- if (context.collectValidated()) {
- ValidationHelper.validateBean(context);
- for (MetaProperty prop : context.getMetaBean().getProperties()) {
- validateRelatedBean(context, prop);
- }
- }
- }
-
- /**
- * Validate a property of a graph.
- *
- * @param <VL>
- * @param context
- * @param prop
- */
- protected <VL extends ValidationListener> void validateRelatedBean(ValidationContext<VL> context, MetaProperty prop) {
- AccessStrategy[] access = prop.getFeature(Features.Property.REF_CASCADE);
- if (access == null && prop.getMetaBean() != null) { // single property
- // access strategy
- // save old values from context
- final Object bean = context.getBean();
- final MetaBean mbean = context.getMetaBean();
- // modify context state for relationship-target bean
- context.moveDown(prop, new PropertyAccess(bean.getClass(), prop.getName()));
- ValidationHelper.validateContext(context, new BeanValidatorCallback(context), treatMapsLikeBeans);
- // restore old values in context
- context.moveUp(bean, mbean);
- } else if (access != null) { // different accesses to relation
- // save old values from context
- final Object bean = context.getBean();
- final MetaBean mbean = context.getMetaBean();
- for (AccessStrategy each : access) {
- // modify context state for relationship-target bean
- context.moveDown(prop, each);
- ValidationHelper.validateContext(context, new BeanValidatorCallback(context), treatMapsLikeBeans);
- // restore old values in context
- context.moveUp(bean, mbean);
- }
- }
- }
-
- private boolean treatMapsLikeBeans = false;
-
- public boolean isTreatMapsLikeBeans() {
- return treatMapsLikeBeans;
- }
-
- public void setTreatMapsLikeBeans(boolean treatMapsLikeBeans) {
- this.treatMapsLikeBeans = treatMapsLikeBeans;
- }
-
- /**
- * Get the metabean finder associated with this validator.
- *
- * @return a MetaBeanFinder
- * @see org.apache.bval.MetaBeanManagerFactory#getFinder()
- */
- public MetaBeanFinder getMetaBeanFinder() {
- return metaBeanFinder;
- }
-
- /**
- * Dispatches a call from {@link #validate()} to
- * {@link BeanValidator#validateBeanNet(ValidationContext)} with the current
- * context set.
- */
- private class BeanValidatorCallback implements ValidationHelper.ValidateCallback {
-
- private final ValidationContext<?> context;
-
- public BeanValidatorCallback(ValidationContext<?> context) {
- this.context = context;
- }
-
- public void validate() {
- validateBeanNet(context);
- }
-
- }
-
-}
diff --git a/trunk/bval-core/src/main/java/org/apache/bval/DynamicMetaBean.java b/trunk/bval-core/src/main/java/org/apache/bval/DynamicMetaBean.java
deleted file mode 100644
index c5e22df..0000000
--- a/trunk/bval-core/src/main/java/org/apache/bval/DynamicMetaBean.java
+++ /dev/null
@@ -1,49 +0,0 @@
-/*
- * 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.bval;
-
-import org.apache.bval.model.MetaBean;
-
-// TODO: Reduce visibility
-
-/**
- * Description: Dynamic {@link MetaBean} subclass.<br/>
- */
-public final class DynamicMetaBean extends MetaBean {
- private static final long serialVersionUID = 1L;
-
- private final MetaBeanFinder finder;
-
- /**
- * Create a new DynamicMetaBean instance.
- * @param finder
- */
- public DynamicMetaBean(MetaBeanFinder finder) {
- this.finder = finder;
- }
-
- /**
- * {@inheritDoc}
- * different strategies with hints to find MetaBean of associated object can
- * be implemented here.
- */
- @Override
- public MetaBean resolveMetaBean(Object bean) {
- return bean instanceof Class<?> ?
- finder.findForClass((Class<?>) bean) : finder.findForClass(bean.getClass());
- }
-}
diff --git a/trunk/bval-core/src/main/java/org/apache/bval/IntrospectorMetaBeanFactory.java b/trunk/bval-core/src/main/java/org/apache/bval/IntrospectorMetaBeanFactory.java
deleted file mode 100644
index d0c9e48..0000000
--- a/trunk/bval-core/src/main/java/org/apache/bval/IntrospectorMetaBeanFactory.java
+++ /dev/null
@@ -1,109 +0,0 @@
-/*
- * 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.bval;
-
-import org.apache.bval.model.MetaBean;
-import org.apache.bval.model.MetaProperty;
-
-import java.beans.BeanInfo;
-import java.beans.IndexedPropertyDescriptor;
-import java.beans.Introspector;
-import java.beans.PropertyDescriptor;
-import java.lang.reflect.Method;
-import java.lang.reflect.Type;
-import java.util.Enumeration;
-
-import static org.apache.bval.model.Features.Property.*;
-
-/**
- * Description: use information from java.beans.Introspector in MetaBeans. The PropertyDescriptor can contain info about
- * HIDDEN, PREFERRED, READONLY and other features<br/>
- * NOTE: THIS IS AN OPTIONAL CLASS, TO ENABLE IT, SET Factory Property apache.bval.enable-introspector="true"
- */
-public class IntrospectorMetaBeanFactory implements MetaBeanFactory {
-
- /**
- * {@inheritDoc}
- */
- public void buildMetaBean(MetaBean meta) throws Exception {
- if (meta.getBeanClass() == null) {
- return; // handle only, when local class exists
- }
- BeanInfo info = Introspector.getBeanInfo(meta.getBeanClass());
- if (meta.getName() == null && info.getBeanDescriptor() != null) {
- meta.setName(info.getBeanDescriptor().getName()); // (display?)name = simple class name!
- }
- for (PropertyDescriptor pd : info.getPropertyDescriptors()) {
- if (!(pd instanceof IndexedPropertyDescriptor || pd.getName().equals("class"))) {
- MetaProperty metaProp = buildMetaProperty(pd, meta.getProperty(pd.getName()));
- meta.putProperty(pd.getName(), metaProp);
- }
- }
- }
-
- /**
- * Create a {@link MetaProperty} from the specified {@link PropertyDescriptor}.
- *
- * @param pd
- * @return MetaProperty
- */
- @Deprecated
- protected MetaProperty buildMetaProperty(PropertyDescriptor pd) {
- return buildMetaProperty(pd, null);
- }
-
- /**
- * Create a {@link MetaProperty} from the specified {@link PropertyDescriptor}.
- *
- * @param pd
- * @param existing
- * @return MetaProperty
- */
- protected MetaProperty buildMetaProperty(PropertyDescriptor pd, MetaProperty existing) {
- MetaProperty meta = new MetaProperty();
- meta.setName(pd.getName());
- meta.setType(determineGenericPropertyType(pd));
- if (pd.isHidden()) {
- meta.putFeature(HIDDEN, Boolean.TRUE);
- }
- if (pd.isPreferred()) {
- meta.putFeature(PREFERRED, Boolean.TRUE);
- }
- if (pd.isConstrained()) {
- meta.putFeature(READONLY, Boolean.TRUE);
- }
- Enumeration<String> enumeration = pd.attributeNames();
- while (enumeration.hasMoreElements()) {
- String key = enumeration.nextElement();
- Object value = pd.getValue(key);
- meta.putFeature(key, value);
- }
- return meta;
- }
-
- private Type determineGenericPropertyType(PropertyDescriptor pd) {
- Method m = pd.getReadMethod();
- if (m != null) {
- return m.getGenericReturnType();
- }
- m = pd.getWriteMethod();
- if (m != null && m.getParameterTypes().length == 1) {
- return m.getGenericParameterTypes()[0];
- }
- return pd.getPropertyType();
- }
-}
diff --git a/trunk/bval-core/src/main/java/org/apache/bval/MetaBeanBuilder.java b/trunk/bval-core/src/main/java/org/apache/bval/MetaBeanBuilder.java
deleted file mode 100644
index 745b0fa..0000000
--- a/trunk/bval-core/src/main/java/org/apache/bval/MetaBeanBuilder.java
+++ /dev/null
@@ -1,136 +0,0 @@
-/*
- * 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.bval;
-
-import org.apache.bval.model.MetaBean;
-import org.apache.commons.lang3.ArrayUtils;
-import org.apache.commons.lang3.ClassUtils;
-
-import java.util.logging.Level;
-import java.util.logging.Logger;
-
-import java.util.HashMap;
-import java.util.Map;
-
-/**
- * Description: internal implementation class to construct metabeans with
- * factories<br/>
- */
-public class MetaBeanBuilder {
-
- private static final Logger log = Logger.getLogger(MetaBeanBuilder.class.getName());
-
- /**
- * here you can install different kinds of factories to create MetaBeans
- * from
- */
- private MetaBeanFactory[] factories;
-
- /**
- * Create a new MetaBeanBuilder instance.
- */
- public MetaBeanBuilder() {
- this(new MetaBeanFactory[] { new IntrospectorMetaBeanFactory() });
- }
-
- /**
- * Create a new MetaBeanBuilder instance.
- *
- * @param factories
- */
- public MetaBeanBuilder(MetaBeanFactory[] factories) {
- setFactories(factories);
- }
-
- /**
- * Get the configured set of {@link MetaBeanFactory} objects.
- *
- * @return {@link MetaBeanFactory} array
- */
- public MetaBeanFactory[] getFactories() {
- return ArrayUtils.clone(factories);
- }
-
- /**
- * Set the array of {@link MetaBeanFactory} instances with which to enrich
- * {@link MetaBean}s.
- *
- * @param factories
- */
- public void setFactories(MetaBeanFactory[] factories) {
- this.factories = ArrayUtils.clone(factories);
- }
-
- /**
- * Build a {@link MetaBean} for a given id.
- *
- * @param beanInfoId
- * @return MetaBean
- * @throws Exception
- * if unable to build
- */
- public MetaBean buildForId(String beanInfoId) throws Exception {
- throw new IllegalArgumentException("MetaBean " + beanInfoId + " not found");
- }
-
- /**
- * Build beans for all known ids. Default implementation returns an empty
- * map.
- *
- * @return Map of String : MetaBean
- */
- public Map<String, MetaBean> buildAll() throws Exception {
- return new HashMap<String, MetaBean>();
- }
-
- /**
- * Find the named class.
- *
- * @param className
- * @return Class found or null
- */
- protected Class<?> findLocalClass(String className) {
- if (className != null) {
- try {
- return ClassUtils.getClass(className);
- } catch (ClassNotFoundException e) {
- log.log(Level.FINE, String.format("Class not found: %s", className), e);
- }
- }
- return null;
- }
-
- /**
- * Build a MetaBean for the specified class.
- *
- * @param clazz
- * @return MetaBean
- * @throws Exception
- */
- public MetaBean buildForClass(Class<?> clazz) throws Exception {
- MetaBean meta = new MetaBean();
- if (clazz != null) { // local class here?
- meta.setBeanClass(clazz);
- meta.setId(clazz.getName()); // default id = full class name!
- }
- for (MetaBeanFactory factory : factories) {
- factory.buildMetaBean(meta);
- }
- return meta;
- }
-
-}
diff --git a/trunk/bval-core/src/main/java/org/apache/bval/MetaBeanCache.java b/trunk/bval-core/src/main/java/org/apache/bval/MetaBeanCache.java
deleted file mode 100644
index c55bc0a..0000000
--- a/trunk/bval-core/src/main/java/org/apache/bval/MetaBeanCache.java
+++ /dev/null
@@ -1,113 +0,0 @@
-/*
- * 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.bval;
-
-import java.io.Serializable;
-import java.util.Map;
-import java.util.concurrent.ConcurrentHashMap;
-import java.util.concurrent.ConcurrentMap;
-
-import org.apache.bval.model.MetaBean;
-
-/**
- * Description: a cache to hold metabeans by id and by class.<br/>
- */
-public class MetaBeanCache implements MetaBeanFinder, Serializable {
- private static final long serialVersionUID = 1L;
-
- /**
- * Cache keyed by id.
- */
- protected final ConcurrentMap<String, MetaBean> cacheById = new ConcurrentHashMap<String, MetaBean>();
- /**
- * Cache keyed by class.
- */
- protected final ConcurrentMap<Class<?>, MetaBean> cacheByClass = new ConcurrentHashMap<Class<?>, MetaBean>();
-
- /**
- * Create a new MetaBeanCache instance.
- */
- public MetaBeanCache() {
- super();
- }
-
- /**
- * Create a new MetaBeanCache instance.
- * @param beans
- */
- public MetaBeanCache(Map<String, MetaBean> beans) {
- this();
- for (MetaBean bean : beans.values()) {
- cache(bean);
- }
- }
-
- /**
- * Clear the cache.
- */
- public void clear() {
- cacheById.clear();
- cacheByClass.clear();
- }
-
- /**
- * {@inheritDoc}
- */
- public MetaBean findForId(String beanInfoId) {
- return cacheById.get(beanInfoId);
- }
-
- /**
- * {@inheritDoc}
- */
- public MetaBean findForClass(Class<?> clazz) {
- return cacheByClass.get(clazz);
- }
-
- /**
- * Return all cached MetaBeans by id.
- * @return live map
- */
- public Map<String, MetaBean> findAll() {
- return cacheById;
- }
-
- /**
- * Cache the specified MetaBean.
- * @param beanInfo
- */
- public void cache(MetaBean beanInfo) {
- cacheById.put(beanInfo.getId(), beanInfo);
- if (beanInfo.getBeanClass() != null &&
- beanInfo.getId().equals(beanInfo.getBeanClass().getName())) {
- cacheByClass.putIfAbsent(beanInfo.getBeanClass(), beanInfo);
- }
- }
-
- /**
- * Remove a single MetaBean from the cache.
- * @param beanInfo
- */
- public void removeFromCache(MetaBean beanInfo) {
- cacheById.remove(beanInfo.getId());
- if (beanInfo.getBeanClass() != null &&
- beanInfo.getId().equals(beanInfo.getBeanClass().getName())) {
- cacheByClass.remove(beanInfo.getBeanClass());
- }
- }
-
-}
diff --git a/trunk/bval-core/src/main/java/org/apache/bval/MetaBeanFactory.java b/trunk/bval-core/src/main/java/org/apache/bval/MetaBeanFactory.java
deleted file mode 100644
index e5a06d7..0000000
--- a/trunk/bval-core/src/main/java/org/apache/bval/MetaBeanFactory.java
+++ /dev/null
@@ -1,32 +0,0 @@
-/*
- * 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.bval;
-
-import org.apache.bval.model.MetaBean;
-
-/**
- * Description: interface for abstraction how to initialize a MetaBean
- * with information from somewhere<br/>
- */
-public interface MetaBeanFactory {
- /**
- * Initialize the specified {@link MetaBean}.
- * @param metaBean
- * @throws Exception
- */
- void buildMetaBean(MetaBean metaBean) throws Exception;
-}
diff --git a/trunk/bval-core/src/main/java/org/apache/bval/MetaBeanFinder.java b/trunk/bval-core/src/main/java/org/apache/bval/MetaBeanFinder.java
deleted file mode 100644
index 1caa97e..0000000
--- a/trunk/bval-core/src/main/java/org/apache/bval/MetaBeanFinder.java
+++ /dev/null
@@ -1,41 +0,0 @@
-/*
- * 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.bval;
-
-
-import org.apache.bval.model.MetaBean;
-
-/**
- * Description: Interface to find BeanInfos <br/>
- */
-public interface MetaBeanFinder {
- /**
- * Find a MetaBean with a certain id.
- * @param beanInfoId - symbolic unique name of Meta Info
- * @return BeanInfo
- * @throws IllegalArgumentException - when MetaBean not found
- */
- MetaBean findForId(String beanInfoId);
-
- /**
- * Find the MetaBean for the specified class.
- * @param clazz - bean class
- * @return BeanInfo (never null)
- */
- MetaBean findForClass(Class<?> clazz);
-
-}
diff --git a/trunk/bval-core/src/main/java/org/apache/bval/MetaBeanManager.java b/trunk/bval-core/src/main/java/org/apache/bval/MetaBeanManager.java
deleted file mode 100644
index fe4797e..0000000
--- a/trunk/bval-core/src/main/java/org/apache/bval/MetaBeanManager.java
+++ /dev/null
@@ -1,143 +0,0 @@
-/*
- * 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.bval;
-
-import org.apache.bval.model.MetaBean;
-import org.apache.bval.model.MetaProperty;
-
-import static org.apache.bval.model.Features.Property.*;
-
-/**
- * Description: Default implementation for the interface to find, register and
- * create MetaBeans. In most situations a single instance of this class is
- * sufficient and you can get this instance from the
- * {@link MetaBeanManagerFactory}. <br/>
- */
-public class MetaBeanManager implements MetaBeanFinder {
-
- /** MetaBean cache */
- protected final MetaBeanCache cache = new MetaBeanCache();
- /** MetaBean builder */
- protected final MetaBeanBuilder builder;
- /** Complete flag */
- protected boolean complete = false;
-
- /**
- * Create a new MetaBeanManager instance.
- */
- public MetaBeanManager() {
- builder = new MetaBeanBuilder();
- }
-
- /**
- * Create a new MetaBeanManager instance.
- *
- * @param builder
- */
- public MetaBeanManager(MetaBeanBuilder builder) {
- this.builder = builder;
- }
-
- /**
- * Get the builder used.
- *
- * @return {@link MetaBeanBuilder}
- */
- public MetaBeanBuilder getBuilder() {
- return builder;
- }
-
- /**
- * Get the cache used.
- *
- * @return {@link MetaBeanCache}
- */
- public MetaBeanCache getCache() {
- return cache;
- }
-
- /**
- * {@inheritDoc}
- */
- public MetaBean findForId(String beanInfoId) {
- MetaBean beanInfo = cache.findForId(beanInfoId);
- if (beanInfo != null)
- return beanInfo;
- try {
- beanInfo = builder.buildForId(beanInfoId);
- cache.cache(beanInfo);
- computeRelationships(beanInfo);
- return beanInfo;
- } catch (RuntimeException e) {
- throw e; // do not wrap runtime exceptions
- } catch (Exception e) {
- throw new IllegalArgumentException("error creating beanInfo with id: " + beanInfoId, e);
- }
- }
-
- /**
- * {@inheritDoc}
- */
- public MetaBean findForClass(Class<?> clazz) {
- if (clazz == null)
- return null;
- MetaBean beanInfo = cache.findForClass(clazz);
- if (beanInfo != null)
- return beanInfo;
- try {
- beanInfo = builder.buildForClass(clazz);
- cache.cache(beanInfo);
- computeRelationships(beanInfo);
- return beanInfo;
- } catch (RuntimeException e) {
- throw e; // do not wrap runtime exceptions
- } catch (Exception e) {
- throw new IllegalArgumentException("error creating beanInfo for " + clazz, e);
- }
- }
-
- /**
- * Compute all known relationships for <code>beanInfo</code>. must be called
- * AFTER cache.cache() to avoid endless loop
- *
- * @param beanInfo
- * - the bean for which to compute relationships
- */
- protected void computeRelationships(MetaBean beanInfo) {
- for (MetaProperty prop : beanInfo.getProperties()) {
- String beanRef = (String) prop.getFeature(REF_BEAN_ID);
- computeRelatedMetaBean(prop, beanRef);
- }
- }
-
- /**
- * Compute a single related {@link MetaBean}.
- *
- * @param prop
- * @param beanRef
- */
- protected void computeRelatedMetaBean(MetaProperty prop, String beanRef) {
- Class<?> beanType = prop.getFeature(REF_BEAN_TYPE);
- if (beanType != null) {
- prop.setMetaBean(findForClass(beanType));
- } else if (prop.getFeature(REF_CASCADE) != null) { // dynamic type
- // resolution:
- prop.setMetaBean(new DynamicMetaBean(this));
- }
- }
-
-}
diff --git a/trunk/bval-core/src/main/java/org/apache/bval/MetaBeanManagerFactory.java b/trunk/bval-core/src/main/java/org/apache/bval/MetaBeanManagerFactory.java
deleted file mode 100644
index f2cd8da..0000000
--- a/trunk/bval-core/src/main/java/org/apache/bval/MetaBeanManagerFactory.java
+++ /dev/null
@@ -1,46 +0,0 @@
-/*
- * 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.bval;
-
-/**
- * Description: API class to hold a singleton of a {@link MetaBeanManager}
- * that implements the finder and registry interfaces for MetaBeans<br/>
- *
- * @see org.apache.bval.model.MetaBean
- * @see MetaBeanManager
- */
-public class MetaBeanManagerFactory {
- private static MetaBeanManager manager = new MetaBeanManager();
-
- /**
- * global meta bean finder.
- * @return the singleton
- */
- public static MetaBeanFinder getFinder() {
- return manager;
- }
-
-
- /**
- * set global meta bean manager, that is responsible
- * for finding, caching, xml registry and enrichment algorithm.
- * @param finder
- */
- public static void setManager(MetaBeanManager finder) {
- manager = finder;
- }
-}
diff --git a/trunk/bval-core/src/main/java/org/apache/bval/Validate.java b/trunk/bval-core/src/main/java/org/apache/bval/Validate.java
deleted file mode 100644
index 039106d..0000000
--- a/trunk/bval-core/src/main/java/org/apache/bval/Validate.java
+++ /dev/null
@@ -1,41 +0,0 @@
-/*
- * 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.bval;
-
-import java.lang.annotation.Retention;
-import java.lang.annotation.Target;
-
-import static java.lang.annotation.ElementType.*;
-import static java.lang.annotation.RetentionPolicy.RUNTIME;
-
-/**
- * Description: Annotate an element (parameter) to be validated.
- * <br>
- */
-@Target({METHOD, FIELD, CONSTRUCTOR, PARAMETER})
-@Retention(RUNTIME)
-public @interface Validate {
- /**
- * (optional) the MetaBean.id to use
- */
- String value() default "";
-
- /**
- * to Support groups on @Valid(ate) in method/return validation
- */
- Class<?>[] groups() default {};
-}
diff --git a/trunk/bval-core/src/main/java/org/apache/bval/ValidationResults.java b/trunk/bval-core/src/main/java/org/apache/bval/ValidationResults.java
deleted file mode 100644
index e9d79f0..0000000
--- a/trunk/bval-core/src/main/java/org/apache/bval/ValidationResults.java
+++ /dev/null
@@ -1,211 +0,0 @@
-/*
- * 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.bval;
-
-
-import org.apache.bval.model.ValidationContext;
-import org.apache.bval.model.ValidationListener;
-
-import java.io.Serializable;
-import java.util.*;
-
-/**
- * Description: Implements a contains to hold and transport validation results<br/>
- */
-public class ValidationResults implements ValidationListener, Serializable {
- private static final long serialVersionUID = 1L;
-
- private Map<String, List<Error>> errorsByReason;
- private Map<Object, Map<String, List<Error>>> errorsByOwner;
-
-
- /**
- * API to add an error to the validation results.
- *
- * @param reason - Features from {@link org.apache.bval.model.Features.Property}
- * or custom reason of validation error
- * @param context - context information (bean, propertyName, value, ...)
- */
- public <T extends ValidationListener> void addError(String reason, ValidationContext<T> context) {
- Error error = createError(reason, context.getBean(), context.getPropertyName());
- addError(error, context);
- }
-
-
- /**
- * API to add an error to the validation results.
- *
- * @param error - holding the description of reason and object to describe
- * the validation error
- * @param context - null or the context to provide additional information
- */
- public <T extends ValidationListener> void addError(Error error, ValidationContext<T> context) {
- if (errorsByReason == null) {
- initialize();
- }
- addToReasonBucket(error);
- addToOwnerBucket(error);
- }
-
- /**
- * Old API to add an error to the validation results when no context is available.
- *
- * @param reason - Features from {@link org.apache.bval.model.Features.Property} or custom validation reason
- * @param bean - (optional) owner bean or null
- * @param propertyName - (optional) propertyName where valiation error occurred or null
- */
- public void addError(String reason, Object bean, String propertyName) {
- addError(createError(reason, bean, propertyName), null);
- }
-
- /**
- * Create an Error object.
- * @param reason
- * @param owner
- * @param propertyName
- * @return new {@link Error}
- */
- protected Error createError(String reason, Object owner, String propertyName) {
- return new Error(reason, owner, propertyName);
- }
-
- /**
- * initialize the error-buckets now when needed and
- * not on instance creation to save memory garbage.
- */
- protected void initialize() {
- errorsByReason = new LinkedHashMap<String, List<Error>>();
- errorsByOwner = new LinkedHashMap<Object, Map<String, List<Error>>>();
- }
-
- /**
- * Add an Error to the set of Errors shared by a particular "reason."
- * @param error
- * @see {@link Error#getReason()}
- */
- protected void addToReasonBucket(Error error) {
- if (error.getReason() == null) return;
-
- List<Error> errors = errorsByReason.get(error.getReason());
- if (errors == null) {
- errors = new ArrayList<Error>();
- errorsByReason.put(error.getReason(), errors);
- }
- errors.add(error);
- }
-
- /**
- * Add an Error to the property-keyed map of Errors maintained for this Error's owner.
- * @param error
- * @see {@link Error#getOwner()}
- */
- protected void addToOwnerBucket(Error error) {
- if (error.getOwner() == null) return;
-
- Map<String, List<Error>> errors = errorsByOwner.get(error.getOwner());
- if (errors == null) {
- errors = new HashMap<String, List<Error>>();
- errorsByOwner.put(error.getOwner(), errors);
- }
- List<Error> list = errors.get(error.getPropertyName());
- if (list == null) {
- list = new ArrayList<Error>();
- errors.put(error.getPropertyName(), list);
- }
- list.add(error);
- }
-
- /**
- * Get the map of Errors by reason;
- * key = reason, value = list of errors for this reason
- * @return map
- */
- public Map<String, List<Error>> getErrorsByReason() {
- if (errorsByReason == null) return Collections.emptyMap();
- return errorsByReason;
- }
-
- /**
- * Get the map of Errors by owner;
- * key = owner, value = map with:<br>
- * key = propertyName, value = list of errors for this owner.propertyName
- * @return map
- */
- public Map<Object, Map<String, List<Error>>> getErrorsByOwner() {
- if (errorsByOwner == null) return Collections.emptyMap();
- return errorsByOwner;
- }
-
- /**
- * Learn whether these results are empty/error-free.
- * @return true when there are NO errors in this validation result
- */
- public boolean isEmpty() {
- if (errorsByReason == null ||
- (errorsByReason.isEmpty() && errorsByOwner.isEmpty())) return true;
- for (List<Error> list : errorsByReason.values()) {
- if (!list.isEmpty()) return false;
- }
- for (Map<String, List<Error>> map : errorsByOwner.values()) {
- for (List<Error> list : map.values()) {
- if (!list.isEmpty()) return false;
- }
- }
- return true;
- }
-
- /**
- * Learn whether there is an Error keyed to a specified reason description.
- * @param reason
- * @return boolean
- * @see {@link Error#getReason()}
- */
- public boolean hasErrorForReason(String reason) {
- if (errorsByReason == null) return false;
- List<Error> errors = errorsByReason.get(reason);
- return errors != null && !errors.isEmpty();
- }
-
- /**
- * Learn whether <code>bean</code> has any errors keyed to property <code>propertyName</code>.
- * @param bean
- * @param propertyName - may be null: any property is checked
- * OR the name of the property to check
- * @return boolean
- */
- public boolean hasError(Object bean, String propertyName) {
- if (errorsByOwner == null) return false;
- Map<String, List<Error>> errors = errorsByOwner.get(bean);
- if (errors == null) return false;
- if (propertyName != null) {
- List<Error> list = errors.get(propertyName);
- return list != null && !list.isEmpty();
- } else {
- for (List<Error> list : errors.values()) {
- if (!list.isEmpty()) return true;
- }
- return false;
- }
- }
-
- /**
- * {@inheritDoc}
- */
- public String toString() {
- return "ValidationResults{" + errorsByOwner + "}";
- }
-}
diff --git a/trunk/bval-core/src/main/java/org/apache/bval/model/DynaType.java b/trunk/bval-core/src/main/java/org/apache/bval/model/DynaType.java
deleted file mode 100644
index 7a89862..0000000
--- a/trunk/bval-core/src/main/java/org/apache/bval/model/DynaType.java
+++ /dev/null
@@ -1,31 +0,0 @@
-/*
- * 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.bval.model;
-
-import java.lang.reflect.Type;
-
-/**
- * Description: implementation of a dynamic type. can be used inside a
- * MetaProperty for instance-based types <br/>
- */
-public interface DynaType extends Type {
- /**
- * Resolve the type indirection.
- * @return Type
- */
- Type getRawType();
-}
diff --git a/trunk/bval-core/src/main/java/org/apache/bval/model/DynaTypeEnum.java b/trunk/bval-core/src/main/java/org/apache/bval/model/DynaTypeEnum.java
deleted file mode 100644
index d520807..0000000
--- a/trunk/bval-core/src/main/java/org/apache/bval/model/DynaTypeEnum.java
+++ /dev/null
@@ -1,122 +0,0 @@
-/*
- * 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.bval.model;
-
-import org.apache.commons.lang3.ArrayUtils;
-
-/**
- * Description: ("artificial" enum with custom values).<br/>
- */
-public class DynaTypeEnum implements DynaType {
- private final Class<?> enumClass;
- private Value[] enumConstants;
-
- /**
- * Create a new DynaTypeEnum instance.
- * @param enumClass
- */
- public DynaTypeEnum(Class<?> enumClass) {
- this.enumClass = enumClass;
- }
-
- /**
- * Create a new DynaTypeEnum instance.
- * @param enumClass
- * @param names
- */
- public DynaTypeEnum(Class<?> enumClass, String... names) {
- this(enumClass);
- setEnumNames(names);
- }
-
- /**
- * Set the enumeration value names.
- * @param names
- */
- public void setEnumNames(String[] names) {
- enumConstants = new Value[names.length];
- int i = 0;
- for (String each : names) {
- enumConstants[i++] = new Value(each);
- }
- }
-
- /**
- * Get the name of the enum class.
- * @return String
- */
- public String getName() {
- return enumClass.getName();
- }
-
- /**
- * {@inheritDoc}
- */
- public Class<?> getRawType() {
- return enumClass;
- }
-
- /**
- * Learn whether the referred class is, in fact, an enum class.
- * used by freemarker-template "bean-infos-json.ftl"
- */
- public boolean isEnum() {
- return enumClass.isEnum();
- }
-
- /**
- * Get the emulated constants.
- * used by freemarker-template "bean-infos-json.ftl"
- * @return Value[]
- */
- public Value[] getEnumConstants() {
- return ArrayUtils.clone(enumConstants);
- }
-
- /**
- * Learn whether the wrapped class is assignable from <code>cls</code>.
- * @param cls
- * @return boolean
- */
- public boolean isAssignableFrom(Class<?> cls) {
- return enumClass.isAssignableFrom(cls);
- }
-
- /**
- * Represents a single "enum" instance (= the value).
- */
- public static final class Value {
- final String name;
-
- /**
- * Create a new Value instance.
- * @param name
- */
- Value(String name) {
- this.name = name;
- }
-
- /**
- * used by freemarker-template "bean-infos-json.ftl"
- * @return the name of this constant
- */
- public String name() {
- return name;
- }
-
- }
-}
diff --git a/trunk/bval-core/src/main/java/org/apache/bval/model/Features.java b/trunk/bval-core/src/main/java/org/apache/bval/model/Features.java
deleted file mode 100644
index d362efa..0000000
--- a/trunk/bval-core/src/main/java/org/apache/bval/model/Features.java
+++ /dev/null
@@ -1,114 +0,0 @@
-/*
- * 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.bval.model;
-
-/**
- * Description: Contains key of common feature keys used by standard validators etc.
- * This DOES NOT MEAN that the list of property- or bean-features is closed. You can
- * put anything into the metabean as a feature and use it in your custom validators
- * and other classes that access your metabeans.<br/>
- *
- * @see FeaturesCapable
- */
-public interface Features {
- /** Features of {@link MetaBean} */
- public interface Bean {
- /** INFO: String, name of the Property, that is the Primary Key */
- String MAIN_KEY = "mainKey";
- /** INFO: category/domain to which the metaBean belongs to */
- String DOMAIN = "domain";
-
- // String DISPLAY_NAME = "displayName";
- String UNIQUE_KEY = "uniqueKey";
- }
-
- /** Features of {@link MetaProperty} */
- public interface Property {
- /** INFO: possible Enum values */
- String ENUM = "enum";
- /** INFO: Boolean, TRUE if Property is a Unique Key */
- String UNIQUE_KEY = "uniqueKey";
- /** VALIDATION: Boolean, mandatory field? */
- String MANDATORY = "mandatory";
- /** VALIDATION: Integer, max. number of chars/digits / max. cardinality of a to-many relationship */
- String MAX_LENGTH = "maxLen";
- /** VALIDATION: Comparable (e.g. a subclass of Number), max value */
- String MAX_VALUE = "maxValue";
- /** VALIDATION: Integer, min. number of chars/digits / min. cardinality of a to-many relationship */
- String MIN_LENGTH = "minLen";
- /** VALIDATION: Comparable (e.g. a subclass of Number), min value */
- String MIN_VALUE = "minValue";
- /** INFO: String-representation of a default value */
- String DEFAULT_VALUE = "defValue";
- /** SECURITY, INFO: Boolean, is value or relationship unmodifiable */
- String READONLY = "readonly";
- /**
- * SECURITY, INFO: Boolean, Field accessible?
- * If false, the field must not be displayed, queried, changed.
- */
- String DENIED = "denied";
- /** VALIDATION: String, regular expression to validate the format of input data */
- String REG_EXP = "regExp";
- /**
- * VALIDATION: String, Constraint for time-information of a Date-field:
- * {@link org.apache.bval.xml.XMLMetaValue#TIMELAG_Past}
- * or
- * {@link org.apache.bval.xml.XMLMetaValue#TIMELAG_Future}
- */
- String TIME_LAG = "timeLag";
-
- /**
- * INFO: Boolean, Field visible?
- *
- * @see java.beans.PropertyDescriptor#isHidden()
- */
- String HIDDEN = "hidden";
- /**
- * INFO: Boolean
- *
- * @see java.beans.PropertyDescriptor#isPreferred()
- */
- String PREFERRED = "preferred";
-
- /** INFO: relationship's target metaBean.id * */
- String REF_BEAN_ID = "refBeanId";
-
- /**
- * INFO: Class<br>
- * Relationship's target metaBean.beanClass.
- * In case of to-many relationships, this feature
- * hold the Bean-type not the Collection-type.
- */
- String REF_BEAN_TYPE = "refBeanType";
-
- /**
- * INFO: AccessStrategy[]<br>
- * an array of accessStrategies
- * how validation should cascade into relationship target beans<br>
- * null when validation should NOT cascade into relationship target
- * beans<br>
- * <p/>
- * Default: {PropertyAccess(metaProperty.name)},
- * when MetaProperty.metaBean is != null
- */
- String REF_CASCADE = "refCascade";
-
- /** INFO: an array with the string names of custom java script validation functions */
- @Deprecated // TODO RSt - I suggest to remove this and all related code
- String JAVASCRIPT_VALIDATION_FUNCTIONS = "jsFunctions";
- }
-}
diff --git a/trunk/bval-core/src/main/java/org/apache/bval/model/FeaturesCapable.java b/trunk/bval-core/src/main/java/org/apache/bval/model/FeaturesCapable.java
deleted file mode 100644
index d495dc1..0000000
--- a/trunk/bval-core/src/main/java/org/apache/bval/model/FeaturesCapable.java
+++ /dev/null
@@ -1,219 +0,0 @@
-/*
- * 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.bval.model;
-
-import java.io.Serializable;
-import java.util.Map;
-import java.util.concurrent.ConcurrentHashMap;
-import java.util.concurrent.ConcurrentMap;
-import java.util.concurrent.locks.ReentrantLock;
-
-import org.apache.commons.lang3.ArrayUtils;
-
-/**
- * Description: abstract superclass of meta objects that support a map of
- * features.<br/>
- */
-public abstract class FeaturesCapable implements Serializable {
- private static final long serialVersionUID = -4045110242904814218L;
-
- private ConcurrentMap<String, Object> features = createFeaturesMap();
-
- /** key = validation id, value = the validation */
- private Validation[] validations = new Validation[0];
-
- private volatile boolean locking;
- private ReentrantLock lock = new ReentrantLock(true);
-
- /**
- * Create a new FeaturesCapable instance.
- */
- public FeaturesCapable() {
- super();
- }
-
- /**
- * Get the (live) map of features.
- *
- * @return Map<String, Object>
- */
- public Map<String, Object> getFeatures() {
- return features;
- }
-
- /**
- * Set whether to optimize read operations by accessing the features map in
- * an unsynchronized manner.
- *
- * @param fast
- */
- public void optimizeRead(boolean fast) {
- lock.lock();
- try {
- this.locking = !fast;
- } finally {
- lock.unlock();
- }
- }
-
- /**
- * Get the specified feature.
- *
- * @param <T>
- * @param key
- * @return T
- */
- public <T> T getFeature(String key) {
- return getFeature(key, (T) null);
- }
-
- /**
- * Get the specified feature, returning <code>defaultValue</code> if
- * undeclared.
- *
- * @param <T>
- * @param key
- * @param defaultValue
- * @return T
- */
- @SuppressWarnings("unchecked")
- public <T> T getFeature(String key, T defaultValue) {
- boolean release = acquireLockIfNeeded();
- try {
- return features.containsKey(key) ? (T) features.get(key) : defaultValue;
- } finally {
- if (release) {
- lock.unlock();
- }
- }
- }
-
- /**
- * Convenience method to set a particular feature value.
- *
- * @param <T>
- * @param key
- * @param value
- */
- public <T> void putFeature(String key, T value) {
- boolean release = acquireLockIfNeeded();
- try {
- features.put(key, value);
- } finally {
- if (release) {
- lock.unlock();
- }
- }
- }
-
- /**
- * Create a deep copy (copy receiver and copy properties).
- *
- * @param <T>
- * @return new T instance
- */
- public <T extends FeaturesCapable> T copy() {
- try {
- @SuppressWarnings("unchecked")
- final T self = (T) clone();
- copyInto(self);
- return self;
- } catch (CloneNotSupportedException e) {
- throw new IllegalStateException("cannot clone() " + this, e);
- }
- }
-
- /**
- * Copy this {@link FeaturesCapable} into another {@link FeaturesCapable}
- * instance.
- *
- * @param <T>
- * @param target
- */
- protected <T extends FeaturesCapable> void copyInto(T target) {
- target.features = target.createFeaturesMap();
- target.features.putAll(features);
- if (validations != null) {
- target.validations = validations.clone();
- }
- }
-
- /**
- * Get any validations set for this {@link FeaturesCapable}.
- *
- * @return Validation array
- */
- public Validation[] getValidations() {
- return ArrayUtils.clone(validations);
- }
-
- /**
- * Set the validations for this {@link FeaturesCapable}.
- *
- * @param validations
- */
- public void setValidations(Validation[] validations) {
- this.validations = ArrayUtils.clone(validations);
- }
-
- /**
- * Add a validation to this {@link FeaturesCapable}.
- *
- * @param validation
- * to add
- */
- public void addValidation(Validation validation) {
- validations = ArrayUtils.add(validations, validation);
- }
-
- /**
- * Search for an equivalent validation among those configured.
- *
- * @param aValidation
- * @return true if found
- */
- public boolean hasValidation(Validation aValidation) {
- if (validations == null)
- return false;
- for (Validation validation : validations) {
- if (validation.equals(aValidation))
- return true;
- }
- return false;
- }
-
- /**
- * Create a features map for this {@link FeaturesCapable} object.
- * @return ConcurrentMap
- */
- protected ConcurrentMap<String, Object> createFeaturesMap() {
- return new ConcurrentHashMap<String, Object>();
- }
-
- private boolean acquireLockIfNeeded() {
- if (locking) {
- lock.lock();
- // double read
- if (locking) {
- return true;
- }
- lock.unlock();
- }
- return false;
- }
-
-}
diff --git a/trunk/bval-core/src/main/java/org/apache/bval/model/MetaBean.java b/trunk/bval-core/src/main/java/org/apache/bval/model/MetaBean.java
deleted file mode 100644
index 05ce598..0000000
--- a/trunk/bval-core/src/main/java/org/apache/bval/model/MetaBean.java
+++ /dev/null
@@ -1,246 +0,0 @@
-/*
- * 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.bval.model;
-
-import java.util.Arrays;
-import java.util.Comparator;
-
-import org.apache.commons.lang3.ArrayUtils;
-
-/**
- * Description: the meta description of a bean or class. the class/bean itself can have a map of features and an array
- * of metaproperties.<br/>
- *
- * @see MetaProperty
- */
-public class MetaBean extends FeaturesCapable implements Cloneable, Features.Bean {
- private static final long serialVersionUID = 1L;
-
- /**
- * Comparator for managing the sorted properties array.
- */
- private static class PropertyNameComparator implements Comparator<Object> {
- /** Static instance */
- static final PropertyNameComparator INSTANCE = new PropertyNameComparator();
-
- /**
- * {@inheritDoc}
- */
- public int compare(Object o1, Object o2) {
- return getName(o1).compareTo(getName(o2));
- }
-
- private String getName(Object o) {
- if (o == null) {
- throw new NullPointerException();
- }
- return o instanceof MetaProperty ? ((MetaProperty) o).getName() : String.valueOf(o);
- }
- }
-
- private String id;
- private String name;
- private Class<?> beanClass;
- private MetaProperty[] properties = new MetaProperty[0];
-
- /**
- * Get the id.
- *
- * @return String
- */
- public String getId() {
- return id;
- }
-
- /**
- * Set the id.
- *
- * @param id
- * the String to set
- */
- public void setId(String id) {
- this.id = id;
- }
-
- /**
- * Get the name.
- *
- * @return String
- */
- public String getName() {
- return name;
- }
-
- /**
- * Set the name.
- *
- * @param name
- * the String to set
- */
- public void setName(String name) {
- this.name = name;
- }
-
- /**
- * Get the beanClass.
- *
- * @return Class<?>
- */
- public Class<?> getBeanClass() {
- return beanClass;
- }
-
- /**
- * Set the beanClass.
- *
- * @param beanClass
- * the Class<?> to set
- */
- public void setBeanClass(Class<?> beanClass) {
- this.beanClass = beanClass;
- }
-
- /**
- * Get the properties.
- *
- * @return MetaProperty[]
- */
- public MetaProperty[] getProperties() {
- return ArrayUtils.clone(properties);
- }
-
- /**
- * Set the properties.
- *
- * @param properties
- * the MetaProperty[] to set
- */
- public void setProperties(MetaProperty[] properties) {
- this.properties = ArrayUtils.clone(properties);
- Arrays.sort(this.properties, PropertyNameComparator.INSTANCE);
- }
-
- /**
- * Get the specified {@link MetaProperty}.
- *
- * @param name
- * @return MetaProperty found or <code>null</code>
- */
- public MetaProperty getProperty(String name) {
- final MetaProperty[] props = properties;
- int pos = Arrays.binarySearch(props, name, PropertyNameComparator.INSTANCE);
- return pos < 0 ? null : props[pos];
- }
-
- /**
- * Learn whether any known property is a relationship.
- *
- * @see MetaProperty#isRelationship()
- * @return true when at least one of the properties is a relationship
- */
- public boolean hasRelationships() {
- for (MetaProperty p : properties) {
- if (p.isRelationship()) {
- return true;
- }
- }
- return false;
- }
-
- /**
- * Learn whether there are any known properties.
- *
- * @return boolean
- */
- public boolean hasProperties() {
- return properties.length > 0;
- }
-
- /**
- * bidirectional - set the relationship between a MetaProperty and its parentMetaBean
- *
- * @param name
- * @param property
- * if <code>null</code>, remove
- */
- public void putProperty(String name, MetaProperty property) {
- if (property != null) {
- property.setParentMetaBean(this);
- }
- Object key = property == null ? name : property;
- // make a local copy for consistency
- MetaProperty[] props = properties;
- int pos = Arrays.binarySearch(props, key, PropertyNameComparator.INSTANCE);
- if (pos < 0) {
- if (property == null) {
- // store null property for unknown name == NOOP
- return;
- }
- props = ArrayUtils.add(props, 0 - pos - 1, property);
- } else {
- if (property == null) {
- props = ArrayUtils.remove(props, pos);
- } else {
- props[pos] = property;
- }
- }
- this.properties = props;
- }
-
- /**
- * {@inheritDoc}
- */
- public String toString() {
- return "MetaBean{" + "id='" + id + '\'' + ", name='" + name + '\'' + ", beanClass=" + beanClass + '}';
- }
-
- /**
- * {@inheritDoc}
- */
- @Override
- protected <T extends FeaturesCapable> void copyInto(T target) {
- super.copyInto(target);
- final MetaBean copy = (MetaBean) target;
- if (properties != null) {
- copy.properties = properties.clone();
- for (int i = copy.properties.length - 1; i >= 0; i--) {
- copy.properties[i] = copy.properties[i].copy();
- }
- }
- }
-
- /**
- * <p>
- * If this {@link MetaBean} is compatible with <code>bean</code>, return <code>this</code>, else <code>null</code>.
- * </p>
- * <p>
- * Compatibility is satisfied in one of the following ways:
- * <ul>
- * <li><code>bean</code> is null</li>
- * <li><code>bean</code> is an instance of our <code>beanClass</code></li>
- * <li><code>bean</code> <em>is</em> our <code>beanClass</code> itself</li>
- * </ul>
- * </p>
- *
- * @param bean
- * @return <code>this</code> or <code>null</code>
- */
- public MetaBean resolveMetaBean(Object bean) {
- return bean == null || bean == beanClass || beanClass.isInstance(bean) ? this : null;
- }
-
-}
diff --git a/trunk/bval-core/src/main/java/org/apache/bval/model/MetaProperty.java b/trunk/bval-core/src/main/java/org/apache/bval/model/MetaProperty.java
deleted file mode 100644
index 48ddf38..0000000
--- a/trunk/bval-core/src/main/java/org/apache/bval/model/MetaProperty.java
+++ /dev/null
@@ -1,175 +0,0 @@
-/*
- * 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.bval.model;
-
-import java.lang.reflect.Type;
-
-import org.apache.commons.lang3.reflect.TypeUtils;
-
-/**
- * Description: the meta description of a property of a bean. It supports a map
- * of features and multiple validations.<br/>
- *
- * @see Validation
- * @see MetaBean
- */
-public class MetaProperty extends FeaturesCapable
- implements Cloneable, Features.Property {
- private static final long serialVersionUID = 1L;
-
- private String name;
-
- private Type type;
- private MetaBean metaBean;
- private MetaBean parentMetaBean;
-
- /**
- * Create a new MetaProperty instance.
- */
- public MetaProperty() {
- }
-
- /**
- * Get the metabean of the target bean (mainly for relationships).
- * @return MetaBean (may be null).
- */
- public MetaBean getMetaBean() {
- return metaBean;
- }
-
- /**
- * Set the MetaBean of this {@link MetaProperty}.
- * @param metaBean to set
- */
- public void setMetaBean(MetaBean metaBean) {
- this.metaBean = metaBean;
- }
-
- /**
- * Get the metabean that owns this property (set by MetaBean.putProperty())
- * @return
- */
- public MetaBean getParentMetaBean() {
- return parentMetaBean;
- }
-
- /**
- * Set the metabean that owns this property (usually called by MetaBean.putProperty())
- * @param parentMetaBean
- */
- void setParentMetaBean(MetaBean parentMetaBean) {
- this.parentMetaBean = parentMetaBean;
- }
-
- /**
- * Learn whether this property is considered a relationship.
- * @return <code>true</code> if it has a MetaBean of its own
- */
- public boolean isRelationship() {
- return metaBean != null;
- }
-
- /**
- * Set the type of this property.
- * @param type to set
- */
- public void setType(Type type) {
- this.type = type;
- }
-
- /**
- * Get the type of this property.
- * @return
- */
- public Type getType() {
- return type;
- }
-
- /**
- * Resolve the type of this property to a class.
- * @return Class, <code>null</code> if cannot be determined
- */
- public Class<?> getTypeClass() {
- Type targetType = type instanceof DynaType ? ((DynaType) type)
- .getRawType() : type;
- if (targetType == null) {
- return null;
- }
- Type assigningType = getParentMetaBean() == null ? null
- : getParentMetaBean().getBeanClass();
- return TypeUtils.getRawType(targetType, assigningType);
- }
-
- /**
- * Get the name of this property.
- * @return String
- */
- public String getName() {
- return name;
- }
-
- /**
- * Learn whether this property is considered mandatory.
- * @return <code>true</code> if the <code>MANDATORY</code> feature is set to <code>true</code>.
- * @see {@link Features.Property#MANDATORY}
- */
- public boolean isMandatory() {
- return getFeature(MANDATORY, Boolean.FALSE).booleanValue();
- }
-
- /**
- * Set this property as being mandatory (or not).
- * @param mandatory
- * @see {@link Features.Property#MANDATORY}
- */
- public void setMandatory(boolean mandatory) {
- putFeature(MANDATORY, Boolean.valueOf(mandatory));
- }
-
- /**
- * Get javascript validations of this property.
- * @return String[]
- * @deprecated
- */
- @Deprecated // remove this method?
- public String[] getJavaScriptValidations() {
- return getFeature(JAVASCRIPT_VALIDATION_FUNCTIONS);
- }
-
- /**
- * Set the name of this property.
- * @param name to set
- */
- public void setName(String name) {
- this.name = name;
- }
-
- /**
- * {@inheritDoc}
- */
- public MetaProperty clone() throws CloneNotSupportedException {
- return (MetaProperty) super.clone();
- }
-
- /**
- * {@inheritDoc}
- */
- public String toString() {
- return "MetaProperty{" + "name='" + name + '\'' + ", type=" + type + '}';
- }
-
-}
diff --git a/trunk/bval-core/src/main/java/org/apache/bval/model/Validation.java b/trunk/bval-core/src/main/java/org/apache/bval/model/Validation.java
deleted file mode 100644
index a81e731..0000000
--- a/trunk/bval-core/src/main/java/org/apache/bval/model/Validation.java
+++ /dev/null
@@ -1,30 +0,0 @@
-/*
- * 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.bval.model;
-
-/**
- * Description: Interface for a single validation <br/>
- */
-public interface Validation {
- /**
- * Perform a single validation routine.
- * Validate the object or property according to the current ValidationContext.
- *
- * @param context - to access the property, value, constraints
- */
- <T extends ValidationListener> void validate(ValidationContext<T> context);
-}
diff --git a/trunk/bval-core/src/main/java/org/apache/bval/model/ValidationContext.java b/trunk/bval-core/src/main/java/org/apache/bval/model/ValidationContext.java
deleted file mode 100644
index 900444a..0000000
--- a/trunk/bval-core/src/main/java/org/apache/bval/model/ValidationContext.java
+++ /dev/null
@@ -1,135 +0,0 @@
-/*
- * 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.bval.model;
-
-import org.apache.bval.util.AccessStrategy;
-
-/**
- * Description: Interface of the context that holds all state information
- * during the validation process<br/>
- */
-public interface ValidationContext<T extends ValidationListener> {
- /**
- * Get the property value.
- * @return {@link Object}
- */
- Object getPropertyValue();
-
- /**
- * Get the value by using the given access strategy.
- * @param access
- * @return {@link Object}
- */
- Object getPropertyValue(AccessStrategy access);
-
- /**
- * Get the property name.
- * @return {@link String}
- */
- String getPropertyName();
-
- /**
- * Get the {@link ValidationListener}.
- * @return T
- */
- T getListener();
-
- /**
- * Get the bean.
- * @return {@link Object}
- */
- Object getBean();
-
- /**
- * Get the model meta-bean.
- * @return {@link MetaBean}
- */
- MetaBean getMetaBean();
-
- /**
- * Set the model meta-bean.
- * @param metaBean
- */
- void setMetaBean(MetaBean metaBean);
-
- /**
- * Get the model meta-property.
- * @return {@link MetaProperty}
- */
- MetaProperty getMetaProperty();
-
- /**
- * Set the bean.
- * @param bean
- */
- void setBean(Object bean);
-
- /**
- * Avoid recursion by recording the current state of this context as having been validated.
- * <p/>
- *
- * @return true when this state had not already been recorded
- */
- boolean collectValidated();
-
- /**
- * Set the current bean/metabean.
- * @param aBean
- * @param aMetaBean
- */
- void setBean(Object aBean, MetaBean aMetaBean);
-
- /**
- * Set the current meta-property.
- * @param metaProperty
- */
- void setMetaProperty(MetaProperty metaProperty);
-
- /**
- * Step deeper into association at 'prop'
- * @param prop
- * @param access
- */
- void moveDown(MetaProperty prop, AccessStrategy access);
-
- /**
- * Step out from a validation of associated objects.
- * @param bean
- * @param metaBean
- */
- void moveUp(Object bean, MetaBean metaBean);
-
- /**
- * Set the index of the object currently validated into the context.
- * used to create the propertyPath with [index] information for collections.
- * @param index
- */
- void setCurrentIndex(Integer index);
-
- /**
- * set the key of the object in a map currently validated into the context.
- * used to create the propertyPath with [key] information for maps.
- * @param key
- */
- void setCurrentKey(Object key);
-
- /**
- * Get the current access strategy.
- * @return {@link AccessStrategy}
- */
- AccessStrategy getAccess();
-}
diff --git a/trunk/bval-core/src/main/java/org/apache/bval/model/ValidationListener.java b/trunk/bval-core/src/main/java/org/apache/bval/model/ValidationListener.java
deleted file mode 100644
index 1a41deb..0000000
--- a/trunk/bval-core/src/main/java/org/apache/bval/model/ValidationListener.java
+++ /dev/null
@@ -1,101 +0,0 @@
-/*
- * 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.bval.model;
-
-
-import java.io.Serializable;
-
-
-/**
- * Description: The interface to collect errors found during validation<br/>
- */
-public interface ValidationListener {
- /**
- * Simple API to add an error reason during validation.
- * Error notification added from a {@link Validation} with context information
- * taken from the given {@link ValidationContext}.
- *
- * @param reason a constant describing the reason. This is normally the key of the
- * feature that was violated in the object 'owner' for property 'propertyName'
- * @param context - contains
- * bean = the object that contains the error (owner)
- * propertyName = the Name of the attribute that caused the error
- */
- <T extends ValidationListener> void addError(String reason, ValidationContext<T> context);
-
- /** Alternative method to add a fully initialized {@link ValidationListener.Error} object. */
- <T extends ValidationListener> void addError(Error error, ValidationContext<T> context);
-
- /**
- * An object holding a single validation constraint violation
- * found during the validation process.
- */
- public class Error implements Serializable {
- private static final long serialVersionUID = 1L;
-
- /** Reason */
- final String reason;
- /** Owner */
- final Object owner;
- /** Property name*/
- final String propertyName;
-
- /**
- * Create a new Error instance.
- * @param aReason
- * @param aOwner
- * @param aPropertyName
- */
- public Error(String aReason, Object aOwner, String aPropertyName) {
- this.reason = aReason;
- this.owner = aOwner;
- this.propertyName = aPropertyName;
- }
-
- /**
- * Get the reason.
- * @return String
- */
- public String getReason() {
- return reason;
- }
-
- /**
- * Get the owner.
- * @return Object
- */
- public Object getOwner() {
- return owner;
- }
-
- /**
- * Get the propertyName.
- * @return String
- */
- public String getPropertyName() {
- return propertyName;
- }
-
- /**
- * {@inheritDoc}
- */
- public String toString() {
- return "Error{" + "reason='" + reason + '\'' + ", propertyName='" +
- propertyName + '\'' + '}';
- }
- }
-}
diff --git a/trunk/bval-core/src/main/java/org/apache/bval/routines/EMailValidationUtils.java b/trunk/bval-core/src/main/java/org/apache/bval/routines/EMailValidationUtils.java
deleted file mode 100644
index 086da02..0000000
--- a/trunk/bval-core/src/main/java/org/apache/bval/routines/EMailValidationUtils.java
+++ /dev/null
@@ -1,74 +0,0 @@
-/*
- * 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.bval.routines;
-
-import java.util.regex.Matcher;
-import java.util.regex.Pattern;
-
-/**
- * Description: holds the regexp to validate an email address<br>
- * User: roman.stumm<br>
- * Date: 17.06.2010<br>
- * Time: 10:40:59<br>
- */
-public class EMailValidationUtils {
- private static String ATOM = "[^\\x00-\\x1F^\\(^\\)^\\<^\\>^\\@^\\,^\\;^\\:^\\\\^\\\"^\\.^\\[^\\]^\\s]";
- private static String DOMAIN = "(" + ATOM + "+(\\." + ATOM + "+)*";
- private static String IP_DOMAIN = "\\[[0-9]{1,3}\\.[0-9]{1,3}\\.[0-9]{1,3}\\.[0-9]{1,3}\\]";
- public static final java.util.regex.Pattern DEFAULT_EMAIL_PATTERN;
-
- static {
- DEFAULT_EMAIL_PATTERN =
- java.util.regex.Pattern.compile("^" + ATOM + "+(\\." + ATOM + "+)*@" + DOMAIN + "|" + IP_DOMAIN + ")$",
- java.util.regex.Pattern.CASE_INSENSITIVE);
- }
-
- /**
- * Learn whether a given object is a valid email address.
- *
- * @param value
- * to check
- * @return <code>true</code> if the validation passes
- */
- public static boolean isValid(Object value) {
- return isValid(value, DEFAULT_EMAIL_PATTERN);
- }
-
- /**
- * Learn whether a particular value matches a given pattern per
- * {@link Matcher#matches()}.
- *
- * @param value
- * @param aPattern
- * @return <code>true</code> if <code>value</code> was a <code>String</code>
- * matching <code>aPattern</code>
- */
- // TODO it would seem to make sense to move or reduce the visibility of this
- // method as it is more general than email.
- public static boolean isValid(Object value, Pattern aPattern) {
- if (value == null)
- return true;
- if (!(value instanceof CharSequence))
- return false;
- CharSequence seq = (CharSequence) value;
- if (seq.length() == 0)
- return true;
- Matcher m = aPattern.matcher(seq);
- return m.matches();
- }
-
-}
diff --git a/trunk/bval-core/src/main/java/org/apache/bval/util/AccessStrategy.java b/trunk/bval-core/src/main/java/org/apache/bval/util/AccessStrategy.java
deleted file mode 100644
index be97ebc..0000000
--- a/trunk/bval-core/src/main/java/org/apache/bval/util/AccessStrategy.java
+++ /dev/null
@@ -1,58 +0,0 @@
-/*
- * 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.bval.util;
-
-import java.lang.annotation.ElementType;
-import java.lang.reflect.Type;
-
-/**
- * Description: abstract class to encapsulate different strategies
- * to get the value of a Property. This class is designed such that
- * subclasses are intended to know internally to which property they refer,
- * with only the particular target instance being externally required
- * to calculate the property's value. One intent of this design is
- * that the notion of the very definition of a property is abstracted
- * along with the mechanism for accessing that property.<br/>
- */
-public abstract class AccessStrategy {
- /**
- * Get the value from the given instance.
- * @param instance
- * @return the value
- * @throws IllegalArgumentException in case of an error
- */
- public abstract Object get(Object instance);
-
- /**
- * Get the Java program {@link ElementType} used by this {@link AccessStrategy}
- * to determine property values.
- * @return ElementType
- */
- public abstract ElementType getElementType();
-
- /**
- * Get the type of the property
- * @return Type
- */
- public abstract Type getJavaType();
-
- /**
- * Get a name representative of this property.
- * @return String
- */
- public abstract String getPropertyName();
-}
diff --git a/trunk/bval-core/src/main/java/org/apache/bval/util/BValVersion.java b/trunk/bval-core/src/main/java/org/apache/bval/util/BValVersion.java
deleted file mode 100644
index 49c0a38..0000000
--- a/trunk/bval-core/src/main/java/org/apache/bval/util/BValVersion.java
+++ /dev/null
@@ -1,195 +0,0 @@
-/*
- * 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.bval.util;
-
-import java.io.InputStream;
-import java.io.IOException;
-import java.util.Properties;
-import java.util.StringTokenizer;
-
-/**
- * This class contains version information for BVal.
- * It uses Ant's filter tokens to convert the template into a java
- * file with current information.
- */
-public class BValVersion {
-
- /** Project name */
- public static final String PROJECT_NAME = "Apache BVal";
- /** Unique id of the current project/version/revision */
- public static final String PROJECT_ID;
- /** Version number */
- public static final String VERSION_NUMBER;
- /** Major release number */
- public static final int MAJOR_RELEASE;
- /** Minor release number */
- public static final int MINOR_RELEASE;
- /** Patch/point release number */
- public static final int PATCH_RELEASE;
- /** Release status */
- public static final String RELEASE_STATUS;
- /** Version control revision number */
- public static final String REVISION_NUMBER;
-
- static {
- Properties revisionProps = new Properties();
- try {
- InputStream in = BValVersion.class.getResourceAsStream
- ("/META-INF/org.apache.bval.revision.properties");
- if (in != null) {
- try {
- revisionProps.load(in);
- } finally {
- in.close();
- }
- }
- } catch (IOException ioe) {
- }
-
- String vers = revisionProps.getProperty("project.version");
- if (vers == null || "".equals(vers.trim()))
- vers = "0.0.0";
- VERSION_NUMBER = vers;
-
- StringTokenizer tok = new StringTokenizer(VERSION_NUMBER, ".-");
- int major, minor, patch;
- try {
- major = tok.hasMoreTokens() ? Integer.parseInt(tok.nextToken()) : 0;
- } catch (Exception e) {
- major = 0;
- }
-
- try {
- minor = tok.hasMoreTokens() ? Integer.parseInt(tok.nextToken()) : 0;
- } catch (Exception e) {
- minor = 0;
- }
-
- try {
- patch = tok.hasMoreTokens() ? Integer.parseInt(tok.nextToken()) : 0;
- } catch (Exception e) {
- patch = 0;
- }
-
- String revision = revisionProps.getProperty("svn.revision");
- if (revision == null || "".equals(revision.trim())) {
- revision = "unknown";
- } else {
- tok = new StringTokenizer(revision, ":");
- String strTok = null;
- while (tok.hasMoreTokens()) {
- try {
- strTok = tok.nextToken();
- } catch (Exception e) {
- }
- }
- if (strTok != null)
- revision = strTok;
- }
-
- MAJOR_RELEASE = major;
- MINOR_RELEASE = minor;
- PATCH_RELEASE = patch;
- RELEASE_STATUS = tok.hasMoreTokens() ? tok.nextToken("!") : "";
- REVISION_NUMBER = revision;
- PROJECT_ID = PROJECT_NAME + " " + VERSION_NUMBER + "-r" + REVISION_NUMBER;
- }
-
- /**
- * Get the project version number.
- * @return String
- */
- public static String getVersion() {
- return VERSION_NUMBER;
- }
-
- /**
- * Get the version control revision number.
- * @return String
- */
- public static String getRevision() {
- return REVISION_NUMBER;
- }
-
- /**
- * Get the project name.
- * @return String
- */
- public static String getName() {
- return PROJECT_NAME;
- }
-
- /**
- * Get the fully-qualified project id.
- * @return String
- */
- public static String getID() {
- return PROJECT_ID;
- }
-
- /**
- * Main method of this class that prints the {@link #toString()} to <code>System.out</code>.
- * @param args ignored
- */
- public static void main(String [] args) {
- System.out.println(new BValVersion().toString());
- }
-
- /**
- * {@inheritDoc}
- */
- public String toString() {
- StringBuilder buf = new StringBuilder(80 * 40);
- appendBanner(buf);
- buf.append("\n");
-
- appendProperty("os.name", buf).append("\n");
- appendProperty("os.version", buf).append("\n");
- appendProperty("os.arch", buf).append("\n\n");
-
- appendProperty("java.version", buf).append("\n");
- appendProperty("java.vendor", buf).append("\n\n");
-
- buf.append("java.class.path:\n");
- StringTokenizer tok = new StringTokenizer(
- PrivilegedActions.getProperty("java.class.path"));
- while (tok.hasMoreTokens()) {
- buf.append("\t").append(tok.nextToken());
- buf.append("\n");
- }
- buf.append("\n");
-
- appendProperty("user.dir", buf).append("\n");
- return buf.toString();
- }
-
- private void appendBanner(StringBuilder buf) {
- buf.append("Project").append(": ").append(getName());
- buf.append("\n");
- buf.append("Version").append(": ").append(getVersion());
- buf.append("\n");
- buf.append("Revision").append(": ").append(getRevision());
- buf.append("\n");
- }
-
- private StringBuilder appendProperty(String prop, StringBuilder buf) {
- return buf.append(prop).append(": ").append(
- PrivilegedActions.getProperty(prop));
- }
-}
diff --git a/trunk/bval-core/src/main/java/org/apache/bval/util/FieldAccess.java b/trunk/bval-core/src/main/java/org/apache/bval/util/FieldAccess.java
deleted file mode 100644
index 9cbc31e..0000000
--- a/trunk/bval-core/src/main/java/org/apache/bval/util/FieldAccess.java
+++ /dev/null
@@ -1,113 +0,0 @@
-/*
- * 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.bval.util;
-
-import java.lang.annotation.ElementType;
-import java.lang.reflect.Field;
-import java.lang.reflect.Type;
-import java.security.AccessController;
-import java.security.PrivilegedAction;
-
-/**
- * Description: direct field access strategy.<br/>
- */
-public class FieldAccess extends AccessStrategy {
-
- private final Field field;
-
- /**
- * Create a new FieldAccess instance.
- * @param field
- */
- public FieldAccess(final Field field) {
- this.field = field;
- if (!field.isAccessible()) {
- run(new PrivilegedAction<Void>() {
- public Void run() {
- field.setAccessible(true);
- return null;
- }
- });
- }
- }
-
- /**
- * {@inheritDoc}
- */
- public Object get(final Object instance) {
- try {
- return field.get(instance);
- } catch (IllegalAccessException e) {
- throw new IllegalArgumentException(e);
- }
- }
-
- /**
- * {@inheritDoc}
- */
- public ElementType getElementType() {
- return ElementType.FIELD;
- }
-
- /**
- * {@inheritDoc}
- */
- public Type getJavaType() {
- return field.getGenericType();
- }
-
- /**
- * {@inheritDoc}
- */
- public String getPropertyName() {
- return field.getName();
- }
-
- /**
- * {@inheritDoc}
- */
- public String toString() {
- return field.toString();
- }
-
- /**
- * {@inheritDoc}
- */
- public boolean equals(Object o) {
- if (this == o) return true;
- if (o == null || getClass() != o.getClass()) return false;
-
- FieldAccess that = (FieldAccess) o;
-
- return field.equals(that.field);
- }
-
- /**
- * {@inheritDoc}
- */
- public int hashCode() {
- return field.hashCode();
- }
-
- private static <T> T run(PrivilegedAction<T> action) {
- if (System.getSecurityManager() != null) {
- return AccessController.doPrivileged(action);
- } else {
- return action.run();
- }
- }
-}
diff --git a/trunk/bval-core/src/main/java/org/apache/bval/util/IndexedAccess.java b/trunk/bval-core/src/main/java/org/apache/bval/util/IndexedAccess.java
deleted file mode 100644
index 315c25e..0000000
--- a/trunk/bval-core/src/main/java/org/apache/bval/util/IndexedAccess.java
+++ /dev/null
@@ -1,120 +0,0 @@
-/**
- * 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.bval.util;
-
-import java.lang.annotation.ElementType;
-import java.lang.reflect.Array;
-import java.lang.reflect.Type;
-import java.lang.reflect.TypeVariable;
-import java.util.List;
-import java.util.Map;
-
-import org.apache.commons.lang3.reflect.TypeUtils;
-
-/**
- * {@link AccessStrategy} to get an indexed member of an {@link Iterable} or
- * array object.
- */
-public class IndexedAccess extends AccessStrategy {
- private static final TypeVariable<?> ITERABLE_TYPE = Iterable.class.getTypeParameters()[0];
-
- /**
- * Get the Java element type of a particular container type.
- *
- * @param containerType
- * @return Type or <code>null</code> if <code>containerType</code> is not
- * some type of {@link Iterable} or array
- */
- public static Type getJavaElementType(Type containerType) {
- if (TypeUtils.isArrayType(containerType)) {
- return TypeUtils.getArrayComponentType(containerType);
- }
- if (TypeUtils.isAssignable(containerType, Iterable.class)) {
- Map<TypeVariable<?>, Type> typeArguments = TypeUtils.getTypeArguments(containerType, Iterable.class);
- return typeArguments.containsKey(ITERABLE_TYPE) ? typeArguments.get(ITERABLE_TYPE) : Object.class;
- }
- return null;
- }
-
- private Type containerType;
- private Integer index;
-
- /**
- * Create a new IndexedAccessStrategy instance.
- *
- * @param containerType
- * @param index
- */
- public IndexedAccess(Type containerType, Integer index) {
- super();
- this.containerType = containerType;
- this.index = index;
- }
-
- /**
- * {@inheritDoc}
- */
- @Override
- public Object get(Object instance) {
- if (index == null) {
- throw new UnsupportedOperationException("Cannot read null index");
- }
- if (instance != null && instance.getClass().isArray()) {
- if (Array.getLength(instance) - index > 0) {
- return Array.get(instance, index);
- }
- } else if (instance instanceof List<?>) {
- List<?> list = (List<?>) instance;
- if (list.size() - index > 0) {
- return list.get(index);
- }
- } else if (instance instanceof Iterable<?>) {
- int i = 0;
- for (Object o : (Iterable<?>) instance) {
- if (++i == index) {
- return o;
- }
- }
- }
- return null;
- }
-
- /**
- * {@inheritDoc}
- */
- @Override
- public ElementType getElementType() {
- return ElementType.METHOD;
- }
-
- /**
- * {@inheritDoc}
- */
- @Override
- public Type getJavaType() {
- return getJavaElementType(containerType);
- }
-
- /**
- * {@inheritDoc}
- */
- @Override
- public String getPropertyName() {
- return String.format("[%d]", index);
- }
-
-}
diff --git a/trunk/bval-core/src/main/java/org/apache/bval/util/KeyedAccess.java b/trunk/bval-core/src/main/java/org/apache/bval/util/KeyedAccess.java
deleted file mode 100644
index 6050502..0000000
--- a/trunk/bval-core/src/main/java/org/apache/bval/util/KeyedAccess.java
+++ /dev/null
@@ -1,121 +0,0 @@
-/**
- * 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.bval.util;
-
-import java.lang.annotation.ElementType;
-import java.lang.reflect.Type;
-import java.lang.reflect.TypeVariable;
-import java.util.Map;
-
-import org.apache.commons.lang3.reflect.TypeUtils;
-
-/**
- * {@link AccessStrategy} to get a keyed value from a {@link Map}. Contains
- * special handling when a string key is used against a container type whose key
- * parameter is not assignable from {@link String}: against a map whose key type
- * is an enum class, it will be interpreted as a named enum constant; other key
- * types will be compared via {@link Object#toString()}.
- */
-public class KeyedAccess extends AccessStrategy {
- private static final TypeVariable<?>[] MAP_TYPEVARS = Map.class.getTypeParameters();
-
- /**
- * Get the Java element type of a particular container type.
- *
- * @param containerType
- * @return Type or <code>null</code> if <code>containerType</code> is not
- * some kind of {@link Map}
- */
- public static Type getJavaElementType(Type containerType) {
- if (TypeUtils.isAssignable(containerType, Map.class)) {
- Map<TypeVariable<?>, Type> typeArguments = TypeUtils.getTypeArguments(containerType, Map.class);
- return typeArguments.containsKey(MAP_TYPEVARS[1]) ? typeArguments.get(MAP_TYPEVARS[1]) : Object.class;
- }
- return null;
- }
-
- private Type containerType;
- private Object key;
-
- /**
- * Create a new KeyedAccess instance.
- *
- * @param containerType
- * @param key
- */
- public KeyedAccess(Type containerType, Object key) {
- super();
- this.containerType = containerType;
- this.key = key;
- }
-
- /**
- * {@inheritDoc}
- */
- @Override
- public Object get(Object instance) {
- if (instance instanceof Map<?, ?>) {
- Map<?, ?> map = (Map<?, ?>) instance;
- Map<TypeVariable<?>, Type> typeArguments = TypeUtils.getTypeArguments(containerType, Map.class);
- Type keyType = typeArguments.get(MAP_TYPEVARS[0]);
- if (key == null || keyType == null || TypeUtils.isInstance(key, keyType)) {
- return map.get(key);
- }
- if (key instanceof String) {
- String name = (String) key;
- Class<?> rawKeyType = TypeUtils.getRawType(keyType, containerType);
- if (rawKeyType.isEnum()) {
- @SuppressWarnings({ "unchecked", "rawtypes" })
- final Object result = map.get(Enum.valueOf((Class<? extends Enum>) rawKeyType, name));
- return result;
- }
- for (Map.Entry<?, ?> e : map.entrySet()) {
- if (name.equals(e.getKey())) {
- return e.getValue();
- }
- }
- }
- }
- return null;
- }
-
- /**
- * {@inheritDoc}
- */
- @Override
- public ElementType getElementType() {
- return ElementType.METHOD;
- }
-
- /**
- * {@inheritDoc}
- */
- @Override
- public Type getJavaType() {
- Type result = getJavaElementType(containerType);
- return result == null ? Object.class : result;
- }
-
- /**
- * {@inheritDoc}
- */
- @Override
- public String getPropertyName() {
- return String.format("[%s]", key);
- }
-
-}
diff --git a/trunk/bval-core/src/main/java/org/apache/bval/util/MethodAccess.java b/trunk/bval-core/src/main/java/org/apache/bval/util/MethodAccess.java
deleted file mode 100644
index 2583fbb..0000000
--- a/trunk/bval-core/src/main/java/org/apache/bval/util/MethodAccess.java
+++ /dev/null
@@ -1,155 +0,0 @@
-/*
- * 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.bval.util;
-
-import java.beans.Introspector;
-import java.lang.annotation.ElementType;
-import java.lang.reflect.InvocationTargetException;
-import java.lang.reflect.Method;
-import java.lang.reflect.Type;
-import java.security.AccessController;
-import java.security.PrivilegedAction;
-
-/**
- * Description: invoke a zero-argument method (getter)<br/>
- */
-public class MethodAccess extends AccessStrategy {
- private final Method method;
- private final String propertyName;
-
- /**
- * Create a new MethodAccess instance.
- * @param method
- */
- public MethodAccess(Method method) {
- this(getPropertyName(method), method);
- }
-
- /**
- * Create a new MethodAccess instance.
- * @param propertyName
- * @param method
- */
- public MethodAccess(String propertyName, final Method method) {
- this.method = method;
- this.propertyName = propertyName;
- if (!method.isAccessible()) {
- run( new PrivilegedAction<Void>() {
- public Void run() {
- method.setAccessible(true);
- return null;
- }
- });
- }
- }
-
- /**
- * Process bean properties getter by applying the JavaBean naming conventions.
- *
- * @param member the member for which to get the property name.
- * @return The bean method name with the "is" or "get" prefix stripped off, <code>null</code>
- * the method name id not according to the JavaBeans standard.
- */
- public static String getPropertyName(Method member) {
- String name = null;
- String methodName = member.getName();
- if (methodName.startsWith("is")) {
- name = Introspector.decapitalize(methodName.substring(2));
- } /* else if ( methodName.startsWith("has")) {
- name = Introspector.decapitalize( methodName.substring( 3 ) );
- } */
- // setter annotation is NOT supported in the spec
- /* else if (method.getName().startsWith("set") && method.getParameterTypes().length == 1) {
- propName = Introspector.decapitalize(method.getName().substring(3));
- } */
- else if (methodName.startsWith("get")) {
- name = Introspector.decapitalize(methodName.substring(3));
- }
- return name;
- }
-
- /**
- * {@inheritDoc}
- * normally the propertyName of the getter method, e.g.<br>
- * method: getName() -> propertyName: name<br>
- * method: isValid() -> propertyName: valid<br>
- */
- public String getPropertyName() {
- return propertyName;
- }
-
- /**
- * {@inheritDoc}
- */
- public Object get(final Object instance) {
- try {
- return method.invoke(instance);
- } catch (IllegalAccessException e) {
- throw new IllegalArgumentException(e);
- } catch (InvocationTargetException e) {
- throw new IllegalArgumentException(e);
- }
- }
-
- /**
- * {@inheritDoc}
- */
- public ElementType getElementType() {
- return ElementType.METHOD;
- }
-
- /**
- * {@inheritDoc}
- */
- public Type getJavaType() {
- return method.getGenericReturnType();
- }
-
- /**
- * {@inheritDoc}
- */
- public String toString() {
- return method.toString();
- }
-
- /**
- * {@inheritDoc}
- */
- public boolean equals(Object o) {
- if (this == o) return true;
- if (o == null || getClass() != o.getClass()) return false;
-
- MethodAccess that = (MethodAccess) o;
-
- return method.equals(that.method);
- }
-
- /**
- * {@inheritDoc}
- */
- public int hashCode() {
- return method.hashCode();
- }
-
- private static <T> T run(PrivilegedAction<T> action) {
- if (System.getSecurityManager() != null) {
- return AccessController.doPrivileged(action);
- } else {
- return action.run();
- }
- }
-}
diff --git a/trunk/bval-core/src/main/java/org/apache/bval/util/PrivilegedActions.java b/trunk/bval-core/src/main/java/org/apache/bval/util/PrivilegedActions.java
deleted file mode 100644
index 26c0936..0000000
--- a/trunk/bval-core/src/main/java/org/apache/bval/util/PrivilegedActions.java
+++ /dev/null
@@ -1,189 +0,0 @@
-/*
- * 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.bval.util;
-
-import java.lang.annotation.Annotation;
-import java.lang.reflect.InvocationTargetException;
-import java.lang.reflect.Method;
-import java.security.AccessController;
-import java.security.PrivilegedAction;
-import java.security.PrivilegedActionException;
-import java.security.PrivilegedExceptionAction;
-
-import org.apache.commons.lang3.ClassUtils;
-
-/**
- * Description: utility methods to perform actions with AccessController or without. <br/>
- */
-public class PrivilegedActions {
- private static String lineSeparator = null;
- private static String pathSeparator = null;
-
- /**
- * Return the value of the "line.separator" system property.
- *
- * Requires security policy:
- * 'permission java.util.PropertyPermission "read";'
- */
- @Deprecated // unused method - will remove in future release
- public static final String getLineSeparator() {
- if (lineSeparator == null) {
- lineSeparator =
- AccessController.doPrivileged(new PrivilegedAction<String>() {
- public String run() {
- return System.getProperty("line.separator");
- }
- });
- }
- return lineSeparator;
- }
-
- /**
- * Return the value of the "path.separator" system property.
- *
- * Requires security policy:
- * 'permission java.util.PropertyPermission "read";'
- */
- @Deprecated // unused method - will remove in future release
- public static final String getPathSeparator() {
- if (pathSeparator == null) {
- pathSeparator =
- AccessController.doPrivileged(new PrivilegedAction<String>() {
- public String run() {
- return System.getProperty("path.separator");
- }
- });
- }
- return pathSeparator;
- }
-
- /**
- * Perform action with AccessController.doPrivileged() if security if enabled.
- *
- * @param action - the action to run
- * @return result of running the action
- */
- // should not be called by just anyone; do not increase access
- private static <T> T run(PrivilegedAction<T> action) {
- if (System.getSecurityManager() != null) {
- return AccessController.doPrivileged(action);
- } else {
- return action.run();
- }
- }
-
- /**
- * Perform action with AccessController.doPrivileged() if security if enabled.
- *
- * @param action - the action to run
- * @return result of running the action
- */
- // should not be called by just anyone; do not increase access
- private static <T> T run(final PrivilegedExceptionAction<T> action) throws PrivilegedActionException, Exception {
- if (System.getSecurityManager() != null) {
- return AccessController.doPrivileged(action);
- } else {
- return action.run();
- }
- }
-
- /**
- * Perform AccessController.doPrivileged() action for ClassUtil.getClass()
- *
- * @return Class
- * @exception Exception
- */
- public static Class<?> getClass(final ClassLoader classLoader, final String className) throws Exception {
- return run(new PrivilegedExceptionAction<Class<?>>() {
- public Class<?> run() throws Exception {
- return ClassUtils.getClass(classLoader, className, true);
- }
- });
- }
-
- /**
- * Return a PrivilegedAction object for clazz.getDeclaredMethod().invoke().
- *
- * Requires security policy
- * 'permission java.lang.RuntimePermission "accessDeclaredMembers";'
- * 'permission java.lang.reflect.ReflectPermission "suppressAccessChecks";'
- *
- * @return Object
- * @exception IllegalAccessException, InvocationTargetException
- */
- public static Object getAnnotationValue(final Annotation annotation, final String name)
- throws IllegalAccessException, InvocationTargetException {
- return run(new PrivilegedAction<Object>() {
- public Object run() {
- Method valueMethod;
- try {
- valueMethod = annotation.annotationType().getDeclaredMethod(name);
- } catch (NoSuchMethodException ex) {
- // do nothing
- valueMethod = null;
- }
- if (null != valueMethod) {
- try {
- valueMethod.setAccessible(true);
- return valueMethod.invoke(annotation);
- } catch (Exception e) {
- throw new RuntimeException(e);
- }
- }
- return null;
- }
- });
- }
-
- /**
- * Return a PrivilegeAction object for clazz.getClassloader().
- *
- * Requires security policy:
- * 'permission java.lang.RuntimePermission "getClassLoader";'
- *
- * @return Classloader
- */
- public static ClassLoader getClassLoader(final Class<?> clazz) {
- return run(new PrivilegedAction<ClassLoader>() {
- public ClassLoader run() {
- ClassLoader cl = Thread.currentThread().getContextClassLoader();
- if (cl == null) {
- cl = clazz.getClassLoader();
- }
- return cl;
- }
- });
- }
-
- /**
- * Return a PrivilegeAction object for System.getProperty().
- *
- * Requires security policy:
- * 'permission java.util.PropertyPermission "read";'
- *
- * @return String
- */
- public static final String getProperty(final String name) {
- return run(new PrivilegedAction<String>() {
- public String run() {
- return System.getProperty(name);
- }
- });
- }
-
-}
-
diff --git a/trunk/bval-core/src/main/java/org/apache/bval/util/PropertyAccess.java b/trunk/bval-core/src/main/java/org/apache/bval/util/PropertyAccess.java
deleted file mode 100644
index d79235e..0000000
--- a/trunk/bval-core/src/main/java/org/apache/bval/util/PropertyAccess.java
+++ /dev/null
@@ -1,218 +0,0 @@
-/*
- * 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.bval.util;
-
-import org.apache.commons.beanutils.PropertyUtils;
-
-import java.beans.PropertyDescriptor;
-import java.lang.annotation.ElementType;
-import java.lang.reflect.Field;
-import java.lang.reflect.InvocationTargetException;
-import java.lang.reflect.Method;
-import java.lang.reflect.Type;
-import java.util.Map;
-
-/**
- * Description: Undefined dynamic strategy (FIELD or METHOD access) Uses PropertyUtils or tries to determine field to
- * access the value<br/>
- */
-public class PropertyAccess extends AccessStrategy {
- private final Class<?> beanClass;
- private final String propertyName;
- private Field rememberField;
-
- /**
- * Create a new PropertyAccess instance.
- *
- * @param clazz
- * @param propertyName
- */
- public PropertyAccess(Class<?> clazz, String propertyName) {
- this.beanClass = clazz;
- this.propertyName = propertyName;
- }
-
- /**
- * {@inheritDoc}
- */
- public ElementType getElementType() {
- return rememberField != null ? ElementType.FIELD : ElementType.METHOD;
- }
-
- private static Object getPublicProperty(Object bean, String property) throws InvocationTargetException,
- NoSuchMethodException, IllegalAccessException {
- if (bean instanceof Map<?, ?>) {
- return ((Map<?, ?>) bean).get(property);
- } else { // supports DynaBean and standard Objects
- return PropertyUtils.getSimpleProperty(bean, property);
- }
- }
-
- /**
- * Get a named property from <code>bean</code>.
- *
- * @param bean
- * @param propertyName
- * @return Object found
- * @throws InvocationTargetException
- * @throws NoSuchMethodException
- * @throws IllegalAccessException
- */
- public static Object getProperty(Object bean, String propertyName) throws InvocationTargetException,
- NoSuchMethodException, IllegalAccessException {
- return new PropertyAccess(bean.getClass(), propertyName).get(bean);
- }
-
- /**
- * {@inheritDoc}
- */
- public String toString() {
- return "Property{" + beanClass.getName() + '.' + propertyName + '}';
- }
-
- /**
- * {@inheritDoc}
- */
- public Type getJavaType() {
- Type result = getTypeInner();
- return result == null ? Object.class : result;
- }
-
- /**
- * Learn whether this {@link PropertyAccess} references a known property.
- *
- * @return boolean
- */
- public boolean isKnown() {
- return getTypeInner() != null;
- }
-
- /**
- * Find out what, if any, type can be calculated.
- *
- * @return type found or <code>null</code>
- */
- private Type getTypeInner() {
- if (rememberField != null) {
- return rememberField.getGenericType();
- }
- Method readMethod = getPropertyReadMethod(propertyName, beanClass);
- if (readMethod != null) {
- return readMethod.getGenericReturnType();
- }
- Field fld = getField(propertyName, beanClass);
- if (fld != null) {
- cacheField(fld);
- return rememberField.getGenericType();
- }
- return null;
- }
-
- private static Method getPropertyReadMethod(String propertyName, Class<?> beanClass) {
- for (PropertyDescriptor each : PropertyUtils.getPropertyDescriptors(beanClass)) {
- if (each.getName().equals(propertyName)) {
- return each.getReadMethod();
- }
- }
- return null;
- }
-
- private static Field getField(String propertyName, Class<?> beanClass) {
- try { // try public field
- return beanClass.getField(propertyName);
- } catch (NoSuchFieldException ex2) {
- // search for private/protected field up the hierarchy
- Class<?> theClass = beanClass;
- while (theClass != null) {
- try {
- return theClass.getDeclaredField(propertyName);
- } catch (NoSuchFieldException ex3) {
- // do nothing
- }
- theClass = theClass.getSuperclass();
- }
- }
- return null;
- }
-
- /**
- * {@inheritDoc}
- */
- public String getPropertyName() {
- return propertyName;
- }
-
- /**
- * {@inheritDoc}
- */
- public Object get(Object bean) {
- try {
- if (rememberField != null) { // cache field of previous access
- return rememberField.get(bean);
- }
- try { // try public method
- return getPublicProperty(bean, propertyName);
- } catch (NoSuchMethodException ex) {
- return getFieldValue(bean);
- }
- } catch (IllegalArgumentException e) {
- throw e;
- } catch (Exception e) {
- throw new IllegalArgumentException("cannot access " + propertyName, e);
- }
- }
-
- private Object getFieldValue(Object bean) throws IllegalAccessException {
- Field field = getField(propertyName, beanClass);
- if (field != null) {
- cacheField(field);
- return rememberField.get(bean);
- }
- throw new IllegalArgumentException("cannot access field " + propertyName);
- }
-
- private void cacheField(Field field) {
- if (!field.isAccessible()) {
- field.setAccessible(true);
- }
- this.rememberField = field;
- }
-
- /**
- * {@inheritDoc}
- */
- public boolean equals(Object o) {
- if (this == o)
- return true;
- if (o == null || getClass() != o.getClass())
- return false;
-
- PropertyAccess that = (PropertyAccess) o;
-
- return beanClass.equals(that.beanClass) && propertyName.equals(that.propertyName);
- }
-
- /**
- * {@inheritDoc}
- */
- public int hashCode() {
- int result;
- result = beanClass.hashCode();
- result = 31 * result + propertyName.hashCode();
- return result;
- }
-}
diff --git a/trunk/bval-core/src/main/java/org/apache/bval/util/ValidationHelper.java b/trunk/bval-core/src/main/java/org/apache/bval/util/ValidationHelper.java
deleted file mode 100644
index 35677c8..0000000
--- a/trunk/bval-core/src/main/java/org/apache/bval/util/ValidationHelper.java
+++ /dev/null
@@ -1,236 +0,0 @@
-/*
- * 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.bval.util;
-
-import java.util.List;
-import java.util.Map;
-import org.apache.bval.DynamicMetaBean;
-import org.apache.bval.model.MetaBean;
-import org.apache.bval.model.MetaProperty;
-import org.apache.bval.model.Validation;
-import org.apache.bval.model.ValidationContext;
-import org.apache.bval.model.ValidationListener;
-
-
-/**
- * Stateless helper methods used by the validators.
- *
- * @author Carlos Vara
- */
-public class ValidationHelper {
-
- /**
- * Interface implemented by the call-back object passed to
- * {@link ValidationHelper#validateContext(ValidationContext, ValidateCallback, boolean)}
- * . Its {@link #validate()} method will be called accordingly for every
- * dispatch.
- */
- public static interface ValidateCallback {
- void validate();
- }
-
- /**
- * validate a complex 'bean' with related beans according to
- * validation rules in 'metaBean'
- *
- * @param context
- * - the context is initialized with: <br>
- * bean - the root object start validation at
- * or a collection of root objects <br>
- * metaBean - the meta information for the root
- * object(s)
- * @param context
- * The current validation context.
- */
- static public void validateContext(ValidationContext<?> context, ValidateCallback s, boolean treatMapsLikeBeans) {
- if (context.getBean() != null) {
- if (!treatMapsLikeBeans && context.getBean() instanceof Map<?, ?>) {
- validateMapInContext(context, s);
- } else if (context.getBean() instanceof Iterable<?>) {
- validateIterableInContext(context, s);
- } else if (context.getBean() instanceof Object[]) {
- validateArrayInContext(context, s);
- } else { // to One Bean (or Map like Bean)
- validateBeanInContext(context, s);
- }
- }
- }
-
- /**
- * Validates a single object.
- *
- * @param <VL>
- * @param context
- * The validation context, its current bean must be a single
- * object.
- * @param s
- */
- static protected <VL extends ValidationListener> void validateBeanInContext(ValidationContext<VL> context, ValidateCallback s) {
- if (getDynamicMetaBean(context) != null) {
- context.setMetaBean(getDynamicMetaBean(context).resolveMetaBean(context.getBean()));
- }
- s.validate();
- }
-
- /**
- * Iterates the values of an array, setting the current context
- * appropriately and validating each value.
- *
- * @param <VL>
- * @param context
- * The validation context, its current bean must be an array.
- */
- static protected <VL extends ValidationListener> void validateArrayInContext(ValidationContext<VL> context, ValidateCallback s) {
- int index = 0;
- DynamicMetaBean dyn = getDynamicMetaBean(context);
- Object[] array = (Object[]) context.getBean();
- MetaBean metaBean = context.getMetaBean();
- context.setCurrentIndex(null);
- try {
- for (Object each : array) {
- context.setCurrentIndex(index++);
- if (each == null) {
- continue; // Null values are not validated
- }
- if (dyn != null) {
- context.setBean(each, dyn.resolveMetaBean(each));
- } else {
- context.setBean(each);
- }
- s.validate();
- }
- } finally {
- context.moveUp(array, metaBean);
- }
- }
-
- /**
- * Iterates the values of an {@link Iterable} object, setting the current
- * context appropriately and validating each value.
- *
- * @param <VL>
- * @param context
- * The validation context, its current bean must implement
- * {@link Iterable}.
- */
- static protected <VL extends ValidationListener> void validateIterableInContext(ValidationContext<VL> context, ValidateCallback s) {
-
- final boolean positional = context.getBean() instanceof List<?>;
- int index = 0;
- Iterable<?> iterable = (Iterable<?>) context.getBean();
- MetaBean metaBean = context.getMetaBean();
- context.setCurrentIndex(null);
-
- try {
- // jsr303 spec: Each object provided by the iterator is validated.
- final DynamicMetaBean dyn = getDynamicMetaBean(context);
- for (Object each : iterable) {
- if (positional) {
- context.setCurrentIndex(index++);
- }
- if (each == null) {
- continue; // Null values are not validated
- }
- if (dyn != null) {
- context.setBean(each, dyn.resolveMetaBean(each));
- } else {
- context.setBean(each);
- }
- s.validate();
- }
- } finally {
- context.moveUp(iterable, metaBean);
- }
- }
-
- /**
- * Iterates the values of a {@link Map}, setting the current context
- * appropriately and validating each value.
- *
- * @param <VL>
- * @param context
- * The validation context, its current bean must implement
- * {@link Map}.
- */
- static protected <VL extends ValidationListener> void validateMapInContext(ValidationContext<VL> context, ValidateCallback s) {
- // jsr303 spec: For Map, the value of each Map.Entry is validated (key
- // is not validated).
- Map<?, ?> currentBean = (Map<?, ?>) context.getBean();
- MetaBean metaBean = context.getMetaBean();
- final DynamicMetaBean dyn = getDynamicMetaBean(context);
- context.setCurrentKey(null);
- try {
- for (Map.Entry<?, ?> entry : currentBean.entrySet()) {
- Object value = entry.getValue();
- if (value == null) {
- continue;
- }
- context.setCurrentKey(entry.getKey());
- if (dyn == null) {
- context.setBean(value);
- } else {
- context.setBean(value, dyn.resolveMetaBean(value));
- }
- s.validate();
- }
- } finally {
- context.moveUp(currentBean, metaBean);
- }
- }
-
- /**
- * @param <VL>
- * @param context
- * The current validation context.
- * @return the current {@link DynamicMetaBean} in context, or
- * <code>null</code> if the current meta bean is not dynamic.
- */
- static private <VL extends ValidationListener> DynamicMetaBean getDynamicMetaBean(ValidationContext<VL> context) {
- return context.getMetaBean() instanceof DynamicMetaBean ? (DynamicMetaBean) context.getMetaBean() : null;
- }
-
-
- /**
- * Validate a single bean only, no related beans will be validated.
- */
- static public <VL extends ValidationListener> void validateBean(ValidationContext<VL> context) {
- // execute all property level validations
- for (MetaProperty prop : context.getMetaBean().getProperties()) {
- context.setMetaProperty(prop);
- validateProperty(context);
- }
-
- // execute all bean level validations
- context.setMetaProperty(null);
- for (Validation validation : context.getMetaBean().getValidations()) {
- validation.validate(context);
- }
- }
-
-
- /**
- * Validate a single property only. Performs all validations
- * for this property.
- */
- static public <VL extends ValidationListener> void validateProperty(ValidationContext<VL> context) {
- for (Validation validation : context.getMetaProperty().getValidations()) {
- validation.validate(context);
- }
- }
-}
diff --git a/trunk/bval-core/src/test/java/org/apache/bval/ValidationResultsTest.java b/trunk/bval-core/src/test/java/org/apache/bval/ValidationResultsTest.java
deleted file mode 100644
index e16f9de..0000000
--- a/trunk/bval-core/src/test/java/org/apache/bval/ValidationResultsTest.java
+++ /dev/null
@@ -1,60 +0,0 @@
-/*
- * 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.bval;
-
-import junit.framework.Test;
-import junit.framework.TestCase;
-import junit.framework.TestSuite;
-import org.apache.bval.model.MetaProperty;
-
-/**
- * ValidationResults Tester.
- */
-public class ValidationResultsTest extends TestCase {
- private ValidationResults results;
-
- public ValidationResultsTest(String name) {
- super(name);
- }
-
- public void setUp() throws Exception {
- super.setUp();
- results = new ValidationResults();
- }
-
- public void tearDown() throws Exception {
- super.tearDown();
- }
-
- public void testValidationResults() throws Exception {
- assertTrue(results.isEmpty());
- BeanValidationContext<ValidationResults> ctx = new BeanValidationContext<ValidationResults>(results);
- ctx.setBean(this);
- ctx.setMetaProperty(new MetaProperty());
- ctx.getMetaProperty().setName("prop");
- results.addError("test", ctx);
- assertFalse(results.isEmpty());
- assertTrue(results.hasErrorForReason("test"));
- assertTrue(results.hasError(this, "prop"));
- assertTrue(results.hasError(this, null));
- assertFalse(results.hasError(this, "prop2"));
- }
-
- public static Test suite() {
- return new TestSuite(ValidationResultsTest.class);
- }
-}
diff --git a/trunk/bval-core/src/test/java/org/apache/bval/model/ExampleEnum.java b/trunk/bval-core/src/test/java/org/apache/bval/model/ExampleEnum.java
deleted file mode 100644
index 10f87a9..0000000
--- a/trunk/bval-core/src/test/java/org/apache/bval/model/ExampleEnum.java
+++ /dev/null
@@ -1,27 +0,0 @@
-/*
- * 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.bval.model;
-
-/**
- * Description: <br>
- * User: roman.stumm<br>
- * Date: 17.06.2010<br>
- * Time: 18:00:12<br>
- */
-public enum ExampleEnum {
- VALUE1, VALUE2, VALUE3
-}
diff --git a/trunk/bval-core/src/test/java/org/apache/bval/model/MetaPropertyTest.java b/trunk/bval-core/src/test/java/org/apache/bval/model/MetaPropertyTest.java
deleted file mode 100644
index 35b626a..0000000
--- a/trunk/bval-core/src/test/java/org/apache/bval/model/MetaPropertyTest.java
+++ /dev/null
@@ -1,51 +0,0 @@
-/*
- * 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.bval.model;
-
-import junit.framework.Test;
-import junit.framework.TestCase;
-import junit.framework.TestSuite;
-
-/**
- * MetaProperty Tester.
- *
- * @author <Authors name>
- * @since <pre>02/12/2009</pre>
- * @version 1.0
- */
-public class MetaPropertyTest extends TestCase {
- public MetaPropertyTest(String name) {
- super(name);
- }
-
-
- public void testGetTypeClass() throws Exception {
- MetaProperty prop = new MetaProperty();
- prop.setType(String.class);
- assertEquals(String.class, prop.getTypeClass());
- assertEquals(String.class, prop.getType());
- prop.setType(new DynaTypeEnum(ExampleEnum.class, ExampleEnum.VALUE1.name(),
- ExampleEnum.VALUE3.name()));
- assertEquals(ExampleEnum.class, prop.getTypeClass());
- assertEquals(2, ((DynaTypeEnum)prop.getType()).getEnumConstants().length);
- }
-
-
- public static Test suite() {
- return new TestSuite(MetaPropertyTest.class);
- }
-}
diff --git a/trunk/bval-core/src/test/resources/log4j.xml b/trunk/bval-core/src/test/resources/log4j.xml
deleted file mode 100644
index 3c4bb67..0000000
--- a/trunk/bval-core/src/test/resources/log4j.xml
+++ /dev/null
@@ -1,41 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!--
- 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.
--->
-<!DOCTYPE log4j:configuration SYSTEM "log4j.dtd">
-
-<!-- ===================================================================== -->
-<!-- -->
-<!-- Log4j Configuration -->
-<!-- -->
-<!-- ===================================================================== -->
-
-<log4j:configuration xmlns:log4j="http://jakarta.apache.org/log4j/" debug="false">
-
- <appender name="CONSOLE" class="org.apache.log4j.ConsoleAppender">
- <param name="Threshold" value="DEBUG"/>
- <layout class="org.apache.log4j.PatternLayout">
- <param name="ConversionPattern" value="%d %-5p %c - %m%n"/>
- </layout>
- </appender>
-
- <root>
- <appender-ref ref="CONSOLE"/>
- </root>
-
-</log4j:configuration>
diff --git a/trunk/bval-extras/pom.xml b/trunk/bval-extras/pom.xml
deleted file mode 100644
index bab695f..0000000
--- a/trunk/bval-extras/pom.xml
+++ /dev/null
@@ -1,105 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!--
- 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.
--->
-<!--
- Maven release plugin requires the project tag to be on a single line.
--->
-<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
-
- <modelVersion>4.0.0</modelVersion>
-
- <parent>
- <groupId>org.apache.bval</groupId>
- <artifactId>bval-parent</artifactId>
- <version>0.4</version>
- </parent>
-
- <artifactId>bval-extras</artifactId>
- <name>Apache BVal :: bval-extras (optional)</name>
- <packaging>bundle</packaging>
-
- <description>BVal - non-JSR303 routines and constraints</description>
-
- <dependencies>
- <dependency>
- <groupId>org.apache.bval</groupId>
- <artifactId>org.apache.bval.bundle</artifactId>
- <version>${project.version}</version>
- </dependency>
- <dependency>
- <groupId>junit</groupId>
- <artifactId>junit</artifactId>
- <scope>test</scope>
- </dependency>
- </dependencies>
-
- <profiles>
- <!--
- default profile using geronimo-validation_1.0_spec.jar
- active when property "ri" is not present.
- -->
- <profile>
- <id>geronimo</id>
- <activation>
- <property>
- <name>!ri</name>
- </property>
- </activation>
- <dependencies>
- <dependency>
- <groupId>org.apache.geronimo.specs</groupId>
- <artifactId>geronimo-validation_1.0_spec</artifactId>
- <!-- allow users to choose an API provider -->
- <scope>provided</scope>
- </dependency>
- </dependencies>
- </profile>
- <!--
- optional profile using javax.validation/validation-api.jar
- from RI manually active when property "-Pri" is provided.
- -->
- <profile>
- <id>ri</id>
- <activation>
- <property>
- <name>ri</name>
- </property>
- </activation>
- <dependencies>
- <dependency>
- <groupId>javax.validation</groupId>
- <artifactId>validation-api</artifactId>
- <!-- allow users to choose an API provider -->
- <scope>provided</scope>
- </dependency>
- </dependencies>
- </profile>
- </profiles>
-
- <build>
- <defaultGoal>install</defaultGoal>
-
- <resources>
- <resource>
- <directory>src/main/resources</directory>
- </resource>
- </resources>
- </build>
-
-</project>
diff --git a/trunk/bval-extras/src/main/java/org/apache/bval/extras/constraints/checkdigit/ABANumber.java b/trunk/bval-extras/src/main/java/org/apache/bval/extras/constraints/checkdigit/ABANumber.java
deleted file mode 100644
index 7e48693..0000000
--- a/trunk/bval-extras/src/main/java/org/apache/bval/extras/constraints/checkdigit/ABANumber.java
+++ /dev/null
@@ -1,54 +0,0 @@
-/*
- * 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.bval.extras.constraints.checkdigit;
-
-import static java.lang.annotation.ElementType.ANNOTATION_TYPE;
-import static java.lang.annotation.ElementType.FIELD;
-import static java.lang.annotation.ElementType.PARAMETER;
-import static java.lang.annotation.RetentionPolicy.RUNTIME;
-
-import java.lang.annotation.Documented;
-import java.lang.annotation.Retention;
-import java.lang.annotation.Target;
-
-import javax.validation.Constraint;
-import javax.validation.Payload;
-
-/**
- * <p>
- * --
- * TODO - This class is NOT part of the bean_validation spec and might disappear
- * as soon as a final version of the specification contains a similar functionality.
- * --
- * </p>
- * Description: annotation to validate a java.io.File is a directory<br/>
- */
-@Documented
-@Constraint( validatedBy = ABANumberValidator.class )
-@Target( { FIELD, ANNOTATION_TYPE, PARAMETER } )
-@Retention( RUNTIME )
-public @interface ABANumber {
-
- Class<?>[] groups() default {};
-
- String message() default "{org.apache.bval.extras.constraints.checkdigit.ABANumber.message}";
-
- Class<? extends Payload>[] payload() default {};
-
-}
diff --git a/trunk/bval-extras/src/main/java/org/apache/bval/extras/constraints/checkdigit/ABANumberValidator.java b/trunk/bval-extras/src/main/java/org/apache/bval/extras/constraints/checkdigit/ABANumberValidator.java
deleted file mode 100644
index 4eed858..0000000
--- a/trunk/bval-extras/src/main/java/org/apache/bval/extras/constraints/checkdigit/ABANumberValidator.java
+++ /dev/null
@@ -1,70 +0,0 @@
-/*
- * 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.bval.extras.constraints.checkdigit;
-
-/**
- * Modulus 10 <b>ABA Number</b> (or <b>Routing Transit Number</b> (RTN)) Check Digit
- * calculation/validation.
- * <p>
- * ABA Numbers (or Routing Transit Numbers) are a nine digit numeric code used
- * to identify American financial institutions for things such as checks or deposits
- * (ABA stands for the American Bankers Association).
- * <p>
- * Check digit calculation is based on <i>modulus 10</i> with digits being weighted
- * based on their position (from right to left) as follows:
- * <ul>
- * <li>Digits 1, 4 and & 7 are weighted 1
- * <li>Digits 2, 5 and & 8 are weighted 7
- * <li>Digits 3, 6 and & 9 are weighted 3
- * </ul>
- * <p>
- * For further information see
- * <a href="http://en.wikipedia.org/wiki/Routing_transit_number">Wikipedia -
- * Routing transit number</a>.
- */
-public final class ABANumberValidator
- extends ModulusValidator<ABANumber> {
-
- /** weighting given to digits depending on their right position */
- private static final int[] POSITION_WEIGHT = new int[] {3, 1, 7};
-
- public ABANumberValidator() {
- super(10);
- }
-
- /**
- * Calculates the <i>weighted</i> value of a character in the
- * code at a specified position.
- * <p>
- * ABA Routing numbers are weighted in the following manner:
- * <pre><code>
- * left position: 1 2 3 4 5 6 7 8 9
- * weight: 3 7 1 3 7 1 3 7 1
- * </code></pre>
- *
- * {@inheritDoc}
- */
- @Override
- protected int weightedValue( int charValue, int leftPos, int rightPos )
- throws Exception {
- int weight = POSITION_WEIGHT[rightPos % 3];
- return (charValue * weight);
- }
-
-}
diff --git a/trunk/bval-extras/src/main/java/org/apache/bval/extras/constraints/checkdigit/CUSIP.java b/trunk/bval-extras/src/main/java/org/apache/bval/extras/constraints/checkdigit/CUSIP.java
deleted file mode 100644
index 860b7d3..0000000
--- a/trunk/bval-extras/src/main/java/org/apache/bval/extras/constraints/checkdigit/CUSIP.java
+++ /dev/null
@@ -1,54 +0,0 @@
-/*
- * 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.bval.extras.constraints.checkdigit;
-
-import static java.lang.annotation.ElementType.ANNOTATION_TYPE;
-import static java.lang.annotation.ElementType.FIELD;
-import static java.lang.annotation.ElementType.PARAMETER;
-import static java.lang.annotation.RetentionPolicy.RUNTIME;
-
-import java.lang.annotation.Documented;
-import java.lang.annotation.Retention;
-import java.lang.annotation.Target;
-
-import javax.validation.Constraint;
-import javax.validation.Payload;
-
-/**
- * <p>
- * --
- * TODO - This class is NOT part of the bean_validation spec and might disappear
- * as soon as a final version of the specification contains a similar functionality.
- * --
- * </p>
- * Description: annotation to validate a java.io.File is a directory<br/>
- */
-@Documented
-@Constraint( validatedBy = CUSIPValidator.class )
-@Target( { FIELD, ANNOTATION_TYPE, PARAMETER } )
-@Retention( RUNTIME )
-public @interface CUSIP {
-
- Class<?>[] groups() default {};
-
- String message() default "{org.apache.bval.extras.constraints.checkdigit.CUSIP.message}";
-
- Class<? extends Payload>[] payload() default {};
-
-}
diff --git a/trunk/bval-extras/src/main/java/org/apache/bval/extras/constraints/checkdigit/CUSIPValidator.java b/trunk/bval-extras/src/main/java/org/apache/bval/extras/constraints/checkdigit/CUSIPValidator.java
deleted file mode 100644
index 82e8c29..0000000
--- a/trunk/bval-extras/src/main/java/org/apache/bval/extras/constraints/checkdigit/CUSIPValidator.java
+++ /dev/null
@@ -1,86 +0,0 @@
-/*
- * 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.bval.extras.constraints.checkdigit;
-
-import static java.lang.Character.getNumericValue;
-
-/**
- * Modulus 10 <b>CUSIP</b> (North American Securities)
- * Check Digit calculation/validation.
- * <p>
- * CUSIP Numbers are 9 character alphanumeric codes used
- * to identify North American Securities.
- * <p>
- * Check digit calculation uses the <i>Modulus 10 Double Add Double</i> technique
- * with every second digit being weighted by 2. Alphabetic characters are
- * converted to numbers by their position in the alphabet starting with A being 10.
- * Weighted numbers greater than ten are treated as two separate numbers.
- * <p>
- *
- * <p>
- * See <a href="http://en.wikipedia.org/wiki/CUSIP">Wikipedia - CUSIP</a>
- * for more details.
- */
-public final class CUSIPValidator
- extends ModulusValidator<CUSIP> {
-
- /** weighting given to digits depending on their right position */
- private static final int[] POSITION_WEIGHT = new int[] {2, 1};
-
- public CUSIPValidator() {
- super(10);
- }
-
- /**
- * Calculates the <i>weighted</i> value of a character in the
- * code at a specified position.
- * <p>
- * ABA Routing numbers are weighted in the following manner:
- * <pre><code>
- * left position: 1 2 3 4 5 6 7 8 9
- * weight: 3 7 1 3 7 1 3 7 1
- * </code></pre>
- *
- * {@inheritDoc}
- */
- @Override
- protected int weightedValue( int charValue, int leftPos, int rightPos )
- throws Exception {
- int weight = POSITION_WEIGHT[rightPos % 2];
- int weightedValue = (charValue * weight);
- return sumDigits(weightedValue);
- }
-
- /**
- * {@inheritDoc}
- */
- @Override
- protected int toInt(char character, int leftPos, int rightPos) {
- int charValue = getNumericValue(character);
- if (charValue < 0 || charValue > 35) {
- throw new IllegalArgumentException("Invalid Character["
- + leftPos
- + "] = '"
- + charValue
- + "'");
- }
- return charValue;
- }
-
-}
diff --git a/trunk/bval-extras/src/main/java/org/apache/bval/extras/constraints/checkdigit/EAN13.java b/trunk/bval-extras/src/main/java/org/apache/bval/extras/constraints/checkdigit/EAN13.java
deleted file mode 100644
index d72af8f..0000000
--- a/trunk/bval-extras/src/main/java/org/apache/bval/extras/constraints/checkdigit/EAN13.java
+++ /dev/null
@@ -1,54 +0,0 @@
-/*
- * 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.bval.extras.constraints.checkdigit;
-
-import static java.lang.annotation.ElementType.ANNOTATION_TYPE;
-import static java.lang.annotation.ElementType.FIELD;
-import static java.lang.annotation.ElementType.PARAMETER;
-import static java.lang.annotation.RetentionPolicy.RUNTIME;
-
-import java.lang.annotation.Documented;
-import java.lang.annotation.Retention;
-import java.lang.annotation.Target;
-
-import javax.validation.Constraint;
-import javax.validation.Payload;
-
-/**
- * <p>
- * --
- * TODO - This class is NOT part of the bean_validation spec and might disappear
- * as soon as a final version of the specification contains a similar functionality.
- * --
- * </p>
- * Description: annotation to validate a java.io.File is a directory<br/>
- */
-@Documented
-@Constraint( validatedBy = EAN13Validator.class )
-@Target( { FIELD, ANNOTATION_TYPE, PARAMETER } )
-@Retention( RUNTIME )
-public @interface EAN13 {
-
- Class<?>[] groups() default {};
-
- String message() default "{org.apache.bval.extras.constraints.checkdigit.EAN13.message}";
-
- Class<? extends Payload>[] payload() default {};
-
-}
diff --git a/trunk/bval-extras/src/main/java/org/apache/bval/extras/constraints/checkdigit/EAN13Validator.java b/trunk/bval-extras/src/main/java/org/apache/bval/extras/constraints/checkdigit/EAN13Validator.java
deleted file mode 100644
index 4270394..0000000
--- a/trunk/bval-extras/src/main/java/org/apache/bval/extras/constraints/checkdigit/EAN13Validator.java
+++ /dev/null
@@ -1,69 +0,0 @@
-/*
- * 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.bval.extras.constraints.checkdigit;
-
-/**
- * Modulus 10 <b>EAN-13</b> / <b>UPC</b> / <b>ISBN-13</b> Check Digit
- * calculation/validation.
- * <p>
- * Check digit calculation is based on <i>modulus 10</i> with digits in
- * an <i>odd</i> position (from right to left) being weighted 1 and <i>even</i>
- * position digits being weighted 3.
- * <p>
- * For further information see:
- * <ul>
- * <li>EAN-13 - see
- * <a href="http://en.wikipedia.org/wiki/European_Article_Number">Wikipedia -
- * European Article Number</a>.</li>
- * <li>UPC - see
- * <a href="http://en.wikipedia.org/wiki/Universal_Product_Code">Wikipedia -
- * Universal Product Code</a>.</li>
- * <li>ISBN-13 - see
- * <a href="http://en.wikipedia.org/wiki/ISBN">Wikipedia - International
- * Standard Book Number (ISBN)</a>.</li>
- * </ul>
- */
-public final class EAN13Validator
- extends ModulusValidator<EAN13> {
-
- /** weighting given to digits depending on their right position */
- private static final int[] POSITION_WEIGHT = new int[] {3, 1};
-
- public EAN13Validator() {
- super(10);
- }
-
- /**
- * <p>Calculates the <i>weighted</i> value of a character in the
- * code at a specified position.</p>
- *
- * <p>For EAN-13 (from right to left) <b>odd</b> digits are weighted
- * with a factor of <b>one</b> and <b>even</b> digits with a factor
- * of <b>three</b>.</p>
- *
- * {@inheritDoc}
- */
- @Override
- protected int weightedValue( int charValue, int leftPos, int rightPos )
- throws Exception {
- int weight = POSITION_WEIGHT[rightPos % 2];
- return (charValue * weight);
- }
-
-}
diff --git a/trunk/bval-extras/src/main/java/org/apache/bval/extras/constraints/checkdigit/IBAN.java b/trunk/bval-extras/src/main/java/org/apache/bval/extras/constraints/checkdigit/IBAN.java
deleted file mode 100644
index c2f33c8..0000000
--- a/trunk/bval-extras/src/main/java/org/apache/bval/extras/constraints/checkdigit/IBAN.java
+++ /dev/null
@@ -1,54 +0,0 @@
-/*
- * 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.bval.extras.constraints.checkdigit;
-
-import static java.lang.annotation.ElementType.ANNOTATION_TYPE;
-import static java.lang.annotation.ElementType.FIELD;
-import static java.lang.annotation.ElementType.PARAMETER;
-import static java.lang.annotation.RetentionPolicy.RUNTIME;
-
-import java.lang.annotation.Documented;
-import java.lang.annotation.Retention;
-import java.lang.annotation.Target;
-
-import javax.validation.Constraint;
-import javax.validation.Payload;
-
-/**
- * <p>
- * --
- * TODO - This class is NOT part of the bean_validation spec and might disappear
- * as soon as a final version of the specification contains a similar functionality.
- * --
- * </p>
- * Description: annotation to validate a java.io.File is a directory<br/>
- */
-@Documented
-@Constraint( validatedBy = IBANValidator.class )
-@Target( { FIELD, ANNOTATION_TYPE, PARAMETER } )
-@Retention( RUNTIME )
-public @interface IBAN {
-
- Class<?>[] groups() default {};
-
- String message() default "{org.apache.bval.extras.constraints.checkdigit.IBAN.message}";
-
- Class<? extends Payload>[] payload() default {};
-
-}
diff --git a/trunk/bval-extras/src/main/java/org/apache/bval/extras/constraints/checkdigit/IBANValidator.java b/trunk/bval-extras/src/main/java/org/apache/bval/extras/constraints/checkdigit/IBANValidator.java
deleted file mode 100644
index e365ce1..0000000
--- a/trunk/bval-extras/src/main/java/org/apache/bval/extras/constraints/checkdigit/IBANValidator.java
+++ /dev/null
@@ -1,81 +0,0 @@
-/*
- * 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.bval.extras.constraints.checkdigit;
-
-import static java.lang.Character.getNumericValue;
-
-import javax.validation.ConstraintValidator;
-import javax.validation.ConstraintValidatorContext;
-
-/**
- * <b>IBAN</b> (International Bank Account Number) Check Digit calculation/validation.
- * <p>
- * This rountine is based on the ISO 7064 Mod 97,10 check digit caluclation routine.
- * <p>
- * The two check digit characters in a IBAN number are the third and fourth characters
- * in the code. For <i>check digit</i> calculation/validation the first four characters are moved
- * to the end of the code.
- * So <code>CCDDnnnnnnn</code> becomes <code>nnnnnnnCCDD</code> (where
- * <code>CC</code> is the country code and <code>DD</code> is the check digit). For
- * check digit calcualtion the check digit value should be set to zero (i.e.
- * <code>CC00nnnnnnn</code> in this example.
- * <p>
- * For further information see
- * <a href="http://en.wikipedia.org/wiki/International_Bank_Account_Number">Wikipedia -
- * IBAN number</a>.
- */
-public final class IBANValidator
- implements ConstraintValidator<IBAN, String> {
-
- private static final long MAX = 999999999;
-
- private static final long MODULUS = 97;
-
- /**
- * {@inheritDoc}
- */
- public boolean isValid(String code, ConstraintValidatorContext context) {
- if (code.length() < 5) {
- return false;
- }
-
- String reformattedCode = code.substring(4) + code.substring(0, 4);
- long total = 0;
- for (int i = 0; i < reformattedCode.length(); i++) {
- int charValue = getNumericValue(reformattedCode.charAt(i));
- if (charValue < 0 || charValue > 35) {
- return false;
- }
- total = (charValue > 9 ? total * 100 : total * 10) + charValue;
- if (total > MAX) {
- total = (total % MODULUS);
- }
- }
-
- return (total % MODULUS) == 1;
- }
-
- /**
- * {@inheritDoc}
- */
- public void initialize( IBAN iban ) {
- // not needed
- }
-
-}
diff --git a/trunk/bval-extras/src/main/java/org/apache/bval/extras/constraints/checkdigit/ISBN10.java b/trunk/bval-extras/src/main/java/org/apache/bval/extras/constraints/checkdigit/ISBN10.java
deleted file mode 100644
index 31aab70..0000000
--- a/trunk/bval-extras/src/main/java/org/apache/bval/extras/constraints/checkdigit/ISBN10.java
+++ /dev/null
@@ -1,54 +0,0 @@
-/*
- * 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.bval.extras.constraints.checkdigit;
-
-import static java.lang.annotation.ElementType.ANNOTATION_TYPE;
-import static java.lang.annotation.ElementType.FIELD;
-import static java.lang.annotation.ElementType.PARAMETER;
-import static java.lang.annotation.RetentionPolicy.RUNTIME;
-
-import java.lang.annotation.Documented;
-import java.lang.annotation.Retention;
-import java.lang.annotation.Target;
-
-import javax.validation.Constraint;
-import javax.validation.Payload;
-
-/**
- * <p>
- * --
- * TODO - This class is NOT part of the bean_validation spec and might disappear
- * as soon as a final version of the specification contains a similar functionality.
- * --
- * </p>
- * Description: annotation to validate a java.io.File is a directory<br/>
- */
-@Documented
-@Constraint( validatedBy = ISBN10Validator.class )
-@Target( { FIELD, ANNOTATION_TYPE, PARAMETER } )
-@Retention( RUNTIME )
-public @interface ISBN10 {
-
- Class<?>[] groups() default {};
-
- String message() default "{org.apache.bval.extras.constraints.checkdigit.ISBN10.message}";
-
- Class<? extends Payload>[] payload() default {};
-
-}
diff --git a/trunk/bval-extras/src/main/java/org/apache/bval/extras/constraints/checkdigit/ISBN10Validator.java b/trunk/bval-extras/src/main/java/org/apache/bval/extras/constraints/checkdigit/ISBN10Validator.java
deleted file mode 100644
index cf2c133..0000000
--- a/trunk/bval-extras/src/main/java/org/apache/bval/extras/constraints/checkdigit/ISBN10Validator.java
+++ /dev/null
@@ -1,81 +0,0 @@
-/*
- * 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.bval.extras.constraints.checkdigit;
-
-/**
- * Modulus 11 <b>ISBN-10</b> Check Digit calculation/validation.
- * <p>
- * ISBN-10 Numbers are a numeric code except for the last (check) digit
- * which can have a value of "X".
- * <p>
- * Check digit calculation is based on <i>modulus 11</i> with digits being weighted
- * based by their position, from right to left with the first digit being weighted
- * 1, the second 2 and so on. If the check digit is calculated as "10" it is converted
- * to "X".
- * <p>
- * <b>N.B.</b> From 1st January 2007 the book industry will start to use a new 13 digit
- * ISBN number (rather than this 10 digit ISBN number) which uses the EAN-13 / UPC
- * (see {@link EAN13CheckDigit}) standard.
- * <p>
- * For further information see:
- * <ul>
- * <li><a href="http://en.wikipedia.org/wiki/ISBN">Wikipedia - International
- * Standard Book Number (ISBN)</a>.</li>
- * <li><a href="http://www.isbn.org/standards/home/isbn/transition.asp">ISBN-13
- * Transition details</a>.</li>
- * </ul>
- */
-public final class ISBN10Validator
- extends ModulusValidator<ISBN10> {
-
- public ISBN10Validator() {
- super(11);
- }
-
- /**
- * Calculates the <i>weighted</i> value of a charcter in the
- * code at a specified position.
- *
- * <p>For ISBN-10 (from right to left) digits are weighted
- * by their position.</p>
- *
- * {@inheritDoc}
- */
- @Override
- protected int weightedValue( int charValue, int leftPos, int rightPos )
- throws Exception {
- return (charValue * rightPos);
- }
-
- /**
- * <p>Convert a character at a specified position to an
- * integer value.</p>
- *
- * <p>Character 'X' check digit converted to 10.</p>
- *
- * {@inheritDoc}
- */
- protected int toInt(char character, int leftPos, int rightPos) {
- if (rightPos == 1 && character == 'X') {
- return 10;
- }
- return super.toInt(character, leftPos, rightPos);
- }
-
-}
diff --git a/trunk/bval-extras/src/main/java/org/apache/bval/extras/constraints/checkdigit/Luhn.java b/trunk/bval-extras/src/main/java/org/apache/bval/extras/constraints/checkdigit/Luhn.java
deleted file mode 100644
index 03be6ca..0000000
--- a/trunk/bval-extras/src/main/java/org/apache/bval/extras/constraints/checkdigit/Luhn.java
+++ /dev/null
@@ -1,54 +0,0 @@
-/*
- * 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.bval.extras.constraints.checkdigit;
-
-import static java.lang.annotation.ElementType.ANNOTATION_TYPE;
-import static java.lang.annotation.ElementType.FIELD;
-import static java.lang.annotation.ElementType.PARAMETER;
-import static java.lang.annotation.RetentionPolicy.RUNTIME;
-
-import java.lang.annotation.Documented;
-import java.lang.annotation.Retention;
-import java.lang.annotation.Target;
-
-import javax.validation.Constraint;
-import javax.validation.Payload;
-
-/**
- * <p>
- * --
- * TODO - This class is NOT part of the bean_validation spec and might disappear
- * as soon as a final version of the specification contains a similar functionality.
- * --
- * </p>
- * Description: annotation to validate a java.io.File is a directory<br/>
- */
-@Documented
-@Constraint( validatedBy = LuhnValidator.class )
-@Target( { FIELD, ANNOTATION_TYPE, PARAMETER } )
-@Retention( RUNTIME )
-public @interface Luhn {
-
- Class<?>[] groups() default {};
-
- String message() default "{org.apache.bval.extras.constraints.checkdigit.Luhn.message}";
-
- Class<? extends Payload>[] payload() default {};
-
-}
diff --git a/trunk/bval-extras/src/main/java/org/apache/bval/extras/constraints/checkdigit/LuhnValidator.java b/trunk/bval-extras/src/main/java/org/apache/bval/extras/constraints/checkdigit/LuhnValidator.java
deleted file mode 100644
index 030fe3c..0000000
--- a/trunk/bval-extras/src/main/java/org/apache/bval/extras/constraints/checkdigit/LuhnValidator.java
+++ /dev/null
@@ -1,65 +0,0 @@
-/*
- * 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.bval.extras.constraints.checkdigit;
-
-/**
- * Modulus 10 <b>Luhn</b> Check Digit calculation/validation.
- * <p>
- * Luhn check digits are used, for example, by:
- * <ul>
- * <li><a href="http://en.wikipedia.org/wiki/Credit_card">Credit Card Numbers</a></li>
- * <li><a href="http://en.wikipedia.org/wiki/IMEI">IMEI Numbers</a> - International
- * Mobile Equipment Identity Numbers</li>
- * </ul>
- * Check digit calculation is based on <i>modulus 10</i> with digits in
- * an <i>odd</i> position (from right to left) being weighted 1 and <i>even</i>
- * position digits being weighted 2 (weighted values greater than 9 have 9 subtracted).
- * <p>
- * See <a href="http://en.wikipedia.org/wiki/Luhn_algorithm">Wikipedia</a>
- * for more details.
- */
-public final class LuhnValidator
- extends ModulusValidator<Luhn> {
-
- /** weighting given to digits depending on their right position */
- private static final int[] POSITION_WEIGHT = new int[] {2, 1};
-
- public LuhnValidator() {
- super(10);
- }
-
- /**
- * <p>Calculates the <i>weighted</i> value of a charcter in the
- * code at a specified position.</p>
- *
- * <p>For Luhn (from right to left) <b>odd</b> digits are weighted
- * with a factor of <b>one</b> and <b>even</b> digits with a factor
- * of <b>two</b>. Weighted values > 9, have 9 subtracted</p>
- *
- * {@inheritDoc}
- */
- @Override
- protected int weightedValue( int charValue, int leftPos, int rightPos )
- throws Exception {
- int weight = POSITION_WEIGHT[rightPos % 2];
- int weightedValue = (charValue * weight);
- return (weightedValue > 9 ? (weightedValue - 9) : weightedValue);
- }
-
-}
diff --git a/trunk/bval-extras/src/main/java/org/apache/bval/extras/constraints/checkdigit/ModulusValidator.java b/trunk/bval-extras/src/main/java/org/apache/bval/extras/constraints/checkdigit/ModulusValidator.java
deleted file mode 100644
index aeb7249..0000000
--- a/trunk/bval-extras/src/main/java/org/apache/bval/extras/constraints/checkdigit/ModulusValidator.java
+++ /dev/null
@@ -1,140 +0,0 @@
-/*
- * 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.bval.extras.constraints.checkdigit;
-
-import static java.lang.Character.getNumericValue;
-import static java.lang.Character.isDigit;
-
-import java.lang.annotation.Annotation;
-
-import javax.validation.ConstraintValidator;
-import javax.validation.ConstraintValidatorContext;
-
-/**
- * Abstract <b>Modulus</b> Check digit calculation/validation.
- * <p>
- * Provides a <i>base</i> class for building <i>modulus</i> Check
- * Digit routines.
- * <p>
- * This implementation only handles <i>numeric</i> codes, such as
- * <b>EAN-13</b>. For <i>alphanumeric</i> codes such as <b>EAN-128</b> you
- * will need to implement/override the <code>toInt()</code> and
- * <code>toChar()</code> methods.
- *
- * @param <A>
- */
-abstract class ModulusValidator<A extends Annotation>
- implements ConstraintValidator<A, String> {
-
- private final int modulus;
-
- public ModulusValidator(int modulus) {
- this.modulus = modulus;
- }
-
- /**
- * {@inheritDoc}
- */
- public final void initialize(A annotation) {
- // not needed ATM
- }
-
- /**
- * {@inheritDoc}
- */
- public boolean isValid(String code, ConstraintValidatorContext context) {
- if (code.length() == 0) {
- return false;
- }
- int total = 0;
- for (int i = 0; i < code.length(); i++) {
- int lth = code.length();
- int leftPos = i + 1;
- int rightPos = lth - i;
- try {
- int charValue = toInt(code.charAt(i), leftPos, rightPos);
- total += weightedValue(charValue, leftPos, rightPos);
- } catch (Throwable e) {
- return false;
- }
- }
- if (total == 0) {
- return false;
- }
- return (total % modulus) == 0;
- }
-
- /**
- * Calculates the <i>weighted</i> value of a character in the
- * code at a specified position.
- * <p>
- * Some modulus routines weight the value of a character
- * depending on its position in the code (e.g. ISBN-10), while
- * others use different weighting factors for odd/even positions
- * (e.g. EAN or Luhn). Implement the appropriate mechanism
- * required by overriding this method.
- *
- * @param charValue The numeric value of the character
- * @param leftPos The position of the character in the code, counting from left to right
- * @param rightPos The position of the character in the code, counting from right to left
- * @return The weighted value of the character
- */
- protected abstract int weightedValue(int charValue, int leftPos, int rightPos)
- throws Exception;
-
- /**
- * Convert a character at a specified position to an integer value.
- * <p>
- * <b>Note:</b> this implementation only handlers numeric values
- * For non-numeric characters, override this method to provide
- * character-->integer conversion.
- *
- * @param character The character to convert
- * @param leftPos The position of the character in the code, counting from left to right
- * @param rightPos The positionof the character in the code, counting from right to left
- * @return The integer value of the character
- */
- protected int toInt(char character, int leftPos, int rightPos) {
- if (isDigit(character)) {
- return getNumericValue(character);
- }
- throw new IllegalArgumentException("Invalid Character["
- + leftPos
- + "] = '"
- + character
- + "'");
- }
-
- /**
- * Add together the individual digits in a number.
- *
- * @param number The number whose digits are to be added
- * @return The sum of the digits
- */
- protected static int sumDigits(int number) {
- int total = 0;
- int todo = number;
- while (todo > 0) {
- total += todo % 10;
- todo = todo / 10;
- }
- return total;
- }
-
-}
diff --git a/trunk/bval-extras/src/main/java/org/apache/bval/extras/constraints/checkdigit/Sedol.java b/trunk/bval-extras/src/main/java/org/apache/bval/extras/constraints/checkdigit/Sedol.java
deleted file mode 100644
index 2c90cb0..0000000
--- a/trunk/bval-extras/src/main/java/org/apache/bval/extras/constraints/checkdigit/Sedol.java
+++ /dev/null
@@ -1,54 +0,0 @@
-/*
- * 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.bval.extras.constraints.checkdigit;
-
-import static java.lang.annotation.ElementType.ANNOTATION_TYPE;
-import static java.lang.annotation.ElementType.FIELD;
-import static java.lang.annotation.ElementType.PARAMETER;
-import static java.lang.annotation.RetentionPolicy.RUNTIME;
-
-import java.lang.annotation.Documented;
-import java.lang.annotation.Retention;
-import java.lang.annotation.Target;
-
-import javax.validation.Constraint;
-import javax.validation.Payload;
-
-/**
- * <p>
- * --
- * TODO - This class is NOT part of the bean_validation spec and might disappear
- * as soon as a final version of the specification contains a similar functionality.
- * --
- * </p>
- * Description: annotation to validate a java.io.File is a directory<br/>
- */
-@Documented
-@Constraint( validatedBy = SedolValidator.class )
-@Target( { FIELD, ANNOTATION_TYPE, PARAMETER } )
-@Retention( RUNTIME )
-public @interface Sedol {
-
- Class<?>[] groups() default {};
-
- String message() default "{org.apache.bval.extras.constraints.checkdigit.Sedol.message}";
-
- Class<? extends Payload>[] payload() default {};
-
-}
diff --git a/trunk/bval-extras/src/main/java/org/apache/bval/extras/constraints/checkdigit/SedolValidator.java b/trunk/bval-extras/src/main/java/org/apache/bval/extras/constraints/checkdigit/SedolValidator.java
deleted file mode 100644
index 4476084..0000000
--- a/trunk/bval-extras/src/main/java/org/apache/bval/extras/constraints/checkdigit/SedolValidator.java
+++ /dev/null
@@ -1,75 +0,0 @@
-/*
- * 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.bval.extras.constraints.checkdigit;
-
-import static java.lang.Character.getNumericValue;
-
-/**
- * Modulus 10 <b>SEDOL</b> (UK Securities) Check Digit calculation/validation.
- * <p>
- * SEDOL Numbers are 7 character alphanumeric codes used
- * to identify UK Securities (SEDOL stands for Stock Exchange Daily Official List).
- * <p>
- * Check digit calculation is based on <i>modulus 10</i> with digits being weighted
- * based on their position, from left to right, as follows:
- * <p>
- * <pre><code>
- * position: 1 2 3 4 5 6 7
- * weighting: 1 3 1 7 3 9 1
- * </code></pre>
- * <p>
- * See <a href="http://en.wikipedia.org/wiki/SEDOL">Wikipedia - SEDOL</a>
- * for more details.
- */
-public final class SedolValidator
- extends ModulusValidator<Sedol> {
-
- /** weighting given to digits depending on their right position */
- private static final int[] POSITION_WEIGHT = new int[] {1, 3, 1, 7, 3, 9, 1};
-
- public SedolValidator() {
- super(10);
- }
-
- /**
- * {@inheritDoc}
- */
- @Override
- protected int weightedValue( int charValue, int leftPos, int rightPos )
- throws Exception {
- return (charValue * POSITION_WEIGHT[leftPos - 1]);
- }
-
- /**
- * {@inheritDoc}
- */
- @Override
- protected int toInt( char character, int leftPos, int rightPos ) {
- int charValue = getNumericValue(character);
- if (charValue < 0 || charValue > 35) {
- throw new IllegalArgumentException("Invalid Character["
- + leftPos
- + "] = '"
- + charValue
- + "'");
- }
- return charValue;
- }
-
-}
diff --git a/trunk/bval-extras/src/main/java/org/apache/bval/extras/constraints/checkdigit/Verhoeff.java b/trunk/bval-extras/src/main/java/org/apache/bval/extras/constraints/checkdigit/Verhoeff.java
deleted file mode 100644
index abdf759..0000000
--- a/trunk/bval-extras/src/main/java/org/apache/bval/extras/constraints/checkdigit/Verhoeff.java
+++ /dev/null
@@ -1,54 +0,0 @@
-/*
- * 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.bval.extras.constraints.checkdigit;
-
-import static java.lang.annotation.ElementType.ANNOTATION_TYPE;
-import static java.lang.annotation.ElementType.FIELD;
-import static java.lang.annotation.ElementType.PARAMETER;
-import static java.lang.annotation.RetentionPolicy.RUNTIME;
-
-import java.lang.annotation.Documented;
-import java.lang.annotation.Retention;
-import java.lang.annotation.Target;
-
-import javax.validation.Constraint;
-import javax.validation.Payload;
-
-/**
- * <p>
- * --
- * TODO - This class is NOT part of the bean_validation spec and might disappear
- * as soon as a final version of the specification contains a similar functionality.
- * --
- * </p>
- * Description: annotation to validate a java.io.File is a directory<br/>
- */
-@Documented
-@Constraint( validatedBy = VerhoeffValidator.class )
-@Target( { FIELD, ANNOTATION_TYPE, PARAMETER } )
-@Retention( RUNTIME )
-public @interface Verhoeff {
-
- Class<?>[] groups() default {};
-
- String message() default "{org.apache.bval.extras.constraints.checkdigit.Verhoeff.message}";
-
- Class<? extends Payload>[] payload() default {};
-
-}
diff --git a/trunk/bval-extras/src/main/java/org/apache/bval/extras/constraints/checkdigit/VerhoeffValidator.java b/trunk/bval-extras/src/main/java/org/apache/bval/extras/constraints/checkdigit/VerhoeffValidator.java
deleted file mode 100644
index 19a9594..0000000
--- a/trunk/bval-extras/src/main/java/org/apache/bval/extras/constraints/checkdigit/VerhoeffValidator.java
+++ /dev/null
@@ -1,90 +0,0 @@
-/*
- * 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.bval.extras.constraints.checkdigit;
-
-import static java.lang.Character.getNumericValue;
-
-import javax.validation.ConstraintValidator;
-import javax.validation.ConstraintValidatorContext;
-
-/**
- * <b>Verhoeff</b> (Dihedral) Check Digit calculation/validation.
- * <p>
- * Check digit calculation for numeric codes using a
- * <a href="http://en.wikipedia.org/wiki/Dihedral_group">Dihedral Group</a>
- * of order 10.
- * <p>
- * See <a href="http://en.wikipedia.org/wiki/Verhoeff_algorithm">Wikipedia
- * - Verhoeff algorithm</a> for more details.
- */
-public final class VerhoeffValidator
- implements ConstraintValidator<Verhoeff, String> {
-
- /** D - multiplication table */
- private static final int[][] D_TABLE = new int[][] {
- {0, 1, 2, 3, 4, 5, 6, 7, 8, 9},
- {1, 2, 3, 4, 0, 6, 7, 8, 9, 5},
- {2, 3, 4, 0, 1, 7, 8, 9, 5, 6},
- {3, 4, 0, 1, 2, 8, 9, 5, 6, 7},
- {4, 0, 1, 2, 3, 9, 5, 6, 7, 8},
- {5, 9, 8, 7, 6, 0, 4, 3, 2, 1},
- {6, 5, 9, 8, 7, 1, 0, 4, 3, 2},
- {7, 6, 5, 9, 8, 2, 1, 0, 4, 3},
- {8, 7, 6, 5, 9, 3, 2, 1, 0, 4},
- {9, 8, 7, 6, 5, 4, 3, 2, 1, 0}};
-
- /** P - permutation table */
- private static final int[][] P_TABLE = new int[][] {
- {0, 1, 2, 3, 4, 5, 6, 7, 8, 9},
- {1, 5, 7, 6, 2, 8, 3, 0, 9, 4},
- {5, 8, 0, 3, 7, 9, 6, 1, 4, 2},
- {8, 9, 1, 6, 0, 4, 3, 5, 2, 7},
- {9, 4, 5, 3, 1, 2, 6, 8, 7, 0},
- {4, 2, 8, 6, 5, 7, 3, 9, 0, 1},
- {2, 7, 9, 3, 8, 0, 6, 4, 1, 5},
- {7, 0, 4, 6, 9, 1, 3, 2, 5, 8}};
-
- /**
- * {@inheritDoc}
- */
- public boolean isValid(String code, ConstraintValidatorContext context) {
- if (code.length() == 0) {
- return false;
- }
-
- int checksum = 0;
- for (int i = 0; i < code.length(); i++) {
- int idx = code.length() - (i + 1);
- int num = getNumericValue(code.charAt(idx));
- if (num < 0 || num > 9) {
- return false;
- }
- checksum = D_TABLE[checksum][P_TABLE[i % 8][num]];
- }
- return checksum == 0;
- }
-
- /**
- * {@inheritDoc}
- */
- public void initialize(Verhoeff iban) {
- // not needed
- }
-
-}
diff --git a/trunk/bval-extras/src/main/java/org/apache/bval/extras/constraints/checkdigit/package-info.java b/trunk/bval-extras/src/main/java/org/apache/bval/extras/constraints/checkdigit/package-info.java
deleted file mode 100644
index a81b2ed..0000000
--- a/trunk/bval-extras/src/main/java/org/apache/bval/extras/constraints/checkdigit/package-info.java
+++ /dev/null
@@ -1,23 +0,0 @@
-/*
- * 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.
- */
-
-/**
- * This package contains <i>Check Digit</i> validation routines.
- */
-package org.apache.bval.extras.constraints.checkdigit;
diff --git a/trunk/bval-extras/src/main/java/org/apache/bval/extras/constraints/creditcard/AmericanExpress.java b/trunk/bval-extras/src/main/java/org/apache/bval/extras/constraints/creditcard/AmericanExpress.java
deleted file mode 100644
index 4d340d3..0000000
--- a/trunk/bval-extras/src/main/java/org/apache/bval/extras/constraints/creditcard/AmericanExpress.java
+++ /dev/null
@@ -1,59 +0,0 @@
-/*
- * 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.bval.extras.constraints.creditcard;
-
-import static java.lang.annotation.ElementType.ANNOTATION_TYPE;
-import static java.lang.annotation.ElementType.FIELD;
-import static java.lang.annotation.ElementType.PARAMETER;
-import static java.lang.annotation.RetentionPolicy.RUNTIME;
-
-import java.lang.annotation.Documented;
-import java.lang.annotation.Retention;
-import java.lang.annotation.Target;
-
-import javax.validation.Constraint;
-import javax.validation.Payload;
-import javax.validation.constraints.Pattern;
-
-import org.apache.bval.extras.constraints.checkdigit.Luhn;
-
-/**
- * <p>
- * --
- * TODO - This class is NOT part of the bean_validation spec and might disappear
- * as soon as a final version of the specification contains a similar functionality.
- * --
- * </p>
- * Description: annotation to validate a java.io.File is a directory<br/>
- */
-@Documented
-@Luhn
-@Pattern(regexp="^(3[47]\\d{13})$")
-@Constraint(validatedBy={})
-@Target( { FIELD, ANNOTATION_TYPE, PARAMETER } )
-@Retention( RUNTIME )
-public @interface AmericanExpress {
-
- Class<?>[] groups() default {};
-
- String message() default "{org.apache.bval.extras.constraints.creditcard.AmericanExpress.message}";
-
- Class<? extends Payload>[] payload() default {};
-
-}
diff --git a/trunk/bval-extras/src/main/java/org/apache/bval/extras/constraints/creditcard/Diners.java b/trunk/bval-extras/src/main/java/org/apache/bval/extras/constraints/creditcard/Diners.java
deleted file mode 100644
index 3f21de8..0000000
--- a/trunk/bval-extras/src/main/java/org/apache/bval/extras/constraints/creditcard/Diners.java
+++ /dev/null
@@ -1,59 +0,0 @@
-/*
- * 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.bval.extras.constraints.creditcard;
-
-import static java.lang.annotation.ElementType.ANNOTATION_TYPE;
-import static java.lang.annotation.ElementType.FIELD;
-import static java.lang.annotation.ElementType.PARAMETER;
-import static java.lang.annotation.RetentionPolicy.RUNTIME;
-
-import java.lang.annotation.Documented;
-import java.lang.annotation.Retention;
-import java.lang.annotation.Target;
-
-import javax.validation.Constraint;
-import javax.validation.Payload;
-import javax.validation.constraints.Pattern;
-
-import org.apache.bval.extras.constraints.checkdigit.Luhn;
-
-/**
- * <p>
- * --
- * TODO - This class is NOT part of the bean_validation spec and might disappear
- * as soon as a final version of the specification contains a similar functionality.
- * --
- * </p>
- * Description: annotation to validate a java.io.File is a directory<br/>
- */
-@Documented
-@Luhn
-@Pattern(regexp="^(30[0-5]\\d{11}|3095\\d{10}|36\\d{12}|3[8-9]\\d{12})$")
-@Constraint(validatedBy={})
-@Target( { FIELD, ANNOTATION_TYPE, PARAMETER } )
-@Retention( RUNTIME )
-public @interface Diners {
-
- Class<?>[] groups() default {};
-
- String message() default "{org.apache.bval.extras.constraints.creditcard.Diners.message}";
-
- Class<? extends Payload>[] payload() default {};
-
-}
diff --git a/trunk/bval-extras/src/main/java/org/apache/bval/extras/constraints/creditcard/Discover.java b/trunk/bval-extras/src/main/java/org/apache/bval/extras/constraints/creditcard/Discover.java
deleted file mode 100644
index 56c3ca9..0000000
--- a/trunk/bval-extras/src/main/java/org/apache/bval/extras/constraints/creditcard/Discover.java
+++ /dev/null
@@ -1,59 +0,0 @@
-/*
- * 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.bval.extras.constraints.creditcard;
-
-import static java.lang.annotation.ElementType.ANNOTATION_TYPE;
-import static java.lang.annotation.ElementType.FIELD;
-import static java.lang.annotation.ElementType.PARAMETER;
-import static java.lang.annotation.RetentionPolicy.RUNTIME;
-
-import java.lang.annotation.Documented;
-import java.lang.annotation.Retention;
-import java.lang.annotation.Target;
-
-import javax.validation.Constraint;
-import javax.validation.Payload;
-import javax.validation.constraints.Pattern;
-
-import org.apache.bval.extras.constraints.checkdigit.Luhn;
-
-/**
- * <p>
- * --
- * TODO - This class is NOT part of the bean_validation spec and might disappear
- * as soon as a final version of the specification contains a similar functionality.
- * --
- * </p>
- * Description: annotation to validate a java.io.File is a directory<br/>
- */
-@Documented
-@Luhn
-@Pattern(regexp="^((6011\\d{12})|(64[4-9]\\d{13})|(65\\d{14}))$")
-@Constraint(validatedBy={})
-@Target( { FIELD, ANNOTATION_TYPE, PARAMETER } )
-@Retention( RUNTIME )
-public @interface Discover {
-
- Class<?>[] groups() default {};
-
- String message() default "{org.apache.bval.extras.constraints.creditcard.Discover.message}";
-
- Class<? extends Payload>[] payload() default {};
-
-}
diff --git a/trunk/bval-extras/src/main/java/org/apache/bval/extras/constraints/creditcard/Mastercard.java b/trunk/bval-extras/src/main/java/org/apache/bval/extras/constraints/creditcard/Mastercard.java
deleted file mode 100644
index cb3a627..0000000
--- a/trunk/bval-extras/src/main/java/org/apache/bval/extras/constraints/creditcard/Mastercard.java
+++ /dev/null
@@ -1,59 +0,0 @@
-/*
- * 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.bval.extras.constraints.creditcard;
-
-import static java.lang.annotation.ElementType.ANNOTATION_TYPE;
-import static java.lang.annotation.ElementType.FIELD;
-import static java.lang.annotation.ElementType.PARAMETER;
-import static java.lang.annotation.RetentionPolicy.RUNTIME;
-
-import java.lang.annotation.Documented;
-import java.lang.annotation.Retention;
-import java.lang.annotation.Target;
-
-import javax.validation.Constraint;
-import javax.validation.Payload;
-import javax.validation.constraints.Pattern;
-
-import org.apache.bval.extras.constraints.checkdigit.Luhn;
-
-/**
- * <p>
- * --
- * TODO - This class is NOT part of the bean_validation spec and might disappear
- * as soon as a final version of the specification contains a similar functionality.
- * --
- * </p>
- * Description: annotation to validate a java.io.File is a directory<br/>
- */
-@Documented
-@Luhn
-@Pattern(regexp="^(5[1-5]\\d{14})$")
-@Constraint(validatedBy={})
-@Target( { FIELD, ANNOTATION_TYPE, PARAMETER } )
-@Retention( RUNTIME )
-public @interface Mastercard {
-
- Class<?>[] groups() default {};
-
- String message() default "{org.apache.bval.extras.constraints.creditcard.Mastercard.message}";
-
- Class<? extends Payload>[] payload() default {};
-
-}
diff --git a/trunk/bval-extras/src/main/java/org/apache/bval/extras/constraints/creditcard/Visa.java b/trunk/bval-extras/src/main/java/org/apache/bval/extras/constraints/creditcard/Visa.java
deleted file mode 100644
index 1ae223e..0000000
--- a/trunk/bval-extras/src/main/java/org/apache/bval/extras/constraints/creditcard/Visa.java
+++ /dev/null
@@ -1,59 +0,0 @@
-/*
- * 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.bval.extras.constraints.creditcard;
-
-import static java.lang.annotation.ElementType.ANNOTATION_TYPE;
-import static java.lang.annotation.ElementType.FIELD;
-import static java.lang.annotation.ElementType.PARAMETER;
-import static java.lang.annotation.RetentionPolicy.RUNTIME;
-
-import java.lang.annotation.Documented;
-import java.lang.annotation.Retention;
-import java.lang.annotation.Target;
-
-import javax.validation.Constraint;
-import javax.validation.Payload;
-import javax.validation.constraints.Pattern;
-
-import org.apache.bval.extras.constraints.checkdigit.Luhn;
-
-/**
- * <p>
- * --
- * TODO - This class is NOT part of the bean_validation spec and might disappear
- * as soon as a final version of the specification contains a similar functionality.
- * --
- * </p>
- * Description: annotation to validate a java.io.File is a directory<br/>
- */
-@Documented
-@Luhn
-@Pattern(regexp="^(4)(\\d{12}|\\d{15})$")
-@Constraint(validatedBy={})
-@Target( { FIELD, ANNOTATION_TYPE, PARAMETER } )
-@Retention( RUNTIME )
-public @interface Visa {
-
- Class<?>[] groups() default {};
-
- String message() default "{org.apache.bval.extras.constraints.creditcard.Visa.message}";
-
- Class<? extends Payload>[] payload() default {};
-
-}
diff --git a/trunk/bval-extras/src/main/java/org/apache/bval/extras/constraints/creditcard/package-info.java b/trunk/bval-extras/src/main/java/org/apache/bval/extras/constraints/creditcard/package-info.java
deleted file mode 100644
index 4d10d9e..0000000
--- a/trunk/bval-extras/src/main/java/org/apache/bval/extras/constraints/creditcard/package-info.java
+++ /dev/null
@@ -1,23 +0,0 @@
-/*
- * 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.
- */
-
-/**
- * This package contains <i>Credit Card</i> validation routines.
- */
-package org.apache.bval.extras.constraints.creditcard;
diff --git a/trunk/bval-extras/src/main/java/org/apache/bval/extras/constraints/file/Directory.java b/trunk/bval-extras/src/main/java/org/apache/bval/extras/constraints/file/Directory.java
deleted file mode 100644
index 92abcb2..0000000
--- a/trunk/bval-extras/src/main/java/org/apache/bval/extras/constraints/file/Directory.java
+++ /dev/null
@@ -1,51 +0,0 @@
-/*
- * 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.bval.extras.constraints.file;
-
-import javax.validation.Constraint;
-import javax.validation.Payload;
-import java.lang.annotation.Documented;
-import java.lang.annotation.Retention;
-import java.lang.annotation.Target;
-
-import static java.lang.annotation.ElementType.*;
-import static java.lang.annotation.RetentionPolicy.RUNTIME;
-
-/**
- * <p>
- * --
- * TODO - This class is NOT part of the bean_validation spec and might disappear
- * as soon as a final version of the specification contains a similar functionality.
- * --
- * </p>
- * Description: annotation to validate a java.io.File is a directory<br/>
- */
-@Documented
-@Constraint( validatedBy = DirectoryValidator.class )
-@Target( { FIELD, ANNOTATION_TYPE, PARAMETER } )
-@Retention( RUNTIME )
-public @interface Directory {
-
- Class<?>[] groups() default {};
-
- String message() default "{org.apache.bval.extras.constraints.file.Directory.message}";
-
- Class<? extends Payload>[] payload() default {};
-
-}
diff --git a/trunk/bval-extras/src/main/java/org/apache/bval/extras/constraints/file/DirectoryValidator.java b/trunk/bval-extras/src/main/java/org/apache/bval/extras/constraints/file/DirectoryValidator.java
deleted file mode 100644
index 61eb8ed..0000000
--- a/trunk/bval-extras/src/main/java/org/apache/bval/extras/constraints/file/DirectoryValidator.java
+++ /dev/null
@@ -1,46 +0,0 @@
-/*
- * 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.bval.extras.constraints.file;
-
-import java.io.File;
-
-import javax.validation.ConstraintValidator;
-import javax.validation.ConstraintValidatorContext;
-
-
-/**
- * Description: <br/>
- */
-public class DirectoryValidator implements ConstraintValidator<Directory, File> {
-
- /**
- * {@inheritDoc}
- */
- public boolean isValid(File value, ConstraintValidatorContext context) {
- return value.exists() && value.isDirectory();
- }
-
- /**
- * {@inheritDoc}
- */
- public void initialize(Directory parameters) {
- // do nothing (as long as Directory has no properties)
- }
-
-}
diff --git a/trunk/bval-extras/src/main/java/org/apache/bval/extras/constraints/file/NotDirectory.java b/trunk/bval-extras/src/main/java/org/apache/bval/extras/constraints/file/NotDirectory.java
deleted file mode 100644
index 0f7deff..0000000
--- a/trunk/bval-extras/src/main/java/org/apache/bval/extras/constraints/file/NotDirectory.java
+++ /dev/null
@@ -1,51 +0,0 @@
-/*
- * 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.bval.extras.constraints.file;
-
-import javax.validation.Constraint;
-import javax.validation.Payload;
-import java.lang.annotation.Documented;
-import java.lang.annotation.Retention;
-import java.lang.annotation.Target;
-
-import static java.lang.annotation.ElementType.*;
-import static java.lang.annotation.RetentionPolicy.RUNTIME;
-
-/**
- * <p>
- * --
- * TODO - This class is NOT part of the bean_validation spec and might disappear
- * as soon as a final version of the specification contains a similar functionality.
- * --
- * </p>
- * Description: annotation to validate a java.io.File is not a directory<br/>
- */
-@Documented
-@Constraint( validatedBy = DirectoryValidator.class )
-@Target( { FIELD, ANNOTATION_TYPE, PARAMETER } )
-@Retention( RUNTIME )
-public @interface NotDirectory {
-
- Class<?>[] groups() default {};
-
- String message() default "{org.apache.bval.extras.constraints.file.NotDirectory.message}";
-
- Class<? extends Payload>[] payload() default {};
-
-}
diff --git a/trunk/bval-extras/src/main/java/org/apache/bval/extras/constraints/file/NotDirectoryValidator.java b/trunk/bval-extras/src/main/java/org/apache/bval/extras/constraints/file/NotDirectoryValidator.java
deleted file mode 100644
index 0b4ff97..0000000
--- a/trunk/bval-extras/src/main/java/org/apache/bval/extras/constraints/file/NotDirectoryValidator.java
+++ /dev/null
@@ -1,46 +0,0 @@
-/*
- * 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.bval.extras.constraints.file;
-
-import java.io.File;
-
-import javax.validation.ConstraintValidator;
-import javax.validation.ConstraintValidatorContext;
-
-
-/**
- * Description: <br/>
- */
-public class NotDirectoryValidator implements ConstraintValidator<NotDirectory, File> {
-
- /**
- * {@inheritDoc}
- */
- public boolean isValid(File value, ConstraintValidatorContext context) {
- return value.exists() && !value.isDirectory();
- }
-
- /**
- * {@inheritDoc}
- */
- public void initialize(NotDirectory parameters) {
- // do nothing (as long as Directory has no properties)
- }
-
-}
diff --git a/trunk/bval-extras/src/main/java/org/apache/bval/extras/constraints/file/Symlink.java b/trunk/bval-extras/src/main/java/org/apache/bval/extras/constraints/file/Symlink.java
deleted file mode 100644
index 006f8cd..0000000
--- a/trunk/bval-extras/src/main/java/org/apache/bval/extras/constraints/file/Symlink.java
+++ /dev/null
@@ -1,51 +0,0 @@
-/*
- * 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.bval.extras.constraints.file;
-
-import javax.validation.Constraint;
-import javax.validation.Payload;
-import java.lang.annotation.Documented;
-import java.lang.annotation.Retention;
-import java.lang.annotation.Target;
-
-import static java.lang.annotation.ElementType.*;
-import static java.lang.annotation.RetentionPolicy.RUNTIME;
-
-/**
- * <p>
- * --
- * TODO - This class is NOT part of the bean_validation spec and might disappear
- * as soon as a final version of the specification contains a similar functionality.
- * --
- * </p>
- * Description: annotation to validate a java.io.File is a symbolic link<br/>
- */
-@Documented
-@Constraint( validatedBy = SymlinkValidator.class )
-@Target( { FIELD, ANNOTATION_TYPE, PARAMETER } )
-@Retention( RUNTIME )
-public @interface Symlink {
-
- Class<?>[] groups() default {};
-
- String message() default "{org.apache.bval.extras.constraints.file.Symlink.message}";
-
- Class<? extends Payload>[] payload() default {};
-
-}
diff --git a/trunk/bval-extras/src/main/java/org/apache/bval/extras/constraints/file/SymlinkValidator.java b/trunk/bval-extras/src/main/java/org/apache/bval/extras/constraints/file/SymlinkValidator.java
deleted file mode 100644
index 3b16b2d..0000000
--- a/trunk/bval-extras/src/main/java/org/apache/bval/extras/constraints/file/SymlinkValidator.java
+++ /dev/null
@@ -1,75 +0,0 @@
-/*
- * 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.bval.extras.constraints.file;
-
-import java.io.File;
-import java.io.IOException;
-
-import javax.validation.ConstraintValidator;
-import javax.validation.ConstraintValidatorContext;
-
-
-/**
- * Description: <br/>
- */
-public class SymlinkValidator implements ConstraintValidator<Symlink, File> {
-
- /**
- * The Windows separator character.
- */
- private static final char WINDOWS_SEPARATOR = '\\';
-
- /**
- * {@inheritDoc}
- */
- public boolean isValid(File value, ConstraintValidatorContext context) {
- if (!value.exists()) {
- return false;
- }
-
- // routine kindly borrowed from Apache Commons-IO
-
- if (File.separatorChar == WINDOWS_SEPARATOR) {
- return false;
- }
-
- try {
- File fileInCanonicalDir = null;
- if (value.getParent() == null) {
- fileInCanonicalDir = value;
- } else {
- File canonicalDir = value.getParentFile().getCanonicalFile();
- fileInCanonicalDir = new File(canonicalDir, value.getName());
- }
-
- return (!fileInCanonicalDir.getCanonicalFile().equals(fileInCanonicalDir.getAbsoluteFile()));
- } catch (IOException e) {
- // TODO: is it true?
- return false;
- }
- }
-
- /**
- * {@inheritDoc}
- */
- public void initialize(Symlink parameters) {
- // do nothing (as long as Symlink has no properties)
- }
-
-}
diff --git a/trunk/bval-extras/src/main/java/org/apache/bval/extras/constraints/file/package-info.java b/trunk/bval-extras/src/main/java/org/apache/bval/extras/constraints/file/package-info.java
deleted file mode 100644
index b877ab0..0000000
--- a/trunk/bval-extras/src/main/java/org/apache/bval/extras/constraints/file/package-info.java
+++ /dev/null
@@ -1,21 +0,0 @@
-/*
- * 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.
- */
-
-/**
- * {@link java.io.File} constraints validators.
- */
-package org.apache.bval.extras.constraints.file;
diff --git a/trunk/bval-extras/src/main/java/org/apache/bval/extras/constraints/net/Domain.java b/trunk/bval-extras/src/main/java/org/apache/bval/extras/constraints/net/Domain.java
deleted file mode 100644
index 9ff3eba..0000000
--- a/trunk/bval-extras/src/main/java/org/apache/bval/extras/constraints/net/Domain.java
+++ /dev/null
@@ -1,53 +0,0 @@
-/*
- * 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.bval.extras.constraints.net;
-
-import javax.validation.Constraint;
-import javax.validation.Payload;
-import java.lang.annotation.Documented;
-import java.lang.annotation.Retention;
-import java.lang.annotation.Target;
-
-import static java.lang.annotation.ElementType.*;
-import static java.lang.annotation.RetentionPolicy.RUNTIME;
-
-/**
- * <p>
- * --
- * TODO - This class is NOT part of the bean_validation spec and might disappear
- * as soon as a final version of the specification contains a similar functionality.
- * --
- * </p>
- * Description: annotation to validate a java.io.File is a directory<br/>
- */
-@Documented
-@Constraint( validatedBy = DomainValidator.class )
-@Target( { FIELD, ANNOTATION_TYPE, PARAMETER } )
-@Retention( RUNTIME )
-public @interface Domain {
-
- Class<?>[] groups() default {};
-
- String message() default "{org.apache.bval.extras.constraints.net.Domain.message}";
-
- Class<? extends Payload>[] payload() default {};
-
- boolean allowLocal() default false;
-
-}
diff --git a/trunk/bval-extras/src/main/java/org/apache/bval/extras/constraints/net/DomainValidator.java b/trunk/bval-extras/src/main/java/org/apache/bval/extras/constraints/net/DomainValidator.java
deleted file mode 100644
index 52b3ef4..0000000
--- a/trunk/bval-extras/src/main/java/org/apache/bval/extras/constraints/net/DomainValidator.java
+++ /dev/null
@@ -1,463 +0,0 @@
-/*
- * 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.bval.extras.constraints.net;
-
-import static java.util.Arrays.asList;
-
-import java.util.List;
-import java.util.regex.Matcher;
-import java.util.regex.Pattern;
-
-import javax.validation.ConstraintValidator;
-import javax.validation.ConstraintValidatorContext;
-
-/**
- * <p><b>Domain name</b> validation routines.</p>
- *
- * <p>
- * This validator provides methods for validating Internet domain names
- * and top-level domains.
- * </p>
- *
- * <p>Domain names are evaluated according
- * to the standards <a href="http://www.ietf.org/rfc/rfc1034.txt">RFC1034</a>,
- * section 3, and <a href="http://www.ietf.org/rfc/rfc1123.txt">RFC1123</a>,
- * section 2.1. No accomodation is provided for the specialized needs of
- * other applications; if the domain name has been URL-encoded, for example,
- * validation will fail even though the equivalent plaintext version of the
- * same name would have passed.
- * </p>
- *
- * <p>
- * Validation is also provided for top-level domains (TLDs) as defined and
- * maintained by the Internet Assigned Numbers Authority (IANA):
- * </p>
- *
- * <ul>
- * <li>{@link #isValidInfrastructureTld} - validates infrastructure TLDs
- * (<code>.arpa</code>, etc.)</li>
- * <li>{@link #isValidGenericTld} - validates generic TLDs
- * (<code>.com, .org</code>, etc.)</li>
- * <li>{@link #isValidCountryCodeTld} - validates country code TLDs
- * (<code>.us, .uk, .cn</code>, etc.)</li>
- * </ul>
- *
- * <p>
- * (<b>NOTE</b>: This class does not provide IP address lookup for domain names or
- * methods to ensure that a given domain name matches a specific IP; see
- * {@link java.net.InetAddress} for that functionality.)
- * </p>
- */
-public class DomainValidator implements ConstraintValidator<Domain, String> {
-
- private boolean allowLocal;
-
- // Regular expression strings for hostnames (derived from RFC2396 and RFC 1123)
- private static final Pattern DOMAIN_LABEL = Pattern.compile("\\p{Alnum}(?>[\\p{Alnum}-]*\\p{Alnum})*");
-
- private static final Pattern DOMAIN_NAME_REGEX = Pattern.compile("^(?:"
- + DOMAIN_LABEL.pattern()
- + "\\.)+(\\p{Alpha}{2,})$");
-
- /**
- * {@inheritDoc}
- */
- public boolean isValid(String domain, ConstraintValidatorContext context) {
- Matcher matcher = DOMAIN_NAME_REGEX.matcher(domain);
- if (matcher.matches()) {
- domain = matcher.group(1);
- return isValidTld(domain);
- } else if (allowLocal && DOMAIN_LABEL.matcher(domain).matches()) {
- return true;
- }
- return false;
- }
-
- /**
- * Returns true if the specified <code>String</code> matches any
- * IANA-defined top-level domain. Leading dots are ignored if present.
- * The search is case-sensitive.
- *
- * @param tld the parameter to check for TLD status
- * @return true if the parameter is a TLD
- */
- boolean isValidTld(String tld) {
- if (allowLocal && isValidLocalTld(tld)) {
- return true;
- }
-
- tld = chompLeadingDot(tld).toLowerCase();
- return isValidInfrastructureTld(tld)
- || isValidGenericTld(tld)
- || isValidCountryCodeTld(tld);
- }
-
- /**
- * Returns true if the specified <code>String</code> matches any
- * IANA-defined infrastructure top-level domain. Leading dots are
- * ignored if present. The search is case-sensitive.
- *
- * @param iTld the parameter to check for infrastructure TLD status
- * @return true if the parameter is an infrastructure TLD
- */
- static boolean isValidInfrastructureTld(String iTld) {
- return INFRASTRUCTURE_TLDS.contains(iTld);
- }
-
- /**
- * Returns true if the specified <code>String</code> matches any
- * IANA-defined generic top-level domain. Leading dots are ignored
- * if present. The search is case-sensitive.
- *
- * @param gTld the parameter to check for generic TLD status
- * @return true if the parameter is a generic TLD
- */
- static boolean isValidGenericTld(String gTld) {
- return GENERIC_TLDS.contains(gTld);
- }
-
- /**
- * Returns true if the specified <code>String</code> matches any
- * IANA-defined country code top-level domain. Leading dots are
- * ignored if present. The search is case-sensitive.
- *
- * @param ccTld the parameter to check for country code TLD status
- * @return true if the parameter is a country code TLD
- */
- static boolean isValidCountryCodeTld(String ccTld) {
- return COUNTRY_CODE_TLDS.contains(ccTld);
- }
-
- /**
- * Returns true if the specified <code>String</code> matches any
- * widely used "local" domains (localhost or localdomain). Leading dots are
- * ignored if present. The search is case-sensitive.
- *
- * @param iTld the parameter to check for local TLD status
- * @return true if the parameter is an local TLD
- */
- static boolean isValidLocalTld(String iTld) {
- return LOCAL_TLDS.contains(iTld);
- }
-
- private static String chompLeadingDot(String str) {
- if (str.startsWith(".")) {
- return str.substring(1);
- }
- return str;
- }
-
- // ---------------------------------------------
- // ----- TLDs defined by IANA
- // ----- Authoritative and comprehensive list at:
- // ----- http://data.iana.org/TLD/tlds-alpha-by-domain.txt
-
- private static final List<String> INFRASTRUCTURE_TLDS = asList(
- "arpa", // internet infrastructure
- "root" // diagnostic marker for non-truncated root zone
- );
-
- private static final List<String> GENERIC_TLDS = asList(
- "aero", // air transport industry
- "asia", // Pan-Asia/Asia Pacific
- "biz", // businesses
- "cat", // Catalan linguistic/cultural community
- "com", // commercial enterprises
- "coop", // cooperative associations
- "info", // informational sites
- "jobs", // Human Resource managers
- "mobi", // mobile products and services
- "museum", // museums, surprisingly enough
- "name", // individuals' sites
- "net", // internet support infrastructure/business
- "org", // noncommercial organizations
- "pro", // credentialed professionals and entities
- "tel", // contact data for businesses and individuals
- "travel", // entities in the travel industry
- "gov", // United States Government
- "edu", // accredited postsecondary US education entities
- "mil", // United States Military
- "int" // organizations established by international treaty
- );
-
- private static final List<String> COUNTRY_CODE_TLDS = asList(
- "ac", // Ascension Island
- "ad", // Andorra
- "ae", // United Arab Emirates
- "af", // Afghanistan
- "ag", // Antigua and Barbuda
- "ai", // Anguilla
- "al", // Albania
- "am", // Armenia
- "an", // Netherlands Antilles
- "ao", // Angola
- "aq", // Antarctica
- "ar", // Argentina
- "as", // American Samoa
- "at", // Austria
- "au", // Australia (includes Ashmore and Cartier Islands and Coral Sea Islands)
- "aw", // Aruba
- "ax", // Åland
- "az", // Azerbaijan
- "ba", // Bosnia and Herzegovina
- "bb", // Barbados
- "bd", // Bangladesh
- "be", // Belgium
- "bf", // Burkina Faso
- "bg", // Bulgaria
- "bh", // Bahrain
- "bi", // Burundi
- "bj", // Benin
- "bm", // Bermuda
- "bn", // Brunei Darussalam
- "bo", // Bolivia
- "br", // Brazil
- "bs", // Bahamas
- "bt", // Bhutan
- "bv", // Bouvet Island
- "bw", // Botswana
- "by", // Belarus
- "bz", // Belize
- "ca", // Canada
- "cc", // Cocos (Keeling) Islands
- "cd", // Democratic Republic of the Congo (formerly Zaire)
- "cf", // Central African Republic
- "cg", // Republic of the Congo
- "ch", // Switzerland
- "ci", // Côte d'Ivoire
- "ck", // Cook Islands
- "cl", // Chile
- "cm", // Cameroon
- "cn", // China, mainland
- "co", // Colombia
- "cr", // Costa Rica
- "cu", // Cuba
- "cv", // Cape Verde
- "cx", // Christmas Island
- "cy", // Cyprus
- "cz", // Czech Republic
- "de", // Germany
- "dj", // Djibouti
- "dk", // Denmark
- "dm", // Dominica
- "do", // Dominican Republic
- "dz", // Algeria
- "ec", // Ecuador
- "ee", // Estonia
- "eg", // Egypt
- "er", // Eritrea
- "es", // Spain
- "et", // Ethiopia
- "eu", // European Union
- "fi", // Finland
- "fj", // Fiji
- "fk", // Falkland Islands
- "fm", // Federated States of Micronesia
- "fo", // Faroe Islands
- "fr", // France
- "ga", // Gabon
- "gb", // Great Britain (United Kingdom)
- "gd", // Grenada
- "ge", // Georgia
- "gf", // French Guiana
- "gg", // Guernsey
- "gh", // Ghana
- "gi", // Gibraltar
- "gl", // Greenland
- "gm", // The Gambia
- "gn", // Guinea
- "gp", // Guadeloupe
- "gq", // Equatorial Guinea
- "gr", // Greece
- "gs", // South Georgia and the South Sandwich Islands
- "gt", // Guatemala
- "gu", // Guam
- "gw", // Guinea-Bissau
- "gy", // Guyana
- "hk", // Hong Kong
- "hm", // Heard Island and McDonald Islands
- "hn", // Honduras
- "hr", // Croatia (Hrvatska)
- "ht", // Haiti
- "hu", // Hungary
- "id", // Indonesia
- "ie", // Ireland (Éire)
- "il", // Israel
- "im", // Isle of Man
- "in", // India
- "io", // British Indian Ocean Territory
- "iq", // Iraq
- "ir", // Iran
- "is", // Iceland
- "it", // Italy
- "je", // Jersey
- "jm", // Jamaica
- "jo", // Jordan
- "jp", // Japan
- "ke", // Kenya
- "kg", // Kyrgyzstan
- "kh", // Cambodia (Khmer)
- "ki", // Kiribati
- "km", // Comoros
- "kn", // Saint Kitts and Nevis
- "kp", // North Korea
- "kr", // South Korea
- "kw", // Kuwait
- "ky", // Cayman Islands
- "kz", // Kazakhstan
- "la", // Laos (currently being marketed as the official domain for Los Angeles)
- "lb", // Lebanon
- "lc", // Saint Lucia
- "li", // Liechtenstein
- "lk", // Sri Lanka
- "lr", // Liberia
- "ls", // Lesotho
- "lt", // Lithuania
- "lu", // Luxembourg
- "lv", // Latvia
- "ly", // Libya
- "ma", // Morocco
- "mc", // Monaco
- "md", // Moldova
- "me", // Montenegro
- "mg", // Madagascar
- "mh", // Marshall Islands
- "mk", // Republic of Macedonia
- "ml", // Mali
- "mm", // Myanmar
- "mn", // Mongolia
- "mo", // Macau
- "mp", // Northern Mariana Islands
- "mq", // Martinique
- "mr", // Mauritania
- "ms", // Montserrat
- "mt", // Malta
- "mu", // Mauritius
- "mv", // Maldives
- "mw", // Malawi
- "mx", // Mexico
- "my", // Malaysia
- "mz", // Mozambique
- "na", // Namibia
- "nc", // New Caledonia
- "ne", // Niger
- "nf", // Norfolk Island
- "ng", // Nigeria
- "ni", // Nicaragua
- "nl", // Netherlands
- "no", // Norway
- "np", // Nepal
- "nr", // Nauru
- "nu", // Niue
- "nz", // New Zealand
- "om", // Oman
- "pa", // Panama
- "pe", // Peru
- "pf", // French Polynesia With Clipperton Island
- "pg", // Papua New Guinea
- "ph", // Philippines
- "pk", // Pakistan
- "pl", // Poland
- "pm", // Saint-Pierre and Miquelon
- "pn", // Pitcairn Islands
- "pr", // Puerto Rico
- "ps", // Palestinian territories (PA-controlled West Bank and Gaza Strip)
- "pt", // Portugal
- "pw", // Palau
- "py", // Paraguay
- "qa", // Qatar
- "re", // Réunion
- "ro", // Romania
- "rs", // Serbia
- "ru", // Russia
- "rw", // Rwanda
- "sa", // Saudi Arabia
- "sb", // Solomon Islands
- "sc", // Seychelles
- "sd", // Sudan
- "se", // Sweden
- "sg", // Singapore
- "sh", // Saint Helena
- "si", // Slovenia
- "sj", // Svalbard and Jan Mayen Islands Not in use (Norwegian dependencies; see .no)
- "sk", // Slovakia
- "sl", // Sierra Leone
- "sm", // San Marino
- "sn", // Senegal
- "so", // Somalia
- "sr", // Suriname
- "st", // São Tomé and Príncipe
- "su", // Soviet Union (deprecated)
- "sv", // El Salvador
- "sy", // Syria
- "sz", // Swaziland
- "tc", // Turks and Caicos Islands
- "td", // Chad
- "tf", // French Southern and Antarctic Lands
- "tg", // Togo
- "th", // Thailand
- "tj", // Tajikistan
- "tk", // Tokelau
- "tl", // East Timor (deprecated old code)
- "tm", // Turkmenistan
- "tn", // Tunisia
- "to", // Tonga
- "tp", // East Timor
- "tr", // Turkey
- "tt", // Trinidad and Tobago
- "tv", // Tuvalu
- "tw", // Taiwan, Republic of China
- "tz", // Tanzania
- "ua", // Ukraine
- "ug", // Uganda
- "uk", // United Kingdom
- "um", // United States Minor Outlying Islands
- "us", // United States of America
- "uy", // Uruguay
- "uz", // Uzbekistan
- "va", // Vatican City State
- "vc", // Saint Vincent and the Grenadines
- "ve", // Venezuela
- "vg", // British Virgin Islands
- "vi", // U.S. Virgin Islands
- "vn", // Vietnam
- "vu", // Vanuatu
- "wf", // Wallis and Futuna
- "ws", // Samoa (formerly Western Samoa)
- "ye", // Yemen
- "yt", // Mayotte
- "yu", // Serbia and Montenegro (originally Yugoslavia)
- "za", // South Africa
- "zm", // Zambia
- "zw" // Zimbabwe
- );
-
- private static final List<String> LOCAL_TLDS = asList(
- "localhost", // RFC2606 defined
- "localdomain" // Also widely used as localhost.localdomain
- );
-
- /**
- * {@inheritDoc}
- */
- public void initialize(Domain domain) {
- allowLocal = domain.allowLocal();
- }
-
-}
diff --git a/trunk/bval-extras/src/main/java/org/apache/bval/extras/constraints/net/InetAddress.java b/trunk/bval-extras/src/main/java/org/apache/bval/extras/constraints/net/InetAddress.java
deleted file mode 100644
index 4dc3bc0..0000000
--- a/trunk/bval-extras/src/main/java/org/apache/bval/extras/constraints/net/InetAddress.java
+++ /dev/null
@@ -1,51 +0,0 @@
-/*
- * 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.bval.extras.constraints.net;
-
-import javax.validation.Constraint;
-import javax.validation.Payload;
-import java.lang.annotation.Documented;
-import java.lang.annotation.Retention;
-import java.lang.annotation.Target;
-
-import static java.lang.annotation.ElementType.*;
-import static java.lang.annotation.RetentionPolicy.RUNTIME;
-
-/**
- * <p>
- * --
- * TODO - This class is NOT part of the bean_validation spec and might disappear
- * as soon as a final version of the specification contains a similar functionality.
- * --
- * </p>
- * Description: annotation to validate a java.io.File is a directory<br/>
- */
-@Documented
-@Constraint( validatedBy = InetAddressValidator.class )
-@Target( { FIELD, ANNOTATION_TYPE, PARAMETER } )
-@Retention( RUNTIME )
-public @interface InetAddress {
-
- Class<?>[] groups() default {};
-
- String message() default "{org.apache.bval.extras.constraints.net.InetAddress.message}";
-
- Class<? extends Payload>[] payload() default {};
-
-}
diff --git a/trunk/bval-extras/src/main/java/org/apache/bval/extras/constraints/net/InetAddressValidator.java b/trunk/bval-extras/src/main/java/org/apache/bval/extras/constraints/net/InetAddressValidator.java
deleted file mode 100644
index f0896f1..0000000
--- a/trunk/bval-extras/src/main/java/org/apache/bval/extras/constraints/net/InetAddressValidator.java
+++ /dev/null
@@ -1,56 +0,0 @@
-/*
- * 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.bval.extras.constraints.net;
-
-import java.util.regex.Pattern;
-
-import javax.validation.ConstraintValidator;
-import javax.validation.ConstraintValidatorContext;
-
-/**
- * <p><b>InetAddress</b> validation and conversion routines (<code>java.net.InetAddress</code>).</p>
- *
- * <p>This class provides methods to validate a candidate IP address.
- */
-public class InetAddressValidator implements ConstraintValidator<InetAddress, String> {
-
- private static final Pattern IPV4_PATTERN = Pattern.compile("^([01]?\\d\\d?|2[0-4]\\d|25[0-5])\\."
- + "([01]?\\d\\d?|2[0-4]\\d|25[0-5])\\."
- + "([01]?\\d\\d?|2[0-4]\\d|25[0-5])\\."
- + "([01]?\\d\\d?|2[0-4]\\d|25[0-5])$");
-
- /**
- * {@inheritDoc}
- */
- public boolean isValid(String value, ConstraintValidatorContext context) {
- if (!IPV4_PATTERN.matcher(value).matches()) {
- return false;
- }
-
- return true;
- }
-
- /**
- * {@inheritDoc}
- */
- public void initialize(InetAddress parameters) {
- // do nothing (as long as InetAddress has no properties)
- }
-
-}
diff --git a/trunk/bval-extras/src/main/java/org/apache/bval/extras/constraints/net/package-info.java b/trunk/bval-extras/src/main/java/org/apache/bval/extras/constraints/net/package-info.java
deleted file mode 100644
index d7e7550..0000000
--- a/trunk/bval-extras/src/main/java/org/apache/bval/extras/constraints/net/package-info.java
+++ /dev/null
@@ -1,21 +0,0 @@
-/*
- * 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.
- */
-
-/**
- * net constraints validators.
- */
-package org.apache.bval.extras.constraints.net;
diff --git a/trunk/bval-extras/src/main/java/org/apache/bval/extras/constraints/package-info.java b/trunk/bval-extras/src/main/java/org/apache/bval/extras/constraints/package-info.java
deleted file mode 100644
index 02f423c..0000000
--- a/trunk/bval-extras/src/main/java/org/apache/bval/extras/constraints/package-info.java
+++ /dev/null
@@ -1,23 +0,0 @@
-/*
- * 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.
- */
-
-/**
- * Contains constraints that are NOT part of the Bean Validation specification
- * and might disappear as soon as a final version of the specification contains
- * similar functionalities.
- */
-package org.apache.bval.extras.constraints;
diff --git a/trunk/bval-extras/src/test/java/org/apache/bval/extras/constraints/checkdigit/ABANumberValidatorTest.java b/trunk/bval-extras/src/test/java/org/apache/bval/extras/constraints/checkdigit/ABANumberValidatorTest.java
deleted file mode 100644
index 56d5e62..0000000
--- a/trunk/bval-extras/src/test/java/org/apache/bval/extras/constraints/checkdigit/ABANumberValidatorTest.java
+++ /dev/null
@@ -1,45 +0,0 @@
-/*
- * 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.bval.extras.constraints.checkdigit;
-
-import java.lang.annotation.Annotation;
-
-import javax.validation.ConstraintValidator;
-
-/**
- * ABA Number Validator Test.
- */
-public class ABANumberValidatorTest extends AbstractCheckDigitTest {
-
- @Override
- protected ConstraintValidator<? extends Annotation, String> getConstraint() {
- return new ABANumberValidator();
- }
-
- @Override
- protected String[] getValid() {
- return new String[] {
- "123456780",
- "123123123",
- "011000015",
- "111000038",
- "231381116",
- "121181976"
- };
- }
-
-}
diff --git a/trunk/bval-extras/src/test/java/org/apache/bval/extras/constraints/checkdigit/AbstractCheckDigitTest.java b/trunk/bval-extras/src/test/java/org/apache/bval/extras/constraints/checkdigit/AbstractCheckDigitTest.java
deleted file mode 100644
index 36b5198..0000000
--- a/trunk/bval-extras/src/test/java/org/apache/bval/extras/constraints/checkdigit/AbstractCheckDigitTest.java
+++ /dev/null
@@ -1,190 +0,0 @@
-/*
- * 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.bval.extras.constraints.checkdigit;
-
-import static org.junit.Assert.assertFalse;
-import static org.junit.Assert.assertTrue;
-
-import java.lang.annotation.Annotation;
-import java.util.ArrayList;
-import java.util.List;
-
-import javax.validation.ConstraintValidator;
-
-import org.junit.After;
-import org.junit.Before;
-import org.junit.Test;
-
-/**
- *
- */
-public abstract class AbstractCheckDigitTest {
-
- /** Check digit routine being tested */
- private int checkDigitLth;
-
- /** Check digit routine being tested */
- private ConstraintValidator<? extends Annotation, String> routine;
-
- /** Array of valid code values */
- private String[] valid;
-
- /** Array of invalid code values */
- private String[] invalid;
-
- /** code value which sums to zero */
- private String zeroSum;
-
- /** Prefix for error messages */
- private String missingMessage;
-
- public int getCheckDigitLth() {
- return 1;
- }
-
- protected abstract ConstraintValidator<? extends Annotation, String> getConstraint();
-
- protected abstract String[] getValid();
-
- protected String[] getInvalid() {
- return new String[] {"12345678A"};
- }
-
- protected String getZeroSum() {
- return "0000000000";
- }
-
- public String getMissingMessage() {
- return "Code is missing";
- }
-
- @Before
- public void setUp() {
- checkDigitLth = getCheckDigitLth();
- routine = getConstraint();
- valid = getValid();
- invalid = getInvalid();
- zeroSum = getZeroSum();
- missingMessage = getMissingMessage();
- }
-
- /**
- * Tear Down - clears routine and valid codes.
- */
- @After
- public void tearDown() {
- valid = null;
- routine = null;
- }
-
- /**
- * Test isValid() for valid values.
- */
- @Test
- public void testIsValidTrue() {
- // test valid values
- for (int i = 0; i < valid.length; i++) {
- assertTrue("valid[" + i +"]: " + valid[i], routine.isValid(valid[i], null));
- }
- }
-
- /**
- * Test isValid() for invalid values.
- */
- @Test
- public void testIsValidFalse() {
- // test invalid code values
- for (int i = 0; i < invalid.length; i++) {
- assertFalse("invalid[" + i +"]: " + invalid[i], routine.isValid(invalid[i], null));
- }
-
- // test invalid check digit values
- String[] invalidCheckDigits = createInvalidCodes(valid);
- for (int i = 0; i < invalidCheckDigits.length; i++) {
- assertFalse("invalid check digit[" + i +"]: " + invalidCheckDigits[i], routine.isValid(invalidCheckDigits[i], null));
- }
- }
-
- /**
- * Test missing code
- */
- @Test
- public void testMissingCode() {
- // isValid() zero length
- assertFalse("isValid() Zero Length", routine.isValid("", null));
- }
-
- /**
- * Test zero sum
- */
- @Test
- public void testZeroSum() {
- assertFalse("isValid() Zero Sum", routine.isValid(zeroSum, null));
- }
-
- /**
- * Returns an array of codes with invalid check digits.
- *
- * @param codes Codes with valid check digits
- * @return Codes with invalid check digits
- */
- protected String[] createInvalidCodes(String[] codes) {
- List<String> list = new ArrayList<String>();
-
- // create invalid check digit values
- for (int i = 0; i < codes.length; i++) {
- String code = removeCheckDigit(codes[i]);
- String check = checkDigit(codes[i]);
- for (int j = 0; j < 10; j++) {
- String curr = "" + Character.forDigit(j, 10);
- if (!curr.equals(check)) {
- list.add(code + curr);
- }
- }
- }
-
- return list.toArray(new String[list.size()]);
- }
-
- /**
- * Returns a code with the Check Digit (i.e. last character) removed.
- *
- * @param code The code
- * @return The code without the check digit
- */
- protected String removeCheckDigit(String code) {
- if (code == null || code.length() <= checkDigitLth) {
- return null;
- }
- return code.substring(0, code.length() - checkDigitLth);
- }
-
- /**
- * Returns the check digit (i.e. last character) for a code.
- *
- * @param code The code
- * @return The check digit
- */
- protected String checkDigit(String code) {
- if (code == null || code.length() <= checkDigitLth) {
- return "";
- }
- int start = code.length() - checkDigitLth;
- return code.substring(start);
- }
-
-}
diff --git a/trunk/bval-extras/src/test/java/org/apache/bval/extras/constraints/checkdigit/CUSIPValidatorTest.java b/trunk/bval-extras/src/test/java/org/apache/bval/extras/constraints/checkdigit/CUSIPValidatorTest.java
deleted file mode 100644
index d522626..0000000
--- a/trunk/bval-extras/src/test/java/org/apache/bval/extras/constraints/checkdigit/CUSIPValidatorTest.java
+++ /dev/null
@@ -1,51 +0,0 @@
-/*
- * 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.bval.extras.constraints.checkdigit;
-
-import java.lang.annotation.Annotation;
-
-import javax.validation.ConstraintValidator;
-
-/**
- * CUSIP Check Digit Test.
- */
-public class CUSIPValidatorTest extends AbstractCheckDigitTest {
-
- @Override
- protected ConstraintValidator<? extends Annotation, String> getConstraint() {
- return new CUSIPValidator();
- }
-
- @Override
- protected String[] getValid() {
- return new String[] {
- "037833100",
- "931142103",
- "837649128",
- "392690QT3",
- "594918104",
- "86770G101",
- "Y8295N109",
- "G8572F100"
- };
- }
-
- @Override
- protected String[] getInvalid() {
- return new String[] {"0378#3100"};
- }
-}
diff --git a/trunk/bval-extras/src/test/java/org/apache/bval/extras/constraints/checkdigit/EAN13CheckDigitTest.java b/trunk/bval-extras/src/test/java/org/apache/bval/extras/constraints/checkdigit/EAN13CheckDigitTest.java
deleted file mode 100644
index 80885fe..0000000
--- a/trunk/bval-extras/src/test/java/org/apache/bval/extras/constraints/checkdigit/EAN13CheckDigitTest.java
+++ /dev/null
@@ -1,43 +0,0 @@
-/*
- * 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.bval.extras.constraints.checkdigit;
-
-import java.lang.annotation.Annotation;
-
-import javax.validation.ConstraintValidator;
-
-/**
- * EAN-13 Check Digit Test.
- */
-public class EAN13CheckDigitTest extends AbstractCheckDigitTest {
-
- @Override
- protected ConstraintValidator<? extends Annotation, String> getConstraint() {
- return new EAN13Validator();
- }
-
- @Override
- protected String[] getValid() {
- return new String[] {
- "9780072129519",
- "9780764558313",
- "4025515373438",
- "0095673400332"
- };
- }
-
-}
diff --git a/trunk/bval-extras/src/test/java/org/apache/bval/extras/constraints/checkdigit/IBANCheckDigitTest.java b/trunk/bval-extras/src/test/java/org/apache/bval/extras/constraints/checkdigit/IBANCheckDigitTest.java
deleted file mode 100644
index 36ed7d2..0000000
--- a/trunk/bval-extras/src/test/java/org/apache/bval/extras/constraints/checkdigit/IBANCheckDigitTest.java
+++ /dev/null
@@ -1,149 +0,0 @@
-/*
- * 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.bval.extras.constraints.checkdigit;
-
-import java.lang.annotation.Annotation;
-import java.util.ArrayList;
-import java.util.List;
-
-import javax.validation.ConstraintValidator;
-
-import org.junit.Ignore;
-import org.junit.Test;
-
-/**
- * IVAN Check Digit Test.
- */
-public class IBANCheckDigitTest extends AbstractCheckDigitTest {
-
- @Override
- public int getCheckDigitLth() {
- return 2;
- }
-
- @Override
- protected ConstraintValidator<? extends Annotation, String> getConstraint() {
- return new IBANValidator();
- }
-
- @Override
- protected String[] getValid() {
- return new String[] {
- "AD1200012030200359100100",
- "AT611904300234573201",
- "AT611904300234573201",
- "BE68539007547034",
- "BE62510007547061",
- "CY17002001280000001200527600",
- "CZ6508000000192000145399",
- "DK5000400440116243",
- "EE382200221020145685",
- "FI2112345600000785",
- "FR1420041010050500013M02606",
- "DE89370400440532013000",
- "GI75NWBK000000007099453",
- "GR1601101250000000012300695",
- "HU42117730161111101800000000",
- "IS140159260076545510730339",
- "IE29AIBK93115212345678",
- "IT60X0542811101000000123456",
- "LV80BANK0000435195001",
- "LT121000011101001000",
- "LU280019400644750000",
- "NL91ABNA0417164300",
- "NO9386011117947",
- "PL27114020040000300201355387",
- "PT50000201231234567890154",
- "SK3112000000198742637541",
- "SI56191000000123438",
- "ES8023100001180000012345",
- "SE3550000000054910000003",
- "CH3900700115201849173",
- "GB29NWBK60161331926819"
- };
- }
-
- @Override
- protected String[] getInvalid() {
- return new String[] {"510007+47061BE63"};
- }
-
- @Override
- protected String getZeroSum() {
- return null;
- }
-
- @Override
- public String getMissingMessage() {
- return "Invalid Code length=0";
- }
-
- /**
- * Test zero sum
- */
- @Override
- @Test
- @Ignore
- public void testZeroSum() {
- // ignore, don't run this test
- }
-
- @Override
- protected String[] createInvalidCodes( String[] codes ) {
- List<String> list = new ArrayList<String>();
-
- // create invalid check digit values
- for (int i = 0; i < codes.length; i++) {
- String code = removeCheckDigit(codes[i]);
- String check = checkDigit(codes[i]);
- for (int j = 0; j < 96; j++) {
- String curr = j > 9 ? "" + j : "0" + j;
- if (!curr.equals(check)) {
- list.add(code.substring(0, 2) + curr + code.substring(4));
- }
- }
- }
-
- return list.toArray(new String[list.size()]);
- }
-
-
-
- /**
- * Returns a code with the Check Digit (i.e. last character) removed.
- *
- * @param code The code
- * @return The code without the check digit
- */
- protected String removeCheckDigit(String code) {
- return code.substring(0, 2) + "00" + code.substring(4);
- }
-
- /**
- * Returns the check digit (i.e. last character) for a code.
- *
- * @param code The code
- * @return The check digit
- */
- protected String checkDigit(String code) {
- if (code == null || code.length() <= getCheckDigitLth()) {
- return "";
- }
- return code.substring(2, 4);
- }
-
-}
diff --git a/trunk/bval-extras/src/test/java/org/apache/bval/extras/constraints/checkdigit/ISBN10CheckDigitTest.java b/trunk/bval-extras/src/test/java/org/apache/bval/extras/constraints/checkdigit/ISBN10CheckDigitTest.java
deleted file mode 100644
index 111d866..0000000
--- a/trunk/bval-extras/src/test/java/org/apache/bval/extras/constraints/checkdigit/ISBN10CheckDigitTest.java
+++ /dev/null
@@ -1,43 +0,0 @@
-/*
- * 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.bval.extras.constraints.checkdigit;
-
-import java.lang.annotation.Annotation;
-
-import javax.validation.ConstraintValidator;
-
-/**
- * ISBN-10 Check Digit Test.
- */
-public class ISBN10CheckDigitTest extends AbstractCheckDigitTest {
-
- @Override
- protected ConstraintValidator<? extends Annotation, String> getConstraint() {
- return new ISBN10Validator();
- }
-
- @Override
- protected String[] getValid() {
- return new String[] {
- "1930110995",
- "020163385X",
- "1932394354",
- "1590596277"
- };
- }
-
-}
diff --git a/trunk/bval-extras/src/test/java/org/apache/bval/extras/constraints/checkdigit/LuhnCheckDigitTest.java b/trunk/bval-extras/src/test/java/org/apache/bval/extras/constraints/checkdigit/LuhnCheckDigitTest.java
deleted file mode 100644
index 85c8234..0000000
--- a/trunk/bval-extras/src/test/java/org/apache/bval/extras/constraints/checkdigit/LuhnCheckDigitTest.java
+++ /dev/null
@@ -1,57 +0,0 @@
-/*
- * 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.bval.extras.constraints.checkdigit;
-
-import java.lang.annotation.Annotation;
-
-import javax.validation.ConstraintValidator;
-
-/**
- * Luhn Check Digit Test.
- */
-public class LuhnCheckDigitTest extends AbstractCheckDigitTest {
-
- private static final String VALID_VISA = "4417123456789113";
-
- private static final String VALID_SHORT_VISA = "4222222222222";
-
- private static final String VALID_AMEX = "378282246310005";
-
- private static final String VALID_MASTERCARD = "5105105105105100";
-
- private static final String VALID_DISCOVER = "6011000990139424";
-
- private static final String VALID_DINERS = "30569309025904";
-
- @Override
- protected ConstraintValidator<? extends Annotation, String> getConstraint() {
- return new LuhnValidator();
- }
-
- @Override
- protected String[] getValid() {
- return new String[] {
- VALID_VISA,
- VALID_SHORT_VISA,
- VALID_AMEX,
- VALID_MASTERCARD,
- VALID_DISCOVER,
- VALID_DINERS
- };
- }
-
-}
diff --git a/trunk/bval-extras/src/test/java/org/apache/bval/extras/constraints/checkdigit/SedolCheckDigitTest.java b/trunk/bval-extras/src/test/java/org/apache/bval/extras/constraints/checkdigit/SedolCheckDigitTest.java
deleted file mode 100644
index 0ebde22..0000000
--- a/trunk/bval-extras/src/test/java/org/apache/bval/extras/constraints/checkdigit/SedolCheckDigitTest.java
+++ /dev/null
@@ -1,54 +0,0 @@
-/*
- * 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.bval.extras.constraints.checkdigit;
-
-import java.lang.annotation.Annotation;
-
-import javax.validation.ConstraintValidator;
-
-/**
- * Sedol Check Digit Test.
- */
-public class SedolCheckDigitTest extends AbstractCheckDigitTest {
-
- @Override
- protected ConstraintValidator<? extends Annotation, String> getConstraint() {
- return new SedolValidator();
- }
-
- @Override
- protected String[] getValid() {
- return new String[] {
- "0263494",
- "0870612",
- "B06LQ97",
- "3437575",
- "B07LF55",
- };
- }
-
- @Override
- protected String[] getInvalid() {
- return new String[] {"123#567"};
- }
-
- @Override
- protected String getZeroSum() {
- return "0000000";
- }
-
-}
diff --git a/trunk/bval-extras/src/test/java/org/apache/bval/extras/constraints/checkdigit/VerhoeffCheckDigitTest.java b/trunk/bval-extras/src/test/java/org/apache/bval/extras/constraints/checkdigit/VerhoeffCheckDigitTest.java
deleted file mode 100644
index 2db2372..0000000
--- a/trunk/bval-extras/src/test/java/org/apache/bval/extras/constraints/checkdigit/VerhoeffCheckDigitTest.java
+++ /dev/null
@@ -1,55 +0,0 @@
-/*
- * 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.bval.extras.constraints.checkdigit;
-
-import java.lang.annotation.Annotation;
-
-import javax.validation.ConstraintValidator;
-
-import org.junit.Ignore;
-import org.junit.Test;
-
-/**
- * Verhoeff Check Digit Test.
- */
-public class VerhoeffCheckDigitTest extends AbstractCheckDigitTest {
-
- @Override
- protected ConstraintValidator<? extends Annotation, String> getConstraint() {
- return new VerhoeffValidator();
- }
-
- @Override
- protected String[] getValid() {
- return new String[] {
- "15",
- "1428570",
- "12345678902"
- };
- }
-
- /**
- * Test zero sum
- */
- @Override
- @Test
- @Ignore
- public void testZeroSum() {
- // ignore, don't run this test
- }
-
-}
diff --git a/trunk/bval-extras/src/test/java/org/apache/bval/extras/constraints/net/DomainValidatorTest.java b/trunk/bval-extras/src/test/java/org/apache/bval/extras/constraints/net/DomainValidatorTest.java
deleted file mode 100644
index fcf32e4..0000000
--- a/trunk/bval-extras/src/test/java/org/apache/bval/extras/constraints/net/DomainValidatorTest.java
+++ /dev/null
@@ -1,152 +0,0 @@
-/*
- * 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.bval.extras.constraints.net;
-
-import static org.junit.Assert.assertEquals;
-import static org.junit.Assert.assertFalse;
-import static org.junit.Assert.assertTrue;
-
-import java.lang.annotation.Annotation;
-
-import javax.validation.Payload;
-
-import org.apache.bval.extras.constraints.net.Domain;
-import org.apache.bval.extras.constraints.net.DomainValidator;
-import org.junit.Before;
-import org.junit.Test;
-
-/**
- * Tests for the DomainValidator.
- */
-public class DomainValidatorTest {
-
- private DomainValidator validator;
-
- @Before
- public void setUp() {
- validator = new DomainValidator();
- }
-
- @Test
- public void testValidDomains() {
- assertTrue("apache.org should validate", validator.isValid("apache.org", null));
- assertTrue("www.google.com should validate", validator.isValid("www.google.com", null));
-
- assertTrue("test-domain.com should validate", validator.isValid("test-domain.com", null));
- assertTrue("test---domain.com should validate", validator.isValid("test---domain.com", null));
- assertTrue("test-d-o-m-ain.com should validate", validator.isValid("test-d-o-m-ain.com", null));
- assertTrue("two-letter domain label should validate", validator.isValid("as.uk", null));
-
- assertTrue("case-insensitive ApAchE.Org should validate", validator.isValid("ApAchE.Org", null));
-
- assertTrue("single-character domain label should validate", validator.isValid("z.com", null));
-
- assertTrue("i.have.an-example.domain.name should validate", validator.isValid("i.have.an-example.domain.name", null));
- }
-
- @Test
- public void testInvalidDomains() {
- assertFalse("bare TLD .org shouldn't validate", validator.isValid(".org", null));
- assertFalse("domain name with spaces shouldn't validate", validator.isValid(" apache.org ", null));
- assertFalse("domain name containing spaces shouldn't validate", validator.isValid("apa che.org", null));
- assertFalse("domain name starting with dash shouldn't validate", validator.isValid("-testdomain.name", null));
- assertFalse("domain name ending with dash shouldn't validate", validator.isValid("testdomain-.name", null));
- assertFalse("domain name starting with multiple dashes shouldn't validate", validator.isValid("---c.com", null));
- assertFalse("domain name ending with multiple dashes shouldn't validate", validator.isValid("c--.com", null));
- assertFalse("domain name with invalid TLD shouldn't validate", validator.isValid("apache.rog", null));
-
- assertFalse("URL shouldn't validate", validator.isValid("http://www.apache.org", null));
- assertFalse("Empty string shouldn't validate as domain name", validator.isValid(" ", null));
- }
-
- @Test
- public void testTopLevelDomains() {
- // infrastructure TLDs
- assertTrue(".arpa should validate as iTLD", DomainValidator.isValidInfrastructureTld("arpa"));
- assertFalse(".com shouldn't validate as iTLD", DomainValidator.isValidInfrastructureTld("com"));
-
- // generic TLDs
- assertTrue(".name should validate as gTLD", DomainValidator.isValidGenericTld("name"));
- assertFalse(".us shouldn't validate as gTLD", DomainValidator.isValidGenericTld("us"));
-
- // country code TLDs
- assertTrue(".uk should validate as ccTLD", DomainValidator.isValidCountryCodeTld("uk"));
- assertFalse(".org shouldn't validate as ccTLD", DomainValidator.isValidCountryCodeTld("org"));
-
- // case-insensitive
- assertTrue(".COM should validate as TLD", validator.isValidTld("COM"));
- assertTrue(".BiZ should validate as TLD", validator.isValidTld("BiZ"));
-
- // corner cases
- assertFalse("invalid TLD shouldn't validate", validator.isValid("nope", null));
- assertFalse("empty string shouldn't validate as TLD", validator.isValid("", null));
- }
-
- @Test
- public void testAllowLocal() {
- DomainValidator noLocal = new DomainValidator();
- DomainValidator allowLocal = new DomainValidator();
- allowLocal.initialize( new Domain()
- {
-
- public Class<? extends Annotation> annotationType() {
- // not needed
- return null;
- }
-
- public Class<? extends Payload>[] payload() {
- // not needed
- return null;
- }
-
- public String message() {
- // not needed
- return null;
- }
-
- public Class<?>[] groups() {
- // not needed
- return null;
- }
-
- public boolean allowLocal() {
- // enable the local
- return true;
- }
- });
-
- // Default won't allow local
- assertFalse("localhost.localdomain should validate", noLocal.isValid("localhost.localdomain", null));
- assertFalse("localhost should validate", noLocal.isValid("localhost", null));
-
- // But it may be requested
- assertTrue("localhost.localdomain should validate", allowLocal.isValid("localhost.localdomain", null));
- assertTrue("localhost should validate", allowLocal.isValid("localhost", null));
- assertTrue("hostname should validate", allowLocal.isValid("hostname", null));
- assertTrue("machinename should validate", allowLocal.isValid("machinename", null));
-
- // Check the localhost one with a few others
- assertTrue("apache.org should validate", allowLocal.isValid("apache.org", null));
- assertFalse("domain name with spaces shouldn't validate", allowLocal.isValid(" apache.org ", null));
- }
-
- @Test
- public void testIDN() {
- assertTrue("b\u00fccher.ch in IDN should validate", validator.isValid("www.xn--bcher-kva.ch", null));
- }
-
-}
diff --git a/trunk/bval-extras/src/test/java/org/apache/bval/extras/constraints/net/InetAddressValidatorTest.java b/trunk/bval-extras/src/test/java/org/apache/bval/extras/constraints/net/InetAddressValidatorTest.java
deleted file mode 100644
index 4703279..0000000
--- a/trunk/bval-extras/src/test/java/org/apache/bval/extras/constraints/net/InetAddressValidatorTest.java
+++ /dev/null
@@ -1,93 +0,0 @@
-/*
- * 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.bval.extras.constraints.net;
-
-import static org.junit.Assert.assertFalse;
-import static org.junit.Assert.assertTrue;
-
-import org.apache.bval.extras.constraints.net.InetAddressValidator;
-import org.junit.Before;
-import org.junit.Test;
-
-/**
- * Test cases for InetAddressValidator.
- *
- * @version $Revision$
- */
-public class InetAddressValidatorTest {
-
- private InetAddressValidator validator;
-
- @Before
- public void setUp() {
- validator = new InetAddressValidator();
- }
-
- /**
- * Test IPs that point to real, well-known hosts (without actually looking them up).
- */
- @Test
- public void testInetAddressesFromTheWild() {
- assertTrue("www.apache.org IP should be valid", validator.isValid("140.211.11.130", null));
- assertTrue("www.l.google.com IP should be valid", validator.isValid("72.14.253.103", null));
- assertTrue("fsf.org IP should be valid", validator.isValid("199.232.41.5", null));
- assertTrue("appscs.ign.com IP should be valid", validator.isValid("216.35.123.87", null));
- }
-
- /**
- * Test valid and invalid IPs from each address class.
- */
- @Test
- public void testInetAddressesByClass() {
- assertTrue("class A IP should be valid", validator.isValid("24.25.231.12", null));
- assertFalse("illegal class A IP should be invalid", validator.isValid("2.41.32.324", null));
-
- assertTrue("class B IP should be valid", validator.isValid("135.14.44.12", null));
- assertFalse("illegal class B IP should be invalid", validator.isValid("154.123.441.123", null));
-
- assertTrue("class C IP should be valid", validator.isValid("213.25.224.32", null));
- assertFalse("illegal class C IP should be invalid", validator.isValid("201.543.23.11", null));
-
- assertTrue("class D IP should be valid", validator.isValid("229.35.159.6", null));
- assertFalse("illegal class D IP should be invalid", validator.isValid("231.54.11.987", null));
-
- assertTrue("class E IP should be valid", validator.isValid("248.85.24.92", null));
- assertFalse("illegal class E IP should be invalid", validator.isValid("250.21.323.48", null));
- }
-
- /**
- * Test reserved IPs.
- */
- @Test
- public void testReservedInetAddresses() {
- assertTrue("localhost IP should be valid", validator.isValid("127.0.0.1", null));
- assertTrue("broadcast IP should be valid", validator.isValid("255.255.255.255", null));
- }
-
- /**
- * Test obviously broken IPs.
- */
- @Test
- public void testBrokenInetAddresses() {
- assertFalse("IP with characters should be invalid", validator.isValid("124.14.32.abc", null));
- assertFalse("IP with three groups should be invalid", validator.isValid("23.64.12", null));
- assertFalse("IP with five groups should be invalid", validator.isValid("26.34.23.77.234", null));
- }
-
-}
diff --git a/trunk/bval-guice/pom.xml b/trunk/bval-guice/pom.xml
deleted file mode 100644
index a5bd492..0000000
--- a/trunk/bval-guice/pom.xml
+++ /dev/null
@@ -1,120 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!--
- 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.
--->
-<!--
- Maven release plugin requires the project tag to be on a single line.
--->
-<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
-
- <modelVersion>4.0.0</modelVersion>
-
- <parent>
- <groupId>org.apache.bval</groupId>
- <artifactId>bval-parent</artifactId>
- <version>0.4</version>
- </parent>
-
- <artifactId>bval-guice</artifactId>
- <name>Apache BVal :: bval-guice (optional)</name>
- <packaging>bundle</packaging>
-
- <description>BVal - Google Guice Integration</description>
-
- <dependencies>
- <dependency>
- <groupId>org.apache.bval</groupId>
- <artifactId>org.apache.bval.bundle</artifactId>
- <version>${project.version}</version>
- </dependency>
- <dependency>
- <groupId>javax.inject</groupId>
- <artifactId>javax.inject</artifactId>
- <scope>provided</scope>
- </dependency>
- <dependency>
- <groupId>com.google.inject</groupId>
- <artifactId>guice</artifactId>
- <scope>provided</scope>
- </dependency>
- <dependency>
- <groupId>aopalliance</groupId>
- <artifactId>aopalliance</artifactId>
- <scope>provided</scope>
- </dependency>
- <dependency>
- <groupId>junit</groupId>
- <artifactId>junit</artifactId>
- <scope>test</scope>
- </dependency>
- </dependencies>
-
- <profiles>
- <!--
- default profile using geronimo-validation_1.0_spec.jar
- active when property "ri" is not present.
- -->
- <profile>
- <id>geronimo</id>
- <activation>
- <property>
- <name>!ri</name>
- </property>
- </activation>
- <dependencies>
- <dependency>
- <groupId>org.apache.geronimo.specs</groupId>
- <artifactId>geronimo-validation_1.0_spec</artifactId>
- <!-- allow users to choose an API provider -->
- <scope>provided</scope>
- </dependency>
- </dependencies>
- </profile>
- <!--
- optional profile using javax.validation/validation-api.jar
- from RI manually active when property "-Pri" is provided.
- -->
- <profile>
- <id>ri</id>
- <activation>
- <property>
- <name>ri</name>
- </property>
- </activation>
- <dependencies>
- <dependency>
- <groupId>javax.validation</groupId>
- <artifactId>validation-api</artifactId>
- <!-- allow users to choose an API provider -->
- <scope>provided</scope>
- </dependency>
- </dependencies>
- </profile>
- </profiles>
-
- <build>
- <defaultGoal>install</defaultGoal>
-
- <resources>
- <resource>
- <directory>src/main/resources</directory>
- </resource>
- </resources>
- </build>
-
-</project>
diff --git a/trunk/bval-guice/src/main/java/org/apache/bval/guice/ConfigurationStateProvider.java b/trunk/bval-guice/src/main/java/org/apache/bval/guice/ConfigurationStateProvider.java
deleted file mode 100644
index 09c4db8..0000000
--- a/trunk/bval-guice/src/main/java/org/apache/bval/guice/ConfigurationStateProvider.java
+++ /dev/null
@@ -1,83 +0,0 @@
-/*
- * 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.bval.guice;
-
-import javax.inject.Inject;
-import javax.inject.Provider;
-import javax.validation.ConstraintValidatorFactory;
-import javax.validation.MessageInterpolator;
-import javax.validation.TraversableResolver;
-import javax.validation.spi.BootstrapState;
-import javax.validation.spi.ConfigurationState;
-import javax.validation.spi.ValidationProvider;
-
-import org.apache.bval.jsr303.ConfigurationImpl;
-
-/**
- * The {@code javax.validation.spi.ConfigurationState} provider implementation.
- *
- * @version $Id$
- */
-public final class ConfigurationStateProvider implements Provider<ConfigurationState> {
-
- @com.google.inject.Inject(optional = true)
- private BootstrapState bootstrapState;
-
- @Inject
- private ValidationProvider<?> validationProvider;
-
- @Inject
- private TraversableResolver traversableResolver;
-
- @Inject
- private MessageInterpolator messageInterpolator;
-
- @Inject
- private ConstraintValidatorFactory constraintValidatorFactory;
-
- public void setBootstrapState(BootstrapState bootstrapState) {
- this.bootstrapState = bootstrapState;
- }
-
- public void setValidationProvider(ValidationProvider<?> validationProvider) {
- this.validationProvider = validationProvider;
- }
-
- public void setTraversableResolver(TraversableResolver traversableResolver) {
- this.traversableResolver = traversableResolver;
- }
-
- public void setMessageInterpolator(MessageInterpolator messageInterpolator) {
- this.messageInterpolator = messageInterpolator;
- }
-
- public void setConstraintValidatorFactory(ConstraintValidatorFactory constraintValidatorFactory) {
- this.constraintValidatorFactory = constraintValidatorFactory;
- }
-
- /**
- * {@inheritDoc}
- */
- public ConfigurationState get() {
- ConfigurationImpl configuration = new ConfigurationImpl(this.bootstrapState, this.validationProvider);
- configuration.traversableResolver(this.traversableResolver);
- configuration.messageInterpolator(this.messageInterpolator);
- configuration.constraintValidatorFactory(this.constraintValidatorFactory);
- return configuration;
- }
-
-}
diff --git a/trunk/bval-guice/src/main/java/org/apache/bval/guice/GuiceAwareConstraintValidatorFactory.java b/trunk/bval-guice/src/main/java/org/apache/bval/guice/GuiceAwareConstraintValidatorFactory.java
deleted file mode 100644
index 4917b74..0000000
--- a/trunk/bval-guice/src/main/java/org/apache/bval/guice/GuiceAwareConstraintValidatorFactory.java
+++ /dev/null
@@ -1,49 +0,0 @@
-/*
- * 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.bval.guice;
-
-import javax.inject.Inject;
-import javax.inject.Singleton;
-import javax.validation.ConstraintValidator;
-import javax.validation.ConstraintValidatorFactory;
-
-import com.google.inject.Injector;
-
-/**
- * {@code javax.validation.ConstraintValidatorFactory} implementation that
- * relies on Google Guice.
- *
- * @version $Id$
- */
-@Singleton
-final class GuiceAwareConstraintValidatorFactory implements ConstraintValidatorFactory {
-
- @Inject
- private Injector injector;
-
- public void setInjector(Injector injector) {
- this.injector = injector;
- }
-
- /**
- * {@inheritDoc}
- */
- public <T extends ConstraintValidator<?, ?>> T getInstance(Class<T> key) {
- return this.injector.getInstance(key);
- }
-
-}
diff --git a/trunk/bval-guice/src/main/java/org/apache/bval/guice/Validate.java b/trunk/bval-guice/src/main/java/org/apache/bval/guice/Validate.java
deleted file mode 100644
index d1ca823..0000000
--- a/trunk/bval-guice/src/main/java/org/apache/bval/guice/Validate.java
+++ /dev/null
@@ -1,72 +0,0 @@
-/*
- * 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.bval.guice;
-
-import java.lang.annotation.ElementType;
-import java.lang.annotation.Retention;
-import java.lang.annotation.RetentionPolicy;
-import java.lang.annotation.Target;
-
-import javax.validation.ConstraintViolationException;
-
-import com.google.inject.BindingAnnotation;
-
-/**
- * Marker for methods which arguments have to be validated.
- *
- * @version $Id$
- */
-@BindingAnnotation
-@Retention(RetentionPolicy.RUNTIME)
-@Target({ ElementType.METHOD })
-public @interface Validate {
-
- /**
- * The groups have to be validated, empty by default.
- *
- * @return the groups have to be validated, empty by default.
- */
- Class<?>[] groups() default {};
-
- /**
- * Marks if the returned object by the intercepted method execution has to
- * be validated, false by default.
- *
- * @return false by default.
- */
- boolean validateReturnedValue() default false;
-
- /**
- * The exception re-thrown when an error occurs during the validation.
- *
- * @return the exception re-thrown when an error occurs during the
- * validation.
- */
- Class<? extends Throwable> rethrowExceptionsAs() default ConstraintViolationException.class;
-
- /**
- * A custom error message when throwing the custom exception.
- *
- * It supports java.util.Formatter place holders, intercepted method
- * arguments will be used as message format arguments.
- *
- * @return a custom error message when throwing the custom exception.
- * @see java.util.Formatter#format(String, Object...)
- */
- String exceptionMessage() default "";
-
-}
diff --git a/trunk/bval-guice/src/main/java/org/apache/bval/guice/ValidateMethodInterceptor.java b/trunk/bval-guice/src/main/java/org/apache/bval/guice/ValidateMethodInterceptor.java
deleted file mode 100644
index 55ff481..0000000
--- a/trunk/bval-guice/src/main/java/org/apache/bval/guice/ValidateMethodInterceptor.java
+++ /dev/null
@@ -1,181 +0,0 @@
-/*
- * 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.bval.guice;
-
-import java.lang.reflect.Constructor;
-import java.lang.reflect.Method;
-import java.util.Arrays;
-import java.util.HashSet;
-import java.util.Set;
-
-import javax.inject.Inject;
-import javax.validation.ConstraintViolation;
-import javax.validation.ConstraintViolationException;
-import javax.validation.Validator;
-import javax.validation.ValidatorFactory;
-
-import org.aopalliance.intercept.MethodInterceptor;
-import org.aopalliance.intercept.MethodInvocation;
-import org.apache.bval.jsr303.extensions.MethodValidator;
-
-/**
- * Method interceptor for {@link Validate} annotation.
- *
- * @version $Id$
- */
-public final class ValidateMethodInterceptor implements MethodInterceptor {
-
- private static final Class<?>[] CAUSE_TYPES = new Class[]{ Throwable.class };
-
- private static final Class<?>[] MESSAGE_CAUSE_TYPES = new Class[]{ String.class, Throwable.class };
-
- /**
- * The {@link ValidatorFactory} reference.
- */
- @Inject
- private ValidatorFactory validatorFactory;
-
- /**
- * Sets the {@link ValidatorFactory} reference.
- *
- * @param validatorFactory the {@link ValidatorFactory} reference
- */
- public void setValidatorFactory(ValidatorFactory validatorFactory) {
- this.validatorFactory = validatorFactory;
- }
-
- /**
- * {@inheritDoc}
- */
- public Object invoke(MethodInvocation invocation) throws Throwable {
- Validate validate = invocation.getMethod().getAnnotation(Validate.class);
-
- Validator validator = this.validatorFactory.getValidator();
- MethodValidator methodValidator = validator.unwrap(MethodValidator.class);
-
- Set<ConstraintViolation<?>> constraintViolations = new HashSet<ConstraintViolation<?>>();
- Class<?> clazz = invocation.getMethod().getDeclaringClass();
- Method method = invocation.getMethod();
- Object[] arguments = invocation.getArguments();
- Class<?>[] groups = validate.groups();
-
- constraintViolations.addAll(methodValidator.validateParameters(clazz,
- method,
- arguments,
- groups));
-
- if (!constraintViolations.isEmpty()) {
- throw getException(new ConstraintViolationException(
- String.format("Validation error when calling method '%s' with arguments %s",
- method,
- Arrays.deepToString(arguments)),
- constraintViolations),
- validate.rethrowExceptionsAs(),
- validate.exceptionMessage(),
- arguments);
- }
-
- Object returnedValue = invocation.proceed();
-
- if (validate.validateReturnedValue()) {
- constraintViolations.addAll(methodValidator.validateReturnedValue(clazz, method, returnedValue, groups));
-
- if (!constraintViolations.isEmpty()) {
- throw getException(new ConstraintViolationException(
- String.format("Method '%s' returned a not valid value %s",
- method,
- returnedValue),
- constraintViolations),
- validate.rethrowExceptionsAs(),
- validate.exceptionMessage(),
- arguments);
- }
- }
-
- return returnedValue;
- }
-
- /**
- * Define the {@link Throwable} has to be thrown when a validation error
- * occurs and the user defined the custom error wrapper.
- *
- * @param exception the occurred validation error.
- * @param exceptionWrapperClass the user defined custom error wrapper.
- * @return the {@link Throwable} has o be thrown.
- */
- private static Throwable getException(ConstraintViolationException exception,
- Class<? extends Throwable> exceptionWrapperClass,
- String exceptionMessage,
- Object[] arguments) {
- // check the thrown exception is of same re-throw type
- if (exceptionWrapperClass == ConstraintViolationException.class) {
- return exception;
- }
-
- // re-throw the exception as new exception
- Throwable rethrowEx = null;
-
- String errorMessage;
- Object[] initargs;
- Class<?>[] initargsType;
-
- if (exceptionMessage.length() != 0) {
- errorMessage = String.format(exceptionMessage, arguments);
- initargs = new Object[]{ errorMessage, exception };
- initargsType = MESSAGE_CAUSE_TYPES;
- } else {
- initargs = new Object[]{ exception };
- initargsType = CAUSE_TYPES;
- }
-
- Constructor<? extends Throwable> exceptionConstructor = getMatchingConstructor(exceptionWrapperClass, initargsType);
- if (exceptionConstructor != null) {
- try {
- rethrowEx = exceptionConstructor.newInstance(initargs);
- } catch (Exception e) {
- errorMessage = String.format("Impossible to re-throw '%s', it needs the constructor with %s argument(s).",
- exceptionWrapperClass.getName(),
- Arrays.toString(initargsType));
- rethrowEx = new RuntimeException(errorMessage, e);
- }
- } else {
- errorMessage = String.format("Impossible to re-throw '%s', it needs the constructor with %s or %s argument(s).",
- exceptionWrapperClass.getName(),
- Arrays.toString(CAUSE_TYPES),
- Arrays.toString(MESSAGE_CAUSE_TYPES));
- rethrowEx = new RuntimeException(errorMessage);
- }
-
- return rethrowEx;
- }
-
- @SuppressWarnings("unchecked")
- private static <E extends Throwable> Constructor<E> getMatchingConstructor(Class<E> type,
- Class<?>[] argumentsType) {
- Class<? super E> currentType = type;
- while (Object.class != currentType) {
- for (Constructor<?> constructor : currentType.getConstructors()) {
- if (Arrays.equals(argumentsType, constructor.getParameterTypes())) {
- return (Constructor<E>) constructor;
- }
- }
- currentType = currentType.getSuperclass();
- }
- return null;
- }
-
-}
diff --git a/trunk/bval-guice/src/main/java/org/apache/bval/guice/ValidationModule.java b/trunk/bval-guice/src/main/java/org/apache/bval/guice/ValidationModule.java
deleted file mode 100644
index 6ddbd6e..0000000
--- a/trunk/bval-guice/src/main/java/org/apache/bval/guice/ValidationModule.java
+++ /dev/null
@@ -1,64 +0,0 @@
-/*
- * 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.bval.guice;
-
-import javax.validation.ConstraintValidatorFactory;
-import javax.validation.MessageInterpolator;
-import javax.validation.TraversableResolver;
-import javax.validation.Validator;
-import javax.validation.ValidatorFactory;
-import javax.validation.spi.ConfigurationState;
-import javax.validation.spi.ValidationProvider;
-
-import org.aopalliance.intercept.MethodInterceptor;
-import org.apache.bval.jsr303.ApacheValidationProvider;
-import org.apache.bval.jsr303.DefaultMessageInterpolator;
-import org.apache.bval.jsr303.resolver.DefaultTraversableResolver;
-
-import com.google.inject.AbstractModule;
-import com.google.inject.Scopes;
-import com.google.inject.TypeLiteral;
-import com.google.inject.matcher.Matchers;
-
-/**
- * The Google-Guice module for Apache BVal.
- *
- * @version $Id$
- */
-public final class ValidationModule extends AbstractModule {
-
- /**
- * {@inheritDoc}
- */
- @Override
- protected void configure() {
- // apache bval bootstrap
- this.bind(MessageInterpolator.class).to(DefaultMessageInterpolator.class).in(Scopes.SINGLETON);
- this.bind(TraversableResolver.class).to(DefaultTraversableResolver.class).in(Scopes.SINGLETON);
- this.bind(ConstraintValidatorFactory.class).to(GuiceAwareConstraintValidatorFactory.class);
- this.bind(new TypeLiteral<ValidationProvider<?>>() {}).to(ApacheValidationProvider.class).in(Scopes.SINGLETON);
- this.bind(ConfigurationState.class).toProvider(ConfigurationStateProvider.class).in(Scopes.SINGLETON);
- this.bind(ValidatorFactory.class).toProvider(ValidatorFactoryProvider.class).in(Scopes.SINGLETON);
- this.bind(Validator.class).toProvider(ValidatorProvider.class);
-
- // AOP stuff
- MethodInterceptor validateMethodInterceptor = new ValidateMethodInterceptor();
- this.binder().requestInjection(validateMethodInterceptor);
- this.bindInterceptor(Matchers.any(), Matchers.annotatedWith(Validate.class), validateMethodInterceptor);
- }
-
-}
diff --git a/trunk/bval-guice/src/main/java/org/apache/bval/guice/ValidatorFactoryProvider.java b/trunk/bval-guice/src/main/java/org/apache/bval/guice/ValidatorFactoryProvider.java
deleted file mode 100644
index 7d9d477..0000000
--- a/trunk/bval-guice/src/main/java/org/apache/bval/guice/ValidatorFactoryProvider.java
+++ /dev/null
@@ -1,49 +0,0 @@
-/*
- * 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.bval.guice;
-
-import javax.inject.Inject;
-import javax.inject.Provider;
-import javax.inject.Singleton;
-import javax.validation.ValidatorFactory;
-import javax.validation.spi.ConfigurationState;
-
-import org.apache.bval.jsr303.ApacheValidationProvider;
-
-/**
- * Validator Factory guice provider implementation.
- *
- * @version $Id$
- */
-@Singleton
-final class ValidatorFactoryProvider implements Provider<ValidatorFactory> {
-
- @Inject
- private ConfigurationState configurationState;
-
- public void setConfigurationState(ConfigurationState configurationState) {
- this.configurationState = configurationState;
- }
-
- /**
- * {@inheritDoc}
- */
- public ValidatorFactory get() {
- return new ApacheValidationProvider().buildValidatorFactory(this.configurationState);
- }
-
-}
diff --git a/trunk/bval-guice/src/main/java/org/apache/bval/guice/ValidatorProvider.java b/trunk/bval-guice/src/main/java/org/apache/bval/guice/ValidatorProvider.java
deleted file mode 100644
index 06262dd..0000000
--- a/trunk/bval-guice/src/main/java/org/apache/bval/guice/ValidatorProvider.java
+++ /dev/null
@@ -1,50 +0,0 @@
-/*
- * 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.bval.guice;
-
-import javax.inject.Inject;
-import javax.inject.Provider;
-import javax.inject.Singleton;
-import javax.validation.Validator;
-import javax.validation.ValidatorFactory;
-
-/**
- * Validator guice provider implementation.
- *
- * @version $Id$
- */
-@Singleton
-final class ValidatorProvider implements Provider<Validator> {
-
- /**
- * The validator reference.
- */
- @Inject
- private ValidatorFactory validatorFactory;
-
- public void setValidatorFactory(ValidatorFactory validatorFactory) {
- this.validatorFactory = validatorFactory;
- }
-
- /**
- * {@inheritDoc}
- */
- public Validator get() {
- return this.validatorFactory.getValidator();
- }
-
-}
diff --git a/trunk/bval-guice/src/main/java/org/apache/bval/guice/package-info.java b/trunk/bval-guice/src/main/java/org/apache/bval/guice/package-info.java
deleted file mode 100644
index b48dc05..0000000
--- a/trunk/bval-guice/src/main/java/org/apache/bval/guice/package-info.java
+++ /dev/null
@@ -1,23 +0,0 @@
-/*
- * 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.
- */
-
-/**
- * Contains Apache BVal support for Google-Guice.
- *
- * @version $Id$
- */
-package org.apache.bval.guice;
diff --git a/trunk/bval-guice/src/test/java/org/apache/bval/guice/Country.java b/trunk/bval-guice/src/test/java/org/apache/bval/guice/Country.java
deleted file mode 100644
index d35b182..0000000
--- a/trunk/bval-guice/src/test/java/org/apache/bval/guice/Country.java
+++ /dev/null
@@ -1,77 +0,0 @@
-/*
- * 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.bval.guice;
-
-import javax.validation.constraints.NotNull;
-import javax.validation.constraints.Size;
-
-/**
- *
- *
- * @version $Id$
- */
-public class Country {
-
- @NotNull(groups = { Update.class })
- private Long id;
-
- @NotNull(groups = { Insert.class })
- private String name;
-
- @NotNull(groups = { Insert.class })
- @Size(max = 2, groups = { Insert.class, Update.class })
- private String iso2Code;
-
- @NotNull(groups = { Insert.class })
- @Size(max = 3, groups = { Insert.class, Update.class })
- private String iso3Code;
-
- public Long getId() {
- return this.id;
- }
-
- public void setId(Long id) {
- this.id = id;
- }
-
- public String getName() {
- return name;
- }
-
- public void setName(String name) {
- this.name = name;
- }
-
- public String getIso2Code() {
- return iso2Code;
- }
-
- public void setIso2Code(String iso2Code) {
- this.iso2Code = iso2Code;
- }
-
- public String getIso3Code() {
- return iso3Code;
- }
-
- public void setIso3Code(String iso3Code) {
- this.iso3Code = iso3Code;
- }
-
-}
\ No newline at end of file
diff --git a/trunk/bval-guice/src/test/java/org/apache/bval/guice/DummyCountryDao.java b/trunk/bval-guice/src/test/java/org/apache/bval/guice/DummyCountryDao.java
deleted file mode 100644
index acc317e..0000000
--- a/trunk/bval-guice/src/test/java/org/apache/bval/guice/DummyCountryDao.java
+++ /dev/null
@@ -1,55 +0,0 @@
-/*
- * 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.bval.guice;
-
-import javax.inject.Singleton;
-import javax.validation.Valid;
-import javax.validation.constraints.NotNull;
-import javax.validation.constraints.Size;
-
-/**
- *
- *
- * @version $Id$
- */
-@Singleton
-public class DummyCountryDao {
-
- @Validate(
- groups = { Insert.class },
- validateReturnedValue = true
- )
- public Country insertCountry(@NotNull(groups = { Insert.class }) String name,
- @NotNull(groups = { Insert.class }) @Size(max = 2, groups = { Insert.class, Update.class }) String iso2Code,
- @NotNull(groups = { Insert.class }) @Size(max = 3, groups = { Insert.class, Update.class }) String iso3Code) {
- Country country = new Country();
- country.setName(name);
- country.setIso2Code(iso2Code);
- country.setIso3Code(iso3Code);
- return country;
- }
-
- @Validate(
- groups = { Update.class },
- rethrowExceptionsAs = DummyException.class,
- exceptionMessage = "This is just a dummy message %s"
- )
- public int updateCountry(@Valid Country country) {
- return 0;
- }
-
-}
diff --git a/trunk/bval-guice/src/test/java/org/apache/bval/guice/DummyException.java b/trunk/bval-guice/src/test/java/org/apache/bval/guice/DummyException.java
deleted file mode 100644
index 764ca71..0000000
--- a/trunk/bval-guice/src/test/java/org/apache/bval/guice/DummyException.java
+++ /dev/null
@@ -1,36 +0,0 @@
-/*
- * 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.bval.guice;
-
-/**
- *
- *
- * @version $Id$
- */
-public final class DummyException extends Exception {
-
- private static final long serialVersionUID = 1L;
-
- public DummyException(Throwable cause) {
- super(cause);
- }
-
- public DummyException(String message, Throwable cause) {
- super(message, cause);
- }
-
-}
diff --git a/trunk/bval-guice/src/test/java/org/apache/bval/guice/GuiceAwareValidationTestCase.java b/trunk/bval-guice/src/test/java/org/apache/bval/guice/GuiceAwareValidationTestCase.java
deleted file mode 100644
index 427bb92..0000000
--- a/trunk/bval-guice/src/test/java/org/apache/bval/guice/GuiceAwareValidationTestCase.java
+++ /dev/null
@@ -1,95 +0,0 @@
-/*
- * 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.bval.guice;
-
-import java.util.Set;
-
-import javax.inject.Inject;
-import javax.validation.ConstraintViolation;
-import javax.validation.ConstraintViolationException;
-import javax.validation.Validator;
-
-import junit.framework.TestCase;
-
-import com.google.inject.Guice;
-
-/**
- *
- *
- * @version $Id$
- */
-public final class GuiceAwareValidationTestCase extends TestCase {
-
- @Inject
- private Validator validator;
-
- @Inject
- private DummyCountryDao dummyCountryDao;
-
- public void setValidator(Validator validator) {
- this.validator = validator;
- }
-
- public void setDummyCountryDao(DummyCountryDao dummyCountryDao) {
- this.dummyCountryDao = dummyCountryDao;
- }
-
- @Override
- protected void setUp() throws Exception {
- Guice.createInjector(new ValidationModule()).injectMembers(this);
- }
-
- @Override
- protected void tearDown() throws Exception {
- this.validator = null;
- this.dummyCountryDao = null;
- }
-
- public void testInjectedValidation() {
- Country country = new Country();
- country.setName("Italy");
- country.setIso2Code("it");
- country.setIso3Code("ita");
-
- Set<ConstraintViolation<Country>> violations = this.validator.validate(country);
- assertTrue(violations.isEmpty());
- }
-
- public void testAOPInjectedValidation() {
- this.dummyCountryDao.insertCountry("Italy", "it", "ita");
- }
-
- public void testAOPInjectedFailedValidation() {
- try {
- this.dummyCountryDao.insertCountry("Italy", "ita", "ita");
- fail("javax.validation.ConstraintViolationException expected");
- } catch (ConstraintViolationException cve) {
- // do nothing
- }
- }
-
- public void testRethrowWrappedException() {
- try {
- this.dummyCountryDao.updateCountry(new Country());
- fail("org.apache.bval.guice.DummyException expected");
- } catch (Exception e) {
- assertEquals(DummyException.class, e.getClass());
- assertTrue(e.getMessage().startsWith("This is just a dummy message "));
- }
- }
-
-}
diff --git a/trunk/bval-guice/src/test/java/org/apache/bval/guice/Insert.java b/trunk/bval-guice/src/test/java/org/apache/bval/guice/Insert.java
deleted file mode 100644
index 9384691..0000000
--- a/trunk/bval-guice/src/test/java/org/apache/bval/guice/Insert.java
+++ /dev/null
@@ -1,28 +0,0 @@
-/*
- * 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.bval.guice;
-
-/**
- *
- *
- * @version $Id$
- */
-public interface Insert {
-
-}
diff --git a/trunk/bval-guice/src/test/java/org/apache/bval/guice/Update.java b/trunk/bval-guice/src/test/java/org/apache/bval/guice/Update.java
deleted file mode 100644
index e3fdecb..0000000
--- a/trunk/bval-guice/src/test/java/org/apache/bval/guice/Update.java
+++ /dev/null
@@ -1,28 +0,0 @@
-/*
- * 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.bval.guice;
-
-/**
- *
- *
- * @version $Id$
- */
-public interface Update {
-
-}
diff --git a/trunk/bval-json/pom.xml b/trunk/bval-json/pom.xml
deleted file mode 100644
index 492bc89..0000000
--- a/trunk/bval-json/pom.xml
+++ /dev/null
@@ -1,86 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!--
- 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.
--->
-<!--
- Maven release plugin requires the project tag to be on a single line.
--->
-<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
-
- <modelVersion>4.0.0</modelVersion>
-
- <parent>
- <groupId>org.apache.bval</groupId>
- <artifactId>bval-parent</artifactId>
- <version>0.4</version>
- </parent>
-
- <artifactId>bval-json</artifactId>
- <name>Apache BVal :: bval-json (optional)</name>
- <packaging>bundle</packaging>
-
- <description>BVal - Optional JSON Component</description>
-
- <dependencies>
- <dependency>
- <groupId>org.apache.bval</groupId>
- <artifactId>bval-core</artifactId>
- <version>${project.version}</version>
- </dependency>
- <dependency>
- <groupId>org.apache.bval</groupId>
- <artifactId>bval-xstream</artifactId>
- <version>${project.version}</version>
- </dependency>
- <dependency>
- <groupId>org.freemarker</groupId>
- <artifactId>freemarker</artifactId>
- </dependency>
- <dependency>
- <groupId>junit</groupId>
- <artifactId>junit</artifactId>
- <scope>test</scope>
- </dependency>
- <dependency>
- <groupId>org.apache.bval</groupId>
- <artifactId>bval-core</artifactId>
- <version>${project.version}</version>
- <type>test-jar</type>
- <scope>test</scope>
- </dependency>
- <dependency>
- <groupId>org.apache.bval</groupId>
- <artifactId>bval-xstream</artifactId>
- <version>${project.version}</version>
- <type>test-jar</type>
- <scope>test</scope>
- </dependency>
- </dependencies>
-
- <build>
- <defaultGoal>install</defaultGoal>
-
- <resources>
- <resource>
- <directory>src/main/resources</directory>
- </resource>
- </resources>
-
- </build>
-</project>
-
diff --git a/trunk/bval-json/src/main/appended-resources/META-INF/NOTICE.vm b/trunk/bval-json/src/main/appended-resources/META-INF/NOTICE.vm
deleted file mode 100644
index 9a0c1ee..0000000
--- a/trunk/bval-json/src/main/appended-resources/META-INF/NOTICE.vm
+++ /dev/null
@@ -1,25 +0,0 @@
-##
-## 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.
-##
-
-The following copyright notice(s) were affixed to portions of this code
-with which this file is now or was at one time distributed.
-
-This product includes software developed by agimatec GmbH.
-Copyright 2007-2010 Agimatec GmbH. All rights reserved.
-
diff --git a/trunk/bval-json/src/main/java/org/apache/bval/json/JSONGenerator.java b/trunk/bval-json/src/main/java/org/apache/bval/json/JSONGenerator.java
deleted file mode 100644
index dae9099..0000000
--- a/trunk/bval-json/src/main/java/org/apache/bval/json/JSONGenerator.java
+++ /dev/null
@@ -1,79 +0,0 @@
-/*
- * 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.bval.json;
-
-import java.io.IOException;
-import java.io.StringWriter;
-import java.io.Writer;
-import java.util.ArrayList;
-import java.util.Collection;
-import java.util.HashMap;
-import java.util.List;
-import java.util.Map;
-
-import org.apache.bval.model.MetaBean;
-
-import freemarker.template.Configuration;
-import freemarker.template.Template;
-import freemarker.template.TemplateException;
-
-/**
- * Description: Generate a JSON String for a collection of {@link MetaBean}s.
- * This implementation uses a freemarker template to generate the output.<br/>
- *
- * This is an optional module which requires the freemarker dependency
- * and template resourece file "bean-infos-json.ftl" with it.
- */
-public class JSONGenerator {
- private final Template template;
-
- public JSONGenerator() throws IOException {
- this("bean-infos-json.ftl");
- }
-
- public JSONGenerator(String templateName) throws IOException {
- Configuration freemarker = new Configuration();
- freemarker.setNumberFormat("0.######"); // prevent locale-sensitive number format
- freemarker.setClassForTemplateLoading(getClass(), "");
- template = freemarker.getTemplate(templateName);
- }
-
- public JSONGenerator(Template template) {
- this.template = template;
- }
-
- public String toJSON(MetaBean metaBean) throws IOException, TemplateException {
- List<MetaBean> metaBeans = new ArrayList<MetaBean>(1);
- metaBeans.add(metaBean);
- return toJSON(metaBeans);
- }
-
- public String toJSON(Collection<MetaBean> metaBeans)
- throws IOException, TemplateException {
- final StringWriter out = new StringWriter();
- toJSON(metaBeans, out);
- return out.toString();
- }
-
- public void toJSON(Collection<MetaBean> metaBeans, Writer out)
- throws IOException, TemplateException {
- Map<String, Object> rootMap = new HashMap<String, Object>();
- rootMap.put("metaBeans", metaBeans);
- rootMap.put("generator", this);
- template.process(rootMap, out);
- }
-}
diff --git a/trunk/bval-json/src/main/resources/org/apache/bval/json/bean-infos-json.ftl b/trunk/bval-json/src/main/resources/org/apache/bval/json/bean-infos-json.ftl
deleted file mode 100644
index 63012ad..0000000
--- a/trunk/bval-json/src/main/resources/org/apache/bval/json/bean-infos-json.ftl
+++ /dev/null
@@ -1,85 +0,0 @@
-bval.namespace("bval.metadata");
-
-<#--
- 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.
--->
-
-
-(function(){
-<#assign var = 0>
-<#assign varrefs = {}>
-
-<#list metaBeans as metaBean>
-<#assign varrefs = varrefs + {metaBean.id : var}>
-var metaBean${var} = {
- "id" : "${metaBean.id}",
- <#if metaBean.beanClass??>"beanClass" : "${metaBean.beanClass.name}",</#if>
- <#if metaBean.name??>"name" : "${metaBean.name}",</#if>
- "features" :{<#rt/>
- <#list metaBean.features?keys as featureKey>
- <#assign value = metaBean.features[featureKey]>
- "${featureKey}" : <#if
- value?is_string>"${value}"<#elseif
- value?is_boolean>${value?string}<#elseif
- value?is_number>${value}<#elseif
- value?is_date>${value?string.full}<#elseif
- !(value??)>null<#elseif value?is_sequence>[<#list value as v>"${v}"<#if v_has_next>,</#if></#list>]<#elseif
- value?is_hash>{<#list value?keys as key>"${key}" : "${value[key]}"<#if key_has_next>,</#if></#list>}<#else
- >"?"</#if><#rt/><#if
- featureKey_has_next>,</#if>
- </#list>
- <#lt/>},
- "properties" :{
- <#list metaBean.properties as property>
- "${property.name}":{
- "name" : "${property.name}",
- <#if property.type??>"type" : "${property.type}",</#if>
- <#if property.typeClass??>"typeClass" : "${property.typeClass.name}",</#if>
- "features" : {<#if property.type?? &&
- property.type.enum!false>"enum" : {<#list property.type.enumConstants as enum>"${enum.name()}": "${enum.name()}"<#if enum_has_next>, </#if></#list>}<#if property.features?size > 0>,</#if></#if><#list
- property.features?keys as featureKey>
- <#assign value = property.features[featureKey]>
- "${featureKey}" : <#rt/><#if
- value?is_string>"${value}"<#elseif
- value?is_boolean>${value?string}<#elseif
- value?is_number>${value}<#elseif
- value?is_date>${value?string.full}<#elseif
- !(value??)>null<#elseif value?is_sequence>[<#list value as v>"${v}"<#if v_has_next>,</#if></#list>]<#elseif
- value?is_hash_ex>{<#list value?keys as key>"${key}" : "${value[key]}"<#if key_has_next>,</#if></#list>}<#else
- >"?"</#if><#rt/><#if featureKey_has_next>,</#if>
- </#list>
- }
- }<#if property_has_next>,</#if>
- </#list>
- }
-};
-<#assign var = var + 1>
-</#list>
-
-<#assign var = 0>
-<#list metaBeans as metaBean><#list
- metaBean.properties as property><#if
- property.metaBean?? && varrefs[property.metaBean.id]??>
-metaBean${var}.properties.${property.name}.metaBean = metaBean${varrefs[property.metaBean.id]};
-</#if></#list><#assign var = var + 1></#list><#assign var = 0>
-bval.metadata.metaBeans = {
-<#list metaBeans as metaBean>
- "${metaBean.id}" : metaBean${var}<#if metaBean_has_next>,</#if>
- <#assign var = var + 1>
-</#list>};
-})();
diff --git a/trunk/bval-json/src/test/java/org/apache/bval/json/JSONGeneratorTest.java b/trunk/bval-json/src/test/java/org/apache/bval/json/JSONGeneratorTest.java
deleted file mode 100644
index c69cf39..0000000
--- a/trunk/bval-json/src/test/java/org/apache/bval/json/JSONGeneratorTest.java
+++ /dev/null
@@ -1,104 +0,0 @@
-/*
- * 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.bval.json;
-
-import junit.framework.TestCase;
-import org.apache.bval.example.BusinessEnum;
-import org.apache.bval.example.BusinessObject;
-import org.apache.bval.example.BusinessObjectAddress;
-import org.apache.bval.model.DynaTypeEnum;
-import org.apache.bval.model.MetaBean;
-import org.apache.bval.model.MetaProperty;
-import org.apache.bval.xml.XMLMetaBeanManager;
-import org.apache.bval.xml.XMLMetaBeanURLLoader;
-
-import java.util.ArrayList;
-import java.util.List;
-
-/**
- * Description: <br>
- * Author: roman.stumm<br>
- */
-public class JSONGeneratorTest extends TestCase {
- private XMLMetaBeanManager mbm;
-
- public JSONGeneratorTest(String name) {
- super(name);
- }
-
- public void setUp() throws Exception {
- super.setUp();
- mbm = new XMLMetaBeanManager();
- mbm.addLoader(new XMLMetaBeanURLLoader(BusinessObject.class.getResource("test-beanInfos.xml")));
- }
-
- public void testBeanInfosCustomPatchGenerated() throws Exception {
- MetaBean mbean = mbm.findForClass(BusinessObject.class);
- MetaProperty mprop = mbean.getProperty("lastName");
- assertTrue(mprop.isMandatory());
-
- mbm.getCache().removeFromCache(mbean);
- mbm.addLoader(new XMLMetaBeanURLLoader(BusinessObject.class.getResource("test-beanInfos-custom.xml")));
- mbean = mbm.findForClass(BusinessObject.class);
- mprop = mbean.getProperty("lastName");
- assertTrue(!mprop.isMandatory());
-
- JSONGenerator converter = new JSONGenerator();
-
- List<MetaBean> metaBeans = new ArrayList<MetaBean>(2);
- metaBeans.add(mbean);
- MetaBean mbean2 = mbm.findForId("UnknownObject");
- metaBeans.add(mbean2);
- String json = converter.toJSON(metaBeans);
- assertNotNull(json);
- // System.out.println(json);
- }
-
- public void testJSON() throws Exception {
- MetaBean info = mbm.findForClass(BusinessObject.class);
- MetaBean info2 = info.getProperty("address").getMetaBean();
-
- // empty default bean without xml backup
- MetaBean info3 = mbm.findForClass(BusinessObjectAddress.class);
- JSONGenerator converter = new JSONGenerator();
-
- List<MetaBean> metaBeans = new ArrayList<MetaBean>(2);
- metaBeans.add(info);
- metaBeans.add(info2);
- metaBeans.add(info3);
- String json = converter.toJSON(metaBeans);
- assertNotNull(json);
- // System.out.println(json);
- }
-
- public void testJSON_dynaTypeEnum() throws Exception {
- MetaBean info = mbm.findForClass(BusinessObject.class);
- MetaProperty choice = info.getProperty("choice");
- choice.setType(new DynaTypeEnum(BusinessEnum.class, "CUSTOM_1", "CUSTOM_2"));
-
- JSONGenerator converter = new JSONGenerator();
-
- List<MetaBean> metaBeans = new ArrayList<MetaBean>(1);
- metaBeans.add(info);
- String json = converter.toJSON(metaBeans);
- assertNotNull(json);
- // System.out.println(json);
- assertTrue(json.indexOf("CUSTOM_1") > 0);
- assertTrue(json.indexOf("CUSTOM_2") > 0);
- assertTrue(json.indexOf("VALUE1") < 0);
- }
-}
diff --git a/trunk/bval-jsr303/pom.xml b/trunk/bval-jsr303/pom.xml
deleted file mode 100644
index e20d121..0000000
--- a/trunk/bval-jsr303/pom.xml
+++ /dev/null
@@ -1,226 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!--
- 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.
--->
-<!--
- Maven release plugin requires the project tag to be on a single line.
--->
-<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
-
- <modelVersion>4.0.0</modelVersion>
-
- <parent>
- <groupId>org.apache.bval</groupId>
- <artifactId>bval-parent</artifactId>
- <version>0.4</version>
- </parent>
-
- <artifactId>bval-jsr303</artifactId>
- <name>Apache BVal :: bval-jsr303</name>
- <packaging>jar</packaging>
-
- <description>Implementation specific classes for JSR 303 Bean Validation 1.0</description>
-
- <profiles>
- <profile>
- <id>jaxb</id>
- <activation>
- <jdk>1.5</jdk>
- </activation>
- <dependencies>
- <dependency>
- <groupId>javax.xml.bind</groupId>
- <artifactId>jaxb-api</artifactId>
- <version>2.1</version>
- </dependency>
- <dependency>
- <groupId>com.sun.xml.bind</groupId>
- <artifactId>jaxb-impl</artifactId>
- <version>2.1.3</version>
- </dependency>
- </dependencies>
- </profile>
- <!--
- default profile using geronimo-validation_1.0_spec.jar active when
- property "ri" is not present.
- -->
- <profile>
- <id>geronimo</id>
- <activation>
- <property>
- <name>!ri</name>
- </property>
- </activation>
- <dependencies>
- <dependency>
- <groupId>org.apache.geronimo.specs</groupId>
- <artifactId>geronimo-validation_1.0_spec</artifactId>
- <!-- allow users to choose an API provider -->
- <scope>provided</scope>
- </dependency>
- </dependencies>
- </profile>
- <!--
- optional profile using javax.validation/validation-api.jar from RI
- manually active when property "-Dri" is provided.
- -->
- <profile>
- <id>ri</id>
- <activation>
- <property>
- <name>ri</name>
- </property>
- </activation>
- <dependencies>
- <dependency>
- <groupId>javax.validation</groupId>
- <artifactId>validation-api</artifactId>
- <!-- allow users to choose an API provider -->
- <scope>provided</scope>
- </dependency>
- </dependencies>
- </profile>
- <profile>
- <id>sec</id>
- <build>
- <plugins>
- <plugin>
- <groupId>org.apache.maven.plugins</groupId>
- <artifactId>maven-surefire-plugin</artifactId>
- <configuration>
- <includes>
- <include>**/*Test.java</include>
- <include>**/*TestCase.java</include>
- </includes>
- <argLine>-Djava.security.manager -Djava.security.policy=${project.basedir}/src/test/resources/java.policy</argLine>
- </configuration>
- </plugin>
- </plugins>
- </build>
- </profile>
- </profiles>
-
- <dependencies>
- <dependency>
- <groupId>org.apache.bval</groupId>
- <artifactId>bval-core</artifactId>
- <version>${project.version}</version>
- </dependency>
- <dependency>
- <groupId>org.apache.commons</groupId>
- <artifactId>commons-lang3</artifactId>
- </dependency>
- <dependency>
- <groupId>junit</groupId>
- <artifactId>junit</artifactId>
- <version>3.8.2</version>
- <scope>test</scope>
- </dependency>
- <dependency>
- <groupId>org.mockito</groupId>
- <artifactId>mockito-core</artifactId>
- <scope>test</scope>
- </dependency>
-
- <!-- optional dependencies -->
- <dependency>
- <groupId>org.apache.bval</groupId>
- <artifactId>bval-xstream</artifactId>
- <version>${project.version}</version>
- <!-- don't pull into OSGi bundle -->
- <scope>provided</scope>
- <optional>true</optional>
- </dependency>
- <dependency>
- <groupId>org.apache.geronimo.specs</groupId>
- <artifactId>geronimo-jpa_2.0_spec</artifactId>
- <!-- allow users to choose an API provider -->
- <scope>provided</scope>
- <optional>true</optional>
- </dependency>
- <!-- Testing dependencies -->
- <dependency>
- <groupId>org.slf4j</groupId>
- <artifactId>jcl-over-slf4j</artifactId>
- <scope>test</scope>
- </dependency>
- <dependency>
- <groupId>org.slf4j</groupId>
- <artifactId>slf4j-simple</artifactId>
- <scope>test</scope>
- </dependency>
- </dependencies>
-
- <build>
- <defaultGoal>install</defaultGoal>
-
- <resources>
- <resource>
- <directory>src/main/resources</directory>
- <filtering>true</filtering>
- </resource>
- <resource>
- <directory>src/main/xsd</directory>
- <targetPath>META-INF</targetPath>
- </resource>
- </resources>
-
- <plugins>
- <plugin>
- <groupId>org.codehaus.mojo</groupId>
- <artifactId>jaxb2-maven-plugin</artifactId>
- <version>1.2</version>
- <executions>
- <execution>
- <goals>
- <goal>xjc</goal>
- </goals>
- </execution>
- </executions>
- <configuration>
- <packageName>org.apache.bval.jsr303.xml</packageName>
- <extension>true</extension>
- </configuration>
- </plugin>
-
- <plugin>
- <groupId>org.apache.maven.plugins</groupId>
- <artifactId>maven-jar-plugin</artifactId>
- <executions>
- <execution>
- <id>test-jar</id>
- <phase>package</phase>
- <goals>
- <goal>test-jar</goal>
- </goals>
- <inherited>false</inherited>
- </execution>
- </executions>
- </plugin>
- <plugin>
- <groupId>org.apache.maven.plugins</groupId>
- <artifactId>maven-surefire-plugin</artifactId>
- <!-- 2.12 has http://jira.codehaus.org/browse/SUREFIRE-836 -->
- <version>2.11</version>
- <configuration>
- <includes>
- <include>**/*Test.java</include>
- <include>**/*TestCase.java</include>
- </includes>
- </configuration>
- </plugin>
- </plugins>
- </build>
-</project>
diff --git a/trunk/bval-jsr303/src/main/appended-resources/META-INF/NOTICE.vm b/trunk/bval-jsr303/src/main/appended-resources/META-INF/NOTICE.vm
deleted file mode 100644
index 05ddae6..0000000
--- a/trunk/bval-jsr303/src/main/appended-resources/META-INF/NOTICE.vm
+++ /dev/null
@@ -1,26 +0,0 @@
-##
-## 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.
-##
-
-
-The following copyright notice(s) were affixed to portions of this code
-with which this file is now or was at one time distributed.
-
-This product includes software developed by agimatec GmbH.
-Copyright 2007-2010 Agimatec GmbH. All rights reserved.
-
diff --git a/trunk/bval-jsr303/src/main/java/org/apache/bval/constraints/AssertFalseValidator.java b/trunk/bval-jsr303/src/main/java/org/apache/bval/constraints/AssertFalseValidator.java
deleted file mode 100644
index 6303452..0000000
--- a/trunk/bval-jsr303/src/main/java/org/apache/bval/constraints/AssertFalseValidator.java
+++ /dev/null
@@ -1,37 +0,0 @@
-/*
- * 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.bval.constraints;
-
-import javax.validation.ConstraintValidator;
-import javax.validation.ConstraintValidatorContext;
-import javax.validation.constraints.AssertFalse;
-
-/**
- * Description: assert that value is false<br/>
- */
-public class AssertFalseValidator implements ConstraintValidator<AssertFalse, Boolean> {
-
- public void initialize(AssertFalse annotation) {
- }
-
- public boolean isValid(Boolean value, ConstraintValidatorContext context) {
- return value == null || !value;
- }
-
-}
\ No newline at end of file
diff --git a/trunk/bval-jsr303/src/main/java/org/apache/bval/constraints/AssertTrueValidator.java b/trunk/bval-jsr303/src/main/java/org/apache/bval/constraints/AssertTrueValidator.java
deleted file mode 100644
index 6b7be14..0000000
--- a/trunk/bval-jsr303/src/main/java/org/apache/bval/constraints/AssertTrueValidator.java
+++ /dev/null
@@ -1,37 +0,0 @@
-/*
- * 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.bval.constraints;
-
-import javax.validation.ConstraintValidator;
-import javax.validation.ConstraintValidatorContext;
-import javax.validation.constraints.AssertTrue;
-
-/**
- * Description: assert that value is true<br/>
- */
-public class AssertTrueValidator implements ConstraintValidator<AssertTrue, Boolean> {
-
- public void initialize(AssertTrue annotation) {
- }
-
- public boolean isValid(Boolean value, ConstraintValidatorContext context) {
- return value == null || value;
- }
-
-}
\ No newline at end of file
diff --git a/trunk/bval-jsr303/src/main/java/org/apache/bval/constraints/DecimalMaxValidatorForNumber.java b/trunk/bval-jsr303/src/main/java/org/apache/bval/constraints/DecimalMaxValidatorForNumber.java
deleted file mode 100644
index b9222bd..0000000
--- a/trunk/bval-jsr303/src/main/java/org/apache/bval/constraints/DecimalMaxValidatorForNumber.java
+++ /dev/null
@@ -1,53 +0,0 @@
-/*
- * 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.bval.constraints;
-
-import javax.validation.ConstraintValidator;
-import javax.validation.ConstraintValidatorContext;
-import javax.validation.constraints.DecimalMax;
-import java.math.BigDecimal;
-import java.math.BigInteger;
-
-/** Description: validate that number-value of passed object is <= maxvalue<br/> */
-public class DecimalMaxValidatorForNumber
- implements ConstraintValidator<DecimalMax, Number> {
-
- private BigDecimal maxValue;
-
- public void initialize(DecimalMax annotation) {
- try {
- this.maxValue = new BigDecimal(annotation.value());
- } catch (NumberFormatException nfe) {
- throw new IllegalArgumentException(
- annotation.value() + " does not represent a valid BigDecimal format");
- }
- }
-
- public boolean isValid(Number value, ConstraintValidatorContext context) {
- if (value == null) {
- return true;
- } else if (value instanceof BigDecimal) {
- return ((BigDecimal) value).compareTo(maxValue) != 1;
- } else if (value instanceof BigInteger) {
- return (new BigDecimal((BigInteger) value)).compareTo(maxValue) != 1;
- } else {
- return (new BigDecimal(value.doubleValue()).compareTo(maxValue)) != 1;
- }
- }
-}
diff --git a/trunk/bval-jsr303/src/main/java/org/apache/bval/constraints/DecimalMaxValidatorForString.java b/trunk/bval-jsr303/src/main/java/org/apache/bval/constraints/DecimalMaxValidatorForString.java
deleted file mode 100644
index 5f1a863..0000000
--- a/trunk/bval-jsr303/src/main/java/org/apache/bval/constraints/DecimalMaxValidatorForString.java
+++ /dev/null
@@ -1,54 +0,0 @@
-/*
- * 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.bval.constraints;
-
-import javax.validation.ConstraintValidator;
-import javax.validation.ConstraintValidatorContext;
-import javax.validation.constraints.DecimalMax;
-import java.math.BigDecimal;
-
-/**
- * Check that the String being validated represents a number, and has a value
- * <= maxvalue
- */
-public class DecimalMaxValidatorForString
- implements ConstraintValidator<DecimalMax, String> {
-
- private BigDecimal maxValue;
-
- public void initialize(DecimalMax annotation) {
- try {
- this.maxValue = new BigDecimal(annotation.value());
- } catch (NumberFormatException nfe) {
- throw new IllegalArgumentException(
- annotation.value() + " does not represent a valid BigDecimal format");
- }
- }
-
- public boolean isValid(String value, ConstraintValidatorContext context) {
- if (value == null) {
- return true;
- }
- try {
- return new BigDecimal(value).compareTo(maxValue) != 1;
- } catch (NumberFormatException nfe) {
- return false;
- }
- }
-}
diff --git a/trunk/bval-jsr303/src/main/java/org/apache/bval/constraints/DecimalMinValidatorForNumber.java b/trunk/bval-jsr303/src/main/java/org/apache/bval/constraints/DecimalMinValidatorForNumber.java
deleted file mode 100644
index b24a80f..0000000
--- a/trunk/bval-jsr303/src/main/java/org/apache/bval/constraints/DecimalMinValidatorForNumber.java
+++ /dev/null
@@ -1,53 +0,0 @@
-/*
- * 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.bval.constraints;
-
-import javax.validation.ConstraintValidator;
-import javax.validation.ConstraintValidatorContext;
-import javax.validation.constraints.DecimalMin;
-import java.math.BigDecimal;
-import java.math.BigInteger;
-
-/** Description: validate that number-value of passed object is >= minvalue<br/> */
-public class DecimalMinValidatorForNumber
- implements ConstraintValidator<DecimalMin, Number> {
-
- private BigDecimal minValue;
-
- public void initialize(DecimalMin annotation) {
- try {
- this.minValue = new BigDecimal(annotation.value());
- } catch (NumberFormatException nfe) {
- throw new IllegalArgumentException(
- annotation.value() + " does not represent a valid BigDecimal format");
- }
- }
-
- public boolean isValid(Number value, ConstraintValidatorContext context) {
- if (value == null) {
- return true;
- } else if (value instanceof BigDecimal) {
- return ((BigDecimal) value).compareTo(minValue) != -1;
- } else if (value instanceof BigInteger) {
- return (new BigDecimal((BigInteger) value)).compareTo(minValue) != -1;
- } else {
- return (new BigDecimal(value.doubleValue()).compareTo(minValue)) != -1;
- }
- }
-}
diff --git a/trunk/bval-jsr303/src/main/java/org/apache/bval/constraints/DecimalMinValidatorForString.java b/trunk/bval-jsr303/src/main/java/org/apache/bval/constraints/DecimalMinValidatorForString.java
deleted file mode 100644
index 7859d53..0000000
--- a/trunk/bval-jsr303/src/main/java/org/apache/bval/constraints/DecimalMinValidatorForString.java
+++ /dev/null
@@ -1,56 +0,0 @@
-/*
- * 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.bval.constraints;
-
-import javax.validation.ConstraintValidator;
-import javax.validation.ConstraintValidatorContext;
-import javax.validation.constraints.DecimalMin;
-import java.math.BigDecimal;
-
-/**
- * Description:
- * Check that the String being validated represents a number, and has a value
- * >= minvalue
- */
-public class DecimalMinValidatorForString
- implements ConstraintValidator<DecimalMin, String> {
-
- private BigDecimal minValue;
-
- public void initialize(DecimalMin annotation) {
- try {
- this.minValue = new BigDecimal(annotation.value());
- } catch (NumberFormatException nfe) {
- throw new IllegalArgumentException(
- annotation.value() + " does not represent a valid BigDecimal format");
- }
- }
-
- public boolean isValid(String value, ConstraintValidatorContext context) {
- //null values are valid
- if (value == null) {
- return true;
- }
- try {
- return new BigDecimal(value).compareTo(minValue) != -1;
- } catch (NumberFormatException nfe) {
- return false;
- }
- }
-}
diff --git a/trunk/bval-jsr303/src/main/java/org/apache/bval/constraints/DigitsValidatorForNumber.java b/trunk/bval-jsr303/src/main/java/org/apache/bval/constraints/DigitsValidatorForNumber.java
deleted file mode 100644
index 5975f22..0000000
--- a/trunk/bval-jsr303/src/main/java/org/apache/bval/constraints/DigitsValidatorForNumber.java
+++ /dev/null
@@ -1,85 +0,0 @@
-/*
- * 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.bval.constraints;
-
-import javax.validation.ConstraintValidator;
-import javax.validation.ConstraintValidatorContext;
-import javax.validation.constraints.Digits;
-import java.math.BigDecimal;
-
-/**
- * Validates that the <code>Number</code> being validates matches the pattern
- * defined in the constraint.
- */
-public class DigitsValidatorForNumber implements ConstraintValidator<Digits, Number> {
-
- private int integral;
- private int fractional;
-
- public int getIntegral() {
- return integral;
- }
-
- public void setIntegral(int integral) {
- this.integral = integral;
- }
-
- public int getFractional() {
- return fractional;
- }
-
- public void setFractional(int fractional) {
- this.fractional = fractional;
- }
-
- public void initialize(Digits annotation) {
- this.integral = annotation.integer();
- this.fractional = annotation.fraction();
- if (integral < 0) {
- throw new IllegalArgumentException(
- "The length of the integer part cannot be negative.");
- }
- if (fractional < 0) {
- throw new IllegalArgumentException(
- "The length of the fraction part cannot be negative.");
- }
- }
-
- public boolean isValid(Number num, ConstraintValidatorContext context) {
- if (num == null) {
- return true;
- }
-
- BigDecimal bigDecimal;
- if (num instanceof BigDecimal) {
- bigDecimal = (BigDecimal) num;
- } else {
- bigDecimal = new BigDecimal(num.toString());
- }
- bigDecimal = bigDecimal.stripTrailingZeros();
-
- int intLength = bigDecimal.precision() - bigDecimal.scale();
- if (integral >= intLength) {
- int factionLength = bigDecimal.scale() < 0 ? 0 : bigDecimal.scale();
- return fractional >= factionLength;
- } else {
- return false;
- }
- }
-}
diff --git a/trunk/bval-jsr303/src/main/java/org/apache/bval/constraints/DigitsValidatorForString.java b/trunk/bval-jsr303/src/main/java/org/apache/bval/constraints/DigitsValidatorForString.java
deleted file mode 100644
index 752f887..0000000
--- a/trunk/bval-jsr303/src/main/java/org/apache/bval/constraints/DigitsValidatorForString.java
+++ /dev/null
@@ -1,93 +0,0 @@
-/*
- * 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.bval.constraints;
-
-import javax.validation.ConstraintValidator;
-import javax.validation.ConstraintValidatorContext;
-import javax.validation.constraints.Digits;
-import java.math.BigDecimal;
-
-/**
- * Validates that the <code>String</code> being validated consists of digits,
- * and matches the pattern defined in the constraint.
- */
-public class DigitsValidatorForString implements ConstraintValidator<Digits, String> {
-
- private int integral;
- private int fractional;
-
- public int getIntegral() {
- return integral;
- }
-
- public void setIntegral(int integral) {
- this.integral = integral;
- }
-
- public int getFractional() {
- return fractional;
- }
-
- public void setFractional(int fractional) {
- this.fractional = fractional;
- }
-
- public void initialize(Digits annotation) {
- this.integral = annotation.integer();
- this.fractional = annotation.fraction();
- if (integral < 0) {
- throw new IllegalArgumentException(
- "The length of the integer part cannot be negative.");
- }
- if (fractional < 0) {
- throw new IllegalArgumentException(
- "The length of the fraction part cannot be negative.");
- }
- }
-
- public boolean isValid(String str, ConstraintValidatorContext context) {
- //null values are valid
- if (str == null) {
- return true;
- }
-
- BigDecimal bigDecimal = getBigDecimalValue(str);
- if (bigDecimal == null) {
- return false;
- }
-
- int intLength = bigDecimal.precision() - bigDecimal.scale();
- if (integral >= intLength) {
- int factionLength = bigDecimal.scale() < 0 ? 0 : bigDecimal.scale();
- return fractional >= factionLength;
- } else {
- return false;
- }
- }
-
- private BigDecimal getBigDecimalValue(String str) {
- BigDecimal bd;
- try {
- bd = new BigDecimal(str);
- } catch (NumberFormatException nfe) {
- return null;
- }
- return bd;
- }
-}
diff --git a/trunk/bval-jsr303/src/main/java/org/apache/bval/constraints/Email.java b/trunk/bval-jsr303/src/main/java/org/apache/bval/constraints/Email.java
deleted file mode 100644
index dc97236..0000000
--- a/trunk/bval-jsr303/src/main/java/org/apache/bval/constraints/Email.java
+++ /dev/null
@@ -1,49 +0,0 @@
-/*
- * 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.bval.constraints;
-
-import javax.validation.Constraint;
-import javax.validation.Payload;
-import java.lang.annotation.Documented;
-import java.lang.annotation.Retention;
-import java.lang.annotation.Target;
-
-import static java.lang.annotation.ElementType.*;
-import static java.lang.annotation.RetentionPolicy.RUNTIME;
-
-/**
- * <p>
- * --
- * TODO - This class is NOT part of the bean_validation spec and might disappear
- * as soon as a final version of the specification contains a similar functionality.
- * --
- * </p>
- * Description: annotation to validate an email address (by pattern)<br/>
- */
-@Documented
-@Constraint(validatedBy = EmailValidator.class)
-@Target({METHOD, FIELD, ANNOTATION_TYPE, PARAMETER})
-@Retention(RUNTIME)
-public @interface Email {
- Class<?>[] groups() default {};
-
- String message() default "{org.apache.bval.constraints.Email.message}";
-
- Class<? extends Payload>[] payload() default {};
-}
diff --git a/trunk/bval-jsr303/src/main/java/org/apache/bval/constraints/EmailValidator.java b/trunk/bval-jsr303/src/main/java/org/apache/bval/constraints/EmailValidator.java
deleted file mode 100644
index 39dd845..0000000
--- a/trunk/bval-jsr303/src/main/java/org/apache/bval/constraints/EmailValidator.java
+++ /dev/null
@@ -1,39 +0,0 @@
-/*
- * 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.bval.constraints;
-
-import org.apache.bval.routines.EMailValidationUtils;
-
-import javax.validation.ConstraintValidator;
-import javax.validation.ConstraintValidatorContext;
-
-
-/**
- * Description: <br/>
- */
-public class EmailValidator implements ConstraintValidator<Email, CharSequence> {
-
- public boolean isValid(CharSequence value, ConstraintValidatorContext context) {
- return EMailValidationUtils.isValid(value);
- }
-
- public void initialize(Email parameters) {
- // do nothing (as long as Email has no properties)
- }
-}
diff --git a/trunk/bval-jsr303/src/main/java/org/apache/bval/constraints/FutureValidatorForCalendar.java b/trunk/bval-jsr303/src/main/java/org/apache/bval/constraints/FutureValidatorForCalendar.java
deleted file mode 100644
index 920ecd8..0000000
--- a/trunk/bval-jsr303/src/main/java/org/apache/bval/constraints/FutureValidatorForCalendar.java
+++ /dev/null
@@ -1,47 +0,0 @@
-/*
- * 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.bval.constraints;
-
-import javax.validation.ConstraintValidator;
-import javax.validation.ConstraintValidatorContext;
-import javax.validation.constraints.Future;
-import java.util.Calendar;
-
-/**
- * Description: validate a date or calendar representing a date in the future <br/>
- */
-public class FutureValidatorForCalendar implements ConstraintValidator<Future, Calendar> {
-
- public void initialize(Future annotation) {
- }
-
- public boolean isValid(Calendar cal, ConstraintValidatorContext context) {
- return cal == null || cal.after(now());
- }
-
-
- /**
- * overwrite when you need a different algorithm for 'now'.
- *
- * @return current date/time
- */
- protected Calendar now() {
- return Calendar.getInstance();
- }
-}
diff --git a/trunk/bval-jsr303/src/main/java/org/apache/bval/constraints/FutureValidatorForDate.java b/trunk/bval-jsr303/src/main/java/org/apache/bval/constraints/FutureValidatorForDate.java
deleted file mode 100644
index 7dcd169..0000000
--- a/trunk/bval-jsr303/src/main/java/org/apache/bval/constraints/FutureValidatorForDate.java
+++ /dev/null
@@ -1,46 +0,0 @@
-/*
- * 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.bval.constraints;
-
-import javax.validation.ConstraintValidator;
-import javax.validation.ConstraintValidatorContext;
-import javax.validation.constraints.Future;
-import java.util.Date;
-
-/**
- * Description: validate a date or calendar representing a date in the future <br/>
- */
-public class FutureValidatorForDate implements ConstraintValidator<Future, Date> {
-
- public void initialize(Future annotation) {
- }
-
- public boolean isValid(Date date, ConstraintValidatorContext context) {
- return date == null || date.after(now());
- }
-
- /**
- * overwrite when you need a different algorithm for 'now'.
- *
- * @return current date/time
- */
- protected Date now() {
- return new Date();
- }
-}
diff --git a/trunk/bval-jsr303/src/main/java/org/apache/bval/constraints/MaxValidatorForNumber.java b/trunk/bval-jsr303/src/main/java/org/apache/bval/constraints/MaxValidatorForNumber.java
deleted file mode 100644
index deaf9ea..0000000
--- a/trunk/bval-jsr303/src/main/java/org/apache/bval/constraints/MaxValidatorForNumber.java
+++ /dev/null
@@ -1,50 +0,0 @@
-/*
- * 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.bval.constraints;
-
-import javax.validation.ConstraintValidator;
-import javax.validation.ConstraintValidatorContext;
-import javax.validation.constraints.Max;
-import java.math.BigDecimal;
-import java.math.BigInteger;
-
-/**
- * Check that the number being validated is less than or equal to the maximum
- * value specified.
- */
-public class MaxValidatorForNumber implements ConstraintValidator<Max, Number> {
-
- private long max;
-
- public void initialize(Max annotation) {
- this.max = annotation.value();
- }
-
- public boolean isValid(Number value, ConstraintValidatorContext context) {
- if (value == null) {
- return true;
- } else if (value instanceof BigDecimal) {
- return ((BigDecimal) value).compareTo(BigDecimal.valueOf(max)) != 1;
- } else if (value instanceof BigInteger) {
- return ((BigInteger) value).compareTo(BigInteger.valueOf(max)) != 1;
- } else {
- return value.longValue() <= max;
- }
- }
-}
diff --git a/trunk/bval-jsr303/src/main/java/org/apache/bval/constraints/MaxValidatorForString.java b/trunk/bval-jsr303/src/main/java/org/apache/bval/constraints/MaxValidatorForString.java
deleted file mode 100644
index 44a2bcd..0000000
--- a/trunk/bval-jsr303/src/main/java/org/apache/bval/constraints/MaxValidatorForString.java
+++ /dev/null
@@ -1,48 +0,0 @@
-/*
- * 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.bval.constraints;
-
-import javax.validation.ConstraintValidator;
-import javax.validation.ConstraintValidatorContext;
-import javax.validation.constraints.Max;
-import java.math.BigDecimal;
-
-/**
- * Check that the String being validated represents a number, and has a value
- * less than or equal to the maximum value specified.
- */
-public class MaxValidatorForString implements ConstraintValidator<Max, String> {
-
- private long max;
-
- public void initialize(Max annotation) {
- this.max = annotation.value();
- }
-
- public boolean isValid(String value, ConstraintValidatorContext context) {
- if (value == null) {
- return true;
- }
- try {
- return new BigDecimal(value).compareTo(BigDecimal.valueOf(max)) != 1;
- } catch (NumberFormatException nfe) {
- return false;
- }
- }
-}
diff --git a/trunk/bval-jsr303/src/main/java/org/apache/bval/constraints/MinValidatorForNumber.java b/trunk/bval-jsr303/src/main/java/org/apache/bval/constraints/MinValidatorForNumber.java
deleted file mode 100644
index 7c537b9..0000000
--- a/trunk/bval-jsr303/src/main/java/org/apache/bval/constraints/MinValidatorForNumber.java
+++ /dev/null
@@ -1,50 +0,0 @@
-/*
- * 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.bval.constraints;
-
-import javax.validation.ConstraintValidator;
-import javax.validation.ConstraintValidatorContext;
-import javax.validation.constraints.Min;
-import java.math.BigDecimal;
-import java.math.BigInteger;
-
-/**
- * Description: validate that number-value of passed object is >= min-value<br/>
- */
-public class MinValidatorForNumber implements ConstraintValidator<Min, Number> {
-
- private long minValue;
-
- public void initialize(Min annotation) {
- this.minValue = annotation.value();
- }
-
- public boolean isValid(Number value, ConstraintValidatorContext context) {
- if (value == null) {
- return true;
- } else if (value instanceof BigDecimal) {
- return ((BigDecimal) value).compareTo(BigDecimal.valueOf(minValue)) != -1;
- } else if (value instanceof BigInteger) {
- return ((BigInteger) value).compareTo(BigInteger.valueOf(minValue)) != -1;
- } else {
- return value.longValue() >= minValue;
- }
-
- }
-}
diff --git a/trunk/bval-jsr303/src/main/java/org/apache/bval/constraints/MinValidatorForString.java b/trunk/bval-jsr303/src/main/java/org/apache/bval/constraints/MinValidatorForString.java
deleted file mode 100644
index be268dd..0000000
--- a/trunk/bval-jsr303/src/main/java/org/apache/bval/constraints/MinValidatorForString.java
+++ /dev/null
@@ -1,48 +0,0 @@
-/*
- * 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.bval.constraints;
-
-import javax.validation.ConstraintValidator;
-import javax.validation.ConstraintValidatorContext;
-import javax.validation.constraints.Min;
-import java.math.BigDecimal;
-
-/**
- * Check that the String being validated represents a number, and has a value
- * more than or equal to the minimum value specified.
- */
-public class MinValidatorForString implements ConstraintValidator<Min, String> {
-
- private long minValue;
-
- public void initialize(Min annotation) {
- this.minValue = annotation.value();
- }
-
- public boolean isValid(String value, ConstraintValidatorContext context) {
- if (value == null) {
- return true;
- }
- try {
- return new BigDecimal(value).compareTo(BigDecimal.valueOf(minValue)) != -1;
- } catch (NumberFormatException nfe) {
- return false;
- }
- }
-}
diff --git a/trunk/bval-jsr303/src/main/java/org/apache/bval/constraints/NotEmpty.java b/trunk/bval-jsr303/src/main/java/org/apache/bval/constraints/NotEmpty.java
deleted file mode 100644
index a517873..0000000
--- a/trunk/bval-jsr303/src/main/java/org/apache/bval/constraints/NotEmpty.java
+++ /dev/null
@@ -1,48 +0,0 @@
-/*
- * 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.bval.constraints;
-
-import javax.validation.Constraint;
-import javax.validation.Payload;
-import java.lang.annotation.Documented;
-import java.lang.annotation.Retention;
-import java.lang.annotation.Target;
-
-import static java.lang.annotation.ElementType.*;
-import static java.lang.annotation.RetentionPolicy.RUNTIME;
-
-/**
- * <pre>
- * This class is NOT part of the bean_validation spec and might disappear
- * as soon as a final version of the specification contains a similar functionality.
- * </pre>
- */
-@Documented
-@Constraint(
- validatedBy = {NotEmptyValidatorForCollection.class, NotEmptyValidatorForMap.class,
- NotEmptyValidatorForString.class, NotEmptyValidator.class})
-@Target({METHOD, FIELD, ANNOTATION_TYPE, PARAMETER})
-@Retention(RUNTIME)
-public @interface NotEmpty {
- Class<?>[] groups() default {};
-
- String message() default "{org.apache.bval.constraints.NotEmpty.message}";
-
- Class<? extends Payload>[] payload() default {};
-}
diff --git a/trunk/bval-jsr303/src/main/java/org/apache/bval/constraints/NotEmptyValidator.java b/trunk/bval-jsr303/src/main/java/org/apache/bval/constraints/NotEmptyValidator.java
deleted file mode 100644
index 2cb2491..0000000
--- a/trunk/bval-jsr303/src/main/java/org/apache/bval/constraints/NotEmptyValidator.java
+++ /dev/null
@@ -1,56 +0,0 @@
-/*
- * 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.bval.constraints;
-
-import javax.validation.ConstraintValidator;
-import javax.validation.ConstraintValidatorContext;
-import java.lang.reflect.Array;
-import java.lang.reflect.InvocationTargetException;
-import java.lang.reflect.Method;
-
-/**
- * Description: Check the non emptyness of an
- * any object that has a public isEmpty():boolean or a valid toString() method
- */
-public class NotEmptyValidator implements ConstraintValidator<NotEmpty, Object> {
- public void initialize(NotEmpty constraintAnnotation) {
- // do nothing
- }
-
- public boolean isValid(Object value, ConstraintValidatorContext context) {
- if (value == null) return true;
- if (value.getClass().isArray()) {
- return Array.getLength(value) > 0;
- } else {
- try {
- Method isEmptyMethod = value.getClass().getMethod("isEmpty");
- if (isEmptyMethod != null) {
- return !((Boolean) isEmptyMethod.invoke(value)).booleanValue();
- }
- } catch (IllegalAccessException iae) {
- // do nothing
- } catch (NoSuchMethodException nsme) {
- // do nothing
- } catch (InvocationTargetException ite) {
- // do nothing
- }
- return value.toString().length() > 0;
- }
- }
-}
diff --git a/trunk/bval-jsr303/src/main/java/org/apache/bval/constraints/NotEmptyValidatorForCollection.java b/trunk/bval-jsr303/src/main/java/org/apache/bval/constraints/NotEmptyValidatorForCollection.java
deleted file mode 100644
index 8cc0f3a..0000000
--- a/trunk/bval-jsr303/src/main/java/org/apache/bval/constraints/NotEmptyValidatorForCollection.java
+++ /dev/null
@@ -1,36 +0,0 @@
-/*
- * 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.bval.constraints;
-
-import javax.validation.ConstraintValidator;
-import javax.validation.ConstraintValidatorContext;
-import java.util.Collection;
-
-/**
- * Description: <br/>
- */
-public class NotEmptyValidatorForCollection implements ConstraintValidator<NotEmpty, Collection<?>> {
- public void initialize(NotEmpty constraintAnnotation) {
- // do nothing
- }
-
- public boolean isValid(Collection<?> value, ConstraintValidatorContext context) {
- return value == null || !value.isEmpty();
- }
-}
diff --git a/trunk/bval-jsr303/src/main/java/org/apache/bval/constraints/NotEmptyValidatorForMap.java b/trunk/bval-jsr303/src/main/java/org/apache/bval/constraints/NotEmptyValidatorForMap.java
deleted file mode 100644
index cca28bd..0000000
--- a/trunk/bval-jsr303/src/main/java/org/apache/bval/constraints/NotEmptyValidatorForMap.java
+++ /dev/null
@@ -1,36 +0,0 @@
-/*
- * 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.bval.constraints;
-
-import javax.validation.ConstraintValidator;
-import javax.validation.ConstraintValidatorContext;
-import java.util.Map;
-
-/**
- * Description: <br/>
- */
-public class NotEmptyValidatorForMap implements ConstraintValidator<NotEmpty, Map<?, ?>> {
- public void initialize(NotEmpty constraintAnnotation) {
- // do nothing
- }
-
- public boolean isValid(Map<?, ?> value, ConstraintValidatorContext context) {
- return value == null || !value.isEmpty();
- }
-}
diff --git a/trunk/bval-jsr303/src/main/java/org/apache/bval/constraints/NotEmptyValidatorForString.java b/trunk/bval-jsr303/src/main/java/org/apache/bval/constraints/NotEmptyValidatorForString.java
deleted file mode 100644
index 2775c8e..0000000
--- a/trunk/bval-jsr303/src/main/java/org/apache/bval/constraints/NotEmptyValidatorForString.java
+++ /dev/null
@@ -1,35 +0,0 @@
-/*
- * 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.bval.constraints;
-
-import javax.validation.ConstraintValidator;
-import javax.validation.ConstraintValidatorContext;
-
-/**
- * Description: <br/>
- */
-public class NotEmptyValidatorForString implements ConstraintValidator<NotEmpty, String> {
- public void initialize(NotEmpty constraintAnnotation) {
- // do nothing
- }
-
- public boolean isValid(String value, ConstraintValidatorContext context) {
- return value == null || value.length() > 0;
- }
-}
diff --git a/trunk/bval-jsr303/src/main/java/org/apache/bval/constraints/NotNullValidator.java b/trunk/bval-jsr303/src/main/java/org/apache/bval/constraints/NotNullValidator.java
deleted file mode 100644
index 913dc22..0000000
--- a/trunk/bval-jsr303/src/main/java/org/apache/bval/constraints/NotNullValidator.java
+++ /dev/null
@@ -1,34 +0,0 @@
-/*
- * 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.bval.constraints;
-
-import javax.validation.ConstraintValidator;
-import javax.validation.ConstraintValidatorContext;
-import javax.validation.constraints.NotNull;
-
-/** valid when object is NOT null */
-public class NotNullValidator implements ConstraintValidator<NotNull, Object> {
- public void initialize(NotNull constraintAnnotation) {
- // do nothing
- }
-
- public boolean isValid(Object value, ConstraintValidatorContext context) {
- return value != null;
- }
-}
diff --git a/trunk/bval-jsr303/src/main/java/org/apache/bval/constraints/NullValidator.java b/trunk/bval-jsr303/src/main/java/org/apache/bval/constraints/NullValidator.java
deleted file mode 100644
index 0dfa85f..0000000
--- a/trunk/bval-jsr303/src/main/java/org/apache/bval/constraints/NullValidator.java
+++ /dev/null
@@ -1,37 +0,0 @@
-/*
- * 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.bval.constraints;
-
-import javax.validation.ConstraintValidator;
-import javax.validation.ConstraintValidatorContext;
-import javax.validation.constraints.Null;
-
-/**
- * Description: valid when object is null<br/>
- */
-public class NullValidator implements ConstraintValidator<Null, Object> {
-
- public void initialize(Null annotation) {
- // do nothing
- }
-
- public boolean isValid(Object object, ConstraintValidatorContext context) {
- return object == null;
- }
-}
diff --git a/trunk/bval-jsr303/src/main/java/org/apache/bval/constraints/PastValidatorForCalendar.java b/trunk/bval-jsr303/src/main/java/org/apache/bval/constraints/PastValidatorForCalendar.java
deleted file mode 100644
index fee0dc3..0000000
--- a/trunk/bval-jsr303/src/main/java/org/apache/bval/constraints/PastValidatorForCalendar.java
+++ /dev/null
@@ -1,47 +0,0 @@
-/*
- * 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.bval.constraints;
-
-import javax.validation.ConstraintValidator;
-import javax.validation.ConstraintValidatorContext;
-import javax.validation.constraints.Past;
-import java.util.Calendar;
-
-/**
- * Description: validate a date or calendar representing a date in the past<br/>
- */
-public class PastValidatorForCalendar implements ConstraintValidator<Past, Calendar> {
-
- public void initialize(Past annotation) {
- }
-
- public boolean isValid(Calendar cal, ConstraintValidatorContext context) {
- return cal == null || cal.before(now());
- }
-
-
- /**
- * overwrite when you need a different algorithm for 'now'.
- *
- * @return current date/time
- */
- protected Calendar now() {
- return Calendar.getInstance();
- }
-}
diff --git a/trunk/bval-jsr303/src/main/java/org/apache/bval/constraints/PastValidatorForDate.java b/trunk/bval-jsr303/src/main/java/org/apache/bval/constraints/PastValidatorForDate.java
deleted file mode 100644
index 78d88d1..0000000
--- a/trunk/bval-jsr303/src/main/java/org/apache/bval/constraints/PastValidatorForDate.java
+++ /dev/null
@@ -1,46 +0,0 @@
-/*
- * 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.bval.constraints;
-
-import javax.validation.ConstraintValidator;
-import javax.validation.ConstraintValidatorContext;
-import javax.validation.constraints.Past;
-import java.util.Date;
-
-/**
- * Description: validate a date or calendar representing a date in the past<br/>
- */
-public class PastValidatorForDate implements ConstraintValidator<Past, Date> {
-
- public void initialize(Past annotation) {
- }
-
- public boolean isValid(Date date, ConstraintValidatorContext context) {
- return date == null || date.before(now());
- }
-
- /**
- * overwrite when you need a different algorithm for 'now'.
- *
- * @return current date/time
- */
- protected Date now() {
- return new Date();
- }
-}
diff --git a/trunk/bval-jsr303/src/main/java/org/apache/bval/constraints/PatternValidator.java b/trunk/bval-jsr303/src/main/java/org/apache/bval/constraints/PatternValidator.java
deleted file mode 100644
index 8d73561..0000000
--- a/trunk/bval-jsr303/src/main/java/org/apache/bval/constraints/PatternValidator.java
+++ /dev/null
@@ -1,51 +0,0 @@
-/*
- * 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.bval.constraints;
-
-import javax.validation.ConstraintValidator;
-import javax.validation.ConstraintValidatorContext;
-import javax.validation.constraints.Pattern;
-import java.util.regex.PatternSyntaxException;
-
-/**
- * validator using a regular expression,
- * based on the jsr303 Pattern constraint annotation.
- */
-public class PatternValidator implements ConstraintValidator<Pattern, String> {
- protected java.util.regex.Pattern pattern;
-
- public void initialize(Pattern annotation) {
- Pattern.Flag flags[] = annotation.flags();
- int intFlag = 0;
- for (Pattern.Flag flag : flags) {
- intFlag = intFlag | flag.getValue();
- }
-
- try {
- pattern = java.util.regex.Pattern.compile(annotation.regexp(), intFlag);
- } catch (PatternSyntaxException e) {
- throw new IllegalArgumentException("Invalid regular expression.", e);
- }
- }
-
-
- public boolean isValid(String value, ConstraintValidatorContext context) {
- return value == null || pattern.matcher(value).matches();
- }
-}
diff --git a/trunk/bval-jsr303/src/main/java/org/apache/bval/constraints/SizeValidator.java b/trunk/bval-jsr303/src/main/java/org/apache/bval/constraints/SizeValidator.java
deleted file mode 100644
index 7dc68fd..0000000
--- a/trunk/bval-jsr303/src/main/java/org/apache/bval/constraints/SizeValidator.java
+++ /dev/null
@@ -1,44 +0,0 @@
-/*
- * 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.bval.constraints;
-
-import javax.validation.ValidationException;
-import javax.validation.constraints.Size;
-
-/**
- * Description: Abstract validator impl. for @Size annotation<br/>
- */
-public abstract class SizeValidator {
- protected int min;
- protected int max;
-
- /**
- * Configure the constraint validator based on the elements
- * specified at the time it was defined.
- *
- * @param constraint the constraint definition
- */
- public void initialize(Size constraint) {
- min = constraint.min();
- max = constraint.max();
- if (min < 0) throw new ValidationException("Min cannot be negative");
- if (max < 0) throw new ValidationException("Max cannot be negative");
- if (max < min) throw new ValidationException("Max cannot be less than Min");
- }
-}
\ No newline at end of file
diff --git a/trunk/bval-jsr303/src/main/java/org/apache/bval/constraints/SizeValidatorForArrayOfBoolean.java b/trunk/bval-jsr303/src/main/java/org/apache/bval/constraints/SizeValidatorForArrayOfBoolean.java
deleted file mode 100644
index b4abf4a..0000000
--- a/trunk/bval-jsr303/src/main/java/org/apache/bval/constraints/SizeValidatorForArrayOfBoolean.java
+++ /dev/null
@@ -1,45 +0,0 @@
-/*
- * 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.bval.constraints;
-
-import javax.validation.ConstraintValidator;
-import javax.validation.ConstraintValidatorContext;
-import javax.validation.constraints.Size;
-import java.lang.reflect.Array;
-
-public class SizeValidatorForArrayOfBoolean extends SizeValidator
- implements ConstraintValidator<Size, boolean[]> {
-
- /**
- * Checks the number of entries in an array.
- *
- * @param array The array to validate.
- * @param context context in which the constraint is evaluated.
- * @return Returns <code>true</code> if the array is <code>null</code> or the number of entries in
- * <code>array</code> is between the specified <code>min</code> and <code>max</code> values (inclusive),
- * <code>false</code> otherwise.
- */
- public boolean isValid(boolean[] array, ConstraintValidatorContext context) {
- if (array == null) {
- return true;
- }
- int length = Array.getLength(array);
- return length >= min && length <= max;
- }
-}
diff --git a/trunk/bval-jsr303/src/main/java/org/apache/bval/constraints/SizeValidatorForArrayOfByte.java b/trunk/bval-jsr303/src/main/java/org/apache/bval/constraints/SizeValidatorForArrayOfByte.java
deleted file mode 100644
index 8ee17ce..0000000
--- a/trunk/bval-jsr303/src/main/java/org/apache/bval/constraints/SizeValidatorForArrayOfByte.java
+++ /dev/null
@@ -1,45 +0,0 @@
-/*
- * 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.bval.constraints;
-
-import javax.validation.ConstraintValidator;
-import javax.validation.ConstraintValidatorContext;
-import javax.validation.constraints.Size;
-import java.lang.reflect.Array;
-
-public class SizeValidatorForArrayOfByte extends SizeValidator
- implements ConstraintValidator<Size, byte[]> {
-
- /**
- * Checks the number of entries in an array.
- *
- * @param array The array to validate.
- * @param context context in which the constraint is evaluated.
- * @return Returns <code>true</code> if the array is <code>null</code> or the number of entries in
- * <code>array</code> is between the specified <code>min</code> and <code>max</code> values (inclusive),
- * <code>false</code> otherwise.
- */
- public boolean isValid(byte[] array, ConstraintValidatorContext context) {
- if (array == null) {
- return true;
- }
- int length = Array.getLength(array);
- return length >= min && length <= max;
- }
-}
diff --git a/trunk/bval-jsr303/src/main/java/org/apache/bval/constraints/SizeValidatorForArrayOfChar.java b/trunk/bval-jsr303/src/main/java/org/apache/bval/constraints/SizeValidatorForArrayOfChar.java
deleted file mode 100644
index 1466165..0000000
--- a/trunk/bval-jsr303/src/main/java/org/apache/bval/constraints/SizeValidatorForArrayOfChar.java
+++ /dev/null
@@ -1,45 +0,0 @@
-/*
- * 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.bval.constraints;
-
-import javax.validation.ConstraintValidator;
-import javax.validation.ConstraintValidatorContext;
-import javax.validation.constraints.Size;
-import java.lang.reflect.Array;
-
-public class SizeValidatorForArrayOfChar extends SizeValidator
- implements ConstraintValidator<Size, char[]> {
-
- /**
- * Checks the number of entries in an array.
- *
- * @param array The array to validate.
- * @param context context in which the constraint is evaluated.
- * @return Returns <code>true</code> if the array is <code>null</code> or the number of entries in
- * <code>array</code> is between the specified <code>min</code> and <code>max</code> values (inclusive),
- * <code>false</code> otherwise.
- */
- public boolean isValid(char[] array, ConstraintValidatorContext context) {
- if (array == null) {
- return true;
- }
- int length = Array.getLength(array);
- return length >= min && length <= max;
- }
-}
diff --git a/trunk/bval-jsr303/src/main/java/org/apache/bval/constraints/SizeValidatorForArrayOfDouble.java b/trunk/bval-jsr303/src/main/java/org/apache/bval/constraints/SizeValidatorForArrayOfDouble.java
deleted file mode 100644
index 4676e5f..0000000
--- a/trunk/bval-jsr303/src/main/java/org/apache/bval/constraints/SizeValidatorForArrayOfDouble.java
+++ /dev/null
@@ -1,45 +0,0 @@
-/*
- * 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.bval.constraints;
-
-import javax.validation.ConstraintValidator;
-import javax.validation.ConstraintValidatorContext;
-import javax.validation.constraints.Size;
-import java.lang.reflect.Array;
-
-public class SizeValidatorForArrayOfDouble extends SizeValidator
- implements ConstraintValidator<Size, double[]> {
-
- /**
- * Checks the number of entries in an array.
- *
- * @param array The array to validate.
- * @param context context in which the constraint is evaluated.
- * @return Returns <code>true</code> if the array is <code>null</code> or the number of entries in
- * <code>array</code> is between the specified <code>min</code> and <code>max</code> values (inclusive),
- * <code>false</code> otherwise.
- */
- public boolean isValid(double[] array, ConstraintValidatorContext context) {
- if (array == null) {
- return true;
- }
- int length = Array.getLength(array);
- return length >= min && length <= max;
- }
-}
diff --git a/trunk/bval-jsr303/src/main/java/org/apache/bval/constraints/SizeValidatorForArrayOfFloat.java b/trunk/bval-jsr303/src/main/java/org/apache/bval/constraints/SizeValidatorForArrayOfFloat.java
deleted file mode 100644
index 71b3b64..0000000
--- a/trunk/bval-jsr303/src/main/java/org/apache/bval/constraints/SizeValidatorForArrayOfFloat.java
+++ /dev/null
@@ -1,45 +0,0 @@
-/*
- * 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.bval.constraints;
-
-import javax.validation.ConstraintValidator;
-import javax.validation.ConstraintValidatorContext;
-import javax.validation.constraints.Size;
-import java.lang.reflect.Array;
-
-public class SizeValidatorForArrayOfFloat extends SizeValidator
- implements ConstraintValidator<Size, float[]> {
-
- /**
- * Checks the number of entries in an array.
- *
- * @param array The array to validate.
- * @param context context in which the constraint is evaluated.
- * @return Returns <code>true</code> if the array is <code>null</code> or the number of entries in
- * <code>array</code> is between the specified <code>min</code> and <code>max</code> values (inclusive),
- * <code>false</code> otherwise.
- */
- public boolean isValid(float[] array, ConstraintValidatorContext context) {
- if (array == null) {
- return true;
- }
- int length = Array.getLength(array);
- return length >= min && length <= max;
- }
-}
diff --git a/trunk/bval-jsr303/src/main/java/org/apache/bval/constraints/SizeValidatorForArrayOfInt.java b/trunk/bval-jsr303/src/main/java/org/apache/bval/constraints/SizeValidatorForArrayOfInt.java
deleted file mode 100644
index ba2f6f3..0000000
--- a/trunk/bval-jsr303/src/main/java/org/apache/bval/constraints/SizeValidatorForArrayOfInt.java
+++ /dev/null
@@ -1,45 +0,0 @@
-/*
- * 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.bval.constraints;
-
-import javax.validation.ConstraintValidator;
-import javax.validation.ConstraintValidatorContext;
-import javax.validation.constraints.Size;
-import java.lang.reflect.Array;
-
-public class SizeValidatorForArrayOfInt extends SizeValidator
- implements ConstraintValidator<Size, int[]> {
-
- /**
- * Checks the number of entries in an array.
- *
- * @param array The array to validate.
- * @param context context in which the constraint is evaluated.
- * @return Returns <code>true</code> if the array is <code>null</code> or the number of entries in
- * <code>array</code> is between the specified <code>min</code> and <code>max</code> values (inclusive),
- * <code>false</code> otherwise.
- */
- public boolean isValid(int[] array, ConstraintValidatorContext context) {
- if (array == null) {
- return true;
- }
- int length = Array.getLength(array);
- return length >= min && length <= max;
- }
-}
diff --git a/trunk/bval-jsr303/src/main/java/org/apache/bval/constraints/SizeValidatorForArrayOfLong.java b/trunk/bval-jsr303/src/main/java/org/apache/bval/constraints/SizeValidatorForArrayOfLong.java
deleted file mode 100644
index 2965ceb..0000000
--- a/trunk/bval-jsr303/src/main/java/org/apache/bval/constraints/SizeValidatorForArrayOfLong.java
+++ /dev/null
@@ -1,45 +0,0 @@
-/*
- * 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.bval.constraints;
-
-import javax.validation.ConstraintValidator;
-import javax.validation.ConstraintValidatorContext;
-import javax.validation.constraints.Size;
-import java.lang.reflect.Array;
-
-public class SizeValidatorForArrayOfLong extends SizeValidator
- implements ConstraintValidator<Size, long[]> {
-
- /**
- * Checks the number of entries in an array.
- *
- * @param array The array to validate.
- * @param context context in which the constraint is evaluated.
- * @return Returns <code>true</code> if the array is <code>null</code> or the number of entries in
- * <code>array</code> is between the specified <code>min</code> and <code>max</code> values (inclusive),
- * <code>false</code> otherwise.
- */
- public boolean isValid(long[] array, ConstraintValidatorContext context) {
- if (array == null) {
- return true;
- }
- int length = Array.getLength(array);
- return length >= min && length <= max;
- }
-}
diff --git a/trunk/bval-jsr303/src/main/java/org/apache/bval/constraints/SizeValidatorForArrayOfObject.java b/trunk/bval-jsr303/src/main/java/org/apache/bval/constraints/SizeValidatorForArrayOfObject.java
deleted file mode 100644
index 16a450c..0000000
--- a/trunk/bval-jsr303/src/main/java/org/apache/bval/constraints/SizeValidatorForArrayOfObject.java
+++ /dev/null
@@ -1,46 +0,0 @@
-/*
- * 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.bval.constraints;
-
-import javax.validation.ConstraintValidator;
-import javax.validation.ConstraintValidatorContext;
-import javax.validation.constraints.Size;
-import java.lang.reflect.Array;
-
-/** Check that the length of an array is between <i>min</i> and <i>max</i> */
-public class SizeValidatorForArrayOfObject extends SizeValidator
- implements ConstraintValidator<Size, Object[]> {
- /**
- * Checks the number of entries in an array.
- *
- * @param array The array to validate.
- * @param context context in which the constraint is evaluated.
- * @return Returns <code>true</code> if the array is <code>null</code> or the number of entries in
- * <code>array</code> is between the specified <code>min</code> and <code>max</code> values (inclusive),
- * <code>false</code> otherwise.
- */
- public boolean isValid(Object[] array, ConstraintValidatorContext context) {
- if (array == null) {
- return true;
- }
- int length = Array.getLength(array);
- return length >= min && length <= max;
- }
-
-}
diff --git a/trunk/bval-jsr303/src/main/java/org/apache/bval/constraints/SizeValidatorForArrayOfShort.java b/trunk/bval-jsr303/src/main/java/org/apache/bval/constraints/SizeValidatorForArrayOfShort.java
deleted file mode 100644
index df42faa..0000000
--- a/trunk/bval-jsr303/src/main/java/org/apache/bval/constraints/SizeValidatorForArrayOfShort.java
+++ /dev/null
@@ -1,45 +0,0 @@
-/*
- * 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.bval.constraints;
-
-import javax.validation.ConstraintValidator;
-import javax.validation.ConstraintValidatorContext;
-import javax.validation.constraints.Size;
-import java.lang.reflect.Array;
-
-public class SizeValidatorForArrayOfShort extends SizeValidator
- implements ConstraintValidator<Size, short[]> {
-
- /**
- * Checks the number of entries in an array.
- *
- * @param array The array to validate.
- * @param context context in which the constraint is evaluated.
- * @return Returns <code>true</code> if the array is <code>null</code> or the number of entries in
- * <code>array</code> is between the specified <code>min</code> and <code>max</code> values (inclusive),
- * <code>false</code> otherwise.
- */
- public boolean isValid(short[] array, ConstraintValidatorContext context) {
- if (array == null) {
- return true;
- }
- int length = Array.getLength(array);
- return length >= min && length <= max;
- }
-}
diff --git a/trunk/bval-jsr303/src/main/java/org/apache/bval/constraints/SizeValidatorForCollection.java b/trunk/bval-jsr303/src/main/java/org/apache/bval/constraints/SizeValidatorForCollection.java
deleted file mode 100644
index f77a301..0000000
--- a/trunk/bval-jsr303/src/main/java/org/apache/bval/constraints/SizeValidatorForCollection.java
+++ /dev/null
@@ -1,47 +0,0 @@
-/*
- * 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.bval.constraints;
-
-import javax.validation.ConstraintValidator;
-import javax.validation.ConstraintValidatorContext;
-import javax.validation.constraints.Size;
-import java.util.Collection;
-
-/** Check that a Collection's size is between min and max. */
-public class SizeValidatorForCollection extends SizeValidator
- implements ConstraintValidator<Size, Collection<?>> {
-
- /**
- * Checks the number of entries in a map.
- *
- * @param collection The collection to validate.
- * @param context context in which the constraint is evaluated.
- * @return Returns <code>true</code> if the collection is <code>null</code> or the number of entries in
- * <code>collection</code> is between the specified <code>min</code> and <code>max</code> values (inclusive),
- * <code>false</code> otherwise.
- */
- public boolean isValid(Collection<?> collection, ConstraintValidatorContext context) {
- if (collection == null) {
- return true;
- }
- int length = collection.size();
- return length >= min && length <= max;
- }
-
-}
diff --git a/trunk/bval-jsr303/src/main/java/org/apache/bval/constraints/SizeValidatorForMap.java b/trunk/bval-jsr303/src/main/java/org/apache/bval/constraints/SizeValidatorForMap.java
deleted file mode 100644
index 7d73cc3..0000000
--- a/trunk/bval-jsr303/src/main/java/org/apache/bval/constraints/SizeValidatorForMap.java
+++ /dev/null
@@ -1,46 +0,0 @@
-/*
- * 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.bval.constraints;
-
-import javax.validation.ConstraintValidator;
-import javax.validation.ConstraintValidatorContext;
-import javax.validation.constraints.Size;
-import java.util.Map;
-
-/** Check that a Map's size is between min and max. */
-public class SizeValidatorForMap extends SizeValidator
- implements ConstraintValidator<Size, Map<?, ?>> {
- /**
- * Checks the number of entries in a map.
- *
- * @param map The map to validate.
- * @param context context in which the constraint is evaluated.
- * @return Returns <code>true</code> if the map is <code>null</code> or the number of entries in <code>map</code>
- * is between the specified <code>min</code> and <code>max</code> values (inclusive),
- * <code>false</code> otherwise.
- */
- public boolean isValid(Map<?, ?> map, ConstraintValidatorContext context) {
- if (map == null) {
- return true;
- }
- int size = map.size();
- return size >= min && size <= max;
- }
-
-}
diff --git a/trunk/bval-jsr303/src/main/java/org/apache/bval/constraints/SizeValidatorForString.java b/trunk/bval-jsr303/src/main/java/org/apache/bval/constraints/SizeValidatorForString.java
deleted file mode 100644
index 53324c9..0000000
--- a/trunk/bval-jsr303/src/main/java/org/apache/bval/constraints/SizeValidatorForString.java
+++ /dev/null
@@ -1,44 +0,0 @@
-/*
- * 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.bval.constraints;
-
-import javax.validation.ConstraintValidator;
-import javax.validation.ConstraintValidatorContext;
-import javax.validation.constraints.Size;
-
-/** Check that a string's length is between min and max. */
-public class SizeValidatorForString extends SizeValidator
- implements ConstraintValidator<Size, String> {
- /**
- * Checks the length of the specified string.
- *
- * @param s The string to validate.
- * @param context context in which the constraint is evaluated.
- * @return Returns <code>true</code> if the string is <code>null</code> or the length of <code>s</code> between the specified
- * <code>min</code> and <code>max</code> values (inclusive), <code>false</code> otherwise.
- */
- public boolean isValid(String s, ConstraintValidatorContext context) {
- if (s == null) {
- return true;
- }
- int length = s.length();
- return length >= min && length <= max;
- }
-
-}
diff --git a/trunk/bval-jsr303/src/main/java/org/apache/bval/jsr303/AnnotationConstraintBuilder.java b/trunk/bval-jsr303/src/main/java/org/apache/bval/jsr303/AnnotationConstraintBuilder.java
deleted file mode 100644
index d6bf24d..0000000
--- a/trunk/bval-jsr303/src/main/java/org/apache/bval/jsr303/AnnotationConstraintBuilder.java
+++ /dev/null
@@ -1,276 +0,0 @@
-/*
- * 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.bval.jsr303;
-
-import java.lang.annotation.Annotation;
-import java.lang.reflect.InvocationTargetException;
-import java.lang.reflect.Method;
-import java.security.AccessController;
-import java.security.PrivilegedAction;
-import java.util.Arrays;
-import java.util.Collections;
-import java.util.HashMap;
-import java.util.HashSet;
-import java.util.LinkedList;
-import java.util.List;
-import java.util.Map;
-import java.util.Set;
-import java.util.logging.Level;
-import java.util.logging.Logger;
-
-import javax.validation.ConstraintDeclarationException;
-import javax.validation.ConstraintValidator;
-import javax.validation.OverridesAttribute;
-import javax.validation.Payload;
-import javax.validation.ReportAsSingleViolation;
-
-import org.apache.bval.jsr303.groups.GroupsComputer;
-import org.apache.bval.jsr303.xml.AnnotationProxyBuilder;
-import org.apache.bval.util.AccessStrategy;
-
-/**
- * Description: helper class that builds a {@link ConstraintValidation} or its
- * composite constraint validations by parsing the jsr303-annotations and
- * providing information (e.g. for @OverridesAttributes) <br/>
- */
-final class AnnotationConstraintBuilder<A extends Annotation> {
- private static final Logger log = Logger.getLogger(AnnotationConstraintBuilder.class.getName());
-
- private final ConstraintValidation<?> constraintValidation;
- private List<ConstraintOverrides> overrides;
-
- /**
- * Create a new AnnotationConstraintBuilder instance.
- *
- * @param validatorClasses
- * @param constraintValidator
- * @param annotation
- * @param owner
- * @param access
- */
- public AnnotationConstraintBuilder(Class<? extends ConstraintValidator<A, ?>>[] validatorClasses,
- ConstraintValidator<A, ?> constraintValidator, A annotation, Class<?> owner, AccessStrategy access) {
- boolean reportFromComposite =
- annotation != null && annotation.annotationType().isAnnotationPresent(ReportAsSingleViolation.class);
- constraintValidation =
- new ConstraintValidation<A>(validatorClasses, constraintValidator, annotation, owner, access,
- reportFromComposite);
- buildFromAnnotation();
- }
-
- /** build attributes, payload, groups from 'annotation' */
- private void buildFromAnnotation() {
- if (constraintValidation.getAnnotation() != null) {
- run(new PrivilegedAction<Object>() {
- public Object run() {
- for (Method method : constraintValidation.getAnnotation().annotationType().getDeclaredMethods()) {
- // groups + payload must also appear in attributes (also
- // checked by TCK-Tests)
- if (method.getParameterTypes().length == 0) {
- try {
- if (ConstraintAnnotationAttributes.PAYLOAD.getAttributeName().equals(method.getName())) {
- buildPayload(method);
- } else if (ConstraintAnnotationAttributes.GROUPS.getAttributeName().equals(
- method.getName())) {
- buildGroups(method);
- } else {
- constraintValidation.getAttributes().put(method.getName(),
- method.invoke(constraintValidation.getAnnotation()));
- }
- } catch (Exception e) { // do nothing
- log.log(Level.WARNING, String.format("Error processing annotation: %s ", constraintValidation.getAnnotation()), e);
- }
- }
- }
- return null;
- }
- });
- }
- }
-
- private void buildGroups(Method method) throws IllegalAccessException, InvocationTargetException {
- Object raw = method.invoke(constraintValidation.getAnnotation());
- Class<?>[] garr;
- if (raw instanceof Class<?>) {
- garr = new Class[] { (Class<?>) raw };
- } else if (raw instanceof Class<?>[]) {
- garr = (Class<?>[]) raw;
- } else {
- garr = null;
- }
-
- if (garr == null || garr.length == 0) {
- garr = GroupsComputer.getDefaultGroupArray();
- }
- constraintValidation.setGroups(new HashSet<Class<?>>(Arrays.asList(garr)));
- }
-
- @SuppressWarnings("unchecked")
- private void buildPayload(Method method) throws IllegalAccessException, InvocationTargetException {
- Class<? extends Payload>[] payload_raw =
- (Class<? extends Payload>[]) method.invoke(constraintValidation.getAnnotation());
- Set<Class<? extends Payload>> payloadSet;
- if (payload_raw == null) {
- payloadSet = Collections.<Class<? extends Payload>> emptySet();
- } else {
- payloadSet = new HashSet<Class<? extends Payload>>(payload_raw.length);
- payloadSet.addAll(Arrays.asList(payload_raw));
- }
- constraintValidation.setPayload(payloadSet);
- }
-
- /**
- * Get the configured {@link ConstraintValidation}.
- *
- * @return {@link ConstraintValidation}
- */
- public ConstraintValidation<?> getConstraintValidation() {
- return constraintValidation;
- }
-
- /**
- * initialize a child composite 'validation' with @OverridesAttribute from
- * 'constraintValidation' and add to composites.
- */
- public void addComposed(ConstraintValidation<?> composite) {
- applyOverridesAttributes(composite);
- constraintValidation.addComposed(composite); // add AFTER apply()
- }
-
- private void applyOverridesAttributes(ConstraintValidation<?> composite) {
- if (null == overrides) {
- buildOverridesAttributes();
- }
- if (!overrides.isEmpty()) {
- int index = computeIndex(composite);
-
- // Search for the overrides to apply
- ConstraintOverrides generalOverride = findOverride(composite.getAnnotation().annotationType(), -1);
- if (generalOverride != null) {
- if (index > 0) {
- throw new ConstraintDeclarationException("Wrong OverridesAttribute declaration for "
- + generalOverride.constraintType
- + ", it needs a defined index when there is a list of constraints");
- }
- generalOverride.applyOn(composite);
- }
-
- ConstraintOverrides override = findOverride(composite.getAnnotation().annotationType(), index);
- if (override != null) {
- override.applyOn(composite);
- }
-
- }
- }
-
- /**
- * Calculates the index of the composite constraint. The index represents
- * the order in which it is added in reference to other constraints of the
- * same type.
- *
- * @param composite
- * The composite constraint (not yet added).
- * @return An integer index always >= 0
- */
- private int computeIndex(ConstraintValidation<?> composite) {
- int idx = 0;
- for (ConstraintValidation<?> each : constraintValidation.getComposingValidations()) {
- if (each.getAnnotation().annotationType() == composite.getAnnotation().annotationType()) {
- idx++;
- }
- }
- return idx;
- }
-
- /** read overridesAttributes from constraintValidation.annotation */
- private void buildOverridesAttributes() {
- overrides = new LinkedList<ConstraintOverrides>();
- for (Method method : constraintValidation.getAnnotation().annotationType().getDeclaredMethods()) {
- OverridesAttribute.List annoOAL = method.getAnnotation(OverridesAttribute.List.class);
- if (annoOAL != null) {
- for (OverridesAttribute annoOA : annoOAL.value()) {
- parseConstraintOverride(method.getName(), annoOA);
- }
- }
- OverridesAttribute annoOA = method.getAnnotation(OverridesAttribute.class);
- if (annoOA != null) {
- parseConstraintOverride(method.getName(), annoOA);
- }
- }
- }
-
- private void parseConstraintOverride(String methodName, OverridesAttribute oa) {
- ConstraintOverrides target = findOverride(oa.constraint(), oa.constraintIndex());
- if (target == null) {
- target = new ConstraintOverrides(oa.constraint(), oa.constraintIndex());
- overrides.add(target);
- }
- target.values.put(oa.name(), constraintValidation.getAttributes().get(methodName));
- }
-
- private ConstraintOverrides findOverride(Class<? extends Annotation> constraint, int constraintIndex) {
- for (ConstraintOverrides each : overrides) {
- if (each.constraintType == constraint && each.constraintIndex == constraintIndex) {
- return each;
- }
- }
- return null;
- }
-
- /**
- * Holds the values to override in a composed constraint during creation of
- * a composed ConstraintValidation
- */
- private static final class ConstraintOverrides {
- final Class<? extends Annotation> constraintType;
- final int constraintIndex;
-
- /** key = attributeName, value = overridden value */
- final Map<String, Object> values;
-
- private ConstraintOverrides(Class<? extends Annotation> constraintType, int constraintIndex) {
- this.constraintType = constraintType;
- this.constraintIndex = constraintIndex;
- values = new HashMap<String, Object>();
- }
-
- @SuppressWarnings("unchecked")
- private void applyOn(ConstraintValidation<?> composite) {
- // Update the attributes
- composite.getAttributes().putAll(values);
-
- // And the annotation
- Annotation originalAnnot = composite.getAnnotation();
- AnnotationProxyBuilder<Annotation> apb = new AnnotationProxyBuilder<Annotation>(originalAnnot);
- for (String key : values.keySet()) {
- apb.putValue(key, values.get(key));
- }
- Annotation newAnnot = apb.createAnnotation();
- ((ConstraintValidation<Annotation>) composite).setAnnotation(newAnnot);
- }
- }
-
- private static <T> T run(PrivilegedAction<T> action) {
- if (System.getSecurityManager() != null) {
- return AccessController.doPrivileged(action);
- } else {
- return action.run();
- }
- }
-}
diff --git a/trunk/bval-jsr303/src/main/java/org/apache/bval/jsr303/AnnotationProcessor.java b/trunk/bval-jsr303/src/main/java/org/apache/bval/jsr303/AnnotationProcessor.java
deleted file mode 100644
index 5629e80..0000000
--- a/trunk/bval-jsr303/src/main/java/org/apache/bval/jsr303/AnnotationProcessor.java
+++ /dev/null
@@ -1,450 +0,0 @@
-/*
- * 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.bval.jsr303;
-
-import java.lang.annotation.Annotation;
-import java.lang.reflect.AnnotatedElement;
-import java.lang.reflect.Array;
-import java.lang.reflect.GenericArrayType;
-import java.lang.reflect.InvocationTargetException;
-import java.lang.reflect.Type;
-import java.util.ArrayList;
-import java.util.HashMap;
-import java.util.List;
-import java.util.Map;
-import java.util.Set;
-
-import javax.validation.Constraint;
-import javax.validation.ConstraintValidator;
-import javax.validation.UnexpectedTypeException;
-import javax.validation.Valid;
-import javax.validation.ValidationException;
-import javax.validation.groups.Default;
-
-import org.apache.bval.jsr303.util.ConstraintDefinitionValidator;
-import org.apache.bval.jsr303.util.SecureActions;
-import org.apache.bval.model.Features;
-import org.apache.bval.model.MetaBean;
-import org.apache.bval.model.MetaProperty;
-import org.apache.bval.util.AccessStrategy;
-import org.apache.commons.lang3.ArrayUtils;
-import org.apache.commons.lang3.ClassUtils;
-import org.apache.commons.lang3.reflect.TypeUtils;
-
-/**
- * Description: implements uniform handling of JSR303 {@link Constraint}
- * annotations, including composed constraints and the resolution of
- * {@link ConstraintValidator} implementations.
- *
- * @version $Rev: 996992 $ $Date: 2010-09-14 12:05:40 -0500 (Tue, 14 Sep 2010) $
- */
-public final class AnnotationProcessor {
- /** {@link ApacheFactoryContext} used */
- private final ApacheFactoryContext factoryContext;
-
- /**
- * Create a new {@link AnnotationProcessor} instance.
- *
- * @param factoryContext
- */
- public AnnotationProcessor(ApacheFactoryContext factoryContext) {
- this.factoryContext = factoryContext;
- }
-
- /**
- * Process JSR303 annotations.
- *
- * @param prop
- * potentially null
- * @param owner
- * bean type
- * @param element
- * whose annotations to read
- * @param access
- * strategy for <code>prop</code>
- * @param appender
- * handling accumulation
- * @return whether any processing took place
- * @throws IllegalAccessException
- * @throws InvocationTargetException
- */
- public boolean processAnnotations(MetaProperty prop, Class<?> owner, AnnotatedElement element,
- AccessStrategy access, AppendValidation appender) throws IllegalAccessException, InvocationTargetException {
-
- boolean changed = false;
- for (Annotation annotation : element.getDeclaredAnnotations()) {
- changed |= processAnnotation(annotation, prop, owner, access, appender);
- }
- return changed;
- }
-
- /**
- * Convenience method to process a single class-level annotation.
- *
- * @param <A>
- * annotation type
- * @param annotation
- * to process
- * @param owner
- * bean type
- * @param appender
- * handling accumulation
- * @return whether any processing took place
- * @throws IllegalAccessException
- * @throws InvocationTargetException
- */
- public final <A extends Annotation> boolean processAnnotation(A annotation, Class<?> owner, AppendValidation appender)
- throws IllegalAccessException, InvocationTargetException {
- return processAnnotation(annotation, null, owner, null, appender);
- }
-
- /**
- * Process a single annotation.
- *
- * @param <A>
- * annotation type
- * @param annotation
- * to process
- * @param prop
- * potentially null
- * @param owner
- * bean type
- * @param access
- * strategy for <code>prop</code>
- * @param appender
- * handling accumulation
- * @return whether any processing took place
- * @throws IllegalAccessException
- * @throws InvocationTargetException
- */
- public <A extends Annotation> boolean processAnnotation(A annotation, MetaProperty prop, Class<?> owner,
- AccessStrategy access, AppendValidation appender) throws IllegalAccessException, InvocationTargetException {
- if (annotation instanceof Valid) {
- return addAccessStrategy(prop, access);
- }
- /**
- * An annotation is considered a constraint definition if its retention
- * policy contains RUNTIME and if the annotation itself is annotated
- * with javax.validation.Constraint.
- */
- Constraint vcAnno = annotation.annotationType().getAnnotation(Constraint.class);
- if (vcAnno != null) {
- ConstraintDefinitionValidator.validateConstraintDefinition(annotation);
- Class<? extends ConstraintValidator<A, ?>>[] validatorClasses;
- validatorClasses = findConstraintValidatorClasses(annotation, vcAnno);
- return applyConstraint(annotation, validatorClasses, prop, owner, access, appender);
- }
- /**
- * Multi-valued constraints: To support this requirement, the bean
- * validation provider treats regular annotations (annotations not
- * annotated by @Constraint) whose value element has a return type of an
- * array of constraint annotations in a special way.
- */
- Object result =
- SecureActions.getAnnotationValue(annotation, ConstraintAnnotationAttributes.VALUE.getAttributeName());
- if (result instanceof Annotation[]) {
- boolean changed = false;
- for (Annotation each : (Annotation[]) result) {
- changed |= processAnnotation(each, prop, owner, access, appender);
- }
- return changed;
- }
- return false;
- }
-
- /**
- * Add the specified {@link AccessStrategy} to <code>prop</code>; noop if
- * <code>prop == null</code>.
- *
- * @param prop
- * @param access
- * @return whether anything took place.
- */
- public boolean addAccessStrategy(MetaProperty prop, AccessStrategy access) {
- if (prop == null) {
- return false;
- }
- AccessStrategy[] strategies = prop.getFeature(Features.Property.REF_CASCADE);
- if (strategies == null) {
- strategies = new AccessStrategy[] { access };
- prop.putFeature(Features.Property.REF_CASCADE, strategies);
- } else if (!ArrayUtils.contains(strategies, access)) {
- prop.putFeature(Features.Property.REF_CASCADE, ArrayUtils.add(strategies, access));
- }
- return true;
- }
-
- /**
- * Find available {@link ConstraintValidation} classes for a given
- * constraint annotation.
- *
- * @param annotation
- * @param vcAnno
- * @return {@link ConstraintValidation} implementation class array
- */
- @SuppressWarnings("unchecked")
- private <A extends Annotation> Class<? extends ConstraintValidator<A, ?>>[] findConstraintValidatorClasses(
- A annotation, Constraint vcAnno) {
- if (vcAnno == null) {
- vcAnno = annotation.annotationType().getAnnotation(Constraint.class);
- }
- Class<? extends ConstraintValidator<A, ?>>[] validatorClasses;
- Class<A> annotationType = (Class<A>) annotation.annotationType();
- validatorClasses = factoryContext.getFactory().getConstraintsCache().getConstraintValidators(annotationType);
- if (validatorClasses == null) {
- validatorClasses = (Class<? extends ConstraintValidator<A, ?>>[]) vcAnno.validatedBy();
- if (validatorClasses.length == 0) {
- validatorClasses =
- factoryContext.getFactory().getDefaultConstraints().getValidatorClasses(annotationType);
- }
- }
- return validatorClasses;
- }
-
- /**
- * Apply a constraint to the specified <code>appender</code>.
- *
- * @param annotation
- * constraint annotation
- * @param constraintClasses
- * known {@link ConstraintValidator} implementation classes for
- * <code>annotation</code>
- * @param prop
- * meta-property
- * @param owner
- * type
- * @param access
- * strategy
- * @param appender
- * @return success flag
- * @throws IllegalAccessException
- * @throws InvocationTargetException
- */
- private <A extends Annotation> boolean applyConstraint(A annotation,
- Class<? extends ConstraintValidator<A, ?>>[] constraintClasses, MetaProperty prop, Class<?> owner,
- AccessStrategy access, AppendValidation appender) throws IllegalAccessException, InvocationTargetException {
-
- final ConstraintValidator<A, ?> validator =
- getConstraintValidator(annotation, constraintClasses, owner, access);
- final AnnotationConstraintBuilder<A> builder =
- new AnnotationConstraintBuilder<A>(constraintClasses, validator, annotation, owner, access);
-
- // JSR-303 3.4.4: Add implicit groups
- if (prop != null && prop.getParentMetaBean() != null) {
- MetaBean parentMetaBean = prop.getParentMetaBean();
- // If:
- // - the owner is an interface
- // - the class of the metabean being build is different than the
- // owner
- // - and only the Default group is defined
- // Then: add the owner interface as implicit groups
- if (builder.getConstraintValidation().getOwner().isInterface()
- && parentMetaBean.getBeanClass() != builder.getConstraintValidation().getOwner()
- && builder.getConstraintValidation().getGroups().size() == 1
- && builder.getConstraintValidation().getGroups().contains(Default.class)) {
- Set<Class<?>> groups = builder.getConstraintValidation().getGroups();
- groups.add(builder.getConstraintValidation().getOwner());
- builder.getConstraintValidation().setGroups(groups);
- }
- }
-
- // If already building a constraint composition tree, ensure that:
- // - the parent groups are inherited
- // - the parent payload is inherited
- if (appender instanceof AppendValidationToBuilder) {
- AppendValidationToBuilder avb = (AppendValidationToBuilder) appender;
- builder.getConstraintValidation().setGroups(avb.getInheritedGroups());
- builder.getConstraintValidation().setPayload(avb.getInheritedPayload());
- }
-
- // process composed constraints:
- // here are not other superclasses possible, because annotations do not
- // inherit!
- processAnnotations(prop, owner, annotation.annotationType(), access, new AppendValidationToBuilder(builder));
-
- // Even if the validator is null, it must be added to mimic the RI impl
- appender.append(builder.getConstraintValidation());
- return true;
- }
-
- private <A extends Annotation, T> ConstraintValidator<A, ? super T> getConstraintValidator(A annotation,
- Class<? extends ConstraintValidator<A, ?>>[] constraintClasses, Class<?> owner, AccessStrategy access) {
- if (constraintClasses != null && constraintClasses.length > 0) {
- Type type = determineTargetedType(owner, access);
- /**
- * spec says in chapter 3.5.3.: The ConstraintValidator chosen to
- * validate a declared type T is the one where the type supported by
- * the ConstraintValidator is a supertype of T and where there is no
- * other ConstraintValidator whose supported type is a supertype of
- * T and not a supertype of the chosen ConstraintValidator supported
- * type.
- */
- Map<Type, Class<? extends ConstraintValidator<A, ?>>> validatorTypes =
- getValidatorsTypes(constraintClasses);
- final List<Type> assignableTypes = new ArrayList<Type>(constraintClasses.length);
- fillAssignableTypes(type, validatorTypes.keySet(), assignableTypes);
- reduceAssignableTypes(assignableTypes);
- checkOneType(assignableTypes, type, owner, annotation, access);
-
- @SuppressWarnings("unchecked")
- final ConstraintValidator<A, ? super T> validator =
- (ConstraintValidator<A, ? super T>) factoryContext.getFactory().getConstraintValidatorFactory()
- .getInstance(validatorTypes.get(assignableTypes.get(0)));
- if (validator == null) {
- throw new ValidationException("Factory returned null validator for: "
- + validatorTypes.get(assignableTypes.get(0)));
-
- }
- return validator;
- // NOTE: validator initialization deferred until append phase
- }
- return null;
- }
-
- private static void checkOneType(List<Type> types, Type targetType, Class<?> owner, Annotation anno,
- AccessStrategy access) {
-
- if (types.isEmpty()) {
- StringBuilder buf =
- new StringBuilder().append("No validator could be found for type ").append(stringForType(targetType))
- .append(". See: @").append(anno.annotationType().getSimpleName()).append(" at ").append(
- stringForLocation(owner, access));
- throw new UnexpectedTypeException(buf.toString());
- } else if (types.size() > 1) {
- StringBuilder buf = new StringBuilder();
- buf.append("Ambiguous validators for type ");
- buf.append(stringForType(targetType));
- buf.append(". See: @").append(anno.annotationType().getSimpleName()).append(" at ").append(
- stringForLocation(owner, access));
- buf.append(". Validators are: ");
- boolean comma = false;
- for (Type each : types) {
- if (comma)
- buf.append(", ");
- comma = true;
- buf.append(each);
- }
- throw new UnexpectedTypeException(buf.toString());
- }
- }
-
- /** implements spec chapter 3.5.3. ConstraintValidator resolution algorithm. */
- private static Type determineTargetedType(Class<?> owner, AccessStrategy access) {
- // if the constraint declaration is hosted on a class or an interface,
- // the targeted type is the class or the interface.
- if (access == null)
- return owner;
- Type type = access.getJavaType();
- if (type == null)
- return Object.class;
- if (type instanceof Class<?>)
- type = ClassUtils.primitiveToWrapper((Class<?>) type);
- return type;
- }
-
- private static String stringForType(Type clazz) {
- if (clazz instanceof Class<?>) {
- if (((Class<?>) clazz).isArray()) {
- return ((Class<?>) clazz).getComponentType().getName() + "[]";
- } else {
- return ((Class<?>) clazz).getName();
- }
- } else {
- return clazz.toString();
- }
- }
-
- private static String stringForLocation(Class<?> owner, AccessStrategy access) {
- if (access != null) {
- return access.toString();
- } else {
- return owner.getName();
- }
- }
-
- private static void fillAssignableTypes(Type type, Set<Type> validatorsTypes, List<Type> suitableTypes) {
- for (Type validatorType : validatorsTypes) {
- if (org.apache.commons.lang3.reflect.TypeUtils.isAssignable(type, validatorType)
- && !suitableTypes.contains(validatorType)) {
- suitableTypes.add(validatorType);
- }
- }
- }
-
- /**
- * Tries to reduce all assignable classes down to a single class.
- *
- * @param assignableTypes
- * The set of all classes which are assignable to the class of
- * the value to be validated and which are handled by at least
- * one of the validators for the specified constraint.
- */
- private static void reduceAssignableTypes(List<Type> assignableTypes) {
- if (assignableTypes.size() <= 1) {
- return; // no need to reduce
- }
- boolean removed;
- do {
- removed = false;
- final Type type = assignableTypes.get(0);
- for (int i = 1; i < assignableTypes.size(); i++) {
- Type nextType = assignableTypes.get(i);
- if (TypeUtils.isAssignable(nextType, type)) {
- assignableTypes.remove(0);
- i--;
- removed = true;
- } else if (TypeUtils.isAssignable(type, nextType)) {
- assignableTypes.remove(i--);
- removed = true;
- }
- }
- } while (removed && assignableTypes.size() > 1);
-
- }
-
- /**
- * Given a set of {@link ConstraintValidator} implementation classes, map
- * those to their target types.
- *
- * @param constraintValidatorClasses
- * @return {@link Map} of {@link Type} : {@link ConstraintValidator} subtype
- */
- private static <A extends Annotation> Map<Type, Class<? extends ConstraintValidator<A, ?>>> getValidatorsTypes(
- Class<? extends ConstraintValidator<A, ?>>[] constraintValidatorClasses) {
- Map<Type, Class<? extends ConstraintValidator<A, ?>>> validatorsTypes =
- new HashMap<Type, Class<? extends ConstraintValidator<A, ?>>>();
- for (Class<? extends ConstraintValidator<A, ?>> validatorType : constraintValidatorClasses) {
- Type validatedType =
- TypeUtils.getTypeArguments(validatorType, ConstraintValidator.class).get(
- ConstraintValidator.class.getTypeParameters()[1]);
- if (validatedType == null) {
- throw new ValidationException(String.format("Could not detect validated type for %s", validatorType));
- }
- if (validatedType instanceof GenericArrayType) {
- Type componentType = TypeUtils.getArrayComponentType(validatedType);
- if (componentType instanceof Class<?>) {
- validatedType = Array.newInstance((Class<?>) componentType, 0).getClass();
- }
- }
- validatorsTypes.put(validatedType, validatorType);
- }
- return validatorsTypes;
- }
-
-}
diff --git a/trunk/bval-jsr303/src/main/java/org/apache/bval/jsr303/ApacheFactoryContext.java b/trunk/bval-jsr303/src/main/java/org/apache/bval/jsr303/ApacheFactoryContext.java
deleted file mode 100644
index 8072f59..0000000
--- a/trunk/bval-jsr303/src/main/java/org/apache/bval/jsr303/ApacheFactoryContext.java
+++ /dev/null
@@ -1,306 +0,0 @@
-/*
- * 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.bval.jsr303;
-
-import java.lang.reflect.Constructor;
-import java.security.AccessController;
-import java.security.PrivilegedAction;
-import java.util.ArrayList;
-import java.util.List;
-
-import javax.validation.ConstraintValidatorFactory;
-import javax.validation.MessageInterpolator;
-import javax.validation.TraversableResolver;
-import javax.validation.ValidationException;
-import javax.validation.Validator;
-import javax.validation.ValidatorContext;
-
-import org.apache.bval.IntrospectorMetaBeanFactory;
-import org.apache.bval.MetaBeanBuilder;
-import org.apache.bval.MetaBeanFactory;
-import org.apache.bval.MetaBeanFinder;
-import org.apache.bval.MetaBeanManager;
-import org.apache.bval.jsr303.util.SecureActions;
-import org.apache.bval.xml.XMLMetaBeanBuilder;
-import org.apache.bval.xml.XMLMetaBeanFactory;
-import org.apache.bval.xml.XMLMetaBeanManager;
-import org.apache.commons.lang3.StringUtils;
-import org.apache.commons.lang3.reflect.ConstructorUtils;
-
-/**
- * Description: Represents the context that is used to create
- * <code>ClassValidator</code> instances.<br/>
- */
-public class ApacheFactoryContext implements ValidatorContext {
- private final ApacheValidatorFactory factory;
- private final MetaBeanFinder metaBeanFinder;
-
- private MessageInterpolator messageInterpolator;
- private TraversableResolver traversableResolver;
- private ConstraintValidatorFactory constraintValidatorFactory;
-
- /**
- * Create a new ApacheFactoryContext instance.
- *
- * @param factory
- */
- public ApacheFactoryContext(ApacheValidatorFactory factory) {
- this.factory = factory;
- this.metaBeanFinder = buildMetaBeanFinder();
- }
-
- /**
- * Create a new ApacheFactoryContext instance.
- *
- * @param factory
- * @param metaBeanFinder
- */
- protected ApacheFactoryContext(ApacheValidatorFactory factory, MetaBeanFinder metaBeanFinder) {
- this.factory = factory;
- this.metaBeanFinder = metaBeanFinder;
- }
-
- /**
- * Get the {@link ApacheValidatorFactory} used by this
- * {@link ApacheFactoryContext}.
- *
- * @return {@link ApacheValidatorFactory}
- */
- public ApacheValidatorFactory getFactory() {
- return factory;
- }
-
- /**
- * Get the metaBeanFinder.
- *
- * @return {@link MetaBeanFinder}
- */
- public final MetaBeanFinder getMetaBeanFinder() {
- return metaBeanFinder;
- }
-
- /**
- * {@inheritDoc}
- */
- public ValidatorContext messageInterpolator(MessageInterpolator messageInterpolator) {
- this.messageInterpolator = messageInterpolator;
- return this;
- }
-
- /**
- * {@inheritDoc}
- */
- public ValidatorContext traversableResolver(TraversableResolver traversableResolver) {
- this.traversableResolver = traversableResolver;
- return this;
- }
-
- /**
- * {@inheritDoc}
- */
- public ValidatorContext constraintValidatorFactory(ConstraintValidatorFactory constraintValidatorFactory) {
- this.constraintValidatorFactory = constraintValidatorFactory;
- return this;
- }
-
- /**
- * Get the {@link ConstraintValidatorFactory}.
- *
- * @return {@link ConstraintValidatorFactory}
- */
- public ConstraintValidatorFactory getConstraintValidatorFactory() {
- return constraintValidatorFactory == null ? factory.getConstraintValidatorFactory()
- : constraintValidatorFactory;
- }
-
- /**
- * {@inheritDoc}
- */
- public Validator getValidator() {
- ClassValidator validator = new ClassValidator(this);
- if (Boolean.parseBoolean(factory.getProperties().get(
- ApacheValidatorConfiguration.Properties.TREAT_MAPS_LIKE_BEANS))) {
- validator.setTreatMapsLikeBeans(true);
- }
- return validator;
- }
-
- /**
- * Get the {@link MessageInterpolator}.
- *
- * @return {@link MessageInterpolator}
- */
- public MessageInterpolator getMessageInterpolator() {
- return messageInterpolator == null ? factory.getMessageInterpolator() : messageInterpolator;
- }
-
- /**
- * Get the {@link TraversableResolver}.
- *
- * @return {@link TraversableResolver}
- */
- public TraversableResolver getTraversableResolver() {
- return traversableResolver == null ? factory.getTraversableResolver() : traversableResolver;
- }
-
- /**
- * Create MetaBeanManager that uses factories:
- * <ol>
- * <li>if enabled by
- * {@link ApacheValidatorConfiguration.Properties#ENABLE_INTROSPECTOR}, an
- * {@link IntrospectorMetaBeanFactory}</li>
- * <li>{@link MetaBeanFactory} types (if any) specified by
- * {@link ApacheValidatorConfiguration.Properties#METABEAN_FACTORY_CLASSNAMES}
- * </li>
- * <li>if no {@link Jsr303MetaBeanFactory} has yet been specified (this
- * allows factory order customization), a {@link Jsr303MetaBeanFactory}
- * which handles both JSR303-XML and JSR303-Annotations</li>
- * <li>if enabled by
- * {@link ApacheValidatorConfiguration.Properties#ENABLE_METABEANS_XML}, an
- * {@link XMLMetaBeanFactory}</li>
- * </ol>
- *
- * @return a new instance of MetaBeanManager with adequate MetaBeanFactories
- */
- protected MetaBeanFinder buildMetaBeanFinder() {
- List<MetaBeanFactory> builders = new ArrayList<MetaBeanFactory>();
- if (Boolean.parseBoolean(factory.getProperties().get(
- ApacheValidatorConfiguration.Properties.ENABLE_INTROSPECTOR))) {
- builders.add(new IntrospectorMetaBeanFactory());
- }
- String[] factoryClassNames =
- StringUtils.split(
- factory.getProperties().get(ApacheValidatorConfiguration.Properties.METABEAN_FACTORY_CLASSNAMES));
- if (factoryClassNames != null) {
- for (String clsName : factoryClassNames) {
- // cast, relying on #createMetaBeanFactory to throw the exception if incompatible:
- @SuppressWarnings("unchecked")
- Class<? extends MetaBeanFactory> factoryClass = (Class<? extends MetaBeanFactory>) loadClass(clsName);
- builders.add(createMetaBeanFactory(factoryClass));
- }
- }
- boolean jsr303Found = false;
- for (MetaBeanFactory builder : builders) {
- jsr303Found |= builder instanceof Jsr303MetaBeanFactory;
- }
- if (!jsr303Found) {
- builders.add(new Jsr303MetaBeanFactory(this));
- }
- @SuppressWarnings("deprecation")
- boolean enableMetaBeansXml = Boolean.parseBoolean(factory.getProperties().get(
- ApacheValidatorConfiguration.Properties.ENABLE_METABEANS_XML));
- if (enableMetaBeansXml) {
- XMLMetaBeanManagerCreator.addFactory(builders);
- }
- return createMetaBeanManager(builders);
- }
-
- /**
- * Create a {@link MetaBeanManager} using the specified builders.
- *
- * @param builders
- * {@link MetaBeanFactory} {@link List}
- * @return {@link MetaBeanManager}
- */
- @SuppressWarnings("deprecation")
- protected MetaBeanFinder createMetaBeanManager(List<MetaBeanFactory> builders) {
- // as long as we support both: jsr303 (in the builders list) and xstream-xml metabeans:
- if (Boolean.parseBoolean(factory.getProperties().get(
- ApacheValidatorConfiguration.Properties.ENABLE_METABEANS_XML))) {
- return XMLMetaBeanManagerCreator.createXMLMetaBeanManager(builders);
- }
- return new MetaBeanManager(new MetaBeanBuilder(builders.toArray(new MetaBeanFactory[builders.size()])));
- }
-
- private <F extends MetaBeanFactory> F createMetaBeanFactory(final Class<F> cls) {
- return run(new PrivilegedAction<F>() {
-
- public F run() {
- try {
- Constructor<F> c = ConstructorUtils.getMatchingAccessibleConstructor(cls, ApacheFactoryContext.this.getClass());
- if (c != null) {
- return c.newInstance(ApacheFactoryContext.this);
- }
- c = ConstructorUtils.getMatchingAccessibleConstructor(cls, getFactory().getClass());
- if (c != null) {
- return c.newInstance(getFactory());
- }
- return cls.newInstance();
- } catch (Exception e) {
- throw new ValidationException(e);
- }
- }
- });
- }
-
- /**
- * separate class to prevent the classloader to immediately load optional
- * classes: XMLMetaBeanManager, XMLMetaBeanFactory, XMLMetaBeanBuilder that
- * might not be available in the classpath
- */
- private static class XMLMetaBeanManagerCreator {
-
- static void addFactory(List<MetaBeanFactory> builders) {
- builders.add(new XMLMetaBeanFactory());
- }
-
- /**
- * Create the {@link MetaBeanManager} to process JSR303 XML. Requires
- * bval-xstream at RT.
- *
- * @param builders
- * @return {@link MetaBeanManager}
- */
- // NOTE - We return MetaBeanManager instead of XMLMetaBeanManager to
- // keep
- // bval-xstream an optional module.
- protected static MetaBeanManager createXMLMetaBeanManager(List<MetaBeanFactory> builders) {
- return new XMLMetaBeanManager(
- new XMLMetaBeanBuilder(builders.toArray(new MetaBeanFactory[builders.size()])));
- }
- }
-
- private static <T> T doPrivileged(final PrivilegedAction<T> action) {
- if (System.getSecurityManager() != null) {
- return AccessController.doPrivileged(action);
- } else {
- return action.run();
- }
- }
-
- private Class<?> loadClass(final String className) {
- ClassLoader loader = doPrivileged(SecureActions.getContextClassLoader());
- if (loader == null)
- loader = getClass().getClassLoader();
-
- try {
- return Class.forName(className, true, loader);
- } catch (ClassNotFoundException ex) {
- throw new ValidationException("Unable to load class: " + className, ex);
- }
- }
-
- private static <T> T run(PrivilegedAction<T> action) {
- if (System.getSecurityManager() != null) {
- return AccessController.doPrivileged(action);
- } else {
- return action.run();
- }
- }
-}
diff --git a/trunk/bval-jsr303/src/main/java/org/apache/bval/jsr303/ApacheValidationProvider.java b/trunk/bval-jsr303/src/main/java/org/apache/bval/jsr303/ApacheValidationProvider.java
deleted file mode 100644
index 286016c..0000000
--- a/trunk/bval-jsr303/src/main/java/org/apache/bval/jsr303/ApacheValidationProvider.java
+++ /dev/null
@@ -1,130 +0,0 @@
-/*
- * 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.bval.jsr303;
-
-import java.security.AccessController;
-import java.security.PrivilegedAction;
-
-import javax.validation.Configuration;
-import javax.validation.ValidationException;
-import javax.validation.ValidatorFactory;
-import javax.validation.spi.BootstrapState;
-import javax.validation.spi.ConfigurationState;
-import javax.validation.spi.ValidationProvider;
-
-import org.apache.commons.lang3.ClassUtils;
-
-/**
- * Description: Implementation of {@link ValidationProvider} for jsr303
- * implementation of the apache-validation framework.
- * <p/>
- * <br/>
- * User: roman.stumm <br/>
- * Date: 29.10.2008 <br/>
- * Time: 14:45:41 <br/>
- */
-public class ApacheValidationProvider implements ValidationProvider<ApacheValidatorConfiguration> {
-
- /**
- * Learn whether a particular builder class is suitable for this
- * {@link ValidationProvider}.
- *
- * @param builderClass
- * @return boolean suitability
- */
- public boolean isSuitable(Class<? extends Configuration<?>> builderClass) {
- return ApacheValidatorConfiguration.class == builderClass;
- }
-
- /**
- * {@inheritDoc}
- */
- public ApacheValidatorConfiguration createSpecializedConfiguration(BootstrapState state) {
- return new ConfigurationImpl(state, this);
- }
-
- /**
- * {@inheritDoc}
- */
- public Configuration<?> createGenericConfiguration(BootstrapState state) {
- return new ConfigurationImpl(state, null);
- }
-
- /**
- * {@inheritDoc}
- *
- * @throws javax.validation.ValidationException
- * if the ValidatorFactory cannot be built
- */
- @SuppressWarnings("unchecked")
- public ValidatorFactory buildValidatorFactory(final ConfigurationState configuration) {
- final Class<? extends ValidatorFactory> validatorFactoryClass;
- try {
- String validatorFactoryClassname =
- configuration.getProperties().get(ApacheValidatorConfiguration.Properties.VALIDATOR_FACTORY_CLASSNAME);
-
- if (validatorFactoryClassname == null)
- validatorFactoryClass = ApacheValidatorFactory.class;
- else
- {
- validatorFactoryClass
- = (Class<? extends ValidatorFactory>) ClassUtils.getClass(validatorFactoryClassname);
- validatorFactoryClass.asSubclass(ValidatorFactory.class);
- }
- } catch (ValidationException ex) {
- throw ex;
- } catch (Exception ex) {
- throw new ValidationException("error building ValidatorFactory", ex);
- }
-
- // FIXME 2011-03-27 jw:
- // Should not use privileged action, but to avoid breaking things
- // doing it here like the former version of this class did.
- //
- // The privileged action should be applied by the ValidatorFactory
- // itself, if required.
- // No privileges should be required to access the constructor,
- // because the classloader of ApacheValidationProvider will always
- // be an ancestor of the loader of validatorFactoryClass.
- return (System.getSecurityManager() == null)
- ? instantiateValidatorFactory(validatorFactoryClass, configuration)
- : AccessController.doPrivileged(new PrivilegedAction<ValidatorFactory>() {
- public ValidatorFactory run() {
- return instantiateValidatorFactory(validatorFactoryClass, configuration);
- }
- });
- }
-
-
-
- private static ValidatorFactory instantiateValidatorFactory(
- final Class<? extends ValidatorFactory> validatorFactoryClass,
- final ConfigurationState configuration
- ) {
- try
- {
- return validatorFactoryClass.getConstructor(ConfigurationState.class).newInstance(configuration);
- }
- catch (final Exception ex)
- {
- throw new ValidationException("Cannot instantiate : " + validatorFactoryClass, ex);
- }
- }
-
-}
diff --git a/trunk/bval-jsr303/src/main/java/org/apache/bval/jsr303/ApacheValidatorConfiguration.java b/trunk/bval-jsr303/src/main/java/org/apache/bval/jsr303/ApacheValidatorConfiguration.java
deleted file mode 100644
index 8dd3ccf..0000000
--- a/trunk/bval-jsr303/src/main/java/org/apache/bval/jsr303/ApacheValidatorConfiguration.java
+++ /dev/null
@@ -1,91 +0,0 @@
-/*
- * 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.bval.jsr303;
-
-import javax.validation.Configuration;
-import javax.validation.ValidatorContext;
-import javax.validation.ValidatorFactory;
-import javax.validation.spi.ConfigurationState;
-
-/**
- * Description: Uniquely identify Apache BVal in the Bean Validation bootstrap
- * strategy. Also contains Apache BVal specific configurations<br/>
- */
-public interface ApacheValidatorConfiguration
- extends Configuration<ApacheValidatorConfiguration> {
-
- /**
- * Proprietary property keys for {@link ConfigurationImpl}
- */
- public interface Properties {
- /**
- * the location where to look for the validation.xml file.
- * default: "META-INF/validation.xml"
- */
- String VALIDATION_XML_PATH = "apache.bval.validation-xml-path";
-
- /**
- * true/false. use Introspector (java beans) metadata additionally
- * to build metadata with JSR303.<br>
- * This means that all properties exist that are java-bean properties and
- * and that some features (Hidden, Readonly) are taken from Introspector
- * to create the meta data.<br>
- * default: false
- */
- String ENABLE_INTROSPECTOR = "apache.bval.enable-introspector";
-
- /**
- * true/false. use Apache metaBeans xml format additionally to
- * build metadata with JSR303.
- * default: false
- *
- * @deprecated we could decide to drop this feature in the future.
- * we keep it as long as we support both: jsr303 and xstream-xml meta data at
- * the same time (and potentially for the same domain classes)
- */
- String ENABLE_METABEANS_XML = "apache.bval.enable-metabeans-xml";
-
- /**
- * BeanValidator.treatMapsLikeBeans.
- * default: false
- */
- String TREAT_MAPS_LIKE_BEANS = "apache.bval.treat-maps-like-beans";
-
- /**
- * Specifies the classname of the {@link ValidatorFactory} to use: this
- * class is presumed have a constructor that accepts a single
- * {@link ConfigurationState} argument.
- */
- String VALIDATOR_FACTORY_CLASSNAME = "apache.bval.validator-factory-classname";
-
- /**
- * Specifies the names, delimited by whitespace, of
- * {@link MetaBeanFactory} classes that should be added to collaborate
- * with an {@link ApacheFactoryContext}'s {@link MetaBeanFinder}. These
- * are instantiated per {@link ValidatorContext}, attempting to use
- * constructor arguments of decreasing specificity:
- * <ol>
- * <li>assignable from the creating {@link ApacheFactoryContext}</li>
- * <li>assignable from the associated {@link ApacheValidatorFactory}</li>
- * <li>default (no-args) constructor</li>
- * </ol>
- */
- String METABEAN_FACTORY_CLASSNAMES = "apache.bval.metabean-factory-classnames";
- }
-}
diff --git a/trunk/bval-jsr303/src/main/java/org/apache/bval/jsr303/ApacheValidatorFactory.java b/trunk/bval-jsr303/src/main/java/org/apache/bval/jsr303/ApacheValidatorFactory.java
deleted file mode 100644
index 891efd0..0000000
--- a/trunk/bval-jsr303/src/main/java/org/apache/bval/jsr303/ApacheValidatorFactory.java
+++ /dev/null
@@ -1,390 +0,0 @@
-/*
- * 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.bval.jsr303;
-
-import org.apache.bval.jsr303.xml.AnnotationIgnores;
-import org.apache.bval.jsr303.xml.MetaConstraint;
-import org.apache.bval.jsr303.xml.ValidationMappingParser;
-import org.apache.bval.util.AccessStrategy;
-import org.apache.commons.lang3.ClassUtils;
-
-import javax.validation.*;
-import javax.validation.bootstrap.ProviderSpecificBootstrap;
-import javax.validation.spi.ConfigurationState;
-import java.lang.annotation.Annotation;
-import java.lang.reflect.Modifier;
-import java.security.AccessController;
-import java.security.PrivilegedAction;
-import java.util.*;
-
-/**
- * Description: a factory is a complete configurated object that can create
- * validators.<br/>
- * This instance is not thread-safe.<br/>
- */
-public class ApacheValidatorFactory implements ValidatorFactory, Cloneable {
- private static volatile ApacheValidatorFactory DEFAULT_FACTORY;
- private static final ConstraintDefaults defaultConstraints =
- new ConstraintDefaults();
-
- private MessageInterpolator messageResolver;
- private TraversableResolver traversableResolver;
- private ConstraintValidatorFactory constraintValidatorFactory;
- private final Map<String, String> properties;
-
- /**
- * information from xml parsing
- */
- private final AnnotationIgnores annotationIgnores = new AnnotationIgnores();
- private final ConstraintCached constraintsCache = new ConstraintCached();
- private final Map<Class<?>, Class<?>[]> defaultSequences;
- /**
- * access strategies for properties with cascade validation @Valid support
- */
- private final Map<Class<?>, List<AccessStrategy>> validAccesses;
- private final Map<Class<?>, List<MetaConstraint<?, ? extends Annotation>>> constraintMap;
-
- /**
- * Convenience method to retrieve a default global ApacheValidatorFactory
- *
- * @return {@link ApacheValidatorFactory}
- */
- public static synchronized ApacheValidatorFactory getDefault() {
- if (DEFAULT_FACTORY == null) {
- ProviderSpecificBootstrap<ApacheValidatorConfiguration> provider =
- Validation.byProvider(ApacheValidationProvider.class);
- ApacheValidatorConfiguration configuration = provider.configure();
- DEFAULT_FACTORY =
- (ApacheValidatorFactory) configuration.buildValidatorFactory();
- }
- return DEFAULT_FACTORY;
- }
-
- /**
- * Set a particular {@link ApacheValidatorFactory} instance as the default.
- *
- * @param aDefaultFactory
- */
- public static void setDefault(ApacheValidatorFactory aDefaultFactory) {
- DEFAULT_FACTORY = aDefaultFactory;
- }
-
- /**
- * Create a new ApacheValidatorFactory instance.
- */
- public ApacheValidatorFactory(ConfigurationState configurationState) {
- properties = new HashMap<String, String>();
- defaultSequences = new HashMap<Class<?>, Class<?>[]>();
- validAccesses = new HashMap<Class<?>, List<AccessStrategy>>();
- constraintMap =
- new HashMap<Class<?>, List<MetaConstraint<?, ? extends Annotation>>>();
- configure(configurationState);
- }
-
- /**
- * Configure this {@link ApacheValidatorFactory} from a
- * {@link ConfigurationState}.
- *
- * @param configuration
- */
- protected void configure(ConfigurationState configuration) {
- getProperties().putAll(configuration.getProperties());
- setMessageInterpolator(configuration.getMessageInterpolator());
- setTraversableResolver(configuration.getTraversableResolver());
- setConstraintValidatorFactory(configuration
- .getConstraintValidatorFactory());
- ValidationMappingParser parser = new ValidationMappingParser(this);
- parser.processMappingConfig(configuration.getMappingStreams());
- }
-
- /**
- * Get the property map of this {@link ApacheValidatorFactory}.
- *
- * @return Map<String, String>
- */
- public Map<String, String> getProperties() {
- return properties;
- }
-
- /**
- * Get the default {@link MessageInterpolator} used by this
- * {@link ApacheValidatorFactory}.
- *
- * @return {@link MessageInterpolator}
- */
- protected MessageInterpolator getDefaultMessageInterpolator() {
- return messageResolver;
- }
-
- /**
- * Shortcut method to create a new Validator instance with factory's
- * settings
- *
- * @return the new validator instance
- */
- public Validator getValidator() {
- return usingContext().getValidator();
- }
-
- /**
- * {@inheritDoc}
- *
- * @return the validator factory's context
- */
- public ApacheFactoryContext usingContext() {
- return new ApacheFactoryContext(this);
- }
-
- /**
- * {@inheritDoc}
- */
- @Override
- public synchronized ApacheValidatorFactory clone() {
- try {
- return (ApacheValidatorFactory) super.clone();
- } catch (CloneNotSupportedException e) {
- throw new InternalError(); // VM bug.
- }
- }
-
- /**
- * Set the {@link MessageInterpolator} used.
- *
- * @param messageResolver
- */
- public final void setMessageInterpolator(MessageInterpolator messageResolver) {
- this.messageResolver = messageResolver;
- }
-
- /**
- * {@inheritDoc}
- */
- public MessageInterpolator getMessageInterpolator() {
- return ((messageResolver != null) ? messageResolver
- : getDefaultMessageInterpolator());
- }
-
- /**
- * Set the {@link TraversableResolver} used.
- *
- * @param traversableResolver
- */
- public final void setTraversableResolver(
- TraversableResolver traversableResolver) {
- this.traversableResolver = traversableResolver;
- }
-
- /**
- * {@inheritDoc}
- */
- public TraversableResolver getTraversableResolver() {
- return traversableResolver;
- }
-
- /**
- * Set the {@link ConstraintValidatorFactory} used.
- *
- * @param constraintValidatorFactory
- */
- public final void setConstraintValidatorFactory(
- ConstraintValidatorFactory constraintValidatorFactory) {
- this.constraintValidatorFactory = constraintValidatorFactory;
- }
-
- /**
- * {@inheritDoc}
- */
- public ConstraintValidatorFactory getConstraintValidatorFactory() {
- return constraintValidatorFactory;
- }
-
- /**
- * Return an object of the specified type to allow access to the
- * provider-specific API. If the Bean Validation provider implementation
- * does not support the specified class, the ValidationException is thrown.
- *
- * @param type the class of the object to be returned.
- * @return an instance of the specified class
- * @throws ValidationException if the provider does not support the call.
- */
- public <T> T unwrap(final Class<T> type) {
- // FIXME 2011-03-27 jw:
- // This code is unsecure.
- // It should allow only a fixed set of classes.
- // Can't fix this because don't know which classes this method should support.
-
- if (type.isInstance(this)) {
- @SuppressWarnings("unchecked")
- T result = (T) this;
- return result;
- } else if (!(type.isInterface() || Modifier.isAbstract(type
- .getModifiers()))) {
- return newInstance(type);
- } else {
- try {
- Class<?> cls = ClassUtils.getClass(type.getName() + "Impl");
- if (type.isAssignableFrom(cls)) {
- @SuppressWarnings("unchecked")
- T result = (T) newInstance(cls);
- return result;
- }
- } catch (ClassNotFoundException e) {
- // do nothing
- }
- throw new ValidationException("Type " + type + " not supported");
- }
- }
-
- private <T> T newInstance(final Class<T> cls) {
- return AccessController.doPrivileged(new PrivilegedAction<T>() {
- public T run() {
- try {
- return cls.newInstance();
- } catch (final Exception ex) {
- throw new ValidationException("Cannot instantiate : " + cls, ex);
- }
- }
- });
- }
-
- /**
- * Get the detected {@link ConstraintDefaults}.
- *
- * @return ConstraintDefaults
- */
- public ConstraintDefaults getDefaultConstraints() {
- return defaultConstraints;
- }
-
- /**
- * Get the detected {@link AnnotationIgnores}.
- *
- * @return AnnotationIgnores
- */
- public AnnotationIgnores getAnnotationIgnores() {
- return annotationIgnores;
- }
-
- /**
- * Get the constraint cache used.
- *
- * @return {@link ConstraintCached}
- */
- public ConstraintCached getConstraintsCache() {
- return constraintsCache;
- }
-
- /**
- * Add a meta-constraint to this {@link ApacheValidatorFactory}'s runtime
- * customizations.
- *
- * @param beanClass
- * @param metaConstraint
- */
- public void addMetaConstraint(Class<?> beanClass,
- MetaConstraint<?, ?> metaConstraint) {
- List<MetaConstraint<?, ? extends Annotation>> slot =
- constraintMap.get(beanClass);
- if (slot != null) {
- slot.add(metaConstraint);
- } else {
- List<MetaConstraint<?, ? extends Annotation>> constraintList =
- new ArrayList<MetaConstraint<?, ? extends Annotation>>();
- constraintList.add(metaConstraint);
- constraintMap.put(beanClass, constraintList);
- }
- }
-
- /**
- * Mark a property of <code>beanClass</code> for nested validation.
- *
- * @param beanClass
- * @param accessStrategy
- * defining the property to validate
- */
- public void addValid(Class<?> beanClass, AccessStrategy accessStrategy) {
- List<AccessStrategy> slot = validAccesses.get(beanClass);
- if (slot != null) {
- slot.add(accessStrategy);
- } else {
- List<AccessStrategy> tmpList = new ArrayList<AccessStrategy>();
- tmpList.add(accessStrategy);
- validAccesses.put(beanClass, tmpList);
- }
- }
-
- /**
- * Set the default group sequence for a particular bean class.
- *
- * @param beanClass
- * @param groupSequence
- */
- public void addDefaultSequence(Class<?> beanClass, Class<?>[] groupSequence) {
- defaultSequences.put(beanClass, groupSequence);
- }
-
- /**
- * Retrieve the runtime constraint configuration for a given class.
- *
- * @param <T>
- * @param beanClass
- * @return List of {@link MetaConstraint}s applicable to
- * <code>beanClass</code>
- */
- @SuppressWarnings({ "unchecked", "rawtypes" })
- public <T> List<MetaConstraint<T, ? extends Annotation>> getMetaConstraints(
- Class<T> beanClass) {
- List<MetaConstraint<?, ? extends Annotation>> slot =
- constraintMap.get(beanClass);
- if (slot != null) {
- // noinspection RedundantCast
- return (List) slot;
- } else {
- return Collections.EMPTY_LIST;
- }
- }
-
- /**
- * Get the {@link AccessStrategy} {@link List} indicating nested bean
- * validations that must be triggered in the course of validating a
- * <code>beanClass</code> graph.
- *
- * @param beanClass
- * @return {@link List} of {@link AccessStrategy}
- */
- public List<AccessStrategy> getValidAccesses(Class<?> beanClass) {
- List<AccessStrategy> slot = validAccesses.get(beanClass);
- if (slot != null) {
- return slot;
- } else {
- return Collections.<AccessStrategy>emptyList();
- }
- }
-
- /**
- * Get the default group sequence configured for <code>beanClass</code>.
- *
- * @param beanClass
- * @return group Class array
- */
- public Class<?>[] getDefaultSequence(Class<?> beanClass) {
- return defaultSequences.get(beanClass);
- }
-
-}
diff --git a/trunk/bval-jsr303/src/main/java/org/apache/bval/jsr303/AppendValidation.java b/trunk/bval-jsr303/src/main/java/org/apache/bval/jsr303/AppendValidation.java
deleted file mode 100644
index 8d7dba4..0000000
--- a/trunk/bval-jsr303/src/main/java/org/apache/bval/jsr303/AppendValidation.java
+++ /dev/null
@@ -1,32 +0,0 @@
-/*
- * 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.bval.jsr303;
-
-import java.lang.annotation.Annotation;
-
-/**
- * Description: unified interface to accumulate {@link ConstraintValidation}s
- * to varied targets.<br/>
- */
-public interface AppendValidation {
- /**
- * Append a {@link ConstraintValidation}.
- * @param <T>
- * @param validation
- */
- <T extends Annotation> void append(ConstraintValidation<T> validation);
-}
diff --git a/trunk/bval-jsr303/src/main/java/org/apache/bval/jsr303/AppendValidationToBuilder.java b/trunk/bval-jsr303/src/main/java/org/apache/bval/jsr303/AppendValidationToBuilder.java
deleted file mode 100644
index d112251..0000000
--- a/trunk/bval-jsr303/src/main/java/org/apache/bval/jsr303/AppendValidationToBuilder.java
+++ /dev/null
@@ -1,89 +0,0 @@
-/*
- * 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.bval.jsr303;
-
-import org.apache.bval.jsr303.xml.AnnotationProxyBuilder;
-
-import javax.validation.Payload;
-import java.lang.annotation.Annotation;
-import java.util.Set;
-
-/**
- * Description: Adapt {@link AnnotationConstraintBuilder} to the {@link AppendValidation} interface.<br/>
- */
-public class AppendValidationToBuilder extends BaseAppendValidation {
- private final AnnotationConstraintBuilder<?> builder;
-
- /**
- * Create a new AppendValidationToBuilder instance.
- * @param builder
- */
- public AppendValidationToBuilder(AnnotationConstraintBuilder<?> builder) {
- this.builder = builder;
- }
-
- /**
- * {@inheritDoc}
- */
- public <T extends Annotation> void preProcessValidation(ConstraintValidation<T> validation) {
- // JSR-303 2.3:
- // Groups from the main constraint annotation are inherited by the composing annotations.
- // Any groups definition on a composing annotation is ignored.
- Set<Class<?>> inheritedGroups = builder.getConstraintValidation().getGroups();
- validation.setGroups(inheritedGroups);
-
- // JSR-303 2.3 p:
- // Payloads are also inherited
- Set<Class<? extends Payload>> inheritedPayload = builder.getConstraintValidation().getPayload();
- validation.setPayload(inheritedPayload);
-
- // Inherited groups and payload values must also be replicated in the
- // annotation, so it has to be substituted with a new proxy.
- T originalAnnot = validation.getAnnotation();
- AnnotationProxyBuilder<T> apb = new AnnotationProxyBuilder<T>(originalAnnot);
- apb.putValue(ConstraintAnnotationAttributes.GROUPS.getAttributeName(),
- inheritedGroups.toArray(new Class[inheritedGroups.size()]));
- apb.putValue(ConstraintAnnotationAttributes.PAYLOAD.getAttributeName(),
- inheritedPayload.toArray(new Class[inheritedPayload.size()]));
- T newAnnot = apb.createAnnotation();
- validation.setAnnotation(newAnnot);
- }
-
- /**
- * {@inheritDoc}
- */
- public <T extends Annotation> void performAppend(ConstraintValidation<T> validation) {
- builder.addComposed(validation);
- }
-
- /**
- * Get inherited groups.
- * @return The set of groups from the parent constraint.
- */
- public Set<Class<?>> getInheritedGroups() {
- return builder.getConstraintValidation().getGroups();
- }
-
- /**
- * Get inherited payload.
- * @return The set of payloads from the parent constraint.
- */
- public Set<Class<? extends Payload>> getInheritedPayload() {
- return builder.getConstraintValidation().getPayload();
- }
-
-}
diff --git a/trunk/bval-jsr303/src/main/java/org/apache/bval/jsr303/AppendValidationToMeta.java b/trunk/bval-jsr303/src/main/java/org/apache/bval/jsr303/AppendValidationToMeta.java
deleted file mode 100644
index e871289..0000000
--- a/trunk/bval-jsr303/src/main/java/org/apache/bval/jsr303/AppendValidationToMeta.java
+++ /dev/null
@@ -1,43 +0,0 @@
-/*
- * 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.bval.jsr303;
-
-import org.apache.bval.model.FeaturesCapable;
-
-import java.lang.annotation.Annotation;
-
-/**
- * Description: adapt any {@link FeaturesCapable} from the core meta-model to the {@link AppendValidation} interface.<br/>
- */
-public class AppendValidationToMeta extends BaseAppendValidation {
- private final FeaturesCapable feature;
-
- /**
- * Create a new AppendValidationToMeta instance.
- * @param meta
- */
- public AppendValidationToMeta(FeaturesCapable meta) {
- this.feature = meta;
- }
-
- /**
- * {@inheritDoc}
- */
- public <T extends Annotation> void performAppend(ConstraintValidation<T> validation) {
- feature.addValidation(validation);
- }
-}
diff --git a/trunk/bval-jsr303/src/main/java/org/apache/bval/jsr303/BaseAppendValidation.java b/trunk/bval-jsr303/src/main/java/org/apache/bval/jsr303/BaseAppendValidation.java
deleted file mode 100644
index cb214a3..0000000
--- a/trunk/bval-jsr303/src/main/java/org/apache/bval/jsr303/BaseAppendValidation.java
+++ /dev/null
@@ -1,80 +0,0 @@
-/*
- * 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.bval.jsr303;
-
-import java.lang.annotation.Annotation;
-
-/**
- * Abstract base validation appender that initializes the
- * {@link ConstraintValidation#getValidator()} on post-processing.
- *
- * @author Carlos Vara
- */
-public abstract class BaseAppendValidation implements AppendValidation {
-
- /**
- * {@inheritDoc}
- *
- * Append operation divided in 3 stages: pre & post processing and the
- * "real" append process.
- */
- public final <T extends Annotation> void append(ConstraintValidation<T> validation) {
- preProcessValidation(validation);
- performAppend(validation);
- postProcessValidation(validation);
- }
-
- /**
- * Performs the actual "appending" operation to the underlying data
- * structure that holds the validations. Implementations shouldn't try to do
- * more than that in this step.
- *
- * @param <T>
- * The type of the validation.
- * @param validation
- * The validation to be appended.
- */
- public abstract <T extends Annotation> void performAppend(ConstraintValidation<T> validation);
-
- /**
- * Pre-process the validation before appending it.
- *
- * @param <T>
- * The type of the validation.
- * @param validation
- * The validation to be appended.
- */
- public <T extends Annotation> void preProcessValidation(ConstraintValidation<T> validation) {
- // No generic pre-processing
- }
-
- /**
- * Post-process the validation once it has been appended.
- *
- * @param <T>
- * The type of the validation.
- * @param validation
- * The validation to be appended.
- */
- public <T extends Annotation> void postProcessValidation(ConstraintValidation<T> validation) {
- // Initialize the validator
- validation.initialize();
- }
-
-}
diff --git a/trunk/bval-jsr303/src/main/java/org/apache/bval/jsr303/BeanDescriptorImpl.java b/trunk/bval-jsr303/src/main/java/org/apache/bval/jsr303/BeanDescriptorImpl.java
deleted file mode 100644
index 1bf500b..0000000
--- a/trunk/bval-jsr303/src/main/java/org/apache/bval/jsr303/BeanDescriptorImpl.java
+++ /dev/null
@@ -1,136 +0,0 @@
-/*
- * 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.bval.jsr303;
-
-import org.apache.bval.model.Features;
-import org.apache.bval.model.MetaBean;
-import org.apache.bval.model.MetaProperty;
-
-import javax.validation.metadata.BeanDescriptor;
-import javax.validation.metadata.PropertyDescriptor;
-import java.util.Collections;
-import java.util.HashSet;
-import java.util.Set;
-
-/**
- * Description: Implements {@link BeanDescriptor}.<br/>
- */
-public class BeanDescriptorImpl extends ElementDescriptorImpl implements BeanDescriptor {
- /**
- * The {@link ApacheFactoryContext} (not) used by this
- * {@link BeanDescriptorImpl}
- */
- protected final ApacheFactoryContext factoryContext;
-
- /**
- * Create a new BeanDescriptorImpl instance.
- *
- * @param factoryContext
- * @param metaBean
- */
- protected BeanDescriptorImpl(ApacheFactoryContext factoryContext, MetaBean metaBean) {
- super(metaBean, metaBean.getBeanClass(), metaBean.getValidations());
- this.factoryContext = factoryContext;
- }
-
- /**
- * Returns true if the bean involves validation:
- * <ul>
- * <li>a constraint is hosted on the bean itself</li>
- * <li>a constraint is hosted on one of the bean properties, OR</li>
- * <li>a bean property is marked for cascade (<code>@Valid</code>)</li>
- * </ul>
- *
- * @return true if the bean involves validation
- */
- public boolean isBeanConstrained() {
- if (hasAnyConstraints())
- return true;
- for (MetaProperty mprop : metaBean.getProperties()) {
- if (mprop.getMetaBean() != null || mprop.getFeature(Features.Property.REF_CASCADE) != null)
- return true;
- }
- return false;
- }
-
- private boolean hasAnyConstraints() {
- if (hasConstraints())
- return true;
- for (MetaProperty mprop : metaBean.getProperties()) {
- if (getConstraintDescriptors(mprop.getValidations()).size() > 0)
- return true;
- }
- return false;
- }
-
- /**
- * Return the property level constraints for a given propertyName or {@code null} if
- * either the property does not exist or has no constraint. The returned
- * object (and associated objects including ConstraintDescriptors) are
- * immutable.
- *
- * @param propertyName
- * property evaluated
- */
- public PropertyDescriptor getConstraintsForProperty(String propertyName) {
- if (propertyName == null || propertyName.trim().length() == 0) {
- throw new IllegalArgumentException("propertyName cannot be null or empty");
- }
- MetaProperty prop = metaBean.getProperty(propertyName);
- if (prop == null)
- return null;
- // If no constraints and not cascaded, return null
- if (prop.getValidations().length == 0 && prop.getFeature(Features.Property.REF_CASCADE) == null) {
- return null;
- }
- return getPropertyDescriptor(prop);
- }
-
- private PropertyDescriptor getPropertyDescriptor(MetaProperty prop) {
- PropertyDescriptorImpl edesc = prop.getFeature(Jsr303Features.Property.PropertyDescriptor);
- if (edesc == null) {
- edesc = new PropertyDescriptorImpl(prop);
- prop.putFeature(Jsr303Features.Property.PropertyDescriptor, edesc);
- }
- return edesc;
- }
-
- /**
- * {@inheritDoc}
- *
- * @return the property descriptors having at least a constraint defined
- */
- public Set<PropertyDescriptor> getConstrainedProperties() {
- Set<PropertyDescriptor> validatedProperties = new HashSet<PropertyDescriptor>();
- for (MetaProperty prop : metaBean.getProperties()) {
- if (prop.getValidations().length > 0
- || (prop.getMetaBean() != null || prop.getFeature(Features.Property.REF_CASCADE) != null)) {
- validatedProperties.add(getPropertyDescriptor(prop));
- }
- }
- return Collections.unmodifiableSet(validatedProperties);
- }
-
- /**
- * {@inheritDoc}
- */
- public String toString() {
- return "BeanDescriptorImpl{" + "returnType=" + elementClass + '}';
- }
-}
diff --git a/trunk/bval-jsr303/src/main/java/org/apache/bval/jsr303/CascadingPropertyValidator.java b/trunk/bval-jsr303/src/main/java/org/apache/bval/jsr303/CascadingPropertyValidator.java
deleted file mode 100644
index a830960..0000000
--- a/trunk/bval-jsr303/src/main/java/org/apache/bval/jsr303/CascadingPropertyValidator.java
+++ /dev/null
@@ -1,69 +0,0 @@
-/**
- * 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.bval.jsr303;
-
-import java.util.Set;
-
-import javax.validation.ConstraintViolation;
-import javax.validation.Valid;
-import javax.validation.Validator;
-
-/**
- * Per the bean validation spec, {@link Valid} is not honored by the
- * {@link #validateProperty(Object, String, Class...)} and
- * {@link #validateValue(Class, String, Object, Class...)} methods. The
- * {@link CascadingPropertyValidator} interface thus defines a {@link Validator} that
- * provides corresponding methods that <em>may</em> honor {@link Valid}.
- * It should be noted that {@link Validator#validateProperty(Object, String, Class...)}
- * and {@link Validator#validateValue(Class, String, Object, Class...)} are assumed
- * semantically equivalent to calling the {@link CascadingPropertyValidator}-defined
- * methods with <code>cascade == false</code>.
- *
- * @version $Rev: 993539 $ $Date: 2010-09-07 16:27:50 -0500 (Tue, 07 Sep 2010) $
- */
-public interface CascadingPropertyValidator extends Validator {
-
- /**
- * Validates all constraints placed on <code>object</code>'s
- * <code>propertyName</code> property, with optional validation cascading.
- *
- * @param <T>
- * @param object
- * @param propertyName
- * @param cascade
- * @param groups
- * @return the resulting {@link Set} of {@link ConstraintViolation}s.
- */
- <T extends Object> java.util.Set<javax.validation.ConstraintViolation<T>> validateProperty(T object,
- String propertyName, boolean cascade, java.lang.Class<?>... groups);
-
- /**
- * Validates all constraints placed on <code>object</code>'s
- * <code>propertyName</code> property, with optional validation cascading,
- * given a hypothetical property <code>value</code>.
- *
- * @param <T>
- * @param beanType
- * @param propertyName
- * @param value
- * @param cascade
- * @param groups
- * @return the resulting {@link Set} of {@link ConstraintViolation}s.
- */
- <T extends Object> java.util.Set<javax.validation.ConstraintViolation<T>> validateValue(
- java.lang.Class<T> beanType, String propertyName, Object value, boolean cascade, java.lang.Class<?>... groups);
-}
diff --git a/trunk/bval-jsr303/src/main/java/org/apache/bval/jsr303/ClassValidator.java b/trunk/bval-jsr303/src/main/java/org/apache/bval/jsr303/ClassValidator.java
deleted file mode 100644
index 571c956..0000000
--- a/trunk/bval-jsr303/src/main/java/org/apache/bval/jsr303/ClassValidator.java
+++ /dev/null
@@ -1,817 +0,0 @@
-/*
- * 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.bval.jsr303;
-
-import java.lang.reflect.Constructor;
-import java.lang.reflect.Modifier;
-import java.security.AccessController;
-import java.security.PrivilegedAction;
-import java.util.ArrayList;
-import java.util.Collections;
-import java.util.List;
-import java.util.Set;
-
-import javax.validation.ConstraintViolation;
-import javax.validation.ValidationException;
-import javax.validation.groups.Default;
-import javax.validation.metadata.BeanDescriptor;
-
-import org.apache.bval.DynamicMetaBean;
-import org.apache.bval.MetaBeanFinder;
-import org.apache.bval.jsr303.groups.Group;
-import org.apache.bval.jsr303.groups.Groups;
-import org.apache.bval.jsr303.groups.GroupsComputer;
-import org.apache.bval.jsr303.util.ClassHelper;
-import org.apache.bval.jsr303.util.NodeImpl;
-import org.apache.bval.jsr303.util.PathImpl;
-import org.apache.bval.jsr303.util.PathNavigation;
-import org.apache.bval.jsr303.util.ValidationContextTraversal;
-import org.apache.bval.model.Features;
-import org.apache.bval.model.FeaturesCapable;
-import org.apache.bval.model.MetaBean;
-import org.apache.bval.model.MetaProperty;
-import org.apache.bval.util.AccessStrategy;
-import org.apache.bval.util.ValidationHelper;
-import org.apache.commons.lang3.ArrayUtils;
-import org.apache.commons.lang3.ClassUtils;
-import org.apache.commons.lang3.ObjectUtils;
-import org.apache.commons.lang3.reflect.TypeUtils;
-
-// TODO: centralize treatMapsLikeBeans
-
-/**
- * Objects of this class are able to validate bean instances (and the associated object graphs).
- * <p/>
- * Implementation is thread-safe.
- * <p/>
- * API class
- *
- * @version $Rev$ $Date$
- *
- * @author Roman Stumm
- * @author Carlos Vara
- */
-public class ClassValidator implements CascadingPropertyValidator {
- private static final Object VALIDATE_PROPERTY = new Object() {
- public String toString() {
- return "VALIDATE_PROPERTY";
- }
- };
-
- /**
- * {@link ApacheFactoryContext} used
- */
- protected final ApacheFactoryContext factoryContext;
-
- /**
- * {@link GroupsComputer} used
- */
- protected final GroupsComputer groupsComputer = new GroupsComputer();
-
- /**
- * Create a new ClassValidator instance.
- *
- * @param factoryContext
- */
- public ClassValidator(ApacheFactoryContext factoryContext) {
- this.factoryContext = factoryContext;
- }
-
- /**
- * Create a new ClassValidator instance.
- *
- * @param factory
- * @deprecated provided for backward compatibility
- */
- public ClassValidator(ApacheValidatorFactory factory) {
- this(factory.usingContext());
- }
-
- /**
- * Get the metabean finder associated with this validator.
- *
- * @return a MetaBeanFinder
- * @see org.apache.bval.MetaBeanManagerFactory#getFinder()
- */
- protected MetaBeanFinder getMetaBeanFinder() {
- return factoryContext.getMetaBeanFinder();
- }
-
- // Validator implementation
- // --------------------------------------------------
-
- /**
- * {@inheritDoc} Validates all constraints on <code>object</code>.
- *
- * @param object object to validate
- * @param groups group or list of groups targeted for validation (default to
- * {@link javax.validation.groups.Default})
- * @return constraint violations or an empty Set if none
- * @throws IllegalArgumentException if object is null or if null is passed to the varargs groups
- * @throws ValidationException if a non recoverable error happens during the validation
- * process
- */
- // @Override - not allowed in 1.5 for Interface methods
- @SuppressWarnings("unchecked")
- public <T> Set<ConstraintViolation<T>> validate(T object, Class<?>... groups) {
- if (object == null)
- throw new IllegalArgumentException("cannot validate null");
- checkGroups(groups);
-
- try {
-
- Class<T> objectClass = (Class<T>) object.getClass();
- MetaBean objectMetaBean = getMetaBeanFinder().findForClass(objectClass);
-
- final GroupValidationContext<T> context = createContext(objectMetaBean, object, objectClass, groups);
- final ConstraintValidationListener<T> result = context.getListener();
- final Groups sequence = context.getGroups();
-
- // 1. process groups
- for (Group current : sequence.getGroups()) {
- context.setCurrentGroup(current);
- validateBeanNet(context);
- }
-
- // 2. process sequences
- for (List<Group> eachSeq : sequence.getSequences()) {
- for (Group current : eachSeq) {
- context.setCurrentGroup(current);
- validateBeanNet(context);
- // if one of the group process in the sequence leads to one
- // or more validation failure,
- // the groups following in the sequence must not be
- // processed
- if (!result.isEmpty())
- break;
- }
- if (!result.isEmpty())
- break;
- }
- return result.getConstraintViolations();
- } catch (RuntimeException ex) {
- throw unrecoverableValidationError(ex, object);
- }
- }
-
- /**
- * {@inheritDoc} Validates all constraints placed on the property of <code>object</code> named
- * <code>propertyName</code>.
- *
- * @param object object to validate
- * @param propertyName property to validate (ie field and getter constraints). Nested
- * properties may be referenced (e.g. prop[2].subpropA.subpropB)
- * @param groups group or list of groups targeted for validation (default to
- * {@link javax.validation.groups.Default})
- * @return constraint violations or an empty Set if none
- * @throws IllegalArgumentException if <code>object</code> is null, if <code>propertyName</code>
- * null, empty or not a valid object property or if null is
- * passed to the varargs groups
- * @throws ValidationException if a non recoverable error happens during the validation
- * process
- */
- // @Override - not allowed in 1.5 for Interface methods
- public <T> Set<ConstraintViolation<T>> validateProperty(T object, String propertyName, Class<?>... groups) {
- return validateProperty(object, propertyName, false, groups);
- }
-
- /**
- * {@inheritDoc}
- */
- public <T> Set<ConstraintViolation<T>> validateProperty(T object, String propertyName, boolean cascade,
- Class<?>... groups) {
-
- if (object == null)
- throw new IllegalArgumentException("cannot validate null");
-
- @SuppressWarnings("unchecked")
- Set<ConstraintViolation<T>> result =
- validateValueImpl((Class<T>) object.getClass(), object, propertyName, VALIDATE_PROPERTY, cascade, groups);
- return result;
- }
-
- /**
- * {@inheritDoc} Validates all constraints placed on the property named <code>propertyName</code> of the class
- * <code>beanType</code> would the property value be <code>value</code>
- * <p/>
- * <code>ConstraintViolation</code> objects return null for {@link ConstraintViolation#getRootBean()} and
- * {@link ConstraintViolation#getLeafBean()}
- *
- * @param beanType the bean type
- * @param propertyName property to validate
- * @param value property value to validate
- * @param groups group or list of groups targeted for validation (default to
- * {@link javax.validation.groups.Default})
- * @return constraint violations or an empty Set if none
- * @throws IllegalArgumentException if <code>beanType</code> is null, if
- * <code>propertyName</code> null, empty or not a valid object
- * property or if null is passed to the varargs groups
- * @throws ValidationException if a non recoverable error happens during the validation
- * process
- */
- // @Override - not allowed in 1.5 for Interface methods
- public <T> Set<ConstraintViolation<T>> validateValue(Class<T> beanType, String propertyName, Object value,
- Class<?>... groups) {
- return validateValue(beanType, propertyName, value, false, groups);
- }
-
- /**
- * {@inheritDoc}
- */
- public <T> Set<ConstraintViolation<T>> validateValue(Class<T> beanType, String propertyName, Object value,
- boolean cascade, Class<?>... groups) {
- return validateValueImpl(checkBeanType(beanType), null, propertyName, value, cascade, groups);
- }
-
- /**
- * {@inheritDoc} Return the descriptor object describing bean constraints. The returned object (and associated
- * objects including <code>ConstraintDescriptor<code>s) are immutable.
- *
- * @param clazz class or interface type evaluated
- * @return the bean descriptor for the specified class.
- * @throws IllegalArgumentException if clazz is null
- * @throws ValidationException if a non recoverable error happens during the metadata
- * discovery or if some constraints are invalid.
- */
- // @Override - not allowed in 1.5 for Interface methods
- public BeanDescriptor getConstraintsForClass(Class<?> clazz) {
- if (clazz == null) {
- throw new IllegalArgumentException("Class cannot be null");
- }
- try {
- MetaBean metaBean = getMetaBeanFinder().findForClass(clazz);
- BeanDescriptorImpl edesc = metaBean.getFeature(Jsr303Features.Bean.BEAN_DESCRIPTOR);
- if (edesc == null) {
- edesc = createBeanDescriptor(metaBean);
- metaBean.putFeature(Jsr303Features.Bean.BEAN_DESCRIPTOR, edesc);
- }
- return edesc;
- } catch (RuntimeException ex) {
- throw new ValidationException("error retrieving constraints for " + clazz, ex);
- }
- }
-
- /**
- * {@inheritDoc} Return an instance of the specified type allowing access to provider-specific APIs. If the Bean
- * Validation provider implementation does not support the specified class, <code>ValidationException</code> is
- * thrown.
- *
- * @param type the class of the object to be returned.
- * @return an instance of the specified class
- * @throws ValidationException if the provider does not support the call.
- */
- // @Override - not allowed in 1.5 for Interface methods
- public <T> T unwrap(Class<T> type) {
- // FIXME 2011-03-27 jw:
- // This code is unsecure.
- // It should allow only a fixed set of classes.
- // Can't fix this because don't know which classes this method should support.
-
- if (type.isAssignableFrom(getClass())) {
- @SuppressWarnings("unchecked")
- final T result = (T) this;
- return result;
- } else if (!(type.isInterface() || Modifier.isAbstract(type.getModifiers()))) {
- return newInstance(type);
- } else {
- try {
- Class<?> cls = ClassUtils.getClass(type.getName() + "Impl");
- if (type.isAssignableFrom(cls)) {
- @SuppressWarnings("unchecked")
- final Class<? extends T> implClass = (Class<? extends T>) cls;
- return newInstance(implClass);
- }
- } catch (ClassNotFoundException e) {
- }
- throw new ValidationException("Type " + type + " not supported");
- }
- }
-
- private <T> T newInstance(final Class<T> cls) {
- return AccessController.doPrivileged(new PrivilegedAction<T>() {
- public T run() {
- try {
- Constructor<T> cons = cls.getConstructor(ApacheFactoryContext.class);
- if (!cons.isAccessible()) {
- cons.setAccessible(true);
- }
- return cons.newInstance(factoryContext);
- } catch (final Exception ex) {
- throw new ValidationException("Cannot instantiate : " + cls, ex);
- }
- }
- });
- }
-
- // Helpers
- // -------------------------------------------------------------------
-
- /**
- * Validates a bean and all its cascaded related beans for the currently defined group.
- * <p/>
- * Special code is present to manage the {@link Default} group.
- *
- * @param validationContext The current context of this validation call. Must have its
- * {@link GroupValidationContext#getCurrentGroup()} field set.
- */
- protected void validateBeanNet(GroupValidationContext<?> context) {
-
- // If reached a cascaded bean which is null
- if (context.getBean() == null) {
- return;
- }
-
- // If reached a cascaded bean which has already been validated for the
- // current group
- if (!context.collectValidated()) {
- return;
- }
-
- // ### First, validate the bean
-
- // Default is a special case
- if (context.getCurrentGroup().isDefault()) {
-
- List<Group> defaultGroups = expandDefaultGroup(context);
- final ConstraintValidationListener<?> result = (ConstraintValidationListener<?>) context.getListener();
-
- // If the rootBean defines a GroupSequence
- if (defaultGroups != null && defaultGroups.size() > 1) {
-
- int numViolations = result.violationsSize();
-
- // Validate the bean for each group in the sequence
- Group currentGroup = context.getCurrentGroup();
- for (Group each : defaultGroups) {
- context.setCurrentGroup(each);
- ValidationHelper.validateBean(context);
- // Spec 3.4.3 - Stop validation if errors already found
- if (result.violationsSize() > numViolations) {
- break;
- }
- }
- context.setCurrentGroup(currentGroup);
- } else {
-
- // For each class in the hierarchy of classes of rootBean,
- // validate the constraints defined in that class according
- // to the GroupSequence defined in the same class
-
- // Obtain the full class hierarchy
- List<Class<?>> classHierarchy = new ArrayList<Class<?>>();
- ClassHelper.fillFullClassHierarchyAsList(classHierarchy, context.getMetaBean().getBeanClass());
- Class<?> initialOwner = context.getCurrentOwner();
-
- // For each owner in the hierarchy
- for (Class<?> owner : classHierarchy) {
- context.setCurrentOwner(owner);
-
- int numViolations = result.violationsSize();
-
- // Obtain the group sequence of the owner, and use it for
- // the constraints that belong to it
- List<Group> ownerDefaultGroups =
- context.getMetaBean().getFeature("{GroupSequence:" + owner.getCanonicalName() + "}");
- for (Group each : ownerDefaultGroups) {
- context.setCurrentGroup(each);
- ValidationHelper.validateBean(context);
- // Spec 3.4.3 - Stop validation if errors already found
- if (result.violationsSize() > numViolations) {
- break;
- }
- }
-
- }
- context.setCurrentOwner(initialOwner);
- context.setCurrentGroup(Group.DEFAULT);
-
- }
-
- }
- // if not the default group, proceed as normal
- else {
- ValidationHelper.validateBean(context);
- }
-
- // ### Then, the cascaded beans (@Valid)
- for (MetaProperty prop : context.getMetaBean().getProperties()) {
- validateCascadedBean(context, prop);
- }
-
- }
-
- /**
- * Checks if the the meta property <code>prop</code> defines a cascaded bean, and in case it does, validates it.
- *
- * @param context The current validation context.
- * @param prop The property to cascade from (in case it is possible).
- */
- private void validateCascadedBean(GroupValidationContext<?> context, MetaProperty prop) {
- AccessStrategy[] access = prop.getFeature(Features.Property.REF_CASCADE);
- if (access != null) { // different accesses to relation
- // save old values from context
- final Object bean = context.getBean();
- final MetaBean mbean = context.getMetaBean();
- // TODO implement Validation.groups support on related bean
-// Class[] groups = prop.getFeature(Jsr303Features.Property.REF_GROUPS);
- for (AccessStrategy each : access) {
- if (isCascadable(context, prop, each)) {
- // modify context state for relationship-target bean
- context.moveDown(prop, each);
- // Now, if the related bean is an instance of Map/Array/etc,
- ValidationHelper
- .validateContext(context, new Jsr303ValidationCallback(context), treatMapsLikeBeans);
- // restore old values in context
- context.moveUp(bean, mbean);
- }
- }
- }
- }
-
- /**
- * Before accessing a related bean (marked with {@link javax.validation.Valid}), the validator has to check if it is
- * reachable and cascadable.
- *
- * @param context The current validation context.
- * @param prop The property of the related bean.
- * @param access The access strategy used to get the related bean value.
- * @return <code>true</code> if the validator can access the related bean, <code>false</code> otherwise.
- */
- private boolean isCascadable(GroupValidationContext<?> context, MetaProperty prop, AccessStrategy access) {
-
- PathImpl beanPath = context.getPropertyPath();
- NodeImpl node = new NodeImpl(prop.getName());
- if (beanPath == null) {
- beanPath = PathImpl.create(null);
- }
- try {
- if (!context.getTraversableResolver().isReachable(context.getBean(), node,
- context.getRootMetaBean().getBeanClass(), beanPath, access.getElementType()))
- return false;
- } catch (RuntimeException e) {
- throw new ValidationException("Error in TraversableResolver.isReachable() for " + context.getBean(), e);
- }
-
- try {
- if (!context.getTraversableResolver().isCascadable(context.getBean(), node,
- context.getRootMetaBean().getBeanClass(), beanPath, access.getElementType()))
- return false;
- } catch (RuntimeException e) {
- throw new ValidationException("Error TraversableResolver.isCascadable() for " + context.getBean(), e);
- }
-
- return true;
- }
-
- /**
- * in case of a default group return the list of groups for a redefined default GroupSequence
- *
- * @return null when no in default group or default group sequence not redefined
- */
- private List<Group> expandDefaultGroup(GroupValidationContext<?> context) {
- if (context.getCurrentGroup().isDefault()) {
- // mention if metaBean redefines the default group
- List<Group> groupSeq = context.getMetaBean().getFeature(Jsr303Features.Bean.GROUP_SEQUENCE);
- if (groupSeq != null) {
- context.getGroups().assertDefaultGroupSequenceIsExpandable(groupSeq);
- }
- return groupSeq;
- } else {
- return null;
- }
- }
-
- /**
- * Generate an unrecoverable validation error
- *
- * @param ex
- * @param object
- * @return a {@link RuntimeException} of the appropriate type
- */
- @SuppressWarnings("finally")
- protected static RuntimeException unrecoverableValidationError(RuntimeException ex, Object object) {
- if (ex instanceof UnknownPropertyException || ex instanceof IncompatiblePropertyValueException) {
- // Convert to IllegalArgumentException
- return new IllegalArgumentException(ex.getMessage(), ex);
- } else if (ex instanceof ValidationException) {
- return ex; // do not wrap specific ValidationExceptions (or
- // instances from subclasses)
- } else {
- String objectId = "";
- try {
- if (object != null) {
- objectId = object.toString();
- } else {
- objectId = "<null>";
- }
- } catch (Exception e) {
- objectId = "<unknown>";
- } finally {
- return new ValidationException("error during validation of "
- + objectId, ex);
- }
- }
- }
-
- private void validatePropertyInGroup(final GroupValidationContext<?> context) {
- final Runnable helper;
- if (context.getMetaProperty() == null) {
- helper = new Runnable() {
-
- public void run() {
- ValidationHelper.validateBean(context);
- }
- };
- } else {
- helper = new Runnable() {
-
- public void run() {
- ValidationHelper.validateProperty(context);
- }
- };
- }
- Group currentGroup = context.getCurrentGroup();
- List<Group> defaultGroups = expandDefaultGroup(context);
- if (defaultGroups != null) {
- for (Group each : defaultGroups) {
- context.setCurrentGroup(each);
- helper.run();
- // continue validation, even if errors already found
- }
- context.setCurrentGroup(currentGroup); // restore
- } else {
- helper.run();
- }
- }
-
- /**
- * Create a {@link GroupValidationContext}.
- *
- * @param <T>
- * @param metaBean
- * @param object
- * @param objectClass
- * @param groups
- * @return {@link GroupValidationContext} instance
- */
- protected <T> GroupValidationContext<T> createContext(MetaBean metaBean, T object, Class<T> objectClass,
- Class<?>... groups) {
- ConstraintValidationListener<T> listener = new ConstraintValidationListener<T>(object, objectClass);
- GroupValidationContextImpl<T> context =
- new GroupValidationContextImpl<T>(listener, this.factoryContext.getMessageInterpolator(),
- this.factoryContext.getTraversableResolver(), metaBean);
- context.setBean(object, metaBean);
- context.setGroups(groupsComputer.computeGroups(groups));
- return context;
- }
-
- /**
- * Create a {@link BeanDescriptorImpl}
- *
- * @param metaBean
- * @return {@link BeanDescriptorImpl} instance
- */
- protected BeanDescriptorImpl createBeanDescriptor(MetaBean metaBean) {
- return new BeanDescriptorImpl(factoryContext, metaBean);
- }
-
- private boolean treatMapsLikeBeans = false;
-
- /**
- * Behavior configuration -
- * <p/>
- * <pre>
- * @return treatMapsLikeBeans - true (validate maps like beans, so that
- * you can use Maps to validate dynamic classes or
- * beans for which you have the MetaBean but no instances)
- * - false (default), validate maps like collections
- * (validating the values only)
- * </pre>
- * <p/>
- * (is still configuration to better in BeanValidationContext?)
- */
- public boolean isTreatMapsLikeBeans() {
- return treatMapsLikeBeans;
- }
-
- /**
- * Set whether maps are to be treated like beans.
- *
- * <pre>
- * @param treatMapsLikeBeans - true (validate maps like beans, so that
- * you can use Maps to validate dynamic classes or
- * beans for which you have the MetaBean but no instances)
- * - false (default), validate maps like collections
- * (validating the values only)
- * </pre>
- */
- public void setTreatMapsLikeBeans(boolean treatMapsLikeBeans) {
- this.treatMapsLikeBeans = treatMapsLikeBeans;
- }
-
- /**
- * Checks that beanType is valid according to spec Section 4.1.1 i. Throws an {@link IllegalArgumentException} if it
- * is not.
- *
- * @param beanType Bean type to check.
- */
- private <T> Class<T> checkBeanType(Class<T> beanType) {
- if (beanType == null) {
- throw new IllegalArgumentException("Bean type cannot be null.");
- }
- return beanType;
- }
-
- /**
- * Checks that the property name is valid according to spec Section 4.1.1 i. Throws an
- * {@link IllegalArgumentException} if it is not.
- *
- * @param propertyName Property name to check.
- */
- private void checkPropertyName(String propertyName) {
- if (propertyName == null || propertyName.trim().length() == 0) {
- throw new IllegalArgumentException("Property path cannot be null or empty.");
- }
- }
-
- /**
- * Checks that the groups array is valid according to spec Section 4.1.1 i. Throws an
- * {@link IllegalArgumentException} if it is not.
- *
- * @param groups The groups to check.
- */
- private void checkGroups(Class<?>[] groups) {
- if (groups == null) {
- throw new IllegalArgumentException("Groups cannot be null.");
- }
- }
-
- /**
- * Dispatches a call from {@link #validate()} to {@link ClassValidator#validateBeanNet(GroupValidationContext)} with
- * the current context set.
- */
- protected class Jsr303ValidationCallback implements ValidationHelper.ValidateCallback {
-
- private final GroupValidationContext<?> context;
-
- public Jsr303ValidationCallback(GroupValidationContext<?> context) {
- this.context = context;
- }
-
- public void validate() {
- validateBeanNet(context);
- }
-
- }
-
- /**
- * Create a {@link ValidationContextTraversal} instance for this {@link ClassValidator}.
- *
- * @param validationContext
- * @return {@link ValidationContextTraversal}
- */
- protected ValidationContextTraversal createValidationContextTraversal(GroupValidationContext<?> validationContext) {
- return new ValidationContextTraversal(validationContext);
- }
-
- /**
- * Implement {@link #validateProperty(Object, String, boolean, Class...)} and
- * {@link #validateValue(Class, String, Object, boolean, Class...)}.
- *
- * @param <T>
- * @param beanType
- * @param object
- * @param propertyName
- * @param value
- * @param cascade
- * @param groups
- * @return {@link ConstraintViolation} {@link Set}
- */
- private <T> Set<ConstraintViolation<T>> validateValueImpl(Class<T> beanType, T object, String propertyName,
- Object value, final boolean cascade, Class<?>... groups) {
-
- assert (object == null) ^ (value == VALIDATE_PROPERTY);
- checkPropertyName(propertyName);
- checkGroups(groups);
-
- try {
- final MetaBean initialMetaBean = new DynamicMetaBean(getMetaBeanFinder());
- initialMetaBean.setBeanClass(beanType);
- GroupValidationContext<T> context = createContext(initialMetaBean, object, beanType, groups);
- ValidationContextTraversal contextTraversal = createValidationContextTraversal(context);
- PathNavigation.navigate(propertyName, contextTraversal);
-
- MetaProperty prop = context.getMetaProperty();
- boolean fixed = false;
- if (value != VALIDATE_PROPERTY) {
- assert !context.getPropertyPath().isRootPath();
- if (prop == null && value != null) {
- context.setMetaBean(getMetaBeanFinder().findForClass(value.getClass()));
- }
- if (!cascade) {
- //TCK doesn't care what type a property is if there are no constraints to validate:
- FeaturesCapable meta = prop == null ? context.getMetaBean() : prop;
- if (ArrayUtils.isEmpty(meta.getValidations())) {
- return Collections.<ConstraintViolation<T>> emptySet();
- }
- }
- if (!TypeUtils.isAssignable(value == null ? null : value.getClass(), contextTraversal.getType())) {
- throw new IncompatiblePropertyValueException(String.format(
- "%3$s is not a valid value for property %2$s of type %1$s", beanType, propertyName, value));
- }
- if (prop == null) {
- context.setBean(value);
- } else {
- context.setFixedValue(value);
- fixed = true;
- }
- }
- boolean doCascade = cascade && (prop == null || prop.getMetaBean() != null);
-
- Object bean = context.getBean();
-
- ConstraintValidationListener<T> result = context.getListener();
- Groups sequence = context.getGroups();
-
- // 1. process groups
-
- for (Group current : sequence.getGroups()) {
- context.setCurrentGroup(current);
-
- if (!doCascade || prop != null) {
- validatePropertyInGroup(context);
- }
- if (doCascade) {
- contextTraversal.moveDownIfNecessary();
- if (context.getMetaBean() instanceof DynamicMetaBean) {
- context.setMetaBean(context.getMetaBean().resolveMetaBean(
- ObjectUtils.defaultIfNull(context.getBean(), contextTraversal.getRawType())));
- }
- validateBeanNet(context);
- if (prop != null) {
- context.moveUp(bean, prop.getParentMetaBean());
- context.setMetaProperty(prop);
- if (fixed) {
- context.setFixedValue(value);
- }
- }
- }
- }
-
- // 2. process sequences
-
- int groupViolations = result.getConstraintViolations().size();
-
- outer: for (List<Group> eachSeq : sequence.getSequences()) {
- for (Group current : eachSeq) {
- context.setCurrentGroup(current);
-
- if (!doCascade || prop != null) {
- validatePropertyInGroup(context);
- }
- if (doCascade) {
- contextTraversal.moveDownIfNecessary();
- if (context.getMetaBean() instanceof DynamicMetaBean) {
- context.setMetaBean(context.getMetaBean().resolveMetaBean(
- ObjectUtils.defaultIfNull(context.getBean(), contextTraversal.getRawType())));
- }
- validateBeanNet(context);
- if (prop != null) {
- context.moveUp(bean, prop.getParentMetaBean());
- context.setMetaProperty(prop);
- if (fixed) {
- context.setFixedValue(value);
- }
- }
- }
- /**
- * if one of the group process in the sequence leads to one or more validation failure, the groups
- * following in the sequence must not be processed
- */
- if (result.getConstraintViolations().size() > groupViolations)
- break outer;
- }
- }
- return result.getConstraintViolations();
- } catch (RuntimeException ex) {
- throw unrecoverableValidationError(ex, ObjectUtils.defaultIfNull(object, value));
- }
- }
-
-}
diff --git a/trunk/bval-jsr303/src/main/java/org/apache/bval/jsr303/ConfigurationImpl.java b/trunk/bval-jsr303/src/main/java/org/apache/bval/jsr303/ConfigurationImpl.java
deleted file mode 100644
index 27a1c42..0000000
--- a/trunk/bval-jsr303/src/main/java/org/apache/bval/jsr303/ConfigurationImpl.java
+++ /dev/null
@@ -1,340 +0,0 @@
-/*
- * 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.bval.jsr303;
-
-
-import org.apache.bval.jsr303.resolver.DefaultTraversableResolver;
-import org.apache.bval.jsr303.util.SecureActions;
-import org.apache.bval.jsr303.xml.ValidationParser;
-
-import javax.validation.*;
-import javax.validation.spi.BootstrapState;
-import javax.validation.spi.ConfigurationState;
-import javax.validation.spi.ValidationProvider;
-import java.io.InputStream;
-import java.security.AccessController;
-import java.security.PrivilegedAction;
-import java.util.*;
-import java.util.logging.Logger;
-
-/**
- * Description: used to configure apache-validation for jsr303.
- * Implementation of Configuration that also implements ConfigurationState,
- * hence this can be passed to buildValidatorFactory(ConfigurationState).
- * <br/>
- */
-public class ConfigurationImpl implements ApacheValidatorConfiguration, ConfigurationState {
- private static final Logger log = Logger.getLogger(ConfigurationImpl.class.getName());
-
- /**
- * Configured {@link ValidationProvider}
- */
- //couldn't this be parameterized <ApacheValidatorConfiguration> or <? super ApacheValidatorConfiguration>?
- protected final ValidationProvider<?> provider;
-
- /**
- * Configured {@link ValidationProviderResolver}
- */
- protected final ValidationProviderResolver providerResolver;
-
- /**
- * Configured {@link ValidationProvider} class
- */
- protected Class<? extends ValidationProvider<?>> providerClass;
-
- /**
- * Configured {@link MessageInterpolator}
- */
- protected MessageInterpolator messageInterpolator;
-
- /**
- * Configured {@link ConstraintValidatorFactory}
- */
- protected ConstraintValidatorFactory constraintValidatorFactory;
-
- private TraversableResolver traversableResolver;
-
- // BEGIN DEFAULTS
- /**
- * false = dirty flag (to prevent from multiple parsing validation.xml)
- */
- private boolean prepared = false;
- private final TraversableResolver defaultTraversableResolver =
- new DefaultTraversableResolver();
-
- /**
- * Default {@link MessageInterpolator}
- */
- protected final MessageInterpolator defaultMessageInterpolator =
- new DefaultMessageInterpolator();
-
- private final ConstraintValidatorFactory defaultConstraintValidatorFactory =
- new DefaultConstraintValidatorFactory();
- // END DEFAULTS
-
- private Set<InputStream> mappingStreams = new HashSet<InputStream>();
- private Map<String, String> properties = new HashMap<String, String>();
- private boolean ignoreXmlConfiguration = false;
-
- /**
- * Create a new ConfigurationImpl instance.
- * @param aState
- * @param aProvider
- */
- public ConfigurationImpl(BootstrapState aState, ValidationProvider<?> aProvider) {
- if (aProvider != null) {
- this.provider = aProvider;
- this.providerResolver = null;
- } else if (aState != null) {
- this.provider = null;
- if (aState.getValidationProviderResolver() == null) {
- providerResolver = aState.getDefaultValidationProviderResolver();
- } else {
- providerResolver = aState.getValidationProviderResolver();
- }
- } else {
- throw new ValidationException("either provider or state are required");
- }
- }
-
- /**
- * {@inheritDoc}
- */
- public ApacheValidatorConfiguration traversableResolver(TraversableResolver resolver) {
- traversableResolver = resolver;
- this.prepared = false;
- return this;
- }
-
- /**
- * {@inheritDoc}
- * Ignore data from the <i>META-INF/validation.xml</i> file if this
- * method is called.
- *
- * @return this
- */
- public ApacheValidatorConfiguration ignoreXmlConfiguration() {
- ignoreXmlConfiguration = true;
- return this;
- }
-
- /**
- * {@inheritDoc}
- */
- public ConfigurationImpl messageInterpolator(MessageInterpolator resolver) {
- this.messageInterpolator = resolver;
- this.prepared = false;
- return this;
- }
-
- /**
- * {@inheritDoc}
- */
- public ConfigurationImpl constraintValidatorFactory(
- ConstraintValidatorFactory constraintFactory) {
- this.constraintValidatorFactory = constraintFactory;
- this.prepared = false;
- return this;
- }
-
- /**
- * {@inheritDoc}
- * Add a stream describing constraint mapping in the Bean Validation
- * XML format.
- *
- * @return this
- */
- public ApacheValidatorConfiguration addMapping(InputStream stream) {
- mappingStreams.add(stream);
- return this;
- }
-
- /**
- * {@inheritDoc}
- * Add a provider specific property. This property is equivalent to
- * XML configuration properties.
- * If we do not know how to handle the property, we silently ignore it.
- *
- * @return this
- */
- public ApacheValidatorConfiguration addProperty(String name, String value) {
- properties.put(name, value);
- return this;
- }
-
- /**
- * {@inheritDoc}
- * Return a map of non type-safe custom properties.
- *
- * @return null
- */
- public Map<String, String> getProperties() {
- return properties;
- }
-
- /**
- * {@inheritDoc}
- * Returns true if Configuration.ignoreXMLConfiguration() has been called.
- * In this case, we ignore META-INF/validation.xml
- *
- * @return true
- */
- public boolean isIgnoreXmlConfiguration() {
- return ignoreXmlConfiguration;
- }
-
- /**
- * {@inheritDoc}
- */
- public Set<InputStream> getMappingStreams() {
- return mappingStreams;
- }
-
- /**
- * {@inheritDoc}
- */
- public MessageInterpolator getMessageInterpolator() {
- return messageInterpolator;
- }
-
- /**
- * {@inheritDoc}
- */
- public MessageInterpolator getDefaultMessageInterpolator() {
- return defaultMessageInterpolator;
- }
-
- /**
- * {@inheritDoc}
- */
- public TraversableResolver getDefaultTraversableResolver() {
- return defaultTraversableResolver;
- }
-
- /**
- * {@inheritDoc}
- */
- public ConstraintValidatorFactory getDefaultConstraintValidatorFactory() {
- return defaultConstraintValidatorFactory;
- }
-
- /**
- * {@inheritDoc}
- * main factory method to build a ValidatorFactory
- *
- * @throws ValidationException if the ValidatorFactory cannot be built
- */
- public ValidatorFactory buildValidatorFactory() {
- return run(SecureActions.doPrivBuildValidatorFactory(this));
- }
-
- public ValidatorFactory doPrivBuildValidatorFactory() {
- prepare();
- if (provider != null) {
- return provider.buildValidatorFactory(this);
- } else {
- return findProvider().buildValidatorFactory(this);
- }
- }
-
- private void prepare() {
- if (prepared) return;
- parseValidationXml();
- applyDefaults();
- prepared = true;
- }
-
- /** Check whether a validation.xml file exists and parses it with JAXB */
- private void parseValidationXml() {
- if (isIgnoreXmlConfiguration()) {
- log.info("ignoreXmlConfiguration == true");
- } else {
- new ValidationParser(getProperties().get(Properties.VALIDATION_XML_PATH))
- .processValidationConfig(this);
- }
- }
-
- private void applyDefaults() {
- // make sure we use the defaults in case they haven't been provided yet
- if (traversableResolver == null) {
- traversableResolver = getDefaultTraversableResolver();
- }
- if (messageInterpolator == null) {
- messageInterpolator = getDefaultMessageInterpolator();
- }
- if (constraintValidatorFactory == null) {
- constraintValidatorFactory = getDefaultConstraintValidatorFactory();
- }
- }
-
- /**
- * {@inheritDoc}
- * @return the constraint validator factory of this configuration.
- */
- public ConstraintValidatorFactory getConstraintValidatorFactory() {
- return constraintValidatorFactory;
- }
-
- /**
- * {@inheritDoc}
- */
- public TraversableResolver getTraversableResolver() {
- return traversableResolver;
- }
-
- /**
- * Get the configured {@link ValidationProvider}.
- * @return {@link ValidationProvider}
- */
- public ValidationProvider<?> getProvider() {
- return provider;
- }
-
- private ValidationProvider<?> findProvider() {
- if (providerClass != null) {
- for (ValidationProvider<?> provider : providerResolver
- .getValidationProviders()) {
- if (providerClass.isAssignableFrom(provider.getClass())) {
- return provider;
- }
- }
- throw new ValidationException(
- "Unable to find suitable provider: " + providerClass);
- } else {
- List<ValidationProvider<?>> providers = providerResolver.getValidationProviders();
- return providers.get(0);
- }
- }
-
- /**
- * Set {@link ValidationProvider} class.
- * @param providerClass
- */
- public void setProviderClass(Class<? extends ValidationProvider<?>> providerClass) {
- this.providerClass = providerClass;
- }
-
- private static <T> T run(PrivilegedAction<T> action) {
- if (System.getSecurityManager() != null) {
- return AccessController.doPrivileged(action);
- } else {
- return action.run();
- }
- }
-}
diff --git a/trunk/bval-jsr303/src/main/java/org/apache/bval/jsr303/ConstraintAnnotationAttributes.java b/trunk/bval-jsr303/src/main/java/org/apache/bval/jsr303/ConstraintAnnotationAttributes.java
deleted file mode 100644
index 972e64f..0000000
--- a/trunk/bval-jsr303/src/main/java/org/apache/bval/jsr303/ConstraintAnnotationAttributes.java
+++ /dev/null
@@ -1,268 +0,0 @@
-/**
- * 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.bval.jsr303;
-
-import java.lang.annotation.Annotation;
-import java.lang.reflect.Array;
-import java.lang.reflect.Method;
-import java.lang.reflect.Type;
-import java.security.AccessController;
-import java.security.PrivilegedAction;
-import java.util.Locale;
-import java.util.Map;
-
-import javax.validation.Constraint;
-import javax.validation.ConstraintDefinitionException;
-import javax.validation.Payload;
-import javax.validation.ValidationException;
-
-import org.apache.bval.jsr303.util.SecureActions;
-import org.apache.commons.lang3.reflect.TypeUtils;
-
-/**
- * Defines the well-known attributes of {@link Constraint} annotations.
- *
- * @version $Rev: 1165923 $ $Date: 2011-09-06 18:07:53 -0500 (Tue, 06 Sep 2011) $
- */
-public enum ConstraintAnnotationAttributes {
- /**
- * "message"
- */
- MESSAGE,
-
- /**
- * "groups"
- */
- GROUPS,
-
- /**
- * "payload"
- */
- PAYLOAD,
-
- /**
- * "value" for multi-valued constraints
- */
- VALUE(true);
-
- @SuppressWarnings("unused")
- private static class Types {
- String message;
- Class<?>[] groups;
- Class<? extends Payload>[] payload;
- Annotation[] value;
- }
-
- private Type type;
- private boolean permitNullDefaultValue;
-
- private ConstraintAnnotationAttributes() {
- this(false);
- }
-
- private ConstraintAnnotationAttributes(boolean permitNullDefaultValue) {
- this.permitNullDefaultValue = permitNullDefaultValue;
- try {
- this.type = Types.class.getDeclaredField(getAttributeName()).getGenericType();
- } catch (Exception e) {
- // should never happen
- throw new RuntimeException(e);
- }
- }
-
- /**
- * Get the expected type of the represented attribute.
- *
- * @return Class<?>
- */
- public Type getType() {
- return type;
- }
-
- /**
- * Get the attribute name represented.
- *
- * @return String
- */
- public String getAttributeName() {
- return name().toLowerCase(Locale.US);
- }
-
- /**
- * Put <code>value</code> into a map with <code>this.attributeName</code> as
- * key.
- *
- * @param <V>
- * @param map
- * @param value
- * @return previous value mapped to <code>this.attributeName</code>
- */
- public <V> Object put(Map<? super String, ? super V> map, V value) {
- if (!TypeUtils.isInstance(value, getType())) {
- throw new IllegalArgumentException(String.format("Invalid '%s' value: %s", getAttributeName(), value));
- }
- return map.put(getAttributeName(), value);
- }
-
- /**
- * Get the value of <code>this.attributeName</code> from <code>map</code>.
- *
- * @param <V>
- * @param map
- * @return V if you say so
- */
- public <V> V get(Map<? super String, ? super V> map) {
- @SuppressWarnings("unchecked")
- final V result = (V) map.get(getAttributeName());
- if (!TypeUtils.isInstance(result, getType())) {
- throw new IllegalStateException(String.format("Invalid '%s' value: %s", getAttributeName(), result));
- }
- return result;
- }
-
- /**
- * Verify that this attribute is validly defined on the given type.
- *
- * @param type
- * @throws ConstraintDefinitionException
- */
- public <A extends Annotation> void validateOn(Class<A> type) {
- new Worker<A>(type);
- }
-
- /**
- * Benign means of checking for an attribute's existence.
- *
- * @param type
- * @return whether the attribute was (properly) declared
- */
- public <A extends Annotation> boolean isDeclaredOn(Class<A> type) {
- return new Worker<A>(type, true).valid;
- }
-
- /**
- * Get the value of this attribute from the specified constraint annotation.
- *
- * @param constraint
- * @return Object
- */
- public <T> T getValue(Annotation constraint) {
- try {
- @SuppressWarnings({ "rawtypes", "unchecked" })
- T result = (T) new Worker(constraint.annotationType()).read(constraint);
- return result;
- } catch (Exception e) {
- throw new ValidationException(String.format("Could not get value of %1$s() from %2$s", getType(),
- constraint));
- }
- }
-
- /**
- * Get the default value of this attribute on the given annotation type.
- * @param <T>
- * @param type
- * @return Object
- */
- public <T, A extends Annotation> T getDefaultValue(Class<A> type) {
- @SuppressWarnings("unchecked")
- final T result = (T) new Worker<A>(type).defaultValue;
- return result;
- }
-
- private static <T> T doPrivileged(final PrivilegedAction<T> action) {
- if (System.getSecurityManager() != null) {
- return AccessController.doPrivileged(action);
- } else {
- return action.run();
- }
- }
-
- private class Worker<C> {
- final Method method;
- final Object defaultValue;
- final boolean valid;
-
- /**
- * Create a new Worker instance.
- * @param constraintType to handle
- */
- Worker(Class<C> constraintType) {
- this(constraintType, false);
- }
-
- /**
- * Create a new Worker instance.
- * @param constraintType to handle
- * @param quiet whether to simply set !valid rather than throw an Exception on error
- */
- Worker(Class<C> constraintType, boolean quiet) {
- super();
- boolean _valid = true;
- Object _defaultValue = null;
- try {
- method = doPrivileged(SecureActions.getPublicMethod(constraintType, getAttributeName()));
- if (method == null) {
- if (quiet) {
- _valid = false;
- return;
- }
- throw new ConstraintDefinitionException(String.format("Annotation %1$s has no %2$s() method",
- constraintType, getAttributeName()));
- }
-
- if (!TypeUtils.isAssignable(method.getReturnType(), getType())) {
- if (quiet) {
- _valid = false;
- return;
- }
- throw new ConstraintDefinitionException(String.format(
- "Return type for %1$s() must be of type %2$s", getAttributeName(), getType()));
- }
- _defaultValue = method.getDefaultValue();
- if (_defaultValue == null && permitNullDefaultValue) {
- return;
- }
- if (TypeUtils.isArrayType(getType()) && Array.getLength(_defaultValue) > 0) {
- if (quiet) {
- _valid = false;
- return;
- }
- throw new ConstraintDefinitionException(String.format(
- "Default value for %1$s() must be an empty array", getAttributeName()));
- }
- } finally {
- valid = _valid;
- defaultValue = _defaultValue;
- }
- }
-
- <T> T read(final C constraint) {
- @SuppressWarnings("unchecked")
- T result = (T) doPrivileged(new PrivilegedAction<Object>() {
- public Object run() {
- try {
- method.setAccessible(true);
- return method.invoke(constraint);
- } catch (Exception e) {
- throw new RuntimeException(e);
- }
- }
- });
- return result;
- }
- }
-}
diff --git a/trunk/bval-jsr303/src/main/java/org/apache/bval/jsr303/ConstraintCached.java b/trunk/bval-jsr303/src/main/java/org/apache/bval/jsr303/ConstraintCached.java
deleted file mode 100644
index b144d3e..0000000
--- a/trunk/bval-jsr303/src/main/java/org/apache/bval/jsr303/ConstraintCached.java
+++ /dev/null
@@ -1,64 +0,0 @@
-/*
- * 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.bval.jsr303;
-
-import javax.validation.ConstraintValidator;
-import java.lang.annotation.Annotation;
-import java.util.HashMap;
-import java.util.Map;
-
-/**
- * Description: hold the relationship annotation->validatedBy[] ConstraintValidator classes
- * that are already parsed in a cache.<br/>
- */
-public class ConstraintCached {
- private final Map<Class<? extends Annotation>, Class<? extends ConstraintValidator<?, ?>>[]> classes =
- new HashMap<Class<? extends Annotation>, Class<? extends ConstraintValidator<?,?>>[]>();
-
- /**
- * Record the set of validator classes for a given constraint annotation.
- * @param annotationClass
- * @param definitionClasses
- */
- public <A extends Annotation> void putConstraintValidator(Class<A> annotationClass,
- Class<? extends ConstraintValidator<A, ?>>[] definitionClasses) {
- classes.put(annotationClass, definitionClasses);
- }
-
- /**
- * Learn whether we have cached the validator classes for the requested constraint annotation.
- * @param annotationClass to look up
- * @return boolean
- */
- public boolean containsConstraintValidator(Class<? extends Annotation> annotationClass) {
- return classes.containsKey(annotationClass);
- }
-
- /**
- * Get the cached validator classes for the requested constraint annotation.
- * @param annotationClass to look up
- * @return array of {@link ConstraintValidator} implementation types
- */
- @SuppressWarnings("unchecked")
- public <A extends Annotation> Class<? extends ConstraintValidator<A, ?>>[] getConstraintValidators(
- Class<A> annotationClass) {
- return (Class<? extends ConstraintValidator<A, ?>>[]) classes.get(annotationClass);
- }
-
-}
diff --git a/trunk/bval-jsr303/src/main/java/org/apache/bval/jsr303/ConstraintDefaults.java b/trunk/bval-jsr303/src/main/java/org/apache/bval/jsr303/ConstraintDefaults.java
deleted file mode 100644
index 3eb01f5..0000000
--- a/trunk/bval-jsr303/src/main/java/org/apache/bval/jsr303/ConstraintDefaults.java
+++ /dev/null
@@ -1,131 +0,0 @@
-/*
- * 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.bval.jsr303;
-
-import javax.validation.ConstraintValidator;
-import java.io.IOException;
-import java.io.InputStream;
-import java.lang.annotation.Annotation;
-import java.security.AccessController;
-import java.security.PrivilegedAction;
-import java.util.*;
-import java.util.logging.Level;
-import java.util.logging.Logger;
-
-/**
- * Description: Provides access to the default constraints/validator implementation classes built into the framework.
- * These are configured in DefaultConstraints.properties.<br/>
- */
-public class ConstraintDefaults {
- private static final Logger log = Logger.getLogger(ConstraintDefaults.class.getName());
- private static final String DEFAULT_CONSTRAINTS =
- "org/apache/bval/jsr303/DefaultConstraints.properties";
-
- /**
- * The default constraint data stored herein.
- */
- protected Map<String, Class<? extends ConstraintValidator<?, ?>>[]> defaultConstraints;
-
- /**
- * Create a new ConstraintDefaults instance.
- */
- public ConstraintDefaults() {
- defaultConstraints = loadDefaultConstraints(DEFAULT_CONSTRAINTS);
- }
-
- /**
- * Get the default constraint data.
- * @return String-keyed map
- */
- public Map<String, Class<? extends ConstraintValidator<?, ?>>[]> getDefaultConstraints() {
- return defaultConstraints;
- }
-
- /**
- * Get the default validator implementation types for the specified constraint annotation type.
- * @param annotationType
- * @return array of {@link ConstraintValidator} implementation classes
- */
- @SuppressWarnings("unchecked")
- public <A extends Annotation> Class<? extends ConstraintValidator<A, ?>>[] getValidatorClasses(
- Class<A> annotationType) {
- return (Class<? extends ConstraintValidator<A, ?>>[]) getDefaultConstraints().get(annotationType.getName());
- }
-
- @SuppressWarnings("unchecked")
- private Map<String, Class<? extends ConstraintValidator<?, ?>>[]> loadDefaultConstraints(String resource) {
- Properties constraintProperties = new Properties();
- final ClassLoader classloader = getClassLoader();
- InputStream stream = classloader.getResourceAsStream(resource);
- if (stream != null) {
- try {
- constraintProperties.load(stream);
- } catch (IOException e) {
- log.log(Level.SEVERE, String.format("Cannot load %s", resource), e);
- }
- } else {
- log.log(Level.WARNING, String.format("Cannot find %s", resource));
- }
-
- Map<String, Class<? extends ConstraintValidator<?, ?>>[]> loadedConstraints
- = new HashMap<String, Class<? extends ConstraintValidator<?,?>>[]>();
- for (Map.Entry<Object, Object> entry : constraintProperties.entrySet()) {
-
- StringTokenizer tokens = new StringTokenizer((String) entry.getValue(), ", ");
- LinkedList<Class<?>> classes = new LinkedList<Class<?>>();
- while (tokens.hasMoreTokens()) {
- final String eachClassName = tokens.nextToken();
-
- Class<?> constraintValidatorClass =
- run(new PrivilegedAction<Class<?>>() {
- public Class<?> run() {
- try {
- return Class.forName(eachClassName, true, classloader);
- } catch (ClassNotFoundException e) {
- log.log(Level.SEVERE, String.format("Cannot find class %s", eachClassName), e);
- return null;
- }
- }
- });
-
- if (constraintValidatorClass != null) classes.add(constraintValidatorClass);
-
- }
- loadedConstraints
- .put((String) entry.getKey(),
- (Class<? extends ConstraintValidator<?, ?>>[]) classes.toArray(new Class[classes.size()]));
-
- }
- return loadedConstraints;
- }
-
- private ClassLoader getClassLoader() {
- ClassLoader classloader = Thread.currentThread().getContextClassLoader();
- if (classloader == null) classloader = getClass().getClassLoader();
- return classloader;
- }
-
- private static <T> T run(PrivilegedAction<T> action) {
- if (System.getSecurityManager() != null) {
- return AccessController.doPrivileged(action);
- } else {
- return action.run();
- }
- }
-}
diff --git a/trunk/bval-jsr303/src/main/java/org/apache/bval/jsr303/ConstraintDescriptorImpl.java b/trunk/bval-jsr303/src/main/java/org/apache/bval/jsr303/ConstraintDescriptorImpl.java
deleted file mode 100644
index c3d4b86..0000000
--- a/trunk/bval-jsr303/src/main/java/org/apache/bval/jsr303/ConstraintDescriptorImpl.java
+++ /dev/null
@@ -1,132 +0,0 @@
-/*
- * 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.bval.jsr303;
-
-import javax.validation.Payload;
-import javax.validation.metadata.ConstraintDescriptor;
-import java.io.Serializable;
-import java.lang.annotation.Annotation;
-import java.util.List;
-import java.util.Map;
-import java.util.Set;
-
-/**
- * Description: immutable, serializable implementation of ConstraintDescriptor
- * interface of JSR303<br>
- * User: roman.stumm<br>
- * Date: 22.04.2010<br>
- * Time: 10:21:23<br>
- */
-public class ConstraintDescriptorImpl<T extends Annotation> implements ConstraintDescriptor<T>, Serializable {
- /** Serialization version */
- private static final long serialVersionUID = 1L;
-
- private final T annotation;
- private final Set<Class<?>> groups;
- private final Set<Class<? extends javax.validation.Payload>> payload;
- private final List<java.lang.Class<? extends javax.validation.ConstraintValidator<T, ?>>> constraintValidatorClasses;
- private final Map<String, Object> attributes;
- private final Set<ConstraintDescriptor<?>> composingConstraints;
- private final boolean reportAsSingleViolation;
-
- /**
- * Create a new ConstraintDescriptorImpl instance.
- *
- * @param descriptor
- */
- public ConstraintDescriptorImpl(ConstraintDescriptor<T> descriptor) {
- this(descriptor.getAnnotation(), descriptor.getGroups(), descriptor.getPayload(), descriptor
- .getConstraintValidatorClasses(), descriptor.getAttributes(), descriptor.getComposingConstraints(),
- descriptor.isReportAsSingleViolation());
- }
-
- /**
- * Create a new ConstraintDescriptorImpl instance.
- *
- * @param annotation
- * @param groups
- * @param payload
- * @param constraintValidatorClasses
- * @param attributes
- * @param composingConstraints
- * @param reportAsSingleViolation
- */
- public ConstraintDescriptorImpl(T annotation, Set<Class<?>> groups,
- Set<Class<? extends javax.validation.Payload>> payload,
- List<java.lang.Class<? extends javax.validation.ConstraintValidator<T, ?>>> constraintValidatorClasses,
- Map<String, Object> attributes, Set<ConstraintDescriptor<?>> composingConstraints,
- boolean reportAsSingleViolation) {
- this.annotation = annotation;
- this.groups = groups;
- this.payload = payload;
- this.constraintValidatorClasses = constraintValidatorClasses;
- this.attributes = attributes;
- this.composingConstraints = composingConstraints;
- this.reportAsSingleViolation = reportAsSingleViolation;
- }
-
- /**
- * {@inheritDoc}
- */
- public T getAnnotation() {
- return annotation;
- }
-
- /**
- * {@inheritDoc}
- */
- public Set<Class<?>> getGroups() {
- return groups;
- }
-
- /**
- * {@inheritDoc}
- */
- public Set<Class<? extends Payload>> getPayload() {
- return payload;
- }
-
- /**
- * {@inheritDoc}
- */
- public List<java.lang.Class<? extends javax.validation.ConstraintValidator<T, ?>>> getConstraintValidatorClasses() {
- return constraintValidatorClasses;
- }
-
- /**
- * {@inheritDoc}
- */
- public Map<String, Object> getAttributes() {
- return attributes;
- }
-
- /**
- * {@inheritDoc}
- */
- public Set<ConstraintDescriptor<?>> getComposingConstraints() {
- return composingConstraints;
- }
-
- /**
- * {@inheritDoc}
- */
- public boolean isReportAsSingleViolation() {
- return reportAsSingleViolation;
- }
-}
diff --git a/trunk/bval-jsr303/src/main/java/org/apache/bval/jsr303/ConstraintFinderImpl.java b/trunk/bval-jsr303/src/main/java/org/apache/bval/jsr303/ConstraintFinderImpl.java
deleted file mode 100644
index fb8cd1a..0000000
--- a/trunk/bval-jsr303/src/main/java/org/apache/bval/jsr303/ConstraintFinderImpl.java
+++ /dev/null
@@ -1,162 +0,0 @@
-/*
- * 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.bval.jsr303;
-
-import org.apache.bval.jsr303.groups.Group;
-import org.apache.bval.jsr303.groups.Groups;
-import org.apache.bval.jsr303.groups.GroupsComputer;
-import org.apache.bval.model.MetaBean;
-
-import javax.validation.metadata.ConstraintDescriptor;
-import javax.validation.metadata.ElementDescriptor;
-import javax.validation.metadata.ElementDescriptor.ConstraintFinder;
-import javax.validation.metadata.Scope;
-import java.lang.annotation.ElementType;
-import java.util.*;
-
-/**
- * Description: Implementation of the fluent {@link ConstraintFinder} interface.<br/>
- */
-final class ConstraintFinderImpl implements ElementDescriptor.ConstraintFinder {
- private final MetaBean metaBean;
- private final Set<Scope> findInScopes;
- private Set<ConstraintValidation<?>> constraintDescriptors;
-
- /**
- * Create a new ConstraintFinderImpl instance.
- *
- * @param metaBean
- * @param constraintDescriptors
- */
- ConstraintFinderImpl(MetaBean metaBean, Set<ConstraintValidation<?>> constraintDescriptors) {
- this.metaBean = metaBean;
- this.constraintDescriptors = constraintDescriptors;
- this.findInScopes = new HashSet<Scope>(Arrays.asList(Scope.values()));
- }
-
- /**
- * {@inheritDoc}
- */
- public ElementDescriptor.ConstraintFinder unorderedAndMatchingGroups(Class<?>... groups) {
- Set<ConstraintValidation<?>> matchingDescriptors =
- new HashSet<ConstraintValidation<?>>(constraintDescriptors.size());
- Groups groupChain = new GroupsComputer().computeGroups(groups);
- for (Group group : groupChain.getGroups()) {
- if (group.isDefault()) {
- // If group is default, check if it gets redefined
- List<Group> expandedDefaultGroup = metaBean.getFeature(Jsr303Features.Bean.GROUP_SEQUENCE);
- for (Group defaultGroupMember : expandedDefaultGroup) {
- for (ConstraintValidation<?> descriptor : constraintDescriptors) {
- if (isInScope(descriptor) && isInGroup(descriptor, defaultGroupMember)) {
- matchingDescriptors.add(descriptor);
- }
- }
- }
- } else {
- for (ConstraintValidation<?> descriptor : constraintDescriptors) {
- if (isInScope(descriptor) && isInGroup(descriptor, group)) {
- matchingDescriptors.add(descriptor);
- }
- }
- }
- }
- return thisWith(matchingDescriptors);
- }
-
- /**
- * {@inheritDoc}
- */
- public ElementDescriptor.ConstraintFinder lookingAt(Scope scope) {
- if (scope.equals(Scope.LOCAL_ELEMENT)) {
- findInScopes.remove(Scope.HIERARCHY);
- for (Iterator<ConstraintValidation<?>> it = constraintDescriptors.iterator(); it.hasNext();) {
- ConstraintValidation<?> cv = it.next();
- if (cv.getOwner() != metaBean.getBeanClass()) {
- it.remove();
- }
- }
- }
- return this;
- }
-
- /**
- * {@inheritDoc}
- */
- public ElementDescriptor.ConstraintFinder declaredOn(ElementType... elementTypes) {
- Set<ConstraintValidation<?>> matchingDescriptors =
- new HashSet<ConstraintValidation<?>>(constraintDescriptors.size());
- for (ElementType each : elementTypes) {
- for (ConstraintValidation<?> descriptor : constraintDescriptors) {
- if (isInScope(descriptor) && isAtElement(descriptor, each)) {
- matchingDescriptors.add(descriptor);
- }
- }
- }
- return thisWith(matchingDescriptors);
- }
-
- private boolean isAtElement(ConstraintValidation<?> descriptor, ElementType each) {
- return descriptor.getAccess().getElementType() == each;
- }
-
- private boolean isInScope(ConstraintValidation<?> descriptor) {
- if (findInScopes.size() == Scope.values().length)
- return true; // all scopes
- if (metaBean != null) {
- Class<?> owner = descriptor.getOwner();
- for (Scope scope : findInScopes) {
- switch (scope) {
- case LOCAL_ELEMENT:
- if (owner.equals(metaBean.getBeanClass()))
- return true;
- break;
- case HIERARCHY:
- if (!owner.equals(metaBean.getBeanClass()))
- return true;
- break;
- }
- }
- }
- return false;
- }
-
- private boolean isInGroup(ConstraintValidation<?> descriptor, Group group) {
- return descriptor.getGroups().contains(group.getGroup());
- }
-
- private ElementDescriptor.ConstraintFinder thisWith(Set<ConstraintValidation<?>> matchingDescriptors) {
- constraintDescriptors = matchingDescriptors;
- return this;
- }
-
- /**
- * {@inheritDoc}
- */
- public Set<ConstraintDescriptor<?>> getConstraintDescriptors() {
- return constraintDescriptors.isEmpty() ? Collections.<ConstraintDescriptor<?>> emptySet() : Collections
- .<ConstraintDescriptor<?>> unmodifiableSet(constraintDescriptors);
- }
-
- /**
- * {@inheritDoc}
- */
- public boolean hasConstraints() {
- return !constraintDescriptors.isEmpty();
- }
-}
diff --git a/trunk/bval-jsr303/src/main/java/org/apache/bval/jsr303/ConstraintValidation.java b/trunk/bval-jsr303/src/main/java/org/apache/bval/jsr303/ConstraintValidation.java
deleted file mode 100644
index cd9ec70..0000000
--- a/trunk/bval-jsr303/src/main/java/org/apache/bval/jsr303/ConstraintValidation.java
+++ /dev/null
@@ -1,381 +0,0 @@
-/*
- * 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.bval.jsr303;
-
-import org.apache.bval.jsr303.util.NodeImpl;
-import org.apache.bval.jsr303.util.PathImpl;
-import org.apache.bval.model.Validation;
-import org.apache.bval.model.ValidationContext;
-import org.apache.bval.model.ValidationListener;
-import org.apache.bval.util.AccessStrategy;
-import org.apache.commons.lang3.ArrayUtils;
-
-import javax.validation.ConstraintDefinitionException;
-import javax.validation.ConstraintValidator;
-import javax.validation.Payload;
-import javax.validation.ValidationException;
-import javax.validation.metadata.ConstraintDescriptor;
-import java.io.Serializable;
-import java.lang.annotation.Annotation;
-import java.util.*;
-
-/**
- * Description: Adapter between Constraint (JSR303) and Validation (Core)<br/>
- * this instance is immutable!<br/>
- */
-public class ConstraintValidation<T extends Annotation> implements Validation, ConstraintDescriptor<T> {
- private final ConstraintValidator<T, ?> validator;
- private T annotation; // for metadata request API
- private final AccessStrategy access;
- private final boolean reportFromComposite;
- private final Map<String, Object> attributes;
-
- private Set<ConstraintValidation<?>> composedConstraints;
-
- /**
- * the owner is the type where the validation comes from. it is used to
- * support implicit grouping.
- */
- private final Class<?> owner;
- private Set<Class<?>> groups;
- private Set<Class<? extends Payload>> payload;
- private Class<? extends ConstraintValidator<T, ?>>[] validatorClasses;
-
- /**
- * Create a new ConstraintValidation instance.
- *
- * @param validatorClasses
- * @param validator
- * - the constraint validator
- * @param annotation
- * - the annotation of the constraint
- * @param owner
- * - the type where the annotated element is placed (class,
- * interface, annotation type)
- * @param access
- * - how to access the value
- * @param reportFromComposite
- */
- public ConstraintValidation(Class<? extends ConstraintValidator<T, ?>>[] validatorClasses,
- ConstraintValidator<T, ?> validator, T annotation, Class<?> owner, AccessStrategy access,
- boolean reportFromComposite) {
- this.attributes = new HashMap<String, Object>();
- this.validatorClasses = ArrayUtils.clone(validatorClasses);
- this.validator = validator;
- this.annotation = annotation;
- this.owner = owner;
- this.access = access;
- this.reportFromComposite = reportFromComposite;
- }
-
- /**
- * Return a {@link Serializable} {@link ConstraintDescriptor} capturing a
- * snapshot of current state.
- *
- * @return {@link ConstraintDescriptor}
- */
- public ConstraintDescriptor<T> asSerializableDescriptor() {
- return new ConstraintDescriptorImpl<T>(this);
- }
-
- /**
- * Set the applicable validation groups.
- *
- * @param groups
- */
- void setGroups(Set<Class<?>> groups) {
- this.groups = groups;
- ConstraintAnnotationAttributes.GROUPS.put(attributes, groups.toArray(new Class[groups.size()]));
- }
-
- /**
- * Set the payload.
- *
- * @param payload
- */
- void setPayload(Set<Class<? extends Payload>> payload) {
- this.payload = payload;
- ConstraintAnnotationAttributes.PAYLOAD.put(attributes, payload.toArray(new Class[payload.size()]));
- }
-
- /**
- * {@inheritDoc}
- */
- public boolean isReportAsSingleViolation() {
- return reportFromComposite;
- }
-
- /**
- * Add a composing constraint.
- *
- * @param aConstraintValidation
- * to add
- */
- public void addComposed(ConstraintValidation<?> aConstraintValidation) {
- if (composedConstraints == null) {
- composedConstraints = new HashSet<ConstraintValidation<?>>();
- }
- composedConstraints.add(aConstraintValidation);
- }
-
- /**
- * {@inheritDoc}
- */
- public <L extends ValidationListener> void validate(ValidationContext<L> context) {
- validate((GroupValidationContext<?>) context);
- }
-
- /**
- * Validate a {@link GroupValidationContext}.
- *
- * @param context
- * root
- */
- public void validate(GroupValidationContext<?> context) {
- context.setConstraintValidation(this);
- /**
- * execute unless the given validation constraint has already been
- * processed during this validation routine (as part of a previous group
- * match)
- */
- if (!isMemberOf(context.getCurrentGroup().getGroup())) {
- return; // do not validate in the current group
- }
- if (context.getCurrentOwner() != null && this.owner != context.getCurrentOwner()) {
- return;
- }
- if (validator != null && !context.collectValidated(validator))
- return; // already done
-
- if (context.getMetaProperty() != null && !isReachable(context)) {
- return;
- }
-
- // process composed constraints
- if (isReportAsSingleViolation()) {
- ConstraintValidationListener<?> listener = context.getListener();
- listener.beginReportAsSingle();
-
- boolean failed = listener.hasViolations();
- try {
- // stop validating when already failed and
- // ReportAsSingleInvalidConstraint = true ?
- for (Iterator<ConstraintValidation<?>> composed = getComposingValidations().iterator(); !failed && composed.hasNext();) {
- composed.next().validate(context);
- failed = listener.hasViolations();
- }
- } finally {
- listener.endReportAsSingle();
- // Restore current constraint validation
- context.setConstraintValidation(this);
- }
-
- if (failed) {
- // TODO RSt - how should the composed constraint error report look like?
- ConstraintValidatorContextImpl jsrContext = new ConstraintValidatorContextImpl(context, this);
- addErrors(context, jsrContext); // add defaultErrorMessage only
- return;
- }
- } else {
- for (ConstraintValidation<?> composed : getComposingValidations()) {
- composed.validate(context);
- }
-
- // Restore current constraint validation
- context.setConstraintValidation(this);
- }
-
- if (validator != null) {
- ConstraintValidatorContextImpl jsrContext = new ConstraintValidatorContextImpl(context, this);
- @SuppressWarnings("unchecked")
- final ConstraintValidator<T, Object> objectValidator = (ConstraintValidator<T, Object>) validator;
- if (!objectValidator.isValid(context.getValidatedValue(), jsrContext)) {
- addErrors(context, jsrContext);
- }
- }
- }
-
- /**
- * Initialize the validator (if not <code>null</code>) with the stored
- * annotation.
- */
- public void initialize() {
- if (null != validator) {
- try {
- validator.initialize(annotation);
- } catch (RuntimeException e) {
- // Either a "legit" problem initializing the validator or a
- // ClassCastException if the validator associated annotation is
- // not a supertype of the validated annotation.
- throw new ConstraintDefinitionException("Incorrect validator ["
- + validator.getClass().getCanonicalName() + "] for annotation "
- + annotation.annotationType().getCanonicalName(), e);
- }
- }
- }
-
- private boolean isReachable(GroupValidationContext<?> context) {
- PathImpl path = context.getPropertyPath();
- NodeImpl node = path.getLeafNode();
- PathImpl beanPath = path.getPathWithoutLeafNode();
- if (beanPath == null) {
- beanPath = PathImpl.create(null);
- }
- try {
- if (!context.getTraversableResolver().isReachable(context.getBean(), node,
- context.getRootMetaBean().getBeanClass(), beanPath, access.getElementType()))
- return false;
- } catch (RuntimeException e) {
- throw new ValidationException("Error in TraversableResolver.isReachable() for " + context.getBean(), e);
- }
-
- return true;
- }
-
- private void addErrors(GroupValidationContext<?> context, ConstraintValidatorContextImpl jsrContext) {
- for (ValidationListener.Error each : jsrContext.getErrorMessages()) {
- context.getListener().addError(each, context);
- }
- }
-
- /**
- * {@inheritDoc}
- */
- public String toString() {
- return "ConstraintValidation{" + validator + '}';
- }
-
- /**
- * Get the message template used by this constraint.
- *
- * @return String
- */
- public String getMessageTemplate() {
- return ConstraintAnnotationAttributes.MESSAGE.get(attributes);
- }
-
- /**
- * Get the {@link ConstraintValidator} invoked by this
- * {@link ConstraintValidation}.
- *
- * @return
- */
- public ConstraintValidator<T, ?> getValidator() {
- return validator;
- }
-
- /**
- * Learn whether this {@link ConstraintValidation} belongs to the specified
- * group.
- *
- * @param reqGroup
- * @return boolean
- */
- protected boolean isMemberOf(Class<?> reqGroup) {
- return groups.contains(reqGroup);
- }
-
- /**
- * Get the owning class of this {@link ConstraintValidation}.
- *
- * @return Class
- */
- public Class<?> getOwner() {
- return owner;
- }
-
- /**
- * {@inheritDoc}
- */
- public T getAnnotation() {
- return annotation;
- }
-
- /**
- * Get the {@link AccessStrategy} used by this {@link ConstraintValidation}.
- *
- * @return {@link AccessStrategy}
- */
- public AccessStrategy getAccess() {
- return access;
- }
-
- /**
- * Override the Annotation set at construction.
- *
- * @param annotation
- */
- public void setAnnotation(T annotation) {
- this.annotation = annotation;
- }
-
- // ///////////////////////// ConstraintDescriptor implementation
-
- /**
- * {@inheritDoc}
- */
- public Map<String, Object> getAttributes() {
- return attributes;
- }
-
- /**
- * {@inheritDoc}
- */
- @SuppressWarnings("unchecked")
- public Set<ConstraintDescriptor<?>> getComposingConstraints() {
- return composedConstraints == null ? Collections.EMPTY_SET : composedConstraints;
- }
-
- /**
- * Get the composing {@link ConstraintValidation} objects. This is
- * effectively an implementation-specific analogue to
- * {@link #getComposingConstraints()}.
- *
- * @return {@link Set} of {@link ConstraintValidation}
- */
- @SuppressWarnings("unchecked")
- Set<ConstraintValidation<?>> getComposingValidations() {
- return composedConstraints == null ? Collections.EMPTY_SET : composedConstraints;
- }
-
- /**
- * {@inheritDoc}
- */
- public Set<Class<?>> getGroups() {
- return groups;
- }
-
- /**
- * {@inheritDoc}
- */
- public Set<Class<? extends Payload>> getPayload() {
- return payload;
- }
-
- /**
- * {@inheritDoc}
- */
- public List<Class<? extends ConstraintValidator<T, ?>>> getConstraintValidatorClasses() {
- if (validatorClasses == null) {
- return Collections.emptyList();
- }
- return Arrays.asList(validatorClasses);
- }
-
-}
diff --git a/trunk/bval-jsr303/src/main/java/org/apache/bval/jsr303/ConstraintValidationListener.java b/trunk/bval-jsr303/src/main/java/org/apache/bval/jsr303/ConstraintValidationListener.java
deleted file mode 100644
index cf0972b..0000000
--- a/trunk/bval-jsr303/src/main/java/org/apache/bval/jsr303/ConstraintValidationListener.java
+++ /dev/null
@@ -1,175 +0,0 @@
-/*
- * 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.bval.jsr303;
-
-
-import org.apache.bval.jsr303.util.PathImpl;
-import org.apache.bval.model.ValidationContext;
-import org.apache.bval.model.ValidationListener;
-
-import javax.validation.ConstraintViolation;
-import javax.validation.MessageInterpolator;
-import javax.validation.Path;
-import javax.validation.metadata.ConstraintDescriptor;
-import java.lang.annotation.ElementType;
-import java.util.HashSet;
-import java.util.Set;
-
-/**
- * Description: JSR-303 {@link ValidationListener} implementation; provides {@link ConstraintViolation}s.<br/>
- *
- * @version $Rev$ $Date$
- */
-public final class ConstraintValidationListener<T> implements ValidationListener {
- private final Set<ConstraintViolation<T>> constraintViolations = new HashSet<ConstraintViolation<T>>();
- private final T rootBean;
- private final Class<T> rootBeanType;
- // the validation process is single-threaded and it's unlikely to change in the near future (otherwise use AtomicInteger).
- private int compositeDepth = 0;
- private boolean hasCompositeError;
-
- /**
- * Create a new ConstraintValidationListener instance.
- * @param aRootBean
- * @param rootBeanType
- */
- public ConstraintValidationListener(T aRootBean, Class<T> rootBeanType) {
- this.rootBean = aRootBean;
- this.rootBeanType = rootBeanType;
- }
-
- /**
- * {@inheritDoc}
- */
- public <VL extends ValidationListener> void addError(String reason, ValidationContext<VL> context) {
- addError(reason, null, context);
- }
-
- /**
- * {@inheritDoc}
- */
- public <VL extends ValidationListener> void addError(Error error, ValidationContext<VL> context) {
- if (error.getOwner() instanceof Path) {
- addError(error.getReason(), (Path) error.getOwner(), context);
- } else {
- addError(error.getReason(), null, context);
- }
- }
-
- private void addError(String messageTemplate, Path propPath,
- ValidationContext<?> context) {
- if (compositeDepth > 0) {
- hasCompositeError |= true;
- return;
- }
- final Object value;
-
- final ConstraintDescriptor<?> descriptor;
- final String message;
- if (context instanceof GroupValidationContext<?>) {
- GroupValidationContext<?> gcontext = (GroupValidationContext<?>) context;
- value = gcontext.getValidatedValue();
- if (gcontext instanceof MessageInterpolator.Context) {
- message = gcontext.getMessageResolver()
- .interpolate(messageTemplate,
- (MessageInterpolator.Context) gcontext);
- } else {
- message =
- gcontext.getMessageResolver().interpolate(messageTemplate, null);
- }
- descriptor = gcontext.getConstraintValidation().asSerializableDescriptor();
- if (propPath == null) propPath = gcontext.getPropertyPath();
- } else {
- if (context.getMetaProperty() == null) value = context.getBean();
- else value = context.getPropertyValue();
- message = messageTemplate;
- if (propPath == null)
- propPath = PathImpl.createPathFromString(context.getPropertyName());
- descriptor = null;
- }
- ElementType elementType = (context.getAccess() != null) ? context.getAccess().getElementType() : null;
- ConstraintViolationImpl<T> ic = new ConstraintViolationImpl<T>(messageTemplate,
- message, rootBean, context.getBean(), propPath, value, descriptor, rootBeanType, elementType);
- constraintViolations.add(ic);
- }
-
- /**
- * Get the {@link ConstraintViolation}s accumulated by this {@link ConstraintValidationListener}.
- * @return {@link Set} of {@link ConstraintViolation}
- */
- public Set<ConstraintViolation<T>> getConstraintViolations() {
- return constraintViolations;
- }
-
- /**
- * Learn whether no violations were found.
- * @return boolean
- */
- public boolean isEmpty() {
- return constraintViolations.isEmpty();
- }
-
- /**
- * Get the root bean.
- * @return T
- */
- public T getRootBean() {
- return rootBean;
- }
-
- /**
- * Get the root bean type of this {@link ConstraintValidationListener}.
- * @return Class<T>
- */
- public Class<T> getRootBeanType() {
- return rootBeanType;
- }
-
- /**
- * Get the count of encountered violations.
- * @return int
- */
- public int violationsSize() {
- return constraintViolations.size();
- }
-
- /**
- * Learn whether there are violations available.
- * If in report-as-single-violation mode, the result is scoped accordingly.
- * Note that this means you must check before exiting report-as-single-violation mode
- * @return boolean
- */
- public boolean hasViolations() {
- return compositeDepth == 0 ? !constraintViolations.isEmpty() : hasCompositeError;
- }
-
- /**
- * Signify the beginning of a report-as-single-violation composite validation.
- * @return <code>true</code> as this call caused the listener to enter report-as-single-violation mode
- */
- public boolean beginReportAsSingle() {
- return ++compositeDepth == 1;
- }
-
- /**
- * Signify the end of a report-as-single-violation composite validation.
- * @return <code>true</code> as this call caused the listener to exit report-as-single-violation mode
- */
- public boolean endReportAsSingle() {
- return --compositeDepth == 0;
- }
-}
diff --git a/trunk/bval-jsr303/src/main/java/org/apache/bval/jsr303/ConstraintValidatorContextImpl.java b/trunk/bval-jsr303/src/main/java/org/apache/bval/jsr303/ConstraintValidatorContextImpl.java
deleted file mode 100644
index cad7941..0000000
--- a/trunk/bval-jsr303/src/main/java/org/apache/bval/jsr303/ConstraintValidatorContextImpl.java
+++ /dev/null
@@ -1,160 +0,0 @@
-/*
- * 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.bval.jsr303;
-
-
-import org.apache.bval.jsr303.util.NodeBuilderDefinedContextImpl;
-import org.apache.bval.jsr303.util.NodeImpl;
-import org.apache.bval.jsr303.util.PathImpl;
-import org.apache.bval.model.ValidationListener;
-
-import javax.validation.ConstraintValidator;
-import javax.validation.ConstraintValidatorContext;
-import javax.validation.Path;
-import javax.validation.ValidationException;
-import java.util.ArrayList;
-import java.util.LinkedList;
-import java.util.List;
-
-/**
- * Description: Short-lived {@link ConstraintValidatorContext} implementation passed by
- * a {@link ConstraintValidation} to its adapted {@link ConstraintValidator}. <br/>
- */
-public class ConstraintValidatorContextImpl implements ConstraintValidatorContext {
- private final List<ValidationListener.Error> errorMessages =
- new LinkedList<ValidationListener.Error>();
-
- private final ConstraintValidation<?> constraintDescriptor;
- private final GroupValidationContext<?> validationContext;
-
- private boolean defaultDisabled;
-
- /**
- * Create a new ConstraintValidatorContextImpl instance.
- * @param validationContext
- * @param aConstraintValidation
- */
- public ConstraintValidatorContextImpl(GroupValidationContext<?> validationContext,
- ConstraintValidation<?> aConstraintValidation) {
- this.validationContext = validationContext;
- this.constraintDescriptor = aConstraintValidation;
- }
-
- /**
- * {@inheritDoc}
- */
- public void disableDefaultConstraintViolation() {
- defaultDisabled = true;
- }
-
- /**
- * {@inheritDoc}
- */
- public String getDefaultConstraintMessageTemplate() {
- return constraintDescriptor.getMessageTemplate();
- }
-
- /**
- * {@inheritDoc}
- */
- public ConstraintViolationBuilder buildConstraintViolationWithTemplate(
- String messageTemplate) {
- return new ConstraintViolationBuilderImpl(this, messageTemplate,
- validationContext.getPropertyPath());
- }
-
- private static final class ConstraintViolationBuilderImpl
- implements ConstraintValidatorContext.ConstraintViolationBuilder {
- private final ConstraintValidatorContextImpl parent;
- private final String messageTemplate;
- private final PathImpl propertyPath;
-
- /**
- * Create a new ConstraintViolationBuilderImpl instance.
- * @param contextImpl
- * @param template
- * @param path
- */
- ConstraintViolationBuilderImpl(ConstraintValidatorContextImpl contextImpl,
- String template, PathImpl path) {
- parent = contextImpl;
- messageTemplate = template;
- propertyPath = path;
- }
-
- /**
- * {@inheritDoc}
- */
- public NodeBuilderDefinedContext addNode(String name) {
- PathImpl path;
- if (propertyPath.isRootPath()) {
- path = PathImpl.create(name);
- } else {
- path = PathImpl.copy(propertyPath);
- path.addNode(new NodeImpl(name));
- }
- return new NodeBuilderDefinedContextImpl(parent, messageTemplate, path);
- }
-
- /**
- * {@inheritDoc}
- */
- public ConstraintValidatorContext addConstraintViolation() {
- parent.addError(messageTemplate, propertyPath);
- return parent;
- }
- }
-
- /**
- * Get the queued error messages.
- * @return List
- */
- public List<ValidationListener.Error> getErrorMessages() {
- if (defaultDisabled && errorMessages.isEmpty()) {
- throw new ValidationException(
- "At least one custom message must be created if the default error message gets disabled.");
- }
-
- List<ValidationListener.Error> returnedErrorMessages =
- new ArrayList<ValidationListener.Error>(errorMessages);
- if (!defaultDisabled) {
- returnedErrorMessages.add(new ValidationListener.Error(
- getDefaultConstraintMessageTemplate(), validationContext.getPropertyPath(),
- null));
- }
- return returnedErrorMessages;
- }
-
- /**
- * Get this {@link ConstraintValidatorContext}'s {@link GroupValidationContext}.
- * @return {@link GroupValidationContext}
- */
- public GroupValidationContext<?> getValidationContext() {
- return validationContext;
- }
-
- /**
- * Add an error message to this {@link ConstraintValidatorContext}.
- * @param messageTemplate
- * @param propertyPath
- */
- public void addError(String messageTemplate, Path propertyPath) {
- errorMessages.add(new ValidationListener.Error(messageTemplate, propertyPath, null));
- }
-}
diff --git a/trunk/bval-jsr303/src/main/java/org/apache/bval/jsr303/ConstraintValidatorIdentity.java b/trunk/bval-jsr303/src/main/java/org/apache/bval/jsr303/ConstraintValidatorIdentity.java
deleted file mode 100644
index 7e4b6fa..0000000
--- a/trunk/bval-jsr303/src/main/java/org/apache/bval/jsr303/ConstraintValidatorIdentity.java
+++ /dev/null
@@ -1,134 +0,0 @@
-/*
- * 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.bval.jsr303;
-
-import javax.validation.ConstraintValidator;
-import javax.validation.Path;
-
-/**
- * Class that stores the needed properties to ensure that a validation is not
- * checked more than once.
- * <p>
- * These properties are:
- * <ul>
- * <li>The ref of the bean to which the validation would be applied.</li>
- * <li>The path of the property.</li>
- * <li>The ref of the {@link ConstraintValidator}.</li>
- * </ul>
- *
- * @author Carlos Vara
- */
-final class ConstraintValidatorIdentity {
-
- private final Object bean;
- private final Path path;
- private final ConstraintValidator<?, ?> constraintValidator;
-
- /**
- * Create a new ConstraintValidatorIdentity instance.
- * @param bean
- * @param path
- * @param constraintValidator
- */
- public ConstraintValidatorIdentity(Object bean, Path path, ConstraintValidator<?, ?> constraintValidator) {
- this.bean = bean;
- this.path = path;
- this.constraintValidator = constraintValidator;
- }
-
- /**
- * Get the referenced bean.
- * @return Object
- */
- public Object getBean() {
- return bean;
- }
-
- /**
- * Get the referenced property {@link Path}.
- * @return Path
- */
- public Path getPath() {
- return path;
- }
-
- /**
- * Get the associated {@link ConstraintValidator}.
- * @return {@link ConstraintValidator}
- */
- public ConstraintValidator<?, ?> getConstraintValidator() {
- return constraintValidator;
- }
-
- /**
- * {@inheritDoc}
- */
- @Override
- public boolean equals(Object obj) {
-
- if (this == obj) {
- return true;
- }
-
- if (obj == null) {
- return false;
- }
-
- if (!(obj instanceof ConstraintValidatorIdentity)) {
- return false;
- }
-
- ConstraintValidatorIdentity other = (ConstraintValidatorIdentity) obj;
-
- // Bean ref must be the same
- if (this.bean != other.bean) {
- return false;
- }
-
- // ConstraintValidator ref must be the same
- if (this.constraintValidator != other.constraintValidator) {
- return false;
- }
-
- // Path must be equals
- if (!this.path.equals(other.path)) {
- return false;
- }
-
- return true;
- }
-
- /**
- * {@inheritDoc}
- */
- @Override
- public int hashCode() {
- final int prime = 31;
- int result = 1;
- result = prime * result
- + ((this.bean == null) ? 0 : this.bean.hashCode());
- result = prime * result
- + ((this.path == null) ? 0 : this.path.hashCode());
- result = prime * result
- + ((this.constraintValidator == null) ? 0 : this.constraintValidator.hashCode());
- return result;
- }
-
-}
diff --git a/trunk/bval-jsr303/src/main/java/org/apache/bval/jsr303/ConstraintViolationImpl.java b/trunk/bval-jsr303/src/main/java/org/apache/bval/jsr303/ConstraintViolationImpl.java
deleted file mode 100644
index 1ced366..0000000
--- a/trunk/bval-jsr303/src/main/java/org/apache/bval/jsr303/ConstraintViolationImpl.java
+++ /dev/null
@@ -1,241 +0,0 @@
-/*
- * 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.bval.jsr303;
-
-import javax.validation.ConstraintViolation;
-import javax.validation.Path;
-import javax.validation.metadata.ConstraintDescriptor;
-import java.io.Serializable;
-import java.lang.annotation.ElementType;
-
-/**
- * Description: Describe a constraint validation defect.<br/>
- * From rootBean and propertyPath, it is possible to rebuild the context of the failure
- */
-class ConstraintViolationImpl<T> implements ConstraintViolation<T>, Serializable {
- /** Serialization version */
- private static final long serialVersionUID = 1L;
-
- private final String messageTemplate;
- private final String message;
- /** root bean validation was invoked on. */
- private final T rootBean;
- private final Class<T> rootBeanClass;
- /** last bean validated. */
- private final Object leafBean;
- private final Object value;
- private final Path propertyPath;
- private final ElementType elementType;
- private final ConstraintDescriptor<?> constraintDescriptor;
-
- /**
- * Create a new ConstraintViolationImpl instance.
- * @param messageTemplate - message reason (raw message)
- * @param message - interpolated message (locale specific)
- * @param rootBean
- * @param leafBean
- * @param propertyPath
- * @param value
- * @param constraintDescriptor
- * @param rootBeanClass
- * @param elementType
- */
- public ConstraintViolationImpl(String messageTemplate, String message, T rootBean, Object leafBean,
- Path propertyPath, Object value,
- ConstraintDescriptor<?> constraintDescriptor, Class<T> rootBeanClass, ElementType elementType) {
- this.messageTemplate = messageTemplate;
- this.message = message;
- this.rootBean = rootBean;
- this.rootBeanClass = rootBeanClass;
- this.propertyPath = propertyPath;
- this.leafBean = leafBean;
- this.value = value;
- this.constraintDescriptor = constraintDescriptor;
- this.elementType = elementType;
- }
-
- /**
- * {@inheritDoc}
- * former name getInterpolatedMessage()
- * @return The interpolated error message for this constraint violation.
- */
- public String getMessage() {
- return message;
- }
-
- /**
- * {@inheritDoc}
- */
- public String getMessageTemplate() {
- return messageTemplate;
- }
-
- /**
- * {@inheritDoc}
- * @return Root bean being validated
- */
- public T getRootBean() {
- return rootBean;
- }
-
- /**
- * {@inheritDoc}
- */
- public Class<T> getRootBeanClass() {
- return rootBeanClass;
- }
-
- /**
- * {@inheritDoc}
- */
- public Object getLeafBean() {
- return leafBean;
- }
-
- /**
- * {@inheritDoc}
- * @return The value failing to pass the constraint
- */
- public Object getInvalidValue() {
- return value;
- }
-
- /**
- * {@inheritDoc}
- * @return the property path to the value from <code>rootBean</code>
- * Null if the value is the rootBean itself
- */
- public Path getPropertyPath() {
- return propertyPath;
- }
-
- /**
- * {@inheritDoc}
- */
- public ConstraintDescriptor<?> getConstraintDescriptor() {
- return constraintDescriptor;
- }
-
- /**
- * {@inheritDoc}
- */
- @Override
- public String toString() {
- return "ConstraintViolationImpl{" + "rootBean=" + rootBean + ", propertyPath='" +
- propertyPath + '\'' + ", message='" + message + '\'' + ", leafBean=" +
- leafBean + ", value=" + value + '}';
- }
-
- /**
- * {@inheritDoc}
- */
- @Override
- public int hashCode() {
- final int prime = 31;
- int result = 1;
- result = prime * result
- + ((this.leafBean == null) ? 0 : this.leafBean.hashCode());
- result = prime * result
- + ((this.message == null) ? 0 : this.message.hashCode());
- result = prime
- * result
- + ((this.propertyPath == null) ? 0 : this.propertyPath
- .hashCode());
- result = prime * result
- + ((this.rootBean == null) ? 0 : this.rootBean.hashCode());
- result = prime * result
- + ((this.value == null) ? 0 : this.value.hashCode());
- result = prime * result
- + ((this.elementType == null) ? 0 : this.elementType.hashCode());
- return result;
- }
-
- /**
- * {@inheritDoc}
- * NOTE: Needed to avoid duplication in the reported violations.
- *
- * @param obj the reference object with which to compare.
- * @return <code>true</code> if this object is the same as the obj
- * argument; <code>false</code> otherwise.
- */
- @Override
- public boolean equals(Object obj) {
- if (this == obj) {
- return true;
- }
- if (obj == null) {
- return false;
- }
- if (!(obj instanceof ConstraintViolationImpl<?>)) {
- return false;
- }
-
- ConstraintViolationImpl<?> other = (ConstraintViolationImpl<?>) obj;
-
- if (this.leafBean == null) {
- if (other.leafBean != null) {
- return false;
- }
- } else if (!this.leafBean.equals(other.leafBean)) {
- return false;
- }
-
- if (this.message == null) {
- if (other.message != null) {
- return false;
- }
- } else if (!this.message.equals(other.message)) {
- return false;
- }
-
- if (this.propertyPath == null) {
- if (other.propertyPath != null) {
- return false;
- }
- } else if (!this.propertyPath.equals(other.propertyPath)) {
- return false;
- }
-
- if (this.rootBean == null) {
- if (other.rootBean != null) {
- return false;
- }
- } else if (!this.rootBean.equals(other.rootBean)) {
- return false;
- }
-
- if (this.rootBeanClass != other.rootBeanClass) {
- return false;
- }
-
- if (this.value == null) {
- if (other.value != null) {
- return false;
- }
- } else if (!this.value.equals(other.value)) {
- return false;
- }
-
- if (this.elementType != other.elementType) {
- return false;
- }
-
- return true;
- }
-
-
-}
diff --git a/trunk/bval-jsr303/src/main/java/org/apache/bval/jsr303/DefaultConstraintValidatorFactory.java b/trunk/bval-jsr303/src/main/java/org/apache/bval/jsr303/DefaultConstraintValidatorFactory.java
deleted file mode 100644
index a67ff7b..0000000
--- a/trunk/bval-jsr303/src/main/java/org/apache/bval/jsr303/DefaultConstraintValidatorFactory.java
+++ /dev/null
@@ -1,50 +0,0 @@
-/*
- * 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.bval.jsr303;
-
-import javax.validation.ConstraintValidator;
-import javax.validation.ConstraintValidatorFactory;
-import javax.validation.ValidationException;
-
-
-/**
- * Description: create constraint instances with the default / no-arg constructor <br/>
- */
-public class DefaultConstraintValidatorFactory implements ConstraintValidatorFactory {
-
- /**
- * Instantiate a Constraint.
- *
- * @return Returns a new Constraint instance
- * The ConstraintFactory is <b>not</b> responsible for calling Constraint#initialize
- */
- public <T extends ConstraintValidator<?, ?>> T getInstance(final Class<T> constraintClass)
- {
- // 2011-03-27 jw: Do not use PrivilegedAction.
- // Otherwise any user code would be executed with the privileges of this class.
- try
- {
- return constraintClass.newInstance();
- }
- catch (final Exception ex)
- {
- throw new ValidationException("Cannot instantiate : " + constraintClass, ex);
- }
- }
-}
diff --git a/trunk/bval-jsr303/src/main/java/org/apache/bval/jsr303/DefaultMessageInterpolator.java b/trunk/bval-jsr303/src/main/java/org/apache/bval/jsr303/DefaultMessageInterpolator.java
deleted file mode 100644
index 0a341a6..0000000
--- a/trunk/bval-jsr303/src/main/java/org/apache/bval/jsr303/DefaultMessageInterpolator.java
+++ /dev/null
@@ -1,323 +0,0 @@
-/*
- * 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.bval.jsr303;
-
-import java.security.AccessController;
-import java.security.PrivilegedAction;
-import java.util.Locale;
-import java.util.Map;
-import java.util.MissingResourceException;
-import java.util.ResourceBundle;
-import java.util.concurrent.ConcurrentHashMap;
-import java.util.logging.Level;
-import java.util.logging.Logger;
-import java.util.regex.Matcher;
-import java.util.regex.Pattern;
-
-import javax.validation.MessageInterpolator;
-
-import org.apache.bval.jsr303.util.SecureActions;
-import org.apache.commons.lang3.ArrayUtils;
-
-/**
- * Description: Resource bundle backed message interpolator.
- * This message resolver resolve message descriptors
- * into human-readable messages. It uses ResourceBundles to find the messages.
- * This class is threadsafe.<br/>
- */
-public class DefaultMessageInterpolator implements MessageInterpolator {
- private static final Logger log = Logger.getLogger(DefaultMessageInterpolator.class.getName());
- private static final String DEFAULT_VALIDATION_MESSAGES =
- "org.apache.bval.jsr303.ValidationMessages";
- private static final String USER_VALIDATION_MESSAGES = "ValidationMessages";
-
- /** Regular expression used to do message interpolation. */
- private static final Pattern messageParameterPattern =
- Pattern.compile("(\\{[\\w\\.]+\\})");
-
- /** The default locale for the current user. */
- private Locale defaultLocale;
-
- /** User specified resource bundles hashed against their locale. */
- private final Map<Locale, ResourceBundle> userBundlesMap =
- new ConcurrentHashMap<Locale, ResourceBundle>();
-
- /** Builtin resource bundles hashed against their locale. */
- private final Map<Locale, ResourceBundle> defaultBundlesMap =
- new ConcurrentHashMap<Locale, ResourceBundle>();
-
- /**
- * Create a new DefaultMessageInterpolator instance.
- */
- public DefaultMessageInterpolator() {
- this(null);
- }
-
- /**
- * Create a new DefaultMessageInterpolator instance.
- * @param resourceBundle
- */
- public DefaultMessageInterpolator(ResourceBundle resourceBundle) {
-
- defaultLocale = Locale.getDefault();
-
- if (resourceBundle == null) {
- ResourceBundle bundle = getFileBasedResourceBundle(defaultLocale);
- if (bundle != null) {
- userBundlesMap.put(defaultLocale, bundle);
- }
-
- } else {
- userBundlesMap.put(defaultLocale, resourceBundle);
- }
-
- defaultBundlesMap.put(defaultLocale,
- ResourceBundle.getBundle(DEFAULT_VALIDATION_MESSAGES, defaultLocale));
- }
-
- /** {@inheritDoc} */
- public String interpolate(String message, Context context) {
- // probably no need for caching, but it could be done by parameters since the map
- // is immutable and uniquely built per Validation definition, the comparison has to be based on == and not equals though
- return interpolate(message, context, defaultLocale);
- }
-
- /** {@inheritDoc} */
- public String interpolate(String message, Context context, Locale locale) {
- return interpolateMessage(message,
- context.getConstraintDescriptor().getAttributes(), locale);
- }
-
- /**
- * Runs the message interpolation according to algorithm specified in JSR 303.
- * <br/>
- * Note:
- * <br/>
- * Lookups in user bundles are recursive whereas lookups in default bundle are not!
- *
- * @param message the message to interpolate
- * @param annotationParameters the parameters of the annotation for which to interpolate this message
- * @param locale the <code>Locale</code> to use for the resource bundle.
- * @return the interpolated message.
- */
- private String interpolateMessage(String message,
- Map<String, Object> annotationParameters,
- Locale locale) {
- ResourceBundle userResourceBundle = findUserResourceBundle(locale);
- ResourceBundle defaultResourceBundle = findDefaultResourceBundle(locale);
-
- String userBundleResolvedMessage;
- String resolvedMessage = message;
- boolean evaluatedDefaultBundleOnce = false;
- do {
- // search the user bundle recursive (step1)
- userBundleResolvedMessage =
- replaceVariables(resolvedMessage, userResourceBundle, locale, true);
-
- // exit condition - we have at least tried to validate against the default bundle and there were no
- // further replacements
- if (evaluatedDefaultBundleOnce &&
- !hasReplacementTakenPlace(userBundleResolvedMessage, resolvedMessage)) {
- break;
- }
-
- // search the default bundle non recursive (step2)
- resolvedMessage = replaceVariables(userBundleResolvedMessage,
- defaultResourceBundle, locale, false);
-
- evaluatedDefaultBundleOnce = true;
- } while (true);
-
- // resolve annotation attributes (step 4)
- resolvedMessage =
- replaceAnnotationAttributes(resolvedMessage, annotationParameters);
-
- // curly braces need to be scaped in the original msg, so unescape them now
- resolvedMessage = resolvedMessage.replace( "\\{", "{" ).replace( "\\}", "}" ).replace( "\\\\", "\\" );
-
- return resolvedMessage;
- }
-
- private boolean hasReplacementTakenPlace(String origMessage, String newMessage) {
- return !origMessage.equals(newMessage);
- }
-
- /**
- * Search current thread classloader for the resource bundle. If not found, search validator (this) classloader.
- *
- * @param locale The locale of the bundle to load.
- * @return the resource bundle or <code>null</code> if none is found.
- */
- private ResourceBundle getFileBasedResourceBundle(Locale locale) {
- ResourceBundle rb = null;
- final ClassLoader classLoader = doPrivileged(SecureActions.getContextClassLoader());
- if (classLoader != null) {
- rb = loadBundle(classLoader, locale,
- USER_VALIDATION_MESSAGES + " not found by thread local classloader");
- }
-
- // 2011-03-27 jw: No privileged action required.
- // A class can always access the classloader of itself and of subclasses.
- if (rb == null) {
- rb = loadBundle(
- getClass().getClassLoader(),
- locale,
- USER_VALIDATION_MESSAGES + " not found by validator classloader"
- );
- }
- if (rb != null) {
- log.log(Level.FINEST, String.format("%s found", USER_VALIDATION_MESSAGES));
- } else {
- log.log(Level.FINEST, String.format("%s not found. Delegating to %s", USER_VALIDATION_MESSAGES, DEFAULT_VALIDATION_MESSAGES));
- }
- return rb;
- }
-
- private ResourceBundle loadBundle(ClassLoader classLoader, Locale locale,
- String message) {
- ResourceBundle rb = null;
- try {
- rb = ResourceBundle.getBundle(USER_VALIDATION_MESSAGES, locale, classLoader);
- } catch (MissingResourceException e) {
- log.fine(message);
- }
- return rb;
- }
-
- private String replaceVariables(String message, ResourceBundle bundle, Locale locale,
- boolean recurse) {
- Matcher matcher = messageParameterPattern.matcher(message);
- StringBuffer sb = new StringBuffer(64);
- String resolvedParameterValue;
- while (matcher.find()) {
- String parameter = matcher.group(1);
- resolvedParameterValue = resolveParameter(parameter, bundle, locale, recurse);
-
- matcher.appendReplacement(sb, sanitizeForAppendReplacement(resolvedParameterValue));
- }
- matcher.appendTail(sb);
- return sb.toString();
- }
-
- private String replaceAnnotationAttributes(String message,
- Map<String, Object> annotationParameters) {
- Matcher matcher = messageParameterPattern.matcher(message);
- StringBuffer sb = new StringBuffer(64);
- while (matcher.find()) {
- String resolvedParameterValue;
- String parameter = matcher.group(1);
- Object variable = annotationParameters.get(removeCurlyBrace(parameter));
- if (variable != null) {
- if (variable.getClass().isArray()) {
- resolvedParameterValue = ArrayUtils.toString(variable);
- } else {
- resolvedParameterValue = variable.toString();
- }
- } else {
- resolvedParameterValue = parameter;
- }
- matcher.appendReplacement(sb, sanitizeForAppendReplacement(resolvedParameterValue));
- }
- matcher.appendTail(sb);
- return sb.toString();
- }
-
- private String resolveParameter(String parameterName, ResourceBundle bundle,
- Locale locale, boolean recurse) {
- String parameterValue;
- try {
- if (bundle != null) {
- parameterValue = bundle.getString(removeCurlyBrace(parameterName));
- if (recurse) {
- parameterValue =
- replaceVariables(parameterValue, bundle, locale, recurse);
- }
- } else {
- parameterValue = parameterName;
- }
- } catch (MissingResourceException e) {
- // return parameter itself
- parameterValue = parameterName;
- }
- return parameterValue;
- }
-
- private String removeCurlyBrace(String parameter) {
- return parameter.substring(1, parameter.length() - 1);
- }
-
- private ResourceBundle findDefaultResourceBundle(Locale locale) {
- ResourceBundle bundle = defaultBundlesMap.get(locale);
- if (bundle == null)
- {
- bundle = ResourceBundle.getBundle(DEFAULT_VALIDATION_MESSAGES, locale);
- defaultBundlesMap.put(locale, bundle);
- }
- return bundle;
- }
-
- private ResourceBundle findUserResourceBundle(Locale locale) {
- ResourceBundle bundle = userBundlesMap.get(locale);
- if (bundle == null)
- {
- bundle = getFileBasedResourceBundle(locale);
- if (bundle != null) {
- userBundlesMap.put(locale, bundle);
- }
- }
- return bundle;
- }
-
- /**
- * Set the default locale used by this {@link DefaultMessageInterpolator}.
- * @param locale
- */
- public void setLocale(Locale locale) {
- defaultLocale = locale;
- }
-
- /**
- * Escapes the string to comply with
- * {@link Matcher#appendReplacement(StringBuffer, String)} requirements.
- *
- * @param src
- * The original string.
- * @return The sanitized string.
- */
- private String sanitizeForAppendReplacement(String src) {
- return src.replace("\\", "\\\\").replace("$", "\\$");
- }
-
-
-
- /**
- * Perform action with AccessController.doPrivileged() if a security manager is installed.
- *
- * @param action
- * the action to run
- * @return
- * result of the action
- */
- private static <T> T doPrivileged(final PrivilegedAction<T> action) {
- if (System.getSecurityManager() != null) {
- return AccessController.doPrivileged(action);
- } else {
- return action.run();
- }
- }
-
-}
diff --git a/trunk/bval-jsr303/src/main/java/org/apache/bval/jsr303/DefaultValidationProviderResolver.java b/trunk/bval-jsr303/src/main/java/org/apache/bval/jsr303/DefaultValidationProviderResolver.java
deleted file mode 100644
index 30e6333..0000000
--- a/trunk/bval-jsr303/src/main/java/org/apache/bval/jsr303/DefaultValidationProviderResolver.java
+++ /dev/null
@@ -1,98 +0,0 @@
-/*
- * 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.bval.jsr303;
-
-
-import javax.validation.ValidationException;
-import javax.validation.ValidationProviderResolver;
-import javax.validation.spi.ValidationProvider;
-import java.io.BufferedReader;
-import java.io.IOException;
-import java.io.InputStreamReader;
-import java.net.URL;
-import java.security.AccessController;
-import java.security.PrivilegedAction;
-import java.util.ArrayList;
-import java.util.Enumeration;
-import java.util.List;
-
-public class DefaultValidationProviderResolver implements ValidationProviderResolver {
-
- //TODO - Spec recommends caching per classloader
- private static final String SPI_CFG =
- "META-INF/services/javax.validation.spi.ValidationProvider";
-
- /**
- * {@inheritDoc}
- */
- public List<ValidationProvider<?>> getValidationProviders() {
- List<ValidationProvider<?>> providers = new ArrayList<ValidationProvider<?>>();
- try {
- // get our classloader
- ClassLoader cl = Thread.currentThread().getContextClassLoader();
- if (cl == null)
- cl = DefaultValidationProviderResolver.class.getClassLoader();
- // find all service provider cfgs
- Enumeration<URL> cfgs = cl.getResources(SPI_CFG);
- while (cfgs.hasMoreElements()) {
- URL url = cfgs.nextElement();
- BufferedReader br = null;
- try {
- br = new BufferedReader(new InputStreamReader(url.openStream()), 256);
- String line = br.readLine();
- // cfgs may contain multiple providers and/or comments
- while (line != null) {
- line = line.trim();
- if (!line.startsWith("#")) {
- try {
- // try loading the specified class
- final Class<?> provider = cl.loadClass(line);
- // create an instance to return
- ValidationProvider<?> vp =
- AccessController.doPrivileged(new PrivilegedAction<ValidationProvider<?>>() {
- public ValidationProvider<?> run() {
- try {
- return (ValidationProvider<?>) provider.newInstance();
- } catch (final Exception ex) {
- throw new ValidationException("Cannot instantiate : " + provider, ex);
- }
- }
- });
- providers.add(vp);
-
- } catch (ClassNotFoundException e) {
- throw new ValidationException("Failed to load provider " +
- line + " configured in file " + url, e);
- }
- }
- line = br.readLine();
- }
- br.close();
- } catch (IOException e) {
- throw new ValidationException("Error trying to read " + url, e);
- } finally {
- if (br != null)
- br.close();
- }
- }
- } catch (IOException e) {
- throw new ValidationException("Error trying to read a " + SPI_CFG, e);
- }
- // caller must handle the case of no providers found
- return providers;
- }
-}
diff --git a/trunk/bval-jsr303/src/main/java/org/apache/bval/jsr303/ElementDescriptorImpl.java b/trunk/bval-jsr303/src/main/java/org/apache/bval/jsr303/ElementDescriptorImpl.java
deleted file mode 100644
index 7804e5b..0000000
--- a/trunk/bval-jsr303/src/main/java/org/apache/bval/jsr303/ElementDescriptorImpl.java
+++ /dev/null
@@ -1,141 +0,0 @@
-/*
- * 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.bval.jsr303;
-
-import org.apache.bval.model.MetaBean;
-import org.apache.bval.model.Validation;
-
-import javax.validation.metadata.ConstraintDescriptor;
-import javax.validation.metadata.ElementDescriptor;
-import java.util.Collections;
-import java.util.HashSet;
-import java.util.Set;
-
-/**
- * Description: MetaData class<br/>
- */
-public abstract class ElementDescriptorImpl implements ElementDescriptor {
-
- /**
- * Get a set of {@link ConstraintDescriptor}s from the specified array of
- * {@link Validation}s.
- *
- * @param validations
- * @return {@link ConstraintDescriptor} set
- */
- protected static Set<ConstraintDescriptor<?>> getConstraintDescriptors(Validation[] validations) {
- final Set<ConstraintDescriptor<?>> result = new HashSet<ConstraintDescriptor<?>>(validations.length);
- for (Validation validation : validations) {
- if (validation instanceof ConstraintValidation<?>) {
- result.add((ConstraintValidation<?>) validation);
- }
- }
- return result;
- }
-
- /** the MetaBean of this element */
- protected final MetaBean metaBean;
-
- /** the raw type of this element */
- protected final Class<?> elementClass;
-
- private Set<ConstraintDescriptor<?>> constraintDescriptors;
-
- /**
- * Create a new ElementDescriptorImpl instance.
- *
- * @param metaBean
- * @param elementClass
- * @param validations
- */
- protected ElementDescriptorImpl(MetaBean metaBean, Class<?> elementClass, Validation[] validations) {
- this.metaBean = metaBean;
- this.elementClass = elementClass;
- setConstraintDescriptors(getConstraintDescriptors(validations));
- }
-
- /**
- * Create a new ElementDescriptorImpl instance.
- *
- * @param elementClass
- * @param validations
- */
- protected ElementDescriptorImpl(Class<?> elementClass, Validation[] validations) {
- this(null, elementClass, validations);
- }
-
- /**
- * {@inheritDoc}
- *
- * @return Statically defined returned type.
- */
- public Class<?> getElementClass() {
- return elementClass;
- }
-
- /**
- * {@inheritDoc}
- */
- @SuppressWarnings({"unchecked", "rawtypes"})
- public ElementDescriptor.ConstraintFinder findConstraints() {
- return new ConstraintFinderImpl(metaBean, new HashSet((Set) constraintDescriptors));
- }
-
- /**
- * {@inheritDoc}
- */
- public Set<ConstraintDescriptor<?>> getConstraintDescriptors() {
- return constraintDescriptors.isEmpty() ? Collections.<ConstraintDescriptor<?>> emptySet() : Collections
- .unmodifiableSet(constraintDescriptors);
- }
-
- /**
- * Get the mutable {@link ConstraintDescriptor} {@link Set}.
- *
- * @return Set of {@link ConstraintDescriptor}
- */
- protected Set<ConstraintDescriptor<?>> getMutableConstraintDescriptors() {
- return constraintDescriptors;
- }
-
- /**
- * {@inheritDoc} return true if at least one constraint declaration is
- * present on the element.
- */
- public boolean hasConstraints() {
- return !getConstraintDescriptors().isEmpty();
- }
-
- /**
- * Set the constraintDescriptors for this element.
- *
- * @param constraintDescriptors
- * to set
- */
- public void setConstraintDescriptors(Set<ConstraintDescriptor<?>> constraintDescriptors) {
- this.constraintDescriptors = constraintDescriptors;
- }
-
- /**
- * Get the model {@link MetaBean} used.
- *
- * @return MetaBean
- */
- public MetaBean getMetaBean() {
- return metaBean;
- }
-}
diff --git a/trunk/bval-jsr303/src/main/java/org/apache/bval/jsr303/GraphBeanIdentity.java b/trunk/bval-jsr303/src/main/java/org/apache/bval/jsr303/GraphBeanIdentity.java
deleted file mode 100644
index 358bbab..0000000
--- a/trunk/bval-jsr303/src/main/java/org/apache/bval/jsr303/GraphBeanIdentity.java
+++ /dev/null
@@ -1,133 +0,0 @@
-/*
- * 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.bval.jsr303;
-
-/**
- * Class that stores the needed properties to avoid circular paths when
- * validating an object graph.
- * <p>
- * These properties are:
- * <ul>
- * <li>The ref of the bean to which the validation would be applied.</li>
- * <li>The current group being validated.</li>
- * </ul>
- *
- * FIXME: Owner is currently not used in identity checking, and probably
- * never will be. So it is likely to be deleted.
- *
- * @author Carlos Vara
- */
-public class GraphBeanIdentity {
-
- private final Object bean;
- private final Class<?> group;
- private final Class<?> owner;
-
- /**
- * Create a new GraphBeanIdentity instance.
- * @param bean
- * @param group
- * @param owner
- */
- public GraphBeanIdentity(Object bean, Class<?> group, Class<?> owner) {
- this.bean = bean;
- this.group = group;
- this.owner = owner;
- }
-
- /**
- * Get the bean.
- * @return Object
- */
- public Object getBean() {
- return bean;
- }
-
- /**
- * Get the group being validated.
- * @return Class
- */
- public Class<?> getGroup() {
- return group;
- }
-
- /**
- * Get the owning class
- * @return
- */
- public Class<?> getOwner() {
- return owner;
- }
-
- /**
- * {@inheritDoc}
- */
- @Override
- public boolean equals(Object obj) {
-
- if (this == obj) {
- return true;
- }
-
- if (obj == null) {
- return false;
- }
-
- if (!(obj instanceof GraphBeanIdentity)) {
- return false;
- }
-
- GraphBeanIdentity other = (GraphBeanIdentity) obj;
-
- // Bean ref must be the same
- if (this.bean != other.bean) {
- return false;
- }
-
- // Group ref must be the same
- if (this.group != other.group) {
- return false;
- }
-
-// // Owner ref must be the same
-// if (this.owner != other.owner) {
-// return false;
-// }
-
- return true;
- }
-
- /**
- * {@inheritDoc}
- */
- @Override
- public int hashCode() {
- final int prime = 31;
- int result = 1;
- result = prime * result
- + ((this.bean == null) ? 0 : this.bean.hashCode());
- result = prime * result
- + ((this.group == null) ? 0 : this.group.hashCode());
-// result = prime * result
-// + ((this.owner == null) ? 0 : this.owner.hashCode());
- return result;
- }
-
-
-}
diff --git a/trunk/bval-jsr303/src/main/java/org/apache/bval/jsr303/GroupValidationContext.java b/trunk/bval-jsr303/src/main/java/org/apache/bval/jsr303/GroupValidationContext.java
deleted file mode 100644
index 808a51c..0000000
--- a/trunk/bval-jsr303/src/main/java/org/apache/bval/jsr303/GroupValidationContext.java
+++ /dev/null
@@ -1,122 +0,0 @@
-/*
- * 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.bval.jsr303;
-
-
-import org.apache.bval.jsr303.groups.Group;
-import org.apache.bval.jsr303.groups.Groups;
-import org.apache.bval.jsr303.util.PathImpl;
-import org.apache.bval.model.MetaBean;
-import org.apache.bval.model.ValidationContext;
-
-import javax.validation.ConstraintValidator;
-import javax.validation.MessageInterpolator;
-import javax.validation.TraversableResolver;
-
-/**
- * Description: JSR-303 {@link ValidationContext} extension. <br/>
- */
-public interface GroupValidationContext<T>
- extends ValidationContext<ConstraintValidationListener<T>> {
-
- /**
- * Get the groups of this {@link GroupValidationContext}.
- * @return the groups in their sequence for validation
- */
- Groups getGroups();
-
- /**
- * Set the current {@link Group}.
- * @param group to set
- */
- void setCurrentGroup(Group group);
-
- /**
- * Get the current {@link Group}.
- * @return Group
- */
- Group getCurrentGroup();
-
- /**
- * Get the property path.
- * @return {@link PathImpl}
- */
- PathImpl getPropertyPath();
-
- /**
- * Get the root {@link MetaBean}.
- * @return {@link MetaBean}
- */
- MetaBean getRootMetaBean();
-
- /**
- * Set the {@link ConstraintValidation}.
- * @param constraint to set
- */
- void setConstraintValidation(ConstraintValidation<?> constraint);
-
- /**
- * Get the {@link ConstraintValidation}.
- * @return {@link ConstraintValidation}
- */
- ConstraintValidation<?> getConstraintValidation();
-
- /**
- * Get the value being validated.
- * @return Object
- */
- Object getValidatedValue();
-
- /**
- * Set a fixed value for the context.
- * @param value to set
- */
- void setFixedValue(Object value);
-
- /**
- * Get the message resolver.
- * @return {@link MessageInterpolator}
- */
- MessageInterpolator getMessageResolver();
-
- /**
- * Get the {@link TraversableResolver}.
- * @return {@link TraversableResolver}
- */
- TraversableResolver getTraversableResolver();
-
- /**
- * Accumulate a validated constraint.
- * @param constraint
- * @return true when the constraint for the object in this path was not
- * already validated in this context
- */
- boolean collectValidated(ConstraintValidator<?, ?> constraint);
-
- /**
- * Get the current owning class.
- * @return Class
- */
- Class<?> getCurrentOwner();
-
- /**
- * Set the current owning class.
- * @param currentOwner to set
- */
- void setCurrentOwner(Class<?> currentOwner);
-
-}
diff --git a/trunk/bval-jsr303/src/main/java/org/apache/bval/jsr303/GroupValidationContextImpl.java b/trunk/bval-jsr303/src/main/java/org/apache/bval/jsr303/GroupValidationContextImpl.java
deleted file mode 100644
index 3bb5090..0000000
--- a/trunk/bval-jsr303/src/main/java/org/apache/bval/jsr303/GroupValidationContextImpl.java
+++ /dev/null
@@ -1,291 +0,0 @@
-/*
- * 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.bval.jsr303;
-
-import org.apache.bval.BeanValidationContext;
-import org.apache.bval.jsr303.groups.Group;
-import org.apache.bval.jsr303.groups.Groups;
-import org.apache.bval.jsr303.resolver.CachingTraversableResolver;
-import org.apache.bval.jsr303.util.NodeImpl;
-import org.apache.bval.jsr303.util.PathImpl;
-import org.apache.bval.model.MetaBean;
-import org.apache.bval.model.MetaProperty;
-import org.apache.bval.util.AccessStrategy;
-
-import javax.validation.ConstraintValidator;
-import javax.validation.MessageInterpolator;
-import javax.validation.TraversableResolver;
-import javax.validation.metadata.ConstraintDescriptor;
-import java.util.HashMap;
-import java.util.HashSet;
-import java.util.Set;
-
-/**
- * Description: instance per validation process, not thread-safe<br/>
- */
-final class GroupValidationContextImpl<T> extends BeanValidationContext<ConstraintValidationListener<T>> implements
- GroupValidationContext<T>, MessageInterpolator.Context {
-
- private final MessageInterpolator messageResolver;
- private final PathImpl path;
- private final MetaBean rootMetaBean;
-
- /**
- * the groups in the sequence of validation to take place
- */
- private Groups groups;
- /**
- * the current group during the validation process
- */
- private Group currentGroup;
-
- private Class<?> currentOwner;
-
- /**
- * contains the validation constraints that have already been processed
- * during this validation routine (as part of a previous group match)
- */
- private HashSet<ConstraintValidatorIdentity> validatedConstraints = new HashSet<ConstraintValidatorIdentity>();
-
- private ConstraintValidation<?> constraintValidation;
- private final TraversableResolver traversableResolver;
-
- /**
- * Create a new GroupValidationContextImpl instance.
- *
- * @param listener
- * @param aMessageResolver
- * @param traversableResolver
- * @param rootMetaBean
- */
- public GroupValidationContextImpl(ConstraintValidationListener<T> listener, MessageInterpolator aMessageResolver,
- TraversableResolver traversableResolver, MetaBean rootMetaBean) {
- // inherited variable 'validatedObjects' is of type:
- // HashMap<GraphBeanIdentity, Set<PathImpl>> in this class
- super(listener, new HashMap<GraphBeanIdentity, Set<PathImpl>>());
- this.messageResolver = aMessageResolver;
- this.traversableResolver = CachingTraversableResolver.cacheFor(traversableResolver);
- this.rootMetaBean = rootMetaBean;
- this.path = PathImpl.create(null);
- }
-
- /**
- * {@inheritDoc}
- */
- @Override
- public void setCurrentIndex(Integer index) {
- NodeImpl leaf = path.getLeafNode();
- if (leaf.getName() == null) {
- leaf.setIndex(index);
- } else {
- path.addNode(NodeImpl.atIndex(index));
- }
- }
-
- /**
- * {@inheritDoc}
- */
- @Override
- public void setCurrentKey(Object key) {
- NodeImpl leaf = path.getLeafNode();
- if (leaf.getName() == null) {
- leaf.setKey(key);
- } else {
- path.addNode(NodeImpl.atKey(key));
- }
- }
-
- /**
- * {@inheritDoc}
- */
- @Override
- public void moveDown(MetaProperty prop, AccessStrategy access) {
- path.addProperty(prop.getName());
- super.moveDown(prop, access);
- }
-
- /**
- * {@inheritDoc}
- */
- @Override
- public void moveUp(Object bean, MetaBean metaBean) {
- NodeImpl leaf = path.getLeafNode();
- if (leaf.isInIterable() && leaf.getName() != null) {
- leaf.setName(null);
- } else {
- path.removeLeafNode();
- }
- super.moveUp(bean, metaBean); // call super!
- }
-
- /**
- * {@inheritDoc} Here, state equates to bean identity + group.
- */
- @SuppressWarnings("unchecked")
- @Override
- public boolean collectValidated() {
-
- // Combination of bean+group+owner (owner is currently ignored)
- GraphBeanIdentity gbi = new GraphBeanIdentity(getBean(), getCurrentGroup().getGroup(), getCurrentOwner());
-
- Set<PathImpl> validatedPathsForGBI = (Set<PathImpl>) validatedObjects.get(gbi);
- if (validatedPathsForGBI == null) {
- validatedPathsForGBI = new HashSet<PathImpl>();
- validatedObjects.put(gbi, validatedPathsForGBI);
- }
-
- // If any of the paths is a subpath of the current path, there is a
- // circular dependency, so return false
- for (PathImpl validatedPath : validatedPathsForGBI) {
- if (path.isSubPathOf(validatedPath)) {
- return false;
- }
- }
-
- // Else, add the currentPath to the set of validatedPaths
- validatedPathsForGBI.add(PathImpl.copy(path));
- return true;
- }
-
- /**
- * {@inheritDoc}
- */
- public boolean collectValidated(ConstraintValidator<?, ?> constraint) {
- ConstraintValidatorIdentity cvi = new ConstraintValidatorIdentity(getBean(), getPropertyPath(), constraint);
- return this.validatedConstraints.add(cvi);
- }
-
- /**
- * Reset the validated constraints.
- */
- public void resetValidatedConstraints() {
- validatedConstraints.clear();
- }
-
- /**
- * {@inheritDoc} If an associated object is validated, add the association
- * field or JavaBeans property name and a dot ('.') as a prefix to the
- * previous rules. uses prop[index] in property path for elements in
- * to-many-relationships.
- *
- * @return the path in dot notation
- */
- public PathImpl getPropertyPath() {
- PathImpl currentPath = PathImpl.copy(path);
- if (getMetaProperty() != null) {
- currentPath.addProperty(getMetaProperty().getName());
- }
- return currentPath;
- }
-
- /**
- * {@inheritDoc}
- */
- public MetaBean getRootMetaBean() {
- return rootMetaBean;
- }
-
- /**
- * Set the Groups.
- *
- * @param groups
- */
- public void setGroups(Groups groups) {
- this.groups = groups;
- }
-
- /**
- * {@inheritDoc}
- */
- public Groups getGroups() {
- return groups;
- }
-
- /**
- * {@inheritDoc}
- */
- public Group getCurrentGroup() {
- return currentGroup;
- }
-
- /**
- * {@inheritDoc}
- */
- public void setCurrentGroup(Group currentGroup) {
- this.currentGroup = currentGroup;
- }
-
- /**
- * {@inheritDoc}
- */
- public void setConstraintValidation(ConstraintValidation<?> constraint) {
- constraintValidation = constraint;
- }
-
- /**
- * {@inheritDoc}
- */
- public ConstraintValidation<?> getConstraintValidation() {
- return constraintValidation;
- }
-
- /**
- * {@inheritDoc}
- */
- public ConstraintDescriptor<?> getConstraintDescriptor() {
- return constraintValidation;
- }
-
- /**
- * {@inheritDoc}
- */
- public Object getValidatedValue() {
- if (getMetaProperty() != null) {
- return getPropertyValue(constraintValidation.getAccess());
- } else {
- return getBean();
- }
- }
-
- /**
- * {@inheritDoc}
- */
- public MessageInterpolator getMessageResolver() {
- return messageResolver;
- }
-
- /**
- * {@inheritDoc}
- */
- public TraversableResolver getTraversableResolver() {
- return traversableResolver;
- }
-
- /**
- * {@inheritDoc}
- */
- public Class<?> getCurrentOwner() {
- return this.currentOwner;
- }
-
- /**
- * {@inheritDoc}
- */
- public void setCurrentOwner(Class<?> currentOwner) {
- this.currentOwner = currentOwner;
- }
-}
diff --git a/trunk/bval-jsr303/src/main/java/org/apache/bval/jsr303/IncompatiblePropertyValueException.java b/trunk/bval-jsr303/src/main/java/org/apache/bval/jsr303/IncompatiblePropertyValueException.java
deleted file mode 100644
index 8c67751..0000000
--- a/trunk/bval-jsr303/src/main/java/org/apache/bval/jsr303/IncompatiblePropertyValueException.java
+++ /dev/null
@@ -1,69 +0,0 @@
-/*
- * 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.bval.jsr303;
-
-import javax.validation.ValidationException;
-
-/**
- * Internal exception thrown when trying to validate a value for a property for which it is not assignment-compatible.
- *
- * @version $Rev: 1031833 $ $Date: 2010-11-05 16:53:03 -0500 (Fri, 05 Nov 2010) $
- *
- * @author Matt Benson
- */
-public class IncompatiblePropertyValueException extends ValidationException {
-
- private static final long serialVersionUID = 1L;
-
- /**
- * Create a new {@link IncompatiblePropertyValueException} instance.
- *
- * @param message
- */
- public IncompatiblePropertyValueException(String message) {
- super(message);
- }
-
- /**
- * Create a new IncompatiblePropertyValueException instance.
- */
- public IncompatiblePropertyValueException() {
- super();
- }
-
- /**
- * Create a new IncompatiblePropertyValueException instance.
- *
- * @param message
- * @param cause
- */
- public IncompatiblePropertyValueException(String message, Throwable cause) {
- super(message, cause);
- }
-
- /**
- * Create a new IncompatiblePropertyValueException instance.
- *
- * @param cause
- */
- public IncompatiblePropertyValueException(Throwable cause) {
- super(cause);
- }
-
-}
diff --git a/trunk/bval-jsr303/src/main/java/org/apache/bval/jsr303/Jsr303Features.java b/trunk/bval-jsr303/src/main/java/org/apache/bval/jsr303/Jsr303Features.java
deleted file mode 100644
index 4bd6990..0000000
--- a/trunk/bval-jsr303/src/main/java/org/apache/bval/jsr303/Jsr303Features.java
+++ /dev/null
@@ -1,61 +0,0 @@
-/*
- * 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.bval.jsr303;
-
-import org.apache.bval.model.Features;
-
-/**
- * Description: Contains MetaBean feature keys of additional features used in the implementation
- * of JSR303<br/>
- *
- * @see org.apache.bval.model.FeaturesCapable
- * @see org.apache.bval.model.Features
- */
-public interface Jsr303Features {
- /**
- * JSR303 Property features
- */
- interface Property extends Features.Property {
- /** INFO: cached PropertyDescriptorImpl of the property */
- String PropertyDescriptor = "PropertyDescriptor";
- /**
- * INFO: Class[] with the groups to validate a REF_CASCADE
- */
- String REF_GROUPS = "refGroups";
- }
-
- /**
- * JSR303 bean features
- */
- interface Bean extends Features.Bean {
- /**
- * INFO: List of Group(Class) for {@link javax.validation.GroupSequence#value()}
- * (redefined default group)
- **/
- String GROUP_SEQUENCE = "GroupSequence";
-
-// INFO: cached sorted Array with ValidationEntries
-// String VALIDATION_SEQUENCE = "ValidationSequence";
-
- /**
- * INFO: cached BeanDescriptorImpl of the bean
- */
- String BEAN_DESCRIPTOR = "BeanDescriptor";
- }
-}
diff --git a/trunk/bval-jsr303/src/main/java/org/apache/bval/jsr303/Jsr303MetaBeanFactory.java b/trunk/bval-jsr303/src/main/java/org/apache/bval/jsr303/Jsr303MetaBeanFactory.java
deleted file mode 100644
index 296e8b1..0000000
--- a/trunk/bval-jsr303/src/main/java/org/apache/bval/jsr303/Jsr303MetaBeanFactory.java
+++ /dev/null
@@ -1,317 +0,0 @@
-/*
- * 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.bval.jsr303;
-
-import java.lang.annotation.Annotation;
-import java.lang.reflect.Field;
-import java.lang.reflect.InvocationTargetException;
-import java.lang.reflect.Method;
-import java.security.AccessController;
-import java.security.PrivilegedAction;
-import java.util.ArrayList;
-import java.util.List;
-import java.util.logging.Level;
-import java.util.logging.Logger;
-
-import javax.validation.Constraint;
-import javax.validation.GroupDefinitionException;
-import javax.validation.GroupSequence;
-import javax.validation.ValidationException;
-import javax.validation.groups.Default;
-
-import org.apache.bval.MetaBeanFactory;
-import org.apache.bval.jsr303.groups.Group;
-import org.apache.bval.jsr303.util.ClassHelper;
-import org.apache.bval.jsr303.util.SecureActions;
-import org.apache.bval.jsr303.xml.MetaConstraint;
-import org.apache.bval.model.MetaBean;
-import org.apache.bval.model.MetaProperty;
-import org.apache.bval.util.AccessStrategy;
-import org.apache.bval.util.FieldAccess;
-import org.apache.bval.util.MethodAccess;
-
-/**
- * Description: process the class annotations for JSR303 constraint validations to build the MetaBean with information
- * from annotations and JSR303 constraint mappings (defined in xml)<br/>
- */
-public class Jsr303MetaBeanFactory implements MetaBeanFactory {
- /** Shared log instance */
- // of dubious utility as it's static :/
- protected static final Logger log = Logger.getLogger(Jsr303MetaBeanFactory.class.getName());
-
- /** {@link ApacheFactoryContext} used */
- protected final ApacheFactoryContext factoryContext;
-
- /**
- * {@link AnnotationProcessor} used.
- */
- protected AnnotationProcessor annotationProcessor;
-
- /**
- * Create a new Jsr303MetaBeanFactory instance.
- *
- * @param factoryContext
- */
- public Jsr303MetaBeanFactory(ApacheFactoryContext factoryContext) {
- this.factoryContext = factoryContext;
- this.annotationProcessor = new AnnotationProcessor(factoryContext);
- }
-
- /**
- * {@inheritDoc} Add the validation features to the metabean that come from JSR303 annotations in the beanClass.
- */
- public void buildMetaBean(MetaBean metabean) {
- try {
- final Class<?> beanClass = metabean.getBeanClass();
- processGroupSequence(beanClass, metabean);
-
- // process class, superclasses and interfaces
- List<Class<?>> classSequence = new ArrayList<Class<?>>();
- ClassHelper.fillFullClassHierarchyAsList(classSequence, beanClass);
-
- // start with superclasses and go down the hierarchy so that
- // the child classes are processed last to have the chance to
- // overwrite some declarations
- // of their superclasses and that they see what they inherit at the
- // time of processing
- for (int i = classSequence.size() - 1; i >= 0; i--) {
- Class<?> eachClass = classSequence.get(i);
- processClass(eachClass, metabean);
- processGroupSequence(eachClass, metabean, "{GroupSequence:" + eachClass.getCanonicalName() + "}");
- }
-
- } catch (IllegalAccessException e) {
- throw new IllegalArgumentException(e);
- } catch (InvocationTargetException e) {
- throw new IllegalArgumentException(e.getTargetException());
- }
- }
-
- /**
- * Process class annotations, field and method annotations.
- *
- * @param beanClass
- * @param metabean
- * @throws IllegalAccessException
- * @throws InvocationTargetException
- */
- private void processClass(Class<?> beanClass, MetaBean metabean) throws IllegalAccessException,
- InvocationTargetException {
-
- // if NOT ignore class level annotations
- if (!factoryContext.getFactory().getAnnotationIgnores().isIgnoreAnnotations(beanClass)) {
- annotationProcessor.processAnnotations(null, beanClass, beanClass, null, new AppendValidationToMeta(
- metabean));
- }
-
- final Field[] fields = doPrivileged(SecureActions.getDeclaredFields(beanClass));
- for (Field field : fields) {
- MetaProperty metaProperty = metabean.getProperty(field.getName());
- // create a property for those fields for which there is not yet a
- // MetaProperty
- if (!factoryContext.getFactory().getAnnotationIgnores().isIgnoreAnnotations(field)) {
- AccessStrategy access = new FieldAccess(field);
- boolean create = metaProperty == null;
- if (create) {
- metaProperty = addMetaProperty(metabean, access);
- }
- if (!annotationProcessor.processAnnotations(metaProperty, beanClass, field, access,
- new AppendValidationToMeta(metaProperty)) && create) {
- metabean.putProperty(metaProperty.getName(), null);
- }
- }
- }
- final Method[] methods = doPrivileged(SecureActions.getDeclaredMethods(beanClass));
- for (Method method : methods) {
- String propName = null;
- if (method.getParameterTypes().length == 0) {
- propName = MethodAccess.getPropertyName(method);
- }
- if (propName != null) {
- if (!factoryContext.getFactory().getAnnotationIgnores().isIgnoreAnnotations(method)) {
- AccessStrategy access = new MethodAccess(propName, method);
- MetaProperty metaProperty = metabean.getProperty(propName);
- boolean create = metaProperty == null;
- // create a property for those methods for which there is
- // not yet a MetaProperty
- if (create) {
- metaProperty = addMetaProperty(metabean, access);
- }
- if (!annotationProcessor.processAnnotations(metaProperty, beanClass, method, access,
- new AppendValidationToMeta(metaProperty)) && create) {
- metabean.putProperty(propName, null);
- }
- }
- } else if (hasValidationConstraintsDefined(method)) {
- throw new ValidationException("Property " + method.getName() + " does not follow javabean conventions.");
- }
- }
-
- addXmlConstraints(beanClass, metabean);
- }
-
- /**
- * Learn whether a given Method has validation constraints defined via JSR303 annotations.
- *
- * @param method
- * @return <code>true</code> if constraints detected
- */
- protected boolean hasValidationConstraintsDefined(Method method) {
- for (Annotation annot : method.getDeclaredAnnotations()) {
- if (hasValidationConstraintsDefined(annot)) {
- return true;
- }
- }
- return false;
- }
-
- private boolean hasValidationConstraintsDefined(Annotation annot) {
- // If it is annotated with @Constraint
- if (annot.annotationType().getAnnotation(Constraint.class) != null) {
- return true;
- }
-
- // Check whether it is a multivalued constraint:
- if (ConstraintAnnotationAttributes.VALUE.isDeclaredOn(annot.annotationType())) {
- Annotation[] children = ConstraintAnnotationAttributes.VALUE.getValue(annot);
- if (children != null) {
- for (Annotation child : children) {
- if (hasValidationConstraintsDefined(child)) {
- return true;
- }
- }
- }
- }
-
- return false;
- }
-
- /**
- * Add cascade validation and constraints from xml mappings
- *
- * @param beanClass
- * @param metabean
- * @throws IllegalAccessException
- * @throws InvocationTargetException
- */
- private void addXmlConstraints(Class<?> beanClass, MetaBean metabean) throws IllegalAccessException,
- InvocationTargetException {
- for (MetaConstraint<?, ? extends Annotation> meta : factoryContext.getFactory().getMetaConstraints(beanClass)) {
- MetaProperty metaProperty;
- AccessStrategy access = meta.getAccessStrategy();
- boolean create = false;
- if (access == null) { // class level
- metaProperty = null;
- } else { // property level
- metaProperty = metabean.getProperty(access.getPropertyName());
- create = metaProperty == null;
- if (create) {
- metaProperty = addMetaProperty(metabean, access);
- }
- }
- if (!annotationProcessor.processAnnotation(meta.getAnnotation(), metaProperty, beanClass,
- meta.getAccessStrategy(), new AppendValidationToMeta(metaProperty == null ? metabean : metaProperty))
- && create) {
- metabean.putProperty(access.getPropertyName(), null);
- }
- }
- for (AccessStrategy access : factoryContext.getFactory().getValidAccesses(beanClass)) {
- MetaProperty metaProperty = metabean.getProperty(access.getPropertyName());
- boolean create = metaProperty == null;
- if (create) {
- metaProperty = addMetaProperty(metabean, access);
- }
- if (!annotationProcessor.addAccessStrategy(metaProperty, access) && create) {
- metabean.putProperty(access.getPropertyName(), null);
- }
- }
- }
-
- private void processGroupSequence(Class<?> beanClass, MetaBean metabean) {
- processGroupSequence(beanClass, metabean, Jsr303Features.Bean.GROUP_SEQUENCE);
- }
-
- private void processGroupSequence(Class<?> beanClass, MetaBean metabean, String key) {
- GroupSequence annotation = beanClass.getAnnotation(GroupSequence.class);
- List<Group> groupSeq = metabean.getFeature(key);
- if (groupSeq == null) {
- groupSeq = new ArrayList<Group>(annotation == null ? 1 : annotation.value().length);
- metabean.putFeature(key, groupSeq);
- }
- Class<?>[] groupClasses = factoryContext.getFactory().getDefaultSequence(beanClass);
- if (groupClasses == null || groupClasses.length == 0) {
- if (annotation == null) {
- groupSeq.add(Group.DEFAULT);
- return;
- } else {
- groupClasses = annotation.value();
- }
- }
- boolean containsDefault = false;
- for (Class<?> groupClass : groupClasses) {
- if (groupClass.getName().equals(beanClass.getName())) {
- groupSeq.add(Group.DEFAULT);
- containsDefault = true;
- } else if (groupClass.getName().equals(Default.class.getName())) {
- throw new GroupDefinitionException("'Default.class' must not appear in @GroupSequence! Use '"
- + beanClass.getSimpleName() + ".class' instead.");
- } else {
- groupSeq.add(new Group(groupClass));
- }
- }
- if (!containsDefault) {
- throw new GroupDefinitionException("Redefined default group sequence must contain " + beanClass.getName());
- }
- log.log(Level.FINEST, String.format("Default group sequence for bean %s is: %s", beanClass.getName(), groupSeq));
- }
-
- /**
- * Add a {@link MetaProperty} to a {@link MetaBean}.
- * @param parentMetaBean
- * @param access
- * @return the created {@link MetaProperty}
- */
- public static MetaProperty addMetaProperty(MetaBean parentMetaBean, AccessStrategy access) {
- final MetaProperty result = new MetaProperty();
- final String name = access.getPropertyName();
- result.setName(name);
- result.setType(access.getJavaType());
- parentMetaBean.putProperty(name, result);
- return result;
- }
-
-
-
-
- /**
- * Perform action with AccessController.doPrivileged() if a security manager is installed.
- *
- * @param action
- * the action to run
- * @return
- * result of the action
- */
- private static <T> T doPrivileged(final PrivilegedAction<T> action) {
- if (System.getSecurityManager() != null) {
- return AccessController.doPrivileged(action);
- } else {
- return action.run();
- }
- }
-}
diff --git a/trunk/bval-jsr303/src/main/java/org/apache/bval/jsr303/PropertyDescriptorImpl.java b/trunk/bval-jsr303/src/main/java/org/apache/bval/jsr303/PropertyDescriptorImpl.java
deleted file mode 100644
index 20197e4..0000000
--- a/trunk/bval-jsr303/src/main/java/org/apache/bval/jsr303/PropertyDescriptorImpl.java
+++ /dev/null
@@ -1,83 +0,0 @@
-/*
- * 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.bval.jsr303;
-
-import org.apache.bval.model.Features;
-import org.apache.bval.model.MetaProperty;
-
-import javax.validation.metadata.PropertyDescriptor;
-
-/**
- * Description: {@link PropertyDescriptor} implementation.<br/>
- */
-class PropertyDescriptorImpl extends ElementDescriptorImpl implements PropertyDescriptor {
- private boolean cascaded;
- private String propertyPath;
-
- /**
- * Create a new PropertyDescriptorImpl instance.
- *
- * @param property
- */
- PropertyDescriptorImpl(MetaProperty property) {
- super(property.getParentMetaBean(), property.getTypeClass(), property.getValidations());
- setCascaded(property.getMetaBean() != null || property.getFeature(Features.Property.REF_CASCADE) != null);
- setPropertyPath(property.getName());
- }
-
- /**
- * Set whether the referenced property is cascaded.
- *
- * @param cascaded
- */
- public void setCascaded(boolean cascaded) {
- this.cascaded = cascaded;
- }
-
- /**
- * {@inheritDoc}
- */
- public boolean isCascaded() {
- return cascaded;
- }
-
- /**
- * Set the referenced property path.
- *
- * @param propertyPath
- */
- public void setPropertyPath(String propertyPath) {
- this.propertyPath = propertyPath;
- }
-
- /**
- * {@inheritDoc}
- */
- public String getPropertyName() {
- return propertyPath;
- }
-
- /**
- * {@inheritDoc}
- */
- public String toString() {
- return "PropertyDescriptorImpl{" + "returnType=" + elementClass + ", propertyPath='" + propertyPath + '\''
- + '}';
- }
-}
diff --git a/trunk/bval-jsr303/src/main/java/org/apache/bval/jsr303/UnknownPropertyException.java b/trunk/bval-jsr303/src/main/java/org/apache/bval/jsr303/UnknownPropertyException.java
deleted file mode 100644
index dabcf6e..0000000
--- a/trunk/bval-jsr303/src/main/java/org/apache/bval/jsr303/UnknownPropertyException.java
+++ /dev/null
@@ -1,67 +0,0 @@
-/*
- * 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.bval.jsr303;
-
-import javax.validation.ValidationException;
-
-/**
- * Internal exception thrown when trying to access a property that doesn't exist
- * in a bean.
- *
- * @version $Rev$ $Date$
- *
- * @author Carlos Vara
- */
-public class UnknownPropertyException extends ValidationException {
-
- private static final long serialVersionUID = 1L;
-
- /**
- * Create a new UnknownPropertyException instance.
- * @param message
- */
- public UnknownPropertyException(String message) {
- super(message);
- }
-
- /**
- * Create a new UnknownPropertyException instance.
- */
- public UnknownPropertyException() {
- super();
- }
-
- /**
- * Create a new UnknownPropertyException instance.
- * @param message
- * @param cause
- */
- public UnknownPropertyException(String message, Throwable cause) {
- super(message, cause);
- }
-
- /**
- * Create a new UnknownPropertyException instance.
- * @param cause
- */
- public UnknownPropertyException(Throwable cause) {
- super(cause);
- }
-
-}
diff --git a/trunk/bval-jsr303/src/main/java/org/apache/bval/jsr303/extensions/AppendValidationToList.java b/trunk/bval-jsr303/src/main/java/org/apache/bval/jsr303/extensions/AppendValidationToList.java
deleted file mode 100644
index 602f27c..0000000
--- a/trunk/bval-jsr303/src/main/java/org/apache/bval/jsr303/extensions/AppendValidationToList.java
+++ /dev/null
@@ -1,55 +0,0 @@
-/*
- * 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.bval.jsr303.extensions;
-
-
-import org.apache.bval.jsr303.AppendValidation;
-import org.apache.bval.jsr303.BaseAppendValidation;
-import org.apache.bval.jsr303.ConstraintValidation;
-
-import java.lang.annotation.Annotation;
-import java.util.ArrayList;
-import java.util.List;
-
-/**
- * Description: {@link AppendValidation} implementation that acts as an intermediate
- * cache of validations for further processing.<br/>
- */
-public class AppendValidationToList extends BaseAppendValidation {
- private final List<ConstraintValidation<?>> validations = new ArrayList<ConstraintValidation<?>>();
-
- /**
- * Create a new AppendValidationToList instance.
- */
- public AppendValidationToList() {
- }
-
- /**
- * {@inheritDoc}
- */
- public <T extends Annotation> void performAppend(ConstraintValidation<T> validation) {
- validations.add(validation);
- }
-
- /**
- * Get the list of cached validations.
- * @return {@link List} of {@link ConstraintValidation}
- */
- public List<ConstraintValidation<?>> getValidations() {
- return validations;
- }
-}
diff --git a/trunk/bval-jsr303/src/main/java/org/apache/bval/jsr303/extensions/ConstructorDescriptor.java b/trunk/bval-jsr303/src/main/java/org/apache/bval/jsr303/extensions/ConstructorDescriptor.java
deleted file mode 100644
index 6e273fd..0000000
--- a/trunk/bval-jsr303/src/main/java/org/apache/bval/jsr303/extensions/ConstructorDescriptor.java
+++ /dev/null
@@ -1,38 +0,0 @@
-/*
- * 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.bval.jsr303.extensions;
-
-import javax.validation.metadata.ElementDescriptor;
-import java.util.List;
-
-/**
- * Description: This class will disappear when such
- * functionality is part of the JSR303 specification.<br/>
- */
-public interface ConstructorDescriptor extends ElementDescriptor {
- /**
- * Get the list of {@link ParameterDescriptor}s.
- * @return {@link List} of {@link ParameterDescriptor}
- */
- List<ParameterDescriptor> getParameterDescriptors(); //index aligned
-
- /**
- * Learn whether the referenced constructor should be validated.
- * @return
- */
- boolean isCascaded();
-}
diff --git a/trunk/bval-jsr303/src/main/java/org/apache/bval/jsr303/extensions/ConstructorDescriptorImpl.java b/trunk/bval-jsr303/src/main/java/org/apache/bval/jsr303/extensions/ConstructorDescriptorImpl.java
deleted file mode 100644
index 775c83d..0000000
--- a/trunk/bval-jsr303/src/main/java/org/apache/bval/jsr303/extensions/ConstructorDescriptorImpl.java
+++ /dev/null
@@ -1,74 +0,0 @@
-/*
- * 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.bval.jsr303.extensions;
-
-
-import org.apache.bval.jsr303.ElementDescriptorImpl;
-import org.apache.bval.model.MetaBean;
-import org.apache.bval.model.Validation;
-
-import java.util.ArrayList;
-import java.util.List;
-
-/**
- * Description: {@link ConstructorDescriptor} implementation.<br/>
- */
-public class ConstructorDescriptorImpl extends ElementDescriptorImpl
- implements ConstructorDescriptor, ProcedureDescriptor {
- private final List<ParameterDescriptor> parameterDescriptors = new ArrayList<ParameterDescriptor>();
- private boolean cascaded;
-
- /**
- * Create a new ConstructorDescriptorImpl instance.
- * @param metaBean
- * @param validations
- */
- protected ConstructorDescriptorImpl(MetaBean metaBean, Validation[] validations) {
- super(metaBean, metaBean.getBeanClass(), validations);
- }
-
- /**
- * Create a new ConstructorDescriptorImpl instance.
- * @param elementClass
- * @param validations
- */
- protected ConstructorDescriptorImpl(Class<?> elementClass, Validation[] validations) {
- super(elementClass, validations);
- }
-
- /**
- * {@inheritDoc}
- */
- public boolean isCascaded() {
- return cascaded;
- }
-
- /**
- * {@inheritDoc}
- */
- public void setCascaded(boolean cascaded) {
- this.cascaded = cascaded;
- }
-
- /**
- * {@inheritDoc}
- */
- public List<ParameterDescriptor> getParameterDescriptors() //index aligned
- {
- return parameterDescriptors;
- }
-}
diff --git a/trunk/bval-jsr303/src/main/java/org/apache/bval/jsr303/extensions/MethodBeanDescriptor.java b/trunk/bval-jsr303/src/main/java/org/apache/bval/jsr303/extensions/MethodBeanDescriptor.java
deleted file mode 100644
index 5cac52e..0000000
--- a/trunk/bval-jsr303/src/main/java/org/apache/bval/jsr303/extensions/MethodBeanDescriptor.java
+++ /dev/null
@@ -1,55 +0,0 @@
-/*
- * 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.bval.jsr303.extensions;
-
-import javax.validation.metadata.BeanDescriptor;
-import java.lang.reflect.Constructor;
-import java.lang.reflect.Method;
-import java.util.Set;
-
-/**
- * Description: Provides method/constructor-related constraint information
- * for a type. This class will disappear when such
- * functionality is part of the JSR303 specification.<br/>
- */
-public interface MethodBeanDescriptor extends BeanDescriptor {
- /**
- * Get the constraints that apply to a particular method.
- * @param method
- * @return {@link MethodDescriptor}
- */
- MethodDescriptor getConstraintsForMethod(Method method);
-
- /**
- * Get the constraints that apply to a particular constructor.
- * @param constructor
- * @return {@link ConstructorDescriptor}
- */
- ConstructorDescriptor getConstraintsForConstructor(Constructor<?> constructor);
-
- /**
- * Get the set of constrained methods.
- * @return {@link Set} of {@link MethodDescriptor}
- */
- Set<MethodDescriptor> getConstrainedMethods();
-
- /**
- * Get the set of constrained constructors.
- * @return {@link Set} of {@link ConstructorDescriptor}
- */
- Set<ConstructorDescriptor> getConstrainedConstructors();
-}
diff --git a/trunk/bval-jsr303/src/main/java/org/apache/bval/jsr303/extensions/MethodBeanDescriptorImpl.java b/trunk/bval-jsr303/src/main/java/org/apache/bval/jsr303/extensions/MethodBeanDescriptorImpl.java
deleted file mode 100644
index e8a482d..0000000
--- a/trunk/bval-jsr303/src/main/java/org/apache/bval/jsr303/extensions/MethodBeanDescriptorImpl.java
+++ /dev/null
@@ -1,131 +0,0 @@
-/*
- * 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.bval.jsr303.extensions;
-
-import org.apache.bval.jsr303.ApacheFactoryContext;
-import org.apache.bval.jsr303.BeanDescriptorImpl;
-import org.apache.bval.model.MetaBean;
-
-import java.lang.reflect.Constructor;
-import java.lang.reflect.Method;
-import java.util.HashSet;
-import java.util.Map;
-import java.util.Set;
-
-/**
- * Description: {@link MethodBeanDescriptor} implementation.<br/>
- */
-class MethodBeanDescriptorImpl extends BeanDescriptorImpl implements MethodBeanDescriptor {
- private Map<Method, MethodDescriptor> methodConstraints;
- private Map<Constructor<?>, ConstructorDescriptor> constructorConstraints;
-
- /**
- * Create a new MethodBeanDescriptorImpl instance.
- *
- * @param factoryContext
- * @param metaBean
- */
- protected MethodBeanDescriptorImpl(ApacheFactoryContext factoryContext, MetaBean metaBean) {
- super(factoryContext, metaBean);
- }
-
- /**
- * Set the map of method constraints for this bean.
- *
- * @param methodConstraints
- */
- public void setMethodConstraints(Map<Method, MethodDescriptor> methodConstraints) {
- this.methodConstraints = methodConstraints;
- }
-
- /**
- * Set the map of constructor constraints for this bean.
- *
- * @param constructorConstraints
- */
- public void setConstructorConstraints(Map<Constructor<?>, ConstructorDescriptor> constructorConstraints) {
- this.constructorConstraints = constructorConstraints;
- }
-
- /**
- * {@inheritDoc}
- */
- public MethodDescriptor getConstraintsForMethod(Method method) {
- return methodConstraints.get(method);
- }
-
- /**
- * {@inheritDoc}
- */
- public ConstructorDescriptor getConstraintsForConstructor(Constructor<?> constructor) {
- return constructorConstraints.get(constructor);
- }
-
- /**
- * {@inheritDoc}
- */
- public Set<MethodDescriptor> getConstrainedMethods() {
- return new HashSet<MethodDescriptor>(methodConstraints.values());
- }
-
- /**
- * Add a {@link MethodDescriptor} to this {@link MethodBeanDescriptorImpl}.
- *
- * @param method
- * @param desc
- */
- public void putMethodDescriptor(Method method, MethodDescriptor desc) {
- methodConstraints.put(method, desc);
- }
-
- /**
- * {@inheritDoc}
- */
- public Set<ConstructorDescriptor> getConstrainedConstructors() {
- return new HashSet<ConstructorDescriptor>(this.constructorConstraints.values());
- }
-
- /**
- * Add a {@link ConstructorDescriptor} to this
- * {@link MethodBeanDescriptorImpl}.
- *
- * @param cons
- * @param desc
- */
- public void putConstructorDescriptor(Constructor<?> cons, ConstructorDescriptor desc) {
- constructorConstraints.put(cons, desc);
- }
-
- /**
- * Get the configured method constraints.
- *
- * @return {@link Map} of {@link Method} : {@link MethodDescriptor}
- */
- public Map<Method, MethodDescriptor> getMethodConstraints() {
- return methodConstraints;
- }
-
- /**
- * Get the configured constructor constraints.
- *
- * @return {@link Map} of {@link Constructor} :
- * {@link ConstructorDescriptor}
- */
- public Map<Constructor<?>, ConstructorDescriptor> getConstructorConstraints() {
- return constructorConstraints;
- }
-}
diff --git a/trunk/bval-jsr303/src/main/java/org/apache/bval/jsr303/extensions/MethodDescriptor.java b/trunk/bval-jsr303/src/main/java/org/apache/bval/jsr303/extensions/MethodDescriptor.java
deleted file mode 100644
index 71a4289..0000000
--- a/trunk/bval-jsr303/src/main/java/org/apache/bval/jsr303/extensions/MethodDescriptor.java
+++ /dev/null
@@ -1,39 +0,0 @@
-/*
- * 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.bval.jsr303.extensions;
-
-import javax.validation.metadata.ElementDescriptor;
-import java.util.List;
-
-/**
- * Description: This class will disappear when such
- * functionality is part of the JSR303 specification.<br/>
- */
-public interface MethodDescriptor extends ElementDescriptor {
- /**
- * Get the {@link ParameterDescriptor}s for this {@link MethodDescriptor}.
- * @return {@link List} of {@link ParameterDescriptor}
- */
- List<ParameterDescriptor> getParameterDescriptors(); //index aligned
-
- /**
- * Learn whether the referenced method should be validated.
- * @return boolean
- */
- boolean isCascaded();
-
-}
diff --git a/trunk/bval-jsr303/src/main/java/org/apache/bval/jsr303/extensions/MethodDescriptorImpl.java b/trunk/bval-jsr303/src/main/java/org/apache/bval/jsr303/extensions/MethodDescriptorImpl.java
deleted file mode 100644
index 4281414..0000000
--- a/trunk/bval-jsr303/src/main/java/org/apache/bval/jsr303/extensions/MethodDescriptorImpl.java
+++ /dev/null
@@ -1,84 +0,0 @@
-/*
- * 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.bval.jsr303.extensions;
-
-import org.apache.bval.jsr303.ConstraintValidation;
-import org.apache.bval.jsr303.ElementDescriptorImpl;
-import org.apache.bval.model.MetaBean;
-import org.apache.bval.model.Validation;
-
-import java.util.ArrayList;
-import java.util.Collection;
-import java.util.List;
-
-/**
- * Description: {@link MethodDescriptor} implementation.<br/>
- */
-public class MethodDescriptorImpl extends ElementDescriptorImpl implements MethodDescriptor, ProcedureDescriptor {
- private final List<ParameterDescriptor> parameterDescriptors = new ArrayList<ParameterDescriptor>();
- private boolean cascaded;
-
- /**
- * Create a new MethodDescriptorImpl instance.
- *
- * @param metaBean
- * @param validations
- */
- protected MethodDescriptorImpl(MetaBean metaBean, Validation[] validations) {
- super(metaBean, metaBean.getClass(), validations);
- }
-
- /**
- * Create a new MethodDescriptorImpl instance.
- *
- * @param elementClass
- * @param validations
- */
- protected MethodDescriptorImpl(Class<?> elementClass, Validation[] validations) {
- super(elementClass, validations);
- }
-
- /**
- * {@inheritDoc}
- */
- public List<ParameterDescriptor> getParameterDescriptors() {
- // index aligned
- return parameterDescriptors;
- }
-
- /**
- * {@inheritDoc}
- */
- public boolean isCascaded() {
- return cascaded;
- }
-
- /**
- * {@inheritDoc}
- */
- public void setCascaded(boolean cascaded) {
- this.cascaded = cascaded;
- }
-
- /**
- * Add the specified validations to this {@link MethodDescriptorImpl}.
- * @param validations
- */
- void addValidations(Collection<ConstraintValidation<?>> validations) {
- getMutableConstraintDescriptors().addAll(validations);
- }
-}
diff --git a/trunk/bval-jsr303/src/main/java/org/apache/bval/jsr303/extensions/MethodValidator.java b/trunk/bval-jsr303/src/main/java/org/apache/bval/jsr303/extensions/MethodValidator.java
deleted file mode 100644
index 8f35642..0000000
--- a/trunk/bval-jsr303/src/main/java/org/apache/bval/jsr303/extensions/MethodValidator.java
+++ /dev/null
@@ -1,119 +0,0 @@
-/*
- * 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.bval.jsr303.extensions;
-
-import javax.validation.ConstraintViolation;
-import javax.validation.Validator;
-import java.lang.reflect.Constructor;
-import java.lang.reflect.Method;
-import java.util.Set;
-
-/**
- * Description: Appendix C. Proposal for method-level validation.
- * This interface contains the APIs added to javax.validation.Validator.
- * It can be removed as soon as the Validator interface contains these methods.
- * The extension is not a part of the JSR303 core specification yet, but could
- * be in a future revision.<br/>
- * You can access the extension via the use of the Validator.unwrap() method.<br/>
- */
-public interface MethodValidator extends Validator {
- /**
- * Validate each parameter value based on the constraints described on
- * the parameters of <code>method</code>.
- *
- * @param clazz class hosting the method
- * @param method the method whose parameters are currectly validated
- * @param parameterValues the parameter values passed to the method for invocation
- * @param groups groups targeted for validation
- * @return set of constraint violations
- * @throws IllegalArgumentException if the method does not belong to <code>T</code>
- * or if the Object[] does not match the method signature
- */
- <T> Set<ConstraintViolation<T>> validateParameters(Class<T> clazz, Method method,
- Object[] parameterValues,
- Class<?>... groups);
-
- /**
- * Validate the parameter value based on the constraints described on
- * the parameterIndex-th parameter of <code>method</code>.
- *
- * @param clazz class hosting the method
- * @param method the method whose parameters are currectly validated
- * @param parameterValue the parameter value passed to the parameterIndex-t parameter of method
- * @param parameterIndex parameter index of the parameter validated in method
- * @param groups groups targeted for validation
- * @return set of constraint violations
- * @throws IllegalArgumentException if the method does not belong to <code>T</code>
- * or if parameterIndex is out of bound
- */
- <T> Set<ConstraintViolation<T>> validateParameter(Class<T> clazz, Method method,
- Object parameterValue,
- int parameterIndex,
- Class<?>... groups);
-
- /**
- * Validate each parameter value based on the constraints described on
- * <code>method</code>.
- *
- * @param clazz class hosting the method
- * @param method the method whose result is validated
- * @param returnedValue the value returned by the method invocation
- * @param groups groups targeted for validation
- * @return set of constraint violations
- * @throws IllegalArgumentException if the method does not belong to <code>T</code>
- */
- <T> Set<ConstraintViolation<T>> validateReturnedValue(Class<T> clazz, Method method,
- Object returnedValue,
- Class<?>... groups);
-
- /**
- * Validate each parameter value based on the constraints described on
- * the parameters of <code>constructor</code>.
- *
- * @param clazz class hosting the constructor
- * @param constructor the constructor whose parameters are correctly validated
- * @param parameterValues the parameter values passed to the constructor for invocation
- * @param groups groups targeted for validation
- * @return set of constraint violations
- * @throws IllegalArgumentException if the constructor does not belong to <code>T</code>
- * or if the Object[] does not match the constructor signature
- */
- <T> Set<ConstraintViolation<T>> validateParameters(Class<T> clazz,
- Constructor<T> constructor,
- Object[] parameterValues,
- Class<?>... groups);
-
- /**
- * Validate the parameter value based on the constraints described on
- * the parameterIndex-th parameter of <code>constructor</code>.
- *
- * @param clazz class hosting the constructor
- * @param constructor the method whose parameters are correctly validated
- * @param parameterValue the parameter value passed to the
- * parameterIndex-th parameter of constructor
- * @param parameterIndex parameter index of the parameter validated in constructor
- * @param groups groups targeted for validation
- * @return set of constraint violations
- * @throws IllegalArgumentException if the constructor does not belong to <code>T</code>
- * or if prameterIndex is out of bound
- */
- <T> Set<ConstraintViolation<T>> validateParameter(Class<T> clazz,
- Constructor<T> constructor,
- Object parameterValue,
- int parameterIndex,
- Class<?>... groups);
-}
diff --git a/trunk/bval-jsr303/src/main/java/org/apache/bval/jsr303/extensions/MethodValidatorImpl.java b/trunk/bval-jsr303/src/main/java/org/apache/bval/jsr303/extensions/MethodValidatorImpl.java
deleted file mode 100644
index 06b5b2f..0000000
--- a/trunk/bval-jsr303/src/main/java/org/apache/bval/jsr303/extensions/MethodValidatorImpl.java
+++ /dev/null
@@ -1,309 +0,0 @@
-/*
- * 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.bval.jsr303.extensions;
-
-import java.lang.reflect.Constructor;
-import java.lang.reflect.Method;
-import java.util.Collections;
-import java.util.List;
-import java.util.Set;
-
-import javax.validation.ConstraintViolation;
-import javax.validation.ValidationException;
-import javax.validation.metadata.ConstraintDescriptor;
-
-import org.apache.bval.jsr303.ApacheFactoryContext;
-import org.apache.bval.jsr303.BeanDescriptorImpl;
-import org.apache.bval.jsr303.ClassValidator;
-import org.apache.bval.jsr303.ConstraintValidation;
-import org.apache.bval.jsr303.ConstraintValidationListener;
-import org.apache.bval.jsr303.GroupValidationContext;
-import org.apache.bval.jsr303.groups.Group;
-import org.apache.bval.jsr303.groups.Groups;
-import org.apache.bval.model.MetaBean;
-import org.apache.bval.util.ValidationHelper;
-
-/**
- * Description: experimental implementation of method-level-validation <br/>
- */
-class MethodValidatorImpl extends ClassValidator implements MethodValidator {
- /**
- * Create a new MethodValidatorImpl instance.
- *
- * @param factoryContext
- */
- public MethodValidatorImpl(ApacheFactoryContext factoryContext) {
- super(factoryContext);
- }
-
- /**
- * {@inheritDoc}
- */
- @Override
- protected BeanDescriptorImpl createBeanDescriptor(MetaBean metaBean) {
- MethodBeanDescriptorImpl descriptor = new MethodBeanDescriptorImpl(factoryContext, metaBean);
- MethodValidatorMetaBeanFactory factory = new MethodValidatorMetaBeanFactory(factoryContext);
- factory.buildMethodDescriptor(descriptor);
- return descriptor;
- }
-
- /**
- * {@inheritDoc} enhancement: method-level-validation not yet completly
- * implemented
- *
- * <pre>
- * example:
- * <code>
- * public @NotNull String saveItem(@Valid @NotNull Item item, @Max(23) BigDecimal
- * </code>
- * </pre>
- *
- * spec: The constraints declarations evaluated are the constraints hosted
- * on the parameters of the method or constructor. If @Valid is placed on a
- * parameter, constraints declared on the object itself are considered.
- *
- * @throws IllegalArgumentException
- * enhancement: if the method does not belong to <code>T</code>
- * or if the Object[] does not match the method signature
- */
- public <T> Set<ConstraintViolation<T>> validateParameters(Class<T> clazz, Method method, Object[] parameters,
- Class<?>... groupArray) {
- MethodBeanDescriptorImpl beanDesc = (MethodBeanDescriptorImpl) getConstraintsForClass(clazz);
- MethodDescriptorImpl methodDescriptor = (MethodDescriptorImpl) beanDesc.getConstraintsForMethod(method);
- if (methodDescriptor == null) {
- throw new ValidationException("Method " + method + " doesn't belong to class " + clazz);
- }
- return validateParameters(methodDescriptor.getMetaBean(), methodDescriptor.getParameterDescriptors(),
- parameters, groupArray);
- }
-
- /**
- * {@inheritDoc}
- */
- public <T> Set<ConstraintViolation<T>> validateParameter(Class<T> clazz, Method method, Object parameter,
- int parameterIndex, Class<?>... groupArray) {
- MethodBeanDescriptorImpl beanDesc = (MethodBeanDescriptorImpl) getConstraintsForClass(clazz);
- MethodDescriptorImpl methodDescriptor = (MethodDescriptorImpl) beanDesc.getConstraintsForMethod(method);
- if (methodDescriptor == null) {
- throw new ValidationException("Method " + method + " doesn't belong to class " + clazz);
- }
- ParameterDescriptorImpl paramDesc =
- (ParameterDescriptorImpl) methodDescriptor.getParameterDescriptors().get(parameterIndex);
- return validateParameter(paramDesc, parameter, groupArray);
- }
-
- /**
- * {@inheritDoc}
- */
- public <T> Set<ConstraintViolation<T>> validateParameters(Class<T> clazz, Constructor<T> constructor,
- Object[] parameters, Class<?>... groupArray) {
- MethodBeanDescriptorImpl beanDesc = (MethodBeanDescriptorImpl) getConstraintsForClass(clazz);
- ConstructorDescriptorImpl constructorDescriptor =
- (ConstructorDescriptorImpl) beanDesc.getConstraintsForConstructor(constructor);
- if (constructorDescriptor == null) {
- throw new ValidationException("Constructor " + constructor + " doesn't belong to class " + clazz);
- }
- return validateParameters(constructorDescriptor.getMetaBean(), constructorDescriptor.getParameterDescriptors(),
- parameters, groupArray);
- }
-
- /**
- * {@inheritDoc}
- */
- public <T> Set<ConstraintViolation<T>> validateParameter(Class<T> clazz, Constructor<T> constructor,
- Object parameter, int parameterIndex, Class<?>... groupArray) {
- MethodBeanDescriptorImpl beanDesc = (MethodBeanDescriptorImpl) getConstraintsForClass(clazz);
- ConstructorDescriptorImpl constructorDescriptor =
- (ConstructorDescriptorImpl) beanDesc.getConstraintsForConstructor(constructor);
- if (constructorDescriptor == null) {
- throw new ValidationException("Constructor " + constructor + " doesn't belong to class " + clazz);
- }
- ParameterDescriptorImpl paramDesc =
- (ParameterDescriptorImpl) constructorDescriptor.getParameterDescriptors().get(parameterIndex);
- return validateParameter(paramDesc, parameter, groupArray);
- }
-
- /**
- * {@inheritDoc} If @Valid is placed on the method, the constraints declared
- * on the object itself are considered.
- */
- @SuppressWarnings("unchecked")
- public <T> Set<ConstraintViolation<T>> validateReturnedValue(Class<T> clazz, Method method, Object returnedValue,
- Class<?>... groupArray) {
- MethodBeanDescriptorImpl beanDesc = (MethodBeanDescriptorImpl) getConstraintsForClass(clazz);
- MethodDescriptorImpl methodDescriptor = (MethodDescriptorImpl) beanDesc.getConstraintsForMethod(method);
- if (methodDescriptor == null) {
- throw new ValidationException("Method " + method + " doesn't belong to class " + clazz);
- }
- final GroupValidationContext<Object> context =
- createContext(methodDescriptor.getMetaBean(), returnedValue, null, groupArray);
- validateReturnedValueInContext(context, methodDescriptor);
- ConstraintValidationListener<T> result = (ConstraintValidationListener<T>) context.getListener();
- return result.getConstraintViolations();
- }
-
- @SuppressWarnings("unchecked")
- private <T> Set<ConstraintViolation<T>> validateParameters(MetaBean metaBean,
- List<ParameterDescriptor> paramDescriptors, Object[] parameters, Class<?>... groupArray) {
- if (parameters == null)
- throw new IllegalArgumentException("cannot validate null");
- if (parameters.length > 0) {
- try {
- GroupValidationContext<ConstraintValidationListener<Object[]>> context =
- createContext(metaBean, null, null, groupArray);
- for (int i = 0; i < parameters.length; i++) {
- ParameterDescriptorImpl paramDesc = (ParameterDescriptorImpl) paramDescriptors.get(i);
- context.setBean(parameters[i]);
- validateParameterInContext(context, paramDesc);
- }
- ConstraintValidationListener<T> result = (ConstraintValidationListener<T>) context.getListener();
- return result.getConstraintViolations();
- } catch (RuntimeException ex) {
- throw unrecoverableValidationError(ex, parameters);
- }
- } else {
- return Collections.<ConstraintViolation<T>> emptySet();
- }
- }
-
- @SuppressWarnings("unchecked")
- private <T> Set<ConstraintViolation<T>> validateParameter(ParameterDescriptorImpl paramDesc, Object parameter,
- Class<?>... groupArray) {
- try {
- final GroupValidationContext<Object> context =
- createContext(paramDesc.getMetaBean(), parameter, null, groupArray);
- final ConstraintValidationListener<T> result = (ConstraintValidationListener<T>) context.getListener();
- validateParameterInContext(context, paramDesc);
- return result.getConstraintViolations();
- } catch (RuntimeException ex) {
- throw unrecoverableValidationError(ex, parameter);
- }
- }
-
- /**
- * validate constraints hosted on parameters of a method
- */
- private <T> void validateParameterInContext(GroupValidationContext<T> context, ParameterDescriptorImpl paramDesc) {
-
- final Groups groups = context.getGroups();
-
- for (ConstraintDescriptor<?> consDesc : paramDesc.getConstraintDescriptors()) {
- ConstraintValidation<?> validation = (ConstraintValidation<?>) consDesc;
- // 1. process groups
- for (Group current : groups.getGroups()) {
- context.setCurrentGroup(current);
- validation.validate(context);
- }
- // 2. process sequences
- for (List<Group> eachSeq : groups.getSequences()) {
- for (Group current : eachSeq) {
- context.setCurrentGroup(current);
- validation.validate(context);
- /**
- * if one of the group process in the sequence leads to one
- * or more validation failure, the groups following in the
- * sequence must not be processed
- */
- if (!context.getListener().isEmpty())
- break;
- }
- }
- }
- if (paramDesc.isCascaded() && context.getValidatedValue() != null) {
- context
- .setMetaBean(factoryContext.getMetaBeanFinder().findForClass(context.getValidatedValue().getClass()));
- // 1. process groups
- for (Group current : groups.getGroups()) {
- context.setCurrentGroup(current);
- ValidationHelper
- .validateContext(context, new Jsr303ValidationCallback(context), isTreatMapsLikeBeans());
- }
- // 2. process sequences
- for (List<Group> eachSeq : groups.getSequences()) {
- for (Group current : eachSeq) {
- context.setCurrentGroup(current);
- ValidationHelper.validateContext(context, new Jsr303ValidationCallback(context),
- isTreatMapsLikeBeans());
- /**
- * if one of the group process in the sequence leads to one
- * or more validation failure, the groups following in the
- * sequence must not be processed
- */
- if (!context.getListener().isEmpty())
- break;
- }
- }
- }
- }
-
- /**
- * validate constraints hosted on parameters of a method
- */
- private <T> void validateReturnedValueInContext(GroupValidationContext<T> context,
- MethodDescriptorImpl methodDescriptor) {
-
- final Groups groups = context.getGroups();
-
- for (ConstraintDescriptor<?> consDesc : methodDescriptor.getConstraintDescriptors()) {
- ConstraintValidation<?> validation = (ConstraintValidation<?>) consDesc;
- // 1. process groups
- for (Group current : groups.getGroups()) {
- context.setCurrentGroup(current);
- validation.validate(context);
- }
- // 2. process sequences
- for (List<Group> eachSeq : groups.getSequences()) {
- for (Group current : eachSeq) {
- context.setCurrentGroup(current);
- validation.validate(context);
- /**
- * if one of the group process in the sequence leads to one
- * or more validation failure, the groups following in the
- * sequence must not be processed
- */
- if (!context.getListener().isEmpty())
- break;
- }
- }
- }
- if (methodDescriptor.isCascaded() && context.getValidatedValue() != null) {
- context
- .setMetaBean(factoryContext.getMetaBeanFinder().findForClass(context.getValidatedValue().getClass()));
- // 1. process groups
- for (Group current : groups.getGroups()) {
- context.setCurrentGroup(current);
- ValidationHelper
- .validateContext(context, new Jsr303ValidationCallback(context), isTreatMapsLikeBeans());
- }
- // 2. process sequences
- for (List<Group> eachSeq : groups.getSequences()) {
- for (Group current : eachSeq) {
- context.setCurrentGroup(current);
- ValidationHelper.validateContext(context, new Jsr303ValidationCallback(context),
- isTreatMapsLikeBeans());
- /**
- * if one of the group process in the sequence leads to one
- * or more validation failure, the groups following in the
- * sequence must not be processed
- */
- if (!context.getListener().isEmpty())
- break;
- }
- }
- }
- }
-}
diff --git a/trunk/bval-jsr303/src/main/java/org/apache/bval/jsr303/extensions/MethodValidatorMetaBeanFactory.java b/trunk/bval-jsr303/src/main/java/org/apache/bval/jsr303/extensions/MethodValidatorMetaBeanFactory.java
deleted file mode 100644
index 6fbb2b3..0000000
--- a/trunk/bval-jsr303/src/main/java/org/apache/bval/jsr303/extensions/MethodValidatorMetaBeanFactory.java
+++ /dev/null
@@ -1,175 +0,0 @@
-/*
- * 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.bval.jsr303.extensions;
-
-import org.apache.bval.Validate;
-import org.apache.bval.jsr303.ApacheFactoryContext;
-import org.apache.bval.jsr303.AppendValidation;
-import org.apache.bval.jsr303.ConstraintAnnotationAttributes;
-import org.apache.bval.jsr303.Jsr303MetaBeanFactory;
-import org.apache.bval.model.Validation;
-import org.apache.bval.util.AccessStrategy;
-import org.apache.commons.lang3.ClassUtils;
-
-import javax.validation.Constraint;
-import javax.validation.Valid;
-import java.lang.annotation.Annotation;
-import java.lang.reflect.Constructor;
-import java.lang.reflect.InvocationTargetException;
-import java.lang.reflect.Method;
-import java.util.HashMap;
-
-/**
- * Description: extension to validate parameters/return values of
- * methods/constructors.<br/>
- */
-// TODO RSt - move. this is an optional module: move the whole package. core
-// code has no dependencies on it
-public class MethodValidatorMetaBeanFactory extends Jsr303MetaBeanFactory {
- /**
- * Create a new MethodValidatorMetaBeanFactory instance.
- *
- * @param factoryContext
- */
- public MethodValidatorMetaBeanFactory(ApacheFactoryContext factoryContext) {
- super(factoryContext);
- }
-
- /**
- * {@inheritDoc}
- */
- @Override
- protected boolean hasValidationConstraintsDefined(Method method) {
- return false;
- }
-
- /**
- * Finish building the specified {@link MethodBeanDescriptorImpl}.
- *
- * @param descriptor
- */
- public void buildMethodDescriptor(MethodBeanDescriptorImpl descriptor) {
- try {
- buildMethodConstraints(descriptor);
- buildConstructorConstraints(descriptor);
- } catch (Exception e) {
- throw new IllegalArgumentException(e.getMessage(), e);
- }
- }
-
- private void buildConstructorConstraints(MethodBeanDescriptorImpl beanDesc) throws InvocationTargetException,
- IllegalAccessException {
- beanDesc.setConstructorConstraints(new HashMap<Constructor<?>, ConstructorDescriptor>());
-
- for (Constructor<?> cons : beanDesc.getMetaBean().getBeanClass().getDeclaredConstructors()) {
- if (!factoryContext.getFactory().getAnnotationIgnores().isIgnoreAnnotations(cons)) {
-
- ConstructorDescriptorImpl consDesc =
- new ConstructorDescriptorImpl(beanDesc.getMetaBean(), new Validation[0]);
- beanDesc.putConstructorDescriptor(cons, consDesc);
-
- Annotation[][] paramsAnnos = cons.getParameterAnnotations();
- int idx = 0;
- for (Annotation[] paramAnnos : paramsAnnos) {
- ParameterAccess access = new ParameterAccess(cons.getParameterTypes()[idx], idx);
- processAnnotations(consDesc, paramAnnos, access, idx);
- idx++;
- }
- }
- }
- }
-
- private void buildMethodConstraints(MethodBeanDescriptorImpl beanDesc) throws InvocationTargetException,
- IllegalAccessException {
- beanDesc.setMethodConstraints(new HashMap<Method, MethodDescriptor>());
-
- for (Method method : beanDesc.getMetaBean().getBeanClass().getDeclaredMethods()) {
- if (!factoryContext.getFactory().getAnnotationIgnores().isIgnoreAnnotations(method)) {
-
- MethodDescriptorImpl methodDesc = new MethodDescriptorImpl(beanDesc.getMetaBean(), new Validation[0]);
- beanDesc.putMethodDescriptor(method, methodDesc);
-
- // return value validations
- AppendValidationToList validations = new AppendValidationToList();
- ReturnAccess returnAccess = new ReturnAccess(method.getReturnType());
- for (Annotation anno : method.getAnnotations()) {
- if (anno instanceof Valid || anno instanceof Validate) {
- methodDesc.setCascaded(true);
- } else {
- processAnnotation(anno, methodDesc, returnAccess, validations);
- }
- }
- methodDesc.addValidations(validations.getValidations());
-
- // parameter validations
- Annotation[][] paramsAnnos = method.getParameterAnnotations();
- int idx = 0;
- for (Annotation[] paramAnnos : paramsAnnos) {
- ParameterAccess access = new ParameterAccess(method.getParameterTypes()[idx], idx);
- processAnnotations(methodDesc, paramAnnos, access, idx);
- idx++;
- }
- }
- }
- }
-
- private void processAnnotations(ProcedureDescriptor methodDesc, Annotation[] paramAnnos, AccessStrategy access,
- int idx) throws InvocationTargetException, IllegalAccessException {
- AppendValidationToList validations = new AppendValidationToList();
- boolean cascaded = false;
- for (Annotation anno : paramAnnos) {
- if (anno instanceof Valid || anno instanceof Validate) {
- cascaded = true;
- } else {
- processAnnotation(anno, methodDesc, access, validations);
- }
- }
- ParameterDescriptorImpl paramDesc =
- new ParameterDescriptorImpl(methodDesc.getMetaBean(), validations.getValidations().toArray(
- new Validation[validations.getValidations().size()]));
- paramDesc.setIndex(idx);
- paramDesc.setCascaded(cascaded);
- methodDesc.getParameterDescriptors().add(paramDesc);
- }
-
- private <A extends Annotation> void processAnnotation(A annotation, ProcedureDescriptor desc,
- AccessStrategy access, AppendValidation validations) throws InvocationTargetException, IllegalAccessException {
-
- if (annotation instanceof Valid || annotation instanceof Validate) {
- desc.setCascaded(true);
- } else {
- Constraint vcAnno = annotation.annotationType().getAnnotation(Constraint.class);
- if (vcAnno != null) {
- annotationProcessor.processAnnotation(annotation, null,
- ClassUtils.primitiveToWrapper((Class<?>) access.getJavaType()), access, validations);
- } else {
- /**
- * Multi-valued constraints
- */
- if (ConstraintAnnotationAttributes.VALUE.isDeclaredOn(annotation.annotationType())) {
- Annotation[] children = ConstraintAnnotationAttributes.VALUE.getValue(annotation);
- if (children != null) {
- for (Annotation child : children) {
- processAnnotation(child, desc, access, validations); // recursion
- }
- }
- }
- }
- }
- }
-
-}
diff --git a/trunk/bval-jsr303/src/main/java/org/apache/bval/jsr303/extensions/ParameterAccess.java b/trunk/bval-jsr303/src/main/java/org/apache/bval/jsr303/extensions/ParameterAccess.java
deleted file mode 100644
index a0f5bc0..0000000
--- a/trunk/bval-jsr303/src/main/java/org/apache/bval/jsr303/extensions/ParameterAccess.java
+++ /dev/null
@@ -1,80 +0,0 @@
-/*
- * 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.bval.jsr303.extensions;
-
-import org.apache.bval.util.AccessStrategy;
-
-import java.lang.annotation.ElementType;
-import java.lang.reflect.Type;
-
-
-/**
- * Implementation of {@link AccessStrategy} for method parameters.
- *
- * @author Carlos Vara
- */
-public class ParameterAccess extends AccessStrategy {
-
- private Type paramType;
- private int paramIdx;
-
- /**
- * Create a new ParameterAccess instance.
- * @param paramType
- * @param paramIdx
- */
- public ParameterAccess(Type paramType, int paramIdx ) {
- this.paramType = paramType;
- this.paramIdx = paramIdx;
- }
-
- /**
- * {@inheritDoc}
- */
- @Override
- public Object get(Object instance) {
- throw new UnsupportedOperationException("Obtaining a parameter value not yet implemented");
- }
-
- /**
- * {@inheritDoc}
- */
- @Override
- public ElementType getElementType() {
- return ElementType.PARAMETER;
- }
-
- /**
- * {@inheritDoc}
- */
- @Override
- public Type getJavaType() {
- return this.paramType;
- }
-
- /**
- * {@inheritDoc}
- */
- @Override
- public String getPropertyName() {
- return "" + paramIdx;
- }
-
-}
diff --git a/trunk/bval-jsr303/src/main/java/org/apache/bval/jsr303/extensions/ParameterDescriptor.java b/trunk/bval-jsr303/src/main/java/org/apache/bval/jsr303/extensions/ParameterDescriptor.java
deleted file mode 100644
index 97f5752..0000000
--- a/trunk/bval-jsr303/src/main/java/org/apache/bval/jsr303/extensions/ParameterDescriptor.java
+++ /dev/null
@@ -1,39 +0,0 @@
-/*
- * 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.bval.jsr303.extensions;
-
-import javax.validation.metadata.ElementDescriptor;
-
-/**
- * Description: This class will disappear when such
- * functionality is part of the JSR303 specification.<br/>
- */
-public interface ParameterDescriptor extends ElementDescriptor {
- /**
- * Is the parameter marked by the <code>@Valid</code> annotation.
- *
- * @return <code>true</code> if the annotation is present, <code>false</code> otherwise.
- */
- boolean isCascaded();
-
- /**
- * Get the index of the referenced parameter.
- * @return int
- */
- int getIndex();
-}
-
diff --git a/trunk/bval-jsr303/src/main/java/org/apache/bval/jsr303/extensions/ParameterDescriptorImpl.java b/trunk/bval-jsr303/src/main/java/org/apache/bval/jsr303/extensions/ParameterDescriptorImpl.java
deleted file mode 100644
index 2ca9bf0..0000000
--- a/trunk/bval-jsr303/src/main/java/org/apache/bval/jsr303/extensions/ParameterDescriptorImpl.java
+++ /dev/null
@@ -1,79 +0,0 @@
-/*
- * 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.bval.jsr303.extensions;
-
-import org.apache.bval.jsr303.ElementDescriptorImpl;
-import org.apache.bval.model.MetaBean;
-import org.apache.bval.model.Validation;
-
-
-/**
- * Description: {@link ParameterDescriptor} implementation.<br/>
- */
-public class ParameterDescriptorImpl extends ElementDescriptorImpl
- implements ParameterDescriptor {
- private boolean cascaded;
- private int index;
-
- /**
- * Create a new ParameterDescriptorImpl instance.
- * @param metaBean
- * @param validations
- */
- public ParameterDescriptorImpl(MetaBean metaBean, Validation[] validations) {
- super(metaBean, metaBean.getClass(), validations);
- }
-
- /**
- * Create a new ParameterDescriptorImpl instance.
- * @param elementClass
- * @param validations
- */
- public ParameterDescriptorImpl(Class<?> elementClass, Validation[] validations) {
- super(elementClass, validations);
- }
-
- /**
- * {@inheritDoc}
- */
- public boolean isCascaded() {
- return cascaded;
- }
-
- /**
- * Set whether the referenced parameter descriptor should be validated.
- * @param cascaded
- */
- public void setCascaded(boolean cascaded) {
- this.cascaded = cascaded;
- }
-
- /**
- * {@inheritDoc}
- */
- public int getIndex() {
- return index;
- }
-
- /**
- * Set the index of the referenced parameter.
- * @param index
- */
- public void setIndex(int index) {
- this.index = index;
- }
-}
diff --git a/trunk/bval-jsr303/src/main/java/org/apache/bval/jsr303/extensions/ProcedureDescriptor.java b/trunk/bval-jsr303/src/main/java/org/apache/bval/jsr303/extensions/ProcedureDescriptor.java
deleted file mode 100644
index a8ef674..0000000
--- a/trunk/bval-jsr303/src/main/java/org/apache/bval/jsr303/extensions/ProcedureDescriptor.java
+++ /dev/null
@@ -1,45 +0,0 @@
-/*
- * 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.bval.jsr303.extensions;
-
-
-import org.apache.bval.model.MetaBean;
-
-import java.util.List;
-
-/**
- * Description: superinterface of {@link ConstructorDescriptor} and {@link MethodDescriptor}.<br/>
- */
-public interface ProcedureDescriptor {
- /**
- * Get the owning metabean.
- * @return MetaBean
- */
- MetaBean getMetaBean();
-
- /**
- * Set whether this procedure should be validated.
- * @param b
- */
- void setCascaded(boolean b);
-
- /**
- * Get the parameter descriptors of this procedure.
- * @return {@link List} of {@link ParameterDescriptor}
- */
- List<ParameterDescriptor> getParameterDescriptors();
-}
diff --git a/trunk/bval-jsr303/src/main/java/org/apache/bval/jsr303/extensions/ReturnAccess.java b/trunk/bval-jsr303/src/main/java/org/apache/bval/jsr303/extensions/ReturnAccess.java
deleted file mode 100644
index 261b52c..0000000
--- a/trunk/bval-jsr303/src/main/java/org/apache/bval/jsr303/extensions/ReturnAccess.java
+++ /dev/null
@@ -1,76 +0,0 @@
-/*
- * 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.bval.jsr303.extensions;
-
-import org.apache.bval.util.AccessStrategy;
-
-import java.lang.annotation.ElementType;
-import java.lang.reflect.Type;
-
-/**
- * Implementation of {@link AccessStrategy} for method return values.
- *
- * @author Carlos Vara
- */
-public class ReturnAccess extends AccessStrategy {
-
- private Type returnType;
-
- /**
- * Create a new ReturnAccess instance.
- * @param returnType
- */
- public ReturnAccess(Type returnType) {
- this.returnType = returnType;
- }
-
- /**
- * {@inheritDoc}
- */
- @Override
- public Object get(Object instance) {
- throw new UnsupportedOperationException("Obtaining a method return value not yet implemented");
- }
-
- /**
- * {@inheritDoc}
- */
- @Override
- public ElementType getElementType() {
- return ElementType.METHOD;
- }
-
- /**
- * {@inheritDoc}
- */
- @Override
- public Type getJavaType() {
- return this.returnType;
- }
-
- /**
- * {@inheritDoc}
- */
- @Override
- public String getPropertyName() {
- return "Return value";
- }
-
-}
diff --git a/trunk/bval-jsr303/src/main/java/org/apache/bval/jsr303/groups/Group.java b/trunk/bval-jsr303/src/main/java/org/apache/bval/jsr303/groups/Group.java
deleted file mode 100644
index 3ba48eb..0000000
--- a/trunk/bval-jsr303/src/main/java/org/apache/bval/jsr303/groups/Group.java
+++ /dev/null
@@ -1,85 +0,0 @@
-/*
- * 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.bval.jsr303.groups;
-
-import javax.validation.groups.Default;
-
-import org.apache.commons.lang3.ObjectUtils;
-
-/**
- * Immutable object that wraps an interface representing a single group.
- */
-public final class Group {
- /**
- * the Default Group
- */
- public static final Group DEFAULT = new Group(Default.class);
-
- private final Class<?> group;
-
- /**
- * Create a new Group instance.
- * @param group
- */
- public Group(Class<?> group) {
- this.group = group;
- }
-
- /**
- * Get the actual group class.
- * @return
- */
- public Class<?> getGroup() {
- return group;
- }
-
- /**
- * {@inheritDoc}
- */
- @Override
- public String toString() {
- return "Group{" + "group=" + group + '}';
- }
-
- /**
- * Learn whether the group represented is the default group.
- * @return boolean
- */
- public boolean isDefault() {
- return Default.class.equals(group);
- }
-
- /**
- * {@inheritDoc}
- */
- @Override
- public boolean equals(Object o) {
- if (this == o) return true;
- if (o instanceof Group == false) return false;
- return ObjectUtils.equals(group, ((Group) o).group);
- }
-
- /**
- * {@inheritDoc}
- */
- @Override
- public int hashCode() {
- return (group != null ? group.hashCode() : 0);
- }
-}
diff --git a/trunk/bval-jsr303/src/main/java/org/apache/bval/jsr303/groups/Groups.java b/trunk/bval-jsr303/src/main/java/org/apache/bval/jsr303/groups/Groups.java
deleted file mode 100644
index 12e2526..0000000
--- a/trunk/bval-jsr303/src/main/java/org/apache/bval/jsr303/groups/Groups.java
+++ /dev/null
@@ -1,117 +0,0 @@
-/*
- * 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.bval.jsr303.groups;
-
-
-import javax.validation.GroupDefinitionException;
-import java.util.LinkedList;
-import java.util.List;
-
-/**
- * Defines the order to validate groups during validation.
- * with some inspiration from reference implementation
- *
- * @author Roman Stumm
- */
-public class Groups {
- /** The list of single groups. */
- protected List<Group> groups = new LinkedList<Group>();
-
- /** The list of sequences. */
- protected List<List<Group>> sequences = new LinkedList<List<Group>>();
-
- /**
- * Get the Groups.
- * @return {@link List} of {@link Group}.
- */
- public List<Group> getGroups() {
- return groups;
- }
-
- /**
- * Get the Group sequences.
- * @return {@link List} of {@link List} of {@link Group}
- */
- public List<List<Group>> getSequences() {
- return sequences;
- }
-
- /**
- * Insert a {@link Group}.
- * @param group to insert
- */
- void insertGroup(Group group) {
- if (!groups.contains(group)) {
- groups.add(group);
- }
- }
-
- /**
- * Insert a sequence.
- * @param groups {@link List} of {@link Group} to insert
- */
- void insertSequence(List<Group> groups) {
- if (groups == null || groups.isEmpty()) {
- return;
- }
-
- if (!sequences.contains(groups)) {
- sequences.add(groups);
- }
- }
-
- /**
- * Assert that the default group can be expanded to <code>defaultGroups</code>.
- * @param defaultGroups
- */
- public void assertDefaultGroupSequenceIsExpandable(List<Group> defaultGroups) {
- for (List<Group> groupList : sequences) {
- int idx = groupList.indexOf(Group.DEFAULT);
- if (idx != -1) {
- ensureExpandable(groupList, defaultGroups, idx);
- }
- }
- }
-
- private void ensureExpandable(List<Group> groupList, List<Group> defaultGroupList,
- int defaultGroupIndex) {
- for (int i = 0; i < defaultGroupList.size(); i++) {
- Group group = defaultGroupList.get(i);
- if (group.isDefault()) {
- continue; // the default group is the one we want to replace
- }
- int index = groupList
- .indexOf(group); // sequence contains group of default group sequence
- if (index == -1) {
- continue; // if group is not in the sequence
- }
-
- if ((i == 0 && index == defaultGroupIndex - 1) ||
- (i == defaultGroupList.size() - 1 && index == defaultGroupIndex + 1)) {
- // if we are at the beginning or end of he defaultGroupSequence and the
- // matches are either directly before or after we can continue,
- // since we basically have two groups
- continue;
- }
- throw new GroupDefinitionException("Unable to expand default group list" +
- defaultGroupList + " into sequence " + groupList);
- }
- }
-
-}
\ No newline at end of file
diff --git a/trunk/bval-jsr303/src/main/java/org/apache/bval/jsr303/groups/GroupsComputer.java b/trunk/bval-jsr303/src/main/java/org/apache/bval/jsr303/groups/GroupsComputer.java
deleted file mode 100644
index 49b8803..0000000
--- a/trunk/bval-jsr303/src/main/java/org/apache/bval/jsr303/groups/GroupsComputer.java
+++ /dev/null
@@ -1,143 +0,0 @@
-/*
- * 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.bval.jsr303.groups;
-
-
-import javax.validation.GroupDefinitionException;
-import javax.validation.GroupSequence;
-import javax.validation.ValidationException;
-import javax.validation.groups.Default;
-import java.util.*;
-
-/**
- * Description: compute group order, based on the RI behavior as to guarantee
- * compatibility with interpretations of the spec.<br/>
- * Implementation is thread-safe.
- */
-public class GroupsComputer {
- /** The default group array used in case any of the validate methods is called without a group. */
- private static final Groups DEFAULT_GROUPS;
-
- static {
- DEFAULT_GROUPS = new GroupsComputer().computeGroups(Arrays.asList(getDefaultGroupArray()));
- }
-
- /**
- * Get the default group array.
- * @return <code>{@link Default}.class</code> only
- */
- public static Class<?>[] getDefaultGroupArray() {
- return new Class<?>[] { Default.class };
- }
-
- /** caching resolved groups in a thread-safe map. */
- private final Map<Class<?>, List<Group>> resolvedSequences = Collections
- .synchronizedMap(new HashMap<Class<?>, List<Group>>());
-
- /**
- * Compute groups from an array of group classes.
- * @param groups
- * @return {@link Groups}
- */
- public Groups computeGroups(Class<?>[] groups) {
- if (groups == null) {
- throw new IllegalArgumentException("null passed as group");
- }
-
- // if no groups is specified use the default
- if (groups.length == 0) {
- return DEFAULT_GROUPS;
- }
-
- return computeGroups(Arrays.asList(groups));
- }
-
- /**
- * Main compute implementation.
- * @param groups
- * @return {@link Groups}
- */
- protected Groups computeGroups(Collection<Class<?>> groups) {
- if (groups == null || groups.size() == 0) {
- throw new IllegalArgumentException("At least one group has to be specified.");
- }
-
- for (Class<?> clazz : groups) {
- if (!clazz.isInterface()) {
- throw new ValidationException(
- "A group has to be an interface. " + clazz.getName() + " is not.");
- }
- }
-
- Groups chain = new Groups();
- for (Class<?> clazz : groups) {
- GroupSequence anno = clazz.getAnnotation(GroupSequence.class);
- if (anno == null) {
- Group group = new Group(clazz);
- chain.insertGroup(group);
- insertInheritedGroups(clazz, chain);
- } else {
- insertSequence(clazz, anno, chain);
- }
- }
-
- return chain;
- }
-
- private void insertInheritedGroups(Class<?> clazz, Groups chain) {
- for (Class<?> extendedInterface : clazz.getInterfaces()) {
- Group group = new Group(extendedInterface);
- chain.insertGroup(group);
- insertInheritedGroups(extendedInterface, chain);
- }
- }
-
- private void insertSequence(Class<?> clazz, GroupSequence anno, Groups chain) {
- List<Group> sequence;
- if (resolvedSequences.containsKey(clazz)) {
- sequence = resolvedSequences.get(clazz);
- } else {
- sequence = resolveSequence(clazz, anno, new HashSet<Class<?>>());
- }
- chain.insertSequence(sequence);
- }
-
- private List<Group> resolveSequence(Class<?> group, GroupSequence sequenceAnnotation,
- Set<Class<?>> processedSequences) {
- if (processedSequences.contains(group)) {
- throw new GroupDefinitionException("Cyclic dependency in groups definition");
- } else {
- processedSequences.add(group);
- }
- List<Group> resolvedGroupSequence = new LinkedList<Group>();
- Class<?>[] sequenceArray = sequenceAnnotation.value();
- for (Class<?> clazz : sequenceArray) {
- GroupSequence anno = clazz.getAnnotation(GroupSequence.class);
- if (anno == null) {
- resolvedGroupSequence.add(new Group(clazz)); // group part of sequence
- } else {
- List<Group> tmpSequence =
- resolveSequence(clazz, anno, processedSequences); // recursion!
- resolvedGroupSequence.addAll(tmpSequence);
- }
- }
- resolvedSequences.put(group, resolvedGroupSequence);
- return resolvedGroupSequence;
- }
-}
diff --git a/trunk/bval-jsr303/src/main/java/org/apache/bval/jsr303/resolver/CachingRelevant.java b/trunk/bval-jsr303/src/main/java/org/apache/bval/jsr303/resolver/CachingRelevant.java
deleted file mode 100644
index 5b9502e..0000000
--- a/trunk/bval-jsr303/src/main/java/org/apache/bval/jsr303/resolver/CachingRelevant.java
+++ /dev/null
@@ -1,33 +0,0 @@
-/*
- * 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.bval.jsr303.resolver;
-
-import javax.validation.TraversableResolver;
-
-/**
- * Description: indicator interface to let the implementation choose
- * whether results of traversable resolver should be cached.<br/>
- */
-public interface CachingRelevant {
- /**
- * Learn whether the results of the {@link TraversableResolver} should be cached.
- * @return boolean
- */
- boolean needsCaching();
-}
diff --git a/trunk/bval-jsr303/src/main/java/org/apache/bval/jsr303/resolver/CachingTraversableResolver.java b/trunk/bval-jsr303/src/main/java/org/apache/bval/jsr303/resolver/CachingTraversableResolver.java
deleted file mode 100644
index bf56680..0000000
--- a/trunk/bval-jsr303/src/main/java/org/apache/bval/jsr303/resolver/CachingTraversableResolver.java
+++ /dev/null
@@ -1,192 +0,0 @@
-/*
- * 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.bval.jsr303.resolver;
-
-import javax.validation.Path;
-import javax.validation.TraversableResolver;
-import java.lang.annotation.ElementType;
-import java.util.HashMap;
-import java.util.Map;
-
-/**
- * Cache results of a delegated traversable resovler to optimize calls
- * It works only for a single validate* call and should not be used if
- * the TraversableResolver is accessed concurrently
- * <p/>
- * Date: 25.11.2009 <br/>
- * Time: 13:56:18 <br/>
- *
- * @author Roman Stumm (based on the code of Emmanuel Bernard)
- */
-public class CachingTraversableResolver implements TraversableResolver, CachingRelevant {
- private TraversableResolver delegate;
- private Map<CacheEntry, CacheEntry> cache = new HashMap<CacheEntry, CacheEntry>();
-
- /**
- * Convenience method to check whether caching is necessary on a given {@link TraversableResolver}.
- * @param resolver to check
- * @return true when a CachingTraversableResolver is to be used during validation
- */
- public static boolean needsCaching(TraversableResolver resolver) {
- // caching, if we do not know exactly
- return !(resolver instanceof CachingRelevant) ||
- ((CachingRelevant) resolver).needsCaching();
- }
-
- /**
- * Create a new CachingTraversableResolver instance.
- * @param delegate
- */
- public CachingTraversableResolver(TraversableResolver delegate) {
- this.delegate = delegate;
- }
-
- /**
- * If necessary, return a caching wrapper for the specified {@link TraversableResolver}.
- * @param traversableResolver
- * @return {@link TraversableResolver}
- * @see #needsCaching(TraversableResolver)
- */
- public static TraversableResolver cacheFor(TraversableResolver traversableResolver) {
- if (needsCaching(traversableResolver)) {
- return new CachingTraversableResolver(traversableResolver);
- } else {
- return traversableResolver;
- }
- }
-
- /**
- * {@inheritDoc}
- */
- public boolean isReachable(Object traversableObject, Path.Node traversableProperty,
- Class<?> rootBeanType, Path pathToTraversableObject,
- ElementType elementType) {
- CacheEntry currentLH = new CacheEntry(traversableObject, traversableProperty,
- rootBeanType, pathToTraversableObject, elementType);
- CacheEntry cachedLH = cache.get(currentLH);
- if (cachedLH == null) {
- currentLH.reachable = delegate.isReachable(traversableObject, traversableProperty,
- rootBeanType, pathToTraversableObject, elementType);
- cache.put(currentLH, currentLH);
- cachedLH = currentLH;
- } else if (cachedLH.reachable == null) {
- cachedLH.reachable = delegate.isReachable(traversableObject, traversableProperty,
- rootBeanType, pathToTraversableObject, elementType);
- }
- return cachedLH.reachable;
- }
-
- /**
- * {@inheritDoc}
- */
- public boolean isCascadable(Object traversableObject, Path.Node traversableProperty,
- Class<?> rootBeanType, Path pathToTraversableObject,
- ElementType elementType) {
- CacheEntry currentLH = new CacheEntry(traversableObject, traversableProperty,
- rootBeanType, pathToTraversableObject, elementType);
- CacheEntry cachedLH = cache.get(currentLH);
- if (cachedLH == null) {
- currentLH.cascadable = delegate.isCascadable(traversableObject,
- traversableProperty, rootBeanType, pathToTraversableObject, elementType);
- cache.put(currentLH, currentLH);
- cachedLH = currentLH;
- } else if (cachedLH.cascadable == null) {
- cachedLH.cascadable = delegate.isCascadable(traversableObject, traversableProperty,
- rootBeanType, pathToTraversableObject, elementType);
- }
- return cachedLH.cascadable;
- }
-
- /**
- * {@inheritDoc}
- */
- public boolean needsCaching() {
- return false; // I am the cache. Do not need cache for cache
- }
-
- /**
- * Entry in the cache.
- */
- private static class CacheEntry {
- private final Object object;
- private final Path.Node node;
- private final Class<?> type;
- private final Path path;
- private final ElementType elementType;
- private final int hashCode;
-
- private Boolean reachable;
- private Boolean cascadable;
-
- /**
- * Create a new CacheEntry instance.
- * @param traversableObject
- * @param traversableProperty
- * @param rootBeanType
- * @param pathToTraversableObject
- * @param elementType
- */
- private CacheEntry(Object traversableObject, Path.Node traversableProperty,
- Class<?> rootBeanType, Path pathToTraversableObject,
- ElementType elementType) {
- this.object = traversableObject;
- this.node = traversableProperty;
- this.type = rootBeanType;
- this.path = pathToTraversableObject;
- this.elementType = elementType;
- this.hashCode = buildHashCode();
- }
-
- /**
- * {@inheritDoc}
- */
- @Override
- public boolean equals(Object o) {
- if (this == o) {
- return true;
- }
- if (o == null || getClass() != o.getClass()) {
- return false;
- }
-
- CacheEntry that = (CacheEntry) o;
-
- return elementType == that.elementType && path.equals(that.path) &&
- type.equals(that.type) &&
- !(object != null ? !object.equals(that.object) : that.object != null) &&
- node.equals(that.node);
-
- }
-
- /**
- * {@inheritDoc}
- */
- @Override
- public int hashCode() {
- return hashCode;
- }
-
- private int buildHashCode() {
- int result = object != null ? object.hashCode() : 0;
- result = 31 * result + node.hashCode();
- result = 31 * result + type.hashCode();
- result = 31 * result + path.hashCode();
- result = 31 * result + elementType.hashCode();
- return result;
- }
- }
-}
\ No newline at end of file
diff --git a/trunk/bval-jsr303/src/main/java/org/apache/bval/jsr303/resolver/DefaultTraversableResolver.java b/trunk/bval-jsr303/src/main/java/org/apache/bval/jsr303/resolver/DefaultTraversableResolver.java
deleted file mode 100644
index e6fc000..0000000
--- a/trunk/bval-jsr303/src/main/java/org/apache/bval/jsr303/resolver/DefaultTraversableResolver.java
+++ /dev/null
@@ -1,123 +0,0 @@
-/*
- * 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.bval.jsr303.resolver;
-
-import java.lang.annotation.ElementType;
-import java.security.AccessController;
-import java.security.PrivilegedAction;
-import java.util.logging.Level;
-import java.util.logging.Logger;
-
-import javax.validation.Path;
-import javax.validation.TraversableResolver;
-
-import org.apache.bval.jsr303.util.ClassHelper;
-import org.apache.bval.util.PrivilegedActions;
-import org.apache.commons.lang3.ClassUtils;
-
-/** @see javax.validation.TraversableResolver */
-public class DefaultTraversableResolver implements TraversableResolver, CachingRelevant {
- private static final Logger log = Logger.getLogger(DefaultTraversableResolver.class.getName());
-
- /** Class to load to check whether JPA 2 is on the classpath. */
- private static final String PERSISTENCE_UTIL_CLASSNAME =
- "javax.persistence.PersistenceUtil";
-
- /** Class to instantiate in case JPA 2 is on the classpath. */
- private static final String JPA_AWARE_TRAVERSABLE_RESOLVER_CLASSNAME =
- "org.apache.bval.jsr303.resolver.JPATraversableResolver";
-
-
- private TraversableResolver jpaTR;
-
- /**
- * Create a new DefaultTraversableResolver instance.
- */
- public DefaultTraversableResolver() {
- initJpa();
- }
-
- /**
- * {@inheritDoc}
- */
- public boolean isReachable(Object traversableObject, Path.Node traversableProperty,
- Class<?> rootBeanType, Path pathToTraversableObject,
- ElementType elementType) {
- return jpaTR == null || jpaTR.isReachable(traversableObject, traversableProperty,
- rootBeanType, pathToTraversableObject, elementType);
- }
-
- /**
- * {@inheritDoc}
- */
- public boolean isCascadable(Object traversableObject, Path.Node traversableProperty,
- Class<?> rootBeanType, Path pathToTraversableObject,
- ElementType elementType) {
- return jpaTR == null || jpaTR.isCascadable(traversableObject, traversableProperty,
- rootBeanType, pathToTraversableObject, elementType);
- }
-
- /** Tries to load detect and load JPA. */
- @SuppressWarnings("unchecked")
- private void initJpa() {
- final ClassLoader classLoader = getClassLoader();
- try {
- PrivilegedActions.getClass(classLoader, PERSISTENCE_UTIL_CLASSNAME);
- log.log(Level.FINEST, String.format("Found %s on classpath.", PERSISTENCE_UTIL_CLASSNAME));
- } catch (Exception e) {
- log.log(Level.FINEST, String.format("Cannot find %s on classpath. All properties will per default be traversable.", PERSISTENCE_UTIL_CLASSNAME));
- return;
- }
-
- try {
- Class<? extends TraversableResolver> jpaAwareResolverClass =
- (Class<? extends TraversableResolver>)
- ClassUtils.getClass(classLoader, JPA_AWARE_TRAVERSABLE_RESOLVER_CLASSNAME, true);
- jpaTR = jpaAwareResolverClass.newInstance();
- log.log(Level.FINEST, String.format("Instantiated an instance of %s.", JPA_AWARE_TRAVERSABLE_RESOLVER_CLASSNAME));
- } catch (Exception e) {
- log.log(Level.WARNING,
- String.format(
- "Unable to load or instantiate JPA aware resolver %s. All properties will per default be traversable.",
- JPA_AWARE_TRAVERSABLE_RESOLVER_CLASSNAME, e));
- }
- }
-
- /**
- * {@inheritDoc}
- */
- public boolean needsCaching() {
- return jpaTR != null && CachingTraversableResolver.needsCaching(jpaTR);
- }
-
- private static ClassLoader getClassLoader()
- {
- return (System.getSecurityManager() == null)
- ? getClassLoader0()
- : AccessController.doPrivileged(new PrivilegedAction<ClassLoader>() {
- public ClassLoader run() {
- return getClassLoader0();
- }
- });
- }
-
- private static ClassLoader getClassLoader0()
- {
- final ClassLoader loader = Thread.currentThread().getContextClassLoader();
- return (loader != null) ? loader : ClassHelper.class.getClassLoader();
- }
-}
diff --git a/trunk/bval-jsr303/src/main/java/org/apache/bval/jsr303/resolver/JPATraversableResolver.java b/trunk/bval-jsr303/src/main/java/org/apache/bval/jsr303/resolver/JPATraversableResolver.java
deleted file mode 100644
index 409ac52..0000000
--- a/trunk/bval-jsr303/src/main/java/org/apache/bval/jsr303/resolver/JPATraversableResolver.java
+++ /dev/null
@@ -1,53 +0,0 @@
-/*
- * 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.bval.jsr303.resolver;
-
-import javax.persistence.Persistence;
-import javax.validation.Path;
-import javax.validation.TraversableResolver;
-import java.lang.annotation.ElementType;
-
-
-/** @see javax.validation.TraversableResolver */
-public class JPATraversableResolver implements TraversableResolver, CachingRelevant {
-
- /**
- * {@inheritDoc}
- */
- public boolean isReachable(Object traversableObject, Path.Node traversableProperty,
- Class<?> rootBeanType, Path pathToTraversableObject,
- ElementType elementType) {
- return traversableObject == null || Persistence.getPersistenceUtil()
- .isLoaded(traversableObject, traversableProperty.getName());
- }
-
- /**
- * {@inheritDoc}
- */
- public boolean isCascadable(Object traversableObject, Path.Node traversableProperty,
- Class<?> rootBeanType, Path pathToTraversableObject,
- ElementType elementType) {
- return true;
- }
-
- /**
- * {@inheritDoc}
- */
- public boolean needsCaching() {
- return true; // yes
- }
-}
diff --git a/trunk/bval-jsr303/src/main/java/org/apache/bval/jsr303/resolver/SimpleTraversableResolver.java b/trunk/bval-jsr303/src/main/java/org/apache/bval/jsr303/resolver/SimpleTraversableResolver.java
deleted file mode 100644
index ff5a3a3..0000000
--- a/trunk/bval-jsr303/src/main/java/org/apache/bval/jsr303/resolver/SimpleTraversableResolver.java
+++ /dev/null
@@ -1,56 +0,0 @@
-/*
- * 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.bval.jsr303.resolver;
-
-import javax.validation.Path;
-import javax.validation.TraversableResolver;
-import java.lang.annotation.ElementType;
-
-/**
- * Description: traversable resolver that does always resolve.<br/>
- */
-public class SimpleTraversableResolver implements TraversableResolver, CachingRelevant {
- /**
- * {@inheritDoc}
- * @return <code>true</code>
- */
- public boolean isReachable(Object traversableObject, Path.Node traversableProperty,
- Class<?> rootBeanType, Path pathToTraversableObject,
- java.lang.annotation.ElementType elementType) {
- return true;
- }
-
- /**
- * {@inheritDoc}
- * @return <code>true</code>
- */
- public boolean isCascadable(Object traversableObject, Path.Node traversableProperty,
- Class<?> rootBeanType, Path pathToTraversableObject,
- ElementType elementType) {
- return true;
- }
-
- /**
- * {@inheritDoc}
- * @return <code>false</code>
- */
- public boolean needsCaching() {
- return false; // no
- }
-}
diff --git a/trunk/bval-jsr303/src/main/java/org/apache/bval/jsr303/util/ClassHelper.java b/trunk/bval-jsr303/src/main/java/org/apache/bval/jsr303/util/ClassHelper.java
deleted file mode 100644
index eeaf301..0000000
--- a/trunk/bval-jsr303/src/main/java/org/apache/bval/jsr303/util/ClassHelper.java
+++ /dev/null
@@ -1,82 +0,0 @@
-/*
- * 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.bval.jsr303.util;
-
-import org.apache.commons.lang3.ClassUtils;
-
-import java.security.AccessController;
-import java.util.List;
-
-/**
- * Common operations on classes that do not require an {@link AccessController}.
- *
- * @author Carlos Vara
- */
-public class ClassHelper {
-
- private ClassHelper() {
- // No instances please
- }
-
- /**
- * Fill the list with the full class/interface hierarchy of the given class.
- * List is ordered from the most to less specific.
- *
- * @param allClasses
- * The current list of classes in the hierarchy.
- * @param clazz
- * The current class, root of the hierarchy to traverse.
- */
- static public void fillFullClassHierarchyAsList(List<Class<?>> allClasses, Class<?> clazz) {
- if (clazz == null || clazz == Object.class) {
- return;
- }
- if (allClasses.contains(clazz)) {
- return;
- }
- allClasses.add(clazz);
- fillFullClassHierarchyAsList(allClasses, clazz.getSuperclass());
- for (Class<?> subClass : clazz.getInterfaces()) {
- fillFullClassHierarchyAsList(allClasses, subClass);
- }
- }
-
- /**
- * @deprecated Will be removed for security reasons.
- *
- * Perform ClassUtils.getClass functions with Java 2 Security enabled.
- */
- @Deprecated
- public static Class<?> getClass(String className) throws ClassNotFoundException {
- return getClass(className, true);
- }
-
- /**
- * @deprecated Will be removed for security reasons.
- *
- * Perform ClassUtils.getClass functions with Java 2 Security enabled.
- */
- @Deprecated
- public static Class<?> getClass(String className, boolean initialize) throws ClassNotFoundException {
- ClassLoader loader = Thread.currentThread().getContextClassLoader();
- if (loader == null)
- loader = ClassHelper.class.getClassLoader();
- return ClassUtils.getClass(loader, className, initialize);
- }
-}
diff --git a/trunk/bval-jsr303/src/main/java/org/apache/bval/jsr303/util/ConstraintDefinitionValidator.java b/trunk/bval-jsr303/src/main/java/org/apache/bval/jsr303/util/ConstraintDefinitionValidator.java
deleted file mode 100644
index 4b7b48b..0000000
--- a/trunk/bval-jsr303/src/main/java/org/apache/bval/jsr303/util/ConstraintDefinitionValidator.java
+++ /dev/null
@@ -1,79 +0,0 @@
-/*
- * 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.bval.jsr303.util;
-
-import javax.validation.Constraint;
-import javax.validation.ConstraintDefinitionException;
-
-import org.apache.bval.jsr303.ConstraintAnnotationAttributes;
-
-import java.lang.annotation.Annotation;
-import java.lang.reflect.Method;
-import java.security.AccessController;
-import java.security.PrivilegedAction;
-import java.util.Locale;
-
-/**
- * Internal validator that ensures the correct definition of constraint
- * annotations.
- *
- * @author Carlos Vara
- */
-public class ConstraintDefinitionValidator {
-
- /**
- * Ensures that the constraint definition is valid.
- *
- * @param annotation
- * An annotation which is annotated with {@link Constraint}.
- * @throws ConstraintDefinitionException
- * In case the constraint is invalid.
- */
- public static void validateConstraintDefinition(Annotation annotation) {
- ConstraintAnnotationAttributes.GROUPS.validateOn(annotation.annotationType());
- ConstraintAnnotationAttributes.PAYLOAD.validateOn(annotation.annotationType());
- ConstraintAnnotationAttributes.MESSAGE.validateOn(annotation.annotationType());
- validAttributes(annotation);
- }
-
- /**
- * Check that the annotation has no methods that start with "valid".
- *
- * @param annotation
- * The annotation to check.
- */
- private static void validAttributes(final Annotation annotation) {
- final Method[] methods = run(SecureActions.getDeclaredMethods(annotation.annotationType()));
- for (Method method : methods ){
- // Currently case insensitive, the spec is unclear about this
- if (method.getName().toLowerCase(Locale.ENGLISH).startsWith("valid")) {
- throw new ConstraintDefinitionException(
- "A constraint annotation cannot have methods which start with 'valid'");
- }
- }
- }
-
- private static <T> T run(PrivilegedAction<T> action) {
- if (System.getSecurityManager() != null) {
- return AccessController.doPrivileged(action);
- } else {
- return action.run();
- }
- }
-}
diff --git a/trunk/bval-jsr303/src/main/java/org/apache/bval/jsr303/util/EnumerationConverter.java b/trunk/bval-jsr303/src/main/java/org/apache/bval/jsr303/util/EnumerationConverter.java
deleted file mode 100644
index 3e1394f..0000000
--- a/trunk/bval-jsr303/src/main/java/org/apache/bval/jsr303/util/EnumerationConverter.java
+++ /dev/null
@@ -1,75 +0,0 @@
-/*
- * 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.bval.jsr303.util;
-
-import org.apache.commons.beanutils.Converter;
-
-/**
- * A {@code org.apache.commons.beanutils.Converter} implementation to handle
- * Enumeration type.
- *
- * $Id$
- */
-public final class EnumerationConverter implements Converter {
-
- /**
- * The static converter instance.
- */
- private static final EnumerationConverter INSTANCE = new EnumerationConverter();
-
- /**
- * Returns this converter instance.
- *
- * @return this converter instance.
- */
- public static EnumerationConverter getInstance() {
- return INSTANCE;
- }
-
- /**
- * This class can't be instantiated.
- */
- private EnumerationConverter() {
- // do nothing
- }
-
- /**
- * {@inheritDoc}
- */
- @SuppressWarnings({ "unchecked", "rawtypes" })
- public Object convert(Class type, Object value) {
- if (!type.isEnum()) {
- throw new RuntimeException("Only enum types supported in this version!");
- }
-
- if (value == null) {
- throw new RuntimeException("Null values not supported in this version!");
- }
-
- if (String.class != value.getClass()) {
- throw new RuntimeException("Only java.lang.String values supported in this version!");
- }
-
- String stringValue = (String) value;
-
- final Class<Enum> enumClass = (Class<Enum>) type;
- return Enum.valueOf(enumClass, stringValue);
- }
-
-}
diff --git a/trunk/bval-jsr303/src/main/java/org/apache/bval/jsr303/util/IOUtils.java b/trunk/bval-jsr303/src/main/java/org/apache/bval/jsr303/util/IOUtils.java
deleted file mode 100644
index ae0653b..0000000
--- a/trunk/bval-jsr303/src/main/java/org/apache/bval/jsr303/util/IOUtils.java
+++ /dev/null
@@ -1,53 +0,0 @@
-/*
- * 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.bval.jsr303.util;
-
-import java.io.Closeable;
-import java.io.IOException;
-
-/**
- * Commons IO utilities.
- *
- * $Id$
- */
-public final class IOUtils {
-
- /**
- * This class can't be instantiated
- */
- private IOUtils() {
- // do nothing
- }
-
- /**
- * Close quietly a {@link Closeable} reference.
- *
- * @param closeable the {@link Closeable} has to be closed.
- */
- public static void closeQuietly(Closeable closeable) {
- if (closeable != null) {
- try {
- closeable.close();
- } catch (IOException e) {
- // do nothing
- }
- }
- }
-
-}
diff --git a/trunk/bval-jsr303/src/main/java/org/apache/bval/jsr303/util/NodeBuilderCustomizableContextImpl.java b/trunk/bval-jsr303/src/main/java/org/apache/bval/jsr303/util/NodeBuilderCustomizableContextImpl.java
deleted file mode 100644
index 114104b..0000000
--- a/trunk/bval-jsr303/src/main/java/org/apache/bval/jsr303/util/NodeBuilderCustomizableContextImpl.java
+++ /dev/null
@@ -1,80 +0,0 @@
-/*
- * 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.bval.jsr303.util;
-
-
-import org.apache.bval.jsr303.ConstraintValidatorContextImpl;
-
-import javax.validation.ConstraintValidatorContext;
-
-/**
- * Description: implementation of {@link NodeBuilderCustomizableContext}.<br/>
- */
-final class NodeBuilderCustomizableContextImpl
- implements ConstraintValidatorContext.ConstraintViolationBuilder.NodeBuilderCustomizableContext {
- private final ConstraintValidatorContextImpl parent;
- private final String messageTemplate;
- private final PathImpl propertyPath;
- private NodeImpl node;
-
- /**
- * Create a new NodeBuilderCustomizableContextImpl instance.
- * @param contextImpl
- * @param template
- * @param path
- * @param name
- */
- NodeBuilderCustomizableContextImpl(ConstraintValidatorContextImpl contextImpl, String template,
- PathImpl path, String name) {
- parent = contextImpl;
- messageTemplate = template;
- propertyPath = path;
- node = new NodeImpl(name);
- }
-
- /**
- * {@inheritDoc}
- */
- public ConstraintValidatorContext.ConstraintViolationBuilder.NodeContextBuilder inIterable() {
- // Modifies the "previous" node in the path
- node.setInIterable(true);
- return new NodeContextBuilderImpl(parent, messageTemplate, propertyPath, node);
- }
-
- /**
- * {@inheritDoc}
- */
- public ConstraintValidatorContext.ConstraintViolationBuilder.NodeBuilderCustomizableContext addNode(
- String name) {
- propertyPath.addNode(node);
- node = new NodeImpl(name);
- return this; // Re-use this instance
- }
-
- /**
- * {@inheritDoc}
- */
- public ConstraintValidatorContext addConstraintViolation() {
- propertyPath.addNode(node);
- node = null;
- parent.addError(messageTemplate, propertyPath);
- return parent;
- }
-
-}
diff --git a/trunk/bval-jsr303/src/main/java/org/apache/bval/jsr303/util/NodeBuilderDefinedContextImpl.java b/trunk/bval-jsr303/src/main/java/org/apache/bval/jsr303/util/NodeBuilderDefinedContextImpl.java
deleted file mode 100644
index eb666c2..0000000
--- a/trunk/bval-jsr303/src/main/java/org/apache/bval/jsr303/util/NodeBuilderDefinedContextImpl.java
+++ /dev/null
@@ -1,64 +0,0 @@
-/*
- * 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.bval.jsr303.util;
-
-
-import org.apache.bval.jsr303.ConstraintValidatorContextImpl;
-
-import javax.validation.ConstraintValidatorContext;
-
-/**
- * Description: Implementation of {@link NodeBuilderDefinedContext}.<br/>
- */
-public final class NodeBuilderDefinedContextImpl
- implements ConstraintValidatorContext.ConstraintViolationBuilder.NodeBuilderDefinedContext {
- private final ConstraintValidatorContextImpl parent;
- private final String messageTemplate;
- private final PathImpl propertyPath;
-
- /**
- * Create a new NodeBuilderDefinedContextImpl instance.
- * @param contextImpl
- * @param template
- * @param path
- */
- public NodeBuilderDefinedContextImpl(ConstraintValidatorContextImpl contextImpl, String template,
- PathImpl path) {
- parent = contextImpl;
- messageTemplate = template;
- propertyPath = path;
- }
-
- /**
- * {@inheritDoc}
- */
- public ConstraintValidatorContext.ConstraintViolationBuilder.NodeBuilderCustomizableContext addNode(
- String name) {
- // Node not yet added, wait until more information is provided
- return new NodeBuilderCustomizableContextImpl(parent, messageTemplate, propertyPath, name);
- }
-
- /**
- * {@inheritDoc}
- */
- public ConstraintValidatorContext addConstraintViolation() {
- parent.addError(messageTemplate, propertyPath);
- return parent;
- }
-}
diff --git a/trunk/bval-jsr303/src/main/java/org/apache/bval/jsr303/util/NodeContextBuilderImpl.java b/trunk/bval-jsr303/src/main/java/org/apache/bval/jsr303/util/NodeContextBuilderImpl.java
deleted file mode 100644
index d6ab6ae..0000000
--- a/trunk/bval-jsr303/src/main/java/org/apache/bval/jsr303/util/NodeContextBuilderImpl.java
+++ /dev/null
@@ -1,91 +0,0 @@
-/*
- * 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.bval.jsr303.util;
-
-
-import org.apache.bval.jsr303.ConstraintValidatorContextImpl;
-
-import javax.validation.ConstraintValidatorContext;
-import javax.validation.ConstraintValidatorContext.ConstraintViolationBuilder.NodeContextBuilder;
-
-/**
- * Description: Implementation of {@link NodeContextBuilder}.<br/>
- */
-final class NodeContextBuilderImpl
- implements ConstraintValidatorContext.ConstraintViolationBuilder.NodeContextBuilder {
- private final ConstraintValidatorContextImpl parent;
- private final String messageTemplate;
- private final PathImpl propertyPath;
- // The name of the last "added" node, it will only be added if it has a non-null name
- // The actual incorporation in the path will take place when the definition of the current leaf node is complete
- private final NodeImpl node;
-
- /**
- * Create a new NodeContextBuilderImpl instance.
- * @param contextImpl
- * @param template
- * @param path
- */
- NodeContextBuilderImpl(ConstraintValidatorContextImpl contextImpl,
- String template, PathImpl path, NodeImpl node) {
- parent = contextImpl;
- messageTemplate = template;
- propertyPath = path;
- this.node = node;
- }
-
- /**
- * {@inheritDoc}
- */
- public ConstraintValidatorContext.ConstraintViolationBuilder.NodeBuilderDefinedContext atKey(
- Object key) {
- node.setKey(key);
- propertyPath.addNode(node);
- return new NodeBuilderDefinedContextImpl(parent, messageTemplate, propertyPath);
- }
-
- /**
- * {@inheritDoc}
- */
- public ConstraintValidatorContext.ConstraintViolationBuilder.NodeBuilderDefinedContext atIndex(
- Integer index) {
- node.setIndex(index);
- propertyPath.addNode(node);
- return new NodeBuilderDefinedContextImpl(parent, messageTemplate, propertyPath);
- }
-
- /**
- * {@inheritDoc}
- */
- public ConstraintValidatorContext.ConstraintViolationBuilder.NodeBuilderCustomizableContext addNode(
- String name) {
- propertyPath.addNode(node);
- return new NodeBuilderCustomizableContextImpl(parent, messageTemplate, propertyPath, name);
- }
-
- /**
- * {@inheritDoc}
- */
- public ConstraintValidatorContext addConstraintViolation() {
- propertyPath.addNode(node);
- parent.addError(messageTemplate, propertyPath);
- return parent;
- }
-
-}
\ No newline at end of file
diff --git a/trunk/bval-jsr303/src/main/java/org/apache/bval/jsr303/util/NodeImpl.java b/trunk/bval-jsr303/src/main/java/org/apache/bval/jsr303/util/NodeImpl.java
deleted file mode 100644
index 1d851ae..0000000
--- a/trunk/bval-jsr303/src/main/java/org/apache/bval/jsr303/util/NodeImpl.java
+++ /dev/null
@@ -1,223 +0,0 @@
-/*
- * 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.bval.jsr303.util;
-
-import javax.validation.Path;
-import javax.validation.Path.Node;
-
-import java.io.Serializable;
-import java.util.Map;
-
-/**
- * Description: a node (property) as part of a Path.
- * (Implementation based on reference implementation) <br/>
- */
-public final class NodeImpl implements Path.Node, Serializable {
-
- private static final long serialVersionUID = 1L;
- private static final String INDEX_OPEN = "[";
- private static final String INDEX_CLOSE = "]";
-
- /**
- * Append a Node to the specified StringBuilder.
- * @param node
- * @param to
- * @return to
- */
- public static StringBuilder appendNode(Node node, StringBuilder to) {
- if (node.isInIterable()) {
- to.append(INDEX_OPEN);
- if (node.getIndex() != null) {
- to.append(node.getIndex());
- } else if (node.getKey() != null) {
- to.append(node.getKey());
- }
- to.append(INDEX_CLOSE);
- }
- if (node.getName() != null) {
- if (to.length() > 0) {
- to.append(PathImpl.PROPERTY_PATH_SEPARATOR);
- }
- to.append(node.getName());
- }
- return to;
- }
-
- /**
- * Get a NodeImpl indexed from the preceding node (or root).
- * @param index
- * @return NodeImpl
- */
- public static NodeImpl atIndex(Integer index) {
- NodeImpl result = new NodeImpl();
- result.setIndex(index);
- return result;
- }
-
- /**
- * Get a NodeImpl keyed from the preceding node (or root).
- * @param key
- * @return NodeImpl
- */
- public static NodeImpl atKey(Object key) {
- NodeImpl result = new NodeImpl();
- result.setKey(key);
- return result;
- }
-
- private String name;
- private boolean inIterable;
- private Integer index;
- private Object key;
-
- /**
- * Create a new NodeImpl instance.
- * @param name
- */
- public NodeImpl(String name) {
- this.name = name;
- }
-
- /**
- * Create a new NodeImpl instance.
- * @param node
- */
- NodeImpl(Path.Node node) {
- this.name = node.getName();
- this.inIterable = node.isInIterable();
- this.index = node.getIndex();
- this.key = node.getKey();
- }
-
- private NodeImpl() {
- }
-
- /**
- * {@inheritDoc}
- */
- public String getName() {
- return name;
- }
-
- /**
- * @param name the name to set
- */
- public void setName(String name) {
- this.name = name;
- }
-
- /**
- * {@inheritDoc}
- */
- public boolean isInIterable() {
- return inIterable;
- }
-
- /**
- * Set whether this node represents a contained value of an {@link Iterable} or {@link Map}.
- * @param inIterable
- */
- public void setInIterable(boolean inIterable) {
- this.inIterable = inIterable;
- }
-
- /**
- * {@inheritDoc}
- */
- public Integer getIndex() {
- return index;
- }
-
- /**
- * Set the index of this node, implying <code>inIterable</code>.
- * @param index
- */
- public void setIndex(Integer index) {
- inIterable = true;
- this.index = index;
- this.key = null;
- }
-
- /**
- * {@inheritDoc}
- */
- public Object getKey() {
- return key;
- }
-
- /**
- * Set the map key of this node, implying <code>inIterable</code>.
- * @param key
- */
- public void setKey(Object key) {
- inIterable = true;
- this.key = key;
- this.index = null;
- }
-
- /**
- * {@inheritDoc}
- */
- @Override
- public String toString() {
- return appendNode(this, new StringBuilder()).toString();
- }
-
- /**
- * {@inheritDoc}
- */
- @Override
- public boolean equals(Object o) {
- if (this == o) {
- return true;
- }
- if (o == null || getClass() != o.getClass()) {
- return false;
- }
-
- NodeImpl node = (NodeImpl) o;
-
- if (inIterable != node.inIterable) {
- return false;
- }
- if (index != null ? !index.equals(node.index) : node.index != null) {
- return false;
- }
- if (key != null ? !key.equals(node.key) : node.key != null) {
- return false;
- }
- if (name != null ? !name.equals(node.name) : node.name != null) {
- return false;
- }
-
- return true;
- }
-
- /**
- * {@inheritDoc}
- */
- @Override
- public int hashCode() {
- int result = name != null ? name.hashCode() : 0;
- result = 31 * result + (inIterable ? 1 : 0);
- result = 31 * result + (index != null ? index.hashCode() : 0);
- result = 31 * result + (key != null ? key.hashCode() : 0);
- return result;
- }
-}
diff --git a/trunk/bval-jsr303/src/main/java/org/apache/bval/jsr303/util/PathImpl.java b/trunk/bval-jsr303/src/main/java/org/apache/bval/jsr303/util/PathImpl.java
deleted file mode 100644
index ba829e0..0000000
--- a/trunk/bval-jsr303/src/main/java/org/apache/bval/jsr303/util/PathImpl.java
+++ /dev/null
@@ -1,322 +0,0 @@
-/*
- * 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.bval.jsr303.util;
-
-import javax.validation.Path;
-
-import java.io.Serializable;
-import java.util.ArrayList;
-import java.util.Iterator;
-import java.util.List;
-
-/**
- * Description: object holding the property path as a list of nodes.
- * (Implementation partially based on reference implementation)
- * <br/>
- * This class is not synchronized.
- *
- * @version $Rev$ $Date$
- */
-public class PathImpl implements Path, Serializable {
-
- private static final long serialVersionUID = 1L;
-
- static final String PROPERTY_PATH_SEPARATOR = ".";
-
- /**
- * Builds non-root paths from expressions.
- */
- private static class PathImplBuilder implements PathNavigation.Callback<PathImpl> {
- PathImpl result = new PathImpl();
-
- /**
- * {@inheritDoc}
- */
- public void handleProperty(String name) {
- result.addProperty(name);
- }
-
- /**
- * {@inheritDoc}
- */
- public void handleIndexOrKey(String value) {
- // with no context to guide us, we can only parse ints and fall back to String keys:
- NodeImpl node;
- try {
- node = NodeImpl.atIndex(Integer.parseInt(value));
- } catch (NumberFormatException e) {
- node = NodeImpl.atKey(value);
- }
- result.addNode(node);
- }
-
- /**
- * {@inheritDoc}
- */
- public PathImpl result() {
- if (result.nodeList.isEmpty()) {
- throw new IllegalStateException();
- }
- return result;
- }
-
- /**
- * {@inheritDoc}
- */
- public void handleGenericInIterable() {
- result.addNode(NodeImpl.atIndex(null));
- }
-
- }
-
- private final List<Node> nodeList;
-
- /**
- * Returns a {@code Path} instance representing the path described by the given string. To create a root node the
- * empty string should be passed. Note: This signature is to maintain pluggability with the RI impl.
- *
- * @param propertyPath
- * the path as string representation.
- * @return a {@code Path} instance representing the path described by the given string.
- */
- public static PathImpl createPathFromString(String propertyPath) {
- if (propertyPath == null || propertyPath.length() == 0) {
- return create(null);
- }
- return PathNavigation.navigateAndReturn(propertyPath, new PathImplBuilder());
- }
-
- /**
- * Create a {@link PathImpl} instance representing the specified path.
- *
- * @param name
- * @return PathImpl
- */
- public static PathImpl create(String name) {
- PathImpl path = new PathImpl();
- NodeImpl node = new NodeImpl(name);
- path.addNode(node);
- return path;
- }
-
- /**
- * Copy another Path.
- *
- * @param path
- * @return new {@link PathImpl}
- */
- public static PathImpl copy(Path path) {
- return path == null ? null : new PathImpl(path);
- }
-
- private PathImpl(Path path) {
- this.nodeList = new ArrayList<Node>();
- for (Object aPath : path) {
- nodeList.add(new NodeImpl((Node) aPath));
- }
- }
-
- private PathImpl() {
- nodeList = new ArrayList<Node>();
- }
-
- private PathImpl(List<Node> nodeList) {
- this.nodeList = new ArrayList<Node>();
- for (Node node : nodeList) {
- this.nodeList.add(new NodeImpl(node));
- }
- }
-
- /**
- * Learn whether this {@link PathImpl} points to the root of its graph.
- *
- * @return true if no child nodes
- */
- // our implementation stores a nameless root node.
- public boolean isRootPath() {
- if (nodeList.size() != 1) {
- return false;
- }
- Path.Node first = nodeList.get(0);
- return !first.isInIterable() && first.getName() == null;
- }
-
- /**
- * Return a new {@link PathImpl} that represents <code>this</code> minus its leaf node (if present).
- *
- * @return PathImpl
- */
- public PathImpl getPathWithoutLeafNode() {
- List<Node> nodes = new ArrayList<Node>(nodeList);
- PathImpl path = null;
- if (nodes.size() > 1) {
- nodes.remove(nodes.size() - 1);
- path = new PathImpl(nodes);
- }
- return path;
- }
-
- /**
- * Add a node to this {@link PathImpl}.
- *
- * @param node
- * to add
- */
- public void addNode(Node node) {
- if (isRootPath()) {
- nodeList.set(0, node);
- } else {
- nodeList.add(node);
- }
- }
-
- /**
- * Encapsulate the node manipulations needed to add a named property to this path.
- *
- * @param name
- */
- public void addProperty(String name) {
- if (!nodeList.isEmpty()) {
- NodeImpl leaf = getLeafNode();
- if (leaf != null && leaf.isInIterable() && leaf.getName() == null) {
- leaf.setName(name);
- return;
- }
- }
- addNode(new NodeImpl(name));
- }
-
- /**
- * Trim the leaf node from this {@link PathImpl}.
- *
- * @return the node removed
- * @throws IllegalStateException
- * if no nodes are found
- */
- public Node removeLeafNode() {
- if (isRootPath() || nodeList.size() == 0) {
- throw new IllegalStateException("No nodes in path!");
- }
- try {
- return nodeList.remove(nodeList.size() - 1);
- } finally {
- if (nodeList.isEmpty()) {
- nodeList.add(new NodeImpl((String) null));
- }
- }
- }
-
- /**
- * Get the leaf node (if any) from this {@link PathImpl}
- *
- * @return {@link NodeImpl}
- */
- public NodeImpl getLeafNode() {
- if (nodeList.size() == 0) {
- return null;
- }
- return (NodeImpl) nodeList.get(nodeList.size() - 1);
- }
-
- /**
- * {@inheritDoc}
- */
- public Iterator<Path.Node> iterator() {
- return nodeList.iterator();
- }
-
- /**
- * Learn whether <code>path</code> is a parent to <code>this</code>.
- *
- * @param path
- * @return <code>true</code> if our nodes begin with nodes equal to those found in <code>path</code>
- */
- public boolean isSubPathOf(Path path) {
- if (path instanceof PathImpl && ((PathImpl) path).isRootPath()) {
- return true;
- }
- Iterator<Node> pathIter = path.iterator();
- Iterator<Node> thisIter = iterator();
- while (pathIter.hasNext()) {
- Node pathNode = pathIter.next();
- if (!thisIter.hasNext()) {
- return false;
- }
- Node thisNode = thisIter.next();
- if (pathNode.isInIterable()) {
- if (!thisNode.isInIterable()) {
- return false;
- }
- if (pathNode.getIndex() != null && !pathNode.getIndex().equals(thisNode.getIndex())) {
- return false;
- }
- if (pathNode.getKey() != null && !pathNode.getKey().equals(thisNode.getKey())) {
- return false;
- }
- } else if (thisNode.isInIterable()) {
- // in this case we have shown that the proposed parent is not
- // indexed, and we are, thus the paths cannot match
- return false;
- }
- if (pathNode.getName() == null || pathNode.getName().equals(thisNode.getName())) {
- continue;
- }
- return false;
- }
- return true;
- }
-
- /**
- * {@inheritDoc}
- */
- @Override
- public String toString() {
- StringBuilder builder = new StringBuilder();
- for (Path.Node node : this) {
- NodeImpl.appendNode(node, builder);
- }
- return builder.toString();
- }
-
- /**
- * {@inheritDoc}
- */
- @Override
- public boolean equals(Object o) {
- if (this == o) {
- return true;
- }
- if (o == null || getClass() != o.getClass()) {
- return false;
- }
-
- PathImpl path = (PathImpl) o;
- return !(nodeList != null && !nodeList.equals(path.nodeList)) && !(nodeList == null && path.nodeList != null);
-
- }
-
- /**
- * {@inheritDoc}
- */
- @Override
- public int hashCode() {
- return nodeList != null ? nodeList.hashCode() : 0;
- }
-
-}
diff --git a/trunk/bval-jsr303/src/main/java/org/apache/bval/jsr303/util/PathNavigation.java b/trunk/bval-jsr303/src/main/java/org/apache/bval/jsr303/util/PathNavigation.java
deleted file mode 100644
index 711a472..0000000
--- a/trunk/bval-jsr303/src/main/java/org/apache/bval/jsr303/util/PathNavigation.java
+++ /dev/null
@@ -1,327 +0,0 @@
-/*
- * 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.bval.jsr303.util;
-
-import java.io.StringWriter;
-import java.text.ParsePosition;
-
-import javax.validation.ValidationException;
-
-import org.apache.commons.lang3.StringEscapeUtils;
-
-/**
- * Defines a path navigation algorithm and a means of interacting with same.
- *
- * @version $Rev: 1136233 $ $Date: 2011-06-15 17:49:27 -0500 (Wed, 15 Jun 2011) $
- */
-public class PathNavigation {
-
- /**
- * Path traversal callback function interface.
- */
- public interface Callback<T> {
- /**
- * Handle a .-delimited property.
- *
- * @param name
- */
- void handleProperty(String name);
-
- /**
- * Handle an index or key embedded in [].
- *
- * @param value
- */
- void handleIndexOrKey(String value);
-
- /**
- * Handle contiguous [].
- */
- void handleGenericInIterable();
-
- /**
- * Return a result. Called after navigation is complete.
- *
- * @return result
- */
- T result();
- }
-
- /**
- * Callback "procedure" that always returns null.
- */
- public static abstract class CallbackProcedure implements Callback<Object> {
-
- /**
- * {@inheritDoc}
- */
- public final Object result() {
- complete();
- return null;
- }
-
- /**
- * Complete this CallbackProcedure. Default implementation is noop.
- */
- protected void complete() {
- }
- }
-
- /**
- * Create a new PathNavigation instance.
- */
- private PathNavigation() {
- }
-
- /**
- * Navigate a path using the specified callback, returning its result.
- *
- * @param <T>
- * @param propertyPath
- * , null is assumed empty/root
- * @param callback
- * @return T result
- */
- public static <T> T navigateAndReturn(CharSequence propertyPath, Callback<? extends T> callback) {
- try {
- parse(propertyPath == null ? "" : propertyPath, new PathPosition(callback));
- } catch (ValidationException ex) {
- throw ex;
- } catch (Exception ex) {
- throw new ValidationException(String.format("invalid property: %s", propertyPath), ex);
- }
- return callback.result();
- }
-
- /**
- * Navigate a path using the specified callback.
- *
- * @param propertyPath
- * @param callback
- */
- public static void navigate(CharSequence propertyPath, Callback<?> callback) {
- navigateAndReturn(propertyPath, callback);
- }
-
- private static void parse(CharSequence path, PathPosition pos) throws Exception {
- int len = path.length();
- boolean sep = true;
- while (pos.getIndex() < len) {
- int here = pos.getIndex();
- char c = path.charAt(here);
- switch (c) {
- case ']':
- throw new IllegalStateException(String.format("Position %s: unexpected '%s'", here, c));
- case '[':
- handleIndex(path, pos.next());
- break;
- case '.':
- if (sep) {
- throw new IllegalStateException(String.format("Position %s: expected property, index/key, or end of expression", here));
- }
- sep = true;
- pos.next();
- // fall through:
- default:
- if (!sep) {
- throw new IllegalStateException(String.format("Position %s: expected property path separator, index/key, or end of expression", here));
- }
- pos.handleProperty(parseProperty(path, pos));
- }
- sep = false;
- }
- }
-
- private static String parseProperty(CharSequence path, PathPosition pos) throws Exception {
- int len = path.length();
- int start = pos.getIndex();
- loop: while (pos.getIndex() < len) {
- switch (path.charAt(pos.getIndex())) {
- case '[':
- case ']':
- case '.':
- break loop;
- }
- pos.next();
- }
- if (pos.getIndex() > start) {
- return path.subSequence(start, pos.getIndex()).toString();
- }
- throw new IllegalStateException(String.format("Position %s: expected property", start));
- }
-
- /**
- * Handles an index/key. If the text contained between [] is surrounded by a pair of " or ', it will be treated as a
- * string which may contain Java escape sequences.
- *
- * @param path
- * @param pos
- * @throws Exception
- */
- private static void handleIndex(CharSequence path, PathPosition pos) throws Exception {
- int len = path.length();
- int start = pos.getIndex();
- if (start < len) {
- char first = path.charAt(pos.getIndex());
- if (first == '"' || first == '\'') {
- String s = parseQuotedString(path, pos);
- if (s != null && path.charAt(pos.getIndex()) == ']') {
- pos.handleIndexOrKey(s);
- pos.next();
- return;
- }
- }
- // no quoted string; match ] greedily
- while (pos.getIndex() < len) {
- int here = pos.getIndex();
- try {
- if (path.charAt(here) == ']') {
- if (here == start) {
- pos.handleGenericInIterable();
- } else {
- pos.handleIndexOrKey(path.subSequence(start, here).toString());
- }
- return;
- }
- } finally {
- pos.next();
- }
- }
- }
- throw new IllegalStateException(String.format("Position %s: unparsable index", start));
- }
-
- private static String parseQuotedString(CharSequence path, PathPosition pos) throws Exception {
- int len = path.length();
- int start = pos.getIndex();
- if (start < len) {
- char quote = path.charAt(start);
- pos.next();
- StringWriter w = new StringWriter();
- while (pos.getIndex() < len) {
- int here = pos.getIndex();
- // look for matching quote
- if (path.charAt(here) == quote) {
- pos.next();
- return w.toString();
- }
- int codePoints = StringEscapeUtils.UNESCAPE_JAVA.translate(path, here, w);
- if (codePoints == 0) {
- w.write(Character.toChars(Character.codePointAt(path, here)));
- pos.next();
- } else {
- for (int i = 0; i < codePoints; i++) {
- pos.plus(Character.charCount(Character.codePointAt(path, pos.getIndex())));
- }
- }
- }
- // if reached, reset due to no ending quote found
- pos.setIndex(start);
- }
- return null;
- }
-
- /**
- * ParsePosition/Callback
- */
- private static class PathPosition extends ParsePosition implements Callback<Object> {
- final Callback<?> delegate;
-
- /**
- * Create a new {@link PathPosition} instance.
- *
- * @param delegate
- */
- private PathPosition(Callback<?> delegate) {
- super(0);
- this.delegate = delegate;
- }
-
- /**
- * Increment and return this.
- *
- * @return this
- */
- public PathPosition next() {
- return plus(1);
- }
-
- /**
- * Increase position and return this.
- *
- * @param addend
- * @return this
- */
- public PathPosition plus(int addend) {
- setIndex(getIndex() + addend);
- return this;
- }
-
- /**
- * {@inheritDoc}
- */
- public void handleProperty(String name) {
- delegate.handleProperty(name);
- }
-
- /**
- * {@inheritDoc}
- */
- public void handleIndexOrKey(String value) {
- delegate.handleIndexOrKey(value);
- }
-
- /**
- * {@inheritDoc}
- */
- public void handleGenericInIterable() {
- delegate.handleGenericInIterable();
- }
-
- /**
- * {@inheritDoc}
- */
- public Object result() {
- return null;
- }
-
- /**
- * {@inheritDoc}
- */
- /*
- * Override equals to make findbugs happy;
- * would simply ignore but doesn't seem to be possible at the inner class level
- * without attaching the filter to the containing class.
- */
- @Override
- public boolean equals(Object obj) {
- return super.equals(obj);
- }
-
- /**
- * {@inheritDoc}
- */
- /*
- * Override hashCode to make findbugs happy in the presence of overridden #equals :P
- */
- @Override
- public int hashCode() {
- return super.hashCode();
- }
- }
-
-}
diff --git a/trunk/bval-jsr303/src/main/java/org/apache/bval/jsr303/util/SecureActions.java b/trunk/bval-jsr303/src/main/java/org/apache/bval/jsr303/util/SecureActions.java
deleted file mode 100644
index 4cf5ce4..0000000
--- a/trunk/bval-jsr303/src/main/java/org/apache/bval/jsr303/util/SecureActions.java
+++ /dev/null
@@ -1,151 +0,0 @@
-/*
- * 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.bval.jsr303.util;
-
-import java.lang.reflect.AccessibleObject;
-import java.lang.reflect.Field;
-import java.lang.reflect.Method;
-import java.lang.reflect.Modifier;
-import java.security.PrivilegedAction;
-
-import javax.validation.ValidatorFactory;
-
-import org.apache.bval.jsr303.ConfigurationImpl;
-import org.apache.bval.util.PrivilegedActions;
-
-/**
- * Description: utility methods to perform actions with AccessController or without.<br/>
- */
-public class SecureActions extends PrivilegedActions {
-
- /**
- * Create a privileged action to get the context classloader of the current thread.
- *
- * @see Thread#getContextClassLoader()
- */
- public static PrivilegedAction<ClassLoader> getContextClassLoader()
- {
- return SecureActions.GetContextClassLoader.instance;
- }
-
-
- /**
- * Create a privileged action to get the named field declared by the specified class.
- * The result of the action will be {@code null} if there is no such field.
- */
- public static PrivilegedAction<Field> getDeclaredField(final Class<?> clazz, final String fieldName) {
- return new PrivilegedAction<Field>() {
- public Field run() {
- try {
- final Field f = clazz.getDeclaredField(fieldName);
- setAccessibility(f);
- return f;
- } catch (final NoSuchFieldException ex) {
- return null;
- }
- }
- };
- }
-
-
-
- /**
- * Create a privileged action to get all fields declared by the specified class.
- */
- public static PrivilegedAction<Field[]> getDeclaredFields(final Class<?> clazz) {
- return new PrivilegedAction<Field[]>() {
- public Field[] run() {
- final Field[] fields = clazz.getDeclaredFields();
- if (fields.length > 0)
- AccessibleObject.setAccessible(fields, true);
- return fields;
- }
- };
- }
-
-
-
- /**
- * Create a privileged action to get all methods declared by the specified class.
- */
- public static PrivilegedAction<Method[]> getDeclaredMethods(final Class<?> clazz) {
- // XXX 2011-03-27 jw: Inconsistent behaviour.
- // doGetDeclaredFields() is setting fields accessible, but here we don't.
- return new PrivilegedAction<Method[]>() {
- public Method[] run() {
- return clazz.getDeclaredMethods();
- }
- };
- }
-
- /**
- * Create a privileged action to get the named method declared by the specified class
- * or by one of its ancestors.
- * The result of the action will be {@code null} if there is no such method.
- */
- public static PrivilegedAction<Method> getPublicMethod(final Class<?> clazz, final String methodName) {
- return new PrivilegedAction<Method>() {
- public Method run() {
- try {
- return clazz.getMethod(methodName, (Class[]) null);
- } catch (final NoSuchMethodException ex) {
- return null;
- }
- }
- };
- }
-
- private static void setAccessibility(Field field) {
- // FIXME 2011-03-27 jw:
- // - Why not simply call field.setAccessible(true)?
- // - Fields can not be abstract.
- if (!Modifier.isPublic(field.getModifiers()) || (
- Modifier.isPublic(field.getModifiers()) &&
- Modifier.isAbstract(field.getModifiers()))) {
- field.setAccessible(true);
- }
- }
-
- /**
- * Create a privileged action for ConfigurationImpl.buildValidatorFactory.
- */
- public static PrivilegedAction<ValidatorFactory> doPrivBuildValidatorFactory(final ConfigurationImpl config) {
- return new PrivilegedAction<ValidatorFactory>() {
- public ValidatorFactory run() {
- return config.doPrivBuildValidatorFactory();
- }
- };
- }
-
- private static final class GetContextClassLoader extends Object implements PrivilegedAction<ClassLoader> {
-
- static final GetContextClassLoader instance = new GetContextClassLoader();
-
- private GetContextClassLoader()
- {
- super();
- }
-
- public final ClassLoader run() {
- return Thread.currentThread().getContextClassLoader();
- }
-
- }
-
-}
diff --git a/trunk/bval-jsr303/src/main/java/org/apache/bval/jsr303/util/ValidationContextTraversal.java b/trunk/bval-jsr303/src/main/java/org/apache/bval/jsr303/util/ValidationContextTraversal.java
deleted file mode 100644
index 766139d..0000000
--- a/trunk/bval-jsr303/src/main/java/org/apache/bval/jsr303/util/ValidationContextTraversal.java
+++ /dev/null
@@ -1,204 +0,0 @@
-/*
- * 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.bval.jsr303.util;
-
-import java.lang.reflect.Type;
-
-import org.apache.bval.DynamicMetaBean;
-import org.apache.bval.jsr303.Jsr303MetaBeanFactory;
-import org.apache.bval.jsr303.UnknownPropertyException;
-import org.apache.bval.jsr303.util.PathNavigation.CallbackProcedure;
-import org.apache.bval.model.MetaBean;
-import org.apache.bval.model.MetaProperty;
-import org.apache.bval.model.ValidationContext;
-import org.apache.bval.util.AccessStrategy;
-import org.apache.bval.util.IndexedAccess;
-import org.apache.bval.util.KeyedAccess;
-import org.apache.bval.util.PropertyAccess;
-import org.apache.commons.lang3.ObjectUtils;
-import org.apache.commons.lang3.reflect.TypeUtils;
-
-/**
- * {@link ValidationContext} traversal {@link CallbackProcedure}.
- *
- * @version $Rev: 1137074 $ $Date: 2011-06-17 18:20:30 -0500 (Fri, 17 Jun 2011) $
- */
-public class ValidationContextTraversal extends CallbackProcedure {
- private static class NullSafePropertyAccess extends PropertyAccess {
-
- /**
- * Create a new NullSafePropertyAccess instance.
- *
- * @param clazz
- * @param propertyName
- */
- public NullSafePropertyAccess(Class<?> clazz, String propertyName) {
- super(clazz, propertyName);
- }
-
- /**
- * {@inheritDoc}
- */
- @Override
- public Object get(Object bean) {
- return bean == null ? null : super.get(bean);
- }
- }
-
- private final ValidationContext<?> validationContext;
- private Type type;
- private Class<?> rawType;
-
- /**
- * Create a new {@link ValidationContextTraversal} instance.
- *
- * @param validationContext
- */
- public ValidationContextTraversal(ValidationContext<?> validationContext) {
- this.validationContext = validationContext;
- init();
- }
-
- /**
- * Initialize from {@link ValidationContext}.
- */
- public void init() {
- this.rawType = validationContext.getMetaBean().getBeanClass();
- this.type = this.rawType;
- }
-
- /**
- * {@inheritDoc}
- */
- public void handleIndexOrKey(String token) {
- moveDownIfNecessary();
-
- AccessStrategy access;
- if (IndexedAccess.getJavaElementType(type) != null) {
- try {
- Integer index = token == null ? null : Integer.valueOf(token);
- access = new IndexedAccess(type, index);
- validationContext.setCurrentIndex(index);
- } catch (NumberFormatException e) {
- throw new UnknownPropertyException(String.format("Cannot parse %s as an array/iterable index", token),
- e);
- }
- } else if (KeyedAccess.getJavaElementType(type) != null) {
- access = new KeyedAccess(type, token);
- validationContext.setCurrentKey(token);
- } else {
- throw new UnknownPropertyException(String.format("Cannot determine index/key type for %s", type));
- }
- Object value = validationContext.getBean();
- Object child = value == null ? null : access.get(value);
- setType(child == null ? access.getJavaType() : child.getClass());
- validationContext.setBean(child,
- validationContext.getMetaBean().resolveMetaBean(child == null ? rawType : child));
- }
-
- /**
- * {@inheritDoc}
- */
- public void handleProperty(String token) {
- moveDownIfNecessary();
-
- MetaBean metaBean = validationContext.getMetaBean();
-
- if (metaBean instanceof DynamicMetaBean) {
- metaBean = metaBean.resolveMetaBean(ObjectUtils.defaultIfNull(validationContext.getBean(), rawType));
- validationContext.setMetaBean(metaBean);
- }
- MetaProperty mp = metaBean.getProperty(token);
- if (mp == null) {
- // TODO this could indicate a property hosted on a superclass; should we shunt the context traversal down a path based on that type?
-
- PropertyAccess access = new PropertyAccess(rawType, token);
- if (access.isKnown()) {
- // add heretofore unknown, but valid, property on the fly:
- mp = Jsr303MetaBeanFactory.addMetaProperty(metaBean, access);
- } else {
- throw new UnknownPropertyException("unknown property '" + token + "' in " + metaBean.getId());
- }
- }
- validationContext.setMetaProperty(mp);
- setType(mp.getType());
- }
-
- /**
- * If we currently have a property, navigate the context such that the property becomes the bean, in preparation for
- * another property.
- *
- * @param validationContext
- */
- public void moveDownIfNecessary() {
- MetaProperty mp = validationContext.getMetaProperty();
- if (mp != null) {
- if (mp.getMetaBean() == null) {
- throw new UnknownPropertyException(String.format("Property %s.%s is not cascaded", mp
- .getParentMetaBean().getId(), mp.getName()));
- }
- validationContext.moveDown(mp, new NullSafePropertyAccess(validationContext.getMetaBean().getBeanClass(),
- mp.getName()));
- }
- }
-
- /**
- * Set the type of the expression processed thus far.
- *
- * @param type
- */
- protected void setType(Type type) {
- this.rawType = TypeUtils.getRawType(type, this.type);
- this.type = type;
- }
-
- /**
- * {@inheritDoc}
- */
- public void handleGenericInIterable() {
- throw new UnsupportedOperationException("Cannot navigate a ValidationContext to []");
- }
-
- /**
- * @return the type
- */
- public Type getType() {
- return type;
- }
-
- /**
- * @return the rawType
- */
- public Class<?> getRawType() {
- return rawType;
- }
-
- /**
- * {@inheritDoc}
- */
- @Override
- protected void complete() {
- super.complete();
- if (validationContext.getMetaProperty() != null) {
- return;
- }
- if (validationContext.getMetaBean() instanceof DynamicMetaBean) {
- validationContext.setMetaBean(validationContext.getMetaBean().resolveMetaBean(
- ObjectUtils.defaultIfNull(validationContext.getBean(), rawType)));
- }
- }
-}
\ No newline at end of file
diff --git a/trunk/bval-jsr303/src/main/java/org/apache/bval/jsr303/xml/AnnotationIgnores.java b/trunk/bval-jsr303/src/main/java/org/apache/bval/jsr303/xml/AnnotationIgnores.java
deleted file mode 100644
index fa508be..0000000
--- a/trunk/bval-jsr303/src/main/java/org/apache/bval/jsr303/xml/AnnotationIgnores.java
+++ /dev/null
@@ -1,149 +0,0 @@
-/*
- * 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.bval.jsr303.xml;
-
-import java.lang.reflect.Field;
-import java.lang.reflect.Member;
-import java.util.ArrayList;
-import java.util.HashMap;
-import java.util.List;
-import java.util.Map;
-import java.util.logging.Level;
-import java.util.logging.Logger;
-
-/**
- * Description: This class instantiated during the parsing of the XML configuration
- * data and keeps track of the annotations which should be ignored.<br/>
- */
-public final class AnnotationIgnores {
-
- private static final Logger log = Logger.getLogger(AnnotationIgnores.class.getName());
-
- /**
- * Keeps track whether the 'ignore-annotations' flag is set on bean level in the
- * xml configuration.
- * If 'ignore-annotations' is not specified: default = true
- */
- private final Map<Class<?>, Boolean> ignoreAnnotationDefaults =
- new HashMap<Class<?>, Boolean>();
-
- /**
- * Keeps track of explicitly excluded members (fields and properties) for a given class.
- * If a member appears in
- * the list mapped to a given class 'ignore-annotations' was explicitly set to
- * <code>true</code> in the configuration
- * for this class.
- */
- private final Map<Class<?>, List<Member>> ignoreAnnotationOnMember =
- new HashMap<Class<?>, List<Member>>();
-
- private final Map<Class<?>, Boolean> ignoreAnnotationOnClass =
- new HashMap<Class<?>, Boolean>();
-
- /**
- * Record the ignore state for a particular annotation type.
- * @param clazz
- * @param b, default true if null
- */
- public void setDefaultIgnoreAnnotation(Class<?> clazz, Boolean b) {
- ignoreAnnotationDefaults.put(clazz, b == null || b.booleanValue());
- }
-
- /**
- * Learn whether the specified annotation type should be ignored.
- * @param clazz
- * @return boolean
- */
- public boolean getDefaultIgnoreAnnotation(Class<?> clazz) {
- return ignoreAnnotationDefaults.containsKey(clazz)
- && ignoreAnnotationDefaults.get(clazz);
- }
-
- /**
- * Ignore annotations on a particular {@link Member} of a class.
- * @param member
- */
- public void setIgnoreAnnotationsOnMember(Member member) {
- Class<?> beanClass = member.getDeclaringClass();
- List<Member> memberList = ignoreAnnotationOnMember.get(beanClass);
- if (memberList == null) {
- memberList = new ArrayList<Member>();
- ignoreAnnotationOnMember.put(beanClass, memberList);
- }
- memberList.add(member);
- }
-
- /**
- * Learn whether annotations should be ignored on a particular {@link Member} of a class.
- * @param member
- * @return boolean
- */
- public boolean isIgnoreAnnotations(Member member) {
- boolean ignoreAnnotation;
- Class<?> clazz = member.getDeclaringClass();
- List<Member> ignoreAnnotationForMembers = ignoreAnnotationOnMember.get(clazz);
- if (ignoreAnnotationForMembers == null ||
- !ignoreAnnotationForMembers.contains(member)) {
- ignoreAnnotation = getDefaultIgnoreAnnotation(clazz);
- } else {
- ignoreAnnotation = ignoreAnnotationForMembers.contains(member);
- }
- if (ignoreAnnotation) {
- logMessage(member, clazz);
- }
- return ignoreAnnotation;
- }
-
- private void logMessage(Member member, Class<?> clazz) {
- String type;
- if (member instanceof Field) {
- type = "Field";
- } else {
- type = "Property";
- }
- log.log(Level.FINEST, String.format("%s level annotations are getting ignored for %s.%s", type, clazz.getName(), member.getName()));
- }
-
- /**
- * Record the ignore state of a particular class.
- * @param clazz
- * @param b
- */
- public void setIgnoreAnnotationsOnClass(Class<?> clazz, boolean b) {
- ignoreAnnotationOnClass.put(clazz, b);
- }
-
- /**
- * Learn whether annotations should be ignored for a given class.
- * @param clazz to check
- * @return boolean
- */
- public boolean isIgnoreAnnotations(Class<?> clazz) {
- boolean ignoreAnnotation;
- if (ignoreAnnotationOnClass.containsKey(clazz)) {
- ignoreAnnotation = ignoreAnnotationOnClass.get(clazz);
- } else {
- ignoreAnnotation = getDefaultIgnoreAnnotation(clazz);
- }
- if (ignoreAnnotation) {
- log.log(Level.FINEST, String.format("Class level annotation are getting ignored for %s", clazz.getName()));
- }
- return ignoreAnnotation;
- }
-}
diff --git a/trunk/bval-jsr303/src/main/java/org/apache/bval/jsr303/xml/AnnotationProxy.java b/trunk/bval-jsr303/src/main/java/org/apache/bval/jsr303/xml/AnnotationProxy.java
deleted file mode 100644
index ea95f78..0000000
--- a/trunk/bval-jsr303/src/main/java/org/apache/bval/jsr303/xml/AnnotationProxy.java
+++ /dev/null
@@ -1,130 +0,0 @@
-/*
- * 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.bval.jsr303.xml;
-
-import java.io.Serializable;
-import java.lang.annotation.Annotation;
-import java.lang.reflect.InvocationHandler;
-import java.lang.reflect.Method;
-import java.security.AccessController;
-import java.security.PrivilegedAction;
-import java.util.HashMap;
-import java.util.Map;
-import java.util.SortedSet;
-import java.util.TreeSet;
-
-import org.apache.bval.jsr303.util.SecureActions;
-
-/**
- * Description: <br/>
- * InvocationHandler implementation of <code>Annotation</code> that pretends it
- * is a "real" source code annotation.
- * <p/>
- */
-// TODO move this guy up to org.apache.bval.jsr303 or
-// org.apache.bval.jsr303.model
-class AnnotationProxy implements Annotation, InvocationHandler, Serializable {
-
- /** Serialization version */
- private static final long serialVersionUID = 1L;
-
- private final Class<? extends Annotation> annotationType;
- private final Map<String, Object> values;
-
- /**
- * Create a new AnnotationProxy instance.
- *
- * @param <A>
- * @param descriptor
- */
- public <A extends Annotation> AnnotationProxy(AnnotationProxyBuilder<A> descriptor) {
- this.annotationType = descriptor.getType();
- values = getAnnotationValues(descriptor);
- }
-
- private <A extends Annotation> Map<String, Object> getAnnotationValues(AnnotationProxyBuilder<A> descriptor) {
- Map<String, Object> result = new HashMap<String, Object>();
- int processedValuesFromDescriptor = 0;
- final Method[] declaredMethods = doPrivileged(
- SecureActions.getDeclaredMethods(annotationType)
- );
- for (Method m : declaredMethods) {
- if (descriptor.contains(m.getName())) {
- result.put(m.getName(), descriptor.getValue(m.getName()));
- processedValuesFromDescriptor++;
- } else if (m.getDefaultValue() != null) {
- result.put(m.getName(), m.getDefaultValue());
- } else {
- throw new IllegalArgumentException("No value provided for " + m.getName());
- }
- }
- if (processedValuesFromDescriptor != descriptor.size()) {
- throw new RuntimeException("Trying to instanciate " + annotationType + " with unknown paramters.");
- }
- return result;
- }
-
- /**
- * {@inheritDoc}
- */
- public Object invoke(Object proxy, Method method, Object[] args) throws Throwable {
- if (values.containsKey(method.getName())) {
- return values.get(method.getName());
- }
- return method.invoke(this, args);
- }
-
- /**
- * {@inheritDoc}
- */
- public Class<? extends Annotation> annotationType() {
- return annotationType;
- }
-
- /**
- * {@inheritDoc}
- */
- public String toString() {
- StringBuilder result = new StringBuilder();
- result.append('@').append(annotationType().getName()).append('(');
- boolean comma = false;
- for (String m : getMethodsSorted()) {
- if (comma)
- result.append(", ");
- result.append(m).append('=').append(values.get(m));
- comma = true;
- }
- result.append(")");
- return result.toString();
- }
-
- private SortedSet<String> getMethodsSorted() {
- SortedSet<String> result = new TreeSet<String>();
- result.addAll(values.keySet());
- return result;
- }
-
-
-
- private static <T> T doPrivileged(final PrivilegedAction<T> action) {
- if (System.getSecurityManager() != null) {
- return AccessController.doPrivileged(action);
- } else {
- return action.run();
- }
- }
-}
diff --git a/trunk/bval-jsr303/src/main/java/org/apache/bval/jsr303/xml/AnnotationProxyBuilder.java b/trunk/bval-jsr303/src/main/java/org/apache/bval/jsr303/xml/AnnotationProxyBuilder.java
deleted file mode 100644
index 75cbf4a..0000000
--- a/trunk/bval-jsr303/src/main/java/org/apache/bval/jsr303/xml/AnnotationProxyBuilder.java
+++ /dev/null
@@ -1,202 +0,0 @@
-/*
- * 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.bval.jsr303.xml;
-
-import java.lang.annotation.Annotation;
-import java.lang.reflect.Constructor;
-import java.lang.reflect.InvocationHandler;
-import java.lang.reflect.InvocationTargetException;
-import java.lang.reflect.Method;
-import java.lang.reflect.Proxy;
-import java.security.AccessController;
-import java.security.PrivilegedAction;
-import java.util.HashMap;
-import java.util.Map;
-
-import javax.validation.Payload;
-import javax.validation.ValidationException;
-
-import org.apache.bval.jsr303.ConstraintAnnotationAttributes;
-import org.apache.bval.jsr303.util.SecureActions;
-
-/**
- * Description: Holds the information and creates an annotation proxy during xml
- * parsing of validation mapping constraints. <br/>
- */
-// TODO move this guy up to org.apache.bval.jsr303 or
-// org.apache.bval.jsr303.model
-final public class AnnotationProxyBuilder<A extends Annotation> {
- private final Class<A> type;
- private final Map<String, Object> elements = new HashMap<String, Object>();
-
- /**
- * Create a new AnnotationProxyBuilder instance.
- *
- * @param annotationType
- */
- public AnnotationProxyBuilder(Class<A> annotationType) {
- this.type = annotationType;
- }
-
- /**
- * Create a new AnnotationProxyBuilder instance.
- *
- * @param annotationType
- * @param elements
- */
- public AnnotationProxyBuilder(Class<A> annotationType, Map<String, Object> elements) {
- this(annotationType);
- for (Map.Entry<String, Object> entry : elements.entrySet()) {
- this.elements.put(entry.getKey(), entry.getValue());
- }
- }
-
- /**
- * Create a builder initially configured to create an annotation equivalent
- * to <code>annot</code>.
- *
- * @param annot Annotation to be replicated.
- */
- @SuppressWarnings("unchecked")
- public AnnotationProxyBuilder(A annot) {
- this((Class<A>) annot.annotationType());
- // Obtain the "elements" of the annotation
- final Method[] methods = doPrivileged(SecureActions.getDeclaredMethods(annot.annotationType()));
- for (Method m : methods) {
- if (!m.isAccessible()) {
- m.setAccessible(true);
- }
- try {
- Object value = m.invoke(annot);
- this.elements.put(m.getName(), value);
- } catch (IllegalArgumentException e) {
- // No args, so should not happen
- throw new ValidationException("Cannot access annotation " + annot + " element: " + m.getName());
- } catch (IllegalAccessException e) {
- throw new ValidationException("Cannot access annotation " + annot + " element: " + m.getName());
- } catch (InvocationTargetException e) {
- throw new ValidationException("Cannot access annotation " + annot + " element: " + m.getName());
- }
- }
- }
-
- /**
- * Add an element to the configuration.
- *
- * @param elementName
- * @param value
- */
- public void putValue(String elementName, Object value) {
- elements.put(elementName, value);
- }
-
- /**
- * Get the specified element value from the current configuration.
- *
- * @param elementName
- * @return Object value
- */
- public Object getValue(String elementName) {
- return elements.get(elementName);
- }
-
- /**
- * Learn whether a given element has been configured.
- *
- * @param elementName
- * @return <code>true</code> if an <code>elementName</code> element is found
- * on this annotation
- */
- public boolean contains(String elementName) {
- return elements.containsKey(elementName);
- }
-
- /**
- * Get the number of configured elements.
- *
- * @return int
- */
- public int size() {
- return elements.size();
- }
-
- /**
- * Get the configured Annotation type.
- *
- * @return Class<A>
- */
- public Class<A> getType() {
- return type;
- }
-
- /**
- * Configure the well-known JSR303 "message" element.
- *
- * @param message
- */
- public void setMessage(String message) {
- ConstraintAnnotationAttributes.MESSAGE.put(elements, message);
- }
-
- /**
- * Configure the well-known JSR303 "groups" element.
- *
- * @param groups
- */
- public void setGroups(Class<?>[] groups) {
- ConstraintAnnotationAttributes.GROUPS.put(elements, groups);
- }
-
- /**
- * Configure the well-known JSR303 "payload" element.
- *
- * @param payload
- */
- public void setPayload(Class<? extends Payload>[] payload) {
- ConstraintAnnotationAttributes.PAYLOAD.put(elements, payload);
- }
-
- /**
- * Create the annotation represented by this builder.
- *
- * @return {@link Annotation}
- */
- public A createAnnotation() {
- ClassLoader classLoader = SecureActions.getClassLoader(getType());
- @SuppressWarnings("unchecked")
- final Class<A> proxyClass = (Class<A>) Proxy.getProxyClass(classLoader, getType());
- final InvocationHandler handler = new AnnotationProxy(this);
- return doPrivileged(new PrivilegedAction<A>() {
- public A run() {
- try {
- Constructor<A> constructor = proxyClass.getConstructor(InvocationHandler.class);
- return constructor.newInstance(handler);
- } catch (Exception e) {
- throw new ValidationException("Unable to create annotation for configured constraint", e);
- }
- }
- });
- }
-
- private static <T> T doPrivileged(final PrivilegedAction<T> action) {
- if (System.getSecurityManager() != null) {
- return AccessController.doPrivileged(action);
- } else {
- return action.run();
- }
- }
-}
diff --git a/trunk/bval-jsr303/src/main/java/org/apache/bval/jsr303/xml/MetaConstraint.java b/trunk/bval-jsr303/src/main/java/org/apache/bval/jsr303/xml/MetaConstraint.java
deleted file mode 100644
index d4a6285..0000000
--- a/trunk/bval-jsr303/src/main/java/org/apache/bval/jsr303/xml/MetaConstraint.java
+++ /dev/null
@@ -1,112 +0,0 @@
-/*
- * 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.bval.jsr303.xml;
-
-
-import org.apache.bval.util.AccessStrategy;
-import org.apache.bval.util.FieldAccess;
-import org.apache.bval.util.MethodAccess;
-
-import javax.validation.ValidationException;
-import java.lang.annotation.Annotation;
-import java.lang.reflect.Field;
-import java.lang.reflect.Member;
-import java.lang.reflect.Method;
-
-/**
- * Description: hold parsed information from xml to complete MetaBean later<br/>
- */
-//TODO move this guy up to org.apache.bval.jsr303 or org.apache.bval.jsr303.model
-//to decouple ApacheValidatorFactory from xml package and allow others to consume MetaConstraint
-public class MetaConstraint<T, A extends Annotation> {
-
- /** The member the constraint was defined on. */
- private final Member member;
-
- /** The class of the bean hosting this constraint. */
- private final Class<T> beanClass;
-
- /** constraint annotation (proxy) */
- private final A annotation;
-
- private final AccessStrategy accessStrategy;
-
- /**
- * Create a new MetaConstraint instance.
- * @param beanClass The class in which the constraint is defined on
- * @param member The member on which the constraint is defined on, {@code null} if it is a class constraint}
- * @param annotation
- */
- public MetaConstraint(Class<T> beanClass, Member member, A annotation) {
- this.member = member;
- this.beanClass = beanClass;
- this.annotation = annotation;
- if (member != null) {
- accessStrategy = createAccessStrategy(member);
- if (accessStrategy == null || accessStrategy.getPropertyName() ==
- null) { // can happen if method does not follow the bean convention
- throw new ValidationException(
- "Annotated method does not follow the JavaBeans naming convention: " +
- member);
- }
- } else {
- this.accessStrategy = null;
- }
- }
-
- private static AccessStrategy createAccessStrategy(Member member) {
- if (member instanceof Method) {
- return new MethodAccess((Method) member);
- } else if (member instanceof Field) {
- return new FieldAccess((Field) member);
- } else {
- return null; // class level
- }
- }
-
- /**
- * Get the bean class of this constraint.
- * @return Class
- */
- public Class<T> getBeanClass() {
- return beanClass;
- }
-
- /**
- * Get the member to which this constraint applies.
- * @return Member
- */
- public Member getMember() {
- return member;
- }
-
- /**
- * Get the annotation that defines this constraint.
- * @return Annotation
- */
- public A getAnnotation() {
- return annotation;
- }
-
- /**
- * Get the access strategy used for the associated property.
- * @return {@link AccessStrategy}
- */
- public AccessStrategy getAccessStrategy() {
- return accessStrategy;
- }
-}
diff --git a/trunk/bval-jsr303/src/main/java/org/apache/bval/jsr303/xml/ValidationMappingParser.java b/trunk/bval-jsr303/src/main/java/org/apache/bval/jsr303/xml/ValidationMappingParser.java
deleted file mode 100644
index 69273fb..0000000
--- a/trunk/bval-jsr303/src/main/java/org/apache/bval/jsr303/xml/ValidationMappingParser.java
+++ /dev/null
@@ -1,568 +0,0 @@
-/*
- * 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.bval.jsr303.xml;
-
-
-import java.io.InputStream;
-import java.io.Serializable;
-import java.lang.annotation.Annotation;
-import java.lang.reflect.Array;
-import java.lang.reflect.Field;
-import java.lang.reflect.Member;
-import java.lang.reflect.Method;
-import java.security.AccessController;
-import java.security.PrivilegedAction;
-import java.util.ArrayList;
-import java.util.Arrays;
-import java.util.Collections;
-import java.util.EnumSet;
-import java.util.HashSet;
-import java.util.List;
-import java.util.Set;
-
-import javax.validation.Constraint;
-import javax.validation.ConstraintValidator;
-import javax.validation.Payload;
-import javax.validation.ValidationException;
-import javax.xml.bind.JAXBContext;
-import javax.xml.bind.JAXBElement;
-import javax.xml.bind.JAXBException;
-import javax.xml.bind.Unmarshaller;
-import javax.xml.transform.stream.StreamSource;
-import javax.xml.validation.Schema;
-
-import org.apache.bval.jsr303.ApacheValidatorFactory;
-import org.apache.bval.jsr303.ConstraintAnnotationAttributes;
-import org.apache.bval.jsr303.util.EnumerationConverter;
-import org.apache.bval.jsr303.util.IOUtils;
-import org.apache.bval.jsr303.util.SecureActions;
-import org.apache.bval.util.FieldAccess;
-import org.apache.bval.util.MethodAccess;
-import org.apache.commons.beanutils.ConvertUtils;
-import org.apache.commons.beanutils.Converter;
-import org.apache.commons.lang3.StringUtils;
-
-
-/**
- * Uses JAXB to parse constraints.xml based on validation-mapping-1.0.xsd.<br>
- */
-@SuppressWarnings("restriction")
-public class ValidationMappingParser {
- // private static final Log log = LogFactory.getLog(ValidationMappingParser.class);
- private static final String VALIDATION_MAPPING_XSD = "META-INF/validation-mapping-1.0.xsd";
-
- private static final Set<ConstraintAnnotationAttributes> RESERVED_PARAMS = Collections.unmodifiableSet(EnumSet.of(
- ConstraintAnnotationAttributes.GROUPS, ConstraintAnnotationAttributes.MESSAGE,
- ConstraintAnnotationAttributes.PAYLOAD));
-
- private final Set<Class<?>> processedClasses;
- private final ApacheValidatorFactory factory;
-
- /**
- * Create a new ValidationMappingParser instance.
- * @param factory
- */
- public ValidationMappingParser(ApacheValidatorFactory factory) {
- this.factory = factory;
- this.processedClasses = new HashSet<Class<?>>();
- }
-
- /**
- * Parse files with constraint mappings and collect information in the factory.
- *
- * @param xmlStreams - one or more contraints.xml file streams to parse
- */
- public void processMappingConfig(Set<InputStream> xmlStreams) throws ValidationException {
- for (InputStream xmlStream : xmlStreams) {
- ConstraintMappingsType mapping = parseXmlMappings(xmlStream);
-
- String defaultPackage = mapping.getDefaultPackage();
- processConstraintDefinitions(mapping.getConstraintDefinition(), defaultPackage);
- for (BeanType bean : mapping.getBean()) {
- Class<?> beanClass = loadClass(bean.getClazz(), defaultPackage);
- if (!processedClasses.add(beanClass)) {
- // spec: A given class must not be described more than once amongst all
- // the XML mapping descriptors.
- throw new ValidationException(
- beanClass.getName() + " has already be configured in xml.");
- }
- factory.getAnnotationIgnores()
- .setDefaultIgnoreAnnotation(beanClass, bean.isIgnoreAnnotations());
- processClassLevel(bean.getClassType(), beanClass, defaultPackage);
- processFieldLevel(bean.getField(), beanClass, defaultPackage);
- processPropertyLevel(bean.getGetter(), beanClass, defaultPackage);
- processedClasses.add(beanClass);
- }
- }
- }
-
- /** @param in XML stream to parse using the validation-mapping-1.0.xsd */
- private ConstraintMappingsType parseXmlMappings(InputStream in) {
- ConstraintMappingsType mappings;
- try {
- JAXBContext jc = JAXBContext.newInstance(ConstraintMappingsType.class);
- Unmarshaller unmarshaller = jc.createUnmarshaller();
- unmarshaller.setSchema(getSchema());
- StreamSource stream = new StreamSource(in);
- JAXBElement<ConstraintMappingsType> root =
- unmarshaller.unmarshal(stream, ConstraintMappingsType.class);
- mappings = root.getValue();
- } catch (JAXBException e) {
- throw new ValidationException("Failed to parse XML deployment descriptor file.",
- e);
- } finally {
- IOUtils.closeQuietly(in);
- }
- return mappings;
- }
-
- /** @return validation-mapping-1.0.xsd based schema */
- private Schema getSchema() {
- return ValidationParser.getSchema(VALIDATION_MAPPING_XSD);
- }
-
- private void processClassLevel(ClassType classType, Class<?> beanClass,
- String defaultPackage) {
- if (classType == null) {
- return;
- }
-
- // ignore annotation
- if (classType.isIgnoreAnnotations() != null) {
- factory.getAnnotationIgnores()
- .setIgnoreAnnotationsOnClass(beanClass, classType.isIgnoreAnnotations());
- }
-
- // group sequence
- Class<?>[] groupSequence =
- createGroupSequence(classType.getGroupSequence(), defaultPackage);
- if (groupSequence != null) {
- factory.addDefaultSequence(beanClass, groupSequence);
- }
-
- // constraints
- for (ConstraintType constraint : classType.getConstraint()) {
- MetaConstraint<?, ?> metaConstraint =
- createConstraint(constraint, beanClass, null, defaultPackage);
- factory.addMetaConstraint(beanClass, metaConstraint);
- }
- }
-
- @SuppressWarnings("unchecked")
- private <A extends Annotation, T> MetaConstraint<?, ?> createConstraint(
- ConstraintType constraint, Class<T> beanClass, Member member,
- String defaultPackage) {
- Class<A> annotationClass =
- (Class<A>) loadClass(constraint.getAnnotation(), defaultPackage);
- AnnotationProxyBuilder<A> annoBuilder = new AnnotationProxyBuilder<A>(annotationClass);
-
- if (constraint.getMessage() != null) {
- annoBuilder.setMessage(constraint.getMessage());
- }
- annoBuilder.setGroups(getGroups(constraint.getGroups(), defaultPackage));
- annoBuilder.setPayload(getPayload(constraint.getPayload(), defaultPackage));
-
- for (ElementType elementType : constraint.getElement()) {
- String name = elementType.getName();
- checkValidName(name);
- Class<?> returnType = getAnnotationParameterType(annotationClass, name);
- Object elementValue = getElementValue(elementType, returnType, defaultPackage);
- annoBuilder.putValue(name, elementValue);
- }
- return new MetaConstraint<T, A>(beanClass, member, annoBuilder.createAnnotation());
- }
-
- private void checkValidName(String name) {
- for (ConstraintAnnotationAttributes attr : RESERVED_PARAMS) {
- if (attr.getAttributeName().equals(name)) {
- throw new ValidationException(name + " is a reserved parameter name.");
- }
- }
- }
-
- private <A extends Annotation> Class<?> getAnnotationParameterType(
- final Class<A> annotationClass, final String name) {
- final Method m = doPrivileged(SecureActions.getPublicMethod(annotationClass, name));
- if (m == null) {
- throw new ValidationException("Annotation of type " + annotationClass.getName() +
- " does not contain a parameter " + name + ".");
- }
- return m.getReturnType();
- }
-
- private Object getElementValue(ElementType elementType, Class<?> returnType,
- String defaultPackage) {
- removeEmptyContentElements(elementType);
-
- boolean isArray = returnType.isArray();
- if (!isArray) {
- if (elementType.getContent().size() != 1) {
- throw new ValidationException(
- "Attempt to specify an array where single value is expected.");
- }
- return getSingleValue(elementType.getContent().get(0), returnType, defaultPackage);
- } else {
- List<Object> values = new ArrayList<Object>();
- for (Serializable s : elementType.getContent()) {
- values.add(getSingleValue(s, returnType.getComponentType(), defaultPackage));
- }
- return values.toArray(
- (Object[]) Array.newInstance(returnType.getComponentType(), values.size()));
- }
- }
-
- private void removeEmptyContentElements(ElementType elementType) {
- List<Serializable> contentToDelete = new ArrayList<Serializable>();
- for (Serializable content : elementType.getContent()) {
- if (content instanceof String && ((String) content).matches("[\\n ].*")) {
- contentToDelete.add(content);
- }
- }
- elementType.getContent().removeAll(contentToDelete);
- }
-
- @SuppressWarnings("unchecked")
- private Object getSingleValue(Serializable serializable, Class<?> returnType,
- String defaultPackage) {
-
- Object returnValue;
- if (serializable instanceof String) {
- String value = (String) serializable;
- returnValue = convertToResultType(returnType, value, defaultPackage);
- } else if (serializable instanceof JAXBElement<?> &&
- ((JAXBElement<?>) serializable).getDeclaredType()
- .equals(String.class)) {
- JAXBElement<?> elem = (JAXBElement<?>) serializable;
- String value = (String) elem.getValue();
- returnValue = convertToResultType(returnType, value, defaultPackage);
- } else if (serializable instanceof JAXBElement<?> &&
- ((JAXBElement<?>) serializable).getDeclaredType()
- .equals(AnnotationType.class)) {
- JAXBElement<?> elem = (JAXBElement<?>) serializable;
- AnnotationType annotationType = (AnnotationType) elem.getValue();
- try {
- Class<? extends Annotation> annotationClass = (Class<? extends Annotation>) returnType;
- returnValue =
- createAnnotation(annotationType, annotationClass, defaultPackage);
- } catch (ClassCastException e) {
- throw new ValidationException("Unexpected parameter value");
- }
- } else {
- throw new ValidationException("Unexpected parameter value");
- }
- return returnValue;
-
- }
-
- private Object convertToResultType(Class<?> returnType, String value,
- String defaultPackage) {
- /**
- * Class is represented by the fully qualified class name of the class.
- * spec: Note that if the raw string is unqualified,
- * default package is taken into account.
- */
- if (returnType.equals(Class.class)) {
- value = toQualifiedClassName(value, defaultPackage);
- }
-
- /* Converter lookup */
- Converter converter = ConvertUtils.lookup(returnType);
- if (converter == null && returnType.isEnum()) {
- converter = EnumerationConverter.getInstance();
- }
-
- if (converter != null) {
- return converter.convert(returnType, value);
- } else {
- return converter;
- }
- }
-
- private <A extends Annotation> Annotation createAnnotation(AnnotationType annotationType,
- Class<A> returnType,
- String defaultPackage) {
- AnnotationProxyBuilder<A> metaAnnotation = new AnnotationProxyBuilder<A>(returnType);
- for (ElementType elementType : annotationType.getElement()) {
- String name = elementType.getName();
- Class<?> parameterType = getAnnotationParameterType(returnType, name);
- Object elementValue = getElementValue(elementType, parameterType, defaultPackage);
- metaAnnotation.putValue(name, elementValue);
- }
- return metaAnnotation.createAnnotation();
- }
-
- private Class<?>[] getGroups(GroupsType groupsType, String defaultPackage) {
- if (groupsType == null) {
- return new Class[]{};
- }
-
- List<Class<?>> groupList = new ArrayList<Class<?>>();
- for (JAXBElement<String> groupClass : groupsType.getValue()) {
- groupList.add(loadClass(groupClass.getValue(), defaultPackage));
- }
- return groupList.toArray(new Class[groupList.size()]);
- }
-
-
- @SuppressWarnings("unchecked")
- private Class<? extends Payload>[] getPayload(PayloadType payloadType,
- String defaultPackage) {
- if (payloadType == null) {
- return new Class[]{};
- }
-
- List<Class<? extends Payload>> payloadList = new ArrayList<Class<? extends Payload>>();
- for (JAXBElement<String> groupClass : payloadType.getValue()) {
- Class<?> payload = loadClass(groupClass.getValue(), defaultPackage);
- if (!Payload.class.isAssignableFrom(payload)) {
- throw new ValidationException("Specified payload class " + payload.getName() +
- " does not implement javax.validation.Payload");
- } else {
- payloadList.add((Class<? extends Payload>) payload);
- }
- }
- return payloadList.toArray(new Class[payloadList.size()]);
- }
-
- private Class<?>[] createGroupSequence(GroupSequenceType groupSequenceType,
- String defaultPackage) {
- if (groupSequenceType != null) {
- Class<?>[] groupSequence = new Class<?>[groupSequenceType.getValue().size()];
- int i=0;
- for (JAXBElement<String> groupName : groupSequenceType.getValue()) {
- Class<?> group = loadClass(groupName.getValue(), defaultPackage);
- groupSequence[i++] = group;
- }
- return groupSequence;
- } else {
- return null;
- }
- }
-
- private void processFieldLevel(List<FieldType> fields, Class<?> beanClass,
- String defaultPackage) {
- List<String> fieldNames = new ArrayList<String>();
- for (FieldType fieldType : fields) {
- String fieldName = fieldType.getName();
- if (fieldNames.contains(fieldName)) {
- throw new ValidationException(fieldName +
- " is defined more than once in mapping xml for bean " +
- beanClass.getName());
- } else {
- fieldNames.add(fieldName);
- }
- final Field field = doPrivileged(SecureActions.getDeclaredField(beanClass, fieldName));
- if (field == null) {
- throw new ValidationException(
- beanClass.getName() + " does not contain the fieldType " + fieldName);
- }
-
- // ignore annotations
- boolean ignoreFieldAnnotation = fieldType.isIgnoreAnnotations() == null ? false :
- fieldType.isIgnoreAnnotations();
- if (ignoreFieldAnnotation) {
- factory.getAnnotationIgnores().setIgnoreAnnotationsOnMember(field);
- }
-
- // valid
- if (fieldType.getValid() != null) {
- factory.addValid(beanClass, new FieldAccess(field));
- }
-
- // constraints
- for (ConstraintType constraintType : fieldType.getConstraint()) {
- MetaConstraint<?, ?> constraint =
- createConstraint(constraintType, beanClass, field, defaultPackage);
- factory.addMetaConstraint(beanClass, constraint);
- }
- }
- }
-
- private void processPropertyLevel(List<GetterType> getters, Class<?> beanClass,
- String defaultPackage) {
- List<String> getterNames = new ArrayList<String>();
- for (GetterType getterType : getters) {
- String getterName = getterType.getName();
- if (getterNames.contains(getterName)) {
- throw new ValidationException(getterName +
- " is defined more than once in mapping xml for bean " +
- beanClass.getName());
- } else {
- getterNames.add(getterName);
- }
- final Method method = getGetter(beanClass, getterName);
- if (method == null) {
- throw new ValidationException(
- beanClass.getName() + " does not contain the property " + getterName);
- }
-
- // ignore annotations
- boolean ignoreGetterAnnotation = getterType.isIgnoreAnnotations() == null ? false :
- getterType.isIgnoreAnnotations();
- if (ignoreGetterAnnotation) {
- factory.getAnnotationIgnores().setIgnoreAnnotationsOnMember(method);
- }
-
- // valid
- if (getterType.getValid() != null) {
- factory.addValid(beanClass, new MethodAccess(getterName, method));
- }
-
- // constraints
- for (ConstraintType constraintType : getterType.getConstraint()) {
- MetaConstraint<?, ?> metaConstraint =
- createConstraint(constraintType, beanClass, method, defaultPackage);
- factory.addMetaConstraint(beanClass, metaConstraint);
- }
- }
- }
-
- @SuppressWarnings("unchecked")
- private void processConstraintDefinitions(
- List<ConstraintDefinitionType> constraintDefinitionList, String defaultPackage) {
- for (ConstraintDefinitionType constraintDefinition : constraintDefinitionList) {
- String annotationClassName = constraintDefinition.getAnnotation();
-
- Class<?> clazz = loadClass(annotationClassName, defaultPackage);
- if (!clazz.isAnnotation()) {
- throw new ValidationException(annotationClassName + " is not an annotation");
- }
- Class<? extends Annotation> annotationClass = (Class<? extends Annotation>) clazz;
-
- ValidatedByType validatedByType = constraintDefinition.getValidatedBy();
- List<Class<? extends ConstraintValidator<?, ?>>> classes =
- new ArrayList<Class<? extends ConstraintValidator<?, ?>>>();
- /*
- If include-existing-validator is set to false,
- ConstraintValidator defined on the constraint annotation are ignored.
- */
- if (validatedByType.isIncludeExistingValidators() != null &&
- validatedByType.isIncludeExistingValidators()) {
- /*
- If set to true, the list of ConstraintValidators described in XML
- are concatenated to the list of ConstraintValidator described on the
- annotation to form a new array of ConstraintValidator evaluated.
- */
- classes.addAll(findConstraintValidatorClasses(annotationClass));
- }
- for (JAXBElement<String> validatorClassName : validatedByType.getValue()) {
- Class<? extends ConstraintValidator<?, ?>> validatorClass;
- validatorClass = (Class<? extends ConstraintValidator<?, ?>>)
- loadClass(validatorClassName.getValue());
-
-
- if (!ConstraintValidator.class.isAssignableFrom(validatorClass)) {
- throw new ValidationException(
- validatorClass + " is not a constraint validator class");
- }
-
- /*
- Annotation based ConstraintValidator come before XML based
- ConstraintValidator in the array. The new list is returned
- by ConstraintDescriptor.getConstraintValidatorClasses().
- */
- if (!classes.contains(validatorClass)) classes.add(validatorClass);
- }
- if (factory.getConstraintsCache().containsConstraintValidator(annotationClass)) {
- throw new ValidationException("Constraint validator for " +
- annotationClass.getName() + " already configured.");
- } else {
- factory.getConstraintsCache().putConstraintValidator(annotationClass,
- classes.toArray(new Class[classes.size()]));
- }
- }
- }
-
- private List<Class<? extends ConstraintValidator<? extends Annotation, ?>>> findConstraintValidatorClasses(
- Class<? extends Annotation> annotationType) {
- List<Class<? extends ConstraintValidator<? extends Annotation, ?>>> classes =
- new ArrayList<Class<? extends ConstraintValidator<? extends Annotation, ?>>>();
-
- Class<? extends ConstraintValidator<?, ?>>[] validator =
- factory.getDefaultConstraints().getValidatorClasses(annotationType);
- if (validator != null) {
- classes
- .addAll(Arrays.asList(validator));
- } else {
- Class<? extends ConstraintValidator<?, ?>>[] validatedBy = annotationType
- .getAnnotation(Constraint.class)
- .validatedBy();
- classes.addAll(Arrays.asList(validatedBy));
- }
- return classes;
- }
-
- private Class<?> loadClass(String className, String defaultPackage) {
- return loadClass(toQualifiedClassName(className, defaultPackage));
- }
-
- private String toQualifiedClassName(String className, String defaultPackage) {
- if (!isQualifiedClass(className)) {
- className = defaultPackage + "." + className;
- }
- return className;
- }
-
- private boolean isQualifiedClass(String clazz) {
- return clazz.contains(".");
- }
-
-
-
- private static <T> T doPrivileged(final PrivilegedAction<T> action) {
- if (System.getSecurityManager() != null) {
- return AccessController.doPrivileged(action);
- } else {
- return action.run();
- }
- }
-
-
-
- private static Method getGetter(final Class<?> clazz, final String propertyName) {
- return doPrivileged(new PrivilegedAction<Method>() {
- public Method run() {
- try {
- final String p = StringUtils.capitalize(propertyName);
- try {
- return clazz.getMethod("get" + p);
- } catch (NoSuchMethodException e) {
- return clazz.getMethod("is" + p);
- }
- } catch (NoSuchMethodException e) {
- return null;
- }
- }
- });
-
- }
-
-
-
- private Class<?> loadClass(final String className) {
- ClassLoader loader = doPrivileged(SecureActions.getContextClassLoader());
- if (loader == null)
- loader = getClass().getClassLoader();
-
- try {
- return Class.forName(className, true, loader);
- } catch (ClassNotFoundException ex) {
- throw new ValidationException("Unable to load class: " + className, ex);
- }
- }
-
-}
diff --git a/trunk/bval-jsr303/src/main/java/org/apache/bval/jsr303/xml/ValidationParser.java b/trunk/bval-jsr303/src/main/java/org/apache/bval/jsr303/xml/ValidationParser.java
deleted file mode 100644
index 83accb2..0000000
--- a/trunk/bval-jsr303/src/main/java/org/apache/bval/jsr303/xml/ValidationParser.java
+++ /dev/null
@@ -1,286 +0,0 @@
-/*
- * 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.bval.jsr303.xml;
-
-
-import org.apache.bval.jsr303.ConfigurationImpl;
-import org.apache.bval.jsr303.util.IOUtils;
-import org.apache.bval.jsr303.util.SecureActions;
-import org.apache.bval.util.PrivilegedActions;
-import org.xml.sax.SAXException;
-
-import javax.validation.ConstraintValidatorFactory;
-import javax.validation.MessageInterpolator;
-import javax.validation.TraversableResolver;
-import javax.validation.ValidationException;
-import javax.validation.spi.ValidationProvider;
-import javax.xml.XMLConstants;
-import javax.xml.bind.JAXBContext;
-import javax.xml.bind.JAXBElement;
-import javax.xml.bind.JAXBException;
-import javax.xml.bind.Unmarshaller;
-import javax.xml.transform.stream.StreamSource;
-import javax.xml.validation.Schema;
-import javax.xml.validation.SchemaFactory;
-import java.io.IOException;
-import java.io.InputStream;
-import java.net.URL;
-import java.security.AccessController;
-import java.security.PrivilegedAction;
-import java.util.Enumeration;
-import java.util.logging.Level;
-import java.util.logging.Logger;
-
-/**
- * Description: uses jaxb to parse validation.xml<br/>
- */
-@SuppressWarnings("restriction")
-public class ValidationParser {
- private static final String DEFAULT_VALIDATION_XML_FILE = "META-INF/validation.xml";
- private static final String VALIDATION_CONFIGURATION_XSD =
- "META-INF/validation-configuration-1.0.xsd";
- private static final Logger log = Logger.getLogger(ValidationParser.class.getName());
- protected final String validationXmlFile;
-
- /**
- * Create a new ValidationParser instance.
- *
- * @param file
- */
- public ValidationParser(String file) {
- if (file == null) {
- validationXmlFile = DEFAULT_VALIDATION_XML_FILE;
- } else {
- validationXmlFile = file;
- }
- }
-
- /**
- * Process the validation configuration into <code>targetConfig</code>.
- *
- * @param targetConfig
- */
- public void processValidationConfig(ConfigurationImpl targetConfig) {
- ValidationConfigType xmlConfig = parseXmlConfig();
- if (xmlConfig != null) {
- applyConfig(xmlConfig, targetConfig);
- }
- }
-
- private ValidationConfigType parseXmlConfig() {
- InputStream inputStream = null;
- try {
- inputStream = getInputStream(validationXmlFile);
- if (inputStream == null) {
- log.log(Level.FINEST, String.format("No %s found. Using annotation based configuration only.", validationXmlFile));
- return null;
- }
-
- log.log(Level.FINEST, String.format("%s found.", validationXmlFile));
-
- Schema schema = getSchema();
- JAXBContext jc = JAXBContext.newInstance(ValidationConfigType.class);
- Unmarshaller unmarshaller = jc.createUnmarshaller();
- unmarshaller.setSchema(schema);
- StreamSource stream = new StreamSource(inputStream);
- JAXBElement<ValidationConfigType> root =
- unmarshaller.unmarshal(stream, ValidationConfigType.class);
- return root.getValue();
- } catch (JAXBException e) {
- throw new ValidationException("Unable to parse " + validationXmlFile, e);
- } catch (IOException e) {
- throw new ValidationException("Unable to parse " + validationXmlFile, e);
- } finally {
- IOUtils.closeQuietly(inputStream);
- }
- }
-
- protected InputStream getInputStream(String path) throws IOException {
- ClassLoader loader = PrivilegedActions.getClassLoader(getClass());
- InputStream inputStream = loader.getResourceAsStream(path);
-
- if (inputStream != null) {
- // spec says: If more than one META-INF/validation.xml file
- // is found in the classpath, a ValidationException is raised.
- Enumeration<URL> urls = loader.getResources(path);
- if (urls.hasMoreElements()) {
- String url = urls.nextElement().toString();
- while (urls.hasMoreElements()) {
- if (!url.equals(urls.nextElement().toString())) { // complain when first duplicate found
- throw new ValidationException("More than one " + path + " is found in the classpath");
- }
- }
- }
- }
-
- return inputStream;
- }
-
- private Schema getSchema() {
- return getSchema(VALIDATION_CONFIGURATION_XSD);
- }
-
- /**
- * Get a Schema object from the specified resource name.
- *
- * @param xsd
- * @return {@link Schema}
- */
- static Schema getSchema(String xsd) {
- ClassLoader loader = PrivilegedActions.getClassLoader(ValidationParser.class);
- SchemaFactory sf = SchemaFactory.newInstance(XMLConstants.W3C_XML_SCHEMA_NS_URI);
- URL schemaUrl = loader.getResource(xsd);
- try {
- return sf.newSchema(schemaUrl);
- } catch (SAXException e) {
- log.log(Level.WARNING, String.format("Unable to parse schema: %s", xsd), e);
- return null;
- }
- }
-
- private void applyConfig(ValidationConfigType xmlConfig, ConfigurationImpl targetConfig) {
- applyProviderClass(xmlConfig, targetConfig);
- applyMessageInterpolator(xmlConfig, targetConfig);
- applyTraversableResolver(xmlConfig, targetConfig);
- applyConstraintFactory(xmlConfig, targetConfig);
- applyMappingStreams(xmlConfig, targetConfig);
- applyProperties(xmlConfig, targetConfig);
- }
-
- private void applyProperties(ValidationConfigType xmlConfig, ConfigurationImpl target) {
- for (PropertyType property : xmlConfig.getProperty()) {
- if (log.isLoggable(Level.FINEST)) {
- log.log(Level.FINEST, String.format("Found property '%s' with value '%s' in %s", property.getName(), property.getValue(), validationXmlFile));
- }
- target.addProperty(property.getName(), property.getValue());
- }
- }
-
- @SuppressWarnings("unchecked")
- private void applyProviderClass(ValidationConfigType xmlConfig, ConfigurationImpl target) {
- String providerClassName = xmlConfig.getDefaultProvider();
- if (providerClassName != null) {
- Class<? extends ValidationProvider<?>> clazz =
- (Class<? extends ValidationProvider<?>>) loadClass(providerClassName);
- target.setProviderClass(clazz);
- log.log(Level.INFO, String.format("Using %s as validation provider.", providerClassName));
- }
- }
-
- @SuppressWarnings("unchecked")
- private void applyMessageInterpolator(ValidationConfigType xmlConfig,
- ConfigurationImpl target) {
- String messageInterpolatorClass = xmlConfig.getMessageInterpolator();
- if (target.getMessageInterpolator() == null) {
- if (messageInterpolatorClass != null) {
- Class<MessageInterpolator> clazz = (Class<MessageInterpolator>)
- loadClass(messageInterpolatorClass);
- target.messageInterpolator(newInstance(clazz));
- log.log(Level.INFO, String.format("Using %s as message interpolator.", messageInterpolatorClass));
- }
- }
- }
-
- @SuppressWarnings("unchecked")
- private void applyTraversableResolver(ValidationConfigType xmlConfig,
- ConfigurationImpl target) {
- String traversableResolverClass = xmlConfig.getTraversableResolver();
- if (target.getTraversableResolver() == null) {
- if (traversableResolverClass != null) {
- Class<TraversableResolver> clazz = (Class<TraversableResolver>)
- loadClass(traversableResolverClass);
- target.traversableResolver(newInstance(clazz));
- log.log(Level.INFO, String.format("Using %s as traversable resolver.", traversableResolverClass));
- }
- }
- }
-
- private <T> T newInstance(final Class<T> cls) {
- return AccessController.doPrivileged(new PrivilegedAction<T>() {
- public T run() {
- try {
- return cls.newInstance();
- } catch (final Exception ex) {
- throw new ValidationException("Cannot instantiate : " + cls, ex);
- }
- }
- });
- }
-
- @SuppressWarnings("unchecked")
- private void applyConstraintFactory(ValidationConfigType xmlConfig,
- ConfigurationImpl target) {
- String constraintFactoryClass = xmlConfig.getConstraintValidatorFactory();
- if (target.getConstraintValidatorFactory() == null) {
- if (constraintFactoryClass != null) {
- Class<ConstraintValidatorFactory> clazz = (Class<ConstraintValidatorFactory>)
- loadClass(constraintFactoryClass);
- target.constraintValidatorFactory(newInstance(clazz));
- log.log(Level.INFO, String.format("Using %s as constraint factory.", constraintFactoryClass));
- }
- }
- }
-
- private void applyMappingStreams(ValidationConfigType xmlConfig,
- ConfigurationImpl target) {
- for (JAXBElement<String> mappingFileNameElement : xmlConfig.getConstraintMapping()) {
- String mappingFileName = mappingFileNameElement.getValue();
- if (mappingFileName.startsWith("/")) {
- // Classloader needs a path without a starting /
- mappingFileName = mappingFileName.substring(1);
- }
- log.log(Level.FINEST, String.format("Trying to open input stream for %s", mappingFileName));
- InputStream in = null;
- try {
- in = getInputStream(mappingFileName);
- if (in == null) {
- throw new ValidationException(
- "Unable to open input stream for mapping file " +
- mappingFileName);
- }
- } catch (IOException e) {
- throw new ValidationException("Unable to open input stream for mapping file " +
- mappingFileName, e);
- }
- target.addMapping(in);
- }
- }
-
-
- private static <T> T doPrivileged(final PrivilegedAction<T> action) {
- if (System.getSecurityManager() != null) {
- return AccessController.doPrivileged(action);
- } else {
- return action.run();
- }
- }
-
- private Class<?> loadClass(final String className) {
- ClassLoader loader = doPrivileged(SecureActions.getContextClassLoader());
- if (loader == null)
- loader = getClass().getClassLoader();
-
- try {
- return Class.forName(className, true, loader);
- } catch (ClassNotFoundException ex) {
- throw new ValidationException("Unable to load class: " + className, ex);
- }
- }
-
-}
diff --git a/trunk/bval-jsr303/src/main/resources/META-INF/services/javax.validation.spi.ValidationProvider b/trunk/bval-jsr303/src/main/resources/META-INF/services/javax.validation.spi.ValidationProvider
deleted file mode 100644
index af55120..0000000
--- a/trunk/bval-jsr303/src/main/resources/META-INF/services/javax.validation.spi.ValidationProvider
+++ /dev/null
@@ -1,17 +0,0 @@
-# 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.
-org.apache.bval.jsr303.ApacheValidationProvider
\ No newline at end of file
diff --git a/trunk/bval-jsr303/src/main/resources/org/apache/bval/jsr303/DefaultConstraints.properties b/trunk/bval-jsr303/src/main/resources/org/apache/bval/jsr303/DefaultConstraints.properties
deleted file mode 100644
index 6ed1e94..0000000
--- a/trunk/bval-jsr303/src/main/resources/org/apache/bval/jsr303/DefaultConstraints.properties
+++ /dev/null
@@ -1,53 +0,0 @@
-# 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.
-
-# configuration for mapping of javax.validation.constraints to ConstraintValidator implementations
-# the annotations from the JSR303 validation-api are mentioned here, but you could
-# also extend the configuration to get a default implementation for other constraint-annotations.
-# format: key=constraint-annotation-class value=constraint-validator-class (multiple classes: comma-separated)
-
-javax.validation.constraints.AssertFalse=org.apache.bval.constraints.AssertFalseValidator
-javax.validation.constraints.AssertTrue=org.apache.bval.constraints.AssertTrueValidator
-javax.validation.constraints.DecimalMax=org.apache.bval.constraints.DecimalMaxValidatorForNumber,\
- org.apache.bval.constraints.DecimalMaxValidatorForString
-javax.validation.constraints.DecimalMin=org.apache.bval.constraints.DecimalMinValidatorForNumber,\
- org.apache.bval.constraints.DecimalMinValidatorForString
-javax.validation.constraints.Digits=org.apache.bval.constraints.DigitsValidatorForNumber,\
- org.apache.bval.constraints.DigitsValidatorForString
-javax.validation.constraints.Future=org.apache.bval.constraints.FutureValidatorForDate,\
- org.apache.bval.constraints.FutureValidatorForCalendar
-javax.validation.constraints.Max=org.apache.bval.constraints.MaxValidatorForNumber,\
- org.apache.bval.constraints.MaxValidatorForString
-javax.validation.constraints.Min=org.apache.bval.constraints.MinValidatorForNumber,\
- org.apache.bval.constraints.MinValidatorForString
-javax.validation.constraints.NotNull=org.apache.bval.constraints.NotNullValidator
-javax.validation.constraints.Null=org.apache.bval.constraints.NullValidator
-javax.validation.constraints.Past=org.apache.bval.constraints.PastValidatorForDate,\
- org.apache.bval.constraints.PastValidatorForCalendar
-javax.validation.constraints.Size=org.apache.bval.constraints.SizeValidatorForString,\
- org.apache.bval.constraints.SizeValidatorForMap,\
- org.apache.bval.constraints.SizeValidatorForCollection,\
- org.apache.bval.constraints.SizeValidatorForArrayOfBoolean,\
- org.apache.bval.constraints.SizeValidatorForArrayOfByte,\
- org.apache.bval.constraints.SizeValidatorForArrayOfChar,\
- org.apache.bval.constraints.SizeValidatorForArrayOfDouble,\
- org.apache.bval.constraints.SizeValidatorForArrayOfFloat,\
- org.apache.bval.constraints.SizeValidatorForArrayOfInt,\
- org.apache.bval.constraints.SizeValidatorForArrayOfLong,\
- org.apache.bval.constraints.SizeValidatorForArrayOfObject,\
- org.apache.bval.constraints.SizeValidatorForArrayOfShort
-javax.validation.constraints.Pattern=org.apache.bval.constraints.PatternValidator
diff --git a/trunk/bval-jsr303/src/main/resources/org/apache/bval/jsr303/ValidationMessages.properties b/trunk/bval-jsr303/src/main/resources/org/apache/bval/jsr303/ValidationMessages.properties
deleted file mode 100644
index 5e4fd97..0000000
--- a/trunk/bval-jsr303/src/main/resources/org/apache/bval/jsr303/ValidationMessages.properties
+++ /dev/null
@@ -1,37 +0,0 @@
-# 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.
-
-# The properties listed below are resolved by the default message resolver.
-
-# standard
-javax.validation.constraints.Null.message=must be null
-javax.validation.constraints.NotNull.message=may not be null
-javax.validation.constraints.AssertTrue.message=must be true
-javax.validation.constraints.AssertFalse.message=must be false
-javax.validation.constraints.Min.message=must be greater than or equal to {value}
-javax.validation.constraints.Max.message=must be less than or equal to {value}
-javax.validation.constraints.Size.message=size must be between {min} and {max}
-javax.validation.constraints.Digits.message=numeric value out of bounds (<{integer} digits>.<{fraction} digits> expected)
-javax.validation.constraints.Past.message=must be a past date
-javax.validation.constraints.Future.message=must be a future date
-javax.validation.constraints.Pattern.message=must match the following regular expression: {regexp}
-javax.validation.constraints.DecimalMax.message=must be less than or equal to {value}
-javax.validation.constraints.DecimalMin.message=must be greater than or equal to {value}
-
-# additional built-ins
-org.apache.bval.constraints.NotEmpty.message=may not be empty
-org.apache.bval.constraints.Email.message=not a well-formed email address
diff --git a/trunk/bval-jsr303/src/main/resources/org/apache/bval/jsr303/ValidationMessages_de.properties b/trunk/bval-jsr303/src/main/resources/org/apache/bval/jsr303/ValidationMessages_de.properties
deleted file mode 100644
index d55a8fd..0000000
--- a/trunk/bval-jsr303/src/main/resources/org/apache/bval/jsr303/ValidationMessages_de.properties
+++ /dev/null
@@ -1,37 +0,0 @@
-# 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.
-
-# The properties listed below are resolved by the default message resolver.
-
-# standard
-javax.validation.constraints.Null.message=muss "null" sein
-javax.validation.constraints.NotNull.message=darf nicht "null" sein
-javax.validation.constraints.AssertTrue.message=muss "true" sein
-javax.validation.constraints.AssertFalse.message=muss "false" sein
-javax.validation.constraints.Min.message=muss gr\u00F6\u00DFer oder gleich {value} sein
-javax.validation.constraints.Max.message=muss kleiner oder gleich {value} sein
-javax.validation.constraints.Size.message=Gr\u00F6\u00DFe muss zwischen {min} und {max} liegen
-javax.validation.constraints.Digits.message=numerischer Wert au\u00DFerhalb des G\u00FCltigkeitsbereiches (erwarte: <{integer} digits>.<{fraction} digits>)
-javax.validation.constraints.Past.message=muss Datum in der Vergangenheit sein
-javax.validation.constraints.Future.message=muss Datum in der Zukunft sein
-javax.validation.constraints.Pattern.message=Muss mit regul\u00E4rem Ausdruck \u00FCbereinstimmen: {regexp}
-javax.validation.constraints.DecimalMax.message=muss kleiner oder gleich {value} sein
-javax.validation.constraints.DecimalMin.message=muss gr\u00F6\u00DFer oder gleich {value} sein
-
-# additional built-ins
-org.apache.bval.constraints.NotEmpty.message=darf nicht leer sein
-org.apache.bval.constraints.Email.message=muss g\u00FCltiges Format einer EMail-Adresse sein
diff --git a/trunk/bval-jsr303/src/main/resources/org/apache/bval/jsr303/ValidationMessages_en.properties b/trunk/bval-jsr303/src/main/resources/org/apache/bval/jsr303/ValidationMessages_en.properties
deleted file mode 100644
index 4ecfad3..0000000
--- a/trunk/bval-jsr303/src/main/resources/org/apache/bval/jsr303/ValidationMessages_en.properties
+++ /dev/null
@@ -1,20 +0,0 @@
-# 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.
-
-# intentionally empty, because english messages are located in the default bundle.
-# this file ensures, that a lookup with an english locale uses the default bundle and not the
-# bundle of the default locale, which is platform specific
\ No newline at end of file
diff --git a/trunk/bval-jsr303/src/main/resources/org/apache/bval/jsr303/ValidationMessages_es.properties b/trunk/bval-jsr303/src/main/resources/org/apache/bval/jsr303/ValidationMessages_es.properties
deleted file mode 100644
index 97e1761..0000000
--- a/trunk/bval-jsr303/src/main/resources/org/apache/bval/jsr303/ValidationMessages_es.properties
+++ /dev/null
@@ -1,37 +0,0 @@
-# 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.
-
-# The properties listed below are resolved by the default message resolver.
-
-# standard
-javax.validation.constraints.Null.message=tiene que ser null
-javax.validation.constraints.NotNull.message=no puede ser null
-javax.validation.constraints.AssertTrue.message=tiene que ser true
-javax.validation.constraints.AssertFalse.message=tiene que ser false
-javax.validation.constraints.Min.message=tiene que ser menor o igual que {value}
-javax.validation.constraints.Max.message=tiene que ser mayor o igual que {value}
-javax.validation.constraints.Size.message=el tamaño tiene que estar comprendido entre {min} y {max}
-javax.validation.constraints.Digits.message=valor numérico fuera de los límites (se espera <{integer} cifras>.<{fraction} cifras>)
-javax.validation.constraints.Past.message=tiene que ser una fecha en el pasado
-javax.validation.constraints.Future.message=tiene que ser una fecha en el futuro
-javax.validation.constraints.Pattern.message=tiene que corresponder a la expresión regular "{regexp}"
-javax.validation.constraints.DecimalMax.message=tiene que ser mayor o igual que {value}
-javax.validation.constraints.DecimalMin.message=tiene que ser menor o igual que {value}
-
-# additional built-ins
-org.apache.bval.constraints.NotEmpty.message=no puede ser vacio
-org.apache.bval.constraints.Email.message=tiene que ser un correo email bien formado
diff --git a/trunk/bval-jsr303/src/main/resources/org/apache/bval/jsr303/ValidationMessages_it.properties b/trunk/bval-jsr303/src/main/resources/org/apache/bval/jsr303/ValidationMessages_it.properties
deleted file mode 100644
index 87e3273..0000000
--- a/trunk/bval-jsr303/src/main/resources/org/apache/bval/jsr303/ValidationMessages_it.properties
+++ /dev/null
@@ -1,37 +0,0 @@
-# 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.
-
-# The properties listed below are resolved by the default message resolver.
-
-# standard
-javax.validation.constraints.Null.message=deve essere null
-javax.validation.constraints.NotNull.message=non pu\u00F2 essere null
-javax.validation.constraints.AssertTrue.message=deve essere true
-javax.validation.constraints.AssertFalse.message=deve essere false
-javax.validation.constraints.Min.message=deve essere minore o uguale di {value}
-javax.validation.constraints.Max.message=deve essere maggiore o uguale di {value}
-javax.validation.constraints.Size.message=le dimensioni devono essere tra {min} e {max}
-javax.validation.constraints.Digits.message=valore numerico fuori dai limiti (atteso <{integer} cifre>.<{fraction} cifre>)
-javax.validation.constraints.Past.message=deve essere una data nel passato
-javax.validation.constraints.Future.message=deve essere una data futura
-javax.validation.constraints.Pattern.message=deve corrispondere all'espressione regolare "{regexp}"
-javax.validation.constraints.DecimalMax.message=deve essere maggiore o uguale di {value}
-javax.validation.constraints.DecimalMin.message=deve essere minore o uguale di {value}
-
-# additional built-ins
-org.apache.bval.constraints.NotEmpty.message=non pu\u00F2 essere vuoto
-org.apache.bval.constraints.Email.message=non \u00E8 un indirizzo email ben formato
diff --git a/trunk/bval-jsr303/src/main/xjb/binding-customization.xjb b/trunk/bval-jsr303/src/main/xjb/binding-customization.xjb
deleted file mode 100644
index 2e76014..0000000
--- a/trunk/bval-jsr303/src/main/xjb/binding-customization.xjb
+++ /dev/null
@@ -1,32 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!--
- 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.
--->
-<jxb:bindings version="1.0" xmlns:jxb="http://java.sun.com/xml/ns/jaxb"
- xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:xjc="http://java.sun.com/xml/ns/jaxb/xjc">
- <jxb:bindings schemaLocation="../xsd/validation-mapping-1.0.xsd" node="/xs:schema">
- <jxb:globalBindings>
- <xjc:javaType name="java.lang.String" xmlType="xs:string"
- adapter="javax.xml.bind.annotation.adapters.CollapsedStringAdapter"/>
- </jxb:globalBindings>
-
- <jxb:bindings node="//xs:complexType[9]/xs:sequence[1]/xs:element[1]">
- <jxb:property name="classType"/>
- </jxb:bindings>
- </jxb:bindings>
-</jxb:bindings>
diff --git a/trunk/bval-jsr303/src/main/xsd/validation-configuration-1.0.xsd b/trunk/bval-jsr303/src/main/xsd/validation-configuration-1.0.xsd
deleted file mode 100644
index 5476714..0000000
--- a/trunk/bval-jsr303/src/main/xsd/validation-configuration-1.0.xsd
+++ /dev/null
@@ -1,45 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!--
- 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.
--->
-<xs:schema attributeFormDefault="unqualified"
- elementFormDefault="qualified"
- targetNamespace="http://jboss.org/xml/ns/javax/validation/configuration"
- xmlns:xs="http://www.w3.org/2001/XMLSchema"
- version="1.0">
- <xs:element name="validation-config" type="config:validation-configType"
- xmlns:config="http://jboss.org/xml/ns/javax/validation/configuration"/>
- <xs:complexType name="validation-configType">
- <xs:sequence>
- <xs:element type="xs:string" name="default-provider" minOccurs="0"/>
- <xs:element type="xs:string" name="message-interpolator" minOccurs="0"/>
- <xs:element type="xs:string" name="traversable-resolver" minOccurs="0"/>
- <xs:element type="xs:string" name="constraint-validator-factory" minOccurs="0"/>
- <xs:element type="xs:string" name="constraint-mapping" maxOccurs="unbounded" minOccurs="0"/>
- <xs:element type="config:propertyType" name="property" maxOccurs="unbounded" minOccurs="0"
- xmlns:config="http://jboss.org/xml/ns/javax/validation/configuration"/>
- </xs:sequence>
- </xs:complexType>
- <xs:complexType name="propertyType">
- <xs:simpleContent>
- <xs:extension base="xs:string">
- <xs:attribute name="name" use="required" type="xs:string"/>
- </xs:extension>
- </xs:simpleContent>
- </xs:complexType>
-</xs:schema>
diff --git a/trunk/bval-jsr303/src/main/xsd/validation-mapping-1.0.xsd b/trunk/bval-jsr303/src/main/xsd/validation-mapping-1.0.xsd
deleted file mode 100644
index 87c34b9..0000000
--- a/trunk/bval-jsr303/src/main/xsd/validation-mapping-1.0.xsd
+++ /dev/null
@@ -1,171 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!--
- 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.
--->
-<xs:schema attributeFormDefault="unqualified"
- elementFormDefault="qualified"
- targetNamespace="http://jboss.org/xml/ns/javax/validation/mapping"
- xmlns:xs="http://www.w3.org/2001/XMLSchema"
- version="1.0">
- <xs:element name="constraint-mappings"
- type="map:constraint-mappingsType"
- xmlns:map="http://jboss.org/xml/ns/javax/validation/mapping"/>
-
- <xs:complexType name="payloadType">
- <xs:sequence>
- <xs:element type="xs:string" name="value" maxOccurs="unbounded" minOccurs="0"/>
- </xs:sequence>
- </xs:complexType>
- <xs:complexType name="groupsType">
- <xs:sequence>
- <xs:element type="xs:string" name="value" maxOccurs="unbounded" minOccurs="0"/>
- </xs:sequence>
- </xs:complexType>
- <xs:complexType name="groupSequenceType">
- <xs:sequence>
- <xs:element type="xs:string" name="value" maxOccurs="unbounded" minOccurs="0"/>
- </xs:sequence>
- </xs:complexType>
- <xs:complexType name="constraint-mappingsType">
- <xs:sequence>
- <xs:element type="xs:string" name="default-package" minOccurs="0"/>
- <xs:element type="map:beanType"
- name="bean"
- maxOccurs="unbounded"
- minOccurs="0"
- xmlns:map="http://jboss.org/xml/ns/javax/validation/mapping"/>
- <xs:element type="map:constraint-definitionType"
- name="constraint-definition"
- maxOccurs="unbounded"
- minOccurs="0"
- xmlns:map="http://jboss.org/xml/ns/javax/validation/mapping"/>
- </xs:sequence>
- </xs:complexType>
- <xs:complexType name="validated-byType">
- <xs:sequence>
- <xs:element type="xs:string" name="value" maxOccurs="unbounded" minOccurs="0"/>
- </xs:sequence>
- <xs:attribute type="xs:boolean" name="include-existing-validators" use="optional"/>
- </xs:complexType>
- <xs:complexType name="constraintType">
- <xs:sequence>
- <xs:element type="xs:string" name="message" minOccurs="0"/>
- <xs:element type="map:groupsType"
- name="groups"
- minOccurs="0"
- xmlns:map="http://jboss.org/xml/ns/javax/validation/mapping"/>
- <xs:element type="map:payloadType"
- name="payload"
- minOccurs="0"
- xmlns:map="http://jboss.org/xml/ns/javax/validation/mapping"/>
- <xs:element type="map:elementType"
- name="element"
- maxOccurs="unbounded"
- minOccurs="0"
- xmlns:map="http://jboss.org/xml/ns/javax/validation/mapping"/>
- </xs:sequence>
- <xs:attribute type="xs:string" name="annotation" use="required"/>
- </xs:complexType>
- <xs:complexType name="elementType" mixed="true">
- <xs:sequence>
- <xs:element type="xs:string" name="value" maxOccurs="unbounded" minOccurs="0"/>
- <xs:element type="map:annotationType"
- name="annotation"
- maxOccurs="unbounded"
- minOccurs="0"
- xmlns:map="http://jboss.org/xml/ns/javax/validation/mapping"/>
- </xs:sequence>
- <xs:attribute type="xs:string" name="name" use="required"/>
- </xs:complexType>
- <xs:complexType name="classType">
- <xs:sequence>
- <xs:element type="map:groupSequenceType"
- name="group-sequence"
- minOccurs="0"
- xmlns:map="http://jboss.org/xml/ns/javax/validation/mapping"/>
- <xs:element type="map:constraintType"
- name="constraint"
- maxOccurs="unbounded"
- minOccurs="0"
- xmlns:map="http://jboss.org/xml/ns/javax/validation/mapping"/>
- </xs:sequence>
- <xs:attribute type="xs:boolean" name="ignore-annotations" use="optional"/>
- </xs:complexType>
- <xs:complexType name="beanType">
- <xs:sequence>
- <xs:element type="map:classType"
- name="class"
- minOccurs="0"
- xmlns:map="http://jboss.org/xml/ns/javax/validation/mapping">
- </xs:element>
- <xs:element type="map:fieldType"
- name="field"
- minOccurs="0"
- maxOccurs="unbounded"
- xmlns:map="http://jboss.org/xml/ns/javax/validation/mapping"/>
- <xs:element type="map:getterType"
- name="getter"
- minOccurs="0"
- maxOccurs="unbounded"
- xmlns:map="http://jboss.org/xml/ns/javax/validation/mapping"/>
- </xs:sequence>
- <xs:attribute type="xs:string" name="class" use="required"/>
- <xs:attribute type="xs:boolean" name="ignore-annotations" use="optional"/>
- </xs:complexType>
- <xs:complexType name="annotationType">
- <xs:sequence>
- <xs:element type="map:elementType"
- name="element"
- maxOccurs="unbounded"
- minOccurs="0"
- xmlns:map="http://jboss.org/xml/ns/javax/validation/mapping"/>
- </xs:sequence>
- </xs:complexType>
- <xs:complexType name="getterType">
- <xs:sequence>
- <xs:element type="xs:string" name="valid" minOccurs="0" fixed=""/>
- <xs:element type="map:constraintType"
- name="constraint"
- minOccurs="0"
- maxOccurs="unbounded"
- xmlns:map="http://jboss.org/xml/ns/javax/validation/mapping"/>
- </xs:sequence>
- <xs:attribute type="xs:string" name="name" use="required"/>
- <xs:attribute type="xs:boolean" name="ignore-annotations" use="optional"/>
- </xs:complexType>
- <xs:complexType name="constraint-definitionType">
- <xs:sequence>
- <xs:element type="map:validated-byType"
- name="validated-by"
- xmlns:map="http://jboss.org/xml/ns/javax/validation/mapping"/>
- </xs:sequence>
- <xs:attribute type="xs:string" name="annotation" use="required"/>
- </xs:complexType>
- <xs:complexType name="fieldType">
- <xs:sequence>
- <xs:element type="xs:string" name="valid" minOccurs="0" fixed=""/>
- <xs:element type="map:constraintType"
- name="constraint"
- minOccurs="0"
- maxOccurs="unbounded"
- xmlns:map="http://jboss.org/xml/ns/javax/validation/mapping"/>
- </xs:sequence>
- <xs:attribute type="xs:string" name="name" use="required"/>
- <xs:attribute type="xs:boolean" name="ignore-annotations" use="optional"/>
- </xs:complexType>
-</xs:schema>
diff --git a/trunk/bval-jsr303/src/test/java/org/apache/bval/constraints/AssertFalseValidatorTest.java b/trunk/bval-jsr303/src/test/java/org/apache/bval/constraints/AssertFalseValidatorTest.java
deleted file mode 100644
index 4677d34..0000000
--- a/trunk/bval-jsr303/src/test/java/org/apache/bval/constraints/AssertFalseValidatorTest.java
+++ /dev/null
@@ -1,61 +0,0 @@
-/*
- * 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.bval.constraints;
-
-import junit.framework.Test;
-import junit.framework.TestCase;
-import junit.framework.TestSuite;
-
-
-/**
- * Checks correct behaviour of {@link AssertFalseValidator}.
- * <p>
- * Per the spec:
- * <ul>
- * <li>The annotated element must be false.</li>
- * <li><code>null</code> elements are considered valid.</li>
- * </ul>
- *
- * TODO: Mock context and verify that it's not used during validation.
- *
- * @see "bean_validation-1_0_CR1-pfd-spec#Chapter6#Example6.4"
- *
- * @author Carlos Vara
- */
-public class AssertFalseValidatorTest extends TestCase {
-
- public static Test suite() {
- return new TestSuite(AssertFalseValidatorTest.class);
- }
-
- public AssertFalseValidatorTest(String name) {
- super(name);
- }
-
- /**
- * Test {@link AssertFalseValidator} with <code>null</code> context.
- */
- public void testAssertFalseValidator() {
- AssertFalseValidator afv = new AssertFalseValidator();
- assertFalse("True value validation must fail", afv.isValid(true, null));
- assertTrue("False value validation must succeed", afv.isValid(false, null));
- assertTrue("Null value validation must succeed", afv.isValid(null, null));
- }
-
-}
diff --git a/trunk/bval-jsr303/src/test/java/org/apache/bval/constraints/AssertTrueValidatorTest.java b/trunk/bval-jsr303/src/test/java/org/apache/bval/constraints/AssertTrueValidatorTest.java
deleted file mode 100644
index 016fe02..0000000
--- a/trunk/bval-jsr303/src/test/java/org/apache/bval/constraints/AssertTrueValidatorTest.java
+++ /dev/null
@@ -1,61 +0,0 @@
-/*
- * 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.bval.constraints;
-
-import junit.framework.Test;
-import junit.framework.TestCase;
-import junit.framework.TestSuite;
-
-
-/**
- * Checks correct behaviour of {@link AssertTrueValidator}.
- * <p>
- * Per the spec:
- * <ul>
- * <li>The annotated element must be true.</li>
- * <li><code>null</code> elements are considered valid.</li>
- * </ul>
- *
- * TODO: Mock context and verify that it's not used during validation.
- *
- * @see "bean_validation-1_0_CR1-pfd-spec#Chapter6#Example6.3"
- *
- * @author Carlos Vara
- */
-public class AssertTrueValidatorTest extends TestCase {
-
- public static Test suite() {
- return new TestSuite(AssertTrueValidatorTest.class);
- }
-
- public AssertTrueValidatorTest(String name) {
- super(name);
- }
-
- /**
- * Test {@link AssertTrueValidator} with null context.
- */
- public void testAssertTrueValidator() {
- AssertTrueValidator atv = new AssertTrueValidator();
- assertTrue("True value validation must succeed", atv.isValid(true, null));
- assertFalse("False value validation must fail", atv.isValid(false, null));
- assertTrue("Null value validation must succeed", atv.isValid(null, null));
- }
-
-}
diff --git a/trunk/bval-jsr303/src/test/java/org/apache/bval/constraints/AuthorAddressKnown.java b/trunk/bval-jsr303/src/test/java/org/apache/bval/constraints/AuthorAddressKnown.java
deleted file mode 100644
index 4240b5d..0000000
--- a/trunk/bval-jsr303/src/test/java/org/apache/bval/constraints/AuthorAddressKnown.java
+++ /dev/null
@@ -1,75 +0,0 @@
-/*
- * 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.bval.constraints;
-
-import static java.lang.annotation.ElementType.ANNOTATION_TYPE;
-import static java.lang.annotation.ElementType.FIELD;
-import static java.lang.annotation.ElementType.METHOD;
-import static java.lang.annotation.RetentionPolicy.RUNTIME;
-
-import java.lang.annotation.Retention;
-import java.lang.annotation.Target;
-
-import javax.validation.Constraint;
-import javax.validation.ConstraintValidator;
-import javax.validation.ConstraintValidatorContext;
-import javax.validation.Payload;
-
-import org.apache.bval.jsr303.example.Address;
-import org.apache.bval.jsr303.example.Author;
-
-/**
- *
- *
- * @version $Rev: 999729 $ $Date: 2010-09-21 21:37:54 -0500 (Tue, 21 Sep 2010) $
- */
-@Target( { ANNOTATION_TYPE, METHOD, FIELD })
-@Constraint(validatedBy = AuthorAddressKnown.Validator.class)
-@Retention(RUNTIME)
-public @interface AuthorAddressKnown {
-
- String message() default "{org.apache.bval.constraints.AuthorAddressKnown.message}";
-
- Class<?>[] groups() default {};
-
- Class<? extends Payload>[] payload() default { };
-
- public static class Validator implements ConstraintValidator<AuthorAddressKnown, Author> {
-
- /**
- * {@inheritDoc}
- */
- public void initialize(AuthorAddressKnown constraintAnnotation) {
- }
-
- /**
- * {@inheritDoc}
- */
- public boolean isValid(Author value, ConstraintValidatorContext context) {
- if (value.getAddresses() == null) {
- return false;
- }
- for (Address address : value.getAddresses()) {
- if (address != null) {
- return true;
- }
- }
- return false;
- }
-
- }
-}
diff --git a/trunk/bval-jsr303/src/test/java/org/apache/bval/constraints/CompanyEmail.java b/trunk/bval-jsr303/src/test/java/org/apache/bval/constraints/CompanyEmail.java
deleted file mode 100644
index 154cd2f..0000000
--- a/trunk/bval-jsr303/src/test/java/org/apache/bval/constraints/CompanyEmail.java
+++ /dev/null
@@ -1,67 +0,0 @@
-/*
- * 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.bval.constraints;
-
-import javax.validation.Constraint;
-import javax.validation.OverridesAttribute;
-import javax.validation.Payload;
-import javax.validation.constraints.Pattern;
-import java.lang.annotation.Documented;
-import java.lang.annotation.Retention;
-import java.lang.annotation.Target;
-
-import static java.lang.annotation.ElementType.*;
-import static java.lang.annotation.RetentionPolicy.RUNTIME;
-
-@Pattern.List({
- // email
- @Pattern(regexp = "[A-Z0-9._%+-]+@[A-Z0-9.-]+\\.[A-Z]{2,4}"),
- // agimatec
- @Pattern(regexp = ".*?COMPANY.*?")
-})
-/**
- * test a constraint WITHOUT an own ConstraintValidator implementation.
- * the validations, that must be processed are in the combined constraints only!!
- * the @Constraint annotation is nevertheless required so that the framework searches
- * for combined constraints.
- */
-@Constraint(validatedBy = {})
-@Documented
-@Target({ANNOTATION_TYPE, METHOD, FIELD, CONSTRUCTOR, PARAMETER})
-@Retention(RUNTIME)
-public @interface CompanyEmail {
- String message() default "Not an email of COMPANY";
-
- @OverridesAttribute(constraint = Pattern.class, name = "message",
- constraintIndex = 0) String emailMessage() default "Not an email";
-
- @OverridesAttribute(constraint = Pattern.class, name = "message",
- constraintIndex = 1) String agimatecMessage() default "Not COMPANY";
-
- Class<?>[] groups() default {};
-
- Class<? extends Payload>[] payload() default {};
-
- @Target({METHOD, FIELD, ANNOTATION_TYPE, CONSTRUCTOR, PARAMETER})
- @Retention(RUNTIME)
- @Documented
- @interface List {
- CompanyEmail[] value();
- }
-}
\ No newline at end of file
diff --git a/trunk/bval-jsr303/src/test/java/org/apache/bval/constraints/DecimalMinMaxValidatorsTest.java b/trunk/bval-jsr303/src/test/java/org/apache/bval/constraints/DecimalMinMaxValidatorsTest.java
deleted file mode 100644
index d0e0bb8..0000000
--- a/trunk/bval-jsr303/src/test/java/org/apache/bval/constraints/DecimalMinMaxValidatorsTest.java
+++ /dev/null
@@ -1,63 +0,0 @@
-/*
- * 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.bval.constraints;
-
-import junit.framework.TestCase;
-
-import javax.validation.ConstraintViolation;
-import javax.validation.Validation;
-import javax.validation.Validator;
-import javax.validation.constraints.DecimalMax;
-import javax.validation.constraints.DecimalMin;
-import java.util.Set;
-
-/**
- * Description: <br>
- * User: roman.stumm<br>
- * Date: 06.04.2010<br>
- * Time: 13:45:09<br>
- */
-public class DecimalMinMaxValidatorsTest extends TestCase {
-
- @DecimalMin("922392239223.06")
- public double dmin;
- @DecimalMax("922392239223.09")
- public double dmax;
-
- public void testDecimalMinValue() {
- Validator v = Validation.buildDefaultValidatorFactory().getValidator();
-
- this.dmin = 922392239223.05;
- this.dmax = 922392239223.08;
-
- Set<ConstraintViolation<DecimalMinMaxValidatorsTest>> res = v.validate(this);
- assertFalse("Min validation failed", res.isEmpty());
- }
-
- public void testDecimalMaxValue() {
- Validator v = Validation.buildDefaultValidatorFactory().getValidator();
-
- this.dmin = Double.MAX_VALUE;
- this.dmax = 922392239223.1;
-
- Set<ConstraintViolation<DecimalMinMaxValidatorsTest>> res = v.validate(this);
- assertFalse("Max validation failed", res.isEmpty());
- }
-
-}
diff --git a/trunk/bval-jsr303/src/test/java/org/apache/bval/constraints/DigitsValidatorTest.java b/trunk/bval-jsr303/src/test/java/org/apache/bval/constraints/DigitsValidatorTest.java
deleted file mode 100644
index 745ed2b..0000000
--- a/trunk/bval-jsr303/src/test/java/org/apache/bval/constraints/DigitsValidatorTest.java
+++ /dev/null
@@ -1,87 +0,0 @@
-/*
- * 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.bval.constraints;
-
-import junit.framework.Assert;
-import junit.framework.Test;
-import junit.framework.TestCase;
-import junit.framework.TestSuite;
-
-import java.math.BigDecimal;
-
-/**
- * DigitsConstraintValidator Tester.
- *
- * @author <Authors name>
- * @since <pre>02/03/2009</pre>
- * @version 1.0
- */
-public class DigitsValidatorTest extends TestCase {
- public DigitsValidatorTest(String name) {
- super(name);
- }
-
- public void testValidateNumber() {
- DigitsValidatorForNumber validator = new DigitsValidatorForNumber();
- validator.setFractional(4);
- validator.setIntegral(2);
- Assert.assertFalse(validator.isValid(new BigDecimal("100.1234"), null));
- Assert.assertFalse(validator.isValid(new BigDecimal("99.12345"), null));
- Assert.assertTrue(validator.isValid(new BigDecimal("99.1234"), null));
- Assert.assertFalse(validator.isValid(Double.valueOf(100.1234), null));
- Assert.assertFalse(validator.isValid(Double.valueOf(99.12345), null));
- Assert.assertTrue(validator.isValid(Double.valueOf(99.1234), null));
- Assert.assertTrue(validator.isValid(Double.valueOf(99.123400), null));
- Assert.assertTrue(validator.isValid(new BigDecimal("99.123400"), null));
- }
-
- public void testValidateString() {
- DigitsValidatorForString validator = new DigitsValidatorForString();
- validator.setFractional(4);
- validator.setIntegral(2);
- String val = "100.12345";
- Assert.assertFalse(validator.isValid(val, null));
- val = "99.1234";
- Assert.assertTrue(validator.isValid(val, null));
- }
-
- public void testValidateNumber2() {
- DigitsValidatorForNumber validator = new DigitsValidatorForNumber();
- validator.setFractional(4);
- validator.setIntegral(2);
- Long val = new Long("100");
- Assert.assertFalse(validator.isValid(val, null));
- val = new Long("99");
- Assert.assertTrue(validator.isValid(val, null));
- }
-
- public void testValidateString2() {
- DigitsValidatorForString validator = new DigitsValidatorForString();
- validator.setFractional(0);
- validator.setIntegral(2);
- String val = "99.5";
- Assert.assertFalse(validator.isValid(val, null));
- val = "99";
- Assert.assertTrue(validator.isValid(val, null));
- }
-
- public static Test suite() {
- return new TestSuite(DigitsValidatorTest.class);
- }
-}
diff --git a/trunk/bval-jsr303/src/test/java/org/apache/bval/constraints/EmailValidatorTest.java b/trunk/bval-jsr303/src/test/java/org/apache/bval/constraints/EmailValidatorTest.java
deleted file mode 100644
index cbae43a..0000000
--- a/trunk/bval-jsr303/src/test/java/org/apache/bval/constraints/EmailValidatorTest.java
+++ /dev/null
@@ -1,98 +0,0 @@
-/*
- * 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.bval.constraints;
-
-import junit.framework.Assert;
-import junit.framework.Test;
-import junit.framework.TestCase;
-import junit.framework.TestSuite;
-import org.apache.bval.jsr303.ApacheValidatorFactory;
-import org.apache.bval.jsr303.example.Customer;
-
-import javax.validation.Validator;
-
-/**
- * EmailValidator Tester.
- *
- * @author Roman Stumm
- * @version 1.0
- * @since <pre>10/14/2008</pre>
- */
-public class EmailValidatorTest extends TestCase {
- public static class EmailAddressBuilder {
- @Email
- private StringBuilder buffer = new StringBuilder();
-
- /**
- * Get the buffer.
- * @return StringBuilder
- */
- public StringBuilder getBuffer() {
- return buffer;
- }
-
- }
-
- private Validator validator;
-
- public EmailValidatorTest(String name) {
- super(name);
- }
-
- @Override
- public void setUp() throws Exception {
- super.setUp();
- validator = ApacheValidatorFactory.getDefault().getValidator();
- }
-
- public void testEmail() {
- Customer customer = new Customer();
- customer.setCustomerId("id-1");
- customer.setFirstName("Mary");
- customer.setLastName("Do");
- customer.setPassword("12345");
-
- Assert.assertEquals(0, validator.validate(customer).size());
-
- customer.setEmailAddress("some@invalid@address");
- Assert.assertEquals(1, validator.validate(customer).size());
-
- customer.setEmailAddress("some.valid-012345@address_at-test.org");
- Assert.assertEquals(0, validator.validate(customer).size());
- }
-
- public void testEmailCharSequence() {
- EmailAddressBuilder emailAddressBuilder = new EmailAddressBuilder();
- Assert.assertEquals(0, validator.validate(emailAddressBuilder).size());
- emailAddressBuilder.getBuffer().append("foo");
- Assert.assertEquals(1, validator.validate(emailAddressBuilder).size());
- emailAddressBuilder.getBuffer().append('@');
- Assert.assertEquals(1, validator.validate(emailAddressBuilder).size());
- emailAddressBuilder.getBuffer().append("bar");
- Assert.assertEquals(0, validator.validate(emailAddressBuilder).size());
- emailAddressBuilder.getBuffer().append('.');
- Assert.assertEquals(1, validator.validate(emailAddressBuilder).size());
- emailAddressBuilder.getBuffer().append("baz");
- Assert.assertEquals(0, validator.validate(emailAddressBuilder).size());
- }
-
- public static Test suite() {
- return new TestSuite(EmailValidatorTest.class);
- }
-}
diff --git a/trunk/bval-jsr303/src/test/java/org/apache/bval/constraints/FrenchZipCode.java b/trunk/bval-jsr303/src/test/java/org/apache/bval/constraints/FrenchZipCode.java
deleted file mode 100644
index 80e5b4e..0000000
--- a/trunk/bval-jsr303/src/test/java/org/apache/bval/constraints/FrenchZipCode.java
+++ /dev/null
@@ -1,60 +0,0 @@
-/*
- * 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.bval.constraints;
-
-import javax.validation.Constraint;
-import javax.validation.OverridesAttribute;
-import javax.validation.Payload;
-import javax.validation.ReportAsSingleViolation;
-import javax.validation.constraints.NotNull;
-import javax.validation.constraints.Size;
-import java.lang.annotation.Documented;
-import java.lang.annotation.Retention;
-import java.lang.annotation.Target;
-
-import static java.lang.annotation.ElementType.*;
-import static java.lang.annotation.RetentionPolicy.RUNTIME;
-
-/**
- * Description: example for composed constraint.
- * not implemented! simple dummy implemenation for tests only! <br/>
- */
-@NotEmpty
-@NotNull
-@Size(min = 4, max = 5, message = "Zipcode should be of size {value}")
-@Constraint(validatedBy = FrenchZipcodeValidator.class)
-@ReportAsSingleViolation
-@Documented
-@Target({ANNOTATION_TYPE, METHOD, FIELD})
-@Retention(RUNTIME)
-public @interface FrenchZipCode {
- @OverridesAttribute.List({
- @OverridesAttribute(constraint = Size.class, name= "min"),
- @OverridesAttribute(constraint = Size.class, name = "max")})
- int size() default 6;
-
- @OverridesAttribute(constraint=Size.class, name="message")
- String sizeMessage() default "{error.zipcode.size}";
-
- String message() default "Wrong zipcode";
-
- Class<?>[] groups() default {};
-
- Class<? extends Payload>[] payload() default { };
-}
diff --git a/trunk/bval-jsr303/src/test/java/org/apache/bval/constraints/FrenchZipcodeValidator.java b/trunk/bval-jsr303/src/test/java/org/apache/bval/constraints/FrenchZipcodeValidator.java
deleted file mode 100644
index dc92142..0000000
--- a/trunk/bval-jsr303/src/test/java/org/apache/bval/constraints/FrenchZipcodeValidator.java
+++ /dev/null
@@ -1,35 +0,0 @@
-/*
- * 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.bval.constraints;
-
-import javax.validation.ConstraintValidator;
-import javax.validation.ConstraintValidatorContext;
-
-/**
- * Description: not implemented (test only)<br/>
- */
-public class FrenchZipcodeValidator implements ConstraintValidator<FrenchZipCode, Object> {
- public void initialize(FrenchZipCode constraintAnnotation) {
- // do nothing
- }
-
- public boolean isValid(Object object, ConstraintValidatorContext validationContext) {
- return null != object;
- }
-}
diff --git a/trunk/bval-jsr303/src/test/java/org/apache/bval/constraints/HasStringValidator.java b/trunk/bval-jsr303/src/test/java/org/apache/bval/constraints/HasStringValidator.java
deleted file mode 100644
index 7f2be60..0000000
--- a/trunk/bval-jsr303/src/test/java/org/apache/bval/constraints/HasStringValidator.java
+++ /dev/null
@@ -1,39 +0,0 @@
-/*
- * 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.bval.constraints;
-
-import org.apache.commons.lang3.ArrayUtils;
-
-import javax.validation.ConstraintValidator;
-import javax.validation.ConstraintValidatorContext;
-
-/**
- * Description: <br/>
- */
-public class HasStringValidator implements ConstraintValidator<HasValue, String> {
- private String[] values;
-
- public void initialize(HasValue stringValues) {
- values = stringValues.value();
- }
-
- public boolean isValid(String s, ConstraintValidatorContext constraintValidatorContext) {
- return s == null || ArrayUtils.contains(values, s);
- }
-}
diff --git a/trunk/bval-jsr303/src/test/java/org/apache/bval/constraints/HasValue.java b/trunk/bval-jsr303/src/test/java/org/apache/bval/constraints/HasValue.java
deleted file mode 100644
index abc0125..0000000
--- a/trunk/bval-jsr303/src/test/java/org/apache/bval/constraints/HasValue.java
+++ /dev/null
@@ -1,43 +0,0 @@
-/*
- * 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.bval.constraints;
-
-import javax.validation.Constraint;
-import javax.validation.Payload;
-import java.lang.annotation.Retention;
-import java.lang.annotation.Target;
-
-import static java.lang.annotation.ElementType.*;
-import static java.lang.annotation.RetentionPolicy.RUNTIME;
-
-/**
- * Description: allow distinct string values for element (like enums) <br/>
- */
-@Target({ANNOTATION_TYPE, METHOD, FIELD})
-@Constraint(validatedBy = {HasStringValidator.class})
-@Retention(RUNTIME)
-public @interface HasValue {
- String[] value();
-
- String message() default "Wrong value, must be one of {value}";
-
- Class<?>[] groups() default {};
-
- Class<? extends Payload>[] payload() default { };
-}
diff --git a/trunk/bval-jsr303/src/test/java/org/apache/bval/constraints/MinMaxValidatorsForNumberTest.java b/trunk/bval-jsr303/src/test/java/org/apache/bval/constraints/MinMaxValidatorsForNumberTest.java
deleted file mode 100644
index e4f68dc..0000000
--- a/trunk/bval-jsr303/src/test/java/org/apache/bval/constraints/MinMaxValidatorsForNumberTest.java
+++ /dev/null
@@ -1,69 +0,0 @@
-/*
- * 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.bval.constraints;
-
-import junit.framework.TestCase;
-
-import javax.validation.ConstraintViolation;
-import javax.validation.Validation;
-import javax.validation.Validator;
-import javax.validation.constraints.Max;
-import javax.validation.constraints.Min;
-import java.util.Set;
-
-/**
- * Check correct behaviour of {@link MinValidatorForNumber} and
- * {@link MaxValidatorForNumber} on boundary values.
- * <p/>
- * The chosen numbers: 9223372036854775806l and 9223372036854775807l cast to the
- * same double value.
- *
- * @author Carlos Vara
- */
-public class MinMaxValidatorsForNumberTest extends TestCase {
-
- @Min(value = 9223372036854775807l)
- public long min;
-
- @Max(value = 9223372036854775806l)
- public long max;
-
- public void testMinBoundaryValue() {
- Validator v = Validation.buildDefaultValidatorFactory().getValidator();
-
- this.min = 9223372036854775806l;
- this.max = 0l;
-
- // Current min value is smaller, should fail, but it doesn't
- Set<ConstraintViolation<MinMaxValidatorsForNumberTest>> res = v.validate(this);
- assertFalse("Min validation failed", res.isEmpty());
- }
-
- public void testMaxBoundaryValue() {
- Validator v = Validation.buildDefaultValidatorFactory().getValidator();
-
- this.min = Long.MAX_VALUE;
- this.max = 9223372036854775807l;
-
- // Current max value is bigger, should fail, but it doesn't
- Set<ConstraintViolation<MinMaxValidatorsForNumberTest>> res = v.validate(this);
- assertFalse("Max validation failed", res.isEmpty());
- }
-
-}
diff --git a/trunk/bval-jsr303/src/test/java/org/apache/bval/constraints/NotNullValidatorTest.java b/trunk/bval-jsr303/src/test/java/org/apache/bval/constraints/NotNullValidatorTest.java
deleted file mode 100644
index a48150d..0000000
--- a/trunk/bval-jsr303/src/test/java/org/apache/bval/constraints/NotNullValidatorTest.java
+++ /dev/null
@@ -1,59 +0,0 @@
-/*
- * 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.bval.constraints;
-
-import junit.framework.Test;
-import junit.framework.TestCase;
-import junit.framework.TestSuite;
-
-
-/**
- * Checks correct behaviour of {@link NotNullValidator}.
- * <p>
- * Per the spec:
- * <ul>
- * <li>The annotated element must not be null.</li>
- * </ul>
- *
- * TODO: Mock context and verify that it's not used during validation.
- *
- * @see "bean_validation-1_0_CR1-pfd-spec#Chapter6#Example6.2"
- *
- * @author Carlos Vara
- */
-public class NotNullValidatorTest extends TestCase {
-
- public static Test suite() {
- return new TestSuite(NotNullValidatorTest.class);
- }
-
- public NotNullValidatorTest(String name) {
- super(name);
- }
-
- /**
- * Test {@link NotNullValidator} with null context.
- */
- public void testNotNullValidator() {
- NotNullValidator nnv = new NotNullValidator();
- assertTrue("Non null value validation must succeed", nnv.isValid("hello", null));
- assertFalse("Null value validation must fail", nnv.isValid(null, null));
- }
-
-}
diff --git a/trunk/bval-jsr303/src/test/java/org/apache/bval/constraints/NullValidatorTest.java b/trunk/bval-jsr303/src/test/java/org/apache/bval/constraints/NullValidatorTest.java
deleted file mode 100644
index 7cfe281..0000000
--- a/trunk/bval-jsr303/src/test/java/org/apache/bval/constraints/NullValidatorTest.java
+++ /dev/null
@@ -1,59 +0,0 @@
-/*
- * 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.bval.constraints;
-
-import junit.framework.Test;
-import junit.framework.TestCase;
-import junit.framework.TestSuite;
-
-
-/**
- * Checks correct behaviour of {@link NullValidator}.
- * <p>
- * Per the spec:
- * <ul>
- * <li>The annotated element must be null.</li>
- * </ul>
- *
- * TODO: Mock context and verify that it's not used during validation.
- *
- * @see "bean_validation-1_0_CR1-pfd-spec#Chapter6#Example6.1"
- *
- * @author Carlos Vara
- */
-public class NullValidatorTest extends TestCase {
-
- public static Test suite() {
- return new TestSuite(NullValidatorTest.class);
- }
-
- public NullValidatorTest(String name) {
- super(name);
- }
-
- /**
- * Test {@link AssertFalseValidator} with null context.
- */
- public void testNullValidator() {
- NullValidator nv = new NullValidator();
- assertTrue("Null value validation must succeed", nv.isValid(null, null));
- assertFalse("Non null value validation must fail", nv.isValid("hello", null));
- }
-
-}
diff --git a/trunk/bval-jsr303/src/test/java/org/apache/bval/constraints/Password.java b/trunk/bval-jsr303/src/test/java/org/apache/bval/constraints/Password.java
deleted file mode 100644
index 0cb2fb9..0000000
--- a/trunk/bval-jsr303/src/test/java/org/apache/bval/constraints/Password.java
+++ /dev/null
@@ -1,49 +0,0 @@
-/*
- * 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.bval.constraints;
-
-import javax.validation.Constraint;
-import javax.validation.Payload;
-import javax.validation.constraints.NotNull;
-import javax.validation.constraints.Size;
-import java.lang.annotation.Retention;
-
-import static java.lang.annotation.RetentionPolicy.RUNTIME;
-
-/**
- * Description: <br/>
- * User: roman.stumm <br/>
- * Date: 01.04.2008 <br/>
- * Time: 12:02:06 <br/>
- */
-@NotEmpty
-@NotNull
-@Size(min = 4, max = 5)
-@Retention(RUNTIME)
-@Constraint(validatedBy = {})
-// test that Password is validated although only combined constraints exists, no own implementation
-public @interface Password {
- Class<?>[] groups() default {};
-
- String message() default "Wrong password";
-
- int robustness() default 8;
-
- Class<? extends Payload>[] payload() default { };
-}
diff --git a/trunk/bval-jsr303/src/test/java/org/apache/bval/constraints/ZipCodeCityCoherence.java b/trunk/bval-jsr303/src/test/java/org/apache/bval/constraints/ZipCodeCityCoherence.java
deleted file mode 100644
index 6c92c7a..0000000
--- a/trunk/bval-jsr303/src/test/java/org/apache/bval/constraints/ZipCodeCityCoherence.java
+++ /dev/null
@@ -1,41 +0,0 @@
-/*
- * 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.bval.constraints;
-
-import javax.validation.Constraint;
-import javax.validation.Payload;
-import java.lang.annotation.Documented;
-import java.lang.annotation.Retention;
-import java.lang.annotation.Target;
-
-import static java.lang.annotation.ElementType.TYPE;
-import static java.lang.annotation.RetentionPolicy.RUNTIME;
-
-/**
- * not implemented! simple dummy implemenation for tests only!
- */
-@Documented
-@Constraint(validatedBy = ZipCodeCityCoherenceValidator.class)
-@Target({TYPE})
-@Retention(RUNTIME)
-public @interface ZipCodeCityCoherence {
- String message() default "{validator.zipCodeCityCoherence}";
- Class<?>[] groups() default {};
- Class<? extends Payload>[] payload() default { };
-}
diff --git a/trunk/bval-jsr303/src/test/java/org/apache/bval/constraints/ZipCodeCityCoherenceValidator.java b/trunk/bval-jsr303/src/test/java/org/apache/bval/constraints/ZipCodeCityCoherenceValidator.java
deleted file mode 100644
index 92ab6d8..0000000
--- a/trunk/bval-jsr303/src/test/java/org/apache/bval/constraints/ZipCodeCityCoherenceValidator.java
+++ /dev/null
@@ -1,52 +0,0 @@
-/*
- * 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.bval.constraints;
-
-
-import org.apache.bval.jsr303.example.ZipCodeCityCarrier;
-
-import javax.validation.ConstraintValidator;
-import javax.validation.ConstraintValidatorContext;
-
-/**
- * Description: Class not implemented! simple dummy implemenation for tests only! <br/>
- * User: roman.stumm <br/>
- * Date: 01.04.2008 <br/>
- * Time: 11:45:22 <br/>
- */
-public class ZipCodeCityCoherenceValidator
- implements ConstraintValidator<ZipCodeCityCoherence, ZipCodeCityCarrier> {
- public void initialize(ZipCodeCityCoherence constraintAnnotation) {
- }
-
- public boolean isValid(ZipCodeCityCarrier adr, ConstraintValidatorContext context) {
- boolean r = true;
- if ("error".equals(adr.getZipCode())) {
- context.disableDefaultConstraintViolation();
- context.buildConstraintViolationWithTemplate("zipcode not OK").addConstraintViolation();
- r = false;
- }
- if ("error".equals(adr.getCity())) {
- context.disableDefaultConstraintViolation();
- context.buildConstraintViolationWithTemplate("city not OK").addNode("city").addConstraintViolation();
- r = false;
- }
- return r;
- }
-}
diff --git a/trunk/bval-jsr303/src/test/java/org/apache/bval/jsr303/BeanDescriptorTest.java b/trunk/bval-jsr303/src/test/java/org/apache/bval/jsr303/BeanDescriptorTest.java
deleted file mode 100644
index c73c6a6..0000000
--- a/trunk/bval-jsr303/src/test/java/org/apache/bval/jsr303/BeanDescriptorTest.java
+++ /dev/null
@@ -1,235 +0,0 @@
-/*
- * 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.bval.jsr303;
-
-import static java.lang.annotation.ElementType.FIELD;
-import static java.lang.annotation.ElementType.METHOD;
-import static java.lang.annotation.ElementType.TYPE;
-import static java.lang.annotation.RetentionPolicy.RUNTIME;
-import org.apache.bval.jsr303.util.TestUtils;
-
-import java.lang.annotation.Documented;
-import java.lang.annotation.Retention;
-import java.lang.annotation.Target;
-import java.util.Locale;
-import java.util.Set;
-
-import javax.validation.Constraint;
-import javax.validation.Payload;
-import javax.validation.Validation;
-import javax.validation.Validator;
-import javax.validation.ValidatorFactory;
-import javax.validation.constraints.NotNull;
-import javax.validation.groups.Default;
-import javax.validation.metadata.*;
-import javax.validation.metadata.ElementDescriptor.ConstraintFinder;
-
-import junit.framework.Assert;
-import junit.framework.TestCase;
-
-/**
- * Tests the implementation of {@link BeanDescriptor} and its dependent
- * interfaces.
- *
- * @author Carlos Vara
- */
-public class BeanDescriptorTest extends TestCase {
- static ValidatorFactory factory;
-
- static {
- factory = Validation.buildDefaultValidatorFactory();
- ((DefaultMessageInterpolator) factory.getMessageInterpolator()).setLocale(Locale.ENGLISH);
- }
-
- /**
- * Validator instance to test
- */
- protected Validator validator;
-
- /**
- * {@inheritDoc}
- */
- @Override
- public void setUp() throws Exception {
- super.setUp();
- validator = createValidator();
- }
-
- /**
- * Create the validator instance.
- *
- * @return Validator
- */
- protected Validator createValidator() {
- return factory.getValidator();
- }
-
- /**
- * Check that groups(), message() and payload() are always in the
- * attributes.
- */
- public void testMandatoryAttributesPresentInConstraintDescriptor() {
- Set<ConstraintDescriptor<?>> nameDescriptors =
- validator.getConstraintsForClass(Form.class).getConstraintsForProperty("name").getConstraintDescriptors();
- Assert.assertEquals("Incorrect number of descriptors", 1, nameDescriptors.size());
- ConstraintDescriptor<?> nameDescriptor = nameDescriptors.iterator().next();
- Assert.assertTrue("groups attribute not present", nameDescriptor.getAttributes().containsKey("groups"));
- Assert.assertTrue("payload attribute not present", nameDescriptor.getAttributes().containsKey("payload"));
- Assert.assertTrue("message attribute not present", nameDescriptor.getAttributes().containsKey("message"));
- }
-
- /**
- * Check that the groups() attribute value has the correct value when
- * inheriting groups.
- */
- public void testCorrectValueForInheritedGroupsAttribute() {
- Set<ConstraintDescriptor<?>> passwordDescriptors =
- validator.getConstraintsForClass(Account.class).getConstraintsForProperty("password")
- .getConstraintDescriptors();
- Assert.assertEquals("Incorrect number of descriptors", 1, passwordDescriptors.size());
- ConstraintDescriptor<?> passwordDescriptor = passwordDescriptors.iterator().next();
- Assert.assertEquals("Incorrect number of composing constraints", 1, passwordDescriptor
- .getComposingConstraints().size());
- ConstraintDescriptor<?> notNullDescriptor = passwordDescriptor.getComposingConstraints().iterator().next();
-
- // Check that the groups value containts Group1.class
- Class<?>[] notNullGroups = (Class<?>[]) notNullDescriptor.getAttributes().get("groups");
- boolean found = false;
- for (Class<?> group : notNullGroups) {
- if (group == Group1.class) {
- found = true;
- break;
- }
- }
- Assert.assertTrue("Group1 not present in groups attribute", found);
- }
-
- /**
- * Check that the groups() attribute value contains the correct interface as
- * implicit group when the constraint is defined in that interface instead
- * of the queried class.
- */
- public void testImplicitGroupIsPresent() {
- Set<ConstraintDescriptor<?>> nameDescriptors =
- validator.getConstraintsForClass(Woman.class).getConstraintsForProperty("name").getConstraintDescriptors();
- Assert.assertEquals("Incorrect number of descriptors", 1, nameDescriptors.size());
- ConstraintDescriptor<?> notNullDescriptor = nameDescriptors.iterator().next();
-
- // Check that the groups attribute value contains the implicit group
- // Person and the Default group
- Class<?>[] notNullGroups = (Class<?>[]) notNullDescriptor.getAttributes().get("groups");
- Assert.assertEquals("Incorrect number of groups", 2, notNullGroups.length);
- Assert.assertTrue("Default group not present", notNullGroups[0].equals(Default.class)
- || notNullGroups[1].equals(Default.class));
- Assert.assertTrue("Implicit group not present", notNullGroups[0].equals(Person.class)
- || notNullGroups[1].equals(Person.class));
- }
-
- /**
- * Check that the groups() attribute value does not contain the implicit
- * interface group when querying the interface directly.
- */
- public void testNoImplicitGroupWhenQueryingInterfaceDirectly() {
- Set<ConstraintDescriptor<?>> nameDescriptors =
- validator.getConstraintsForClass(Person.class).getConstraintsForProperty("name").getConstraintDescriptors();
- Assert.assertEquals("Incorrect number of descriptors", 1, nameDescriptors.size());
- ConstraintDescriptor<?> notNullDescriptor = nameDescriptors.iterator().next();
-
- // Check that only the default group is present
- Class<?>[] notNullGroups = (Class<?>[]) notNullDescriptor.getAttributes().get("groups");
- Assert.assertEquals("Incorrect number of groups", 1, notNullGroups.length);
- Assert.assertTrue("Default group not present", notNullGroups[0].equals(Default.class));
- }
-
- /**
- * Check that the implementations of
- * {@link ElementDescriptor#getElementClass()} work as defined in the spec.
- */
- public void testElementDescriptorGetElementClass() {
- BeanDescriptor beanDescriptor = validator.getConstraintsForClass(Person.class);
- Assert.assertEquals("Incorrect class returned", Person.class, beanDescriptor.getElementClass());
-
- PropertyDescriptor nameDescriptor = beanDescriptor.getConstraintsForProperty("name");
- Assert.assertEquals("Incorrect class returned", String.class, nameDescriptor.getElementClass());
- }
-
- /**
- * Check the correct behavior of
- * {@link ConstraintFinder#lookingAt(javax.validation.metadata.Scope)}.
- */
- public void testConstraintFinderLookingAt() {
- PropertyDescriptor nameDescriptor =
- validator.getConstraintsForClass(Woman.class).getConstraintsForProperty("name");
- Set<ConstraintDescriptor<?>> constraints =
- nameDescriptor.findConstraints().lookingAt(Scope.HIERARCHY).getConstraintDescriptors();
- Assert.assertEquals("Incorrect number of descriptors", 1, constraints.size());
-
- constraints = nameDescriptor.findConstraints().lookingAt(Scope.LOCAL_ELEMENT).getConstraintDescriptors();
- Assert.assertEquals("Incorrect number of descriptors", 0, constraints.size());
- TestUtils.failOnModifiable(constraints, "constraintFinder constraintDescriptors");
- //verify that changes to one ConstraintFinder don't affect the base:
- constraints = nameDescriptor.getConstraintDescriptors();
- Assert.assertEquals("Incorrect number of descriptors", 1, constraints.size());
- }
-
- public static class Form {
- @NotNull
- public String name;
- }
-
- public static class Account {
- @Password(groups = { Group1.class })
- public String password;
- }
-
- @NotNull(groups = {})
- @Constraint(validatedBy = {})
- @Documented
- @Target( { METHOD, FIELD, TYPE })
- @Retention(RUNTIME)
- public static @interface Password {
- String message() default "Invalid password";
-
- Class<?>[] groups() default {};
-
- Class<? extends Payload>[] payload() default {};
- }
-
- public static interface Group1 {
- }
-
- public static class Woman implements Person {
-
- private String name;
-
- public String getName() {
- return this.name;
- }
-
- public void setName(String name) {
- this.name = name;
- }
- }
-
- public static interface Person {
- @NotNull
- String getName();
- }
-
-}
diff --git a/trunk/bval-jsr303/src/test/java/org/apache/bval/jsr303/BootstrapTest.java b/trunk/bval-jsr303/src/test/java/org/apache/bval/jsr303/BootstrapTest.java
deleted file mode 100644
index 4745489..0000000
--- a/trunk/bval-jsr303/src/test/java/org/apache/bval/jsr303/BootstrapTest.java
+++ /dev/null
@@ -1,184 +0,0 @@
-/*
- * 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.bval.jsr303;
-
-import java.util.ArrayList;
-import java.util.Collections;
-import java.util.List;
-import java.util.Locale;
-import java.util.Set;
-
-import javax.validation.Configuration;
-import javax.validation.ConstraintValidator;
-import javax.validation.ConstraintValidatorContext;
-import javax.validation.ConstraintValidatorFactory;
-import javax.validation.ConstraintViolation;
-import javax.validation.Validation;
-import javax.validation.ValidationException;
-import javax.validation.ValidationProviderResolver;
-import javax.validation.Validator;
-import javax.validation.ValidatorFactory;
-import javax.validation.bootstrap.ProviderSpecificBootstrap;
-import javax.validation.spi.ValidationProvider;
-
-import junit.framework.Assert;
-import junit.framework.TestCase;
-
-import org.apache.bval.constraints.NotNullValidator;
-import org.apache.bval.jsr303.example.Customer;
-
-/**
- * Description: <br/>
- */
-public class BootstrapTest extends TestCase {
- public void testDirectBootstrap() {
- Validator validator = ApacheValidatorFactory.getDefault().getValidator();
- Assert.assertNotNull(validator);
- Assert.assertTrue(ApacheValidatorFactory.getDefault() == ApacheValidatorFactory.getDefault());
- }
-
- public void testEverydayBootstrap() {
- ApacheValidatorFactory factory = (ApacheValidatorFactory) Validation.buildDefaultValidatorFactory();
- Validator validator = factory.getValidator();
- Assert.assertNotNull(validator);
-
- // each call to Validation.getValidationBuilder() returns a new builder
- // with new state
- ApacheValidatorFactory factory2 = (ApacheValidatorFactory) Validation.buildDefaultValidatorFactory();
- Assert.assertTrue(factory2 != factory);
- Assert.assertTrue(factory2.getMessageInterpolator() != factory.getMessageInterpolator());
-
- }
-
- public void testLocalizedMessageInterpolatorFactory() {
- Configuration<?> builder = Validation.byDefaultProvider().configure();
- // changing the builder allows to create different factories
- DefaultMessageInterpolator interpolator = new DefaultMessageInterpolator();
- builder.messageInterpolator(interpolator);
- ApacheValidatorFactory factory = (ApacheValidatorFactory) builder.buildValidatorFactory();
-
- // ALTERNATIVE:
- // you could do it without modifying the builder or reusing it,
- // but then you need to use bval-core proprietary APIs:
- ((DefaultMessageInterpolator) factory.getMessageInterpolator()).setLocale(Locale.ENGLISH);
- // now factory's message resolver is using the english locale
- }
-
- /**
- * some tests based on RI tested behaviors to ensure our implementation
- * works as the reference implementation
- */
-
- public void testCustomConstraintFactory() {
-
- Configuration<?> builder = Validation.byDefaultProvider().configure();
- assertDefaultBuilderAndFactory(builder);
-
- ValidatorFactory factory = builder.buildValidatorFactory();
- Validator validator = factory.getValidator();
-
- Customer customer = new Customer();
- customer.setFirstName("John");
-
- Set<ConstraintViolation<Customer>> ConstraintViolations = validator.validate(customer);
- Assert.assertFalse(ConstraintViolations.isEmpty());
-
- builder = Validation.byDefaultProvider().configure();
- builder.constraintValidatorFactory(new ConstraintValidatorFactory() {
- public <T extends ConstraintValidator<?, ?>> T getInstance(Class<T> key) {
- if (key == NotNullValidator.class) {
- @SuppressWarnings("unchecked")
- final T result = (T) new BadlyBehavedNotNullValidator();
- return result;
- }
- return new DefaultConstraintValidatorFactory().getInstance(key);
- }
- });
- factory = builder.buildValidatorFactory();
- validator = factory.getValidator();
- Set<ConstraintViolation<Customer>> ConstraintViolations2 = validator.validate(customer);
- Assert.assertTrue("Wrong number of constraints", ConstraintViolations.size() > ConstraintViolations2.size());
- }
-
- public void testCustomResolverAndType() {
- ValidationProviderResolver resolver = new ValidationProviderResolver() {
-
- public List<ValidationProvider<?>> getValidationProviders() {
- List<ValidationProvider<?>> list = new ArrayList<ValidationProvider<?>>(1);
- list.add(new ApacheValidationProvider());
- return list;
- }
- };
-
- ApacheValidatorConfiguration builder =
- Validation.byProvider(ApacheValidationProvider.class).providerResolver(resolver).configure();
- assertDefaultBuilderAndFactory(builder);
- }
-
- public void testCustomResolver() {
- ValidationProviderResolver resolver = new ValidationProviderResolver() {
-
- public List<ValidationProvider<?>> getValidationProviders() {
- return Collections.<ValidationProvider<?>> singletonList(new ApacheValidationProvider());
- }
- };
-
- Configuration<?> builder = Validation.byDefaultProvider().providerResolver(resolver).configure();
- assertDefaultBuilderAndFactory(builder);
- }
-
- private void assertDefaultBuilderAndFactory(Configuration<?> builder) {
- Assert.assertNotNull(builder);
- Assert.assertTrue(builder instanceof ConfigurationImpl);
-
- ValidatorFactory factory = builder.buildValidatorFactory();
- Assert.assertNotNull(factory);
- Assert.assertTrue(factory instanceof ApacheValidatorFactory);
- }
-
- public void testFailingCustomResolver() {
- ValidationProviderResolver resolver = new ValidationProviderResolver() {
-
- public List<ValidationProvider<?>> getValidationProviders() {
- return Collections.emptyList();
- }
- };
-
- ProviderSpecificBootstrap<ApacheValidatorConfiguration> type =
- Validation.byProvider(ApacheValidationProvider.class);
-
- final ProviderSpecificBootstrap<ApacheValidatorConfiguration> specializedBuilderFactory =
- type.providerResolver(resolver);
-
- try {
- specializedBuilderFactory.configure();
- Assert.fail();
- } catch (ValidationException e) {
- Assert.assertTrue("Wrong error message", e.getMessage().contains("provider")
- && e.getMessage().contains("org.apache.bval.jsr303.ApacheValidationProvider"));
- }
- }
-
- class BadlyBehavedNotNullValidator extends NotNullValidator {
- @Override
- public boolean isValid(Object object, ConstraintValidatorContext context) {
- return true;
- }
- }
-}
diff --git a/trunk/bval-jsr303/src/test/java/org/apache/bval/jsr303/CircularReferencesTest.java b/trunk/bval-jsr303/src/test/java/org/apache/bval/jsr303/CircularReferencesTest.java
deleted file mode 100644
index 5b8dd88..0000000
--- a/trunk/bval-jsr303/src/test/java/org/apache/bval/jsr303/CircularReferencesTest.java
+++ /dev/null
@@ -1,116 +0,0 @@
-/*
- * 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.bval.jsr303;
-
-import junit.framework.Assert;
-import junit.framework.TestCase;
-
-import javax.validation.*;
-import javax.validation.constraints.Size;
-import java.util.Locale;
-import java.util.Set;
-
-/**
- * Checks that circular references in the bean graph are correctly detected when
- * validating.
- *
- * @author Carlos Vara
- */
-public class CircularReferencesTest extends TestCase {
- static ValidatorFactory factory;
-
- static {
- factory = Validation.buildDefaultValidatorFactory();
- ((DefaultMessageInterpolator) factory.getMessageInterpolator()).setLocale(Locale.ENGLISH);
- }
-
- /**
- * Validator instance to test
- */
- protected Validator validator;
-
- /**
- * {@inheritDoc}
- */
- @Override
- public void setUp() throws Exception {
- super.setUp();
- validator = createValidator();
- }
-
- /**
- * Create the validator instance.
- *
- * @return Validator
- */
- protected Validator createValidator() {
- return factory.getValidator();
- }
-
- /**
- * Checks that validation correctly stops when finding a circular
- * dependency.
- */
- public void testAutoreferringBean() {
- Person p1 = new Person();
- p1.name = "too-long-name";
- p1.sibling = p1;
-
- Set<ConstraintViolation<Person>> violations = validator.validate(p1);
-
- Assert.assertEquals("Only 1 violation should be reported", 1, violations.size());
- ConstraintViolation<Person> violation = violations.iterator().next();
- Assert.assertEquals("Incorrect violation path", "name", violation.getPropertyPath().toString());
- }
-
- /**
- * Checks that a bean is always validated when appearing in non-circular
- * paths inside the bean graph.
- */
- public void testNonCircularArrayOfSameBean() {
- Boss boss = new Boss();
- Person p1 = new Person();
- p1.name = "too-long-name";
-
- boss.employees = new Person[] { p1, p1, p1, p1 };
-
- Set<ConstraintViolation<Boss>> violations = validator.validate(boss);
-
- Assert.assertEquals("A total of 4 violations should be reported", 4, violations.size());
- }
-
- public static class Person {
-
- @Valid
- public Person sibling;
-
- @Size(max = 10)
- public String name;
-
- }
-
- public static class Boss {
-
- @Valid
- public Person[] employees;
-
- }
-
-}
diff --git a/trunk/bval-jsr303/src/test/java/org/apache/bval/jsr303/ComposedConstraintsTest.java b/trunk/bval-jsr303/src/test/java/org/apache/bval/jsr303/ComposedConstraintsTest.java
deleted file mode 100644
index 538b9a1..0000000
--- a/trunk/bval-jsr303/src/test/java/org/apache/bval/jsr303/ComposedConstraintsTest.java
+++ /dev/null
@@ -1,133 +0,0 @@
-/*
- * 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.bval.jsr303;
-
-import java.util.Locale;
-import java.util.Set;
-
-import javax.validation.ConstraintViolation;
-import javax.validation.Validation;
-import javax.validation.Validator;
-import javax.validation.ValidatorFactory;
-import javax.validation.constraints.Size;
-import javax.validation.metadata.ConstraintDescriptor;
-import javax.validation.metadata.ElementDescriptor;
-
-import junit.framework.Assert;
-import junit.framework.TestCase;
-
-import org.apache.bval.jsr303.example.CompanyAddress;
-import org.apache.bval.jsr303.example.FrenchAddress;
-import org.apache.bval.jsr303.util.TestUtils;
-
-/**
- * Description: <br/>
- */
-public class ComposedConstraintsTest extends TestCase {
- static ValidatorFactory factory;
-
- static {
- factory = Validation.buildDefaultValidatorFactory();
- ((DefaultMessageInterpolator) factory.getMessageInterpolator()).setLocale(Locale.ENGLISH);
- }
-
- /**
- * Validator instance to test
- */
- protected Validator validator;
-
- /**
- * {@inheritDoc}
- */
- @Override
- public void setUp() throws Exception {
- super.setUp();
- validator = createValidator();
- }
-
- /**
- * Create the validator instance.
- *
- * @return Validator
- */
- protected Validator createValidator() {
- return factory.getValidator();
- }
-
- public void testMetaDataAPI_ComposedConstraints() {
- ElementDescriptor ed =
- validator.getConstraintsForClass(FrenchAddress.class)
- .getConstraintsForProperty("zipCode");
- Assert.assertEquals(1, ed.getConstraintDescriptors().size());
- for (ConstraintDescriptor<?> cd : ed.getConstraintDescriptors()) {
- Assert.assertTrue(cd.isReportAsSingleViolation());
- Assert.assertEquals(3, cd.getComposingConstraints().size());
- Assert.assertTrue("no composing constraints found!!",
- !cd.getComposingConstraints().isEmpty());
- processConstraintDescriptor(cd); //check all constraints on zip code
- }
- }
-
- public void processConstraintDescriptor(ConstraintDescriptor<?> cd) {
- //Size.class is understood by the tool
- if (cd.getAnnotation().annotationType().equals(Size.class)) {
- @SuppressWarnings("unused")
- Size m = (Size) cd.getAnnotation();//what for?
- }
- for (ConstraintDescriptor<?> composingCd : cd.getComposingConstraints()) {
- //check composing constraints recursively
- processConstraintDescriptor(composingCd);
- }
- }
-
- public void testValidateComposed() {
- FrenchAddress adr = new FrenchAddress();
- Set<ConstraintViolation<FrenchAddress>> findings = validator.validate(adr);
- Assert.assertEquals(1, findings.size()); // with @ReportAsSingleConstraintViolation
-
- ConstraintViolation<FrenchAddress> finding = findings.iterator().next();
- Assert.assertEquals("Wrong zipcode", finding.getMessage());
-
- adr.setZipCode("1234567");
- findings = validator.validate(adr);
- Assert.assertEquals(0, findings.size());
-
- adr.setZipCode("1234567234567");
- findings = validator.validate(adr);
- Assert.assertTrue(findings.size() > 0); // too long
- }
-
- public void testOverridesAttributeConstraintIndex() {
- CompanyAddress adr = new CompanyAddress("invalid-string");
- Set<ConstraintViolation<CompanyAddress>> findings = validator.validate(adr);
- assertEquals(2, findings.size()); // without @ReportAsSingleConstraintViolation
- assertNotNull(TestUtils.getViolationWithMessage(findings, "Not COMPANY"));
- assertNotNull(TestUtils.getViolationWithMessage(findings, "Not an email"));
-
- adr = new CompanyAddress("JOHN_DO@WEB.DE");
- findings = validator.validate(adr);
- assertEquals(1, findings.size());
- assertNotNull(TestUtils.getViolationWithMessage(findings, "Not COMPANY"));
-
- adr = new CompanyAddress("JOHN_DO@COMPANY.DE");
- findings = validator.validate(adr);
- Assert.assertTrue(findings.isEmpty());
- }
-
-}
diff --git a/trunk/bval-jsr303/src/test/java/org/apache/bval/jsr303/ConstraintCompositionTest.java b/trunk/bval-jsr303/src/test/java/org/apache/bval/jsr303/ConstraintCompositionTest.java
deleted file mode 100644
index fc24889..0000000
--- a/trunk/bval-jsr303/src/test/java/org/apache/bval/jsr303/ConstraintCompositionTest.java
+++ /dev/null
@@ -1,306 +0,0 @@
-/*
- * 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.bval.jsr303;
-
-import static java.lang.annotation.ElementType.FIELD;
-import static java.lang.annotation.ElementType.METHOD;
-import static java.lang.annotation.ElementType.TYPE;
-import static java.lang.annotation.RetentionPolicy.RUNTIME;
-
-import java.lang.annotation.Annotation;
-import java.lang.annotation.Documented;
-import java.lang.annotation.Retention;
-import java.lang.annotation.Target;
-import java.util.Locale;
-import java.util.Set;
-
-import javax.validation.Constraint;
-import javax.validation.ConstraintViolation;
-import javax.validation.OverridesAttribute;
-import javax.validation.Payload;
-import javax.validation.ReportAsSingleViolation;
-import javax.validation.Validation;
-import javax.validation.Validator;
-import javax.validation.ValidatorFactory;
-import javax.validation.constraints.NotNull;
-import javax.validation.constraints.Pattern;
-import javax.validation.constraints.Size;
-import javax.validation.metadata.ConstraintDescriptor;
-
-import junit.framework.Assert;
-import junit.framework.TestCase;
-
-/**
- * Checks that groups are correctly inherited from the root constraint to its
- * compositing constraints.
- *
- * @author Carlos Vara
- */
-public class ConstraintCompositionTest extends TestCase {
- static ValidatorFactory factory;
-
- static {
- factory = Validation.buildDefaultValidatorFactory();
- ((DefaultMessageInterpolator) factory.getMessageInterpolator()).setLocale(Locale.ENGLISH);
- }
-
- /**
- * Validator instance to test
- */
- protected Validator validator;
-
- /**
- * {@inheritDoc}
- */
- @Override
- public void setUp() throws Exception {
- super.setUp();
- validator = createValidator();
- }
-
- /**
- * Create the validator instance.
- *
- * @return Validator
- */
- protected Validator createValidator() {
- return factory.getValidator();
- }
-
- /**
- * Check correct group inheritance on constraint composition on a 1 level
- * hierarchy.
- */
- public void test1LevelInheritance() {
- Set<ConstraintViolation<Person>> violations = validator.validate(new Person());
-
- Assert.assertEquals("Wrong number of violations detected", 1, violations.size());
- String msg = violations.iterator().next().getMessage();
- Assert.assertEquals("Incorrect violation message", "A person needs a non null name", msg);
-
- violations = validator.validate(new Person(), Group1.class);
- Assert.assertEquals("Wrong number of violations detected", 0, violations.size());
- }
-
- /**
- * Check correct group inheritance on constraint composition on a 2 level
- * hierarchy.
- */
- public void test2LevelInheritance() {
- Set<ConstraintViolation<Man>> violations = validator.validate(new Man());
-
- Assert.assertEquals("Wrong number of violations detected", 0, violations.size());
-
- violations = validator.validate(new Man(), Group1.class);
- Assert.assertEquals("Wrong number of violations detected", 1, violations.size());
- String msg = violations.iterator().next().getMessage();
- Assert.assertEquals("Incorrect violation message", "A person needs a non null name", msg);
- }
-
- /**
- * Checks that the groups() value of the constraint annotations are
- * correctly set to the inherited ones.
- */
- public void testAnnotationGroupsAreInherited() {
- // Check that the groups() value is right when querying the metadata
- ConstraintDescriptor<?> manNameDesc =
- validator.getConstraintsForClass(Man.class).getConstraintsForProperty("name").getConstraintDescriptors()
- .iterator().next();
- ConstraintDescriptor<?> personNameDesc = manNameDesc.getComposingConstraints().iterator().next();
- ConstraintDescriptor<?> notNullDesc = personNameDesc.getComposingConstraints().iterator().next();
- Assert.assertEquals("There should only be 1 group", 1, manNameDesc.getGroups().size());
- Assert.assertTrue("Group1 should be present", manNameDesc.getGroups().contains(Group1.class));
- Assert.assertEquals("There should only be 1 group", 1, personNameDesc.getGroups().size());
- Assert.assertTrue("Group1 should be present", personNameDesc.getGroups().contains(Group1.class));
- Assert.assertEquals("There should only be 1 group", 1, personNameDesc.getGroups().size());
- Assert.assertTrue("Group1 should be present", notNullDesc.getGroups().contains(Group1.class));
-
- // Check that the groups() value is right when accessing it from an
- // error
- Set<ConstraintViolation<Man>> violations = validator.validate(new Man(), Group1.class);
- Set<Class<?>> notNullGroups = violations.iterator().next().getConstraintDescriptor().getGroups();
- Assert.assertEquals("There should only be 1 group", 1, notNullGroups.size());
- Assert.assertTrue("Group1 should be the only group", notNullGroups.contains(Group1.class));
- }
-
- /**
- * Checks that the payload() value of the constraint annotations are
- * correctly set to the inherited ones.
- */
- public void testAnnotationPayloadsAreInherited() {
- // Check that the payload() value is right when querying the metadata
- ConstraintDescriptor<?> manNameDesc =
- validator.getConstraintsForClass(Man.class).getConstraintsForProperty("name").getConstraintDescriptors()
- .iterator().next();
- ConstraintDescriptor<?> personNameDesc = manNameDesc.getComposingConstraints().iterator().next();
- ConstraintDescriptor<?> notNullDesc = personNameDesc.getComposingConstraints().iterator().next();
- Assert.assertEquals("There should only be 1 payload class", 1, manNameDesc.getPayload().size());
- Assert.assertTrue("Payload1 should be present", manNameDesc.getPayload().contains(Payload1.class));
- Assert.assertEquals("There should only be 1 payload class", 1, personNameDesc.getPayload().size());
- Assert.assertTrue("Payload1 should be present", personNameDesc.getPayload().contains(Payload1.class));
- Assert.assertEquals("There should only be 1 payload class", 1, personNameDesc.getPayload().size());
- Assert.assertTrue("Payload1 should be present", notNullDesc.getPayload().contains(Payload1.class));
-
- // Check that the payload() value is right when accessing it from an
- // error
- Set<ConstraintViolation<Man>> violations = validator.validate(new Man(), Group1.class);
- Set<Class<? extends Payload>> notNullPayload =
- violations.iterator().next().getConstraintDescriptor().getPayload();
- Assert.assertEquals("There should only be 1 payload class", 1, notNullPayload.size());
- Assert.assertTrue("Payload1 should be the only payload", notNullPayload.contains(Payload1.class));
- }
-
- /**
- * Checks that {@link OverridesAttribute#constraintIndex()} parsing and
- * applying works.
- */
- public void testIndexedOverridesAttributes() {
- Person p = new Person();
- p.name = "valid";
-
- // With a valid id, no errors expected
- p.id = "1234";
- Set<ConstraintViolation<Person>> constraintViolations = validator.validate(p);
- Assert.assertTrue("No violations should be reported on valid id", constraintViolations.isEmpty());
-
- // With a short id, only 1 error expected
- p.id = "1";
- constraintViolations = validator.validate(p);
- Assert.assertEquals("Only 1 violation expected", 1, constraintViolations.size());
- ConstraintViolation<Person> violation = constraintViolations.iterator().next();
- Assert.assertEquals("Wrong violation", "Id is too short", violation.getMessage());
-
- // With a long id, only 1 error expected
- p.id = "loooooong id";
- constraintViolations = validator.validate(p);
- Assert.assertEquals("Only 1 violation expected", 1, constraintViolations.size());
- violation = constraintViolations.iterator().next();
- Assert.assertEquals("Wrong violation", "Id is too long", violation.getMessage());
- }
-
- /**
- * Checks that errors are reported correctly when using
- * {@link ReportAsSingleViolation}.
- */
- public void testReportAsAsingleViolation() {
- Code c = new Code();
- c.code = "very invalid code";
- Set<ConstraintViolation<Code>> constraintViolations = validator.validate(c);
-
- // Only 1 error expected
- Assert.assertEquals("Only 1 violation expected", 1, constraintViolations.size());
- ConstraintViolation<Code> violation = constraintViolations.iterator().next();
- Assert.assertEquals("Wrong violation message", "Invalid code", violation.getMessage());
- Assert.assertEquals("Wrong violation type", ElevenDigitsCode.class, ((Annotation) violation
- .getConstraintDescriptor().getAnnotation()).annotationType());
- }
-
- public static class Person {
- @PersonName
- String name;
-
- @PersonId
- String id;
- }
-
- public static class Man {
- @ManName(groups = { Group1.class }, payload = { Payload1.class })
- String name;
- }
-
- public static class Code {
- @ElevenDigitsCode
- String code;
- }
-
- @NotNull(message = "A person needs a non null name", groups = { Group1.class }, payload = {})
- @Constraint(validatedBy = {})
- @Documented
- @Target( { METHOD, FIELD, TYPE })
- @Retention(RUNTIME)
- public static @interface PersonName {
- String message() default "Wrong person name";
-
- Class<?>[] groups() default {};
-
- Class<? extends Payload>[] payload() default {};
- }
-
- @PersonName(groups = { Group2.class }, payload = { Payload1.class, Payload2.class })
- @Constraint(validatedBy = {})
- @Documented
- @Target( { METHOD, FIELD, TYPE })
- @Retention(RUNTIME)
- public static @interface ManName {
- String message() default "Wrong man name";
-
- Class<?>[] groups() default {};
-
- Class<? extends Payload>[] payload() default {};
- }
-
- @Size.List( { @Size(min = 3, max = 3, message = "Id is too short"),
- @Size(min = 5, max = 5, message = "Id is too long") })
- @Constraint(validatedBy = {})
- @Documented
- @Target( { METHOD, FIELD, TYPE })
- @Retention(RUNTIME)
- public static @interface PersonId {
- String message() default "Wrong person id";
-
- Class<?>[] groups() default {};
-
- Class<? extends Payload>[] payload() default {};
-
- @OverridesAttribute(constraint = Size.class, constraintIndex = 0, name = "max")
- int maxSize() default 1000;
-
- @OverridesAttribute(constraint = Size.class, constraintIndex = 1, name = "min")
- int minSize() default 0;
- }
-
- @Size(min = 11, max = 11)
- @Pattern(regexp = "\\d*")
- @Constraint(validatedBy = {})
- @ReportAsSingleViolation
- @Documented
- @Target( { METHOD, FIELD, TYPE })
- @Retention(RUNTIME)
- public static @interface ElevenDigitsCode {
- String message() default "Invalid code";
-
- Class<?>[] groups() default {};
-
- Class<? extends Payload>[] payload() default {};
- }
-
- public static interface Group1 {
- }
-
- public static interface Group2 {
- }
-
- public static class Payload1 implements Payload {
- }
-
- public static class Payload2 implements Payload {
- }
-
-}
diff --git a/trunk/bval-jsr303/src/test/java/org/apache/bval/jsr303/ConstraintDefinitionsTest.java b/trunk/bval-jsr303/src/test/java/org/apache/bval/jsr303/ConstraintDefinitionsTest.java
deleted file mode 100644
index 3729370..0000000
--- a/trunk/bval-jsr303/src/test/java/org/apache/bval/jsr303/ConstraintDefinitionsTest.java
+++ /dev/null
@@ -1,322 +0,0 @@
-/*
- * 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.bval.jsr303;
-
-import static java.lang.annotation.ElementType.ANNOTATION_TYPE;
-import static java.lang.annotation.ElementType.FIELD;
-import static java.lang.annotation.ElementType.METHOD;
-import static java.lang.annotation.RetentionPolicy.RUNTIME;
-
-import java.lang.annotation.Documented;
-import java.lang.annotation.Retention;
-import java.lang.annotation.Target;
-import java.util.Locale;
-import java.util.Set;
-
-import javax.validation.Constraint;
-import javax.validation.ConstraintDefinitionException;
-import javax.validation.Payload;
-import javax.validation.Validation;
-import javax.validation.Validator;
-import javax.validation.ValidatorFactory;
-import javax.validation.constraints.Min;
-import javax.validation.metadata.BeanDescriptor;
-import javax.validation.metadata.ConstraintDescriptor;
-
-import junit.framework.Assert;
-import junit.framework.TestCase;
-
-import org.apache.bval.constraints.NotNullValidator;
-
-/**
- * Checks the correct parsing of constraint definitions.
- *
- * @author Carlos Vara
- */
-public class ConstraintDefinitionsTest extends TestCase {
- static ValidatorFactory factory;
-
- static {
- factory = Validation.buildDefaultValidatorFactory();
- ((DefaultMessageInterpolator) factory.getMessageInterpolator()).setLocale(Locale.ENGLISH);
- }
-
- /**
- * Validator instance to test
- */
- protected Validator validator;
-
- /**
- * {@inheritDoc}
- */
- @Override
- public void setUp() throws Exception {
- super.setUp();
- validator = createValidator();
- }
-
- /**
- * Create the validator instance.
- *
- * @return Validator
- */
- protected Validator createValidator() {
- return factory.getValidator();
- }
-
- /**
- * Checks the correct parsing of a constraint with an array of constraints
- * as attributes.
- */
- public void testCustomAttributes() {
- BeanDescriptor constraints = validator.getConstraintsForClass(Person.class);
- Set<ConstraintDescriptor<?>> ageConstraints =
- constraints.getConstraintsForProperty("age").getConstraintDescriptors();
-
- Assert.assertEquals("There should be 2 constraints in 'age'", ageConstraints.size(), 2);
- for (ConstraintDescriptor<?> cd : ageConstraints) {
- Assert.assertEquals("Annotation should be @Min", cd.getAnnotation().annotationType().getName(), Min.class
- .getName());
- }
- }
-
- /**
- * Checks that a {@link ConstraintDefinitionException} is thrown when
- * parsing a constraint definition with no <code>groups()</code> method.
- */
- public void testNoGroupsConstraint() {
- try {
- validator.validate(new NoGroups());
- fail("No exception thrown when parsing a constraint definition with no groups() method");
- } catch (ConstraintDefinitionException e) {
- // correct
- }
- }
-
- /**
- * Checks that a {@link ConstraintDefinitionException} is thrown when
- * parsing a constraint definition with an invalid <code>groups()</code>
- * method.
- */
- public void testInvalidDefaultGroupsConstraint() {
- try {
- validator.validate(new InvalidGroups());
- fail("No exception thrown when parsing a constraint definition with a groups() method does not return Class[]");
- } catch (ConstraintDefinitionException e) {
- // correct
- }
- }
-
- /**
- * Checks that a {@link ConstraintDefinitionException} is thrown when
- * parsing a constraint definition with no <code>payload()</code> method.
- */
- public void testNoPayloadConstraint() {
- try {
- validator.validate(new NoPayload());
- fail("No exception thrown when parsing a constraint definition with no payload() method");
- } catch (ConstraintDefinitionException e) {
- // correct
- }
- }
-
- /**
- * Checks that a {@link ConstraintDefinitionException} is thrown when
- * parsing a constraint definition with an invalid <code>payload()</code>
- * method.
- */
- public void testInvalidDefaultPayloadConstraint() {
- try {
- validator.validate(new InvalidPayload());
- fail("No exception thrown when parsing a constraint definition with a payload() method does not return an empty array");
- } catch (ConstraintDefinitionException e) {
- // correct
- }
- }
-
- /**
- * Checks that a {@link ConstraintDefinitionException} is thrown when
- * parsing a constraint definition with no <code>message()</code> method.
- */
- public void testNoMessageConstraint() {
- try {
- validator.validate(new NoMessage());
- fail("No exception thrown when parsing a constraint definition with no payload() method");
- } catch (ConstraintDefinitionException e) {
- // correct
- }
- }
-
- /**
- * Checks that a {@link ConstraintDefinitionException} is thrown when
- * parsing a constraint definition with an invalid <code>message()</code>
- * method.
- */
- public void testInvalidDefaultMessageConstraint() {
- try {
- validator.validate(new InvalidMessage());
- fail("No exception thrown when parsing a constraint definition with a message() method does not return a String");
- } catch (ConstraintDefinitionException e) {
- // correct
- }
- }
-
- /**
- * Checks that a {@link ConstraintDefinitionException} is thrown when
- * parsing a constraint definition with a method starting with 'valid'.
- */
- public void testInvalidAttributeConstraint() {
- try {
- validator.validate(new InvalidAttribute());
- fail("No exception thrown when parsing a constraint definition with a method starting with 'valid'");
- } catch (ConstraintDefinitionException e) {
- // correct
- }
- }
-
- public static class Person {
- @MinList( { @Min(value = 20), @Min(value = 30) })
- public Integer age;
- }
-
- @Target( { METHOD, FIELD, ANNOTATION_TYPE })
- @Retention(RUNTIME)
- @Documented
- public static @interface MinList {
- Min[] value();
- }
-
- public static class NoGroups {
- @NoGroupsConstraint
- public String prop;
- }
-
- @Target( { METHOD, FIELD, ANNOTATION_TYPE })
- @Retention(RUNTIME)
- @Documented
- @Constraint(validatedBy = { NotNullValidator.class })
- public static @interface NoGroupsConstraint {
- String message() default "def msg";
-
- Class<? extends Payload>[] payload() default {};
- }
-
- public static class InvalidGroups {
- @InvalidGroupsConstraint
- public String prop;
- }
-
- @Target( { METHOD, FIELD, ANNOTATION_TYPE })
- @Retention(RUNTIME)
- @Documented
- @Constraint(validatedBy = { NotNullValidator.class })
- public static @interface InvalidGroupsConstraint {
- String message() default "def msg";
-
- String[] groups() default { "Group1" };
-
- Class<? extends Payload>[] payload() default {};
- }
-
- public static class NoPayload {
- @NoPayloadConstraint
- public String prop;
- }
-
- @Target( { METHOD, FIELD, ANNOTATION_TYPE })
- @Retention(RUNTIME)
- @Documented
- @Constraint(validatedBy = { NotNullValidator.class })
- public static @interface NoPayloadConstraint {
- String message() default "def msg";
-
- String[] groups() default {};
- }
-
- public static class InvalidPayload {
- @InvalidPayloadConstraint
- public String prop;
- }
-
- @Target( { METHOD, FIELD, ANNOTATION_TYPE })
- @Retention(RUNTIME)
- @Documented
- @Constraint(validatedBy = { NotNullValidator.class })
- public static @interface InvalidPayloadConstraint {
- String message() default "def msg";
-
- String[] groups() default {};
-
- Class<? extends Payload>[] payload() default { Payload1.class };
-
- public static class Payload1 implements Payload {
- }
- }
-
- public static class NoMessage {
- @NoMessageConstraint
- public String prop;
- }
-
- @Target( { METHOD, FIELD, ANNOTATION_TYPE })
- @Retention(RUNTIME)
- @Documented
- @Constraint(validatedBy = { NotNullValidator.class })
- public static @interface NoMessageConstraint {
- String[] groups() default {};
-
- Class<? extends Payload>[] payload() default {};
- }
-
- public static class InvalidMessage {
- @InvalidMessageConstraint(message = 2)
- public String prop;
- }
-
- @Target( { METHOD, FIELD, ANNOTATION_TYPE })
- @Retention(RUNTIME)
- @Documented
- @Constraint(validatedBy = { NotNullValidator.class })
- public static @interface InvalidMessageConstraint {
- int message();
-
- String[] groups() default {};
-
- Class<? extends Payload>[] payload() default {};
- }
-
- public static class InvalidAttribute {
- @InvalidAttributeConstraint
- public String prop;
- }
-
- @Target( { METHOD, FIELD, ANNOTATION_TYPE })
- @Retention(RUNTIME)
- @Documented
- @Constraint(validatedBy = { NotNullValidator.class })
- public static @interface InvalidAttributeConstraint {
- String message() default "def msg";
-
- String[] groups() default {};
-
- Class<? extends Payload>[] payload() default {};
-
- String validValue() default "1";
- }
-}
diff --git a/trunk/bval-jsr303/src/test/java/org/apache/bval/jsr303/ConstraintValidatorContextTest.java b/trunk/bval-jsr303/src/test/java/org/apache/bval/jsr303/ConstraintValidatorContextTest.java
deleted file mode 100644
index 771528c..0000000
--- a/trunk/bval-jsr303/src/test/java/org/apache/bval/jsr303/ConstraintValidatorContextTest.java
+++ /dev/null
@@ -1,114 +0,0 @@
-/*
- * 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.bval.jsr303;
-
-import junit.framework.Assert;
-import junit.framework.TestCase;
-import org.apache.bval.jsr303.util.PathImpl;
-import org.apache.bval.model.ValidationListener;
-import org.apache.bval.model.ValidationListener.Error;
-import org.mockito.Mock;
-import org.mockito.Mockito;
-import org.mockito.MockitoAnnotations;
-import org.mockito.invocation.InvocationOnMock;
-import org.mockito.stubbing.Answer;
-
-import javax.validation.ConstraintValidatorContext;
-import javax.validation.ConstraintValidatorContext.ConstraintViolationBuilder;
-
-/**
- * Checks to validate the correct implementation of
- * {@link ConstraintValidatorContext} and its sub-interfaces.
- *
- * @author Carlos Vara
- */
-public class ConstraintValidatorContextTest extends TestCase {
-
- private ConstraintValidatorContextImpl cvc;
- private ConstraintViolationBuilder cvb;
-
- @Mock
- private GroupValidationContext<ValidationListener> groupValidationContext;
-
- /**
- * {@inheritDoc}
- */
- @Override
- public void setUp() throws Exception {
- super.setUp();
- MockitoAnnotations.initMocks(this);
- Mockito.when(groupValidationContext.getPropertyPath()).thenAnswer(new Answer<PathImpl>() {
-
- public PathImpl answer(InvocationOnMock invocation) throws Throwable {
- return PathImpl.createPathFromString("");
- }
- });
- this.cvc = new ConstraintValidatorContextImpl(groupValidationContext,
- null);
- this.cvc.disableDefaultConstraintViolation();
- this.cvb = cvc.buildConstraintViolationWithTemplate("dummy.msg.tpl");
- }
-
- public void testPerson1() {
- cvb.addNode("person").addNode(null).inIterable().atIndex(1)
- .addConstraintViolation();
- Error error = cvc.getErrorMessages().iterator().next();
- PathImpl errorPath = (PathImpl) error.getOwner();
- Assert.assertEquals("Incorrect path created", "person[1]", errorPath
- .toString());
- }
-
- public void testPersonLawyerName() {
- cvb.addNode("person").addNode("name").inIterable().atKey("john")
- .addConstraintViolation();
- Error error = cvc.getErrorMessages().iterator().next();
- PathImpl errorPath = (PathImpl) error.getOwner();
- Assert.assertEquals("Incorrect path created", "person[john].name",
- errorPath.toString());
- }
-
- public void test0Name() {
- cvb.addNode(null).addNode("name").inIterable().atIndex(0).addNode(null)
- .inIterable().addConstraintViolation();
- Error error = cvc.getErrorMessages().iterator().next();
- PathImpl errorPath = (PathImpl) error.getOwner();
- Assert.assertEquals("Incorrect path created", "[0].name[]", errorPath
- .toString());
- }
-
- public void testEmptyIndex() {
- cvb.addNode(null).addNode(null).inIterable().addConstraintViolation();
- Error error = cvc.getErrorMessages().iterator().next();
- PathImpl errorPath = (PathImpl) error.getOwner();
- Assert.assertEquals("Incorrect path created", "[]", errorPath
- .toString());
- }
-
- public void testRootPath() {
- // Adding only nulls should still give a root path
- cvb.addNode(null).addNode(null).addNode(null).addNode(null)
- .addConstraintViolation();
- Error error = cvc.getErrorMessages().iterator().next();
- PathImpl errorPath = (PathImpl) error.getOwner();
- Assert.assertTrue("Created path must be a root path", errorPath
- .isRootPath());
-
- }
-
-}
diff --git a/trunk/bval-jsr303/src/test/java/org/apache/bval/jsr303/CustomConstraintValidatorFactoryTest.java b/trunk/bval-jsr303/src/test/java/org/apache/bval/jsr303/CustomConstraintValidatorFactoryTest.java
deleted file mode 100644
index a9babfb..0000000
--- a/trunk/bval-jsr303/src/test/java/org/apache/bval/jsr303/CustomConstraintValidatorFactoryTest.java
+++ /dev/null
@@ -1,104 +0,0 @@
-/*
- * 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.bval.jsr303;
-
-import static java.lang.annotation.ElementType.ANNOTATION_TYPE;
-import static java.lang.annotation.ElementType.FIELD;
-import static java.lang.annotation.ElementType.METHOD;
-import static java.lang.annotation.ElementType.TYPE;
-import static java.lang.annotation.RetentionPolicy.RUNTIME;
-
-import java.lang.annotation.Documented;
-import java.lang.annotation.Retention;
-import java.lang.annotation.Target;
-
-import javax.validation.Constraint;
-import javax.validation.ConstraintValidator;
-import javax.validation.ConstraintValidatorContext;
-import javax.validation.ConstraintValidatorFactory;
-import javax.validation.Payload;
-import javax.validation.Validation;
-import javax.validation.ValidationException;
-import javax.validation.Validator;
-
-import org.apache.bval.jsr303.CustomConstraintValidatorFactoryTest.GoodPerson.GoodPersonValidator;
-
-import junit.framework.TestCase;
-
-/**
- * Checks that overriding the default {@link ConstraintValidatorFactory} works
- * as expected.
- *
- * @author Carlos Vara
- */
-public class CustomConstraintValidatorFactoryTest extends TestCase {
-
- /**
- * If the custom ConstraintValidatorFactory returns <code>null</code> for a
- * valid {@link ConstraintValidatorFactory#getInstance(Class)} call, a
- * validation exception should be thrown.
- */
- public void testValidationExceptionWhenFactoryReturnsNullValidator() {
-
- ConstraintValidatorFactory customFactory = new ConstraintValidatorFactory() {
- // @Override - not allowed in 1.5 for Interface methods
- public <T extends ConstraintValidator<?, ?>> T getInstance(Class<T> key) {
- return null; // always return null
- }
- };
-
- // Create a validator with this factory
- ApacheValidatorConfiguration customConfig = Validation.byProvider(ApacheValidationProvider.class).configure().constraintValidatorFactory(customFactory);
- Validator validator = customConfig.buildValidatorFactory().getValidator();
-
- try {
- validator.validate(new Person());
- fail("ValidationException must be thrown when factory returns a null constraint validator.");
- } catch (ValidationException e) {
- // correct
- }
- }
-
- @GoodPerson
- public static class Person {
- }
-
- @Constraint(validatedBy = { GoodPersonValidator.class })
- @Target({ METHOD, FIELD, ANNOTATION_TYPE, TYPE })
- @Retention(RUNTIME)
- @Documented
- public static @interface GoodPerson {
-
- String message() default "Not a good person";
- Class<?>[] groups() default { };
- Class<? extends Payload>[] payload() default {};
-
- public static class GoodPersonValidator implements ConstraintValidator<GoodPerson, Person> {
- // @Override - not allowed in 1.5 for Interface methods
- public void initialize(GoodPerson constraintAnnotation) {
- }
-
- // @Override - not allowed in 1.5 for Interface methods
- public boolean isValid(Person value, ConstraintValidatorContext context) {
- return true;
- }
- }
- }
-
-}
diff --git a/trunk/bval-jsr303/src/test/java/org/apache/bval/jsr303/CustomValidatorFactoryTest.java b/trunk/bval-jsr303/src/test/java/org/apache/bval/jsr303/CustomValidatorFactoryTest.java
deleted file mode 100644
index d2fc38d..0000000
--- a/trunk/bval-jsr303/src/test/java/org/apache/bval/jsr303/CustomValidatorFactoryTest.java
+++ /dev/null
@@ -1,118 +0,0 @@
-/*
- * 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.bval.jsr303;
-
-import junit.framework.TestCase;
-
-import javax.validation.*;
-import javax.validation.spi.ConfigurationState;
-
-/**
- * Test the ability to force a particular {@link ValidatorFactory}
- * implementation class.
- *
- * @version $Rev$ $Date$
- */
-public class CustomValidatorFactoryTest extends TestCase {
-
- public static class CustomValidatorFactory extends ApacheValidatorFactory {
-
- /**
- * Create a new CustomValidatorFactory instance.
- *
- * @param configurationState
- */
- public CustomValidatorFactory(ConfigurationState configurationState) {
- super(configurationState);
- }
- }
-
- public static class IncompatibleValidatorFactory implements ValidatorFactory {
-
- public ConstraintValidatorFactory getConstraintValidatorFactory() {
- return null;
- }
-
- public MessageInterpolator getMessageInterpolator() {
- return null;
- }
-
- public TraversableResolver getTraversableResolver() {
- return null;
- }
-
- public Validator getValidator() {
- return null;
- }
-
- public <T> T unwrap(Class<T> type) {
- return null;
- }
-
- public ValidatorContext usingContext() {
- return null;
- }
-
- }
-
- public static class NotAValidatorFactory {
- public NotAValidatorFactory(ConfigurationState configurationState) {
- }
- }
-
- public void testDefaultValidatorFactory() {
- Validation.byProvider(ApacheValidationProvider.class).configure().buildValidatorFactory().unwrap(
- ApacheValidatorFactory.class);
- }
-
- public void testNoSuchType() {
- try {
- Validation.byProvider(ApacheValidationProvider.class).configure().addProperty(
- ApacheValidatorConfiguration.Properties.VALIDATOR_FACTORY_CLASSNAME, "no.such.type")
- .buildValidatorFactory();
- fail();
- } catch (ValidationException ex) {
- assertTrue(ex.getCause() instanceof ClassNotFoundException);
- }
- }
-
- public void testCustomValidatorFactory() {
- doTest(CustomValidatorFactory.class, null);
- }
-
- public void testInvalidType() {
- doTest(NotAValidatorFactory.class, ClassCastException.class);
- }
-
- public void testUnsupportedValidatorFactoryType() {
- doTest(IncompatibleValidatorFactory.class, NoSuchMethodException.class);
- }
-
- private void doTest(Class<?> validatorFactoryType, Class<? extends Exception> expectedFailureCause) {
- try {
- Validation.byProvider(ApacheValidationProvider.class).configure().addProperty(
- ApacheValidatorConfiguration.Properties.VALIDATOR_FACTORY_CLASSNAME, validatorFactoryType.getName())
- .buildValidatorFactory().unwrap(validatorFactoryType);
- assertNull(expectedFailureCause);
- } catch (ValidationException ex) {
- assertNotNull(expectedFailureCause);
- assertTrue(expectedFailureCause.isInstance(ex.getCause()));
- }
- }
-}
diff --git a/trunk/bval-jsr303/src/test/java/org/apache/bval/jsr303/DefaultMessageInterpolatorTest.java b/trunk/bval-jsr303/src/test/java/org/apache/bval/jsr303/DefaultMessageInterpolatorTest.java
deleted file mode 100644
index 369ce09..0000000
--- a/trunk/bval-jsr303/src/test/java/org/apache/bval/jsr303/DefaultMessageInterpolatorTest.java
+++ /dev/null
@@ -1,148 +0,0 @@
-/*
- * 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.bval.jsr303;
-
-import junit.framework.Assert;
-import junit.framework.Test;
-import junit.framework.TestCase;
-import junit.framework.TestSuite;
-import org.apache.bval.jsr303.example.Author;
-import org.apache.bval.jsr303.example.PreferredGuest;
-
-import javax.validation.MessageInterpolator;
-import javax.validation.Validator;
-import javax.validation.constraints.Pattern;
-import javax.validation.metadata.ConstraintDescriptor;
-import java.util.Locale;
-
-/**
- * MessageResolverImpl Tester.
- */
-public class DefaultMessageInterpolatorTest extends TestCase {
-
- private DefaultMessageInterpolator interpolator;
-
- public DefaultMessageInterpolatorTest(String name) {
- super(name);
- }
-
- public static Test suite() {
- return new TestSuite(DefaultMessageInterpolatorTest.class);
- }
-
- @Override
- protected void setUp() throws Exception {
- super.setUp(); // call super!
- interpolator = new DefaultMessageInterpolator();
- interpolator.setLocale(Locale.ENGLISH);
- }
-
- public void testCreateResolver() {
-
- final Validator gvalidator = getValidator();
-
- assertTrue(!gvalidator.getConstraintsForClass(PreferredGuest.class).getConstraintsForProperty(
- "guestCreditCardNumber").getConstraintDescriptors().isEmpty());
-
- MessageInterpolator.Context ctx = new MessageInterpolator.Context() {
-
- public ConstraintDescriptor<?> getConstraintDescriptor() {
- return (ConstraintDescriptor<?>) gvalidator.getConstraintsForClass(PreferredGuest.class)
- .getConstraintsForProperty("guestCreditCardNumber").getConstraintDescriptors().iterator().next();
- }
-
- public Object getValidatedValue() {
- return "12345678";
- }
- };
- String msg = interpolator.interpolate("{validator.creditcard}", ctx);
- Assert.assertEquals("credit card is not valid", msg);
-
- ctx = new MessageInterpolator.Context() {
- public ConstraintDescriptor<?> getConstraintDescriptor() {
- return gvalidator.getConstraintsForClass(Author.class).getConstraintsForProperty("lastName")
- .getConstraintDescriptors().iterator().next();
- }
-
- public Object getValidatedValue() {
- return "";
- }
- };
-
- msg = interpolator.interpolate("{org.apache.bval.constraints.NotEmpty.message}", ctx);
- Assert.assertEquals("may not be empty", msg);
- }
-
- /**
- * Checks that strings containing special characters are correctly
- * substituted when interpolating.
- */
- public void testReplacementWithSpecialChars() {
-
- final Validator validator = getValidator();
- MessageInterpolator.Context ctx;
-
- // Try to interpolate an annotation attribute containing $
- ctx = new MessageInterpolator.Context() {
-
- public ConstraintDescriptor<?> getConstraintDescriptor() {
- return (ConstraintDescriptor<?>) validator.getConstraintsForClass(Person.class)
- .getConstraintsForProperty("idNumber").getConstraintDescriptors().iterator().next();
- }
-
- public Object getValidatedValue() {
- return "12345678";
- }
- };
-
- String result = this.interpolator.interpolate("Id number should match {regexp}", ctx);
- Assert.assertEquals("Incorrect message interpolation when $ is in an attribute",
- "Id number should match ....$", result);
-
- // Try to interpolate an annotation attribute containing \
- ctx = new MessageInterpolator.Context() {
-
- public ConstraintDescriptor<?> getConstraintDescriptor() {
- return (ConstraintDescriptor<?>) validator.getConstraintsForClass(Person.class)
- .getConstraintsForProperty("otherId").getConstraintDescriptors().iterator().next();
- }
-
- public Object getValidatedValue() {
- return "12345678";
- }
- };
-
- result = this.interpolator.interpolate("Other id should match {regexp}", ctx);
- Assert.assertEquals("Incorrect message interpolation when \\ is in an attribute value",
- "Other id should match .\\n", result);
-
- }
-
- public static class Person {
-
- @Pattern(message = "Id number should match {regexp}", regexp = "....$")
- public String idNumber;
-
- @Pattern(message = "Other id should match {regexp}", regexp = ".\\n")
- public String otherId;
-
- }
-
- private Validator getValidator() {
- return ApacheValidatorFactory.getDefault().getValidator();
- }
-}
diff --git a/trunk/bval-jsr303/src/test/java/org/apache/bval/jsr303/ExceptionsContractTest.java b/trunk/bval-jsr303/src/test/java/org/apache/bval/jsr303/ExceptionsContractTest.java
deleted file mode 100644
index 302fc07..0000000
--- a/trunk/bval-jsr303/src/test/java/org/apache/bval/jsr303/ExceptionsContractTest.java
+++ /dev/null
@@ -1,270 +0,0 @@
-/*
- * 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.bval.jsr303;
-
-import junit.framework.Assert;
-import junit.framework.TestCase;
-
-import javax.validation.Validation;
-import javax.validation.ValidationException;
-import javax.validation.Validator;
-import javax.validation.ValidatorFactory;
-import javax.validation.constraints.Min;
-import javax.validation.constraints.NotNull;
-import javax.validation.metadata.BeanDescriptor;
-import java.util.Locale;
-
-/**
- * Several checks to validate that the implementations of {@link Validator} and
- * {@link BeanDescriptor} throw the correct exceptions as per the spec.
- *
- * @author Carlos Vara
- */
-public class ExceptionsContractTest extends TestCase {
- static ValidatorFactory factory;
-
- static {
- factory = Validation.buildDefaultValidatorFactory();
- ((DefaultMessageInterpolator) factory.getMessageInterpolator()).setLocale(Locale.ENGLISH);
- }
-
- /**
- * Validator instance to test
- */
- protected Validator validator;
-
- /**
- * {@inheritDoc}
- */
- @Override
- public void setUp() throws Exception {
- super.setUp();
- validator = createValidator();
- }
-
- /**
- * Create the validator instance.
- *
- * @return Validator
- */
- protected Validator createValidator() {
- return factory.getValidator();
- }
-
- /**
- * Checks that the correct exception is thrown when validating a bean whose
- * getter throws an exception.
- */
- public void testExceptionThrowingBean() {
- try {
- validator.validate(new ExceptionThrowingBean());
- Assert.fail("No exception thrown when validating a bean whose getter throws a RTE");
- } catch (ValidationException e) {
- // Correct
- }
- }
-
- /**
- * Checks that an {@link IllegalArgumentException} is thrown when passing
- * <code>null</code> as group array.
- */
- public void testValidateNullGroup() {
- try {
- Class<?>[] groups = null;
- validator.validate(new String(), groups);
- Assert.fail("No exception thrown when passing null as group array");
- } catch (IllegalArgumentException e) {
- // Correct
- }
- }
-
- /**
- * Checks that an {@link IllegalArgumentException} is thrown when passing an
- * invalid property name.
- */
- public void testValidateInvalidPropertyName() {
-
- // Null propertyName
- try {
- validator.validateProperty(new Person(), null);
- } catch (IllegalArgumentException e) {
- // Correct
- }
-
- // Empty propertyName
- try {
- validator.validateProperty(new Person(), "");
- } catch (IllegalArgumentException e) {
- // Correct
- }
-
- // Invalid propertyName
- try {
- validator.validateProperty(new Person(), "surname");
- } catch (IllegalArgumentException e) {
- // Correct
- }
-
- }
-
- /**
- * Checks that an {@link IllegalArgumentException} is thrown when trying to
- * validate a property on a null object.
- */
- public void testValidatePropertyOnNullBean() {
- try {
- validator.validateProperty(null, "class");
- } catch (IllegalArgumentException e) {
- // Correct
- }
- }
-
- /**
- * Checks that an {@link IllegalArgumentException} is thrown when passing
- * <code>null</code> as group array in a
- * {@link Validator#validateProperty(Object, String, Class...)} call.
- */
- public void testValidatePropertyNullGroup() {
- try {
- Class<?>[] groups = null;
- validator.validateProperty(new Person(), "name", groups);
- Assert.fail("No exception thrown when passing null as group array");
- } catch (IllegalArgumentException e) {
- // Correct
- }
- }
-
- /**
- * Checks that an {@link IllegalArgumentException} is thrown when calling
- * {@link Validator#validateValue(Class, String, Object, Class...)} with a
- * <code>null</code> class.
- */
- public void testValidateValueOnNullClass() {
- try {
- validator.validateValue(null, "class", Object.class);
- Assert.fail("No exception thrown when passing null as group array");
- } catch (IllegalArgumentException e) {
- // Correct
- }
- }
-
- /**
- * Checks that an {@link IllegalArgumentException} is thrown when passing an
- * invalid property name to
- * {@link Validator#validateValue(Class, String, Object, Class...)}.
- */
- public void testValidateValueInvalidPropertyName() {
- // Null propertyName
- try {
- validator.validateValue(Person.class, null, "John");
- } catch (IllegalArgumentException e) {
- // Correct
- }
-
- // Empty propertyName
- try {
- validator.validateValue(Person.class, "", "John");
- } catch (IllegalArgumentException e) {
- // Correct
- }
-
- // Invalid propertyName
- try {
- validator.validateValue(Person.class, "unexistant", "John");
- } catch (IllegalArgumentException e) {
- // Correct
- }
- }
-
- /**
- * Checks that an {@link IllegalArgumentException} is thrown when calling
- * {@link Validator#validateValue(Class, String, Object, Class...)} with a
- * <code>null</code> group array.
- */
- public void testValidateValueNullGroup() {
- try {
- Class<?>[] groups = null;
- validator.validateValue(Person.class, "name", "John", groups);
- Assert.fail("No exception thrown when passing null as group array");
- } catch (IllegalArgumentException e) {
- // Correct
- }
- }
-
- /**
- * Enforces the "not a valid object property" part of the {@link IllegalArgumentException}
- * declaration on {@link Validator#validateValue(Class, String, Object, Class...)}
- */
- public void testValidateIncompatibleValue() {
- try {
- validator.validateValue(Person.class, "name", 666);
- Assert.fail("No exception thrown when passing Integer for string value");
- } catch (IllegalArgumentException e) {
- // Correct
- }
- try {
- validator.validateValue(Person.class, "age", null);
- Assert.fail("No exception thrown when passing null for primitive value");
- } catch (IllegalArgumentException e) {
- // Correct
- }
- }
-
- /**
- * Checks that an {@link IllegalArgumentException} is thrown when calling
- * {@link BeanDescriptor#getConstraintsForProperty(String)} with an invalid
- * property name.
- */
- public void testGetConstraintsForInvalidProperty() {
- BeanDescriptor personDescriptor = validator.getConstraintsForClass(Person.class);
-
- try {
- personDescriptor.getConstraintsForProperty(null);
- fail("No exception thrown when calling getConstraintsForProperty with null property");
- } catch (IllegalArgumentException e) {
- // Correct
- }
-
- try {
- personDescriptor.getConstraintsForProperty("");
- fail("No exception thrown when calling getConstraintsForProperty with empty property");
- } catch (IllegalArgumentException e) {
- // Correct
- }
- }
-
- public static class ExceptionThrowingBean {
-
- @NotNull
- public String getValue() {
- throw new IllegalStateException();
- }
-
- }
-
- public static class Person {
-
- @NotNull
- public String name;
-
- @Min(0)
- public int age;
- }
-
-}
diff --git a/trunk/bval-jsr303/src/test/java/org/apache/bval/jsr303/FooTest.java b/trunk/bval-jsr303/src/test/java/org/apache/bval/jsr303/FooTest.java
deleted file mode 100644
index 359552c..0000000
--- a/trunk/bval-jsr303/src/test/java/org/apache/bval/jsr303/FooTest.java
+++ /dev/null
@@ -1,66 +0,0 @@
-/*
- * 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.bval.jsr303;
-
-import junit.framework.TestCase;
-
-import javax.validation.ConstraintViolation;
-import javax.validation.Valid;
-import javax.validation.Validator;
-import javax.validation.constraints.NotNull;
-import java.util.ArrayList;
-import java.util.Collection;
-import java.util.Set;
-
-/**
- * Description: <br/>
- */
-public class FooTest extends TestCase {
-
- @Valid
- private Collection<Foo> foos = new ArrayList<Foo>();
-
- public FooTest() {
- foos.add(new Foo("foo1"));
- foos.add(null);
- foos.add(new Foo("foo3"));
- }
-
-
- public class Foo {
- @NotNull
- public String bar;
-
- public Foo(String bar) {
- this.bar = bar;
- }
-
- }
-
- public void testValidation() {
- FooTest t = new FooTest();
-
- Validator v = ApacheValidatorFactory.getDefault().getValidator();
- Set<ConstraintViolation<FooTest>> errors = v.validate(t);
- System.out.println("got errors:");
- for (ConstraintViolation<?> error : errors) {
- System.out.println(error.getPropertyPath());
- }
- }
-}
\ No newline at end of file
diff --git a/trunk/bval-jsr303/src/test/java/org/apache/bval/jsr303/Jsr303Test.java b/trunk/bval-jsr303/src/test/java/org/apache/bval/jsr303/Jsr303Test.java
deleted file mode 100644
index 9dbd117..0000000
--- a/trunk/bval-jsr303/src/test/java/org/apache/bval/jsr303/Jsr303Test.java
+++ /dev/null
@@ -1,273 +0,0 @@
-/*
- * 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.bval.jsr303;
-
-import java.math.BigDecimal;
-import java.util.Arrays;
-import java.util.HashMap;
-import java.util.HashSet;
-import java.util.Locale;
-import java.util.Set;
-
-import javax.validation.ConstraintViolation;
-import javax.validation.UnexpectedTypeException;
-import javax.validation.Validation;
-import javax.validation.Validator;
-import javax.validation.ValidatorFactory;
-import javax.validation.metadata.BeanDescriptor;
-import javax.validation.metadata.ConstraintDescriptor;
-import javax.validation.metadata.ElementDescriptor;
-import javax.validation.metadata.PropertyDescriptor;
-
-import junit.framework.Assert;
-import junit.framework.TestCase;
-
-import org.apache.bval.constraints.SizeValidatorForString;
-import org.apache.bval.jsr303.example.Address;
-import org.apache.bval.jsr303.example.Book;
-import org.apache.bval.jsr303.example.Engine;
-import org.apache.bval.jsr303.example.IllustratedBook;
-import org.apache.bval.jsr303.example.MaxTestEntity;
-import org.apache.bval.jsr303.example.NoValidatorTestEntity;
-import org.apache.bval.jsr303.example.Second;
-import org.apache.bval.jsr303.example.SizeTestEntity;
-import org.apache.bval.jsr303.util.TestUtils;
-
-/**
- * Description: <br/>
- */
-public class Jsr303Test extends TestCase {
- /*
- * static { ApacheValidatorFactory.getDefault().getMetaBeanManager()
- * .addResourceLoader("org/apache/bval/example/test-beanInfos.xml"); }
- */
-
- /*
- * public void testUseCoreXmlMetaData() { Validator validator =
- * getValidator();
- *
- * BusinessObject object = new BusinessObject();
- * object.setTitle("1234567834567 too long title ");
- * Set<ConstraintViolation<BusinessObject>> violations =
- * validator.validate(object); Assert.assertNotNull(violations);
- * Assert.assertTrue(!violations.isEmpty());
- *
- * Assert.assertTrue(!validator.validateProperty(object,
- * "title").isEmpty()); }
- */
-
- static ValidatorFactory factory;
-
- static {
- factory = Validation.buildDefaultValidatorFactory();
- ((DefaultMessageInterpolator) factory.getMessageInterpolator()).setLocale(Locale.ENGLISH);
- }
-
- /**
- * Validator instance to test
- */
- protected Validator validator;
-
- /**
- * {@inheritDoc}
- */
- @Override
- public void setUp() throws Exception {
- super.setUp();
- validator = createValidator();
- }
-
- /**
- * Create the validator instance.
- *
- * @return Validator
- */
- protected Validator createValidator() {
- return factory.getValidator();
- }
-
- public void testPropertyDescriptorHasConstraints() {
- BeanDescriptor cons = validator.getConstraintsForClass(Book.class);
- assertTrue(cons.getConstraintsForProperty("author").hasConstraints());
- assertTrue(cons.getConstraintsForProperty("title").hasConstraints());
- assertTrue(cons.getConstraintsForProperty("uselessField").hasConstraints());
- // cons.getConstraintsForProperty("unconstraintField") == null without
- // Introspector
- // cons.getConstraintsForProperty("unconstraintField") != null with
- // Introspector
- assertTrue(cons.getConstraintsForProperty("unconstraintField") == null
- || !cons.getConstraintsForProperty("unconstraintField").hasConstraints());
- assertNull(cons.getConstraintsForProperty("unknownField"));
- }
-
- public void testValidateValue() {
- assertTrue(validator.validateValue(Book.class, "subtitle", "123456789098765432").isEmpty());
- assertFalse(validator.validateValue(Book.class, "subtitle",
- "123456789098765432123412345678909876543212341234564567890987654321234", Second.class).isEmpty());
- // tests for issue 22: validation of a field without any constraints
- assertEquals(0, validator.validateValue(Book.class, "unconstraintField", 4).size());
- // tests for issue 22: validation of unknown field cause
- // ValidationException
- try {
- validator.validateValue(Book.class, "unknownProperty", 4);
- fail("unknownProperty not detected");
- } catch (IllegalArgumentException ex) {
- // OK
- assertEquals("unknown property 'unknownProperty' in org.apache.bval.jsr303.example.Book", ex.getMessage());
- }
- }
-
- public void testValidateNonCascadedRealNestedProperty() {
- try {
- validator.validateValue(IllustratedBook.class, "illustrator.firstName", "Edgar");
- fail("unknownProperty not detected");
- } catch (IllegalArgumentException ex) {
- // OK
- assertEquals("Property org.apache.bval.jsr303.example.IllustratedBook.illustrator is not cascaded", ex.getMessage());
- }
- }
-
- public void testMetadataAPI_Book() {
- Assert.assertNotNull(validator.getConstraintsForClass(Book.class));
- // not necessary for implementation correctness, but we'll test
- // nevertheless:
- Assert.assertSame(validator.getConstraintsForClass(Book.class), validator.getConstraintsForClass(Book.class));
- BeanDescriptor bc = validator.getConstraintsForClass(Book.class);
- // assertEquals(ElementType.TYPE, bc.getElementType());
- Assert.assertEquals(Book.class, bc.getElementClass());
- // assertEquals(false, bc.isCascaded());
- // assertEquals("", bc.getPropertyPath());
- Assert.assertTrue(bc.getConstraintDescriptors() != null);
- TestUtils.failOnModifiable(bc.getConstraintDescriptors(), "beanDescriptor constraintDescriptors");
- }
-
- public void testMetadataAPI_Engine() {
- ElementDescriptor desc =
- validator.getConstraintsForClass(Engine.class).getConstraintsForProperty("serialNumber");
- assertNotNull(desc);
- // assertEquals(ElementType.FIELD, desc.getElementType());
- Assert.assertEquals(String.class, desc.getElementClass());
- }
-
- public void testMetadataAPI_Address() {
- Assert.assertFalse(validator.getConstraintsForClass(Address.class).getConstraintDescriptors().isEmpty());
-
- Set<PropertyDescriptor> props = validator.getConstraintsForClass(Address.class).getConstrainedProperties();
- TestUtils.failOnModifiable(props, "beanDescriptor constrainedProperties");
- Set<String> propNames = new HashSet<String>(props.size());
- for (PropertyDescriptor each : props) {
- TestUtils.failOnModifiable(each.getConstraintDescriptors(), "propertyDescriptor constraintDescriptors");
- propNames.add(each.getPropertyName());
- }
- Assert.assertTrue(propNames.contains("addressline1")); // annotated at
- // field level
- Assert.assertTrue(propNames.contains("addressline2"));
- Assert.assertTrue(propNames.contains("zipCode"));
- Assert.assertTrue(propNames.contains("country"));
- Assert.assertTrue(propNames.contains("city")); // annotated at method
- // level
- Assert.assertEquals(5, props.size());
-
- ElementDescriptor desc =
- validator.getConstraintsForClass(Address.class).getConstraintsForProperty("addressline1");
- Assert.assertNotNull(desc);
- boolean found = false;
- for (ConstraintDescriptor<?> each : desc.getConstraintDescriptors()) {
- if (each.getConstraintValidatorClasses().get(0).equals(SizeValidatorForString.class)) {
- Assert.assertTrue(each.getAttributes().containsKey("max"));
- assertEquals(30, each.getAttributes().get("max"));
- found = true;
- }
- }
- Assert.assertTrue(found);
-
- }
-
- public void testValidateMultiValuedConstraints() {
- Engine engine = new Engine();
- engine.serialNumber = "abcd-defg-0123";
- Set<ConstraintViolation<Engine>> violations;
- violations = validator.validate(engine);
- assertEquals(0, violations.size());
-
- engine.serialNumber = "!)/(/()";
- violations = validator.validate(engine);
- assertEquals(2, violations.size());
- for (String msg : new String[] { "must contain alphabetical characters only", "must match ....-....-...." }) {
- assertNotNull(TestUtils.getViolationWithMessage(violations, msg));
- }
- }
-
- public void testConstraintValidatorResolutionAlgorithm() {
- MaxTestEntity entity = new MaxTestEntity();
- entity.setText("101");
- entity.setProperty("201");
- entity.setLongValue(301);
- entity.setDecimalValue(new BigDecimal(401));
- Set<ConstraintViolation<MaxTestEntity>> violations = validator.validate(entity);
- assertEquals(4, violations.size());
-
- NoValidatorTestEntity entity2 = new NoValidatorTestEntity();
- try {
- validator.validate(entity2);
- fail("UnexpectedTypeException expected but not thrown");
- } catch (UnexpectedTypeException ex) {
- // we expected this
- assertEquals("No validator could be found for type java.lang.Object. "
- + "See: @Max at private java.lang.Object " + "org.apache.bval.jsr303.example."
- + "NoValidatorTestEntity.anything", ex.getMessage());
- }
- }
-
- public void testSizeValidation() {
- SizeTestEntity en = new SizeTestEntity();
- en.ba = new byte[3];
- en.ca = new char[3];
- en.boa = new boolean[3];
- en.coll = Arrays.asList("1", "2", "3");
- en.da = new double[3];
- en.fa = new float[3];
- en.it = new int[3];
- en.la = new long[3];
- en.map = new HashMap<String, String>();
- en.map.put("1", "1");
- en.map.put("3", "3");
- en.map.put("2", "2");
- en.oa = new Integer[3];
- en.oa2 = new Integer[3];
- en.sa = new short[3];
- en.text = "123";
- Set<ConstraintViolation<SizeTestEntity>> vi = validator.validate(en);
- assertEquals(13, vi.size());
- }
-
- /**
- * JSR-303 Section 5.1.c, IllegalArgumentException should be thrown
- */
- public void testGetConstraintsForNullClass() {
- try {
- validator.getConstraintsForClass(null);
- Assert.fail("No exception thrown on Validator.getConstraintsForClass(null)");
- } catch (IllegalArgumentException e) {
- // Correct
- return;
- }
- }
-
-}
diff --git a/trunk/bval-jsr303/src/test/java/org/apache/bval/jsr303/PayloadTest.java b/trunk/bval-jsr303/src/test/java/org/apache/bval/jsr303/PayloadTest.java
deleted file mode 100644
index 54fa661..0000000
--- a/trunk/bval-jsr303/src/test/java/org/apache/bval/jsr303/PayloadTest.java
+++ /dev/null
@@ -1,117 +0,0 @@
-/*
- * 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.bval.jsr303;
-
-import java.util.Locale;
-import java.util.Set;
-
-import javax.validation.ConstraintViolation;
-import javax.validation.Payload;
-import javax.validation.Validation;
-import javax.validation.Validator;
-import javax.validation.ValidatorFactory;
-import javax.validation.constraints.NotNull;
-
-import junit.framework.TestCase;
-
-import org.apache.bval.jsr303.util.TestUtils;
-
-/**
- * Description: test that payload information can be retrieved
- * from error reports via the ConstraintDescriptor either accessed
- * through the ConstraintViolation objects<br/>
- */
-public class PayloadTest extends TestCase {
- static ValidatorFactory factory;
-
- static {
- factory = Validation.buildDefaultValidatorFactory();
- ((DefaultMessageInterpolator) factory.getMessageInterpolator()).setLocale(Locale.ENGLISH);
- }
-
- /**
- * Validator instance to test
- */
- protected Validator validator;
-
- /**
- * {@inheritDoc}
- */
- @Override
- public void setUp() throws Exception {
- super.setUp();
- validator = createValidator();
- }
-
- /**
- * Create the validator instance.
- *
- * @return Validator
- */
- protected Validator createValidator() {
- return factory.getValidator();
- }
-
- static class Severity {
- static class Info implements Payload {
- }
-
- static class Error implements Payload {
- }
- }
-
- static class Address {
- private String zipCode;
- private String city;
-
- Address(String zipCode, String city) {
- this.zipCode = zipCode;
- this.city = city;
- }
-
- @NotNull(message = "would be nice if we had one", payload = Severity.Info.class)
- public String getZipCode() {
- return zipCode;
- }
-
- @NotNull(message = "the city is mandatory", payload = Severity.Error.class)
- public String getCity() {
- return city;
- }
- }
-
- public void testPayload() {
- Set<ConstraintViolation<Address>> violations;
- Address address = new Address(null, null);
- violations = validator.validate(address);
- assertEquals(2, violations.size());
- ConstraintViolation<?> vio;
- vio = TestUtils.getViolation(violations, "zipCode");
- assertNotNull(vio);
- assertEquals(1, vio.getConstraintDescriptor().getPayload().size());
- assertTrue(
- vio.getConstraintDescriptor().getPayload().contains(Severity.Info.class));
-
- vio = TestUtils.getViolation(violations, "city");
- assertNotNull(vio);
- assertEquals(1, vio.getConstraintDescriptor().getPayload().size());
- assertTrue(
- vio.getConstraintDescriptor().getPayload().contains(Severity.Error.class));
- }
-}
diff --git a/trunk/bval-jsr303/src/test/java/org/apache/bval/jsr303/TckReproducerTest.java b/trunk/bval-jsr303/src/test/java/org/apache/bval/jsr303/TckReproducerTest.java
deleted file mode 100644
index 92d9806..0000000
--- a/trunk/bval-jsr303/src/test/java/org/apache/bval/jsr303/TckReproducerTest.java
+++ /dev/null
@@ -1,115 +0,0 @@
-/*
- * 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.bval.jsr303;
-
-import junit.framework.TestCase;
-import org.apache.bval.util.PropertyAccess;
-
-import javax.validation.ConstraintViolation;
-import javax.validation.Validation;
-import javax.validation.Validator;
-import javax.validation.ValidatorFactory;
-import javax.validation.constraints.Pattern;
-
-import java.util.Locale;
-import java.util.Set;
-
-/**
- * Description: <br>
- * User: roman.stumm<br>
- * Date: 21.04.2010<br>
- * Time: 14:21:45<br>
- */
-public class TckReproducerTest extends TestCase {
- static ValidatorFactory factory;
-
- static {
- factory = Validation.buildDefaultValidatorFactory();
- ((DefaultMessageInterpolator) factory.getMessageInterpolator()).setLocale(Locale.ENGLISH);
- }
-
- /**
- * Validator instance to test
- */
- protected Validator validator;
-
- /**
- * {@inheritDoc}
- */
- @Override
- public void setUp() throws Exception {
- super.setUp();
- validator = createValidator();
- }
-
- /**
- * Create the validator instance.
- *
- * @return Validator
- */
- protected Validator createValidator() {
- return factory.getValidator();
- }
-
- public static <T> void assertCorrectNumberOfViolations(Set<ConstraintViolation<T>> violations,
- int expectedViolations) {
- assertEquals("Wrong number of constraint violations. Expected: " + expectedViolations + " Actual: "
- + violations.size(), expectedViolations, violations.size());
- }
-
- public void testPropertyAccessOnNonPublicClass() throws Exception {
- Car car = new Car("USd-298");
- assertEquals(car.getLicensePlateNumber(), PropertyAccess.getProperty(car, "licensePlateNumber"));
-
- Set<ConstraintViolation<Car>> violations =
- validator.validateProperty(car, "licensePlateNumber", First.class,
- org.apache.bval.jsr303.example.Second.class);
- assertCorrectNumberOfViolations(violations, 1);
-
- car.setLicensePlateNumber("USD-298");
- violations =
- validator.validateProperty(car, "licensePlateNumber", First.class,
- org.apache.bval.jsr303.example.Second.class);
- assertCorrectNumberOfViolations(violations, 0);
- }
-
- class Car {
- @Pattern(regexp = "[A-Z][A-Z][A-Z]-[0-9][0-9][0-9]", groups = { First.class, Second.class })
- private String licensePlateNumber;
-
- Car(String licensePlateNumber) {
- this.licensePlateNumber = licensePlateNumber;
- }
-
- public String getLicensePlateNumber() {
- return licensePlateNumber;
- }
-
- public void setLicensePlateNumber(String licensePlateNumber) {
- this.licensePlateNumber = licensePlateNumber;
- }
- }
-
- interface First {
- }
-
- interface Second {
- }
-}
diff --git a/trunk/bval-jsr303/src/test/java/org/apache/bval/jsr303/ValidationTest.java b/trunk/bval-jsr303/src/test/java/org/apache/bval/jsr303/ValidationTest.java
deleted file mode 100644
index 8f571fb..0000000
--- a/trunk/bval-jsr303/src/test/java/org/apache/bval/jsr303/ValidationTest.java
+++ /dev/null
@@ -1,722 +0,0 @@
-/*
- * 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.bval.jsr303;
-
-import java.lang.reflect.Array;
-import java.lang.reflect.InvocationTargetException;
-import java.util.ArrayList;
-import java.util.Collections;
-import java.util.HashMap;
-import java.util.Iterator;
-import java.util.List;
-import java.util.Locale;
-import java.util.Map;
-import java.util.Set;
-
-import javax.validation.ConstraintViolation;
-import javax.validation.Validation;
-import javax.validation.Validator;
-import javax.validation.ValidatorFactory;
-import javax.validation.constraints.NotNull;
-import javax.validation.constraints.Size;
-import javax.validation.groups.Default;
-import javax.validation.metadata.BeanDescriptor;
-import javax.validation.metadata.ConstraintDescriptor;
-import javax.validation.metadata.PropertyDescriptor;
-
-import junit.framework.Assert;
-import junit.framework.TestCase;
-
-import org.apache.bval.constraints.NotNullValidator;
-import org.apache.bval.jsr303.example.AccessTestBusinessObject;
-import org.apache.bval.jsr303.example.AccessTestBusinessObjectSub;
-import org.apache.bval.jsr303.example.Address;
-import org.apache.bval.jsr303.example.Author;
-import org.apache.bval.jsr303.example.Book;
-import org.apache.bval.jsr303.example.BusinessAddress;
-import org.apache.bval.jsr303.example.Continent;
-import org.apache.bval.jsr303.example.Country;
-import org.apache.bval.jsr303.example.First;
-import org.apache.bval.jsr303.example.Last;
-import org.apache.bval.jsr303.example.RecursiveFoo;
-import org.apache.bval.jsr303.util.TestUtils;
-
-/**
- * Description: <br/>
- */
-public class ValidationTest extends TestCase {
- static ValidatorFactory factory;
-
- static {
- factory = Validation.buildDefaultValidatorFactory();
- ((DefaultMessageInterpolator) factory.getMessageInterpolator()).setLocale(Locale.ENGLISH);
- }
-
- /**
- * Validator instance to test
- */
- protected Validator validator;
-
- /**
- * {@inheritDoc}
- */
- @Override
- public void setUp() throws Exception {
- super.setUp();
- validator = createValidator();
- }
-
- /**
- * Create the validator instance.
- *
- * @return Validator
- */
- protected Validator createValidator() {
- return factory.getValidator();
- }
-
- public void testAccessStrategies_field_method() {
- AccessTestBusinessObject o1 = new AccessTestBusinessObject("1");
- AccessTestBusinessObjectSub o2 = new AccessTestBusinessObjectSub("3");
- Set<ConstraintViolation<AccessTestBusinessObject>> errors = validator.validate(o1);
- assertTrue(errors.isEmpty());
- Set<ConstraintViolation<AccessTestBusinessObjectSub>> errors2 = validator.validate(o2);
- assertTrue(errors2.isEmpty());
-
- o2 = new AccessTestBusinessObjectSub("1");
- errors2 = validator.validate(o2);
- assertEquals(1, errors2.size());
-
- // assert, that getvar2() and getVar2() are both validated with their
- // getter method
- o2 = new AccessTestBusinessObjectSub("3");
- o2.setVar2("1");
- o2.setvar2("2");
- errors2 = validator.validate(o2);
- assertEquals(2, errors2.size());
-
- o2.setvar2("5");
- o2.setVar2("6");
- errors2 = validator.validate(o2);
- assertEquals(0, errors2.size());
-
- o2.setvar2("5");
- o2.setVar2("-1");
- errors2 = validator.validate(o2);
- assertEquals(1, errors2.size());
- }
-
- public void testAccessStrategies_on_children() {
- AccessTestBusinessObject o1 = new AccessTestBusinessObject("1");
- AccessTestBusinessObject o2 = new AccessTestBusinessObject("2");
- o1.next(o2);
- Set<ConstraintViolation<AccessTestBusinessObject>> errors = validator.validate(o1);
- // assert, that field access 'next' is used and not getNext() is
- // called!!!
- assertEquals(1, errors.size());
- o2 = new AccessTestBusinessObject("1");
- o1.next(o2);
- errors = validator.validate(o1);
- assertEquals(0, errors.size());
-
- // assert that toBeIgnored not validated, because not annotated with
- // @Valid
- o1.setToBeIgnored(new AccessTestBusinessObject("99"));
- errors = validator.validate(o1);
- assertEquals(0, errors.size());
-
- o1.setNext(new AccessTestBusinessObject("99"));
- errors = validator.validate(o1);
- assertEquals(1, errors.size());
- }
-
- public void testBook() {
- Author author = new Author();
- author.setLastName("Baudelaire");
- author.setFirstName("");
- Book book = new Book();
- book.setAuthor(author);
- book.setSubtitle("12345678900125678901234578901234567890");
-
- // NotEmpty failure on the title field
- Set<ConstraintViolation<Book>> errors = validator.validate(book, Book.All.class);
- Assert.assertTrue(!errors.isEmpty());
-
- book.setTitle("Les fleurs du mal");
- author.setCompany("Some random publisher with a very very very long name");
-
- // author.firstName fails to pass the NotEmpty constraint
- // author.company fails to pass the Size constraint
- }
-
- /**
- * test: - dynamic resolution of associated object types. - inheritance of validation constraints - complex
- * valiation, different groups, nested object net
- */
- public void testValidAnnotation() {
- Author a = new Author();
- a.setAddresses(new ArrayList<Address>());
- BusinessAddress adr = new BusinessAddress();
- adr.setCountry(new Country());
- adr.setAddressline1("line1");
- adr.setAddressline2("line2");
-
- adr.setZipCode("1234567890123456789");
- a.getAddresses().add(adr);
-
- a.setFirstName("Karl");
- a.setLastName("May");
-
- Set<ConstraintViolation<Author>> found = validator.validate(a, Default.class, First.class, Last.class);
- Assert.assertTrue(!found.isEmpty());
- Assert.assertEquals(4, found.size());
-
- adr.setCity("Berlin");
- adr.setZipCode("12345");
- adr.setCompany("apache");
- found = validator.validate(a, Default.class, First.class, Last.class);
- Assert.assertEquals(1, found.size());
- ConstraintViolation<Author> ic = found.iterator().next();
- Assert.assertEquals("addresses[0].country.name", ic.getPropertyPath().toString());
- }
-
- public void testPropertyPathWithIndex() {
- Author a = new Author();
- a.setAddresses(new ArrayList<Address>());
- Address adr = new Address();
- adr.setAddressline1("adr1");
- adr.setCity("Santiago");
- a.getAddresses().add(adr);
- adr = new Address();
- adr.setAddressline1("adr2");
- adr.setCity("Havanna");
- a.getAddresses().add(adr);
- adr = new Address();
- adr.setAddressline1("adr3");
- adr.setCity("Trinidad");
- a.getAddresses().add(adr);
-
- Set<ConstraintViolation<Author>> constraints = validator.validate(a);
- Assert.assertTrue(!constraints.isEmpty());
-
- assertPropertyPath("addresses[0].country", constraints);
- assertPropertyPath("addresses[1].country", constraints);
- assertPropertyPath("addresses[2].country", constraints);
- }
-
- /**
- * Check correct path reporting when validating a set of beans.
- */
- public void testPropertyPathOnSet() {
- Continent c = new Continent();
- c.name = "c1";
- Country country = new Country();
- country.setISO2Code("xx");
- country.setISO3Code("xxx");
- country.setName(null);
- c.countries.add(country);
-
- Set<ConstraintViolation<Continent>> constraints = validator.validate(c);
- Assert.assertEquals("Incorrect number of violations detected", 1, constraints.size());
- assertPropertyPath("countries[].name", constraints);
-
- }
-
- private <T> void assertPropertyPath(String propertyPath, Set<ConstraintViolation<T>> constraints) {
- for (ConstraintViolation<T> each : constraints) {
- if (each.getPropertyPath().toString().equals(propertyPath))
- return;
- }
- Assert.fail(propertyPath + " not found in " + constraints);
- }
-
- public void testPropertyPathRecursive() {
- RecursiveFoo foo1 = new RecursiveFoo(); // root
- RecursiveFoo foo11 = new RecursiveFoo();
- foo1.getFoos().add(foo11); // foos[0]
- RecursiveFoo foo12 = new RecursiveFoo();
- foo1.getFoos().add(foo12); // foos[1]
- RecursiveFoo foo2 = new RecursiveFoo();
- foo11.getFoos().add(foo2); // foos[0].foos[0]
-
- Set<ConstraintViolation<RecursiveFoo>> constraints = validator.validate(foo1);
- assertPropertyPath("foos[0].foos[0].foos", constraints);
- assertPropertyPath("foos[1].foos", constraints);
- }
-
- public void testNullElementInCollection() {
- try {
- validator.validate(null);
- Assert.fail();
- } catch (IllegalArgumentException ex) {
- }
- RecursiveFoo foo = new RecursiveFoo();
- foo.getFoos().add(new RecursiveFoo());
- foo.getFoos().add(null);
- Assert.assertTrue(!validator.validate(foo).isEmpty());
- // check that no nullpointer exception gets thrown
- }
-
- public void testGroups() {
- Author author = new Author();
- author.setCompany("ACME");
- Book book = new Book();
- book.setTitle("");
- book.setAuthor(author);
- boolean foundTitleConstraint = false;
- Set<ConstraintViolation<Book>> constraintViolations = validator.validate(book, Book.All.class);
- assertEquals(1, constraintViolations.size());
- // assuming an english locale, the interpolated message is returned
- for (ConstraintViolation<Book> constraintViolation : constraintViolations) {
- if (constraintViolation.getRootBean().getClass() == Book.class) {
- Assert.assertEquals("may not be empty", constraintViolation.getMessage());
- Assert.assertTrue(book == constraintViolation.getRootBean());
-
- // the offending property
- if (constraintViolation.getPropertyPath().toString().equals("title")) {
- foundTitleConstraint = true;
- // the offending value
- Assert.assertEquals(book.getTitle(), constraintViolation.getInvalidValue());
- }
- }
- }
- Assert.assertTrue(foundTitleConstraint);
- }
-
- /**
- * Example 2.14. Using the fluent API to build custom constraint violations. test that: the
- * {@link org.apache.bval.constraints.ZipCodeCityCoherenceValidator} adds custom messages to the context and
- * suppresses the default message
- */
- public void testConstraintValidatorContextFluentAPI() {
- Address ad = new Address();
- ad.setCity("error");
- ad.setZipCode("error");
- ad.setAddressline1("something");
- ad.setCountry(new Country());
- ad.getCountry().setName("something");
- Set<ConstraintViolation<Address>> violations = validator.validate(ad);
- Assert.assertEquals(2, violations.size());
- for (ConstraintViolation<Address> each : violations) {
- Assert.assertTrue(each.getMessage().endsWith(" not OK"));
- }
- assertNotNull(TestUtils.getViolation(violations, "city"));
- assertNotNull(TestUtils.getViolation(violations, ""));
- }
-
- public void testValidateNestedPropertyPath() throws InvocationTargetException, NoSuchMethodException,
- IllegalAccessException {
- final String propPath = "addresses[0].country.ISO2Code";
-
- Author author = new Author();
- author.setAddresses(new ArrayList<Address>());
- Address adr = new Address();
- author.getAddresses().add(adr);
- Country country = new Country();
- adr.setCountry(country);
- country.setISO2Code("too_long");
-
- Set<ConstraintViolation<Author>> iv = validator.validateProperty(author, propPath);
- Assert.assertEquals(1, iv.size());
- ConstraintViolation<Author> vio = iv.iterator().next();
- assertEquals(propPath, vio.getPropertyPath().toString());
- assertSame(author, vio.getRootBean());
- assertSame(author.getAddresses().get(0).getCountry(), vio.getLeafBean());
-
- country.setISO2Code("23");
- iv = validator.validateProperty(author, propPath);
- Assert.assertEquals(0, iv.size());
-
- iv = validator.validateValue(Author.class, propPath, "345");
- Assert.assertEquals(1, iv.size());
- vio = iv.iterator().next();
- assertEquals(propPath, vio.getPropertyPath().toString());
- assertNull(vio.getRootBean());
- assertNull(vio.getLeafBean());
-
- iv = validator.validateValue(Author.class, propPath, "34");
- Assert.assertEquals(0, iv.size());
- }
-
- public void testValidateCascadingNestedBean() throws InvocationTargetException, NoSuchMethodException,
- IllegalAccessException {
- final String propPath = "addresses[0]";
-
- CascadingPropertyValidator v = validator.unwrap(CascadingPropertyValidator.class);
- Author author = new Author();
- author.setAddresses(new ArrayList<Address>());
- Address adr = new Address();
- author.getAddresses().add(adr);
- Country country = new Country();
- adr.setCity("dark");
- adr.setCountry(country);
-
- Set<ConstraintViolation<Author>> iv = v.validateProperty(author, propPath);
- Assert.assertEquals(1, iv.size()); // null address line 1 (no cascade)
-
- country.setISO2Code("too_long");
- iv = v.validateProperty(author, propPath, true);
- Assert.assertEquals(3, iv.size()); // null address line 1 + null
- // country.name + too long
- // country.iso2code
-
- country.setISO2Code("23");
- iv = v.validateProperty(author, propPath, true);
- Assert.assertEquals(2, iv.size()); // null address line 1 + null
- // country.name, country.iso2code
- // fixed
-
- Address value = new Address();
- value.setCity("whatever");
- value.setAddressline1("1 address line");
- iv = v.validateValue(Author.class, propPath, value, true);
- Assert.assertEquals(1, iv.size()); // null country
-
- value.setCountry(new Country());
- iv = v.validateValue(Author.class, propPath, value, true);
- Assert.assertEquals(1, iv.size()); // null country.name
-
- value.getCountry().setName("NWO");
- iv = v.validateValue(Author.class, propPath, value, true);
- Assert.assertEquals(0, iv.size());
- }
-
- public void testValidateCascadingNestedProperty() throws InvocationTargetException, NoSuchMethodException,
- IllegalAccessException {
- final String propPath = "addresses[0].country";
-
- CascadingPropertyValidator v = validator.unwrap(CascadingPropertyValidator.class);
- Author author = new Author();
- author.setAddresses(new ArrayList<Address>());
- Address adr = new Address();
- author.getAddresses().add(adr);
- Country country = new Country();
- adr.setCity("dark");
- adr.setCountry(country);
-
- Set<ConstraintViolation<Author>> iv = v.validateProperty(author, propPath);
- Assert.assertEquals(0, iv.size());
-
- country.setISO2Code("too_long");
- iv = v.validateProperty(author, propPath, true);
- Assert.assertEquals(2, iv.size());
- // country.name + too long
- // country.iso2code
-
- country.setISO2Code("23");
- iv = v.validateProperty(author, propPath, true);
- Assert.assertEquals(1, iv.size());
- // country.name, country.iso2code
-
- Country value = null;
- iv = v.validateValue(Author.class, propPath, value, true);
- Assert.assertEquals(1, iv.size()); // null country
-
- value = new Country();
- iv = v.validateValue(Author.class, propPath, value, true);
- Assert.assertEquals(1, iv.size()); // null country.name
-
- value.setName("NWO");
- iv = v.validateValue(Author.class, propPath, value, true);
- Assert.assertEquals(0, iv.size());
- }
-
- public void testValidateCascadingNestedTipProperty() {
- final String propPath = "addresses[0].country.name";
-
- CascadingPropertyValidator v = validator.unwrap(CascadingPropertyValidator.class);
- Author author = new Author();
- author.setAddresses(new ArrayList<Address>());
- Address adr = new Address();
- author.getAddresses().add(adr);
- Country country = new Country();
- adr.setCity("dark");
- adr.setCountry(country);
-
- Set<ConstraintViolation<Author>> iv = v.validateProperty(author, propPath);
- Assert.assertEquals(1, iv.size());
-
- iv = v.validateProperty(author, propPath, true);
- Assert.assertEquals(1, iv.size());
- }
-
- public void testValidateCascadingKeyedElement() throws InvocationTargetException, NoSuchMethodException,
- IllegalAccessException {
- final String propPath = "[foo]";
-
- CascadingPropertyValidator v = validator.unwrap(CascadingPropertyValidator.class);
- final Address adr = new Address();
- @SuppressWarnings("serial")
- Object map = new HashMap<String, Address>() {
- {
- put("foo", adr);
- }
- };
- Country country = new Country();
- adr.setCity("dark");
- adr.setCountry(country);
- Set<ConstraintViolation<Object>> iv = v.validateProperty(map, propPath);
- Assert.assertEquals(1, iv.size()); // null address line 1 (no cascade)
-
- country.setISO2Code("too_long");
- iv = v.validateProperty(map, propPath, true);
- Assert.assertEquals(3, iv.size()); // null address line 1 + null
- // country.name + too long
- // country.iso2code
-
- country.setISO2Code("23");
- iv = v.validateProperty(map, propPath, true);
- Assert.assertEquals(2, iv.size()); // null address line 1 + null
- // country.name, country.iso2code
- // fixed
-
- Address value = new Address();
- value.setCity("whatever");
- value.setAddressline1("1 address line");
-
- Set<?> iv2 = v.validateValue(map.getClass(), propPath, value, true);
- Assert.assertEquals(1, iv2.size()); // null country
-
- value.setCountry(new Country());
- iv2 = v.validateValue(map.getClass(), propPath, value, true);
- Assert.assertEquals(1, iv2.size()); // null country.name
-
- value.getCountry().setName("NWO");
- iv2 = v.validateValue(map.getClass(), propPath, value, true);
- Assert.assertEquals(0, iv2.size());
- }
-
- @SuppressWarnings("unchecked")
- public void testValidateCascadingKeyedGenericElement() throws InvocationTargetException, NoSuchMethodException,
- IllegalAccessException {
- final String propPath = "[foo]";
-
- CascadingPropertyValidator v = validator.unwrap(CascadingPropertyValidator.class);
- final Address adr = new Address();
- Object map = new HashMap<String, Address>();
- ((Map<String, Address>) map).put("foo", adr);
- Country country = new Country();
- adr.setCity("dark");
- adr.setCountry(country);
- Set<?> iv = v.validateProperty(map, propPath);
- Assert.assertEquals(1, iv.size()); // null address line 1 (no cascade)
-
- country.setISO2Code("too_long");
- iv = v.validateProperty(map, propPath, true);
- Assert.assertEquals(3, iv.size()); // null address line 1 + null
- // country.name + too long
- // country.iso2code
-
- country.setISO2Code("23");
- iv = v.validateProperty(map, propPath, true);
- Assert.assertEquals(2, iv.size()); // null address line 1 + null
- // country.name, country.iso2code
- // fixed
-
- Address value = new Address();
- value.setCity("whatever");
- value.setAddressline1("1 address line");
-
- Set<?> iv2 = v.validateValue(Map.class, propPath, value, true);
- Assert.assertEquals(1, iv2.size()); // null country
-
- value.setCountry(new Country());
- iv2 = v.validateValue(Map.class, propPath, value, true);
- Assert.assertEquals(1, iv2.size()); // null country.name
-
- value.getCountry().setName("NWO");
- iv2 = v.validateValue(Map.class, propPath, value, true);
- Assert.assertEquals(0, iv2.size());
- }
-
- public void testValidateCascadingIndexedElement() throws InvocationTargetException, NoSuchMethodException,
- IllegalAccessException {
- final String propPath = "[0]";
- CascadingPropertyValidator v = validator.unwrap(CascadingPropertyValidator.class);
- Address value = new Address();
- value.setCity("whatever");
- value.setAddressline1("1 address line");
- Set<ConstraintViolation<Address[]>> iv;
- Address[] array = { value };
- iv = v.validateProperty(array, propPath, true);
- Assert.assertEquals(1, iv.size()); // null country
-
- value.setCountry(new Country());
- iv = v.validateProperty(array, propPath, true);
- Assert.assertEquals(1, iv.size()); // null country.name
-
- value.getCountry().setName("NWO");
- iv = v.validateProperty(array, propPath, true);
- Assert.assertEquals(0, iv.size());
-
- value = new Address();
- value.setCity("whatever");
- value.setAddressline1("1 address line");
- Set<?> iv2;
- iv2 = v.validateValue(array.getClass(), propPath, value, true);
- Assert.assertEquals(1, iv2.size()); // null country
-
- value.setCountry(new Country());
- iv2 = v.validateValue(array.getClass(), propPath, value, true);
- Assert.assertEquals(1, iv2.size()); // null country.name
-
- value.getCountry().setName("NWO");
- iv2 = v.validateValue(array.getClass(), propPath, value, true);
- Assert.assertEquals(0, iv2.size());
- }
-
- public void testValidateCascadingIndexedGenericElement() throws InvocationTargetException, NoSuchMethodException,
- IllegalAccessException {
- final String propPath = "[0]";
- CascadingPropertyValidator v = validator.unwrap(CascadingPropertyValidator.class);
- Address value = new Address();
- value.setCity("whatever");
- value.setAddressline1("1 address line");
- Set<?> iv;
- Object list = Collections.singletonList(value);
- iv = v.validateProperty(list, propPath, true);
- Assert.assertEquals(1, iv.size()); // null country
-
- value.setCountry(new Country());
- iv = v.validateProperty(list, propPath, true);
- Assert.assertEquals(1, iv.size()); // null country.name
-
- value.getCountry().setName("NWO");
- iv = v.validateProperty(list, propPath, true);
- Assert.assertEquals(0, iv.size());
-
- value = new Address();
- value.setCity("whatever");
- value.setAddressline1("1 address line");
- Set<?> iv2;
- iv2 = v.validateValue(List.class, propPath, value, true);
- Assert.assertEquals(1, iv2.size()); // null country
-
- value.setCountry(new Country());
- iv2 = v.validateValue(List.class, propPath, value, true);
- Assert.assertEquals(1, iv2.size()); // null country.name
-
- value.getCountry().setName("NWO");
- iv2 = v.validateValue(List.class, propPath, value, true);
- Assert.assertEquals(0, iv2.size());
- }
-
- public interface Foo {
- }
-
- public static class FooAddress extends Address {
- /**
- * {@inheritDoc}
- */
- @Override
- @NotNull(groups = Foo.class)
- public String getCity() {
- return super.getCity();
- }
- }
-
- public void testValidateCascadingPropertyWithMultipleGroupsIgnoresSiblingProperties() {
- final String propPath = "addresses[0].country";
-
- CascadingPropertyValidator v = validator.unwrap(CascadingPropertyValidator.class);
- Author author = new Author();
- author.setAddresses(new ArrayList<Address>());
- Address adr = new FooAddress();
- author.getAddresses().add(adr);
- Country country = new Country();
- adr.setCountry(country);
-
- Set<ConstraintViolation<Author>> iv = v.validateProperty(author, propPath, true, Default.class, Foo.class);
- Assert.assertEquals(1, iv.size());
- }
-
- public void testMetadataAPI() {
- BeanDescriptor bookBeanDescriptor = validator.getConstraintsForClass(Book.class);
-
- // expect no constraints on Book's Class-Level
- Assert.assertFalse(bookBeanDescriptor.hasConstraints());
- // but there are constraints on Book's Property-Level
- Assert.assertTrue(bookBeanDescriptor.isBeanConstrained());
- Assert.assertTrue(bookBeanDescriptor.getConstraintDescriptors().size() == 0); // no
- // constraint
- // more specifically "author" and "title"
- Assert.assertEquals(4, bookBeanDescriptor.getConstrainedProperties().size());
- // not a property
- Assert.assertTrue(bookBeanDescriptor.getConstraintsForProperty("doesNotExist") == null);
- // property with no constraint
- Assert.assertTrue(bookBeanDescriptor.getConstraintsForProperty("description") == null);
- PropertyDescriptor propertyDescriptor = bookBeanDescriptor.getConstraintsForProperty("title");
- Assert.assertEquals(2, propertyDescriptor.getConstraintDescriptors().size());
- Assert.assertTrue("title".equals(propertyDescriptor.getPropertyName()));
- // assuming the implementation returns the NotEmpty constraint first
- Iterator<ConstraintDescriptor<?>> iter = propertyDescriptor.getConstraintDescriptors().iterator();
- ConstraintDescriptor<?> constraintDescriptor = null;
- while (iter.hasNext()) {
- constraintDescriptor = iter.next();
- if (constraintDescriptor.getAnnotation().annotationType().equals(NotNull.class)) {
- break;
- }
-
- }
- Assert.assertTrue(constraintDescriptor != null);
- Assert.assertTrue(constraintDescriptor.getGroups().size() == 1); // "first"
- Assert.assertEquals(NotNullValidator.class, constraintDescriptor.getConstraintValidatorClasses().get(0));
- // assuming the implementation returns the Size constraint first
- propertyDescriptor = bookBeanDescriptor.getConstraintsForProperty("subtitle");
- Iterator<ConstraintDescriptor<?>> iterator = propertyDescriptor.getConstraintDescriptors().iterator();
- constraintDescriptor = iterator.next();
- Assert.assertTrue(constraintDescriptor.getAnnotation().annotationType().equals(Size.class));
- Assert.assertTrue(((Integer) constraintDescriptor.getAttributes().get("max")) == 30);
- Assert.assertTrue(constraintDescriptor.getGroups().size() == 1);
- propertyDescriptor = bookBeanDescriptor.getConstraintsForProperty("author");
- Assert.assertTrue(propertyDescriptor.getConstraintDescriptors().size() == 1);
- Assert.assertTrue(propertyDescriptor.isCascaded());
- Assert.assertNull(bookBeanDescriptor.getConstraintsForProperty("unconstraintField"));
- }
-
- public void testKeyedMetadata() {
- @SuppressWarnings("serial")
- BeanDescriptor beanDescriptor = validator.getConstraintsForClass(new HashMap<String, Object>() {
- }.getClass());
- Assert.assertNotNull(beanDescriptor);
- Assert.assertFalse(beanDescriptor.isBeanConstrained());
- Assert.assertNull(beanDescriptor.getConstraintsForProperty("[foo]"));
- }
-
- public void testGenericKeyedMetadata() {
- BeanDescriptor beanDescriptor = validator.getConstraintsForClass(Map.class);
- Assert.assertNotNull(beanDescriptor);
- Assert.assertFalse(beanDescriptor.isBeanConstrained());
- Assert.assertNull(beanDescriptor.getConstraintsForProperty("[foo]"));
- }
-
- public void testIndexedMetadata() {
- BeanDescriptor beanDescriptor = validator.getConstraintsForClass(Array.newInstance(Author.class, 0).getClass());
- Assert.assertNotNull(beanDescriptor);
- Assert.assertFalse(beanDescriptor.isBeanConstrained());
- Assert.assertNull(beanDescriptor.getConstraintsForProperty("[0]"));
- }
-
- public void testGenericIndexedMetadata() {
- BeanDescriptor beanDescriptor = validator.getConstraintsForClass(List.class);
- Assert.assertNotNull(beanDescriptor);
- Assert.assertFalse(beanDescriptor.isBeanConstrained());
- Assert.assertNull(beanDescriptor.getConstraintsForProperty("[0]"));
- }
-}
diff --git a/trunk/bval-jsr303/src/test/java/org/apache/bval/jsr303/ValidatorResolutionTest.java b/trunk/bval-jsr303/src/test/java/org/apache/bval/jsr303/ValidatorResolutionTest.java
deleted file mode 100644
index 2417582..0000000
--- a/trunk/bval-jsr303/src/test/java/org/apache/bval/jsr303/ValidatorResolutionTest.java
+++ /dev/null
@@ -1,110 +0,0 @@
-/*
- * 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.bval.jsr303;
-
-import junit.framework.TestCase;
-
-import javax.validation.*;
-import javax.validation.constraints.NotNull;
-import java.lang.annotation.Documented;
-import java.lang.annotation.Retention;
-import java.lang.annotation.Target;
-import java.util.Locale;
-
-import static java.lang.annotation.ElementType.*;
-import static java.lang.annotation.RetentionPolicy.RUNTIME;
-
-
-/**
- * Checks the correct behavior of the validator resolution algorithm.
- *
- * @author Carlos Vara
- */
-public class ValidatorResolutionTest extends TestCase {
- static ValidatorFactory factory;
-
- static {
- factory = Validation.buildDefaultValidatorFactory();
- ((DefaultMessageInterpolator) factory.getMessageInterpolator()).setLocale(Locale.ENGLISH);
- }
-
- /**
- * Validator instance to test
- */
- protected Validator validator;
-
- /**
- * {@inheritDoc}
- */
- @Override
- public void setUp() throws Exception {
- super.setUp();
- validator = createValidator();
- }
-
- /**
- * Create the validator instance.
- *
- * @return Validator
- */
- protected Validator createValidator() {
- return factory.getValidator();
- }
-
- /**
- * Check that a {@link ConstraintDefinitionException} is thrown when the
- * only available validator is associated with a different annotation type.
- */
- public void testInvalidValidator() {
- try {
- validator.validate(new Person());
- fail("No exception thrown, but no valid validator available.");
- } catch (ConstraintDefinitionException e) {
- // correct
- }
- }
-
- public static class Person {
- @PersonName
- public String name;
- }
-
- @Constraint(validatedBy = { InvalidPersonNameValidator.class })
- @Documented
- @Target( { METHOD, FIELD, TYPE })
- @Retention(RUNTIME)
- public static @interface PersonName {
- String message() default "Wrong person name";
-
- Class<?>[] groups() default {};
-
- Class<? extends Payload>[] payload() default {};
- }
-
- public static class InvalidPersonNameValidator implements ConstraintValidator<NotNull, String> {
- public void initialize(NotNull constraintAnnotation) {
- // Nothing
- }
-
- public boolean isValid(String value, ConstraintValidatorContext context) {
- return true;
- }
- }
-
-}
diff --git a/trunk/bval-jsr303/src/test/java/org/apache/bval/jsr303/example/AccessTestBusinessObject.java b/trunk/bval-jsr303/src/test/java/org/apache/bval/jsr303/example/AccessTestBusinessObject.java
deleted file mode 100644
index 6066227..0000000
--- a/trunk/bval-jsr303/src/test/java/org/apache/bval/jsr303/example/AccessTestBusinessObject.java
+++ /dev/null
@@ -1,73 +0,0 @@
-/*
- * 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.bval.jsr303.example;
-
-
-import org.apache.bval.constraints.HasValue;
-
-import javax.validation.Valid;
-
-/**
- * Description: <br/>
- */
-public class AccessTestBusinessObject {
- // test that field-access is used, not method-access
- @HasValue({"1", "3"})
- protected String var1;
-
- // test that field-access is used, not method-access
- @SuppressWarnings("unused")
- @Valid
- private AccessTestBusinessObject next;
-
- // not annotated with @Valid, not validated!!
- private AccessTestBusinessObject toBeIgnored;
- private AccessTestBusinessObject _next;
-
- public AccessTestBusinessObject(String var1) {
- this.var1 = var1;
- }
-
- @HasValue("3")
- public String getVar1() {
- return "3";
- }
-
- public void next(AccessTestBusinessObject next) {
- this._next = next;
- }
-
-
- public void setNext(AccessTestBusinessObject next) {
- this.next = next;
- }
-
- @Valid
- public AccessTestBusinessObject getNext() {
- return _next; // method returns '_next', not the field 'next'
- }
-
- public AccessTestBusinessObject getToBeIgnored() {
- return toBeIgnored;
- }
-
- public void setToBeIgnored(AccessTestBusinessObject toBeIgnored) {
- this.toBeIgnored = toBeIgnored;
- }
-}
diff --git a/trunk/bval-jsr303/src/test/java/org/apache/bval/jsr303/example/AccessTestBusinessObjectSub.java b/trunk/bval-jsr303/src/test/java/org/apache/bval/jsr303/example/AccessTestBusinessObjectSub.java
deleted file mode 100644
index 3aa3b5e..0000000
--- a/trunk/bval-jsr303/src/test/java/org/apache/bval/jsr303/example/AccessTestBusinessObjectSub.java
+++ /dev/null
@@ -1,57 +0,0 @@
-/*
- * 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.bval.jsr303.example;
-
-import org.apache.bval.constraints.HasValue;
-
-/**
- * Description: <br/>
- */
-public class AccessTestBusinessObjectSub extends AccessTestBusinessObject {
- private String var2, _var2;
-
- public void setVar2(String var2) {
- this.var2 = var2;
- }
-
- public void setvar2(String _var2) {
- this._var2 = _var2;
- }
-
- public AccessTestBusinessObjectSub(String var1) {
- super(var1);
- }
-
- // getVar1() is called on subclass, although annotated on superclass
- public String getVar1() {
- return var1;
- }
-
- //// test that getvar2() is called, not getVar2()
-
- @HasValue("5")
- public String getvar2() {
- return _var2;
- }
-
- @HasValue("6")
- public String getVar2() {
- return var2;
- }
-}
diff --git a/trunk/bval-jsr303/src/test/java/org/apache/bval/jsr303/example/Address.java b/trunk/bval-jsr303/src/test/java/org/apache/bval/jsr303/example/Address.java
deleted file mode 100644
index d72f2fc..0000000
--- a/trunk/bval-jsr303/src/test/java/org/apache/bval/jsr303/example/Address.java
+++ /dev/null
@@ -1,100 +0,0 @@
-/*
- * 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.bval.jsr303.example;
-
-
-import org.apache.bval.constraints.ZipCodeCityCoherence;
-
-import javax.validation.GroupSequence;
-import javax.validation.Valid;
-import javax.validation.constraints.NotNull;
-import javax.validation.constraints.Size;
-import javax.validation.groups.Default;
-
-@ZipCodeCityCoherence
-public class Address implements ZipCodeCityCarrier {
- @NotNull
- @Size(max = 30)
- private String addressline1;
- @Size(max = 30)
- private String addressline2;
- @Size(max = 11)
- private String zipCode;
- @NotNull
- @Valid
- private Country country;
- private String city;
-
- public String getAddressline1() {
- return addressline1;
- }
-
- public void setAddressline1(String addressline1) {
- this.addressline1 = addressline1;
- }
-
- public String getAddressline2() {
- return addressline2;
- }
-
- public void setAddressline2(String addressline2) {
- this.addressline2 = addressline2;
- }
-
- public String getZipCode() {
- return zipCode;
- }
-
- public void setZipCode(String zipCode) {
- this.zipCode = zipCode;
- }
-
- @Size(max = 30)
- @NotNull
- public String getCity() {
- return city;
- }
-
- public void setCity(String city) {
- this.city = city;
- }
-
- public Country getCountry() {
- return country;
- }
-
- public void setCountry(Country country) {
- this.country = country;
- }
-
- /**
- * Check conherence on the overall object
- * Needs basic checking to be green first
- */
- public interface HighLevelCoherence {
- }
-
- /**
- * Check both basic constraints and high level ones.
- * High level constraints are not checked if basic constraints fail.
- */
- @GroupSequence(value = {Default.class, HighLevelCoherence.class})
- public interface Complete {
- }
-}
\ No newline at end of file
diff --git a/trunk/bval-jsr303/src/test/java/org/apache/bval/jsr303/example/Author.java b/trunk/bval-jsr303/src/test/java/org/apache/bval/jsr303/example/Author.java
deleted file mode 100644
index 68e2ca8..0000000
--- a/trunk/bval-jsr303/src/test/java/org/apache/bval/jsr303/example/Author.java
+++ /dev/null
@@ -1,72 +0,0 @@
-/*
- * 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.bval.jsr303.example;
-
-
-import org.apache.bval.constraints.NotEmpty;
-
-import javax.validation.GroupSequence;
-import javax.validation.Valid;
-import javax.validation.constraints.Size;
-import java.util.List;
-
-@GroupSequence({First.class, Author.class, Last.class})
-public class Author {
- @NotEmpty(groups = Last.class)
- private String firstName;
- @NotEmpty(groups = First.class)
- private String lastName;
- @Size(max = 40, groups = First.class)
- private String company;
-
- @Valid
- private List<Address> addresses;
-
- public List<Address> getAddresses() {
- return addresses;
- }
-
- public void setAddresses(List<Address> addresses) {
- this.addresses = addresses;
- }
-
- public String getFirstName() {
- return firstName;
- }
-
- public void setFirstName(String firstName) {
- this.firstName = firstName;
- }
-
- public String getLastName() {
- return lastName;
- }
-
- public void setLastName(String lastName) {
- this.lastName = lastName;
- }
-
- public String getCompany() {
- return company;
- }
-
- public void setCompany(String company) {
- this.company = company;
- }
-}
\ No newline at end of file
diff --git a/trunk/bval-jsr303/src/test/java/org/apache/bval/jsr303/example/Book.java b/trunk/bval-jsr303/src/test/java/org/apache/bval/jsr303/example/Book.java
deleted file mode 100644
index 0d5c7ac..0000000
--- a/trunk/bval-jsr303/src/test/java/org/apache/bval/jsr303/example/Book.java
+++ /dev/null
@@ -1,83 +0,0 @@
-/*
- * 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.bval.jsr303.example;
-
-
-import org.apache.bval.constraints.NotEmpty;
-
-import javax.validation.GroupSequence;
-import javax.validation.Valid;
-import javax.validation.constraints.NotNull;
-import javax.validation.constraints.Size;
-
-@GroupSequence({First.class, Second.class, Book.class, Last.class})
-public class Book {
- @NotNull(groups = First.class)
- @NotEmpty(groups = First.class)
- private String title;
-
- @Size(max = 30, groups = Second.class)
- private String subtitle;
-
- @Valid
- @NotNull(groups = First.class)
- private Author author;
-
- @SuppressWarnings("unused")
- @NotNull
- private int uselessField;
-
- private int unconstraintField;
-
- public int getUnconstraintField() {
- return unconstraintField;
- }
-
- public void setUnconstraintField(int unconstraintField) {
- this.unconstraintField = unconstraintField;
- }
-
- public String getTitle() {
- return title;
- }
-
- public void setTitle(String title) {
- this.title = title;
- }
-
- public String getSubtitle() {
- return subtitle;
- }
-
- public void setSubtitle(String subtitle) {
- this.subtitle = subtitle;
- }
-
- public Author getAuthor() {
- return author;
- }
-
- public void setAuthor(Author author) {
- this.author = author;
- }
-
- @GroupSequence(value = {First.class, Second.class, Last.class})
- public interface All {
- }
-}
\ No newline at end of file
diff --git a/trunk/bval-jsr303/src/test/java/org/apache/bval/jsr303/example/BusinessAddress.java b/trunk/bval-jsr303/src/test/java/org/apache/bval/jsr303/example/BusinessAddress.java
deleted file mode 100644
index 2921041..0000000
--- a/trunk/bval-jsr303/src/test/java/org/apache/bval/jsr303/example/BusinessAddress.java
+++ /dev/null
@@ -1,37 +0,0 @@
-/*
- * 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.bval.jsr303.example;
-
-import javax.validation.constraints.NotNull;
-
-/**
- * Description: <br/>
- */
-public class BusinessAddress extends Address {
- private String company;
-
- @NotNull
- public String getCompany() {
- return company;
- }
-
- public void setCompany(String company) {
- this.company = company;
- }
-}
diff --git a/trunk/bval-jsr303/src/test/java/org/apache/bval/jsr303/example/CompanyAddress.java b/trunk/bval-jsr303/src/test/java/org/apache/bval/jsr303/example/CompanyAddress.java
deleted file mode 100644
index 02973a6..0000000
--- a/trunk/bval-jsr303/src/test/java/org/apache/bval/jsr303/example/CompanyAddress.java
+++ /dev/null
@@ -1,40 +0,0 @@
-/*
- * 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.bval.jsr303.example;
-
-import org.apache.bval.constraints.CompanyEmail;
-
-/**
- * Description: <br/>
- */
-public class CompanyAddress {
- @SuppressWarnings("unused")
- @CompanyEmail
- private String email;
-
- public CompanyAddress() {
- }
-
- public CompanyAddress(String email) {
- this.email = email;
- }
-
- // do not provided getters & setters to test that value access
- // of combined constraints directly use the private field 'email'
-}
diff --git a/trunk/bval-jsr303/src/test/java/org/apache/bval/jsr303/example/Continent.java b/trunk/bval-jsr303/src/test/java/org/apache/bval/jsr303/example/Continent.java
deleted file mode 100644
index 78be5c3..0000000
--- a/trunk/bval-jsr303/src/test/java/org/apache/bval/jsr303/example/Continent.java
+++ /dev/null
@@ -1,40 +0,0 @@
-/*
- * 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.bval.jsr303.example;
-
-import javax.validation.Valid;
-import javax.validation.constraints.NotNull;
-import java.util.HashSet;
-import java.util.Set;
-
-/**
- * A continent has a name and a set of {@link Country}s.
- *
- * @author Carlos Vara
- */
-public class Continent {
-
- @NotNull
- public String name;
-
- @Valid
- public Set<Country> countries = new HashSet<Country>();
-
-}
diff --git a/trunk/bval-jsr303/src/test/java/org/apache/bval/jsr303/example/Country.java b/trunk/bval-jsr303/src/test/java/org/apache/bval/jsr303/example/Country.java
deleted file mode 100644
index ffb408d..0000000
--- a/trunk/bval-jsr303/src/test/java/org/apache/bval/jsr303/example/Country.java
+++ /dev/null
@@ -1,56 +0,0 @@
-/*
- * 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.bval.jsr303.example;
-
-
-import javax.validation.constraints.NotNull;
-import javax.validation.constraints.Size;
-
-public class Country {
- @NotNull
- private String name;
- @Size(max = 2)
- private String ISO2Code;
- @Size(max = 3)
- private String ISO3Code;
-
- public String getName() {
- return name;
- }
-
- public void setName(String name) {
- this.name = name;
- }
-
- public String getISO2Code() {
- return ISO2Code;
- }
-
- public void setISO2Code(String ISO2Code) {
- this.ISO2Code = ISO2Code;
- }
-
- public String getISO3Code() {
- return ISO3Code;
- }
-
- public void setISO3Code(String ISO3Code) {
- this.ISO3Code = ISO3Code;
- }
-}
\ No newline at end of file
diff --git a/trunk/bval-jsr303/src/test/java/org/apache/bval/jsr303/example/Customer.java b/trunk/bval-jsr303/src/test/java/org/apache/bval/jsr303/example/Customer.java
deleted file mode 100644
index 9e74f1c..0000000
--- a/trunk/bval-jsr303/src/test/java/org/apache/bval/jsr303/example/Customer.java
+++ /dev/null
@@ -1,86 +0,0 @@
-/*
- * 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.bval.jsr303.example;
-
-
-import org.apache.bval.constraints.Email;
-import org.apache.bval.constraints.Password;
-
-import javax.validation.constraints.NotNull;
-
-public class Customer implements Person {
- private String firstName;
- private String middleName;
- private String lastName;
- @NotNull
- private String customerId;
- @Password(robustness = 5)
- private String password;
-
- @Email
- private String emailAddress;
-
- public String getEmailAddress() {
- return emailAddress;
- }
-
- public void setEmailAddress(String emailAddress) {
- this.emailAddress = emailAddress;
- }
-
- public String getFirstName() {
- return firstName;
- }
-
- public void setFirstName(String firstName) {
- this.firstName = firstName;
- }
-
- public String getMiddleName() {
- return middleName;
- }
-
- public void setMiddleName(String middleName) {
- this.middleName = middleName;
- }
-
- public String getLastName() {
- return lastName;
- }
-
- public void setLastName(String lastName) {
- this.lastName = lastName;
- }
-
- public String getCustomerId() {
- return customerId;
- }
-
- public void setCustomerId(String customerId) {
- this.customerId = customerId;
- }
-
- public String getPassword() {
- return password;
- }
-
- public void setPassword(String password) {
- this.password = password;
- }
-}
\ No newline at end of file
diff --git a/trunk/bval-jsr303/src/test/java/org/apache/bval/jsr303/example/Employee.java b/trunk/bval-jsr303/src/test/java/org/apache/bval/jsr303/example/Employee.java
deleted file mode 100644
index 4efe01d..0000000
--- a/trunk/bval-jsr303/src/test/java/org/apache/bval/jsr303/example/Employee.java
+++ /dev/null
@@ -1,51 +0,0 @@
-/*
- * 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.bval.jsr303.example;
-
-/**
- * Description: <br/>
- */
-public class Employee implements Person {
- private String firstName, lastName;
-
- public Employee(String firstN, String lastN) {
- this.firstName = firstN;
- this.lastName = lastN;
- }
-
- public String getFirstName() {
- return firstName;
- }
-
- public String getMiddleName() {
- return null; // not supported
- }
-
- public String getLastName() {
- return lastName;
- }
-
- public void setFirstName(String firstName) {
- this.firstName = firstName;
- }
-
- public void setLastName(String lastName) {
- this.lastName = lastName;
- }
-}
diff --git a/trunk/bval-jsr303/src/test/java/org/apache/bval/jsr303/example/Engine.java b/trunk/bval-jsr303/src/test/java/org/apache/bval/jsr303/example/Engine.java
deleted file mode 100644
index 071cb3d..0000000
--- a/trunk/bval-jsr303/src/test/java/org/apache/bval/jsr303/example/Engine.java
+++ /dev/null
@@ -1,32 +0,0 @@
-/*
- * 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.bval.jsr303.example;
-
-import javax.validation.constraints.Pattern;
-
-public class Engine {
- @Pattern.List({
- @Pattern(regexp = "^[A-Z0-9-]+$", flags = Pattern.Flag.CASE_INSENSITIVE,
- message = "must contain alphabetical characters only"),
- @Pattern(
- regexp = "^....-....-....$", message = "must match ....-....-....")})
- public String serialNumber;
-
-
-}
\ No newline at end of file
diff --git a/trunk/bval-jsr303/src/test/java/org/apache/bval/jsr303/example/First.java b/trunk/bval-jsr303/src/test/java/org/apache/bval/jsr303/example/First.java
deleted file mode 100644
index d8f688f..0000000
--- a/trunk/bval-jsr303/src/test/java/org/apache/bval/jsr303/example/First.java
+++ /dev/null
@@ -1,25 +0,0 @@
-/*
- * 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.bval.jsr303.example;
-
-/**
- * Description: <br/>
- */
-public interface First {
-}
diff --git a/trunk/bval-jsr303/src/test/java/org/apache/bval/jsr303/example/FrenchAddress.java b/trunk/bval-jsr303/src/test/java/org/apache/bval/jsr303/example/FrenchAddress.java
deleted file mode 100644
index cfa468b..0000000
--- a/trunk/bval-jsr303/src/test/java/org/apache/bval/jsr303/example/FrenchAddress.java
+++ /dev/null
@@ -1,45 +0,0 @@
-/*
- * 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.bval.jsr303.example;
-
-import org.apache.bval.constraints.FrenchZipCode;
-
-/**
- * Description: <br/>
- */
-public class FrenchAddress {
- @FrenchZipCode(size = 7)
- String zipCode;
-
- public FrenchAddress() {
- }
-
- public FrenchAddress(String zipCode) {
- this.zipCode = zipCode;
- }
-
- public String getZipCode() {
- return zipCode;
- }
-
- public void setZipCode(String zipCode) {
- this.zipCode = zipCode;
- }
-
-}
diff --git a/trunk/bval-jsr303/src/test/java/org/apache/bval/jsr303/example/IllustratedBook.java b/trunk/bval-jsr303/src/test/java/org/apache/bval/jsr303/example/IllustratedBook.java
deleted file mode 100644
index 89993ad..0000000
--- a/trunk/bval-jsr303/src/test/java/org/apache/bval/jsr303/example/IllustratedBook.java
+++ /dev/null
@@ -1,41 +0,0 @@
-/*
- * 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.bval.jsr303.example;
-
-/**
- * Add a non-cascaded bean to a book.
- *
- * @version $Rev: 1004764 $ $Date: 2010-10-05 13:35:42 -0500 (Tue, 05 Oct 2010) $
- */
-public class IllustratedBook extends Book {
- private Person illustrator;
-
- /**
- * @return the illustrator
- */
- public Person getIllustrator() {
- return illustrator;
- }
-
- /**
- * @param illustrator
- * the illustrator to set
- */
- public void setIllustrator(Person illustrator) {
- this.illustrator = illustrator;
- }
-}
diff --git a/trunk/bval-jsr303/src/test/java/org/apache/bval/jsr303/example/Last.java b/trunk/bval-jsr303/src/test/java/org/apache/bval/jsr303/example/Last.java
deleted file mode 100644
index 558a60a..0000000
--- a/trunk/bval-jsr303/src/test/java/org/apache/bval/jsr303/example/Last.java
+++ /dev/null
@@ -1,25 +0,0 @@
-/*
- * 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.bval.jsr303.example;
-
-/**
- * Description: <br/>
- */
-public interface Last {
-}
diff --git a/trunk/bval-jsr303/src/test/java/org/apache/bval/jsr303/example/Library.java b/trunk/bval-jsr303/src/test/java/org/apache/bval/jsr303/example/Library.java
deleted file mode 100644
index b6d3306..0000000
--- a/trunk/bval-jsr303/src/test/java/org/apache/bval/jsr303/example/Library.java
+++ /dev/null
@@ -1,73 +0,0 @@
-/*
- * 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.bval.jsr303.example;
-
-import java.util.ArrayList;
-import java.util.Collections;
-import java.util.HashMap;
-import java.util.List;
-import java.util.Map;
-
-import javax.validation.Valid;
-import javax.validation.constraints.NotNull;
-
-/**
- * Description: <br/>
- */
-public class Library {
- @NotNull
- private String libraryName;
- @Valid
- private final Map<String, Book> taggedBooks = new HashMap<String, Book>();
-
- private Person[] persons;
-
- public String getLibraryName() {
- return libraryName;
- }
-
- public void setLibraryName(String libraryName) {
- this.libraryName = libraryName;
- }
-
- public Map<String, Book> getTaggedBooks() {
- return taggedBooks;
- }
-
- public Person[] getPersons() {
- return persons;
- }
-
- public void setPersons(Person[] persons) {
- this.persons = persons;
- }
-
- @Valid
- public List<Employee> getEmployees() {
- if (persons == null)
- return Collections.emptyList();
-
- ArrayList<Employee> emps = new ArrayList<Employee>(persons.length);
- for (Person each : persons) {
- if (each instanceof Employee)
- emps.add((Employee) each);
- }
- return emps;
- }
-}
diff --git a/trunk/bval-jsr303/src/test/java/org/apache/bval/jsr303/example/MaxTestEntity.java b/trunk/bval-jsr303/src/test/java/org/apache/bval/jsr303/example/MaxTestEntity.java
deleted file mode 100644
index 3af3f99..0000000
--- a/trunk/bval-jsr303/src/test/java/org/apache/bval/jsr303/example/MaxTestEntity.java
+++ /dev/null
@@ -1,70 +0,0 @@
-/*
- * 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.bval.jsr303.example;
-
-import javax.validation.constraints.Max;
-import java.math.BigDecimal;
-
-/**
- * Description: <br/>
- */
-public class MaxTestEntity {
- @Max(100)
- private String text;
- private String property;
-
- @Max(300)
- private long longValue;
-
- private BigDecimal decimalValue;
-
- public String getText() {
- return text;
- }
-
- @Max(200)
- public String getProperty() {
- return property;
- }
-
- public long getLongValue() {
- return longValue;
- }
-
- @Max(400)
- public BigDecimal getDecimalValue() {
- return decimalValue;
- }
-
- public void setText(String text) {
- this.text = text;
- }
-
- public void setProperty(String property) {
- this.property = property;
- }
-
- public void setLongValue(long longValue) {
- this.longValue = longValue;
- }
-
- public void setDecimalValue(BigDecimal decimalValue) {
- this.decimalValue = decimalValue;
- }
-}
diff --git a/trunk/bval-jsr303/src/test/java/org/apache/bval/jsr303/example/NoValidatorTestEntity.java b/trunk/bval-jsr303/src/test/java/org/apache/bval/jsr303/example/NoValidatorTestEntity.java
deleted file mode 100644
index 206ac7c..0000000
--- a/trunk/bval-jsr303/src/test/java/org/apache/bval/jsr303/example/NoValidatorTestEntity.java
+++ /dev/null
@@ -1,31 +0,0 @@
-/*
- * 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.bval.jsr303.example;
-
-import javax.validation.constraints.Max;
-
-/**
- * Description: <br/>
- */
-public class NoValidatorTestEntity {
- @SuppressWarnings("unused")
- @Max(20)
- private Object anything;
-
-}
diff --git a/trunk/bval-jsr303/src/test/java/org/apache/bval/jsr303/example/Person.java b/trunk/bval-jsr303/src/test/java/org/apache/bval/jsr303/example/Person.java
deleted file mode 100644
index b6012d7..0000000
--- a/trunk/bval-jsr303/src/test/java/org/apache/bval/jsr303/example/Person.java
+++ /dev/null
@@ -1,31 +0,0 @@
-/*
- * 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.bval.jsr303.example;
-
-import org.apache.bval.constraints.NotEmpty;
-
-public interface Person {
- @NotEmpty
- String getFirstName();
-
- String getMiddleName();
-
- @NotEmpty
- String getLastName();
-}
\ No newline at end of file
diff --git a/trunk/bval-jsr303/src/test/java/org/apache/bval/jsr303/example/PreferredGuest.java b/trunk/bval-jsr303/src/test/java/org/apache/bval/jsr303/example/PreferredGuest.java
deleted file mode 100644
index ff9f10c..0000000
--- a/trunk/bval-jsr303/src/test/java/org/apache/bval/jsr303/example/PreferredGuest.java
+++ /dev/null
@@ -1,34 +0,0 @@
-/*
- * 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.bval.jsr303.example;
-
-import javax.validation.constraints.Digits;
-
-public class PreferredGuest extends Customer {
- @Digits(integer = 10, fraction = 0)
- private String guestCreditCardNumber;
-
- public String getGuestCreditCardNumber() {
- return guestCreditCardNumber;
- }
-
- public void setGuestCreditCardNumber(String guestCreditCardNumber) {
- this.guestCreditCardNumber = guestCreditCardNumber;
- }
-}
\ No newline at end of file
diff --git a/trunk/bval-jsr303/src/test/java/org/apache/bval/jsr303/example/RecursiveFoo.java b/trunk/bval-jsr303/src/test/java/org/apache/bval/jsr303/example/RecursiveFoo.java
deleted file mode 100644
index 928a2f9..0000000
--- a/trunk/bval-jsr303/src/test/java/org/apache/bval/jsr303/example/RecursiveFoo.java
+++ /dev/null
@@ -1,43 +0,0 @@
-/*
- * 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.bval.jsr303.example;
-
-
-import org.apache.bval.constraints.NotEmpty;
-
-import javax.validation.Valid;
-import java.util.ArrayList;
-import java.util.Collection;
-
-/**
- * Description: <br/>
- */
-public class RecursiveFoo {
- @NotEmpty
- @Valid
- Collection<RecursiveFoo> foos = new ArrayList<RecursiveFoo>();
-
- public Collection<RecursiveFoo> getFoos() {
- return foos;
- }
-
- public void setFoos(Collection<RecursiveFoo> foos) {
- this.foos = foos;
- }
-}
diff --git a/trunk/bval-jsr303/src/test/java/org/apache/bval/jsr303/example/Second.java b/trunk/bval-jsr303/src/test/java/org/apache/bval/jsr303/example/Second.java
deleted file mode 100644
index e67cbee..0000000
--- a/trunk/bval-jsr303/src/test/java/org/apache/bval/jsr303/example/Second.java
+++ /dev/null
@@ -1,25 +0,0 @@
-/*
- * 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.bval.jsr303.example;
-
-/**
- * Description: <br/>
- */
-public interface Second {
-}
diff --git a/trunk/bval-jsr303/src/test/java/org/apache/bval/jsr303/example/SizeTestEntity.java b/trunk/bval-jsr303/src/test/java/org/apache/bval/jsr303/example/SizeTestEntity.java
deleted file mode 100644
index 2211f2d..0000000
--- a/trunk/bval-jsr303/src/test/java/org/apache/bval/jsr303/example/SizeTestEntity.java
+++ /dev/null
@@ -1,56 +0,0 @@
-/*
- * 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.bval.jsr303.example;
-
-import javax.validation.constraints.Size;
-import java.util.Collection;
-import java.util.Map;
-
-/**
- * Description: <br/>
- */
-public class SizeTestEntity {
- @Size(max=2)
- public Map<String,String> map;
- @Size(max=2)
- public Collection<String> coll;
- @Size(max=2)
- public String text;
-
- @Size(max=2)
- public Object[] oa;
- @Size(max=2)
- public byte[] ba;
- @Size(max=2)
- public int[] it;
- @Size(max=2)
- public Integer[] oa2;
- @Size(max=2)
- public boolean[] boa;
- @Size(max=2)
- public char[] ca;
- @Size(max=2)
- public double[] da;
- @Size(max=2)
- public float[] fa;
- @Size(max=2)
- public long[] la;
- @Size(max=2)
- public short[] sa;
-}
diff --git a/trunk/bval-jsr303/src/test/java/org/apache/bval/jsr303/example/XmlEntitySampleBean.java b/trunk/bval-jsr303/src/test/java/org/apache/bval/jsr303/example/XmlEntitySampleBean.java
deleted file mode 100644
index 8ffefb0..0000000
--- a/trunk/bval-jsr303/src/test/java/org/apache/bval/jsr303/example/XmlEntitySampleBean.java
+++ /dev/null
@@ -1,53 +0,0 @@
-/*
- * 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.bval.jsr303.example;
-
-/**
- * Description: bean used to test constraints described in XML<br/>
- */
-public class XmlEntitySampleBean {
- private String zipCode;
- private String valueCode;
-
- private String firstName;
-
- public String getFirstName() {
- return firstName;
- }
-
- public void setFirstName(String firstName) {
- this.firstName = firstName;
- }
-
- public String getZipCode() {
- return zipCode;
- }
-
- public void setZipCode(String zipCode) {
- this.zipCode = zipCode;
- }
-
- public String getValueCode() {
- return valueCode;
- }
-
- public void setValueCode(String valueCode) {
- this.valueCode = valueCode;
- }
-}
diff --git a/trunk/bval-jsr303/src/test/java/org/apache/bval/jsr303/example/ZipCodeCityCarrier.java b/trunk/bval-jsr303/src/test/java/org/apache/bval/jsr303/example/ZipCodeCityCarrier.java
deleted file mode 100644
index 41fada4..0000000
--- a/trunk/bval-jsr303/src/test/java/org/apache/bval/jsr303/example/ZipCodeCityCarrier.java
+++ /dev/null
@@ -1,27 +0,0 @@
-/*
- * 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.bval.jsr303.example;
-
-/**
- * Description: <br/>
- */
-public interface ZipCodeCityCarrier {
- String getZipCode();
- String getCity();
-}
diff --git a/trunk/bval-jsr303/src/test/java/org/apache/bval/jsr303/extensions/ExampleMethodService.java b/trunk/bval-jsr303/src/test/java/org/apache/bval/jsr303/extensions/ExampleMethodService.java
deleted file mode 100644
index d3a2432..0000000
--- a/trunk/bval-jsr303/src/test/java/org/apache/bval/jsr303/extensions/ExampleMethodService.java
+++ /dev/null
@@ -1,69 +0,0 @@
-/*
- * 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.bval.jsr303.extensions;
-
-
-import org.apache.bval.constraints.NotEmpty;
-
-import javax.validation.Valid;
-import javax.validation.constraints.NotNull;
-import javax.validation.constraints.Pattern;
-import javax.validation.constraints.Size;
-
-/**
- * Description: class with annotated methods to demonstrate
- * method-level-validation<br/>
- */
-public class ExampleMethodService {
- public ExampleMethodService() {
- }
-
- public ExampleMethodService(@NotNull @NotEmpty String s1, @NotNull String s2) {
- }
-
- @NotNull
- @NotEmpty
- public String concat(@NotNull @NotEmpty String s1, @NotNull String s2) {
- return s1 + s2;
- }
-
- public void save(@Pattern(regexp="[a-f0-9]{4}") String data) {
- return;
- }
-
- @NotNull
- @Size(min=3,max=10)
- public String echo(@NotNull @Size(min=3,max=10) String str) {
- return str;
- }
-
- public void personOp1(@Valid Person p) {
- return;
- }
-
- public void personOp2(@NotNull @Valid Person p) {
- return;
- }
-
- public static class Person {
- @NotNull
- String name;
- }
-
-}
diff --git a/trunk/bval-jsr303/src/test/java/org/apache/bval/jsr303/extensions/MethodValidatorImplTest.java b/trunk/bval-jsr303/src/test/java/org/apache/bval/jsr303/extensions/MethodValidatorImplTest.java
deleted file mode 100644
index 21b33a7..0000000
--- a/trunk/bval-jsr303/src/test/java/org/apache/bval/jsr303/extensions/MethodValidatorImplTest.java
+++ /dev/null
@@ -1,289 +0,0 @@
-/*
- * 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.bval.jsr303.extensions;
-
-import junit.framework.Assert;
-import junit.framework.Test;
-import junit.framework.TestCase;
-import junit.framework.TestSuite;
-
-import org.apache.bval.jsr303.ApacheValidationProvider;
-import org.apache.bval.jsr303.ApacheValidatorConfiguration;
-import org.apache.bval.jsr303.ClassValidator;
-import org.apache.bval.jsr303.extensions.ExampleMethodService.Person;
-
-import javax.validation.Validation;
-import javax.validation.ValidationException;
-import javax.validation.Validator;
-import javax.validation.constraints.NotNull;
-import javax.validation.constraints.Size;
-import java.lang.reflect.Constructor;
-import java.lang.reflect.Method;
-import java.util.Set;
-
-/**
- * MethodValidatorImpl Tester.
- *
- * @author <Authors name>
- * @version 1.0
- * @since <pre>11/11/2009</pre>
- */
-@SuppressWarnings({ "unchecked", "rawtypes" })
-public class MethodValidatorImplTest extends TestCase {
- public MethodValidatorImplTest(String name) {
- super(name);
- }
-
- public static Test suite() {
- return new TestSuite(MethodValidatorImplTest.class);
- }
-
- public void testUnwrap() {
- Validator v = getValidator();
- ClassValidator cv = v.unwrap(ClassValidator.class);
- assertTrue(v == cv);
- assertTrue(v == v.unwrap(Validator.class));
- MethodValidatorImpl mvi = v.unwrap(MethodValidatorImpl.class);
- assertNotNull(mvi);
- MethodValidator mv = v.unwrap(MethodValidator.class);
- assertNotNull(mv);
- assertTrue(mv == mv.unwrap(MethodValidatorImpl.class));
- assertTrue(mv == mv.unwrap(ClassValidator.class));
- }
-
- public void testValidateMethodParameters() throws NoSuchMethodException {
- ExampleMethodService service = new ExampleMethodService();
- MethodValidator mv = getValidator().unwrap(MethodValidator.class);
- Method method =
- service.getClass().getMethod("concat", new Class[]{String.class, String.class});
- String[] params = new String[2];
- params[0] = "Hello ";
- params[1] = "world";
- Set results = mv.validateParameters(service.getClass(), method, params);
- assertEquals(true, results.isEmpty());
-
- params[0] = "";
- results = mv.validateParameters(service.getClass(), method, params);
- assertEquals(1, results.size());
-
- params[1] = null;
- results = mv.validateParameters(service.getClass(), method, params);
- assertEquals(2, results.size());
-
- results = mv.validateParameter(service.getClass(), method, params[0], 0);
- assertEquals(1, results.size());
-
- results = mv.validateParameter(service.getClass(), method, "ok", 0);
- assertEquals(0, results.size());
- }
-
- public void testValidateMoreMethodParameters() throws NoSuchMethodException {
-
- ExampleMethodService service = new ExampleMethodService();
- MethodValidator mv = getValidator().unwrap(MethodValidator.class);
- Method saveMethod = service.getClass().getMethod("save", new Class[]{String.class});
-
- String[] saveParams = new String[1];
- saveParams[0] = "abcd";
-
- Set results = mv.validateParameters(service.getClass(), saveMethod, saveParams);
- assertTrue(results.isEmpty());
-
- saveParams[0] = "zzzz";
- results = mv.validateParameters(service.getClass(), saveMethod, saveParams);
- assertEquals(1, results.size());
-
- Method echoMethod = service.getClass().getMethod("echo", new Class[]{String.class});
-
- String[] echoParams = new String[1];
- echoParams[0] = "hello";
-
- results = mv.validateParameters(service.getClass(), echoMethod, echoParams);
- assertTrue(results.isEmpty());
-
- echoParams[0] = "h";
- results = mv.validateParameters(service.getClass(), echoMethod, echoParams);
- assertEquals(1, results.size());
-
- echoParams[0] = null;
- results = mv.validateParameters(service.getClass(), echoMethod, echoParams);
- assertEquals(1, results.size());
-
- }
-
- public void testValidateConstructorParameters() throws NoSuchMethodException {
- ExampleMethodService service = new ExampleMethodService();
- MethodValidator mv = getValidator().unwrap(MethodValidator.class);
- Constructor constructor =
- service.getClass().getConstructor(String.class, String.class);
- String[] params = new String[2];
- params[0] = "Hello ";
- params[1] = "world";
- Set results = mv.validateParameters(service.getClass(), constructor, params);
- assertEquals(true, results.isEmpty());
-
- params[0] = "";
- results = mv.validateParameters(service.getClass(), constructor, params);
- assertEquals(1, results.size());
-
- params[1] = null;
- results = mv.validateParameters(service.getClass(), constructor, params);
- assertEquals(2, results.size());
-
- results = mv.validateParameter(service.getClass(), constructor, params[0], 0);
- assertEquals(1, results.size());
-
- results = mv.validateParameter(service.getClass(), constructor, "ok", 0);
- assertEquals(0, results.size());
- }
-
- public void testValidateReturnValue() throws NoSuchMethodException {
- ExampleMethodService service = new ExampleMethodService();
- MethodValidator mv = getValidator().unwrap(MethodValidator.class);
- Method method =
- service.getClass().getMethod("concat", new Class[]{String.class, String.class});
- Set results;
- results = mv.validateReturnedValue(service.getClass(), method, "test");
- assertEquals(true, results.isEmpty());
-
- results = mv.validateReturnedValue(service.getClass(), method, "");
- assertEquals(1, results.size());
- }
-
- public void testValidateMoreReturnValue() throws NoSuchMethodException {
- ExampleMethodService service = new ExampleMethodService();
- MethodValidator mv = getValidator().unwrap(MethodValidator.class);
- Method echoMethod = service.getClass().getMethod("echo", new Class[]{String.class});
-
- String returnedValue = "a too long string";
- Set results = mv.validateReturnedValue(service.getClass(), echoMethod, returnedValue);
- assertEquals(1, results.size());
-
- returnedValue = null;
- results = mv.validateReturnedValue(service.getClass(), echoMethod, returnedValue);
- assertEquals(1, results.size());
-
- returnedValue = "valid";
- results = mv.validateReturnedValue(service.getClass(), echoMethod, returnedValue);
- assertTrue(results.isEmpty());
- }
-
- public void testValidateValidParam() throws NoSuchMethodException {
- ExampleMethodService service = new ExampleMethodService();
- MethodValidator mv = getValidator().unwrap(MethodValidator.class);
-
- Method personOp1 = service.getClass().getMethod("personOp1", new Class[]{Person.class});
-
- // Validate with invalid person
- Person p = new ExampleMethodService.Person();
- Set<?> results = mv.validateParameters(service.getClass(), personOp1, new Object[]{p});
- assertEquals("Expected 1 violation", 1, results.size());
-
- // validate with valid person
- p.name = "valid name";
- results = mv.validateParameters(service.getClass(), personOp1, new Object[]{p});
- assertTrue("No violations expected", results.isEmpty());
-
- // validate with null person
- results = mv.validateParameters(service.getClass(), personOp1, new Object[]{null});
- assertTrue("No violations expected", results.isEmpty());
- }
-
- public void testValidateNotNullValidParam() throws NoSuchMethodException {
- ExampleMethodService service = new ExampleMethodService();
- MethodValidator mv = getValidator().unwrap(MethodValidator.class);
-
- Method personOp2 = service.getClass().getMethod("personOp2", new Class[]{Person.class});
-
- // Validate with null person
- Set<?> results = mv.validateParameters(service.getClass(), personOp2, new Object[]{null});
- assertEquals("Expected 1 violation", 1, results.size());
-
- // Validate with invalid person
- Person p = new ExampleMethodService.Person();
- results = mv.validateParameters(service.getClass(), personOp2, new Object[]{p});
- assertEquals("Expected 1 violation", 1, results.size());
-
- // validate with valid person
- p.name = "valid name";
- results = mv.validateParameters(service.getClass(), personOp2, new Object[]{p});
- assertTrue("No violations expected", results.isEmpty());
- }
-
-
- /**
- * Validate a method defined in an interface using the following combinations:
- * <ul>
- * <li>impl.class + impl.method</li>
- * <li>interface.class + interface.method</li>
- * <li>impl.class + interface.method</li>
- * <li>interface.class + impl.method</li>
- * </ul>
- */
- public void testValidateImplementedMethod() throws NoSuchMethodException {
- UserMethodsImpl um = new UserMethodsImpl();
- MethodValidator mv = getValidator().unwrap(MethodValidator.class);
-
- Method classMethod = um.getClass().getMethod("findUser", new Class[]{String.class, String.class, Integer.class});
- Method ifaceMethod = UserMethods.class.getMethod("findUser", new Class[]{String.class, String.class, Integer.class});
-
- Set<?> results;
-
- // Validate from class (should create violations)
- results = mv.validateParameters(um.getClass(), classMethod, new Object[]{"", "valid", null });
- assertEquals("Invalid number of violations", 2, results.size());
-
- // Validate from interface
- results = mv.validateParameters(UserMethods.class, ifaceMethod, new Object[]{"", "valid", null });
- assertEquals("Invalid number of violations", 0, results.size());
-
- // Invalid combinations
- try {
- results = mv.validateParameters(UserMethods.class, classMethod, new Object[]{"", "valid", null });
- Assert.fail("Exception not thrown when validating interface.class + impl.method");
- } catch (ValidationException e) {
- // Expected
- }
- try {
- results = mv.validateParameters(um.getClass(), ifaceMethod, new Object[]{"", "valid", null });
- Assert.fail("Exception not thrown when validating impl.class + interface.method");
- } catch (ValidationException e) {
- // Expected
- }
-
- }
-
- public static interface UserMethods {
- void findUser(String param1, String param2, Integer param3);
- }
-
- public static class UserMethodsImpl implements UserMethods {
- // @Override - not allowed in 1.5 for Interface methods
- public void findUser( @Size( min=1 ) String param1, @NotNull String param2, @NotNull Integer param3) {
- return;
- }
- }
-
-
- private Validator getValidator() {
- return Validation
- .byProvider(ApacheValidationProvider.class)
- .configure()
- .addProperty(ApacheValidatorConfiguration.Properties.METABEAN_FACTORY_CLASSNAMES,
- MethodValidatorMetaBeanFactory.class.getName()).buildValidatorFactory().getValidator();
- }
-}
diff --git a/trunk/bval-jsr303/src/test/java/org/apache/bval/jsr303/groups/Billable.java b/trunk/bval-jsr303/src/test/java/org/apache/bval/jsr303/groups/Billable.java
deleted file mode 100644
index 4db8fa4..0000000
--- a/trunk/bval-jsr303/src/test/java/org/apache/bval/jsr303/groups/Billable.java
+++ /dev/null
@@ -1,26 +0,0 @@
-/*
- * 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.bval.jsr303.groups;
-
-/**
- * Validation group checking a user is billable.
- * Example 3.1. Definition of groups
- */
-public interface Billable {
-}
diff --git a/trunk/bval-jsr303/src/test/java/org/apache/bval/jsr303/groups/BillableCreditCard.java b/trunk/bval-jsr303/src/test/java/org/apache/bval/jsr303/groups/BillableCreditCard.java
deleted file mode 100644
index 11bebac..0000000
--- a/trunk/bval-jsr303/src/test/java/org/apache/bval/jsr303/groups/BillableCreditCard.java
+++ /dev/null
@@ -1,25 +0,0 @@
-/*
- * 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.bval.jsr303.groups;
-
-/**
- * Example 3.2. Assign groups to constraints.
- */
-public class BillableCreditCard {
-}
diff --git a/trunk/bval-jsr303/src/test/java/org/apache/bval/jsr303/groups/BillableUser.java b/trunk/bval-jsr303/src/test/java/org/apache/bval/jsr303/groups/BillableUser.java
deleted file mode 100644
index ddf3e57..0000000
--- a/trunk/bval-jsr303/src/test/java/org/apache/bval/jsr303/groups/BillableUser.java
+++ /dev/null
@@ -1,61 +0,0 @@
-/*
- * 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.bval.jsr303.groups;
-
-import javax.validation.constraints.NotNull;
-import javax.validation.groups.Default;
-
-/**
- * User representation
- * Example 3.2. Assign groups to constraints.
- */
-public class BillableUser {
- @NotNull
- private String firstname;
-
- @NotNull(groups = Default.class)
- private String lastname;
-
- @NotNull(groups = {Billable.class, BuyInOneClick.class})
- private BillableCreditCard defaultCreditCard;
-
- public String getFirstname() {
- return firstname;
- }
-
- public void setFirstname(String firstname) {
- this.firstname = firstname;
- }
-
- public String getLastname() {
- return lastname;
- }
-
- public void setLastname(String lastname) {
- this.lastname = lastname;
- }
-
- public BillableCreditCard getDefaultCreditCard() {
- return defaultCreditCard;
- }
-
- public void setDefaultCreditCard(BillableCreditCard defaultCreditCard) {
- this.defaultCreditCard = defaultCreditCard;
- }
-}
\ No newline at end of file
diff --git a/trunk/bval-jsr303/src/test/java/org/apache/bval/jsr303/groups/BuyInOneClick.java b/trunk/bval-jsr303/src/test/java/org/apache/bval/jsr303/groups/BuyInOneClick.java
deleted file mode 100644
index bd536bf..0000000
--- a/trunk/bval-jsr303/src/test/java/org/apache/bval/jsr303/groups/BuyInOneClick.java
+++ /dev/null
@@ -1,26 +0,0 @@
-/*
- * 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.bval.jsr303.groups;
-
-/**
- * customer can buy without any harrassing checking process.
- * Example 3.1. Definition of groups
- */
-public interface BuyInOneClick {
-}
diff --git a/trunk/bval-jsr303/src/test/java/org/apache/bval/jsr303/groups/CollectionValidationTest.java b/trunk/bval-jsr303/src/test/java/org/apache/bval/jsr303/groups/CollectionValidationTest.java
deleted file mode 100644
index d6e6ddf..0000000
--- a/trunk/bval-jsr303/src/test/java/org/apache/bval/jsr303/groups/CollectionValidationTest.java
+++ /dev/null
@@ -1,198 +0,0 @@
-/*
- * 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.bval.jsr303.groups;
-
-import java.util.ArrayList;
-import java.util.Locale;
-import java.util.Set;
-
-import javax.validation.ConstraintViolation;
-import javax.validation.Validation;
-import javax.validation.Validator;
-import javax.validation.ValidatorFactory;
-
-import junit.framework.TestCase;
-
-import org.apache.bval.jsr303.DefaultMessageInterpolator;
-import org.apache.bval.jsr303.example.Address;
-import org.apache.bval.jsr303.example.Author;
-import org.apache.bval.jsr303.example.Book;
-import org.apache.bval.jsr303.example.Country;
-import org.apache.bval.jsr303.example.Customer;
-import org.apache.bval.jsr303.example.Employee;
-import org.apache.bval.jsr303.example.Library;
-import org.apache.bval.jsr303.example.Person;
-import org.apache.bval.jsr303.util.TestUtils;
-
-/**
- * Description: <br/>
- */
-public class CollectionValidationTest extends TestCase {
- static ValidatorFactory factory;
-
- static {
- factory = Validation.buildDefaultValidatorFactory();
- ((DefaultMessageInterpolator) factory.getMessageInterpolator()).setLocale(Locale.ENGLISH);
- }
-
- /**
- * Validator instance to test
- */
- protected Validator validator;
-
- /**
- * {@inheritDoc}
- */
- @Override
- public void setUp() throws Exception {
- super.setUp();
- validator = createValidator();
- }
-
- /**
- * Create the validator instance.
- *
- * @return Validator
- */
- protected Validator createValidator() {
- return factory.getValidator();
- }
-
- public void testValidateList() {
- Author author = new Author();
- author.setFirstName("Peter");
- author.setLastName("Ford");
- author.setCompany("IBM");
- author.setAddresses(new ArrayList<Address>());
-
- Address adr1, adr2, adr3;
- adr1 = new Address();
- adr1.setCountry(new Country());
- adr1.getCountry().setName("Germany");
- adr1.setCity("Bonn");
- adr1.setAddressline1("Strasse 1");
-
- adr2 = new Address();
- adr2.setCountry(new Country());
- adr2.getCountry().setName("Cuba");
- adr2.setCity("Habana");
- adr2.setAddressline1("Calle 2");
-
- adr3 = new Address();
- adr3.setCountry(new Country());
- adr3.getCountry().setName("USA");
- adr3.setCity("San Francisco");
- adr3.setAddressline1("Street 3");
-
- author.getAddresses().add(adr1);
- author.getAddresses().add(adr2);
- author.getAddresses().add(adr3);
-
- Set<ConstraintViolation<Author>> violations;
-
- violations = validator.validate(author);
- assertEquals(0, violations.size());
-
- adr2.setCity(null); // violate not null
- adr3.setAddressline1(null); // violate not null
-
- violations = validator.validate(author);
- assertEquals(2, violations.size());
- assertNotNull(TestUtils.getViolation(violations, "addresses[1].city"));
- assertNotNull(TestUtils.getViolation(violations, "addresses[2].addressline1"));
- }
-
- public void testValidateMapAndRedefinedDefaultGroupOnNonRootBean() {
- Library lib = new Library();
- lib.setLibraryName("Leibnitz Bibliothek");
-
- Book book1, book2, book3;
-
- book1 = new Book();
- book1.setTitle("History of time");
- book1.setSubtitle("How it really works");
- Author hawking = new Author();
- hawking.setFirstName("Stephen");
- hawking.setFirstName("Hawking");
- hawking.setAddresses(new ArrayList<Address>(1));
- Address adr = new Address();
- adr.setAddressline1("Street 1");
- adr.setCity("London");
- adr.setCountry(new Country());
- adr.getCountry().setName("England");
- hawking.getAddresses().add(adr);
- book1.setAuthor(hawking);
-
- book2 = new Book();
- Author castro = new Author();
- castro.setFirstName("Fidel");
- castro.setLastName("Castro Ruz");
- book2.setAuthor(castro);
- book2.setTitle("My life");
-
- book3 = new Book();
- book3.setTitle("World best jokes");
- Author someone = new Author();
- someone.setFirstName("John");
- someone.setLastName("Do");
- book3.setAuthor(someone);
-
- lib.getTaggedBooks().put("science", book1);
- lib.getTaggedBooks().put("politics", book2);
- lib.getTaggedBooks().put("humor", book3);
-
- Set<ConstraintViolation<Library>> violations;
-
- violations = validator.validate(lib);
- assertTrue(violations.isEmpty());
-
- book2.setTitle(null);
- book3.getAuthor().setFirstName(""); // violate NotEmpty validation
- book1.getAuthor().getAddresses().get(0).setCity(null);
- /*
- * This, by the way, tests redefined default group sequence behavior on
- * non-root-beans (Library.Book)!!
- */
- violations = validator.validate(lib);
- assertEquals("redefined default group of Book not correctly validated from Library", 3, violations.size());
- assertNotNull(TestUtils.getViolation(violations, "taggedBooks[politics].title"));
- assertNotNull(TestUtils.getViolation(violations, "taggedBooks[humor].author.firstName"));
- assertNotNull(TestUtils.getViolation(violations, "taggedBooks[science].author.addresses[0].city"));
- }
-
- public void testValidateArray() {
- Library lib = new Library();
- lib.setLibraryName("Unibibliothek");
- lib.setPersons(new Person[3]);
- lib.getPersons()[0] = new Employee("Marcel", "Reich-Ranicki");
- lib.getPersons()[1] = new Employee("Elke", "Heidenreich");
- lib.getPersons()[2] = new Customer(); // not validated, because only
- // getEmployees() is @Valid
-
- Set<ConstraintViolation<Library>> violations;
- violations = validator.validate(lib);
- assertTrue(violations.isEmpty());
-
- ((Employee) lib.getPersons()[1]).setFirstName(""); // violate NotEmpty
- // constraint
- violations = validator.validate(lib);
- assertEquals(1, violations.size());
- assertNotNull(TestUtils.getViolation(violations, "employees[1].firstName"));
- }
-}
diff --git a/trunk/bval-jsr303/src/test/java/org/apache/bval/jsr303/groups/CyclicGroupSequence.java b/trunk/bval-jsr303/src/test/java/org/apache/bval/jsr303/groups/CyclicGroupSequence.java
deleted file mode 100644
index b2fa2bd..0000000
--- a/trunk/bval-jsr303/src/test/java/org/apache/bval/jsr303/groups/CyclicGroupSequence.java
+++ /dev/null
@@ -1,28 +0,0 @@
-/*
- * 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.bval.jsr303.groups;
-
-import javax.validation.GroupSequence;
-
-/**
- * Description: <br/>
- */
-@GroupSequence(value = CyclicGroupSequence.class)
-public interface CyclicGroupSequence {
-}
diff --git a/trunk/bval-jsr303/src/test/java/org/apache/bval/jsr303/groups/CyclicGroupSequence1.java b/trunk/bval-jsr303/src/test/java/org/apache/bval/jsr303/groups/CyclicGroupSequence1.java
deleted file mode 100644
index d976aab..0000000
--- a/trunk/bval-jsr303/src/test/java/org/apache/bval/jsr303/groups/CyclicGroupSequence1.java
+++ /dev/null
@@ -1,28 +0,0 @@
-/*
- * 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.bval.jsr303.groups;
-
-import javax.validation.GroupSequence;
-
-/**
- * Description: <br/>
- */
-@GroupSequence(value = CyclicGroupSequence2.class)
-public interface CyclicGroupSequence1 {
-}
\ No newline at end of file
diff --git a/trunk/bval-jsr303/src/test/java/org/apache/bval/jsr303/groups/CyclicGroupSequence2.java b/trunk/bval-jsr303/src/test/java/org/apache/bval/jsr303/groups/CyclicGroupSequence2.java
deleted file mode 100644
index fdd2d36..0000000
--- a/trunk/bval-jsr303/src/test/java/org/apache/bval/jsr303/groups/CyclicGroupSequence2.java
+++ /dev/null
@@ -1,29 +0,0 @@
-/*
- * 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.bval.jsr303.groups;
-
-import javax.validation.GroupSequence;
-
-/**
- * Description: <br/>
- */
-@GroupSequence( value = CyclicGroupSequence1.class)
-public interface CyclicGroupSequence2 {
-
-}
diff --git a/trunk/bval-jsr303/src/test/java/org/apache/bval/jsr303/groups/DefaultGroupSequenceTest.java b/trunk/bval-jsr303/src/test/java/org/apache/bval/jsr303/groups/DefaultGroupSequenceTest.java
deleted file mode 100644
index 4b195ab..0000000
--- a/trunk/bval-jsr303/src/test/java/org/apache/bval/jsr303/groups/DefaultGroupSequenceTest.java
+++ /dev/null
@@ -1,150 +0,0 @@
-/*
- * 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.bval.jsr303.groups;
-
-import junit.framework.TestCase;
-
-import javax.validation.GroupDefinitionException;
-import javax.validation.groups.Default;
-import java.util.ArrayList;
-import java.util.List;
-
-/**
- * @author Hardy Ferentschik
- * @author Roman Stumm
- */
-public class DefaultGroupSequenceTest extends TestCase {
- public void testAssertDefaultGroupSequenceIsExpandableWithDefaultAtEndOfSequence() {
- // create a dummy sequence
- Group a = new Group(GroupA.class);
- Group b = new Group(GroupB.class);
- Group c = new Group(GroupC.class);
- Group defaultGroup = new Group(Default.class);
- List<Group> sequence = new ArrayList<Group>();
- sequence.add(a);
- sequence.add(b);
- sequence.add(c);
- sequence.add(defaultGroup);
-
- Groups chain = new Groups();
- chain.insertSequence(sequence);
-
- // create test default sequence
- List<Group> defaultSequence = new ArrayList<Group>();
- defaultSequence.add(Group.DEFAULT);
- defaultSequence.add(new Group(GroupA.class));
- try {
- chain.assertDefaultGroupSequenceIsExpandable(defaultSequence);
- fail();
- } catch (GroupDefinitionException e) {
- // success
- }
-
- defaultSequence.clear();
- defaultSequence.add(new Group(GroupA.class));
- defaultSequence.add(new Group(Default.class));
- try {
- chain.assertDefaultGroupSequenceIsExpandable(defaultSequence);
- fail();
- } catch (GroupDefinitionException e) {
- // success
- }
-
- defaultSequence.clear();
- defaultSequence.add(Group.DEFAULT);
- defaultSequence.add(new Group(GroupC.class));
- try {
- chain.assertDefaultGroupSequenceIsExpandable(defaultSequence);
- fail();
- } catch (GroupDefinitionException e) {
- // success
- }
-
- defaultSequence.clear();
- defaultSequence.add(new Group(GroupC.class));
- defaultSequence.add(Group.DEFAULT);
- chain.assertDefaultGroupSequenceIsExpandable(defaultSequence);
- }
-
-
- public void testAssertDefaulGroupSequenceIsExpandableWithDefaultAtBeginningOfSequence() {
- // create a dummy sequence
- Group a = new Group(GroupA.class);
- Group b = new Group(GroupB.class);
- Group c = new Group(GroupC.class);
- Group defaultGroup = new Group(Default.class);
- List<Group> sequence = new ArrayList<Group>();
- sequence.add(defaultGroup);
- sequence.add(a);
- sequence.add(b);
- sequence.add(c);
-
- Groups chain = new Groups();
- chain.insertSequence(sequence);
-
- // create test default sequence
- List<Group> defaultSequence = new ArrayList<Group>();
- defaultSequence.add(Group.DEFAULT);
- defaultSequence.add(new Group(GroupA.class));
- chain.assertDefaultGroupSequenceIsExpandable(defaultSequence);
-
-
- defaultSequence.clear();
- defaultSequence.add(new Group(GroupA.class));
- defaultSequence.add(Group.DEFAULT);
- try {
- chain.assertDefaultGroupSequenceIsExpandable(defaultSequence);
- fail();
- } catch (GroupDefinitionException e) {
- // success
- }
-
- defaultSequence.clear();
- defaultSequence.add(Group.DEFAULT);
- defaultSequence.add(new Group(GroupC.class));
- try {
- chain.assertDefaultGroupSequenceIsExpandable(defaultSequence);
- fail();
- } catch (GroupDefinitionException e) {
- // success
- }
-
- defaultSequence.clear();
- defaultSequence.add(new Group(GroupC.class));
- defaultSequence.add(Group.DEFAULT);
- try {
- chain.assertDefaultGroupSequenceIsExpandable(defaultSequence);
- fail();
- } catch (GroupDefinitionException e) {
- // success
- }
- }
-}
-
-interface TestSequence {
-}
-
-interface GroupA {
-}
-
-interface GroupB {
-}
-
-interface GroupC {
-}
diff --git a/trunk/bval-jsr303/src/test/java/org/apache/bval/jsr303/groups/GClass1.java b/trunk/bval-jsr303/src/test/java/org/apache/bval/jsr303/groups/GClass1.java
deleted file mode 100644
index 35316f8..0000000
--- a/trunk/bval-jsr303/src/test/java/org/apache/bval/jsr303/groups/GClass1.java
+++ /dev/null
@@ -1,26 +0,0 @@
-/*
- * 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.bval.jsr303.groups;
-
-/**
- * Description: <br/>
- */
-public class GClass1 implements GInterface1 {
-
-}
diff --git a/trunk/bval-jsr303/src/test/java/org/apache/bval/jsr303/groups/GClass2.java b/trunk/bval-jsr303/src/test/java/org/apache/bval/jsr303/groups/GClass2.java
deleted file mode 100644
index ce1de51..0000000
--- a/trunk/bval-jsr303/src/test/java/org/apache/bval/jsr303/groups/GClass2.java
+++ /dev/null
@@ -1,28 +0,0 @@
-/*
- * 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.bval.jsr303.groups;
-
-import javax.validation.GroupSequence;
-
-/**
- * Description: <br/>
- */
-@GroupSequence({GClass1.class, GClass2.class})
-public class GClass2 extends GClass1 {
-}
diff --git a/trunk/bval-jsr303/src/test/java/org/apache/bval/jsr303/groups/GClass3.java b/trunk/bval-jsr303/src/test/java/org/apache/bval/jsr303/groups/GClass3.java
deleted file mode 100644
index 4eb92c8..0000000
--- a/trunk/bval-jsr303/src/test/java/org/apache/bval/jsr303/groups/GClass3.java
+++ /dev/null
@@ -1,28 +0,0 @@
-/*
- * 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.bval.jsr303.groups;
-
-import javax.validation.GroupSequence;
-
-/**
- * Description: <br/>
- */
-@GroupSequence({GClass3.class, GClass1.class})
-public class GClass3 {
-}
diff --git a/trunk/bval-jsr303/src/test/java/org/apache/bval/jsr303/groups/GInterface1.java b/trunk/bval-jsr303/src/test/java/org/apache/bval/jsr303/groups/GInterface1.java
deleted file mode 100644
index 0f7c3f9..0000000
--- a/trunk/bval-jsr303/src/test/java/org/apache/bval/jsr303/groups/GInterface1.java
+++ /dev/null
@@ -1,29 +0,0 @@
-/*
- * 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.bval.jsr303.groups;
-
-import javax.validation.GroupSequence;
-
-/**
- * Description: <br/>
- */
-@GroupSequence(GInterface1.class)
-public interface GInterface1 {
-
-}
diff --git a/trunk/bval-jsr303/src/test/java/org/apache/bval/jsr303/groups/GroupSequenceIsolationTest.java b/trunk/bval-jsr303/src/test/java/org/apache/bval/jsr303/groups/GroupSequenceIsolationTest.java
deleted file mode 100644
index 996a734..0000000
--- a/trunk/bval-jsr303/src/test/java/org/apache/bval/jsr303/groups/GroupSequenceIsolationTest.java
+++ /dev/null
@@ -1,166 +0,0 @@
-/*
- * 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.bval.jsr303.groups;
-
-import junit.framework.Assert;
-import junit.framework.TestCase;
-import org.apache.bval.jsr303.DefaultMessageInterpolator;
-
-import javax.validation.*;
-import javax.validation.constraints.NotNull;
-import javax.validation.groups.Default;
-import java.util.Locale;
-import java.util.Set;
-
-/**
- * Additional tests to check the correct processing of {@link GroupSequence}s
- * by the validator.
- *
- * @author Carlos Vara
- */
-public class GroupSequenceIsolationTest extends TestCase {
-
- static ValidatorFactory factory;
-
- static {
- factory = Validation.buildDefaultValidatorFactory();
- ((DefaultMessageInterpolator)factory.getMessageInterpolator()).setLocale(Locale.ENGLISH);
- }
-
- private Validator getValidator() {
- return factory.getValidator();
- }
-
-
- /**
- * When validating the {@link Default} group in a bean whose class doesn't
- * define a {@link GroupSequence}, all the classes in the hierarchy must be
- * checked for group sequence definitions and they must be evaluated in
- * order for the constraints defined on those classes.
- */
- public void testGroupSequencesInHierarchyClasses() {
- Validator validator = getValidator();
-
- HolderWithNoGS h = new HolderWithNoGS();
- Set<ConstraintViolation<HolderWithNoGS>> violations;
-
- violations = validator.validate(h);
- Assert.assertEquals("Unexpected number of violations", 2, violations.size());
- for ( ConstraintViolation<HolderWithNoGS> violation : violations ) {
- boolean good = violation.getPropertyPath().toString().equals("a1");
- good |= violation.getPropertyPath().toString().equals("b2");
- Assert.assertTrue("Wrong constraint", good);
- }
-
- h.a1 = "good";
- violations = validator.validate(h);
- Assert.assertEquals("Unexpected number of violations", 2, violations.size());
- for ( ConstraintViolation<HolderWithNoGS> violation : violations ) {
- boolean good = violation.getPropertyPath().toString().equals("a2");
- good |= violation.getPropertyPath().toString().equals("b2");
- Assert.assertTrue("Wrong constraint", good);
- }
-
- h.b2 = "good";
- violations = validator.validate(h);
- Assert.assertEquals("Unexpected number of violations", 2, violations.size());
- for ( ConstraintViolation<HolderWithNoGS> violation : violations ) {
- boolean good = violation.getPropertyPath().toString().equals("a2");
- good |= violation.getPropertyPath().toString().equals("b1");
- Assert.assertTrue("Wrong constraint", good);
- }
-
- h.b1 = "good";
- violations = validator.validate(h);
- Assert.assertEquals("Unexpected number of violations", 1, violations.size());
- for ( ConstraintViolation<HolderWithNoGS> violation : violations ) {
- boolean good = violation.getPropertyPath().toString().equals("a2");
- Assert.assertTrue("Wrong constraint", good);
- }
- }
-
- /**
- * When validating the {@link Default} group in a bean whose class defines
- * a group sequence, that group sequence is used for all the constraints.
- */
- public void testGroupSequenceOfBeanClass() {
- Validator validator = getValidator();
-
- HolderWithGS h = new HolderWithGS();
- Set<ConstraintViolation<HolderWithGS>> violations;
-
- violations = validator.validate(h);
- Assert.assertEquals("Unexpected number of violations", 1, violations.size());
- for ( ConstraintViolation<HolderWithGS> violation : violations ) {
- boolean good = violation.getPropertyPath().toString().equals("a1");
- Assert.assertTrue("Wrong constraint", good);
- }
-
- h.a1 = "good";
- violations = validator.validate(h);
- Assert.assertEquals("Unexpected number of violations", 2, violations.size());
- for ( ConstraintViolation<HolderWithGS> violation : violations ) {
- boolean good = violation.getPropertyPath().toString().equals("a2");
- good |= violation.getPropertyPath().toString().equals("b2");
- Assert.assertTrue("Wrong constraint", good);
- }
-
- h.a2 = "good";
- h.b2 = "good";
- violations = validator.validate(h);
- Assert.assertEquals("Unexpected number of violations", 1, violations.size());
- for ( ConstraintViolation<HolderWithGS> violation : violations ) {
- boolean good = violation.getPropertyPath().toString().equals("b1");
- Assert.assertTrue("Wrong constraint", good);
- }
- }
-
- @GroupSequence({GroupA1.class, A.class})
- public static class A {
- @NotNull(groups={GroupA1.class})
- public String a1;
- @NotNull
- public String a2;
- }
-
- public static interface GroupA1 {
- }
-
- @GroupSequence({B.class, GroupB1.class})
- public static class B extends A {
- @NotNull(groups={GroupB1.class})
- public String b1;
- @NotNull
- public String b2;
- }
-
- public static interface GroupB1 {
-
- }
-
- // No group sequence definition
- public static class HolderWithNoGS extends B {
-
- }
-
- @GroupSequence({GroupA1.class, HolderWithGS.class, GroupB1.class})
- public static class HolderWithGS extends B {
-
- }
-}
diff --git a/trunk/bval-jsr303/src/test/java/org/apache/bval/jsr303/groups/GroupSequenceTest.java b/trunk/bval-jsr303/src/test/java/org/apache/bval/jsr303/groups/GroupSequenceTest.java
deleted file mode 100644
index 0afcb38..0000000
--- a/trunk/bval-jsr303/src/test/java/org/apache/bval/jsr303/groups/GroupSequenceTest.java
+++ /dev/null
@@ -1,211 +0,0 @@
-/*
- * 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.bval.jsr303.groups;
-
-import junit.framework.Assert;
-import junit.framework.TestCase;
-import org.apache.bval.jsr303.ApacheValidatorFactory;
-import org.apache.bval.jsr303.DefaultMessageInterpolator;
-import org.apache.bval.jsr303.Jsr303Features;
-import org.apache.bval.jsr303.example.*;
-import org.apache.bval.jsr303.util.TestUtils;
-import org.apache.bval.model.MetaBean;
-
-import javax.validation.*;
-import javax.validation.constraints.NotNull;
-import java.util.List;
-import java.util.Locale;
-import java.util.Set;
-
-/**
- * Description: test of group sequence behavior<br/>
- */
-public class GroupSequenceTest extends TestCase {
-
- static ValidatorFactory factory;
-
- static {
- factory = Validation.buildDefaultValidatorFactory();
- ((DefaultMessageInterpolator)factory.getMessageInterpolator()).setLocale(Locale.ENGLISH);
- }
-
- private Validator getValidator() {
- return factory.getValidator();
- }
-
-
- public void testGroupSequence1() {
- MetaBean metaBean =
- ApacheValidatorFactory.getDefault().usingContext().getMetaBeanFinder()
- .findForClass(GInterface1.class);
- List<Group> gseq = metaBean.getFeature(Jsr303Features.Bean.GROUP_SEQUENCE);
- Assert.assertNotNull(gseq);
- Assert.assertEquals(1, gseq.size());
- Assert.assertEquals(Group.DEFAULT, gseq.get(0));
- }
-
- public void testGroupSequence2() {
- MetaBean metaBean =
- ApacheValidatorFactory.getDefault().usingContext().getMetaBeanFinder()
- .findForClass(GClass1.class);
- List<Group> gseq = metaBean.getFeature(Jsr303Features.Bean.GROUP_SEQUENCE);
- Assert.assertNotNull(gseq);
- Assert.assertEquals(1, gseq.size());
- Assert.assertEquals(Group.DEFAULT, gseq.get(0));
- }
-
- public void testGroupSequence3() {
- MetaBean metaBean =
- ApacheValidatorFactory.getDefault().usingContext().getMetaBeanFinder()
- .findForClass(GClass2.class);
- List<Group> gseq = metaBean.getFeature(Jsr303Features.Bean.GROUP_SEQUENCE);
- Assert.assertNotNull(gseq);
- Assert.assertEquals(2, gseq.size());
- Assert.assertEquals(new Group(GClass1.class), gseq.get(0));
- Assert.assertEquals(Group.DEFAULT, gseq.get(1));
- }
-
- public void testGroupSequence4() {
- MetaBean metaBean =
- ApacheValidatorFactory.getDefault().usingContext().getMetaBeanFinder()
- .findForClass(GClass3.class);
- List<Group> gseq = metaBean.getFeature(Jsr303Features.Bean.GROUP_SEQUENCE);
- Assert.assertNotNull(gseq);
- Assert.assertEquals(2, gseq.size());
- Assert.assertEquals(Group.DEFAULT, gseq.get(0));
- Assert.assertEquals(new Group(GClass1.class), gseq.get(1));
- }
-
- public void testGroups() {
- Validator validator = getValidator();
-
- Author author = new Author();
- author.setLastName("");
- author.setFirstName("");
- Book book = new Book();
- book.setTitle("");
- book.setAuthor(author);
-
- Set<ConstraintViolation<Book>> constraintViolations =
- validator.validate(book, First.class, Second.class, Last.class);
- assertEquals("Wrong number of constraints", 3, constraintViolations.size());
- assertNotNull(TestUtils.getViolation(constraintViolations, "title"));
- assertNotNull(TestUtils.getViolation(constraintViolations, "author.firstName"));
- assertNotNull(TestUtils.getViolation(constraintViolations, "author.lastName"));
-
- author.setFirstName("Gavin");
- author.setLastName("King");
-
- constraintViolations = validator.validate(book, First.class, Second.class, Last.class);
- ConstraintViolation<?> constraintViolation = constraintViolations.iterator().next();
- assertEquals(1, constraintViolations.size());
- assertEquals("may not be empty", constraintViolation.getMessage());
- assertEquals(book, constraintViolation.getRootBean());
- assertEquals(book.getTitle(), constraintViolation.getInvalidValue());
- assertEquals("title", constraintViolation.getPropertyPath().toString());
-
- book.setTitle("My fault");
- book.setSubtitle("confessions of a president - a book for a nice price");
-
- constraintViolations = validator.validate(book, First.class, Second.class, Last.class);
- assertEquals(1, constraintViolations.size());
- constraintViolation = constraintViolations.iterator().next();
- assertEquals("size must be between 0 and 30", constraintViolation.getMessage());
- assertEquals(book, constraintViolation.getRootBean());
- assertEquals(book.getSubtitle(), constraintViolation.getInvalidValue());
- assertEquals("subtitle", constraintViolation.getPropertyPath().toString());
-
- book.setSubtitle("Capitalism in crisis");
- author.setCompany("1234567890ß9876543212578909876542245678987432");
-
- constraintViolations = validator.validate(book);
- constraintViolation = constraintViolations.iterator().next();
- assertEquals(1, constraintViolations.size());
- assertEquals("size must be between 0 and 40", constraintViolation.getMessage());
- assertEquals(book, constraintViolation.getRootBean());
- assertEquals(author.getCompany(), constraintViolation.getInvalidValue());
- assertEquals("author.company", constraintViolation.getPropertyPath().toString());
-
- author.setCompany("apache");
-
- constraintViolations = validator.validate(book, First.class, Second.class, Last.class);
- assertEquals(0, constraintViolations.size());
- }
-
- public void testGroupSequence() {
- Validator validator = getValidator();
-
- Author author = new Author();
- author.setLastName("");
- author.setFirstName("");
- Book book = new Book();
- book.setAuthor(author);
-
- Set<ConstraintViolation<Book>> constraintViolations =
- validator.validate(book, Book.All.class);
- assertEquals(2, constraintViolations.size());
-
- author.setFirstName("Kelvin");
- author.setLastName("Cline");
-
- constraintViolations = validator.validate(book, Book.All.class);
- ConstraintViolation<?> constraintViolation = constraintViolations.iterator().next();
- assertEquals(1, constraintViolations.size());
- assertEquals("may not be null", constraintViolation.getMessage());
- assertEquals(book, constraintViolation.getRootBean());
- assertEquals(book.getTitle(), constraintViolation.getInvalidValue());
- assertEquals("title", constraintViolation.getPropertyPath().toString());
-
- book.setTitle("247307892430798789024389798789");
- book.setSubtitle("f43u rlök fjöq3liu opiur ölw3kj rölkj d");
-
- constraintViolations = validator.validate(book, Book.All.class);
- assertEquals(1, constraintViolations.size());
- }
-
-
- /**
- * Check that when there is one constraint failure in one of the groups in
- * a sequence, validation stops.
- * JSR-303: 3.4.3
- */
- public void testValidationStopsWhenFailuresOnGroup() {
- Validator validator = getValidator();
-
- // Validate Dummy with its redefined Default group
- Set<ConstraintViolation<Dummy>> violations = validator.validate(new Dummy());
- assertEquals("Only 1 violation expected", 1, violations.size());
- ConstraintViolation<Dummy> violation = violations.iterator().next();
- assertEquals("Group1 should be evaluated first", "field1", violation.getPropertyPath().toString());
- }
-
- @GroupSequence({Dummy.Group1.class, Dummy.class})
- public static class Dummy {
-
- @NotNull(groups=Group1.class)
- public String field1;
-
- @NotNull
- public String field2;
-
- interface Group1 {
- }
- }
-
-}
diff --git a/trunk/bval-jsr303/src/test/java/org/apache/bval/jsr303/groups/GroupValidationTest.java b/trunk/bval-jsr303/src/test/java/org/apache/bval/jsr303/groups/GroupValidationTest.java
deleted file mode 100644
index 79712ba..0000000
--- a/trunk/bval-jsr303/src/test/java/org/apache/bval/jsr303/groups/GroupValidationTest.java
+++ /dev/null
@@ -1,83 +0,0 @@
-/*
- * 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.bval.jsr303.groups;
-
-import junit.framework.TestCase;
-import org.apache.bval.jsr303.ApacheValidatorFactory;
-import org.apache.bval.jsr303.util.TestUtils;
-
-import javax.validation.ConstraintViolation;
-import javax.validation.Validator;
-import java.util.Set;
-
-/**
- * Description: test features from spec chapter 3.4 group and group sequence<br/>
- */
-public class GroupValidationTest extends TestCase {
- private Validator validator;
-
- protected void setUp() {
- validator = ApacheValidatorFactory.getDefault().getValidator();
- }
-
- /**
- * test spec: @NotNull on firstname and on lastname are validated when
- * the Default group is validated.
- */
- public void testValidateFirstNameLastNameWithDefaultGroup() {
- BillableUser user = new BillableUser();
-
- Set<ConstraintViolation<BillableUser>> violations = validator.validate(user);
- assertEquals(2, violations.size());
- ConstraintViolation<?> violation = TestUtils.getViolation(violations, "firstname");
- assertNotNull(violation);
- assertEquals(user, violation.getRootBean());
- violation = TestUtils.getViolation(violations, "lastname");
- assertNotNull(violation);
- assertEquals(user, violation.getRootBean());
- }
-
- /**
- * test spec: @NotNull is checked on defaultCreditCard when either the
- * Billable or BuyInOneClick group is validated.
- */
- public void testValidateDefaultCreditCardInBillableGroup() {
- BillableUser user = new BillableUser();
-
- Set<ConstraintViolation<BillableUser>> violations = validator.validate(user,
- Billable.class);
- assertEquals(1, violations.size());
- ConstraintViolation<?> violation = TestUtils.getViolation(violations, "defaultCreditCard");
- assertNotNull(violation);
- assertEquals(user, violation.getRootBean());
- }
-
- public void testValidateDefaultCreditCardInBillableAndByInOneClickGroup() {
- BillableUser user = new BillableUser();
-
- Set<ConstraintViolation<BillableUser>> violations = validator.validate(user,
- BuyInOneClick.class, Billable.class);
- assertEquals(1, violations.size());
- ConstraintViolation<?> violation = TestUtils.getViolation(violations, "defaultCreditCard");
- assertNotNull(violation);
- assertEquals(user, violation.getRootBean());
- }
-
-
-}
diff --git a/trunk/bval-jsr303/src/test/java/org/apache/bval/jsr303/groups/GroupsComputerTest.java b/trunk/bval-jsr303/src/test/java/org/apache/bval/jsr303/groups/GroupsComputerTest.java
deleted file mode 100644
index d393812..0000000
--- a/trunk/bval-jsr303/src/test/java/org/apache/bval/jsr303/groups/GroupsComputerTest.java
+++ /dev/null
@@ -1,148 +0,0 @@
-/*
- * 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.bval.jsr303.groups;
-
-import junit.framework.Test;
-import junit.framework.TestCase;
-import junit.framework.TestSuite;
-import org.apache.bval.jsr303.example.Address;
-import org.apache.bval.jsr303.example.First;
-import org.apache.bval.jsr303.example.Last;
-import org.apache.bval.jsr303.example.Second;
-
-import javax.validation.GroupDefinitionException;
-import javax.validation.ValidationException;
-import javax.validation.groups.Default;
-import java.util.HashSet;
-import java.util.Iterator;
-import java.util.List;
-import java.util.Set;
-
-/**
- * GroupListComputer Tester.
- *
- * @author <Authors name>
- * @version 1.0
- * @since <pre>04/09/2009</pre>
- */
-public class GroupsComputerTest extends TestCase {
- GroupsComputer groupsComputer;
-
- public GroupsComputerTest(String name) {
- super(name);
- }
-
- public void setUp() throws Exception {
- super.setUp();
- groupsComputer = new GroupsComputer();
- }
-
- public void tearDown() throws Exception {
- super.tearDown();
- }
-
- public static Test suite() {
- return new TestSuite(GroupsComputerTest.class);
- }
-
- public void testComputeGroupsNotAnInterface() {
- Set<Class<?>> groups = new HashSet<Class<?>>();
- groups.add(String.class);
- try {
- groupsComputer.computeGroups(groups);
- fail();
- } catch (ValidationException ex) {
-
- }
- }
-
- public void testGroupChainForNull() {
- try {
- groupsComputer.computeGroups((Class<?>[]) null);
- fail();
- } catch (IllegalArgumentException ex) {
-
- }
- }
-
- public void testGroupChainForEmptySet() {
- try {
- groupsComputer.computeGroups(new HashSet<Class<?>>());
- fail();
- } catch (IllegalArgumentException ex) {
-
- }
- }
-
- public void testCyclicGroupSequences() {
- try {
- Set<Class<?>> groups = new HashSet<Class<?>>();
- groups.add(CyclicGroupSequence1.class);
- groupsComputer.computeGroups(groups);
- fail();
- } catch (GroupDefinitionException ex) {
-
- }
- }
-
- public void testCyclicGroupSequence() {
- try {
- Set<Class<?>> groups = new HashSet<Class<?>>();
- groups.add(CyclicGroupSequence.class);
- groupsComputer.computeGroups(groups);
- fail();
- } catch (GroupDefinitionException ex) {
-
- }
- }
-
- public void testGroupDuplicates() {
- Set<Class<?>> groups = new HashSet<Class<?>>();
- groups.add(First.class);
- groups.add(Second.class);
- groups.add(Last.class);
- Groups chain = groupsComputer.computeGroups(groups);
- assertEquals(3, chain.groups.size());
-
- groups.clear();
- groups.add(First.class);
- groups.add(First.class);
- chain = groupsComputer.computeGroups(groups);
- assertEquals(1, chain.groups.size());
-
- groups.clear();
- groups.add(First.class);
- groups.add(Last.class);
- groups.add(First.class);
- chain = groupsComputer.computeGroups(groups);
- assertEquals(2, chain.groups.size());
- }
-
-
- public void testSequenceResolution() {
- Set<Class<?>> groups = new HashSet<Class<?>>();
- groups.add(Address.Complete.class);
- Groups chain = groupsComputer.computeGroups(groups);
- Iterator<List<Group>> sequences = chain.getSequences().iterator();
- List<Group> sequence = sequences.next();
-
- assertEquals(Default.class, sequence.get(0).getGroup());
- assertEquals(Address.HighLevelCoherence.class, sequence.get(1).getGroup());
- }
-}
diff --git a/trunk/bval-jsr303/src/test/java/org/apache/bval/jsr303/groups/implicit/Auditable.java b/trunk/bval-jsr303/src/test/java/org/apache/bval/jsr303/groups/implicit/Auditable.java
deleted file mode 100644
index 75b0dca..0000000
--- a/trunk/bval-jsr303/src/test/java/org/apache/bval/jsr303/groups/implicit/Auditable.java
+++ /dev/null
@@ -1,33 +0,0 @@
-/*
- * 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.bval.jsr303.groups.implicit;
-
-import javax.validation.constraints.NotNull;
-
-/**
- * Auditable object contract.
- * Example 3.7. Example of interface / group hosting constraints
- */
-public interface Auditable {
- @NotNull String getCreationDate();
- @NotNull
- String getLastUpdate();
- @NotNull String getLastModifier();
- @NotNull String getLastReader();
-}
diff --git a/trunk/bval-jsr303/src/test/java/org/apache/bval/jsr303/groups/implicit/ImplicitGroupingTest.java b/trunk/bval-jsr303/src/test/java/org/apache/bval/jsr303/groups/implicit/ImplicitGroupingTest.java
deleted file mode 100644
index c91afc5..0000000
--- a/trunk/bval-jsr303/src/test/java/org/apache/bval/jsr303/groups/implicit/ImplicitGroupingTest.java
+++ /dev/null
@@ -1,62 +0,0 @@
-/*
- * 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.bval.jsr303.groups.implicit;
-
-import junit.framework.TestCase;
-import org.apache.bval.jsr303.ApacheValidatorFactory;
-import org.apache.bval.jsr303.util.TestUtils;
-
-import javax.validation.ConstraintViolation;
-import javax.validation.Validator;
-import java.util.Set;
-
-/**
- * Description: test spec chapter 3.4.4. Implicit grouping<br/>
- */
-public class ImplicitGroupingTest extends TestCase {
- private Validator validator;
-
- protected void setUp() {
- validator = ApacheValidatorFactory.getDefault().getValidator();
- }
-
- public void testValidateImplicitGrouping() {
- Order order = new Order();
- // When an Order object is validated on the Default group, ...
- Set<ConstraintViolation<Order>> violations = validator.validate(order);
- assertNotNull(TestUtils.getViolation(violations, "creationDate"));
- assertNotNull(TestUtils.getViolation(violations, "lastUpdate"));
- assertNotNull(TestUtils.getViolation(violations, "lastModifier"));
- assertNotNull(TestUtils.getViolation(violations, "lastReader"));
- assertNotNull(TestUtils.getViolation(violations, "orderNumber"));
- assertEquals(5, violations.size());
-
- // When an Order object is validated on the Auditable group, ...
-
- /* Only the constraints present on Auditable (and any of its super interfaces)
- and belonging to the Default group are validated
- when the group Auditable is requested. */
- violations = validator.validate(order, Auditable.class);
- assertEquals("Implicit grouping not correctly implemented", 4, violations.size());
- assertNotNull(TestUtils.getViolation(violations, "creationDate"));
- assertNotNull(TestUtils.getViolation(violations, "lastUpdate"));
- assertNotNull(TestUtils.getViolation(violations, "lastModifier"));
- assertNotNull(TestUtils.getViolation(violations, "lastReader"));
- }
-}
diff --git a/trunk/bval-jsr303/src/test/java/org/apache/bval/jsr303/groups/implicit/Order.java b/trunk/bval-jsr303/src/test/java/org/apache/bval/jsr303/groups/implicit/Order.java
deleted file mode 100644
index fb6e7f8..0000000
--- a/trunk/bval-jsr303/src/test/java/org/apache/bval/jsr303/groups/implicit/Order.java
+++ /dev/null
@@ -1,76 +0,0 @@
-/*
- * 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.bval.jsr303.groups.implicit;
-
-import javax.validation.constraints.NotNull;
-import javax.validation.constraints.Size;
-
-/**
- * Represents an order in the system
- */
-public class Order implements Auditable {
- private String creationDate;
- private String lastUpdate;
- private String lastModifier;
- private String lastReader;
-
- private String orderNumber;
-
- public String getCreationDate() {
- return this.creationDate;
- }
-
- public String getLastUpdate() {
- return this.lastUpdate;
- }
-
- public String getLastModifier() {
- return this.lastModifier;
- }
-
- public String getLastReader() {
- return this.lastReader;
- }
-
- @NotNull
- @Size(min=10, max=10)
- public String getOrderNumber() {
- return this.orderNumber;
- }
-
- public void setCreationDate(String creationDate) {
- this.creationDate = creationDate;
- }
-
- public void setLastUpdate(String lastUpdate) {
- this.lastUpdate = lastUpdate;
- }
-
- public void setLastModifier(String lastModifier) {
- this.lastModifier = lastModifier;
- }
-
- public void setLastReader(String lastReader) {
- this.lastReader = lastReader;
- }
-
- public void setOrderNumber(String orderNumber) {
- this.orderNumber = orderNumber;
- }
-}
\ No newline at end of file
diff --git a/trunk/bval-jsr303/src/test/java/org/apache/bval/jsr303/groups/inheritance/BillableUser.java b/trunk/bval-jsr303/src/test/java/org/apache/bval/jsr303/groups/inheritance/BillableUser.java
deleted file mode 100644
index 04e9af5..0000000
--- a/trunk/bval-jsr303/src/test/java/org/apache/bval/jsr303/groups/inheritance/BillableUser.java
+++ /dev/null
@@ -1,64 +0,0 @@
-/*
- * 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.bval.jsr303.groups.inheritance;
-
-
-import org.apache.bval.jsr303.groups.Billable;
-import org.apache.bval.jsr303.groups.BillableCreditCard;
-
-import javax.validation.constraints.NotNull;
-import javax.validation.groups.Default;
-
-/**
- * Description: <br/>
- */
-public class BillableUser {
- @NotNull
- private String firstname;
-
- @NotNull(groups = Default.class)
- private String lastname;
-
- @NotNull(groups = {Billable.class})
- private BillableCreditCard defaultCreditCard;
-
- public String getFirstname() {
- return firstname;
- }
-
- public void setFirstname(String firstname) {
- this.firstname = firstname;
- }
-
- public String getLastname() {
- return lastname;
- }
-
- public void setLastname(String lastname) {
- this.lastname = lastname;
- }
-
- public BillableCreditCard getDefaultCreditCard() {
- return defaultCreditCard;
- }
-
- public void setDefaultCreditCard(BillableCreditCard defaultCreditCard) {
- this.defaultCreditCard = defaultCreditCard;
- }
-}
\ No newline at end of file
diff --git a/trunk/bval-jsr303/src/test/java/org/apache/bval/jsr303/groups/inheritance/BuyInOneClick.java b/trunk/bval-jsr303/src/test/java/org/apache/bval/jsr303/groups/inheritance/BuyInOneClick.java
deleted file mode 100644
index 744ad59..0000000
--- a/trunk/bval-jsr303/src/test/java/org/apache/bval/jsr303/groups/inheritance/BuyInOneClick.java
+++ /dev/null
@@ -1,31 +0,0 @@
-/*
- * 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.bval.jsr303.groups.inheritance;
-
-
-import org.apache.bval.jsr303.groups.Billable;
-
-import javax.validation.groups.Default;
-
-/**
- * Customer can buy without harrassing checking process.
- * spec: Example 3.3. Groups can inherit other groups
- */
-public interface BuyInOneClick extends Default, Billable {
-}
diff --git a/trunk/bval-jsr303/src/test/java/org/apache/bval/jsr303/groups/inheritance/GroupInheritanceTest.java b/trunk/bval-jsr303/src/test/java/org/apache/bval/jsr303/groups/inheritance/GroupInheritanceTest.java
deleted file mode 100644
index 01a81b2..0000000
--- a/trunk/bval-jsr303/src/test/java/org/apache/bval/jsr303/groups/inheritance/GroupInheritanceTest.java
+++ /dev/null
@@ -1,56 +0,0 @@
-/*
- * 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.bval.jsr303.groups.inheritance;
-
-import junit.framework.TestCase;
-import org.apache.bval.jsr303.ApacheValidatorFactory;
-import org.apache.bval.jsr303.util.TestUtils;
-
-import javax.validation.ConstraintViolation;
-import javax.validation.Validator;
-import java.util.Set;
-
-/**
- * Description: <br/>
- */
-public class GroupInheritanceTest extends TestCase {
- private Validator validator;
-
- protected void setUp() {
- validator = ApacheValidatorFactory.getDefault().getValidator();
- }
-
- /**
- * validating the group BuyInOneClick will lead to the following constraints checking:
- *<pre>
- * * @NotNull on firstname and lastname
- * * @NotNull on defaultCreditCard</pre>
- * because Default and Billable are superinterfaces of BuyInOneClick.
- */
- public void testValidGroupBuyInOneClick() {
- BillableUser user = new BillableUser();
-
- Set<ConstraintViolation<BillableUser>> violations =
- validator.validate(user, BuyInOneClick.class);
- assertEquals(3, violations.size());
- assertNotNull(TestUtils.getViolation(violations, "firstname"));
- assertNotNull(TestUtils.getViolation(violations, "lastname"));
- assertNotNull(TestUtils.getViolation(violations, "defaultCreditCard"));
- }
-}
diff --git a/trunk/bval-jsr303/src/test/java/org/apache/bval/jsr303/groups/redefining/Address.java b/trunk/bval-jsr303/src/test/java/org/apache/bval/jsr303/groups/redefining/Address.java
deleted file mode 100644
index e20cade..0000000
--- a/trunk/bval-jsr303/src/test/java/org/apache/bval/jsr303/groups/redefining/Address.java
+++ /dev/null
@@ -1,84 +0,0 @@
-/*
- * 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.bval.jsr303.groups.redefining;
-
-
-import org.apache.bval.constraints.ZipCodeCityCoherence;
-import org.apache.bval.jsr303.example.ZipCodeCityCarrier;
-
-import javax.validation.GroupSequence;
-import javax.validation.constraints.NotNull;
-import javax.validation.constraints.Size;
-
-/**
- * Example 3.6. Redefining Default group for Address:
- * To redefine Default for a class, place a @GroupSequence annotation on the class ;
- * this sequence expresses the sequence of groups that does
- * substitute Default for this class.
- */
-@GroupSequence({Address.class, Address.HighLevelCoherence.class, Address.ExtraCareful.class })
-@ZipCodeCityCoherence(groups = Address.HighLevelCoherence.class)
-public class Address implements ZipCodeCityCarrier {
-
- /**
- * check coherence on the overall object
- * Needs basic checking to be green first
- */
- public interface HighLevelCoherence {}
-
- /**
- * Extra-careful validation group.
- */
- public interface ExtraCareful {}
-
- @NotNull
- @Size(max = 50, min = 1, groups = ExtraCareful.class)
- private String street1;
-
- @NotNull
- private String zipCode;
-
- @NotNull
- @Size(max = 30)
- private String city;
-
- public String getStreet1() {
- return street1;
- }
-
- public void setStreet1(String street1) {
- this.street1 = street1;
- }
-
- public String getZipCode() {
- return zipCode;
- }
-
- public void setZipCode(String zipCode) {
- this.zipCode = zipCode;
- }
-
- public String getCity() {
- return city;
- }
-
- public void setCity(String city) {
- this.city = city;
- }
-}
\ No newline at end of file
diff --git a/trunk/bval-jsr303/src/test/java/org/apache/bval/jsr303/groups/redefining/InvalidRedefinedDefaultGroupAddress.java b/trunk/bval-jsr303/src/test/java/org/apache/bval/jsr303/groups/redefining/InvalidRedefinedDefaultGroupAddress.java
deleted file mode 100644
index 162a811..0000000
--- a/trunk/bval-jsr303/src/test/java/org/apache/bval/jsr303/groups/redefining/InvalidRedefinedDefaultGroupAddress.java
+++ /dev/null
@@ -1,46 +0,0 @@
-/*
- * 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.bval.jsr303.groups.redefining;
-
-import javax.validation.GroupSequence;
-import javax.validation.constraints.NotNull;
-
-
-/**
- * If a @GroupSequence redefining the Default group for a class A does not
- * contain the group A, a GroupDefinitionException is raised when the class is
- * validated or when its metadata is requested.
- */
-@GroupSequence({Address.class, Address.HighLevelCoherence.class})
-public class InvalidRedefinedDefaultGroupAddress {
- @SuppressWarnings("unused")
- @NotNull(groups = Address.HighLevelCoherence.class)
- private String street;
-
- @SuppressWarnings("unused")
- @NotNull
- private String city;
-
- /**
- * check coherence on the overall object
- * Needs basic checking to be green first
- */
- public interface HighLevelCoherence {}
-
-}
diff --git a/trunk/bval-jsr303/src/test/java/org/apache/bval/jsr303/groups/redefining/RedefiningDefaultGroupTest.java b/trunk/bval-jsr303/src/test/java/org/apache/bval/jsr303/groups/redefining/RedefiningDefaultGroupTest.java
deleted file mode 100644
index 9295985..0000000
--- a/trunk/bval-jsr303/src/test/java/org/apache/bval/jsr303/groups/redefining/RedefiningDefaultGroupTest.java
+++ /dev/null
@@ -1,103 +0,0 @@
-/*
- * 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.bval.jsr303.groups.redefining;
-
-import junit.framework.TestCase;
-import org.apache.bval.jsr303.ApacheValidatorFactory;
-import org.apache.bval.jsr303.util.TestUtils;
-
-import javax.validation.ConstraintViolation;
-import javax.validation.GroupDefinitionException;
-import javax.validation.Validator;
-import java.util.Set;
-
-/**
- * Description: test Redefining the Default group for a class (spec. chapter 3.4.3)<br/>
- */
-public class RedefiningDefaultGroupTest extends TestCase {
- private Validator validator;
-
- protected void setUp() {
- validator = ApacheValidatorFactory.getDefault().getValidator();
- }
-
- /**
- * when an address object is validated for the group Default,
- * all constraints belonging to the group Default and hosted on Address are evaluated
- */
- public void testValidateDefaultGroup() {
- Address address = new Address();
- Set<ConstraintViolation<Address>> violations = validator.validate(address);
- assertEquals(3, violations.size());
- assertNotNull(TestUtils.getViolation(violations, "street1"));
- assertNotNull(TestUtils.getViolation(violations, "zipCode"));
- assertNotNull(TestUtils.getViolation(violations, "city"));
-
- address.setStreet1("Elmstreet");
- address.setZipCode("1234");
- address.setCity("Gotham City");
- violations = validator.validate(address);
- assertTrue(violations.isEmpty());
-
- violations = validator.validate(address, Address.HighLevelCoherence.class);
- assertEquals(0, violations.size());
-
- address.setCity("error");
- violations = validator.validate(address, Address.HighLevelCoherence.class);
- assertEquals(1, violations.size());
-
- /**
- * If none fails, all HighLevelCoherence constraints present on Address are evaluated.
- *
- * In other words, when validating the Default group for Address,
- * the group sequence defined on the Address class is used.
- */
- violations = validator.validate(address);
- assertEquals(
- "redefined default group for Address must also validate HighLevelCoherence",
- 1, violations.size());
- }
-
- public void testValidateProperty() {
- Address address = new Address();
- address.setStreet1("");
- Set<ConstraintViolation<Address>> violations = validator.validateProperty(address, "street1");
- //prove that ExtraCareful group was validated:
- assertEquals(1, violations.size());
- assertNotNull(TestUtils.getViolation(violations, "street1"));
- }
-
- public void testValidateValue() {
- Set<ConstraintViolation<Address>> violations = validator.validateValue(Address.class, "street1", "");
- //prove that ExtraCareful group was validated:
- assertEquals(1, violations.size());
- assertNotNull(TestUtils.getViolation(violations, "street1"));
- }
-
- public void testRaiseGroupDefinitionException() {
- InvalidRedefinedDefaultGroupAddress address =
- new InvalidRedefinedDefaultGroupAddress();
- try {
- validator.validate(address);
- fail();
- } catch (GroupDefinitionException ex) {
-
- }
- }
-}
diff --git a/trunk/bval-jsr303/src/test/java/org/apache/bval/jsr303/util/EnumerationConverterTestCase.java b/trunk/bval-jsr303/src/test/java/org/apache/bval/jsr303/util/EnumerationConverterTestCase.java
deleted file mode 100644
index 7bc3ecb..0000000
--- a/trunk/bval-jsr303/src/test/java/org/apache/bval/jsr303/util/EnumerationConverterTestCase.java
+++ /dev/null
@@ -1,50 +0,0 @@
-/*
- * 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.bval.jsr303.util;
-
-import junit.framework.Test;
-import junit.framework.TestCase;
-import junit.framework.TestSuite;
-import org.apache.commons.beanutils.Converter;
-
-/**
- * EnumerationConverter tester.
- *
- * $Id$
- */
-public final class EnumerationConverterTestCase extends TestCase {
-
- public EnumerationConverterTestCase(String name) {
- super(name);
- }
-
- public void testEnum() {
- Converter converter = EnumerationConverter.getInstance();
-
- Thread.State expected = Thread.State.TERMINATED;
- Thread.State actual = (Thread.State) converter.convert(Thread.State.class,
- Thread.State.TERMINATED.name());
- assertEquals(expected, actual);
- }
-
- public static Test suite() {
- return new TestSuite(EnumerationConverterTestCase.class);
- }
-
-}
diff --git a/trunk/bval-jsr303/src/test/java/org/apache/bval/jsr303/util/PathImplTest.java b/trunk/bval-jsr303/src/test/java/org/apache/bval/jsr303/util/PathImplTest.java
deleted file mode 100644
index fbd60fe..0000000
--- a/trunk/bval-jsr303/src/test/java/org/apache/bval/jsr303/util/PathImplTest.java
+++ /dev/null
@@ -1,210 +0,0 @@
-/*
- * 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.bval.jsr303.util;
-
-import java.util.Iterator;
-
-import javax.validation.Path;
-import javax.validation.ValidationException;
-
-import junit.framework.Test;
-import junit.framework.TestCase;
-import junit.framework.TestSuite;
-
-/**
- * PathImpl Tester.
- *
- * @version 1.0
- * @since <pre>10/01/2009</pre>
- */
-public class PathImplTest extends TestCase {
- public PathImplTest(String name) {
- super(name);
- }
-
- public void testParsing() {
- String property = "order[3].deliveryAddress.addressline[1]";
- Path path = PathImpl.createPathFromString(property);
- assertEquals(property, path.toString());
-
- Iterator<Path.Node> propIter = path.iterator();
-
- assertTrue(propIter.hasNext());
- Path.Node elem = propIter.next();
- assertFalse(elem.isInIterable());
- assertEquals("order", elem.getName());
-
- assertTrue(propIter.hasNext());
- elem = propIter.next();
- assertTrue(elem.isInIterable());
- assertEquals(new Integer(3), elem.getIndex());
- assertEquals("deliveryAddress", elem.getName());
-
- assertTrue(propIter.hasNext());
- elem = propIter.next();
- assertFalse(elem.isInIterable());
- assertEquals(null, elem.getIndex());
- assertEquals("addressline", elem.getName());
-
- assertTrue(propIter.hasNext());
- elem = propIter.next();
- assertTrue(elem.isInIterable());
- assertEquals(new Integer(1), elem.getIndex());
- assertNull(elem.getName());
-
- assertFalse(propIter.hasNext());
- }
-
- public void testParseMapBasedProperty() {
- String property = "order[foo].deliveryAddress";
- Path path = PathImpl.createPathFromString(property);
- Iterator<Path.Node> propIter = path.iterator();
-
- assertTrue(propIter.hasNext());
- Path.Node elem = propIter.next();
- assertFalse(elem.isInIterable());
- assertEquals("order", elem.getName());
-
- assertTrue(propIter.hasNext());
- elem = propIter.next();
- assertTrue(elem.isInIterable());
- assertEquals("foo", elem.getKey());
- assertEquals("deliveryAddress", elem.getName());
-
- assertFalse(propIter.hasNext());
- }
-
- //some of the examples from the 1.0 bean validation spec, section 4.2
- public void testSpecExamples() {
- String fourthAuthor = "authors[3]";
- Path path = PathImpl.createPathFromString(fourthAuthor);
- Iterator<Path.Node> propIter = path.iterator();
-
- assertTrue(propIter.hasNext());
- Path.Node elem = propIter.next();
- assertFalse(elem.isInIterable());
- assertEquals("authors", elem.getName());
-
- assertTrue(propIter.hasNext());
- elem = propIter.next();
- assertTrue(elem.isInIterable());
- assertEquals(3, elem.getIndex().intValue());
- assertNull(elem.getName());
- assertFalse(propIter.hasNext());
-
- String firstAuthorCompany = "authors[0].company";
- path = PathImpl.createPathFromString(firstAuthorCompany);
- propIter = path.iterator();
-
- assertTrue(propIter.hasNext());
- elem = propIter.next();
- assertFalse(elem.isInIterable());
- assertEquals("authors", elem.getName());
-
- assertTrue(propIter.hasNext());
- elem = propIter.next();
- assertTrue(elem.isInIterable());
- assertEquals(0, elem.getIndex().intValue());
- assertEquals("company", elem.getName());
- assertFalse(propIter.hasNext());
- }
-
- public void testNull() {
- assertEquals(PathImpl.createPathFromString(null), PathImpl.create(null));
-
- assertEquals("", PathImpl.create(null).toString());
- Path path = PathImpl.create(null);
- Path.Node node = path.iterator().next();
- assertEquals(null, node.getName());
- }
-
- public void testUnbalancedBraces() {
- try {
- PathImpl.createPathFromString("foo[.bar");
- fail();
- } catch (ValidationException ex) {
- }
- }
-
- public void testIndexInMiddleOfProperty() {
- try {
- PathImpl.createPathFromString("f[1]oo.bar");
- fail();
- } catch (ValidationException ex) {
- }
- }
-
- public void testTrailingPathSeparator() {
- try {
- PathImpl.createPathFromString("foo.bar.");
- fail();
- } catch (ValidationException ex) {
- }
- }
-
- public void testLeadingPathSeparator() {
- try {
- PathImpl.createPathFromString(".foo.bar");
- fail();
- } catch (ValidationException ex) {
- }
- }
-
- public void testEmptyString() {
- Path path = PathImpl.createPathFromString("");
- assertEquals(null, path.iterator().next().getName());
- }
-
- public void testToString() {
- PathImpl path = PathImpl.create(null);
- path.addNode(new NodeImpl("firstName"));
- assertEquals("firstName", path.toString());
-
- path = PathImpl.create(null);
- path.getLeafNode().setIndex(2);
- assertEquals("[2]", path.toString());
- path.addNode(new NodeImpl("firstName"));
- assertEquals("[2].firstName", path.toString());
- }
-
- public void testAddRemoveNodes() {
- PathImpl path = PathImpl.createPathFromString("");
- assertTrue(path.isRootPath());
- assertEquals(1, countNodes(path));
- path.addNode(new NodeImpl("foo"));
- assertFalse(path.isRootPath());
- assertEquals(1, countNodes(path));
- path.removeLeafNode();
- assertTrue(path.isRootPath());
- assertEquals(1, countNodes(path));
- }
-
- private int countNodes(Path path) {
- int result = 0;
- for (Iterator<Path.Node> iter = path.iterator(); iter.hasNext();) {
- iter.next();
- result++;
- }
- return result;
- }
-
- public static Test suite() {
- return new TestSuite(PathImplTest.class);
- }
-}
diff --git a/trunk/bval-jsr303/src/test/java/org/apache/bval/jsr303/util/TestUtils.java b/trunk/bval-jsr303/src/test/java/org/apache/bval/jsr303/util/TestUtils.java
deleted file mode 100644
index 30fcb4b..0000000
--- a/trunk/bval-jsr303/src/test/java/org/apache/bval/jsr303/util/TestUtils.java
+++ /dev/null
@@ -1,113 +0,0 @@
-/*
- * 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.bval.jsr303.util;
-
-import java.lang.annotation.Annotation;
-import java.util.Collection;
-import java.util.Set;
-
-import javax.validation.ConstraintViolation;
-import javax.validation.metadata.ConstraintDescriptor;
-import javax.validation.metadata.ElementDescriptor.ConstraintFinder;
-
-import junit.framework.Assert;
-
-/**
- * Description: <br/>
- */
-public class TestUtils {
- /**
- * @param violations
- * @param propertyPath
- * - string format of a propertyPath
- * @return the constraintViolation with the propertyPath's string
- * representation given
- */
- public static <T> ConstraintViolation<T> getViolation(Set<ConstraintViolation<T>> violations, String propertyPath) {
- for (ConstraintViolation<T> each : violations) {
- if (each.getPropertyPath().toString().equals(propertyPath))
- return each;
- }
- return null;
- }
-
- /**
- * @param violations
- * @param propertyPath
- * @return count of violations
- */
- public static <T> int countViolations(Set<ConstraintViolation<T>> violations, String propertyPath) {
- int result = 0;
- for (ConstraintViolation<T> each : violations) {
- if (each.getPropertyPath().toString().equals(propertyPath)) {
- result++;
- }
- }
- return result;
- }
-
- /**
- * @param <T>
- * @param violations
- * @param message
- * @return the constraint violation with the specified message found, if any
- */
- public static <T> ConstraintViolation<T> getViolationWithMessage(Set<ConstraintViolation<T>> violations,
- String message) {
- for (ConstraintViolation<T> each : violations) {
- if (each.getMessage().equals(message))
- return each;
- }
- return null;
- }
-
- /**
- * assume set addition either does nothing, returning false per collection
- * contract, or throws an Exception; in either case size should remain
- * unchanged
- *
- * @param collection
- */
- public static void failOnModifiable(Collection<?> collection, String description) {
- int size = collection.size();
- try {
- Assert
- .assertFalse(String.format("should not permit modification to %s", description), collection.add(null));
- } catch (Exception e) {
- // okay
- }
- Assert.assertEquals("constraint descriptor set size changed", size, collection.size());
- }
-
- /**
- * Assert that the specified ConstraintFinder provides constraints of each of the specified types.
- * @param constraintFinder
- * @param types
- */
- public static void assertConstraintTypesFound(ConstraintFinder constraintFinder, Class<? extends Annotation>... types) {
- outer: for (Class<? extends Annotation> type : types) {
- for (ConstraintDescriptor<?> descriptor : constraintFinder.getConstraintDescriptors()) {
- if (descriptor.getAnnotation().annotationType().equals(type)) {
- continue outer;
- }
- }
- Assert.fail(String.format("Missing expected constraint descriptor of type %s", type));
- }
- }
-}
diff --git a/trunk/bval-jsr303/src/test/java/org/apache/bval/jsr303/xml/TestConstraintValidatorFactory.java b/trunk/bval-jsr303/src/test/java/org/apache/bval/jsr303/xml/TestConstraintValidatorFactory.java
deleted file mode 100644
index b05f5ea..0000000
--- a/trunk/bval-jsr303/src/test/java/org/apache/bval/jsr303/xml/TestConstraintValidatorFactory.java
+++ /dev/null
@@ -1,27 +0,0 @@
-/*
- * 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.bval.jsr303.xml;
-
-import org.apache.bval.jsr303.DefaultConstraintValidatorFactory;
-
-/**
- * Description: <br/>
- */
-public class TestConstraintValidatorFactory extends DefaultConstraintValidatorFactory {
-}
diff --git a/trunk/bval-jsr303/src/test/java/org/apache/bval/jsr303/xml/TestMessageInterpolator.java b/trunk/bval-jsr303/src/test/java/org/apache/bval/jsr303/xml/TestMessageInterpolator.java
deleted file mode 100644
index 8c4418a..0000000
--- a/trunk/bval-jsr303/src/test/java/org/apache/bval/jsr303/xml/TestMessageInterpolator.java
+++ /dev/null
@@ -1,27 +0,0 @@
-/*
- * 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.bval.jsr303.xml;
-
-import org.apache.bval.jsr303.DefaultMessageInterpolator;
-
-/**
- * Description: <br/>
- */
-public class TestMessageInterpolator extends DefaultMessageInterpolator {
-}
diff --git a/trunk/bval-jsr303/src/test/java/org/apache/bval/jsr303/xml/ValidationParserTest.java b/trunk/bval-jsr303/src/test/java/org/apache/bval/jsr303/xml/ValidationParserTest.java
deleted file mode 100644
index b153b77..0000000
--- a/trunk/bval-jsr303/src/test/java/org/apache/bval/jsr303/xml/ValidationParserTest.java
+++ /dev/null
@@ -1,102 +0,0 @@
-/*
- * 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.bval.jsr303.xml;
-
-import junit.framework.Test;
-import junit.framework.TestCase;
-import junit.framework.TestSuite;
-import org.apache.bval.jsr303.ApacheValidationProvider;
-import org.apache.bval.jsr303.ApacheValidatorConfiguration;
-import org.apache.bval.jsr303.ConfigurationImpl;
-import org.apache.bval.jsr303.example.XmlEntitySampleBean;
-import org.apache.bval.jsr303.resolver.SimpleTraversableResolver;
-
-import javax.validation.*;
-import java.io.IOException;
-import java.util.Set;
-
-/**
- * ValidationParser Tester.
- *
- * @author <Authors name>
- * @version 1.0
- * @since <pre>11/25/2009</pre>
- */
-public class ValidationParserTest extends TestCase
- implements ApacheValidatorConfiguration.Properties {
- public ValidationParserTest(String name) {
- super(name);
- }
-
- public void testGetInputStream() throws IOException {
- ValidationParser vp = new ValidationParser("sample-validation.xml");
- assertNotNull(vp.getInputStream("sample-validation.xml"));
-
- try {
- vp.getInputStream("META-INF/MANIFEST.MF"); // this is available in multiple jars hopefully
- fail("exception not thrown");
- } catch(ValidationException vex) {
- assertTrue(vex.getMessage().startsWith("More than "));
- }
- }
-
- public void testParse() {
- ValidationParser vp = new ValidationParser("sample-validation.xml");
- ConfigurationImpl config =
- new ConfigurationImpl(null, new ApacheValidationProvider());
- vp.processValidationConfig(config);
- }
-
- public void testConfigureFromXml() {
- ValidatorFactory factory = getFactory();
- assertTrue(factory.getMessageInterpolator() instanceof TestMessageInterpolator);
- assertTrue(factory
- .getConstraintValidatorFactory() instanceof TestConstraintValidatorFactory);
- assertTrue(factory.getTraversableResolver() instanceof SimpleTraversableResolver);
- Validator validator = factory.getValidator();
- assertNotNull(validator);
- }
-
- private ValidatorFactory getFactory() {
- ApacheValidatorConfiguration config =
- Validation.byProvider(ApacheValidationProvider.class).configure();
- config.addProperty(VALIDATION_XML_PATH, "sample-validation.xml");
- return config.buildValidatorFactory();
- }
-
- public void testXmlEntitySample() {
- XmlEntitySampleBean bean = new XmlEntitySampleBean();
- bean.setFirstName("tooooooooooooooooooooooooooo long");
- bean.setValueCode("illegal");
- Validator validator = getFactory().getValidator();
- Set<ConstraintViolation<XmlEntitySampleBean>> results = validator.validate(bean);
- assertTrue(!results.isEmpty());
- assertTrue(results.size() == 3);
-
- bean.setZipCode("123");
- bean.setValueCode("20");
- bean.setFirstName("valid");
- results = validator.validate(bean);
- assertTrue(results.isEmpty());
- }
-
- public static Test suite() {
- return new TestSuite(ValidationParserTest.class);
- }
-}
diff --git a/trunk/bval-jsr303/src/test/resources/ValidationMessages.properties b/trunk/bval-jsr303/src/test/resources/ValidationMessages.properties
deleted file mode 100644
index aad269b..0000000
--- a/trunk/bval-jsr303/src/test/resources/ValidationMessages.properties
+++ /dev/null
@@ -1,26 +0,0 @@
-# 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.
-
-# standard messages
-javax.validation.constraints.Pattern.message=must match "{regexp}"
-
-# custom messages (examples) for validation-api-1.0.Beta4
-test.validator.creditcard=credit card is not valid
-
-# custom messages (examples) for validation-api-1.0.CR1
-validator.creditcard=credit card is not valid
-
diff --git a/trunk/bval-jsr303/src/test/resources/java.policy b/trunk/bval-jsr303/src/test/resources/java.policy
deleted file mode 100644
index 98bb345..0000000
--- a/trunk/bval-jsr303/src/test/resources/java.policy
+++ /dev/null
@@ -1,76 +0,0 @@
-//
-// 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.
-//
-
-//
-// $Id$
-//
-// Allows unit tests to run with a Java Security Manager
-//
-// Cloned from https://svn.apache.org/repos/asf/commons/proper/lang/trunk/src/test/resources/java.policy
-//
-// <argLine>-Djava.security.manager -Djava.security.policy=${basedir}/src/test/resources/java.policy</argLine>
-//
-
-grant
-{
- // let everyone read target dir
- permission java.io.FilePermission "${user.dir}/target/-", "read";
-};
-
-// we don't care about the permissions of the testing infrastructure,
-// including maven;
-grant codeBase "file://${user.home}/.m2/repository/org/apache/maven/-"
-{
- permission java.security.AllPermission;
-};
-
-// junit;
-grant codeBase "file://${user.home}/.m2/repository/junit/-"
-{
- permission java.security.AllPermission;
-};
-
-// mockito;
-grant codeBase "file://${user.home}/.m2/repository/org/mockito/-"
-{
- permission java.security.AllPermission;
-};
-
-// objenesis (via mockito);
-grant codeBase "file://${user.home}/.m2/repository/org/objenesis/-"
-{
- permission java.security.AllPermission;
-};
-
-// and our own testcases
-grant codeBase "file://${user.dir}/target/test-classes/-"
-{
- permission java.security.AllPermission;
-};
-
-grant codeBase "file://${user.home}/.m2/repository/org/apache/bval/-"
-{
- permission java.lang.RuntimePermission "accessDeclaredMembers";
- permission java.lang.reflect.ReflectPermission "suppressAccessChecks";
-};
-
-grant codeBase "file://${user.dir}/target/classes/-"
-{
- permission java.lang.RuntimePermission "accessDeclaredMembers";
- permission java.lang.reflect.ReflectPermission "suppressAccessChecks";
- permission java.io.FilePermission "${user.home}/.m2/repository/-", "read";
-};
diff --git a/trunk/bval-jsr303/src/test/resources/sample-constraints.xml b/trunk/bval-jsr303/src/test/resources/sample-constraints.xml
deleted file mode 100644
index 75c405e..0000000
--- a/trunk/bval-jsr303/src/test/resources/sample-constraints.xml
+++ /dev/null
@@ -1,73 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!--
- 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.
--->
-<constraint-mappings
- xmlns="http://jboss.org/xml/ns/javax/validation/mapping"
- xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
- xsi:schemaLocation=
- "http://jboss.org/xml/ns/javax/validation/mapping validation-mapping-1.0.xsd">
- <default-package>org.apache.bval.jsr303.example</default-package>
-
- <bean class="XmlEntitySampleBean" ignore-annotations="false">
- <class ignore-annotations="true"/>
- <field name="zipCode">
- <!--@FrenchZipCode(size=3)-->
- <constraint annotation="org.apache.bval.constraints.FrenchZipCode">
- <element name="size">
- <value>3</value>
- </element>
- </constraint>
-
- </field>
- <field name="valueCode">
- <valid/>
- <!-- @HasValue({ 0, 20 }) -->
- <constraint annotation="org.apache.bval.constraints.HasValue">
- <element name="value">
- <value>0</value>
- <value>20</value>
- </element>
- </constraint>
-
- </field>
- <getter name="firstName">
- <valid/>
- <!-- @Size(message="Size is limited",
- groups={First.class, Default.class},
- max=10
- )
- -->
- <constraint annotation="javax.validation.constraints.Size">
- <message>Size is limited</message>
- <groups>
- <value>org.apache.bval.jsr303.example.First</value>
- <value>javax.validation.groups.Default</value>
- </groups>
- <element name="max">10</element>
- </constraint>
-
- </getter>
-
- </bean>
-
- <constraint-definition annotation="javax.validation.constraints.Size">
- <validated-by include-existing-validators="false">
- <value>org.apache.bval.constraints.SizeValidatorForString</value>
- </validated-by>
- </constraint-definition>
-
-</constraint-mappings>
diff --git a/trunk/bval-jsr303/src/test/resources/sample-validation.xml b/trunk/bval-jsr303/src/test/resources/sample-validation.xml
deleted file mode 100644
index 790a535..0000000
--- a/trunk/bval-jsr303/src/test/resources/sample-validation.xml
+++ /dev/null
@@ -1,29 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!--
- 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.
--->
-<validation-config
- xmlns="http://jboss.org/xml/ns/javax/validation/configuration"
- xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
- xsi:schemaLocation=
- "http://jboss.org/xml/ns/javax/validation/configuration validation-configuration-1.0.xsd">
- <default-provider>org.apache.bval.jsr303.ApacheValidationProvider</default-provider>
- <message-interpolator>org.apache.bval.jsr303.xml.TestMessageInterpolator</message-interpolator>
- <traversable-resolver>org.apache.bval.jsr303.resolver.SimpleTraversableResolver</traversable-resolver>
- <constraint-validator-factory>org.apache.bval.jsr303.xml.TestConstraintValidatorFactory</constraint-validator-factory>
- <constraint-mapping>sample-constraints.xml</constraint-mapping>
- <property name="test-prop">test-prop-value</property>
-</validation-config>
diff --git a/trunk/bval-tck/pom.xml b/trunk/bval-tck/pom.xml
deleted file mode 100644
index 60513fe..0000000
--- a/trunk/bval-tck/pom.xml
+++ /dev/null
@@ -1,416 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!--
- 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.
--->
-<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
-
- <modelVersion>4.0.0</modelVersion>
-
- <parent>
- <groupId>org.apache.bval</groupId>
- <artifactId>bval-parent</artifactId>
- <version>0.4</version>
- </parent>
-
- <artifactId>bval-tck-runner</artifactId>
- <name>Apache BVal :: bval-tck (TCK Runner)</name>
- <description>Aggregates dependencies and runs the JSR-303 TCK</description>
-
- <dependencies>
- <dependency>
- <groupId>org.apache.bval</groupId>
- <artifactId>org.apache.bval.bundle</artifactId>
- <version>${project.version}</version>
- </dependency>
- </dependencies>
-
- <properties>
- <jboss.home>/opt/jboss-5.1.0.GA</jboss.home>
- <validation.provider>org.apache.bval.jsr303.ApacheValidationProvider</validation.provider>
- <remote.debug />
- </properties>
-
- <build>
- <plugins>
- <plugin>
- <groupId>org.apache.maven.plugins</groupId>
- <artifactId>maven-deploy-plugin</artifactId>
- <configuration>
- <!-- Don't publish these artifacts to central -->
- <skip>true</skip>
- </configuration>
- </plugin>
- <plugin>
- <groupId>org.codehaus.mojo</groupId>
- <artifactId>findbugs-maven-plugin</artifactId>
- <configuration>
- <skip>true</skip>
- </configuration>
- </plugin>
- <plugin>
- <groupId>org.apache.maven.plugins</groupId>
- <artifactId>maven-javadoc-plugin</artifactId>
- <configuration>
- <skip>true</skip>
- </configuration>
- </plugin>
- </plugins>
- <pluginManagement>
- <plugins>
- <!--This plugin's configuration is used to store Eclipse m2e settings only. It has no influence on the Maven build itself.-->
- <plugin>
- <groupId>org.eclipse.m2e</groupId>
- <artifactId>lifecycle-mapping</artifactId>
- <version>1.0.0</version>
- <configuration>
- <lifecycleMappingMetadata>
- <pluginExecutions>
- <pluginExecution>
- <pluginExecutionFilter>
- <groupId>
- org.apache.maven.plugins
- </groupId>
- <artifactId>
- maven-dependency-plugin
- </artifactId>
- <versionRange>
- [2.1,)
- </versionRange>
- <goals>
- <goal>copy</goal>
- </goals>
- </pluginExecutionFilter>
- <action>
- <ignore />
- </action>
- </pluginExecution>
- </pluginExecutions>
- </lifecycleMappingMetadata>
- </configuration>
- </plugin>
- </plugins>
- </pluginManagement>
- </build>
-
- <profiles>
- <profile>
- <id>tck</id>
- <activation>
- <property>
- <name>tck</name>
- </property>
- </activation>
- <dependencies>
- <!-- Use the geronimo-validation spec instead
- <dependency>
- <groupId>javax.validation</groupId>
- <artifactId>validation-api</artifactId>
- </dependency>
- -->
- <dependency>
- <groupId>org.apache.geronimo.specs</groupId>
- <artifactId>geronimo-validation_1.0_spec</artifactId>
- </dependency>
- <dependency>
- <groupId>org.testng</groupId>
- <artifactId>testng</artifactId>
- <classifier>jdk15</classifier>
- <version>5.8</version>
- </dependency>
- <dependency>
- <groupId>org.hibernate.jsr303.tck</groupId>
- <artifactId>jsr303-tck</artifactId>
- <version>1.0.6.GA</version>
- </dependency>
- <dependency>
- <groupId>org.jboss.test-harness</groupId>
- <artifactId>jboss-test-harness-jboss-as-51</artifactId>
- <version>1.0.0</version>
- </dependency>
- </dependencies>
- <repositories>
- <repository>
- <!-- override outdated URLs for jboss repo ids -->
- <id>repository.jboss.org</id>
- <name>JBoss Public Maven Repository Group</name>
- <url>https://repository.jboss.org/nexus/content/groups/public/</url>
- <layout>default</layout>
- <releases>
- <enabled>true</enabled>
- <updatePolicy>never</updatePolicy>
- <checksumPolicy>fail</checksumPolicy>
- </releases>
- <snapshots>
- <enabled>false</enabled>
- <updatePolicy>never</updatePolicy>
- <checksumPolicy>warn</checksumPolicy>
- </snapshots>
- </repository>
- <repository>
- <id>jboss</id>
- <name>JBoss Public Maven Repository Group (again)</name>
- <url>https://repository.jboss.org/nexus/content/groups/public/</url>
- <layout>default</layout>
- <releases>
- <enabled>true</enabled>
- <updatePolicy>never</updatePolicy>
- <checksumPolicy>fail</checksumPolicy>
- </releases>
- <snapshots>
- <enabled>false</enabled>
- <updatePolicy>never</updatePolicy>
- <checksumPolicy>warn</checksumPolicy>
- </snapshots>
- </repository>
- <repository>
- <id>snapshots.jboss.org</id>
- <url>https://repository.jboss.org/nexus/content/repositories/snapshots/</url>
- <snapshots>
- <enabled>true</enabled>
- </snapshots>
- </repository>
- <repository>
- <id>jboss-snapshots</id>
- <url>https://repository.jboss.org/nexus/content/repositories/snapshots/</url>
- <snapshots>
- <enabled>true</enabled>
- </snapshots>
- </repository>
- </repositories>
- <build>
- <plugins>
- <plugin>
- <groupId>org.apache.maven.plugins</groupId>
- <artifactId>maven-dependency-plugin</artifactId>
- <executions>
- <execution>
- <id>copy</id>
- <phase>generate-test-sources</phase>
- <goals>
- <goal>copy</goal>
- </goals>
- <configuration>
- <stripVersion>true</stripVersion>
- <artifactItems>
- <artifactItem>
- <groupId>org.hibernate.jsr303.tck</groupId>
- <artifactId>jsr303-tck</artifactId>
- <type>xml</type>
- <classifier>suite</classifier>
- <overWrite>false</overWrite>
- </artifactItem>
- <!-- use geronimo-validation spec
- <artifactItem>
- <groupId>javax.validation</groupId>
- <artifactId>validation-api</artifactId>
- <overWrite>true</overWrite>
- <outputDirectory>${project.build.directory}/dependency/lib</outputDirectory>
- </artifactItem>
- -->
- <artifactItem>
- <groupId>org.apache.geronimo.specs</groupId>
- <artifactId>geronimo-validation_1.0_spec</artifactId>
- <overWrite>true</overWrite>
- <outputDirectory>${project.build.directory}/dependency/lib</outputDirectory>
- </artifactItem>
- <artifactItem>
- <groupId>org.apache.bval</groupId>
- <artifactId>org.apache.bval.bundle</artifactId>
- <version>${project.version}</version>
- <overWrite>true</overWrite>
- <outputDirectory>${project.build.directory}/dependency/lib</outputDirectory>
- </artifactItem>
- <artifactItem>
- <groupId>org.apache.commons</groupId>
- <artifactId>commons-lang3</artifactId>
- <overWrite>true</overWrite>
- <outputDirectory>${project.build.directory}/dependency/lib</outputDirectory>
- </artifactItem>
- <artifactItem>
- <groupId>commons-beanutils</groupId>
- <artifactId>commons-beanutils-core</artifactId>
- <overWrite>true</overWrite>
- <outputDirectory>${project.build.directory}/dependency/lib</outputDirectory>
- </artifactItem>
- <artifactItem>
- <groupId>com.thoughtworks.xstream</groupId>
- <artifactId>xstream</artifactId>
- <overWrite>true</overWrite>
- <outputDirectory>${project.build.directory}/dependency/lib</outputDirectory>
- </artifactItem>
- </artifactItems>
- </configuration>
- </execution>
- </executions>
- </plugin>
- <plugin>
- <groupId>org.apache.maven.plugins</groupId>
- <artifactId>maven-surefire-plugin</artifactId>
- <configuration>
- <suiteXmlFiles>
- <suiteXmlFile>${project.build.directory}/dependency/jsr303-tck-suite.xml</suiteXmlFile>
- </suiteXmlFiles>
- <argLine>-Xmx512m</argLine>
- <forkMode>once</forkMode>
- <systemProperties>
- <property>
- <name>validation.provider</name>
- <value>${validation.provider}</value>
- </property>
- </systemProperties>
- </configuration>
- </plugin>
- <plugin>
- <groupId>org.apache.maven.plugins</groupId>
- <artifactId>maven-surefire-report-plugin</artifactId>
- <executions>
- <execution>
- <id>generate-test-report</id>
- <phase>test</phase>
- <goals>
- <goal>report-only</goal>
- </goals>
- </execution>
- </executions>
- <configuration>
- <outputDirectory>${project.build.directory}/surefire-reports</outputDirectory>
- <outputName>test-report</outputName>
- </configuration>
- </plugin>
- </plugins>
- </build>
- </profile>
-
- <profile>
- <id>incontainer-debug</id>
- <activation>
- <property>
- <name>debug</name>
- </property>
- </activation>
- <properties>
- <remote.debug>-Xnoagent -Djava.compiler=NONE -Xdebug -Xrunjdwp:transport=dt_socket,server=y,suspend=y,address=5005
- </remote.debug>
- </properties>
- </profile>
-
- <profile>
- <id>incontainer</id>
- <activation>
- <property>
- <name>incontainer</name>
- </property>
- </activation>
- <build>
- <plugins>
- <plugin>
- <groupId>org.apache.maven.plugins</groupId>
- <artifactId>maven-surefire-plugin</artifactId>
- <configuration>
- <suiteXmlFiles>
- <suiteXmlFile>${project.build.directory}/dependency/jsr303-tck-suite.xml</suiteXmlFile>
- </suiteXmlFiles>
- <systemProperties>
- <property>
- <name>validation.provider</name>
- <value>${validation.provider}</value>
- </property>
- <property>
- <name>org.jboss.testharness.standalone</name>
- <value>false</value>
- </property>
- <property>
- <name>jboss.home</name>
- <value>${jboss.home}</value>
- </property>
- <property>
- <name>org.jboss.testharness.container.javaOpts</name>
- <value>-Xms128m -Xmx512m -XX:MaxPermSize=256m -Dorg.jboss.resolver.warning=true
- -Dvalidation.provider=${validation.provider} ${remote.debug}
- </value>
- </property>
- <property>
- <name>org.jboss.testharness.container.forceRestart</name>
- <value>true</value>
- </property>
- <property>
- <name>org.jboss.testharness.runIntegrationTests</name>
- <value>true</value>
- </property>
- <property>
- <name>org.jboss.testharness.libraryDirectory</name>
- <value>target/dependency/lib</value>
- </property>
- <property>
- <name>org.jboss.testharness.outputDirectory</name>
- <value>target</value>
- </property>
- </systemProperties>
- </configuration>
- </plugin>
- </plugins>
- </build>
- </profile>
-
- <profile>
- <id>write-artifacts-to-disk</id>
- <activation>
- <property>
- <name>dumpArtifacts</name>
- </property>
- </activation>
- <build>
- <plugins>
- <plugin>
- <groupId>org.codehaus.mojo</groupId>
- <artifactId>exec-maven-plugin</artifactId>
- <executions>
- <execution>
- <id>generate-jsr-303-artifacts</id>
- <phase>test-compile</phase>
- <goals>
- <goal>java</goal>
- </goals>
- </execution>
- </executions>
- <configuration>
- <classpathScope>test</classpathScope>
- <mainClass>org.jboss.testharness.api.TCK</mainClass>
- <systemProperties>
- <systemProperty>
- <key>dumpArtifacts</key>
- <value>true</value>
- </systemProperty>
- <systemProperty>
- <key>org.jboss.testharness.outputDirectory</key>
- <value>target/jsr303-artifacts</value>
- </systemProperty>
- <systemProperty>
- <key>org.jboss.testharness.libraryDirectory</key>
- <value>target/jsr303-artifacts/dependencies</value>
- </systemProperty>
- </systemProperties>
- </configuration>
- </plugin>
- </plugins>
- </build>
- </profile>
- </profiles>
-
-</project>
-
diff --git a/trunk/bval-tck/src/main/resources/META-INF/jboss-test-harness.properties b/trunk/bval-tck/src/main/resources/META-INF/jboss-test-harness.properties
deleted file mode 100644
index 895a5db..0000000
--- a/trunk/bval-tck/src/main/resources/META-INF/jboss-test-harness.properties
+++ /dev/null
@@ -1,19 +0,0 @@
-# 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.
-org.jboss.testharness.spi.StandaloneContainers=org.hibernate.jsr303.tck.util.StandaloneContainersImpl
-org.jboss.testharness.api.TestLauncher=org.jboss.testharness.impl.runner.servlet.ServletTestLauncher
-org.jboss.testharness.testPackage=org.hibernate.jsr303.tck.tests
\ No newline at end of file
diff --git a/trunk/bval-tck/src/test/resources/jndi.properties b/trunk/bval-tck/src/test/resources/jndi.properties
deleted file mode 100644
index 433246b..0000000
--- a/trunk/bval-tck/src/test/resources/jndi.properties
+++ /dev/null
@@ -1,20 +0,0 @@
-# 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.
-#jboss JNDI properties
-java.naming.factory.initial=org.jnp.interfaces.NamingContextFactory
-java.naming.provider.url=jnp://localhost:1099
-java.naming.factory.url.pkgs=org.jboss.naming:org.jnp.interfaces
\ No newline at end of file
diff --git a/trunk/bval-tck/src/test/resources/log4j.xml b/trunk/bval-tck/src/test/resources/log4j.xml
deleted file mode 100644
index 0ce01ab..0000000
--- a/trunk/bval-tck/src/test/resources/log4j.xml
+++ /dev/null
@@ -1,57 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?><!DOCTYPE log4j:configuration SYSTEM "log4j.dtd">
-<!--
- 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.
--->
-<log4j:configuration xmlns:log4j="http://jakarta.apache.org/log4j/" debug="false">
-
- <appender name="CONSOLE" class="org.apache.log4j.ConsoleAppender">
- <param name="Target" value="System.out"/>
- <layout class="org.apache.log4j.PatternLayout">
- <!-- The default pattern: Date Priority [Category] Message\n -->
- <param name="ConversionPattern" value="%d{ABSOLUTE} %-5p [%c{2}] %m%n"/>
- </layout>
- <filter class="org.apache.log4j.varia.StringMatchFilter">
- <param name="AcceptOnMatch" value="false"/>
- <param name="StringToMatch" value="Failure while notifying an observer of event [a]"/>
- </filter>
- <filter class="org.apache.log4j.varia.StringMatchFilter">
- <param name="AcceptOnMatch" value="false"/>
- <param name="StringToMatch"
- value="Error destroying Request scoped unnamed simple bean org.jboss.jsr299.tck.tests.implementation.simple.lifecycle.Cod"/>
- </filter>
- </appender>
-
- <!-- ############### Categories ################# -->
- <category name="org.apache">
- <priority value="INFO"/>
- </category>
-
- <category name="org.hibernate">
- <priority value="INFO"/>
- </category>
-
- <category name="org.jboss.testharness">
- <priority value="INFO"/>
- </category>
-
- <root>
- <priority value="INFO"/>
- <appender-ref ref="CONSOLE"/>
- </root>
-
-</log4j:configuration>
diff --git a/trunk/bval-xstream/findbugs-exclude-filter.xml b/trunk/bval-xstream/findbugs-exclude-filter.xml
deleted file mode 100644
index eaf41b1..0000000
--- a/trunk/bval-xstream/findbugs-exclude-filter.xml
+++ /dev/null
@@ -1,31 +0,0 @@
-<?xml version="1.0"?>
-<!--
- 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.
--->
-
-<!--
- This file contains some false positive bugs detected by findbugs. Their
- false positive nature has been analyzed individually and they have been
- put here to instruct findbugs it must ignore them.
--->
-<FindBugsFilter>
- <!-- not a problem -->
- <Match>
- <Class name="org.apache.bval.xml.XMLMetaBeanManager" />
- <Method name="computeRelatedMetaBean" params="org.apache.bval.model.MetaProperty,java.lang.String" returns="void" />
- <Bug pattern="NP_LOAD_OF_KNOWN_NULL_VALUE" />
- </Match>
-</FindBugsFilter>
diff --git a/trunk/bval-xstream/pom.xml b/trunk/bval-xstream/pom.xml
deleted file mode 100644
index d156a5e..0000000
--- a/trunk/bval-xstream/pom.xml
+++ /dev/null
@@ -1,105 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!--
- 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.
--->
-<!--
- Maven release plugin requires the project tag to be on a single line.
--->
-<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
-
- <modelVersion>4.0.0</modelVersion>
-
- <parent>
- <groupId>org.apache.bval</groupId>
- <artifactId>bval-parent</artifactId>
- <version>0.4</version>
- </parent>
-
- <artifactId>bval-xstream</artifactId>
- <name>Apache BVal :: bval-xstream (optional)</name>
- <packaging>jar</packaging>
-
- <description>BVal XML Metadata with XStream</description>
-
- <dependencies>
- <dependency>
- <groupId>org.apache.bval</groupId>
- <artifactId>bval-core</artifactId>
- <version>${project.version}</version>
- </dependency>
- <dependency>
- <groupId>com.thoughtworks.xstream</groupId>
- <artifactId>xstream</artifactId>
- </dependency>
- <!-- Test dependencies -->
- <dependency>
- <groupId>org.slf4j</groupId>
- <artifactId>slf4j-simple</artifactId>
- <scope>test</scope>
- </dependency>
- <dependency>
- <groupId>org.slf4j</groupId>
- <artifactId>jcl-over-slf4j</artifactId>
- <scope>test</scope>
- </dependency>
- <dependency>
- <groupId>junit</groupId>
- <artifactId>junit</artifactId>
- <scope>test</scope>
- </dependency>
- </dependencies>
-
- <build>
- <plugins>
- <!-- create mainClass attribute -->
- <plugin>
- <groupId>org.apache.maven.plugins</groupId>
- <artifactId>maven-jar-plugin</artifactId>
- <executions>
- <execution>
- <id>default-jar</id>
- <goals>
- <goal>jar</goal>
- </goals>
- <configuration>
- <archive>
- <manifest>
- <mainClass>org.apache.bval.util.BValVersion</mainClass>
- </manifest>
- </archive>
- </configuration>
- </execution>
- <execution>
- <id>attach-tests</id>
- <goals>
- <goal>test-jar</goal>
- </goals>
- </execution>
- </executions>
- </plugin>
- <plugin>
- <groupId>org.codehaus.mojo</groupId>
- <artifactId>findbugs-maven-plugin</artifactId>
- <configuration>
- <excludeFilterFile>findbugs-exclude-filter.xml</excludeFilterFile>
- </configuration>
- </plugin>
- </plugins>
- </build>
-</project>
-
diff --git a/trunk/bval-xstream/src/main/java/org/apache/bval/routines/EMailValidation.java b/trunk/bval-xstream/src/main/java/org/apache/bval/routines/EMailValidation.java
deleted file mode 100644
index 9cd04f4..0000000
--- a/trunk/bval-xstream/src/main/java/org/apache/bval/routines/EMailValidation.java
+++ /dev/null
@@ -1,48 +0,0 @@
-/*
- * 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.bval.routines;
-
-
-import org.apache.bval.model.Validation;
-import org.apache.bval.model.ValidationContext;
-import org.apache.bval.model.ValidationListener;
-
-import java.util.regex.Pattern;
-
-/**
- * Description: example validation for email addresses using a regular expression<br/>
- */
-public class EMailValidation implements Validation {
-
- private java.util.regex.Pattern pattern = EMailValidationUtils.DEFAULT_EMAIL_PATTERN;
-
- public <T extends ValidationListener> void validate(ValidationContext<T> context) {
- if (context.getPropertyValue() == null) return;
- if (!EMailValidationUtils.isValid(context.getPropertyValue(), getPattern())) {
- context.getListener().addError(Reasons.EMAIL_ADDRESS, context);
- }
- }
-
- public Pattern getPattern() {
- return pattern;
- }
-
- public void setPattern(Pattern pattern) {
- this.pattern = pattern;
- }
-
-}
diff --git a/trunk/bval-xstream/src/main/java/org/apache/bval/routines/NOPValidation.java b/trunk/bval-xstream/src/main/java/org/apache/bval/routines/NOPValidation.java
deleted file mode 100644
index 6b63e3a..0000000
--- a/trunk/bval-xstream/src/main/java/org/apache/bval/routines/NOPValidation.java
+++ /dev/null
@@ -1,31 +0,0 @@
-/*
- * 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.bval.routines;
-
-import org.apache.bval.model.Validation;
-import org.apache.bval.model.ValidationContext;
-import org.apache.bval.model.ValidationListener;
-
-/**
- * Description: DO NOTHING VALIDATION (can be used to turn off standard validation)<br/>
- */
-public class NOPValidation implements Validation {
-
- public <T extends ValidationListener> void validate(ValidationContext<T> context) {
- // do nothing
- }
-}
diff --git a/trunk/bval-xstream/src/main/java/org/apache/bval/routines/Reasons.java b/trunk/bval-xstream/src/main/java/org/apache/bval/routines/Reasons.java
deleted file mode 100644
index 397081f..0000000
--- a/trunk/bval-xstream/src/main/java/org/apache/bval/routines/Reasons.java
+++ /dev/null
@@ -1,31 +0,0 @@
-/*
- * 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.bval.routines;
-
-import org.apache.bval.model.Features;
-
-/**
- * Description: StandardReasons for validation errors found in
- * {@link org.apache.bval.ValidationResults}<br/>
- */
-public interface Reasons extends Features.Property {
- // The reasons inherited from Features are VALIDATION features only.
- // INFO features are not meant to be validated.
-
- // Add more reasons here.
- String EMAIL_ADDRESS = "emailAddress";
-}
diff --git a/trunk/bval-xstream/src/main/java/org/apache/bval/routines/StandardValidation.java b/trunk/bval-xstream/src/main/java/org/apache/bval/routines/StandardValidation.java
deleted file mode 100644
index c78f3b5..0000000
--- a/trunk/bval-xstream/src/main/java/org/apache/bval/routines/StandardValidation.java
+++ /dev/null
@@ -1,184 +0,0 @@
-/*
- * 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.bval.routines;
-
-import static org.apache.bval.model.Features.Property.MANDATORY;
-import static org.apache.bval.model.Features.Property.MAX_LENGTH;
-import static org.apache.bval.model.Features.Property.MAX_VALUE;
-import static org.apache.bval.model.Features.Property.MIN_LENGTH;
-import static org.apache.bval.model.Features.Property.MIN_VALUE;
-import static org.apache.bval.model.Features.Property.REG_EXP;
-import static org.apache.bval.model.Features.Property.TIME_LAG;
-
-import java.util.Collection;
-import java.util.Date;
-import java.util.regex.Pattern;
-import java.util.regex.PatternSyntaxException;
-
-import org.apache.bval.model.Features;
-import org.apache.bval.model.MetaProperty;
-import org.apache.bval.model.Validation;
-import org.apache.bval.model.ValidationContext;
-import org.apache.bval.model.ValidationListener;
-import org.apache.bval.xml.XMLMetaValue;
-
-/**
- * Description: This class implements the standard validations for properties!
- * You can subclass this class and replace the implementation
- * in the beanInfo-xml by providing it a validation "standard"<br/>
- */
-public class StandardValidation implements Validation {
-
- /** key for this validation in the validation list of the beanInfos */
- public String getValidationId() {
- return "standard";
- }
-
- public <T extends ValidationListener> void validate(ValidationContext<T> context) {
- validateMandatory(context);
- validateMaxLength(context);
- validateMinLength(context);
- validateMaxValue(context);
- validateMinValue(context);
- validateRegExp(context);
- validateTimeLag(context);
- }
-
- protected <T extends ValidationListener> void validateTimeLag(ValidationContext<T> context) {
- String lag = (String) context.getMetaProperty().getFeature(TIME_LAG);
- if (lag == null) return;
- if (context.getPropertyValue() == null) return;
- long date = ((Date) context.getPropertyValue()).getTime();
- long now = System.currentTimeMillis();
- if (XMLMetaValue.TIMELAG_Future.equals(lag)) {
- if (date < now) {
- context.getListener().addError(TIME_LAG, context);
- }
- } else if (XMLMetaValue.TIMELAG_Past.equals(lag)) {
- if (date > now) {
- context.getListener().addError(TIME_LAG, context);
- }
- } else {
- throw new IllegalArgumentException("unknown timelag " + lag + " at " + context);
- }
- }
-
- private static final String REG_EXP_PATTERN = "cachedRegExpPattern";
-
- protected <T extends ValidationListener> void validateRegExp(ValidationContext<T> context) {
- final MetaProperty meta = context.getMetaProperty();
- final String regExp = (String) meta.getFeature(REG_EXP);
- if (regExp == null) return;
- if (context.getPropertyValue() == null) return;
-
- final String value = String.valueOf(context.getPropertyValue());
- try {
- Pattern pattern = (Pattern) meta.getFeature(REG_EXP_PATTERN);
- if (pattern == null) {
- pattern = Pattern.compile(regExp);
- meta.putFeature(REG_EXP_PATTERN, pattern);
- }
- if (!pattern.matcher(value).matches()) {
- context.getListener().addError(REG_EXP, context);
- }
- } catch (PatternSyntaxException e) {
- throw new IllegalArgumentException(
- "regular expression malformed. regexp " + regExp + " at " + context, e);
- }
- }
-
- protected <T extends ValidationListener> void validateMinValue(ValidationContext<T> context) {
- @SuppressWarnings("unchecked")
- Comparable<Object> minValue = (Comparable<Object>) context.getMetaProperty().getFeature(MIN_VALUE);
- if (minValue == null || context.getPropertyValue() == null) return;
- if (compare(context, minValue, context.getPropertyValue()) > 0) {
- context.getListener().addError(MIN_VALUE, context);
- }
- }
-
- protected <T extends ValidationListener> void validateMaxValue(ValidationContext<T> context) {
- @SuppressWarnings("unchecked")
- Comparable<Object> maxValue = (Comparable<Object>) context.getMetaProperty().getFeature(MAX_VALUE);
- if (maxValue == null || context.getPropertyValue() == null) return;
- if (compare(context, maxValue, context.getPropertyValue()) < 0) {
- context.getListener().addError(MAX_VALUE, context);
- }
- }
-
- private <T extends ValidationListener> int compare(ValidationContext<T> context, Comparable<Object> constraintValue,
- Object currentValue) {
- int r;
- if (constraintValue.getClass().isAssignableFrom(currentValue.getClass())) {
- r = constraintValue.compareTo(context.getPropertyValue());
- } else if (currentValue instanceof Number) {
- double dv = ((Number) currentValue).doubleValue();
- double mdv = ((Number) constraintValue).doubleValue();
- r = mdv > dv ? 1 : -1;
- } else {
- r = String.valueOf(constraintValue).compareTo(String.valueOf(currentValue));
- }
- return r;
- }
-
- protected <T extends ValidationListener> void validateMaxLength(ValidationContext<T> context) {
- Integer maxLength = (Integer) context.getMetaProperty()
- .getFeature(Features.Property.MAX_LENGTH);
- if (maxLength == null) return;
- if (context.getPropertyValue() == null) return;
-
- final Object value = context.getPropertyValue();
- int length = 0;
- if (value instanceof String) {
- length = ((String) value).length();
- } else if (value instanceof Collection<?>) {
- length = ((Collection<?>) value).size();
- }
- if (length > maxLength) {
- context.getListener().addError(MAX_LENGTH, context);
- }
- }
-
- protected <T extends ValidationListener> void validateMinLength(ValidationContext<T> context) {
- Integer maxLength = (Integer) context.getMetaProperty()
- .getFeature(Features.Property.MIN_LENGTH);
- if (maxLength == null) return;
- if (context.getPropertyValue() == null) return;
-
- final Object value = context.getPropertyValue();
- int length = 0;
- if (value instanceof String) {
- length = ((String) value).length();
- } else if (value instanceof Collection<?>) {
- length = ((Collection<?>) value).size();
- }
- if (length < maxLength) {
- context.getListener().addError(MIN_LENGTH, context);
- }
- }
-
- protected <T extends ValidationListener> void validateMandatory(ValidationContext<T> context) {
- if (context.getMetaProperty().isMandatory()) {
- if (context.getPropertyValue() == null) {
- context.getListener().addError(MANDATORY, context);
- }
- }
- }
-
- public static StandardValidation getInstance() {
- return new StandardValidation();
- }
-}
diff --git a/trunk/bval-xstream/src/main/java/org/apache/bval/xml/MetaBeanEnricher.java b/trunk/bval-xstream/src/main/java/org/apache/bval/xml/MetaBeanEnricher.java
deleted file mode 100644
index e7438b3..0000000
--- a/trunk/bval-xstream/src/main/java/org/apache/bval/xml/MetaBeanEnricher.java
+++ /dev/null
@@ -1,38 +0,0 @@
-/*
- * 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.bval.xml;
-
-
-import org.apache.bval.model.MetaBean;
-
-import java.util.Map;
-
-/**
- * Description: Interface to merge meta beans<br/>
- */
-public interface MetaBeanEnricher {
-
- /**
- * @param infos - the patches to apply
- * @return all MetaBeans for classes that have a xml descriptor and
- * additional the MetaBeans loaded by the given loaders.
- * The given loaders may also return patches for MetaBeans that have
- * also been returned by other loaders. The beans with patches for
- * references to patched beans will be copied.
- */
- Map<String, MetaBean> enrichCopies(XMLMetaBeanInfos... infos);
-}
diff --git a/trunk/bval-xstream/src/main/java/org/apache/bval/xml/XMLFeaturesCapable.java b/trunk/bval-xstream/src/main/java/org/apache/bval/xml/XMLFeaturesCapable.java
deleted file mode 100644
index 3e9bf88..0000000
--- a/trunk/bval-xstream/src/main/java/org/apache/bval/xml/XMLFeaturesCapable.java
+++ /dev/null
@@ -1,98 +0,0 @@
-/*
- * 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.bval.xml;
-
-import com.thoughtworks.xstream.annotations.XStreamImplicit;
-import org.apache.bval.model.FeaturesCapable;
-
-import java.io.Serializable;
-import java.util.ArrayList;
-import java.util.List;
-
-/**
- * Description: <br/>
- */
-public class XMLFeaturesCapable implements Serializable {
- /** Serialization version */
- private static final long serialVersionUID = 1L;
-
- @XStreamImplicit
- private List<XMLMetaFeature> features;
- @XStreamImplicit(itemFieldName = "validator")
- private List<XMLMetaValidatorReference> validators;
-
- public List<XMLMetaFeature> getFeatures() {
- return features;
- }
-
- public void setFeatures(List<XMLMetaFeature> features) {
- this.features = features;
- }
-
- public void putFeature(String key, Object value) {
- XMLMetaFeature anno = findFeature(key);
- if (features == null) features = new ArrayList<XMLMetaFeature>();
- if (anno == null) {
- features.add(new XMLMetaFeature(key, value));
- } else {
- anno.setValue(value);
- }
- }
-
- public void removeFeature(String key) {
- XMLMetaFeature anno = findFeature(key);
- if (anno != null) {
- getFeatures().remove(anno);
- }
- }
-
- public Object getFeature(String key) {
- XMLMetaFeature anno = findFeature(key);
- return anno == null ? null : anno.getValue();
- }
-
- private XMLMetaFeature findFeature(String key) {
- if (features == null) return null;
- for (XMLMetaFeature anno : features) {
- if (key.equals(anno.getKey())) return anno;
- }
- return null;
- }
-
- public List<XMLMetaValidatorReference> getValidators() {
- return validators;
- }
-
- public void setValidators(List<XMLMetaValidatorReference> validators) {
- this.validators = validators;
- }
-
- public void addValidator(String validatorId) {
- if (validators == null) validators = new ArrayList<XMLMetaValidatorReference>();
- validators.add(new XMLMetaValidatorReference(validatorId));
- }
-
- public void mergeFeaturesInto(FeaturesCapable fc) {
- if (getFeatures() != null) {
- fc.optimizeRead(false);
- for (XMLMetaFeature each : getFeatures()) {
- fc.putFeature(each.getKey(), each.getValue());
- }
- fc.optimizeRead(true);
- }
- }
-}
diff --git a/trunk/bval-xstream/src/main/java/org/apache/bval/xml/XMLMapper.java b/trunk/bval-xstream/src/main/java/org/apache/bval/xml/XMLMapper.java
deleted file mode 100644
index 72284b7..0000000
--- a/trunk/bval-xstream/src/main/java/org/apache/bval/xml/XMLMapper.java
+++ /dev/null
@@ -1,45 +0,0 @@
-/*
- * 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.bval.xml;
-
-import com.thoughtworks.xstream.XStream;
-
-/**
- * Description: <br/>
- */
-public class XMLMapper {
- private static final XMLMapper instance = new XMLMapper();
-
- private final XStream xStream;
-
- private XMLMapper() {
- xStream = new XStream();
- xStream.processAnnotations(new Class[] {XMLFeaturesCapable.class,
- XMLMetaFeature.class, XMLMetaBean.class, XMLMetaBeanInfos.class,
- XMLMetaBeanReference.class, XMLMetaElement.class, XMLMetaProperty.class,
- XMLMetaValidator.class, XMLMetaValidatorReference.class});
- xStream.setMode(XStream.NO_REFERENCES);
- }
-
- public static XMLMapper getInstance() {
- return instance;
- }
-
- public XStream getXStream() {
- return xStream;
- }
-}
diff --git a/trunk/bval-xstream/src/main/java/org/apache/bval/xml/XMLMetaBean.java b/trunk/bval-xstream/src/main/java/org/apache/bval/xml/XMLMetaBean.java
deleted file mode 100644
index 9f516df..0000000
--- a/trunk/bval-xstream/src/main/java/org/apache/bval/xml/XMLMetaBean.java
+++ /dev/null
@@ -1,156 +0,0 @@
-/*
- * 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.bval.xml;
-
-import com.thoughtworks.xstream.annotations.XStreamAlias;
-import com.thoughtworks.xstream.annotations.XStreamAsAttribute;
-import com.thoughtworks.xstream.annotations.XStreamImplicit;
-
-import java.util.ArrayList;
-import java.util.List;
-
-/**
- * Description: <br/>
- */
-@XStreamAlias("bean")
-public class XMLMetaBean extends XMLFeaturesCapable {
- /** Serialization version */
- private static final long serialVersionUID = 1L;
-
- @XStreamAsAttribute()
- private String id;
- @XStreamAsAttribute()
- private String name;
- @XStreamAsAttribute()
- private String impl;
- @XStreamImplicit
- private List<XMLMetaProperty> properties;
- @XStreamImplicit
- private List<XMLMetaBeanReference> beanRelations;
-
- public String getId() {
- return id;
- }
-
- public void setId(String id) {
- this.id = id;
- }
-
- public String getName() {
- return name;
- }
-
- public void setName(String name) {
- this.name = name;
- }
-
- public String getImpl() {
- return impl;
- }
-
- public void setImpl(String impl) {
- this.impl = impl;
- }
-
- public List<XMLMetaProperty> getProperties() {
- return properties;
- }
-
- public void setProperties(List<XMLMetaProperty> properties) {
- this.properties = properties;
- }
-
- public void addProperty(XMLMetaProperty property) {
- if (properties == null) properties = new ArrayList<XMLMetaProperty>();
- properties.add(property);
- }
-
- public void putProperty(XMLMetaProperty property) {
- if (property.getName() != null) {
- XMLMetaProperty prop = findProperty(property.getName());
- if (prop != null) {
- properties.remove(prop);
- }
- }
- addProperty(property);
- }
-
- public XMLMetaProperty removeProperty(String name) {
- XMLMetaProperty prop = findProperty(name);
- if (prop != null) {
- properties.remove(prop);
- }
- return prop;
- }
-
- public XMLMetaProperty getProperty(String name) {
- return findProperty(name);
- }
-
- private XMLMetaProperty findProperty(String name) {
- if (properties == null) return null;
- for (XMLMetaProperty prop : properties) {
- if (name.equals(prop.getName())) return prop;
- }
- return null;
- }
-
- public List<XMLMetaBeanReference> getBeanRefs() {
- return beanRelations;
- }
-
- public void setBeanRefs(List<XMLMetaBeanReference> beanRelations) {
- this.beanRelations = beanRelations;
- }
-
-
- public void addBeanRef(XMLMetaBeanReference beanRelation) {
- if (beanRelations == null) beanRelations = new ArrayList<XMLMetaBeanReference>();
- beanRelations.add(beanRelation);
- }
-
- public void putBeanRef(XMLMetaBeanReference beanRelation) {
- if (beanRelation.getName() != null) {
- XMLMetaBeanReference relation = findBeanRef(beanRelation.getName());
- if (relation != null) {
- beanRelations.remove(relation);
- }
- }
- addBeanRef(beanRelation);
- }
-
- public XMLMetaBeanReference removeBeanRef(String name) {
- XMLMetaBeanReference relation = findBeanRef(name);
- if (relation != null) {
- beanRelations.remove(relation);
- }
- return relation;
- }
-
- public XMLMetaBeanReference getBeanRef(String name) {
- return findBeanRef(name);
- }
-
- private XMLMetaBeanReference findBeanRef(String name) {
- if (beanRelations == null) return null;
- for (XMLMetaBeanReference relation : beanRelations) {
- if (name.equals(relation.getName())) return relation;
- }
- return null;
- }
-
-}
diff --git a/trunk/bval-xstream/src/main/java/org/apache/bval/xml/XMLMetaBeanBuilder.java b/trunk/bval-xstream/src/main/java/org/apache/bval/xml/XMLMetaBeanBuilder.java
deleted file mode 100644
index 8229183..0000000
--- a/trunk/bval-xstream/src/main/java/org/apache/bval/xml/XMLMetaBeanBuilder.java
+++ /dev/null
@@ -1,178 +0,0 @@
-/*
- * 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.bval.xml;
-
-import org.apache.bval.IntrospectorMetaBeanFactory;
-import org.apache.bval.MetaBeanBuilder;
-import org.apache.bval.MetaBeanFactory;
-import org.apache.bval.model.MetaBean;
-
-import java.io.IOException;
-import java.util.HashMap;
-import java.util.Map;
-
-/**
- * Description: <br>
- * User: roman.stumm<br>
- * Date: 17.06.2010<br>
- * Time: 10:10:46<br>
- */
-public class XMLMetaBeanBuilder extends MetaBeanBuilder {
- private XMLMetaBeanFactory xmlFactory;
-
- public XMLMetaBeanBuilder(MetaBeanFactory[] factories) {
- setFactories(factories);
- }
-
- public XMLMetaBeanBuilder() {
- setFactories(new MetaBeanFactory[] { new IntrospectorMetaBeanFactory(), new XMLMetaBeanFactory() });
- }
-
- public void setFactories(MetaBeanFactory[] factories) {
- super.setFactories(factories);
- updateXmlFactory();
- }
-
- public void addLoader(XMLMetaBeanLoader loader) {
- assertXmlFactory();
- xmlFactory.addLoader(loader);
- }
-
- public MetaBean buildForId(String beanInfoId) throws Exception {
- final XMLMetaBeanFactory.Visitor v;
- assertXmlFactory();
- xmlFactory.visitXMLBeanMeta(beanInfoId, v = new XMLMetaBeanFactory.Visitor() {
- private MetaBean meta;
-
- public MetaBean getMetaBean() {
- return meta;
- }
-
- public void visit(XMLMetaBean xmlMeta, XMLMetaBeanInfos xmlInfos) throws Exception {
- if (meta == null) {
- meta = createMetaBean(xmlMeta);
- }
- xmlFactory.enrichMetaBean(meta, new XMLMetaBeanFactory.XMLResult(xmlMeta, xmlInfos));
- }
-
- });
- if (v.getMetaBean() == null) {
- throw new IllegalArgumentException("MetaBean " + beanInfoId + " not found");
- }
- return v.getMetaBean();
- }
-
- public Map<String, MetaBean> buildAll() throws Exception {
- final Map<String, MetaBean> all = super.buildAll();
- if (xmlFactory != null) {
- xmlFactory.visitXMLBeanMeta(null, new XMLMetaBeanFactory.Visitor() {
- public void visit(XMLMetaBean empty, XMLMetaBeanInfos xmlInfos) throws Exception {
- if (xmlInfos.getBeans() == null)
- return; // empty file, ignore
- XMLMetaBeanFactory.XMLResult carrier = new XMLMetaBeanFactory.XMLResult(null, xmlInfos);
-
- for (XMLMetaBean xmlMeta : xmlInfos.getBeans()) {
- MetaBean meta = all.get(xmlMeta.getId());
- if (meta == null) {
- meta = createMetaBean(xmlMeta);
- all.put(xmlMeta.getId(), meta);
- }
- carrier.xmlMeta = xmlMeta;
- xmlFactory.enrichMetaBean(meta, carrier);
- }
- }
-
- public MetaBean getMetaBean() {
- return null; // do nothing
- }
- });
- }
- return all;
- }
-
- public Map<String, MetaBean> enrichCopies(Map<String, MetaBean> all, XMLMetaBeanInfos... infosArray)
- throws Exception {
- assertXmlFactory();
- final Map<String, MetaBean> copies = new HashMap<String, MetaBean>(all.size());
- boolean nothing = true;
- XMLMetaBeanFactory.XMLResult carrier = new XMLMetaBeanFactory.XMLResult();
- for (XMLMetaBeanInfos xmlMetaBeanInfos : infosArray) {
- carrier.xmlInfos = xmlMetaBeanInfos;
- if (xmlMetaBeanInfos == null)
- continue;
- try {
- for (XMLMetaBean xmlMeta : xmlMetaBeanInfos.getBeans()) {
- nothing = false;
- MetaBean copy = copies.get(xmlMeta.getId());
- if (copy == null) { // ist noch nicht kopiert
- MetaBean meta = all.get(xmlMeta.getId());
- if (meta == null) { // gibt es nicht
- copy = createMetaBean(xmlMeta);
- } else { // gibt es, jetzt kopieren
- copy = meta.copy();
- }
- copies.put(xmlMeta.getId(), copy);
- }
- carrier.xmlMeta = xmlMeta;
- xmlFactory.enrichMetaBean(copy, carrier);
- }
- } catch (IOException e) {
- xmlFactory.handleLoadException(xmlMetaBeanInfos, e);
- }
- }
- if (nothing)
- return all;
- for (Map.Entry<String, MetaBean> entry : all.entrySet()) {
- /*
- * alle unveraenderten werden AUCH KOPIERT (nur zwar nur, wegen
- * potentieller CrossReferenzen durch Relationships)
- */
- if (!copies.containsKey(entry.getKey())) {
- if (entry.getValue().hasRelationships()) {
- copies.put(entry.getKey(), (MetaBean) entry.getValue().copy());
- } else { // no relationship: do not clone()
- copies.put(entry.getKey(), entry.getValue());
- }
- }
- }
- return copies;
- }
-
- private MetaBean createMetaBean(XMLMetaBean xmlMeta) throws Exception {
- return buildForClass(findLocalClass(xmlMeta.getImpl()));
- }
-
- private void updateXmlFactory() {
- for (MetaBeanFactory each : getFactories()) {
- if (each instanceof XMLMetaBeanFactory) { // use the first one!
- xmlFactory = (XMLMetaBeanFactory) each;
- return;
- }
- }
- xmlFactory = null; // none
- }
-
- public XMLMetaBeanFactory getXmlFactory() {
- return xmlFactory;
- }
-
- private void assertXmlFactory() {
- if (xmlFactory == null) {
- throw new IllegalStateException("no xmlFactory available");
- }
- }
-}
diff --git a/trunk/bval-xstream/src/main/java/org/apache/bval/xml/XMLMetaBeanFactory.java b/trunk/bval-xstream/src/main/java/org/apache/bval/xml/XMLMetaBeanFactory.java
deleted file mode 100644
index 83454ef..0000000
--- a/trunk/bval-xstream/src/main/java/org/apache/bval/xml/XMLMetaBeanFactory.java
+++ /dev/null
@@ -1,241 +0,0 @@
-/*
- * 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.bval.xml;
-
-import static org.apache.bval.model.Features.Property.JAVASCRIPT_VALIDATION_FUNCTIONS;
-
-import java.io.IOException;
-import java.util.ArrayList;
-import java.util.Arrays;
-import java.util.Collection;
-import java.util.LinkedHashMap;
-import java.util.List;
-import java.util.Map;
-import java.util.logging.Level;
-import java.util.logging.Logger;
-
-import org.apache.bval.MetaBeanFactory;
-import org.apache.bval.model.FeaturesCapable;
-import org.apache.bval.model.MetaBean;
-import org.apache.bval.model.MetaProperty;
-import org.apache.bval.routines.StandardValidation;
-
-/**
- * Description: Create or enrich MetaBeans from apache beanInfos xml<br/>
- */
-public class XMLMetaBeanFactory implements MetaBeanFactory {
- private static final Logger logger = Logger.getLogger(XMLMetaBeanFactory.class.getName());
-
- // use LinkedHashMap to keep sequence of loaders
- private final Map<XMLMetaBeanLoader, XMLMetaBeanInfos> resources =
- new LinkedHashMap<XMLMetaBeanLoader, XMLMetaBeanInfos>();
-
- private StandardValidation standardValidation = StandardValidation.getInstance();
-
- public interface Visitor {
- /**
- * @param xmlMeta - null or the bean found
- * @param xmlInfos - all infos in a single unit (xml file)
- * @throws Exception
- */
- void visit(XMLMetaBean xmlMeta, XMLMetaBeanInfos xmlInfos) throws Exception;
-
- MetaBean getMetaBean();
- }
-
- public static class XMLResult {
- public XMLMetaBean xmlMeta;
- public XMLMetaBeanInfos xmlInfos;
-
- public XMLResult(XMLMetaBean metaBean, XMLMetaBeanInfos metaInfos) {
- this.xmlMeta = metaBean;
- this.xmlInfos = metaInfos;
- }
-
- public XMLResult() {
- }
- }
-
- public void buildMetaBean(final MetaBean metaBean) throws Exception {
- if(metaBean.getId() == null) return;
- visitXMLBeanMeta(metaBean.getId(), new Visitor() {
- public void visit(XMLMetaBean xmlMeta, XMLMetaBeanInfos xmlInfos)
- throws Exception {
- enrichMetaBean(metaBean, new XMLResult(xmlMeta, xmlInfos));
- }
-
- public MetaBean getMetaBean() {
- return metaBean;
- }
- });
- }
-
- /** XMLMetaBeanLoader are used to know "locations" where to get BeanInfos from. */
- public Collection<XMLMetaBeanLoader> getLoaders() {
- return resources.keySet();
- }
-
- public void addLoader(XMLMetaBeanLoader loader) {
- resources.put(loader, null);
- }
-
- public StandardValidation getStandardValidation() {
- return standardValidation;
- }
-
- /** customize the implementation of standardValidation for this builder. */
- public void setStandardValidation(StandardValidation standardValidation) {
- this.standardValidation = standardValidation;
- }
-
- public void enrichMetaBean(MetaBean meta, XMLResult result) throws Exception {
- if (result.xmlMeta.getId() != null) {
- meta.setId(result.xmlMeta.getId());
- }
- if (result.xmlMeta.getName() != null) {
- meta.setName(result.xmlMeta.getName());
- }
-/* if (meta.getBeanClass() == null && result.xmlMeta.getImpl() != null) {
- meta.setBeanClass(findLocalClass(result.xmlMeta.getImpl()));
- }*/
- result.xmlMeta.mergeFeaturesInto(meta);
- enrichValidations(meta, result.xmlMeta, result, false);
- if (result.xmlMeta.getProperties() != null) {
- for (XMLMetaProperty xmlProp : result.xmlMeta.getProperties()) {
- enrichElement(meta, xmlProp, result);
- }
- }
- if (result.xmlMeta.getBeanRefs() != null) {
- for (XMLMetaBeanReference xmlRef : result.xmlMeta.getBeanRefs()) {
- enrichElement(meta, xmlRef, result);
- }
- }
- }
-
- @SuppressWarnings("deprecation")
- protected void enrichValidations(FeaturesCapable prop, XMLFeaturesCapable xmlProp,
- XMLResult result, boolean addStandard)
- throws Exception {
- if (xmlProp.getValidators() != null) {
- // obsolete code? remove from here --->
- String[] func = prop.getFeature(JAVASCRIPT_VALIDATION_FUNCTIONS);
- List<String> jsValidators = new ArrayList<String>(
- xmlProp.getValidators().size() + (func == null ? 0 : func.length));
- if (func != null && func.length > 0) {
- jsValidators.addAll(Arrays.asList(func));
- } // <--- to here
- boolean useStandard = prop instanceof MetaProperty;
- for (XMLMetaValidatorReference valRef : xmlProp.getValidators()) {
- if (standardValidation != null &&
- valRef.getRefId().equals(standardValidation.getValidationId())) {
- useStandard = false;
- }
- XMLMetaValidator validator =
- result.xmlInfos.getValidator(valRef.getRefId());
- if (validator != null) {
- if (validator.getValidation() != null) {
- prop.addValidation(validator.getValidation());
- }
- if (validator.getJsFunction() != null &&
- !jsValidators.contains(validator.getJsFunction())) {
- jsValidators.add(validator.getJsFunction());
- }
- }
- }
- if (!jsValidators.isEmpty()) {
- prop.putFeature(JAVASCRIPT_VALIDATION_FUNCTIONS,
- jsValidators.toArray(new String[jsValidators.size()]));
- }
- if (useStandard && standardValidation != null) {
- if (!prop.hasValidation(standardValidation))
- prop.addValidation(standardValidation);
- }
- } else if (addStandard && standardValidation != null &&
- !prop.hasValidation(standardValidation)) {
- prop.addValidation(standardValidation);
- }
- }
-
- protected MetaProperty enrichElement(MetaBean meta, XMLMetaElement xmlProp,
- XMLResult result) throws Exception {
- MetaProperty prop = meta.getProperty(xmlProp.getName());
- if (prop == null) {
- prop = new MetaProperty();
- prop.setName(xmlProp.getName());
- meta.putProperty(xmlProp.getName(), prop);
- }
- xmlProp.mergeInto(prop);
- enrichValidations(prop, xmlProp, result, true);
- return prop;
- }
-
-
- public void visitXMLBeanMeta(String beanId, Visitor visitor) throws Exception {
- for (Map.Entry<XMLMetaBeanLoader, XMLMetaBeanInfos> entry : resources
- .entrySet()) {
- if (entry.getValue() == null) {
- // load when not already loaded
- try {
- entry.setValue(entry.getKey().load());
- } catch (IOException e) {
- handleLoadException(entry.getKey(), e);
- }
- }
- if (entry.getValue() != null) { // search in loaded infos for the 'name'
- if (beanId == null) {
- visitor.visit(null, entry.getValue());
- } else {
- XMLMetaBean found = entry.getValue().getBean(beanId);
- if (found != null) {
- visitor.visit(found, entry.getValue());
- }
- }
- }
- }
- }
-
- /**
- * find a bean by the bean-id (=bean.name)
- *
- * @return null or the bean found from the first loader that has it.
- */
- protected XMLResult findXMLBeanMeta(String beanId) {
- for (Map.Entry<XMLMetaBeanLoader, XMLMetaBeanInfos> entry : resources
- .entrySet()) {
- if (entry.getValue() == null) {
- // load when not already loaded
- try {
- entry.setValue(entry.getKey().load());
- } catch (IOException e) {
- handleLoadException(entry.getKey(), e);
- }
- }
- if (entry.getValue() != null) { // search in loaded infos for the 'name'
- XMLMetaBean found = entry.getValue().getBean(beanId);
- if (found != null) {
- return new XMLResult(found, entry.getValue());
- }
- }
- }
- return null; // not found!
- }
-
- public void handleLoadException(Object loader, IOException e) {
- logger.log(Level.SEVERE, String.format("Error loading %s", loader), e);
- }
-
-}
diff --git a/trunk/bval-xstream/src/main/java/org/apache/bval/xml/XMLMetaBeanInfos.java b/trunk/bval-xstream/src/main/java/org/apache/bval/xml/XMLMetaBeanInfos.java
deleted file mode 100644
index cd2ac88..0000000
--- a/trunk/bval-xstream/src/main/java/org/apache/bval/xml/XMLMetaBeanInfos.java
+++ /dev/null
@@ -1,134 +0,0 @@
-/*
- * 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.bval.xml;
-
-import java.util.ArrayList;
-import java.util.HashMap;
-import java.util.List;
-import java.util.Map;
-import java.util.concurrent.ConcurrentHashMap;
-
-import org.apache.bval.model.Validation;
-import org.apache.commons.lang3.ClassUtils;
-
-import com.thoughtworks.xstream.annotations.XStreamAlias;
-import com.thoughtworks.xstream.annotations.XStreamAsAttribute;
-import com.thoughtworks.xstream.annotations.XStreamImplicit;
-import com.thoughtworks.xstream.annotations.XStreamOmitField;
-
-/**
- * Description: root element of a xml-beanInfos document<br/>
- */
-@XStreamAlias("beanInfos")
-public class XMLMetaBeanInfos {
- @XStreamAsAttribute
- private String id;
- @XStreamAsAttribute
- private String version;
- @XStreamImplicit
- private List<XMLMetaValidator> validators;
- @XStreamImplicit
- private List<XMLMetaBean> beans;
- @XStreamOmitField
- private Map<String, XMLMetaBean> beanLookup;
- @XStreamOmitField
- private Map<String, XMLMetaValidator> validationLookup;
-
- /**
- * used for identification, may be empty, if there is no database origin for this object.
- * could also contain a file-name - can be used flexible...
- */
- public String getId() {
- return id;
- }
-
- public void setId(String id) {
- this.id = id;
- }
-
- /**
- * used for change-detection, when some other component caches MetaBeans based on this
- * object. when the version changes, the cache could compare to its version state and recompute.
- * can be used flexible...
- */
- public String getVersion() {
- return version;
- }
-
- public void setVersion(String version) {
- this.version = version;
- }
-
- public List<XMLMetaValidator> getValidators() {
- return validators;
- }
-
- public void setValidators(List<XMLMetaValidator> validators) {
- this.validators = validators;
- }
-
- public List<XMLMetaBean> getBeans() {
- return beans;
- }
-
- public void setBeans(List<XMLMetaBean> beans) {
- this.beans = beans;
- }
-
- public XMLMetaBean getBean(String id) {
- if (beans == null) return null;
- if (beanLookup == null) initBeanLookup();
- return beanLookup.get(id);
- }
-
- private void initBeanLookup() {
- final HashMap<String, XMLMetaBean> map = new HashMap<String, XMLMetaBean>(beans.size());
- for (XMLMetaBean bean : beans) {
- map.put(bean.getId(), bean);
- }
- beanLookup = new ConcurrentHashMap<String, XMLMetaBean>(map);
- }
-
- private void initValidationLookup() throws Exception {
- final HashMap<String, XMLMetaValidator> map = new HashMap<String, XMLMetaValidator>(validators.size());
- for (XMLMetaValidator xv : validators) {
- if (xv.getJava() != null) {
- Validation validation =
- (Validation) ClassUtils.getClass(xv.getJava()).newInstance();
- xv.setValidation(validation);
- map.put(xv.getId(), xv);
- }
- }
- validationLookup = new ConcurrentHashMap<String, XMLMetaValidator>(map);
- }
-
- public void addBean(XMLMetaBean bean) {
- if (beans == null) beans = new ArrayList<XMLMetaBean>();
- beans.add(bean);
- }
-
- public XMLMetaValidator getValidator(String id) throws Exception {
- if (validators == null) return null;
- if (validationLookup == null) initValidationLookup();
- return validationLookup.get(id);
- }
-
- public void addValidator(XMLMetaValidator validator) {
- if (validators == null) validators = new ArrayList<XMLMetaValidator>();
- validators.add(validator);
- }
-}
diff --git a/trunk/bval-xstream/src/main/java/org/apache/bval/xml/XMLMetaBeanLoader.java b/trunk/bval-xstream/src/main/java/org/apache/bval/xml/XMLMetaBeanLoader.java
deleted file mode 100644
index 851c74e..0000000
--- a/trunk/bval-xstream/src/main/java/org/apache/bval/xml/XMLMetaBeanLoader.java
+++ /dev/null
@@ -1,26 +0,0 @@
-/*
- * 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.bval.xml;
-
-import java.io.IOException;
-
-/**
- * Description: XMLMetaBeanLoader are used to know "locations" where to get BeanInfos from.<br/>
- */
-public interface XMLMetaBeanLoader {
- XMLMetaBeanInfos load() throws IOException;
-}
diff --git a/trunk/bval-xstream/src/main/java/org/apache/bval/xml/XMLMetaBeanManager.java b/trunk/bval-xstream/src/main/java/org/apache/bval/xml/XMLMetaBeanManager.java
deleted file mode 100644
index 0ab8d52..0000000
--- a/trunk/bval-xstream/src/main/java/org/apache/bval/xml/XMLMetaBeanManager.java
+++ /dev/null
@@ -1,131 +0,0 @@
-/*
- * 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.bval.xml;
-
-import org.apache.bval.MetaBeanManager;
-import org.apache.bval.model.MetaBean;
-import org.apache.bval.model.MetaProperty;
-import org.apache.bval.util.PrivilegedActions;
-
-import java.util.Map;
-
-import static org.apache.bval.model.Features.Property.REF_BEAN_ID;
-
-/**
- * Description: internal implementation class to construct metabeans with
- * factories and from xstream xml files. You can register different
- * XMLMetaBeanLoaders (see addLoader()) to register xstream-xml-files that
- * contain meta-data. You can merge + unify meta data with method
- * enrichCopies(). <br/>
- * User: roman.stumm<br>
- * Date: 17.06.2010<br>
- * Time: 09:47:14<br>
- */
-public class XMLMetaBeanManager extends MetaBeanManager implements XMLMetaBeanRegistry, MetaBeanEnricher {
- public XMLMetaBeanManager() {
- this(new XMLMetaBeanBuilder());
- }
-
- public XMLMetaBeanManager(XMLMetaBeanBuilder builder) {
- super(builder);
- }
-
- public void addResourceLoader(String resource) {
- addLoader(new XMLMetaBeanURLLoader(PrivilegedActions.getClassLoader(getClass()).getResource(resource)));
- }
-
- public synchronized void addLoader(XMLMetaBeanLoader loader) {
- ((XMLMetaBeanBuilder) builder).addLoader(loader);
- cache.clear(); // clear because new loaders can affect ALL MetaBeans
- // already created!
- complete = false;
- }
-
- /**
- * @param infos
- * - the patches to apply
- * @return all MetaBeans for classes that have a xml descriptor and
- * additional the MetaBeans loaded by the given loaders. The given
- * loaders may also return patches for MetaBeans that have also been
- * returned by other loaders. The beans with patches for references
- * to patched beans will be copied.
- */
- public Map<String, MetaBean> enrichCopies(XMLMetaBeanInfos... infos) {
- Map<String, MetaBean> cached = findAll();
- try {
- Map<String, MetaBean> patched = ((XMLMetaBeanBuilder) builder).enrichCopies(cached, infos);
- for (Object entry : patched.values()) {
- MetaBean meta = (MetaBean) entry;
- computeRelationships(meta, patched);
- }
- return patched;
- } catch (RuntimeException e) {
- throw e; // do not wrap runtime exceptions
- } catch (Exception e) {
- throw new IllegalArgumentException("error enriching beanInfos", e);
- }
- }
-
- /**
- *
- * @return all MetaBeans for classes that have a xml descriptor: key =
- * bean.id, value = MetaBean
- */
- public Map<String, MetaBean> findAll() {
- if (!complete) {
- try {
- Map<String, MetaBean> allBuilt = builder.buildAll();
- for (MetaBean meta : allBuilt.values()) {
- MetaBean cached = cache.findForId(meta.getId());
- if (cached == null) {
- cache.cache(meta);
- }
- }
- Map<String, MetaBean> map = cache.findAll();
- for (Object oentry : map.values()) {
- MetaBean meta = (MetaBean) oentry;
- computeRelationships(meta, map);
- }
- complete = true;
- return map;
- } catch (RuntimeException e) {
- throw e; // do not wrap runtime exceptions
- } catch (Exception e) {
- throw new IllegalArgumentException("error creating beanInfos", e);
- }
- } else {
- return cache.findAll();
- }
- }
-
- protected void computeRelationships(MetaBean beanInfo, Map<String, MetaBean> cached) {
- for (MetaProperty prop : beanInfo.getProperties()) {
- String beanRef = (String) prop.getFeature(REF_BEAN_ID);
- if (beanRef != null) {
- prop.setMetaBean(cached.get(beanRef));
- }
- }
- }
-
- protected void computeRelatedMetaBean(MetaProperty prop, String beanRef) {
- if (beanRef != null) {
- prop.setMetaBean(findForId(beanRef));
- } else {
- super.computeRelatedMetaBean(prop, beanRef);
- }
- }
-}
diff --git a/trunk/bval-xstream/src/main/java/org/apache/bval/xml/XMLMetaBeanManagerFactory.java b/trunk/bval-xstream/src/main/java/org/apache/bval/xml/XMLMetaBeanManagerFactory.java
deleted file mode 100644
index c7910e8..0000000
--- a/trunk/bval-xstream/src/main/java/org/apache/bval/xml/XMLMetaBeanManagerFactory.java
+++ /dev/null
@@ -1,62 +0,0 @@
-/*
- * 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.bval.xml;
-
-import org.apache.bval.MetaBeanFinder;
-
-/**
- * Description: <br>
- * User: roman.stumm<br>
- * Date: 17.06.2010<br>
- * Time: 10:06:37<br>
- */
-public class XMLMetaBeanManagerFactory {
- private static XMLMetaBeanManager manager = new XMLMetaBeanManager();
- /**
- * global meta bean finder.
- * @return
- */
- public static MetaBeanFinder getFinder() {
- return manager;
- }
-
-
- /**
- * set global meta bean manager, that is responsible
- * for finding, caching, xml registry and enrichment algorithm.
- * @param finder
- */
- public static void setManager(XMLMetaBeanManager finder) {
- manager = finder;
- }
-
- /**
- * global meta bean registry
- * @return
- */
- public static XMLMetaBeanRegistry getRegistry() {
- return manager;
- }
-
- /**
- * global meta bean enricher
- * @return
- */
- public static MetaBeanEnricher getEnricher() {
- return manager;
- }
-}
diff --git a/trunk/bval-xstream/src/main/java/org/apache/bval/xml/XMLMetaBeanReference.java b/trunk/bval-xstream/src/main/java/org/apache/bval/xml/XMLMetaBeanReference.java
deleted file mode 100644
index b26fade..0000000
--- a/trunk/bval-xstream/src/main/java/org/apache/bval/xml/XMLMetaBeanReference.java
+++ /dev/null
@@ -1,58 +0,0 @@
-/*
- * 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.bval.xml;
-
-import com.thoughtworks.xstream.annotations.XStreamAlias;
-import com.thoughtworks.xstream.annotations.XStreamAsAttribute;
-import org.apache.bval.model.Features;
-import org.apache.bval.model.MetaProperty;
-
-/**
- * Description: <br/>
- */
-@XStreamAlias("relationship")
-public class XMLMetaBeanReference extends XMLMetaElement {
- /** Serialization version */
- private static final long serialVersionUID = 1L;
-
- @XStreamAsAttribute
- private String beanId;
-
- public XMLMetaBeanReference(String refId) {
- this.beanId = refId;
- }
-
- public XMLMetaBeanReference() {
- }
-
- /** id of referenced target bean of the relationship */
- public String getBeanId() {
- return beanId;
- }
-
- public void setBeanId(String beanId) {
- this.beanId = beanId;
- }
-
- @Override
- public void mergeInto(MetaProperty prop) throws ClassNotFoundException {
- super.mergeInto(prop); // call super!
- if (getBeanId() != null) {
- prop.putFeature(Features.Property.REF_BEAN_ID, getBeanId());
- }
- }
-}
diff --git a/trunk/bval-xstream/src/main/java/org/apache/bval/xml/XMLMetaBeanRegistry.java b/trunk/bval-xstream/src/main/java/org/apache/bval/xml/XMLMetaBeanRegistry.java
deleted file mode 100644
index ef11f98..0000000
--- a/trunk/bval-xstream/src/main/java/org/apache/bval/xml/XMLMetaBeanRegistry.java
+++ /dev/null
@@ -1,35 +0,0 @@
-/*
- * 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.bval.xml;
-
-/**
- * Description: Interface of the object that holds all XMLMetaBeanLoaders <br/>
- */
-public interface XMLMetaBeanRegistry {
- /**
- * add a loader for xml bean infos.
- * the registry should use the loader in the sequence they have been added.
- */
- void addLoader(XMLMetaBeanLoader loader);
-
- /**
- * convenience method to add a loader for a xml file in the classpath
- *
- * @param resource - path of xml file in classpath
- */
- void addResourceLoader(String resource);
-}
diff --git a/trunk/bval-xstream/src/main/java/org/apache/bval/xml/XMLMetaBeanURLLoader.java b/trunk/bval-xstream/src/main/java/org/apache/bval/xml/XMLMetaBeanURLLoader.java
deleted file mode 100644
index 8dd735c..0000000
--- a/trunk/bval-xstream/src/main/java/org/apache/bval/xml/XMLMetaBeanURLLoader.java
+++ /dev/null
@@ -1,45 +0,0 @@
-/*
- * 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.bval.xml;
-
-import java.io.IOException;
-import java.io.InputStream;
-import java.net.URL;
-
-/**
- * Description: <br/>
- */
-public class XMLMetaBeanURLLoader implements XMLMetaBeanLoader {
- private final URL url;
-
- public XMLMetaBeanURLLoader(URL url) {
- if (url == null) throw new NullPointerException("URL required");
- this.url = url;
- }
-
- public XMLMetaBeanInfos load() throws IOException {
- InputStream stream = url.openStream();
- try {
- XMLMetaBeanInfos beanInfos = (XMLMetaBeanInfos) XMLMapper.getInstance()
- .getXStream().fromXML(stream);
- beanInfos.setId(url.toExternalForm());
- return beanInfos;
- } finally {
- stream.close();
- }
- }
-}
diff --git a/trunk/bval-xstream/src/main/java/org/apache/bval/xml/XMLMetaElement.java b/trunk/bval-xstream/src/main/java/org/apache/bval/xml/XMLMetaElement.java
deleted file mode 100644
index b753a79..0000000
--- a/trunk/bval-xstream/src/main/java/org/apache/bval/xml/XMLMetaElement.java
+++ /dev/null
@@ -1,143 +0,0 @@
-/*
- * 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.bval.xml;
-
-import com.thoughtworks.xstream.annotations.XStreamAsAttribute;
-import org.apache.bval.model.MetaProperty;
-import org.apache.commons.lang3.ClassUtils;
-
-import static org.apache.bval.model.Features.Property.*;
-
-/**
- * Description: <br/>
- */
-public class XMLMetaElement extends XMLFeaturesCapable {
- /** Serialization version */
- private static final long serialVersionUID = 1L;
-
- @XStreamAsAttribute()
- private String name;
- @XStreamAsAttribute()
- private String mandatory;
-
- @XStreamAsAttribute()
- private Integer minLength;
- @XStreamAsAttribute()
- private Integer maxLength;
- @XStreamAsAttribute()
- private Boolean readonly;
- @XStreamAsAttribute()
- private Boolean hidden;
- @XStreamAsAttribute()
- private Boolean denied;
- /**
- * normally the type is determined by the implementation class.
- * in case, no implementation class is given, the xml can
- * contain the type directly.
- */
- @XStreamAsAttribute()
- private String type;
-
- public String getName() {
- return name;
- }
-
- public void setName(String name) {
- this.name = name;
- }
-
- public String getMandatory() {
- return mandatory;
- }
-
- public void setMandatory(String mandatory) {
- this.mandatory = mandatory;
- }
-
- public Integer getMinLength() {
- return minLength;
- }
-
- public void setMinLength(Integer minLength) {
- this.minLength = minLength;
- }
-
- public Integer getMaxLength() {
- return maxLength;
- }
-
- public void setMaxLength(Integer maxLength) {
- this.maxLength = maxLength;
- }
-
- public Boolean getReadonly() {
- return readonly;
- }
-
- public void setReadonly(Boolean readonly) {
- this.readonly = readonly;
- }
-
- public Boolean getDenied() {
- return denied;
- }
-
- public void setDenied(Boolean denied) {
- this.denied = denied;
- }
-
- public Boolean getHidden() {
- return hidden;
- }
-
- public void setHidden(Boolean hidden) {
- this.hidden = hidden;
- }
-
- public String getType() {
- return type;
- }
-
- public void setType(String type) {
- this.type = type;
- }
-
- public void mergeInto(MetaProperty prop) throws ClassNotFoundException {
- mergeFeaturesInto(prop);
- if (getType() != null && getType().length() > 0) {
- prop.setType(ClassUtils.getClass(getType())); // enhancement: or use getGenericType() ?
- }
- if (getHidden() != null) {
- prop.putFeature(HIDDEN, getHidden().booleanValue());
- }
- if (getMandatory() != null) {
- prop.putFeature(MANDATORY, getMandatory().equals("true"));
- }
- if (getMaxLength() != null) {
- prop.putFeature(MAX_LENGTH, getMaxLength());
- }
- if (getMinLength() != null) {
- prop.putFeature(MIN_LENGTH, getMinLength());
- }
- if (getReadonly() != null) {
- prop.putFeature(READONLY, getReadonly());
- }
- if (getDenied() != null) {
- prop.putFeature(DENIED, getDenied());
- }
- }
-}
diff --git a/trunk/bval-xstream/src/main/java/org/apache/bval/xml/XMLMetaFeature.java b/trunk/bval-xstream/src/main/java/org/apache/bval/xml/XMLMetaFeature.java
deleted file mode 100644
index a500003..0000000
--- a/trunk/bval-xstream/src/main/java/org/apache/bval/xml/XMLMetaFeature.java
+++ /dev/null
@@ -1,61 +0,0 @@
-/*
- * 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.bval.xml;
-
-import com.thoughtworks.xstream.annotations.XStreamAlias;
-import com.thoughtworks.xstream.annotations.XStreamAsAttribute;
-
-import java.io.Serializable;
-
-/**
- * Description: <br/>
- */
-@XStreamAlias("feature")
-public class XMLMetaFeature implements Serializable {
- /** Serialization version */
- private static final long serialVersionUID = 1L;
-
- @XStreamAsAttribute
- private String key;
- @XStreamAsAttribute
- private Object value;
-
- public XMLMetaFeature(String key, Object value) {
- this.key = key;
- this.value = value;
- }
-
- public XMLMetaFeature() {
- }
-
- public String getKey() {
- return key;
- }
-
- public void setKey(String key) {
- this.key = key;
- }
-
-
- public Object getValue() {
- return value;
- }
-
- public void setValue(Object value) {
- this.value = value;
- }
-}
diff --git a/trunk/bval-xstream/src/main/java/org/apache/bval/xml/XMLMetaProperty.java b/trunk/bval-xstream/src/main/java/org/apache/bval/xml/XMLMetaProperty.java
deleted file mode 100644
index 82c4772..0000000
--- a/trunk/bval-xstream/src/main/java/org/apache/bval/xml/XMLMetaProperty.java
+++ /dev/null
@@ -1,102 +0,0 @@
-/*
- * 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.bval.xml;
-
-import com.thoughtworks.xstream.annotations.XStreamAlias;
-import com.thoughtworks.xstream.annotations.XStreamAsAttribute;
-import org.apache.bval.model.MetaProperty;
-
-import static org.apache.bval.model.Features.Property.*;
-
-/**
- * Description: <br/>
- */
-@XStreamAlias("property")
-public class XMLMetaProperty extends XMLMetaElement {
- /** Serialization version */
- private static final long serialVersionUID = 1L;
-
- /**
- * if you need other types (Long, double, String) for maxValue and
- * minValue, configure via
- * <pre>
- * <feature key="maxValue">
- * <value class="java.lang.Long">1000</value>
- * </feature>
- * </pre>
- * instead with explicit typing.
- */
- @XStreamAsAttribute()
- private Integer maxValue; // XStream requires a non-abstract type to parse XML
- @XStreamAsAttribute()
- private Integer minValue; // XStream requires a non-abstract type to parse XML
-
- private String regexp;
-
- @XStreamAsAttribute()
- private String timeLag;
-
-
- public Integer getMaxValue() {
- return maxValue;
- }
-
- public void setMaxValue(Integer maxValue) {
- this.maxValue = maxValue;
- }
-
- public Integer getMinValue() {
- return minValue;
- }
-
- public void setMinValue(Integer minValue) {
- this.minValue = minValue;
- }
-
- public String getRegexp() {
- return regexp;
- }
-
- public void setRegexp(String regexp) {
- this.regexp = regexp;
- }
-
- public String getTimeLag() {
- return timeLag;
- }
-
- public void setTimeLag(String timeLag) {
- this.timeLag = timeLag;
- }
-
- @Override
- public void mergeInto(MetaProperty prop) throws ClassNotFoundException {
- super.mergeInto(prop); // call super!
- if (getMaxValue() != null) {
- prop.putFeature(MAX_VALUE, getMaxValue());
- }
- if (getMinValue() != null) {
- prop.putFeature(MIN_VALUE, getMinValue());
- }
- if (getRegexp() != null) {
- prop.putFeature(REG_EXP, getRegexp());
- }
- if (getTimeLag() != null) {
- prop.putFeature(TIME_LAG, getTimeLag());
- }
- }
-}
diff --git a/trunk/bval-xstream/src/main/java/org/apache/bval/xml/XMLMetaValidator.java b/trunk/bval-xstream/src/main/java/org/apache/bval/xml/XMLMetaValidator.java
deleted file mode 100644
index 399d8a4..0000000
--- a/trunk/bval-xstream/src/main/java/org/apache/bval/xml/XMLMetaValidator.java
+++ /dev/null
@@ -1,77 +0,0 @@
-/*
- * 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.bval.xml;
-
-import com.thoughtworks.xstream.annotations.XStreamAlias;
-import com.thoughtworks.xstream.annotations.XStreamAsAttribute;
-import com.thoughtworks.xstream.annotations.XStreamOmitField;
-import org.apache.bval.model.Validation;
-
-import java.io.Serializable;
-
-/**
- * Description: <br/>
- */
-@XStreamAlias("validator")
-public class XMLMetaValidator implements Serializable {
-
- @XStreamOmitField
- private static final long serialVersionUID = 1L;
-
- @XStreamAsAttribute
- private String id;
- @XStreamAsAttribute
- private String java; // implementation of Validation
-
- @XStreamAsAttribute
- private String jsFunction; // name of java script function
-
- @XStreamOmitField
- private transient Validation validation;
-
- public String getId() {
- return id;
- }
-
- public void setId(String id) {
- this.id = id;
- }
-
- public String getJava() {
- return java;
- }
-
- public void setJava(String java) {
- this.java = java;
- }
-
- public void setValidation(Validation validation) {
- this.validation = validation;
- }
-
- public Validation getValidation() {
- return validation;
- }
-
- public String getJsFunction() {
- return jsFunction;
- }
-
- public void setJsFunction(String jsFunction) {
- this.jsFunction = jsFunction;
- }
-}
diff --git a/trunk/bval-xstream/src/main/java/org/apache/bval/xml/XMLMetaValidatorReference.java b/trunk/bval-xstream/src/main/java/org/apache/bval/xml/XMLMetaValidatorReference.java
deleted file mode 100644
index c6627c5..0000000
--- a/trunk/bval-xstream/src/main/java/org/apache/bval/xml/XMLMetaValidatorReference.java
+++ /dev/null
@@ -1,49 +0,0 @@
-/*
- * 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.bval.xml;
-
-import com.thoughtworks.xstream.annotations.XStreamAlias;
-import com.thoughtworks.xstream.annotations.XStreamAsAttribute;
-
-import java.io.Serializable;
-
-/**
- * Description: <br/>
- */
-@XStreamAlias("validator-ref")
-public class XMLMetaValidatorReference implements Serializable {
- /** Serialization version */
- private static final long serialVersionUID = 1L;
-
- @XStreamAsAttribute
- private String refId;
-
- public XMLMetaValidatorReference(String id) {
- this.refId = id;
- }
-
- public XMLMetaValidatorReference() {
- }
-
- public String getRefId() {
- return refId;
- }
-
- public void setRefId(String refId) {
- this.refId = refId;
- }
-}
diff --git a/trunk/bval-xstream/src/main/java/org/apache/bval/xml/XMLMetaValue.java b/trunk/bval-xstream/src/main/java/org/apache/bval/xml/XMLMetaValue.java
deleted file mode 100644
index 9da06ec..0000000
--- a/trunk/bval-xstream/src/main/java/org/apache/bval/xml/XMLMetaValue.java
+++ /dev/null
@@ -1,34 +0,0 @@
-/*
- * 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.bval.xml;
-
-/**
- * Description: <br/>
- */
-public interface XMLMetaValue {
- // keys for Annotations
- public static final String ANNOKEY_Widget = "WIDGET";
- public static final String ANNOKEY_TableColumn = "TABLE_COLUMN";
-
- // values for TIMELAG
- public static final String TIMELAG_Past = "PAST";
- public static final String TIMELAG_Future = "FUTURE";
-
- // values for MANDATORY
- public static final String MANDATORY = "true";
- public static final String OPTIONAL = "false";
-}
diff --git a/trunk/bval-xstream/src/test/java/org/apache/bval/example/BusinessEnum.java b/trunk/bval-xstream/src/test/java/org/apache/bval/example/BusinessEnum.java
deleted file mode 100644
index 035771d..0000000
--- a/trunk/bval-xstream/src/test/java/org/apache/bval/example/BusinessEnum.java
+++ /dev/null
@@ -1,24 +0,0 @@
-/*
- * 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.bval.example;
-
-/**
- * Description: <br/>
- */
-public enum BusinessEnum {
- VALUE1, VALUE2, VALUE3
-}
diff --git a/trunk/bval-xstream/src/test/java/org/apache/bval/example/BusinessObject.java b/trunk/bval-xstream/src/test/java/org/apache/bval/example/BusinessObject.java
deleted file mode 100644
index 4b511d5..0000000
--- a/trunk/bval-xstream/src/test/java/org/apache/bval/example/BusinessObject.java
+++ /dev/null
@@ -1,125 +0,0 @@
-/*
- * 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.bval.example;
-
-import java.sql.Timestamp;
-import java.util.Date;
-import java.util.List;
-
-/**
- * Description: <br/>
- */
-public class BusinessObject {
- private long userId;
- private int numericValue;
- private String firstName, lastName, title;
- private Date dateBirth;
- private Timestamp validTo;
- private String email;
- private BusinessEnum choice;
- private BusinessObjectAddress address;
- private List<BusinessObjectAddress> addresses;
-
- public BusinessEnum getChoice() {
- return choice;
- }
-
- public void setChoice(BusinessEnum choice) {
- this.choice = choice;
- }
-
- public String getTitle() {
- return title;
- }
-
- public void setTitle(String title) {
- this.title = title;
- }
-
- public Date getDateBirth() {
- return dateBirth;
- }
-
- public void setDateBirth(Date dateBirth) {
- this.dateBirth = dateBirth;
- }
-
- public Timestamp getValidTo() {
- return validTo;
- }
-
- public void setValidTo(Timestamp validTo) {
- this.validTo = validTo;
- }
-
- public String getEmail() {
- return email;
- }
-
- public void setEmail(String email) {
- this.email = email;
- }
-
- public BusinessObjectAddress getAddress() {
- return address;
- }
-
- public void setAddress(BusinessObjectAddress address) {
- this.address = address;
- }
-
- public void setNumericValue(int newNumericValue) {
- numericValue = newNumericValue;
- }
-
- public int getNumericValue() {
- return numericValue;
- }
-
- public String getFirstName() {
- return firstName;
- }
-
- public void setFirstName(String firstName) {
- this.firstName = firstName;
- }
-
- public String getLastName() {
- return lastName;
- }
-
- public void setLastName(String lastName) {
- this.lastName = lastName;
- }
-
- public long getUserId() {
- return userId;
- }
-
- public void setUserId(long userId) {
- this.userId = userId;
- }
-
- public List<BusinessObjectAddress> getAddresses() {
- return addresses;
- }
-
- public void setAddresses(List<BusinessObjectAddress> addresses) {
- this.addresses = addresses;
- }
-
-}
\ No newline at end of file
diff --git a/trunk/bval-xstream/src/test/java/org/apache/bval/example/BusinessObjectAddress.java b/trunk/bval-xstream/src/test/java/org/apache/bval/example/BusinessObjectAddress.java
deleted file mode 100644
index 9a6c18b..0000000
--- a/trunk/bval-xstream/src/test/java/org/apache/bval/example/BusinessObjectAddress.java
+++ /dev/null
@@ -1,49 +0,0 @@
-/*
- * 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.bval.example;
-
-/**
- * Description: <br/>
- */
-public class BusinessObjectAddress {
- private String city, country;
- private BusinessObject owner;
-
- public String getCity() {
- return city;
- }
-
- public void setCity(String city) {
- this.city = city;
- }
-
- public String getCountry() {
- return country;
- }
-
- public void setCountry(String country) {
- this.country = country;
- }
-
- public BusinessObject getOwner() {
- return owner;
- }
-
- public void setOwner(BusinessObject owner) {
- this.owner = owner;
- }
-}
diff --git a/trunk/bval-xstream/src/test/java/org/apache/bval/example/BusinessObjectBeanInfo.java b/trunk/bval-xstream/src/test/java/org/apache/bval/example/BusinessObjectBeanInfo.java
deleted file mode 100644
index 61b06e5..0000000
--- a/trunk/bval-xstream/src/test/java/org/apache/bval/example/BusinessObjectBeanInfo.java
+++ /dev/null
@@ -1,64 +0,0 @@
-/*
- * 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.bval.example;
-
-import org.apache.bval.model.Features;
-
-import java.beans.BeanInfo;
-import java.beans.IntrospectionException;
-import java.beans.PropertyDescriptor;
-import java.beans.SimpleBeanInfo;
-
-/**
- * Description: <br/>
- */
-public class BusinessObjectBeanInfo extends SimpleBeanInfo {
- Class<?> targetClass = BusinessObject.class;
-
- @Override
- public BeanInfo[] getAdditionalBeanInfo() {
- ExplicitBeanInfo bi = new ExplicitBeanInfo();
- bi.setPropertyDescriptors(_getPropertyDescriptors());
- return new BeanInfo[]{bi};
- }
-
- public PropertyDescriptor[] _getPropertyDescriptors() {
- try {
- PropertyDescriptor numericValue = new PropertyDescriptor("numericValue",
- targetClass, "getNumericValue", "setNumericValue");
- numericValue.setValue(Features.Property.MAX_VALUE, new Integer(100));
- numericValue.setValue(Features.Property.MIN_VALUE, new Integer(-100));
- return new PropertyDescriptor[]{numericValue};
- } catch (IntrospectionException ex) {
- ex.printStackTrace();
- return null;
- }
- }
-}
-
-class ExplicitBeanInfo extends SimpleBeanInfo {
- private PropertyDescriptor[] propertyDescriptors;
-
- @Override
- public PropertyDescriptor[] getPropertyDescriptors() {
- return propertyDescriptors;
- }
-
- public void setPropertyDescriptors(PropertyDescriptor[] propertyDescriptors) {
- this.propertyDescriptors = propertyDescriptors;
- }
-}
\ No newline at end of file
diff --git a/trunk/bval-xstream/src/test/java/org/apache/bval/routines/StandardValidationTest.java b/trunk/bval-xstream/src/test/java/org/apache/bval/routines/StandardValidationTest.java
deleted file mode 100644
index 7bee3db..0000000
--- a/trunk/bval-xstream/src/test/java/org/apache/bval/routines/StandardValidationTest.java
+++ /dev/null
@@ -1,223 +0,0 @@
-/*
- * 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.bval.routines;
-
-import junit.framework.Test;
-import junit.framework.TestCase;
-import junit.framework.TestSuite;
-import org.apache.bval.BeanValidationContext;
-import org.apache.bval.model.Features;
-import org.apache.bval.model.MetaProperty;
-import org.apache.bval.model.ValidationContext;
-import org.apache.bval.model.ValidationListener;
-import org.apache.bval.xml.XMLMetaValue;
-
-import java.sql.Timestamp;
-import java.util.ArrayList;
-import java.util.Date;
-import java.util.List;
-
-/**
- * StandardValidation Tester.
- */
-public class StandardValidationTest extends TestCase implements ValidationListener {
- private StandardValidation validation;
- private BeanValidationContext<StandardValidationTest> context;
- private List<String> reasons = new ArrayList<String>();
- private MetaProperty metaProperty;
- private String stringValue;
- private Date dateValue;
- private int intValue;
-
- public StandardValidationTest(String name) {
- super(name);
- }
-
- public void setUp() throws Exception {
- super.setUp();
- validation = new StandardValidation();
- context = new BeanValidationContext<StandardValidationTest>(this);
- metaProperty = new MetaProperty();
- context.setBean(this, null);
- context.setMetaProperty(metaProperty);
- }
-
- public void tearDown() throws Exception {
- super.tearDown();
- }
-
- public String getStringValue() {
- return stringValue;
- }
-
- public void testValidateMandatory() {
- metaProperty.setName("stringValue");
-
- // test not-null value that is mandatory
- metaProperty.setMandatory(true);
- stringValue = "some value";
- validation.validateMandatory(context);
- assertTrue(reasons.isEmpty());
-
- // test null value that is mandatory
- context.unknownValue();
- stringValue = null;
- validation.validateMandatory(context);
- assertTrue(reasons.contains(Reasons.MANDATORY));
-
- // test null value that is NOT mandatory
- context.unknownValue();
- metaProperty.setMandatory(false);
- reasons.clear();
- validation.validateMandatory(context);
- assertTrue(reasons.isEmpty());
- }
-
- public void testValidateMaxLength() {
- metaProperty.setName("stringValue");
- metaProperty.putFeature(Features.Property.MAX_LENGTH, 5);
- stringValue = "1234";
- validation.validateMaxLength(context);
- assertTrue(reasons.isEmpty());
- context.unknownValue();
- stringValue = "much too long";
- validation.validateMaxLength(context);
- assertTrue(reasons.contains(Reasons.MAX_LENGTH));
- }
-
- public void testValidateMinLength() {
- metaProperty.setName("stringValue");
- metaProperty.putFeature(Features.Property.MIN_LENGTH, 5);
- stringValue = "123456";
- validation.validateMinLength(context);
- assertTrue(reasons.isEmpty());
- context.unknownValue();
- stringValue = "123";
- validation.validateMinLength(context);
- assertTrue(reasons.contains(Reasons.MIN_LENGTH));
- }
-
- public void testValidateMaxValue() {
- metaProperty.setName("stringValue");
- metaProperty.putFeature(Features.Property.MAX_VALUE, "9999");
- stringValue = "1111";
- validation.validateMaxValue(context);
- assertTrue(reasons.isEmpty());
- context.unknownValue();
- stringValue = "99999";
- validation.validateMaxValue(context);
- assertTrue(reasons.contains(Reasons.MAX_VALUE));
- }
-
- public void testValidateMinValue() {
- metaProperty.setName("stringValue");
- metaProperty.putFeature(Features.Property.MIN_VALUE, "5555");
- stringValue = "8888";
- validation.validateMinValue(context);
- assertTrue(reasons.isEmpty());
- context.unknownValue();
- stringValue = "3333";
- validation.validateMinValue(context);
- assertTrue(reasons.contains(Reasons.MIN_VALUE));
- }
-
- public int getIntValue() {
- return intValue;
- }
-
- public void testValidateMinValue_MixedNumber() {
- metaProperty.setName("intValue");
- metaProperty.putFeature(Features.Property.MIN_VALUE, new Long(0));
- intValue = 5;
- validation.validateMinValue(context);
- assertTrue(reasons.isEmpty());
- context.unknownValue();
- intValue = -1;
- validation.validateMinValue(context);
- assertTrue(reasons.contains(Reasons.MIN_VALUE));
- }
-
- public void testValidateMinValue_Date_Timestamp() {
- metaProperty.setName("dateValue");
- Date dt = new Date();
- metaProperty.putFeature(Features.Property.MIN_VALUE, dt);
- dateValue = new Timestamp(dt.getTime()+1000);
- validation.validateMinValue(context);
- assertTrue(reasons.isEmpty());
- context.unknownValue();
- dateValue = new Timestamp(dt.getTime()-1000);
- validation.validateMinValue(context);
- assertTrue(reasons.contains(Reasons.MIN_VALUE));
- }
-
- public void testValidateMaxValue_AlphabeticString() {
- metaProperty.setName("stringValue");
- metaProperty.putFeature(Features.Property.MAX_VALUE, "BBBB");
- stringValue = "AAAA";
- validation.validateMaxValue(context);
- assertTrue(reasons.isEmpty());
- context.unknownValue();
- stringValue = "BBBC";
- validation.validateMaxValue(context);
- assertTrue(reasons.contains(Reasons.MAX_VALUE));
- }
-
- public void testValidateRegExp() {
- // regexp for Zip
- String regexp = "[a-zA-Z\\- \\d]*";
- metaProperty.setName("stringValue");
- metaProperty.putFeature(Features.Property.REG_EXP, regexp);
- stringValue = "53773";
- validation.validateRegExp(context);
- assertTrue(reasons.isEmpty());
- context.unknownValue();
- stringValue = "5355/7"; // invalid zip value
- validation.validateRegExp(context);
- assertTrue(reasons.contains(Reasons.REG_EXP));
- }
-
- public Date getDateValue() {
- return dateValue;
- }
-
- public void testValidateTimeLag() {
- metaProperty.setName("dateValue");
- metaProperty.putFeature(Features.Property.TIME_LAG, XMLMetaValue.TIMELAG_Past);
-
- dateValue = new Date(System.currentTimeMillis() - 10000);
- validation.validateTimeLag(context);
- assertTrue(reasons.isEmpty());
-
- metaProperty.putFeature(Features.Property.TIME_LAG, XMLMetaValue.TIMELAG_Future);
- validation.validateTimeLag(context);
- assertTrue(reasons.contains(Reasons.TIME_LAG));
-
- }
-
- public static Test suite() {
- return new TestSuite(StandardValidationTest.class);
- }
-
- public <T extends ValidationListener> void addError(String reason, ValidationContext<T> context) {
- reasons.add(reason);
- }
-
- public <T extends ValidationListener> void addError(ValidationListener.Error error, ValidationContext<T> context) {
- reasons.add(error.getReason());
- }
-
-}
diff --git a/trunk/bval-xstream/src/test/java/org/apache/bval/xml/BeanValidatorTest.java b/trunk/bval-xstream/src/test/java/org/apache/bval/xml/BeanValidatorTest.java
deleted file mode 100644
index 956da15..0000000
--- a/trunk/bval-xstream/src/test/java/org/apache/bval/xml/BeanValidatorTest.java
+++ /dev/null
@@ -1,121 +0,0 @@
-/*
- * 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.bval.xml;
-
-import junit.framework.Test;
-import junit.framework.TestCase;
-import junit.framework.TestSuite;
-import org.apache.bval.BeanValidator;
-import org.apache.bval.MetaBeanFinder;
-import org.apache.bval.ValidationResults;
-import org.apache.bval.example.BusinessObject;
-import org.apache.bval.example.BusinessObjectAddress;
-import org.apache.bval.model.Features;
-import org.apache.bval.model.MetaBean;
-import org.apache.bval.routines.Reasons;
-
-import java.util.ArrayList;
-import java.util.HashMap;
-
-/**
- * BeanValidator Tester.
- */
-public class BeanValidatorTest extends TestCase {
- public BeanValidatorTest(String name) {
- super(name);
- }
-
- public void setUp() throws Exception {
- super.setUp();
- }
-
- public void tearDown() throws Exception {
- super.tearDown();
- }
-
- public void testValidateMapAsBean() {
- XMLMetaBeanManagerFactory.getRegistry().addLoader(new XMLMetaBeanURLLoader(
- BusinessObject.class.getResource("test-beanInfos.xml")));
-
- MetaBean mb = XMLMetaBeanManagerFactory.getFinder()
- .findForId("org.apache.bval.example.Address");
-
- // 1. validate a bean
- BusinessObjectAddress adr = new BusinessObjectAddress();
- BeanValidator<ValidationResults> validator = new BeanValidator<ValidationResults>();
- ValidationResults results = validator.validate(adr, mb);
- assertEquals(2,
- results.getErrorsByReason().get(Features.Property.MANDATORY).size());
-
- // 2. validate a map with the same metabean
- validator.setTreatMapsLikeBeans(true);
- results = validator.validate(new HashMap<String, Object>(), mb);
- assertFalse(results.isEmpty());
- assertEquals(2,
- results.getErrorsByReason().get(Features.Property.MANDATORY).size());
-
- // 3. validate as empty map (jsr303 behavior)
- validator.setTreatMapsLikeBeans(false);
- results = validator.validate(new HashMap<Object, Object>(), mb);
- assertTrue(results.isEmpty());
- }
-
- public void testValidate() {
- MetaBeanFinder finder = XMLMetaBeanManagerFactory.getFinder();
- XMLMetaBeanManagerFactory.getRegistry().addLoader(new XMLMetaBeanURLLoader(
- BusinessObject.class.getResource("test-beanInfos.xml")));
- MetaBean info = finder.findForClass(BusinessObject.class);
- BusinessObject object = new BusinessObject();
- object.setAddress(new BusinessObjectAddress());
- object.getAddress().setOwner(object);
- BeanValidator<ValidationResults> validator = new BeanValidator<ValidationResults>();
- ValidationResults results = validator.validate(object, info);
- assertTrue(results.hasErrorForReason(Reasons.MANDATORY));
- assertTrue(results.hasError(object, null));
- assertTrue(results.hasError(object.getAddress(), null));
-
- assertTrue(
- validator.validateProperty(object, info.getProperty("firstName")).hasError(
- object, "firstName"));
-
- object.setUserId(1L);
- object.setFirstName("Hans");
- object.setLastName("Tester");
- object.setAddress(new BusinessObjectAddress());
- object.getAddress().setOwner(object);
- assertFalse(validator.validate(object, info).isEmpty());
-
- object.getAddress().setCountry("0123456789012345678");
- assertFalse(validator.validate(object, info).isEmpty());
-
- object.getAddress().setCountry("Germany");
- object.setAddresses(new ArrayList<BusinessObjectAddress>());
- object.getAddresses().add(object.getAddress());
- object.getAddresses().add(object.getAddress());
- object.getAddresses().add(object.getAddress());
- assertTrue(validator.validate(object, info).isEmpty());
-
- // 4th address is too much!
- object.getAddresses().add(object.getAddress());
- assertFalse(
- validator.validate(object, info).isEmpty()); // cardinality error found
- }
-
- public static Test suite() {
- return new TestSuite(BeanValidatorTest.class);
- }
-}
diff --git a/trunk/bval-xstream/src/test/java/org/apache/bval/xml/XMLMetaBeanInfosTest.java b/trunk/bval-xstream/src/test/java/org/apache/bval/xml/XMLMetaBeanInfosTest.java
deleted file mode 100644
index 79fd3dc..0000000
--- a/trunk/bval-xstream/src/test/java/org/apache/bval/xml/XMLMetaBeanInfosTest.java
+++ /dev/null
@@ -1,165 +0,0 @@
-/*
- * 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.bval.xml;
-
-import junit.framework.Assert;
-import junit.framework.Test;
-import junit.framework.TestCase;
-import junit.framework.TestSuite;
-import org.apache.bval.example.BusinessObject;
-import org.apache.bval.example.BusinessObjectAddress;
-
-import java.util.ArrayList;
-import java.util.HashMap;
-import java.util.Map;
-
-/**
- * XMLMetaBean Tester.
- */
-public class XMLMetaBeanInfosTest extends TestCase {
-
- public XMLMetaBeanInfosTest(String name) {
- super(name);
- }
-
- public void setUp() throws Exception {
- super.setUp();
- }
-
- public void tearDown() throws Exception {
- super.tearDown();
- }
-
- public void testBeanInfosToXML() {
- XMLMetaBeanInfos infos = new XMLMetaBeanInfos();
- infos.setBeans(new ArrayList<XMLMetaBean>());
- infos.setValidators(new ArrayList<XMLMetaValidator>());
-
- XMLMetaValidator validator = new XMLMetaValidator();
- validator.setId("mandatory");
- validator.setJava("org.apache.bval.MandatoryValidator");
-
- infos.getValidators().add(validator);
-
- validator = new XMLMetaValidator();
- validator.setId("email");
- validator.setJava("org.apache.bval.EMailValidation");
-
- infos.getValidators().add(validator);
-
- XMLMetaBean bean = new XMLMetaBean();
- bean.putFeature("DOMAIN", "TestProfile");
- bean.putFeature("label-key", "business-object-label");
- bean.setId("User");
- bean.setImpl(BusinessObject.class.getName());
- bean.setProperties(new ArrayList<XMLMetaProperty>());
- XMLMetaProperty property = new XMLMetaProperty();
- property.setName("userId");
- property.setMandatory(XMLMetaValue.MANDATORY);
- bean.getProperties().add(property);
-
- property = new XMLMetaProperty();
- property.setName("firstName");
- property.setMandatory(XMLMetaValue.MANDATORY);
- property.setMaxLength(100);
- bean.getProperties().add(property);
-
- property = new XMLMetaProperty();
- property.setName("lastName");
- property.setMandatory(XMLMetaValue.MANDATORY);
- property.setMaxLength(100);
- bean.getProperties().add(property);
-
- property = new XMLMetaProperty();
- property.setName("title");
- property.setMandatory(XMLMetaValue.OPTIONAL);
- property.setMaxLength(10);
- bean.getProperties().add(property);
-
- property = new XMLMetaProperty();
- property.setName("dateBirth");
- property.setMandatory(XMLMetaValue.OPTIONAL);
- property.setTimeLag(XMLMetaValue.TIMELAG_Past);
- bean.getProperties().add(property);
-
- property = new XMLMetaProperty();
- property.setName("validTo");
- property.setMandatory(XMLMetaValue.OPTIONAL);
- property.setTimeLag(XMLMetaValue.TIMELAG_Future);
- bean.getProperties().add(property);
-
- property = new XMLMetaProperty();
- property.setName("email");
- property.putFeature(XMLMetaValue.ANNOKEY_Widget, "entry");
- property.putFeature(XMLMetaValue.ANNOKEY_TableColumn, true);
- Map<String, String> formatterMap = new HashMap<String, String>();
- formatterMap.put("locale", "DE");
- formatterMap.put("style", "info");
- property.putFeature("ajax-formatter", formatterMap);
- property.addValidator("email");
- bean.getProperties().add(property);
-
- infos.getBeans().add(bean);
-
- XMLMetaBean bean2 = new XMLMetaBean();
- bean2.setId("Address");
- bean2.setImpl(BusinessObjectAddress.class.getName());
- property = new XMLMetaProperty();
- property.setName("city");
- bean2.putProperty(property);
- property = new XMLMetaProperty();
- property.setName("country");
- property.setMaxLength(10);
- property.setMandatory(XMLMetaValue.MANDATORY);
- bean2.putProperty(property);
-
- XMLMetaBeanReference relation = new XMLMetaBeanReference();
- relation.setName("address");
- relation.setBeanId("Address");
- relation.setMandatory(XMLMetaValue.OPTIONAL);
-// relation.setDisplayName("UserAddress");
- bean.putBeanRef(relation);
-
- infos.getBeans().add(bean2);
-
- String xml = XMLMapper.getInstance().getXStream().toXML(infos);
-// System.out.println(xml);
- XMLMetaBeanInfos infos2 =
- (XMLMetaBeanInfos) XMLMapper.getInstance().getXStream().fromXML(xml);
- assertEquals(2, infos2.getBeans().size());
- }
-
-
- public void testMaxValueParsing() {
- String xml = "\n" +
- "<beanInfos> <bean id=\"org.apache.bval.test.model.Profile\">\n" +
- " <property name=\"activationDay\" minValue=\"1\" maxValue=\"31\"/>\n" +
- " <property name=\"activationMonth\" minValue=\"1\" maxValue=\"12\"/>\n" +
- " </bean></beanInfos>";
- XMLMetaBeanInfos beanInfos = (XMLMetaBeanInfos) XMLMapper.getInstance()
- .getXStream().fromXML(xml);
- Assert.assertNotNull(beanInfos);
- assertEquals(Integer.valueOf(31),
- beanInfos.getBeans().get(0).getProperty("activationDay").getMaxValue());
- assertEquals(Integer.valueOf(1),
- beanInfos.getBeans().get(0).getProperty("activationDay").getMinValue());
- }
-
- public static Test suite() {
- return new TestSuite(XMLMetaBeanInfosTest.class);
- }
-}
diff --git a/trunk/bval-xstream/src/test/java/org/apache/bval/xml/XMLMetaBeanManagerTest.java b/trunk/bval-xstream/src/test/java/org/apache/bval/xml/XMLMetaBeanManagerTest.java
deleted file mode 100644
index a57c306..0000000
--- a/trunk/bval-xstream/src/test/java/org/apache/bval/xml/XMLMetaBeanManagerTest.java
+++ /dev/null
@@ -1,93 +0,0 @@
-/*
- * 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.bval.xml;
-
-import junit.framework.Test;
-import junit.framework.TestCase;
-import junit.framework.TestSuite;
-import org.apache.bval.MetaBeanFinder;
-import org.apache.bval.example.BusinessObject;
-import org.apache.bval.model.MetaBean;
-
-import java.util.Map;
-
-/**
- * Description: <br>
- * User: roman.stumm<br>
- * Date: 17.06.2010<br>
- * Time: 10:28:48<br>
- */
-public class XMLMetaBeanManagerTest extends TestCase {
- XMLMetaBeanManager mbm = new XMLMetaBeanManager();
-
- public XMLMetaBeanManagerTest(String name) {
- super(name);
- }
-
- public void setUp() throws Exception {
- super.setUp();
- mbm.addLoader(new XMLMetaBeanURLLoader(BusinessObject.class.getResource("test-beanInfos.xml")));
- }
-
- public void tearDown() throws Exception {
- super.tearDown();
- }
-
- public void testEnrichCopies() throws Exception {
- Map<String, MetaBean> copies =
- mbm.enrichCopies(new XMLMetaBeanURLLoader(BusinessObject.class.getResource("test-beanInfos-custom.xml"))
- .load());
- assertNotNull(copies);
- MetaBean mb = copies.get(BusinessObject.class.getName());
- assertFalse(mb.getProperty("lastName").isMandatory());
- MetaBean mb2 = mbm.findForClass(BusinessObject.class);
- assertTrue(mb2.getProperty("lastName").isMandatory());
- }
-
- public void testCopy() {
- MetaBean mb = mbm.findForClass(BusinessObject.class);
- MetaBean mb2 = mb.copy();
- assertTrue(mb2 != mb);
- assertTrue(mb2.getProperty("dateBirth") != mb.getProperty("dateBirth"));
- }
-
- @SuppressWarnings("deprecation")
- public void testFindForClass() throws Exception {
- MetaBeanFinder finder = mbm;
- MetaBean info = finder.findForClass(BusinessObject.class);
- assertNotNull(info);
- assertTrue(info == info.getProperty("address").getMetaBean().getProperty("owner").getMetaBean());
- assertTrue(info == info.getProperty("addresses").getMetaBean().getProperty("owner").getMetaBean());
- assertTrue(info.getProperty("email").getJavaScriptValidations().length > 0);
- }
-
- public void testFindAll() {
- Map<String, MetaBean> all = mbm.findAll();
- assertNotNull(all);
- Map<String, MetaBean> all2 = mbm.findAll();
- assertEquals(all.size(), all2.size());
- assertTrue(all.get(BusinessObject.class.getName()) == all2.get(BusinessObject.class.getName()));
- assertTrue(all.get(BusinessObject.class.getName()) != null);
- MetaBean bean = all.get(BusinessObject.class.getName());
- assertTrue(bean == bean.getProperty("address").getMetaBean().getProperty("owner").getMetaBean());
- assertTrue(bean == bean.getProperty("addresses").getMetaBean().getProperty("owner").getMetaBean());
- }
-
- public static Test suite() {
- return new TestSuite(XMLMetaBeanManagerTest.class);
- }
-}
diff --git a/trunk/bval-xstream/src/test/resources/org/apache/bval/example/test-beanInfos-custom.xml b/trunk/bval-xstream/src/test/resources/org/apache/bval/example/test-beanInfos-custom.xml
deleted file mode 100644
index d9f6b72..0000000
--- a/trunk/bval-xstream/src/test/resources/org/apache/bval/example/test-beanInfos-custom.xml
+++ /dev/null
@@ -1,31 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!--
- 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.
--->
-<beanInfos>
-
- <bean id="org.apache.bval.example.BusinessObject"
- impl="org.apache.bval.example.BusinessObject">
- <property name="lastName" mandatory="false"/>
- <property name="unknownName" mandatory="true"/>
- </bean>
-
- <bean id="UnknownObject" impl="org.apache.bval.UnknownClass">
- <property name="fullName" mandatory="true"/>
- </bean>
-</beanInfos>
\ No newline at end of file
diff --git a/trunk/bval-xstream/src/test/resources/org/apache/bval/example/test-beanInfos.xml b/trunk/bval-xstream/src/test/resources/org/apache/bval/example/test-beanInfos.xml
deleted file mode 100644
index f78aa47..0000000
--- a/trunk/bval-xstream/src/test/resources/org/apache/bval/example/test-beanInfos.xml
+++ /dev/null
@@ -1,77 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!--
- 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.
--->
-<beanInfos>
- <validator id="standard" java="org.apache.bval.routines.NOPValidation"
- jsFunction="noop"/>
- <validator id="email" java="org.apache.bval.routines.EMailValidation"/>
- <bean id="org.apache.bval.example.BusinessObject"
- impl="org.apache.bval.example.BusinessObject">
- <feature key="mainKey">
- <value class="string">userId</value>
- </feature>
- <feature key="DOMAIN">
- <value class="string">TestObjects</value>
- </feature>
- <feature key="WIDGET">
- <value class="string">entry</value>
- </feature>
- <property name="userId" mandatory="true"/>
- <property name="firstName" mandatory="true" maxLength="100"/>
- <property name="lastName" mandatory="true" maxLength="100"/>
- <property name="title" mandatory="false" maxLength="10"/>
- <property timeLag="PAST" name="dateBirth" mandatory="false"/>
- <property timeLag="FUTURE" name="validTo" mandatory="false"/>
- <property name="email">
- <feature key="WIDGET">
- <value class="string">entry</value>
- </feature>
- <feature key="TABLE_COLUMN">
- <value class="boolean">true</value>
- </feature>
- <feature key="ajax-formatter">
- <value class="map">
- <entry>
- <string>locale</string>
- <string>DE</string>
- </entry>
- <entry>
- <string>style</string>
- <string>info</string>
- </entry>
- </value>
- </feature>
- <validator refId="email"/>
- <validator refId="standard"/>
- </property>
- <relationship beanId="org.apache.bval.example.Address" name="address" mandatory="false"
- displayName="UserAddress"/>
- <relationship beanId="org.apache.bval.example.Address" name="addresses" maxLength="3"/>
- </bean>
- <bean id="org.apache.bval.example.Address"
- impl="org.apache.bval.example.BusinessObjectAddress">
- <feature key="DOMAIN">
- <value class="string">TestObjects</value>
- </feature>
- <property name="city"/>
- <property name="country" mandatory="true" maxLength="10"/>
- <relationship name="owner" beanId="org.apache.bval.example.BusinessObject"
- mandatory="true"/>
- </bean>
-</beanInfos>
\ No newline at end of file
diff --git a/trunk/pom.xml b/trunk/pom.xml
deleted file mode 100644
index 3eba1b4..0000000
--- a/trunk/pom.xml
+++ /dev/null
@@ -1,624 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!--
- 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.
---><!--
- Maven release plugin requires the project tag to be on a single line.
---><project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
-
- <modelVersion>4.0.0</modelVersion>
-
- <parent>
- <groupId>org.apache</groupId>
- <artifactId>apache</artifactId>
- <version>10</version>
- <relativePath />
- </parent>
-
- <groupId>org.apache.bval</groupId>
- <artifactId>bval-parent</artifactId>
- <name>Apache BVal :: bval-parent (Parent POM)</name>
- <packaging>pom</packaging>
- <version>0.4</version>
-
- <description>Apache BVal parent pom</description>
-
- <properties>
- <site.deploy.url>scp://people.apache.org/home/${user.name}/public_html/bval/${project.version}/staging-site</site.deploy.url>
- </properties>
-
- <inceptionYear>2010</inceptionYear>
-
- <url>http://bval.apache.org/</url>
-
- <scm>
- <connection>scm:svn:http://svn.apache.org/repos/asf/bval/tags/0.4</connection>
- <developerConnection>scm:svn:https://svn.apache.org/repos/asf/bval/tags/0.4</developerConnection>
- <url>http://svn.apache.org/repos/asf/bval/tags/0.4</url>
- </scm>
-
- <mailingLists>
- <mailingList>
- <name>BVal User List</name>
- <subscribe>user-subscribe@bval.apache.org</subscribe>
- <unsubscribe>user-unsubscribe@bval.apache.org</unsubscribe>
- <post>mailto:user@bval.apache.org</post>
- <archive>http://mail-archives.apache.org/mod_mbox/bval-user/</archive>
- </mailingList>
-
- <mailingList>
- <name>BVal Developer List</name>
- <subscribe>dev-subscribe@bval.apache.org</subscribe>
- <unsubscribe>dev-unsubscribe@bval.apache.org</unsubscribe>
- <post>mailto:dev@bval.apache.org</post>
- <archive>http://mail-archives.apache.org/mod_mbox/bval-dev/</archive>
- </mailingList>
-
- <mailingList>
- <name>BVal Commits List</name>
- <subscribe>commits-subscribe@bval.apache.org</subscribe>
- <unsubscribe>commits-unsubscribe@bval.apache.org</unsubscribe>
- <post>mailto:commits@bval.apache.org</post>
- <archive>http://mail-archives.apache.org/mod_mbox/bval-commits/</archive>
- </mailingList>
- </mailingLists>
-
- <issueManagement>
- <url>https://issues.apache.org/jira/browse/BVAL</url>
- </issueManagement>
-
- <developers>
- <developer>
- <id>allee8285</id>
- <name>Albert Lee</name>
- <email>allee8285@apache.org</email>
- <roles>
- <role>PMC Member</role>
- </roles>
- </developer>
- <developer>
- <id>carlosvara</id>
- <name>Carlos Vara</name>
- <email>carlosvara@apache.org</email>
- <roles>
- <role>PMC Member</role>
- </roles>
- </developer>
- <developer>
- <id>djencks</id>
- <name>David Jencks</name>
- <email>djencks@apache.org</email>
- <organization>IBM</organization>
- <roles>
- <role>PMC Member</role>
- </roles>
- </developer>
- <developer>
- <id>dwoods</id>
- <name>Donald Woods</name>
- <email>dwoods@apache.org</email>
- <organization>IBM</organization>
- <roles>
- <role>PMC Member</role>
- </roles>
- </developer>
- <developer>
- <id>gpetracek</id>
- <name>Gerhard Petracek</name>
- <email>gpetracek@apache.org</email>
- <organization>IRIAN Solutions GmbH</organization>
- <roles>
- <role>PMC Member</role>
- </roles>
- </developer>
- <developer>
- <id>jrbauer</id>
- <name>Jeremy Bauer</name>
- <email>jrbauer@apache.org</email>
- <organization>IBM</organization>
- <roles>
- <role>PMC Member</role>
- </roles>
- </developer>
- <developer>
- <id>kevan</id>
- <name>Kevan Miller</name>
- <email>kevan@apache.org</email>
- <organization>IBM</organization>
- <roles>
- <role>PMC Member</role>
- </roles>
- </developer>
- <developer>
- <id>lresende</id>
- <name>Luciano Resende</name>
- <email>lresende@apache.org</email>
- <organization>IBM</organization>
- <roles>
- <role>PMC Member</role>
- </roles>
- </developer>
- <developer>
- <id>struberg</id>
- <name>Mark Struberg</name>
- <email>struberg@apache.org</email>
- <roles>
- <role>PMC Member</role>
- </roles>
- </developer>
- <developer>
- <id>mbenson</id>
- <name>Matt Benson</name>
- <email>mbenson@apache.org</email>
- <roles>
- <role>PMC Member</role>
- </roles>
- </developer>
- <developer>
- <id>matzew</id>
- <name>Matthias Wessendorf</name>
- <email>matzew@apache.org</email>
- <organization>Kaazing</organization>
- <roles>
- <role>PMC Member</role>
- </roles>
- </developer>
- <developer>
- <id>mnour</id>
- <name>Mohammad Nour El-Din</name>
- <email>mnour@apache.org</email>
- <organization>Thebe Technology</organization>
- <roles>
- <role>PMC Member</role>
- </roles>
- </developer>
- <developer>
- <id>romanstumm</id>
- <name>Roman Stumm</name>
- <email>romanstumm@apache.org</email>
- <organization>Viaboxx GmbH</organization>
- <roles>
- <role>PMC Member</role>
- </roles>
- </developer>
- <developer>
- <id>simonetripodi</id>
- <name>Simone Tripodi</name>
- <email>simonetripodi@apache.org</email>
- <roles>
- <role>PMC Member</role>
- </roles>
- </developer>
- </developers>
-
- <distributionManagement>
- <site>
- <id>people.apache.org</id>
- <url>${site.deploy.url}</url>
- </site>
- </distributionManagement>
-
- <reporting>
- <plugins>
- <plugin>
- <artifactId>maven-project-info-reports-plugin</artifactId>
- <version>2.1.1</version>
- </plugin>
- <plugin>
- <groupId>org.apache.maven.plugins</groupId>
- <artifactId>maven-javadoc-plugin</artifactId>
- <configuration>
- <show>package</show>
- <quiet>true</quiet>
- <source>1.5</source>
- <links>
- <link>http://java.sun.com/j2se/1.5.0/docs/api</link>
- <link>http://java.sun.com/javaee/6/docs/api</link>
- </links>
- </configuration>
- <reportSets>
- <reportSet>
- <reports>
- <report>javadoc</report>
- <report>test-javadoc</report>
- </reports>
- </reportSet>
- </reportSets>
- </plugin>
- <plugin>
- <groupId>org.codehaus.mojo</groupId>
- <artifactId>jdepend-maven-plugin</artifactId>
- <version>2.0-beta-2</version>
- </plugin>
- <plugin>
- <groupId>org.codehaus.mojo</groupId>
- <artifactId>findbugs-maven-plugin</artifactId>
- <version>2.3.2</version>
- </plugin>
- </plugins>
- </reporting>
-
- <!--
- default versions for dependencies that child modules may include
- -->
- <dependencyManagement>
- <dependencies>
- <!-- Default of Apache Geronimo version of the Spec API -->
- <dependency>
- <groupId>org.apache.geronimo.specs</groupId>
- <artifactId>geronimo-validation_1.0_spec</artifactId>
- <version>1.1</version>
- </dependency>
- <!-- Optional profile to use Spec RI API -->
- <dependency>
- <groupId>javax.validation</groupId>
- <artifactId>validation-api</artifactId>
- <version>1.0.0.GA</version>
- </dependency>
- <!-- JPA2 spec required for JPA TraversableResolver support -->
- <dependency>
- <groupId>org.apache.geronimo.specs</groupId>
- <artifactId>geronimo-jpa_2.0_spec</artifactId>
- <version>1.1</version>
- </dependency>
- <dependency>
- <groupId>junit</groupId>
- <artifactId>junit</artifactId>
- <version>4.8.2</version>
- </dependency>
- <dependency>
- <groupId>org.mockito</groupId>
- <artifactId>mockito-core</artifactId>
- <version>1.8.5</version>
- </dependency>
- <dependency>
- <groupId>org.apache.commons</groupId>
- <artifactId>commons-lang3</artifactId>
- <version>3.1</version>
- </dependency>
- <dependency>
- <groupId>commons-beanutils</groupId>
- <artifactId>commons-beanutils-core</artifactId>
- <version>1.8.3</version>
- <exclusions>
- <exclusion>
- <groupId>commons-logging</groupId>
- <artifactId>commons-logging</artifactId>
- </exclusion>
- </exclusions>
- </dependency>
- <dependency>
- <groupId>com.thoughtworks.xstream</groupId>
- <artifactId>xstream</artifactId>
- <version>1.3.1</version>
- </dependency>
- <!-- Optional - only used by bval-json -->
- <dependency>
- <groupId>org.freemarker</groupId>
- <artifactId>freemarker</artifactId>
- <version>2.3.15</version>
- </dependency>
- <!-- Optional - only used by bval-guice -->
- <dependency>
- <groupId>javax.inject</groupId>
- <artifactId>javax.inject</artifactId>
- <version>1</version>
- </dependency>
- <dependency>
- <groupId>com.google.inject</groupId>
- <artifactId>guice</artifactId>
- <version>3.0-rc2</version>
- </dependency>
- <dependency>
- <groupId>aopalliance</groupId>
- <artifactId>aopalliance</artifactId>
- <version>1.0</version>
- </dependency>
- <!-- Added mainly for testing -->
- <dependency>
- <groupId>org.slf4j</groupId>
- <artifactId>jcl-over-slf4j</artifactId>
- <version>1.6.1</version>
- </dependency>
- <dependency>
- <groupId>org.slf4j</groupId>
- <artifactId>slf4j-simple</artifactId>
- <version>1.6.1</version>
- </dependency>
- </dependencies>
- </dependencyManagement>
-
- <build>
- <defaultGoal>install</defaultGoal>
-
- <resources>
- <resource>
- <directory>src/main/resources</directory>
- </resource>
- </resources>
-
- <testResources>
- <testResource>
- <directory>src/test/resources</directory>
- </testResource>
- </testResources>
-
- <pluginManagement>
- <plugins>
- <plugin>
- <groupId>org.apache.maven.plugins</groupId>
- <artifactId>maven-compiler-plugin</artifactId>
- <configuration>
- <source>1.5</source>
- <target>1.5</target>
- <encoding>${project.build.sourceEncoding}</encoding>
- </configuration>
- </plugin>
- <plugin>
- <groupId>org.apache.maven.plugins</groupId>
- <artifactId>maven-jar-plugin</artifactId>
- <configuration>
- <archive>
- <manifest>
- <addDefaultImplementationEntries>true</addDefaultImplementationEntries>
- </manifest>
- <manifestEntries>
- <Implementation-Build>${buildNumber}</Implementation-Build>
- <Specification-Title>JSR-303 Bean Validation</Specification-Title>
- <Specification-Vendor>Sun Microsystems, Inc.</Specification-Vendor>
- <Specification-Version>1.0</Specification-Version>
- </manifestEntries>
- </archive>
- </configuration>
- </plugin>
- <plugin>
- <groupId>org.apache.maven.plugins</groupId>
- <artifactId>maven-javadoc-plugin</artifactId>
- <configuration>
- <encoding>${project.build.sourceEncoding}</encoding>
- <additionalparam>${javadoc.additionalparam}</additionalparam>
- <aggregate>true</aggregate>
- <subpackages>org.apache</subpackages>
- <verbose>false</verbose>
- <maxmemory>512m</maxmemory>
- <links>
- <link>http://java.sun.com/j2se/1.5.0/docs/api</link>
- <link>http://java.sun.com/javaee/6/docs/api</link>
- </links>
- </configuration>
- </plugin>
- <plugin>
- <groupId>org.apache.maven.plugins</groupId>
- <artifactId>maven-remote-resources-plugin</artifactId>
- <executions>
- <execution>
- <id>process-remote-resources</id>
- <goals>
- <goal>process</goal>
- </goals>
- <configuration>
- <resourceBundles>
- <resourceBundle>org.apache:apache-jar-resource-bundle:1.4</resourceBundle>
- </resourceBundles>
- </configuration>
- </execution>
- </executions>
- </plugin>
- <plugin>
- <groupId>org.codehaus.mojo</groupId>
- <artifactId>jdepend-maven-plugin</artifactId>
- <version>2.0-beta-2</version>
- </plugin>
- <plugin>
- <groupId>org.apache.felix</groupId>
- <artifactId>maven-bundle-plugin</artifactId>
- <version>2.0.1</version>
- <extensions>true</extensions>
- <configuration>
- <instructions>
- <Implementation-Title>${project.name}</Implementation-Title>
- <Implementation-Version>${project.version}</Implementation-Version>
- <Bundle-DocURL>${project.url}</Bundle-DocURL>
- </instructions>
- </configuration>
- </plugin>
- <plugin>
- <groupId>org.codehaus.mojo</groupId>
- <artifactId>ianal-maven-plugin</artifactId>
- <version>1.0-alpha-1</version>
- <executions>
- <execution>
- <goals>
- <goal>verify-legal-files</goal>
- </goals>
- <configuration>
- <!-- Fail the build if any artifacts are missing legal files -->
- <strict>true</strict>
- </configuration>
- </execution>
- </executions>
- </plugin>
- <plugin>
- <groupId>org.apache.rat</groupId>
- <artifactId>apache-rat-plugin</artifactId>
- <version>0.7</version>
- <executions>
- <execution>
- <phase>verify</phase>
- <goals>
- <goal>check</goal>
- </goals>
- </execution>
- </executions>
- <configuration>
- <excludeSubProjects>false</excludeSubProjects>
- <numUnapprovedLicenses>0</numUnapprovedLicenses>
- <excludes>
- <!-- General informational files -->
- <exclude>README.txt</exclude>
- <exclude>CHANGES.txt</exclude>
- <!-- generated content -->
- <exclude>release.properties</exclude>
- <exclude>DEPENDENCIES</exclude>
- <exclude>**/.*/**</exclude>
- <exclude>**/*.log</exclude>
- <exclude>**/maven-eclipse.xml</exclude>
- <exclude>**/rat.txt</exclude>
- <exclude>**/target/**/*</exclude>
- <exclude>**/*.iml</exclude>
- <exclude>**/*.ipr</exclude>
- <exclude>**/*.iws</exclude>
- </excludes>
- </configuration>
- </plugin>
- <plugin>
- <groupId>org.apache.maven.plugins</groupId>
- <artifactId>maven-checkstyle-plugin</artifactId>
- <version>2.2</version>
- <dependencies>
- <dependency>
- <groupId>org.codehaus.plexus</groupId>
- <artifactId>plexus-velocity</artifactId>
- <version>1.1.3</version>
- </dependency>
- </dependencies>
- </plugin>
- <!-- inherited from apache-10.pom, but need config updates -->
- <plugin>
- <groupId>org.apache.maven.plugins</groupId>
- <artifactId>maven-release-plugin</artifactId>
- <configuration>
- <useReleaseProfile>false</useReleaseProfile>
- <goals>deploy site site-deploy</goals>
- <arguments>-Papache-release</arguments>
- <autoVersionSubmodules>true</autoVersionSubmodules>
- <preparationGoals>clean install</preparationGoals>
- </configuration>
- </plugin>
- <plugin>
- <groupId>org.apache.maven.plugins</groupId>
- <artifactId>maven-surefire-plugin</artifactId>
- <version>2.12</version>
- </plugin>
- <plugin>
- <groupId>org.apache.maven.plugins</groupId>
- <artifactId>maven-surefire-report-plugin</artifactId>
- <version>2.12</version>
- </plugin>
- <plugin>
- <groupId>org.codehaus.mojo</groupId>
- <artifactId>findbugs-maven-plugin</artifactId>
- <version>2.3.2</version>
- </plugin>
- <plugin>
- <groupId>org.codehaus.mojo</groupId>
- <artifactId>buildnumber-maven-plugin</artifactId>
- <version>1.0-beta-4</version>
- </plugin>
- <plugin>
- <groupId>org.apache.maven.plugins</groupId>
- <artifactId>maven-source-plugin</artifactId>
- <version>2.1.1</version>
- </plugin>
- </plugins>
- </pluginManagement>
-
- <plugins>
- <plugin>
- <groupId>org.apache.maven.plugins</groupId>
- <artifactId>maven-enforcer-plugin</artifactId>
- <executions>
- <execution>
- <phase>validate</phase>
- <goals>
- <goal>enforce</goal>
- </goals>
- <configuration>
- <rules>
- <requireMavenVersion>
- <version>[2.2.1,)</version>
- </requireMavenVersion>
- <requireJavaVersion>
- <version>[1.5,)</version>
- </requireJavaVersion>
- </rules>
- </configuration>
- </execution>
- </executions>
- </plugin>
- <plugin>
- <groupId>org.apache.felix</groupId>
- <artifactId>maven-bundle-plugin</artifactId>
- </plugin>
- <plugin>
- <groupId>org.apache.rat</groupId>
- <artifactId>apache-rat-plugin</artifactId>
- <version>0.7</version>
- </plugin>
- <plugin>
- <groupId>org.codehaus.mojo</groupId>
- <artifactId>ianal-maven-plugin</artifactId>
- </plugin>
- <plugin>
- <groupId>org.codehaus.mojo</groupId>
- <artifactId>buildnumber-maven-plugin</artifactId>
- <configuration>
- <getRevisionOnlyOnce>true</getRevisionOnlyOnce>
- <revisionOnScmFailure>offline</revisionOnScmFailure>
- </configuration>
- <executions>
- <execution>
- <phase>validate</phase>
- <goals>
- <goal>create</goal>
- </goals>
- </execution>
- </executions>
- </plugin>
- <plugin>
- <groupId>org.apache.maven.plugins</groupId>
- <artifactId>maven-source-plugin</artifactId>
- <executions>
- <execution>
- <id>attach-source</id>
- <goals>
- <goal>jar</goal>
- </goals>
- </execution>
- </executions>
- </plugin>
- <!-- Don't include in all builds for now
- <plugin>
- <groupId>org.codehaus.mojo</groupId>
- <artifactId>findbugs-maven-plugin</artifactId>
- </plugin>
- -->
- </plugins>
- </build>
-
- <modules>
- <module>bval-core</module>
- <module>bval-xstream</module>
- <module>bval-jsr303</module>
- <module>bundle</module>
- <module>bval-json</module>
- <module>bval-guice</module>
- <module>bval-tck</module>
- <module>bval-extras</module>
- </modules>
-
-</project>