package org.tony.annotationvalidate;
import static org.junit.Assert.*;
import java.lang.annotation.ElementType;
import java.lang.annotation.Retention;
import java.lang.annotation.RetentionPolicy;
import java.lang.annotation.Target;
import org.junit.After;
import org.junit.Before;
import org.junit.Test;
import org.tony.annotationvalidate.AnnotationValidable;
import org.tony.annotationvalidate.ValidateException;
import org.tony.annotationvalidate.ValidateInt;
import org.tony.annotationvalidate.Validator;
/**
*
* @author chzou
*
*/
public class ValidatorTest {
@Before
public void setUp() throws Exception {
}
@After
public void tearDown() throws Exception {
}
@Test
public void testValidate_validateFieldInCurrentClass() {
AnnotationValidableNormalImp validatedObj = new AnnotationValidableNormalImp();
try {
Validator.getInstance().validate(validatedObj);
fail("Can not be here, the exception should be thrown.");
}
catch(ValidateException ex)
{
assertTrue("Actual Error Message: " + ex.getMessage(), ex.getMessage().indexOf(validatedObj.getErrorMessageFragment()) >= 0);
}
}
@Test
public void testValidate_noMatchedValidAnnotationOnFieldInCurrentClass() {
NoMatchedAnnotationImp validatedObj = new NoMatchedAnnotationImp();
try {
Validator.getInstance().validate(validatedObj);
assertTrue("There should not validation found", true);
}
catch(ValidateException ex)
{
fail("Can not be here, the exception should never be thrown.");
}
}
@Test
public void testValidate_noValidateHandlerForTheAnnotationInCurrentClass() {
NoHandlerAnnotationImp validatedObj = new NoHandlerAnnotationImp();
try {
Validator.getInstance().validate(validatedObj);
fail("Can not be here, the exception should be thrown.");
}
catch(ValidateException ex)
{
assertTrue("Actual Error Message: " + ex.getMessage(), ex.getMessage().indexOf(validatedObj.getErrorMessageFragment()) >= 0);
}
}
@Test
public void testValidate_validateFieldInSuperClass() {
SubclassOfAnnotationValidableNormalImp validatedObj = new SubclassOfAnnotationValidableNormalImp();
try {
Validator.getInstance().validate(validatedObj);
fail("Can not be here, the exception should be thrown.");
}
catch(ValidateException ex)
{
assertTrue("Actual Error Message: " + ex.getMessage(), ex.getMessage().indexOf(validatedObj.getErrorMessageFragment()) >= 0);
}
}
@Test
public void testValidate_noMatchedValidAnnotationOnFieldInSuperClass() {
SubclassOfNoMatchedAnnotationImp validatedObj = new SubclassOfNoMatchedAnnotationImp();
try {
Validator.getInstance().validate(validatedObj);
assertTrue("There should not validation found", true);
}
catch(ValidateException ex)
{
fail("Can not be here, the exception should never be thrown.");
}
}
@Test
public void testValidate_noValidateHandlerForTheAnnotationInSuperClass() {
SubclassOfNoHandlerAnnotationImp validatedObj = new SubclassOfNoHandlerAnnotationImp();
try {
Validator.getInstance().validate(validatedObj);
fail("Can not be here, the exception should be thrown.");
}
catch(ValidateException ex)
{
assertTrue("Actual Error Message: " + ex.getMessage(), ex.getMessage().indexOf(validatedObj.getErrorMessageFragment()) >= 0);
}
}
@Test
public void testValidate_validateFieldInSuperOfSuperClass() {
SubclassOfSubclassOfAnnotationValidableNormalImp validatedObj = new SubclassOfSubclassOfAnnotationValidableNormalImp();
try {
Validator.getInstance().validate(validatedObj);
fail("Can not be here, the exception should be thrown.");
}
catch(ValidateException ex)
{
assertTrue("Actual Error Message: " + ex.getMessage(), ex.getMessage().indexOf(validatedObj.getErrorMessageFragment()) >= 0);
}
}
@Test
public void testValidate_noMatchedValidAnnotationOnFieldInSuperOfSuperClass() {
SubclassOfSubclassOfNoMatchedAnnotationImp validatedObj = new SubclassOfSubclassOfNoMatchedAnnotationImp();
try {
Validator.getInstance().validate(validatedObj);
assertTrue("There should not validation found", true);
}
catch(ValidateException ex)
{
fail("Can not be here, the exception should never be thrown.");
}
}
@Test
public void testValidate_noValidateHandlerForTheAnnotationInSuperOfSuperClass() {
SubclassOfSubclassOfNoHandlerAnnotationImp validatedObj = new SubclassOfSubclassOfNoHandlerAnnotationImp();
try {
Validator.getInstance().validate(validatedObj);
fail("Can not be here, the exception should be thrown.");
}
catch(ValidateException ex)
{
assertTrue("Actual Error Message: " + ex.getMessage(), ex.getMessage().indexOf(validatedObj.getErrorMessageFragment()) >= 0);
}
}
@Test
public void testValidate_validateFieldInContainerOfValidatedClass() {
ContainerOfAnnotationValidableNormalImp validatedObj = new ContainerOfAnnotationValidableNormalImp();
try {
Validator.getInstance().validate(validatedObj);
fail("Can not be here, the exception should be thrown.");
}
catch(ValidateException ex)
{
assertTrue("Actual Error Message: " + ex.getMessage(), ex.getMessage().indexOf(validatedObj.getImpl().getErrorMessageFragment()) >= 0);
}
}
@Test
public void testValidate_validateFieldInContainerOfContainerOfValidatedClass() {
ContainerOfContainerOfAnnotationValidableNormalImp validatedObj = new ContainerOfContainerOfAnnotationValidableNormalImp();
try {
Validator.getInstance().validate(validatedObj);
fail("Can not be here, the exception should be thrown.");
}
catch(ValidateException ex)
{
assertTrue("Actual Error Message: " + ex.getMessage(), ex.getMessage().indexOf(validatedObj.getImpl().getImpl().getErrorMessageFragment()) >= 0);
}
}
}
class AnnotationValidableNormalImp implements AnnotationValidable {
public static final int MIN = 1;
@ValidateInt(min=MIN)
private int size = 0;
public int getSize() {
return size;
}
public void setSize(int size) {
this.size = size;
}
public String getErrorMessageFragment() {
return ",The min value should is:" + MIN;
}
}
class SubclassOfAnnotationValidableNormalImp extends AnnotationValidableNormalImp {
}
class SubclassOfSubclassOfAnnotationValidableNormalImp extends SubclassOfAnnotationValidableNormalImp {
}
class ContainerOfAnnotationValidableNormalImp implements AnnotationValidable {
AnnotationValidableNormalImp impl = new AnnotationValidableNormalImp();
public AnnotationValidableNormalImp getImpl() {
return impl;
}
public void setImpl(AnnotationValidableNormalImp impl) {
this.impl = impl;
}
}
class ContainerOfContainerOfAnnotationValidableNormalImp implements AnnotationValidable {
ContainerOfAnnotationValidableNormalImp impl = new ContainerOfAnnotationValidableNormalImp();
public ContainerOfAnnotationValidableNormalImp getImpl() {
return impl;
}
public void setImpl(ContainerOfAnnotationValidableNormalImp impl) {
this.impl = impl;
}
}
//
//here is ValidatEIntt, not ValidateInt
//
@Retention(RetentionPolicy.RUNTIME)
@Target(ElementType.FIELD)
@interface ValidatEIntt {
int min() default Integer.MIN_VALUE;
int max() default Integer.MAX_VALUE;
String message() default "Value of the integer is not in expected scope.";
}
class NoMatchedAnnotationImp implements AnnotationValidable {
public static final int MIN = 1;
//here is ValidatEIntt, not ValidateInt
@ValidatEIntt(min=MIN)
private int size = 0;
public int getSize() {
return size;
}
public void setSize(int size) {
this.size = size;
}
}
class SubclassOfNoMatchedAnnotationImp extends NoMatchedAnnotationImp {
}
class SubclassOfSubclassOfNoMatchedAnnotationImp extends SubclassOfNoMatchedAnnotationImp {
}
没有合适的资源?快使用搜索试试~ 我知道了~
基于Annotation写的简单数据校验框架
共79个文件
class:45个
java:32个
project:1个
5星 · 超过95%的资源 需积分: 10 428 下载量 71 浏览量
2010-08-23
15:48:33
上传
评论 5
收藏 76KB ZIP 举报
温馨提示
在工作中,我看到JavaEE6中提供了一个基于注解的Bean校验框架,另外Hibernate也提供了类似功能的基于java注解的校验,我们产品也需要这种功能,无奈用的是JavaEE5,因此我自己写了一个简单的基于注解的校验框架,可以校验一些简单的数据类型,满足基本的需求。源码和UT都在里面。
资源推荐
资源详情
资源评论
收起资源包目录
AnnotationValidateFramework.zip (79个子文件)
AnnotationValidateFramework
.project 403B
bin
org
tony
annotationvalidate
ValidateSizeHandlerTest.class 2KB
AnnotationValidable.class 147B
ValidateDigit.class 510B
SubclassOfSubclassOfNoMatchedAnnotationImp.class 422B
ValidateException.class 832B
SubclassOfNoMatchedAnnotationImp.class 392B
ValidateIntHandlerTest.class 2KB
ValidatorTest.class 6KB
ValidatEIntt.class 586B
GetFiledValueTest.class 1KB
ValidateDigitHandler.class 3KB
SubclassOfSubclassOfNoHandlerAnnotationImp.class 422B
ValidateNotEmptyHandler.class 3KB
AnnotationValidableNormalImp.class 895B
GetFiledValue.class 2KB
SubclassOfSubclassOfAnnotationValidableNormalImp.class 440B
ValidateIntHandler.class 4KB
SubclassOfNoHandlerAnnotationImp.class 392B
Handler.class 296B
Validator.class 5KB
ValidateNotEmpty.class 524B
ValidateDigitHandlerTest.class 2KB
ValidateStringInHandlerTest.class 2KB
ValidateNotNullHandler.class 3KB
ValidateSizeHandler.class 4KB
NoHandlerAnnotationImp.class 886B
ValidatePatternHandlerTest.class 2KB
ValidatePatternHandler.class 4KB
ValidateNotEmptyHandlerTest.class 3KB
ValidateNotLaterThanTest.class 3KB
ValidateNotLaterThan.class 555B
NoMatchedAnnotationImp.class 744B
ValidateInt.class 583B
ValidateNotNullHandlerTest.class 2KB
ValidateSize.class 565B
ValidateNotLaterThanHandler.class 4KB
ValidateStringIn.class 519B
ValidateStringInHandler.class 4KB
ContainerOfAnnotationValidableNormalImp.class 883B
ValidateNoHandler.class 591B
ContainerOfContainerOfAnnotationValidableNormalImp.class 949B
AnnotationValidateModelStub.class 4KB
ValidateNotNull.class 510B
SubclassOfAnnotationValidableNormalImp.class 410B
ValidatePattern.class 532B
test
org
tony
annotationvalidate
ValidatorTest.java 9KB
ValidateNotEmptyHandlerTest.java 2KB
ValidateStringInHandlerTest.java 1KB
ValidateNotLaterThanTest.java 2KB
ValidatePatternHandlerTest.java 1KB
ValidateSizeHandlerTest.java 1KB
AnnotationValidateModelStub.java 3KB
ValidateDigitHandlerTest.java 2KB
GetFiledValueTest.java 970B
ValidateNotNullHandlerTest.java 1KB
ValidateIntHandlerTest.java 1KB
src
org
tony
annotationvalidate
ValidateDigit.java 551B
ValidateInt.java 636B
ValidateNotEmptyHandler.java 2KB
ValidateNotLaterThan.java 608B
ValidatePatternHandler.java 3KB
ValidatePattern.java 580B
AnnotationValidable.java 180B
ValidateSize.java 615B
ValidateNotEmpty.java 482B
ValidateSizeHandler.java 3KB
ValidateStringIn.java 574B
ValidateNotNullHandler.java 2KB
ValidateNotNull.java 457B
ValidateStringInHandler.java 2KB
Handler.java 370B
Validator.java 4KB
GetFiledValue.java 1KB
ValidateDigitHandler.java 2KB
ValidateException.java 608B
ValidateNotLaterThanHandler.java 3KB
ValidateIntHandler.java 3KB
.classpath 353B
共 79 条
- 1
chjttony
- 粉丝: 2143
- 资源: 41
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
最新资源
- Screenshot_20240427_031602.jpg
- 网页PDF_2024年04月26日 23-46-14_QQ浏览器网页保存_QQ浏览器转格式(6).docx
- 直接插入排序,冒泡排序,直接选择排序.zip
- 在排序2的基础上,再次对快排进行优化,其次增加快排非递归,归并排序,归并排序非递归版.zip
- 实现了7种排序算法.三种复杂度排序.三种nlogn复杂度排序(堆排序,归并排序,快速排序)一种线性复杂度的排序.zip
- 冒泡排序 直接选择排序 直接插入排序 随机快速排序 归并排序 堆排序.zip
- 课设-内部排序算法比较 包括冒泡排序、直接插入排序、简单选择排序、快速排序、希尔排序、归并排序和堆排序.zip
- Python排序算法.zip
- C语言实现直接插入排序、希尔排序、选择排序、冒泡排序、堆排序、快速排序、归并排序、计数排序,并带图详解.zip
- 常用工具集参考用于图像等数据处理
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功
- 1
- 2
- 3
- 4
- 5
- 6
前往页