001: /*
002: * $Header: /cvsroot/jvalidate/jvalidate-framework/jvalidate/src/main/java/nl/knowlogy/validation/ClassValidator.java,v 1.8 2007/11/13 15:35:45 roberthofstra Exp $
003: * $Revision: 1.8 $
004: * $Date: 2007/11/13 15:35:45 $
005: *
006: *
007: * Created on Oct 6, 2004
008: *
009: * All right reserved(c) 2004, Knowlogy
010: *
011: * Copyright 2004 - 2005 Knowlogy, the Netherlands. All rights reserved.
012: * All Knowlogy brand and product names are trademarks or registered trademarks
013: * of Knowlogy in the Netherlands and other countries.
014: *
015: * No part of this publication may be reproduced, transmitted, stored in a retrieval system,
016: * or translated into any human or computer language, in any form, or by any means, electronic,
017: * mechanical, magnetic, optical, chemical, manual, or otherwise,
018: * without the prior written permission of the copyright owner, Knowlogy.
019: *
020: */
021: package nl.knowlogy.validation;
022:
023: import java.util.List;
024:
025: /**
026: * <p>
027: * A <tt>ClassValidator</tt> validates objects of specific classes and can be registered
028: * with a <tt>ValidationEngine</tt>. The <tt>ValidationEngine</tt> uses these classvalidators
029: * for validating objects, by calling the <tt>validate</tt> method.
030: * <p>
031: * <p>
032: * <tt>ClassValidatorImpl</tt> forms the baseclass for objects which are implementing the
033: * <tt>ClassValidator</tt> interface. These validation classes can be generated with XDoclet tags or
034: * annotations in classes which they are validating.
035: * </p>
036: *
037: *
038: *
039: * @see PropertyValidation
040: * @see ValidationEngine
041: *
042: * @author <a href="mailto:robert.hofstra@knowlogy.nl">Robert Hofstra, Knowlogy</a>
043: */
044: public interface ClassValidator {
045:
046: /**
047: * Returns clazz that can be validated by this validator.
048: * Subclasses of this class can also be validated by this class.
049: *
050: *
051: * @return class
052: */
053: Class getClazz();
054:
055: /**
056: * Adds a PropertyValidation to the classValidator. This can be used to
057: * add programmatically add additional validations to generated classvalidators.
058: *
059: * @param propertyValidation
060: * @see PropertyValidation
061: */
062: void add(PropertyValidation propertyValidation);
063:
064: /**
065: * Add a property identified to groups.
066: *
067: * @param groupNames string with names of groups seperated by <tt>","</tt>.
068: * @param propertyName name of the property
069: */
070: void addPropertyToGroups(String groupNames, String propertyName);
071:
072: /**
073: * Validates the object, if an error is signaled a Validation exception is thrown.
074: *
075: * @param toValidate object to validate
076: */
077: void validate(Object toValidate);
078:
079: /**
080: * Validates the whole object. In case of validation errors, validation messages are
081: * added to the messages.
082: *
083: * @param toValidate object to validate
084: * @param messages container to which validate messages are added.
085: */
086: void validate(Object toValidate, Messages messages);
087:
088: /**
089: * Validates only the properties, which are contained in the group. This group is
090: * identified by groupname. In case of validation errors, validation messages are
091: * added to the messages.
092: *
093: * @param toValidate object which group is validated.
094: * @param groupName name of the group.
095: * @param messages container to which validate messages are added.
096: */
097: void validateGroup(Object toValidate, String groupName,
098: Messages messages);
099:
100: /**
101: * Validates only the properties, supplied in de propertyNames list, of
102: * the object toValidate. In case of validation errors, validation messages are
103: * added to the messages.
104: *
105: * @param toValidate object which properties are validated
106: * @param propertyNames List of names (String) of the properties which are
107: * validated
108: * @param messages container to which validate messages are added.
109: */
110: void validateProperties(Object toValidate, List propertyNames,
111: Messages messages);
112:
113: /**
114: * Validates the value of a property identified with name. This to validate a value
115: * without setting the value of the javabean property. Validation messages are
116: * provided without a object which has the value.
117: *
118: * @param propertyName name of the property
119: * @param value value
120: * @param messages a messages container to provide messages.
121: */
122: void validatePropertyValue(String propertyName, Object value,
123: Messages messages);
124: }
|