From 9f624ec2bfc7e6b99fe84e2ac6b640c60a523be3 Mon Sep 17 00:00:00 2001 From: Robin Bygrave Date: Tue, 9 Apr 2013 00:05:42 +1200 Subject: [PATCH] Remove Validation and LDAP features --- pom.xml | 7 + .../server/core/DefaultServer.java | 35 --- .../server/core/InternalConfiguration.java | 2 +- .../server/core/PersistRequestBean.java | 13 -- .../server/deploy/BeanCollectionHelp.java | 7 - .../server/deploy/BeanDescriptor.java | 114 +--------- .../server/deploy/BeanDescriptorManager.java | 33 --- .../server/deploy/BeanListHelp.java | 19 -- .../server/deploy/BeanMapHelp.java | 22 -- .../server/deploy/BeanProperty.java | 71 +------ .../server/deploy/BeanPropertyAssocMany.java | 13 -- .../server/deploy/BeanPropertyAssocOne.java | 8 - .../server/deploy/BeanSetHelp.java | 21 -- .../deploy/meta/DeployBeanProperty.java | 39 ---- .../deploy/meta/DeployBeanPropertyLists.java | 18 -- .../deploy/parse/AnnotationAssocOnes.java | 2 +- .../server/deploy/parse/AnnotationFields.java | 56 +---- .../server/deploy/parse/DeployUtil.java | 19 -- .../server/persist/DefaultPersistExecute.java | 200 +++++++++--------- .../server/persist/DefaultPersister.java | 5 +- .../com/avaje/tests/model/basic/Address.java | 9 +- .../com/avaje/tests/model/basic/Country.java | 6 +- .../com/avaje/tests/model/basic/Customer.java | 8 +- .../com/avaje/tests/model/basic/Order.java | 2 +- .../com/avaje/tests/model/basic/Phone.java | 3 +- .../com/avaje/tests/model/basic/Product.java | 4 +- .../tests/model/basic/TWithPreInsert.java | 5 +- 27 files changed, 132 insertions(+), 609 deletions(-) diff --git a/pom.xml b/pom.xml index 966bc14e6..3e64ac5eb 100644 --- a/pom.xml +++ b/pom.xml @@ -50,6 +50,13 @@ provided + + javax.validation + validation-api + 1.0.0.GA + provided + + javax.servlet servlet-api diff --git a/src/main/java/com/avaje/ebeaninternal/server/core/DefaultServer.java b/src/main/java/com/avaje/ebeaninternal/server/core/DefaultServer.java index cf0e693cc..c65412d1d 100644 --- a/src/main/java/com/avaje/ebeaninternal/server/core/DefaultServer.java +++ b/src/main/java/com/avaje/ebeaninternal/server/core/DefaultServer.java @@ -32,7 +32,6 @@ import com.avaje.ebean.Filter; import com.avaje.ebean.FutureIds; import com.avaje.ebean.FutureList; import com.avaje.ebean.FutureRowCount; -import com.avaje.ebean.InvalidValue; import com.avaje.ebean.PagingList; import com.avaje.ebean.Query; import com.avaje.ebean.QueryIterator; @@ -119,11 +118,6 @@ public final class DefaultServer implements SpiEbeanServer { private static final Logger logger = Logger.getLogger(DefaultServer.class.getName()); - /** - * Used when no errors are found validating a property. - */ - private static final InvalidValue[] EMPTY_INVALID_VALUES = new InvalidValue[0]; - private final String serverName; private final DatabasePlatform databasePlatform; @@ -521,35 +515,6 @@ public final class DefaultServer implements SpiEbeanServer { beanLoader.loadBean(ebi); } - public InvalidValue validate(Object bean) { - if (bean == null) { - return null; - } - BeanDescriptor beanDescriptor = getBeanDescriptor(bean.getClass()); - return beanDescriptor.validate(true, bean); - } - - public InvalidValue[] validate(Object bean, String propertyName, Object value) { - if (bean == null) { - return null; - } - BeanDescriptor beanDescriptor = getBeanDescriptor(bean.getClass()); - BeanProperty prop = beanDescriptor.getBeanProperty(propertyName); - if (prop == null) { - String msg = "property " + propertyName + " was not found?"; - throw new PersistenceException(msg); - } - if (value == null) { - value = prop.getValue(bean); - } - List errors = prop.validate(true, value); - if (errors == null) { - return EMPTY_INVALID_VALUES; - } else { - return InvalidValue.toArray(errors); - } - } - public Map diff(Object a, Object b) { if (a == null) { return null; diff --git a/src/main/java/com/avaje/ebeaninternal/server/core/InternalConfiguration.java b/src/main/java/com/avaje/ebeaninternal/server/core/InternalConfiguration.java index e6a899f52..11f71f557 100644 --- a/src/main/java/com/avaje/ebeaninternal/server/core/InternalConfiguration.java +++ b/src/main/java/com/avaje/ebeaninternal/server/core/InternalConfiguration.java @@ -176,7 +176,7 @@ public class InternalConfiguration { public Persister createPersister(SpiEbeanServer server) { - return new DefaultPersister(server, serverConfig.isValidateOnSave(), binder, beanDescriptorManager, pstmtBatch); + return new DefaultPersister(server, binder, beanDescriptorManager, pstmtBatch); } public PstmtBatch getPstmtBatch() { diff --git a/src/main/java/com/avaje/ebeaninternal/server/core/PersistRequestBean.java b/src/main/java/com/avaje/ebeaninternal/server/core/PersistRequestBean.java index 0b19521cb..3d58118e3 100644 --- a/src/main/java/com/avaje/ebeaninternal/server/core/PersistRequestBean.java +++ b/src/main/java/com/avaje/ebeaninternal/server/core/PersistRequestBean.java @@ -6,8 +6,6 @@ import java.util.Set; import javax.persistence.OptimisticLockException; -import com.avaje.ebean.InvalidValue; -import com.avaje.ebean.ValidationException; import com.avaje.ebean.annotation.ConcurrencyMode; import com.avaje.ebean.bean.EntityBean; import com.avaje.ebean.bean.EntityBeanIntercept; @@ -452,17 +450,6 @@ public class PersistRequestBean extends PersistRequest implements BeanPersist return intercept; } - /** - * Validate the bean. This is not recursive and only runs the 'local' - * validation rules. - */ - public void validate() { - InvalidValue errs = beanDescriptor.validate(false, bean); - if (errs != null) { - throw new ValidationException(errs); - } - } - /** * Return true if this property is loaded (full bean or included in partial * bean). diff --git a/src/main/java/com/avaje/ebeaninternal/server/deploy/BeanCollectionHelp.java b/src/main/java/com/avaje/ebeaninternal/server/deploy/BeanCollectionHelp.java index e7f88b754..061624e23 100644 --- a/src/main/java/com/avaje/ebeaninternal/server/deploy/BeanCollectionHelp.java +++ b/src/main/java/com/avaje/ebeaninternal/server/deploy/BeanCollectionHelp.java @@ -1,10 +1,8 @@ package com.avaje.ebeaninternal.server.deploy; -import java.util.ArrayList; import java.util.Iterator; import com.avaje.ebean.EbeanServer; -import com.avaje.ebean.InvalidValue; import com.avaje.ebean.Query; import com.avaje.ebean.Transaction; import com.avaje.ebean.bean.BeanCollection; @@ -50,11 +48,6 @@ public interface BeanCollectionHelp { */ public BeanCollection createReference(Object parentBean, String propertyName); - /** - * Validate the List Set or Map. - */ - public ArrayList validate(Object manyValue); - /** * Refresh the List Set or Map. */ diff --git a/src/main/java/com/avaje/ebeaninternal/server/deploy/BeanDescriptor.java b/src/main/java/com/avaje/ebeaninternal/server/deploy/BeanDescriptor.java index d52bc2ac0..b146864f0 100644 --- a/src/main/java/com/avaje/ebeaninternal/server/deploy/BeanDescriptor.java +++ b/src/main/java/com/avaje/ebeaninternal/server/deploy/BeanDescriptor.java @@ -17,7 +17,6 @@ import java.util.logging.Logger; import javax.persistence.PersistenceException; -import com.avaje.ebean.InvalidValue; import com.avaje.ebean.Query; import com.avaje.ebean.Query.UseIndex; import com.avaje.ebean.SqlUpdate; @@ -38,7 +37,6 @@ import com.avaje.ebean.event.BeanPersistListener; import com.avaje.ebean.event.BeanQueryAdapter; import com.avaje.ebean.text.TextException; import com.avaje.ebean.text.json.JsonWriteBeanVisitor; -import com.avaje.ebean.validation.factory.Validator; import com.avaje.ebeaninternal.api.SpiEbeanServer; import com.avaje.ebeaninternal.api.SpiQuery; import com.avaje.ebeaninternal.api.SpiUpdatePlan; @@ -303,28 +301,6 @@ public class BeanDescriptor { private final Map namedUpdates; - /** - * Has local validation rules. - */ - private final boolean hasLocalValidation; - - /** - * Has local or recursive validation rules. - */ - private final boolean hasCascadeValidation; - - /** - * Properties with local validation rules. - */ - private final BeanProperty[] propertiesValidationLocal; - - /** - * Properties with local or cascade validation rules. - */ - private final BeanProperty[] propertiesValidationCascade; - - private final Validator[] beanValidators; - /** * Flag used to determine if saves can be skipped. */ @@ -483,13 +459,7 @@ public class BeanDescriptor { // Check if there are no cascade delete associated beans (also subject to // change in initialiseOther()). deleteRecurseSkippable = (0 == (propertiesOneExportedDelete.length + propertiesOneImportedDelete.length + propertiesManyDelete.length)); - - this.propertiesValidationLocal = listHelper.getPropertiesWithValidators(false); - this.propertiesValidationCascade = listHelper.getPropertiesWithValidators(true); - this.beanValidators = listHelper.getBeanValidators(); - this.hasLocalValidation = (propertiesValidationLocal.length > 0 || beanValidators.length > 0); - this.hasCascadeValidation = (propertiesValidationCascade.length > 0 || beanValidators.length > 0); - + // object used to handle Id values this.idBinder = owner.createIdBinder(propertiesId); } @@ -1260,88 +1230,6 @@ public class BeanDescriptor { return deleteRecurseSkippable; } - /** - * Return true if this type has local validation rules. - */ - public boolean hasLocalValidation() { - return hasLocalValidation; - } - - /** - * Return true if this type has local or cascading validation rules. - */ - public boolean hasCascadeValidation() { - return hasCascadeValidation; - } - - public InvalidValue validate(boolean cascade, Object bean) { - - if (!hasCascadeValidation) { - // no validation rules at all on this bean - return null; - } - - List errList = null; - - Set loadedProps = null; - if (bean instanceof EntityBean) { - EntityBeanIntercept ebi = ((EntityBean) bean)._ebean_getIntercept(); - loadedProps = ebi.getLoadedProps(); - } - if (loadedProps != null) { - // validate just the loaded properties - Iterator propIt = loadedProps.iterator(); - while (propIt.hasNext()) { - String propName = (String) propIt.next(); - BeanProperty property = getBeanProperty(propName); - - // check if we should fire validation on this property - if (property != null && property.hasValidationRules(cascade)) { - Object value = property.getValue(bean); - List errs = property.validate(cascade, value); - if (errs != null) { - if (errList == null) { - errList = new ArrayList(); - } - errList.addAll(errs); - } - } - } - } else { - // get appropriate list of properties with validation rules - BeanProperty[] props = cascade ? propertiesValidationCascade : propertiesValidationLocal; - - // validate all the properties - for (int i = 0; i < props.length; i++) { - BeanProperty prop = props[i]; - Object value = prop.getValue(bean); - List errs = prop.validate(cascade, value); - if (errs != null) { - if (errList == null) { - errList = new ArrayList(); - } - errList.addAll(errs); - } - } - } - - for (int i = 0; i < beanValidators.length; i++) { - if (!beanValidators[i].isValid(bean)) { - if (errList == null) { - errList = new ArrayList(); - } - Validator v = beanValidators[i]; - errList.add(new InvalidValue(v.getKey(), v.getAttributes(), getFullName(), null, bean)); - } - } - - if (errList == null) { - return null; - } - - return new InvalidValue(null, getFullName(), bean, InvalidValue.toArray(errList)); - } - /** * Return the many property included in the query or null if one is not. */ diff --git a/src/main/java/com/avaje/ebeaninternal/server/deploy/BeanDescriptorManager.java b/src/main/java/com/avaje/ebeaninternal/server/deploy/BeanDescriptorManager.java index 3f23182cc..06c64f79c 100644 --- a/src/main/java/com/avaje/ebeaninternal/server/deploy/BeanDescriptorManager.java +++ b/src/main/java/com/avaje/ebeaninternal/server/deploy/BeanDescriptorManager.java @@ -31,8 +31,6 @@ import com.avaje.ebean.config.dbplatform.DbIdentity; import com.avaje.ebean.config.dbplatform.IdGenerator; import com.avaje.ebean.config.dbplatform.IdType; import com.avaje.ebean.event.BeanFinder; -import com.avaje.ebean.validation.factory.LengthValidatorFactory; -import com.avaje.ebean.validation.factory.NotNullValidatorFactory; import com.avaje.ebeaninternal.api.SpiEbeanServer; import com.avaje.ebeaninternal.api.TransactionEventTable; import com.avaje.ebeaninternal.server.core.BootupClasses; @@ -1052,8 +1050,6 @@ public class BeanDescriptorManager implements BeanDescriptorMap { setConcurrencyMode(desc); } - autoAddValidators(desc); - // generate the byte code createByteCode(desc); } @@ -1142,35 +1138,6 @@ public class BeanDescriptorManager implements BeanDescriptorMap { setBeanReflect(deploy); } - /** - * Add Length and NotNull validators based on Column annotation etc. - */ - private void autoAddValidators(DeployBeanDescriptor deployDesc) { - - for (DeployBeanProperty prop : deployDesc.propertiesBase()) { - autoAddValidators(prop); - } - } - - /** - * Add Length and NotNull validators based on Column annotation etc. - */ - private void autoAddValidators(DeployBeanProperty prop) { - - if (String.class.equals(prop.getPropertyType()) && prop.getDbLength() > 0) { - // check if the property already has the LengthValidator - if (!prop.containsValidatorType(LengthValidatorFactory.LengthValidator.class)) { - prop.addValidator(LengthValidatorFactory.create(0, prop.getDbLength())); - } - } - if (!prop.isNullable() && !prop.isId() && !prop.isGenerated()) { - // check if the property already has the NotNullValidator - if (!prop.containsValidatorType(NotNullValidatorFactory.NotNullValidator.class)) { - prop.addValidator(NotNullValidatorFactory.NOT_NULL); - } - } - } - /** * Set the Scalar Types on all the simple types. This is done AFTER transients * have been identified. This is because a non-transient field MUST have a diff --git a/src/main/java/com/avaje/ebeaninternal/server/deploy/BeanListHelp.java b/src/main/java/com/avaje/ebeaninternal/server/deploy/BeanListHelp.java index 1b424dc11..72ba45f0f 100644 --- a/src/main/java/com/avaje/ebeaninternal/server/deploy/BeanListHelp.java +++ b/src/main/java/com/avaje/ebeaninternal/server/deploy/BeanListHelp.java @@ -5,7 +5,6 @@ import java.util.Iterator; import java.util.List; import com.avaje.ebean.EbeanServer; -import com.avaje.ebean.InvalidValue; import com.avaje.ebean.Query; import com.avaje.ebean.Transaction; import com.avaje.ebean.bean.BeanCollection; @@ -86,24 +85,6 @@ public final class BeanListHelp implements BeanCollectionHelp { return new BeanList(loader, parentBean, propertyName); } - public ArrayList validate(Object manyValue) { - - ArrayList errs = null; - - List l = (List) manyValue; - for (int i = 0; i < l.size(); i++) { - Object detailBean = l.get(i); - InvalidValue invalid = targetDescriptor.validate(true, detailBean); - if (invalid != null) { - if (errs == null) { - errs = new ArrayList(); - } - errs.add(invalid); - } - } - return errs; - } - public void refresh(EbeanServer server, Query query, Transaction t, Object parentBean) { BeanList newBeanList = (BeanList) server.findList(query, t); diff --git a/src/main/java/com/avaje/ebeaninternal/server/deploy/BeanMapHelp.java b/src/main/java/com/avaje/ebeaninternal/server/deploy/BeanMapHelp.java index 978233959..5ec76d500 100644 --- a/src/main/java/com/avaje/ebeaninternal/server/deploy/BeanMapHelp.java +++ b/src/main/java/com/avaje/ebeaninternal/server/deploy/BeanMapHelp.java @@ -1,13 +1,11 @@ package com.avaje.ebeaninternal.server.deploy; -import java.util.ArrayList; import java.util.Iterator; import java.util.LinkedHashMap; import java.util.Map; import java.util.Map.Entry; import com.avaje.ebean.EbeanServer; -import com.avaje.ebean.InvalidValue; import com.avaje.ebean.Query; import com.avaje.ebean.Transaction; import com.avaje.ebean.bean.BeanCollection; @@ -121,26 +119,6 @@ public final class BeanMapHelp implements BeanCollectionHelp { return new BeanMap(loader, parentBean, propertyName); } - public ArrayList validate(Object manyValue) { - - ArrayList errs = null; - - Map m = (Map) manyValue; - Iterator it = m.values().iterator(); - while (it.hasNext()) { - Object detailBean = (Object) it.next(); - InvalidValue invalid = targetDescriptor.validate(true, detailBean); - if (invalid != null) { - if (errs == null) { - errs = new ArrayList(); - } - errs.add(invalid); - } - } - - return errs; - } - public void refresh(EbeanServer server, Query query, Transaction t, Object parentBean) { BeanMap newBeanMap = (BeanMap) server.findMap(query, t); refresh(newBeanMap, parentBean); diff --git a/src/main/java/com/avaje/ebeaninternal/server/deploy/BeanProperty.java b/src/main/java/com/avaje/ebeaninternal/server/deploy/BeanProperty.java index 9182a2e85..51c648bd2 100644 --- a/src/main/java/com/avaje/ebeaninternal/server/deploy/BeanProperty.java +++ b/src/main/java/com/avaje/ebeaninternal/server/deploy/BeanProperty.java @@ -7,13 +7,11 @@ import java.lang.reflect.Field; import java.lang.reflect.Method; import java.sql.SQLException; import java.sql.Types; -import java.util.ArrayList; import java.util.List; import java.util.Map; import javax.persistence.PersistenceException; -import com.avaje.ebean.InvalidValue; import com.avaje.ebean.bean.EntityBean; import com.avaje.ebean.config.EncryptKey; import com.avaje.ebean.config.dbplatform.DbEncryptFunction; @@ -21,7 +19,6 @@ import com.avaje.ebean.config.dbplatform.DbType; import com.avaje.ebean.text.StringFormatter; import com.avaje.ebean.text.StringParser; import com.avaje.ebean.text.TextException; -import com.avaje.ebean.validation.factory.Validator; import com.avaje.ebeaninternal.server.core.InternString; import com.avaje.ebeaninternal.server.deploy.BeanDescriptor.EntityType; import com.avaje.ebeaninternal.server.deploy.generatedproperty.GeneratedProperty; @@ -228,10 +225,6 @@ public class BeanProperty implements ElPropertyValue { @SuppressWarnings("rawtypes") final ScalarType scalarType; - final Validator[] validators; - - final boolean hasLocalValidators; - boolean cascadeValidate; /** @@ -336,9 +329,7 @@ public class BeanProperty implements ElPropertyValue { this.lob = isLobType(dbType); this.propertyType = deploy.getPropertyType(); this.field = deploy.getField(); - this.validators = deploy.getValidators(); - this.hasLocalValidators = (validators.length > 0); - + EntityType et = descriptor == null ? null : descriptor.getEntityType(); this.elPlaceHolder = tableAliasIntern(descriptor, deploy.getElPlaceHolder(et), false, null); this.elPlaceHolderEncrypted = tableAliasIntern(descriptor, deploy.getElPlaceHolder(et), dbEncrypted, dbColumn); @@ -421,9 +412,7 @@ public class BeanProperty implements ElPropertyValue { this.lob = isLobType(dbType); this.propertyType = source.getPropertyType(); this.field = source.getField(); - this.validators = source.getValidators(); - this.hasLocalValidators = validators.length > 0; - + this.elPlaceHolder = override.replace(source.elPlaceHolder, source.dbColumn); this.elPlaceHolderEncrypted = override.replace(source.elPlaceHolderEncrypted, source.dbColumn); @@ -650,22 +639,10 @@ public class BeanProperty implements ElPropertyValue { return scalarType.readData(dataInput); } - Validator[] getValidators() { - return validators; - } - public boolean isCascadeValidate() { return cascadeValidate; } - public boolean hasLocalValidators() { - return hasLocalValidators; - } - - public boolean hasValidationRules(boolean cascade) { - return hasLocalValidators || (cascade && cascadeValidate); - } - /** * Checks to see if a bean is a reference (will be lazy loaded) or a * BeanCollection that has not yet been populated. @@ -677,50 +654,6 @@ public class BeanProperty implements ElPropertyValue { return true; } - /** - * Cascade the validation to the associated bean or collection. - */ - public InvalidValue validateCascade(Object value) { - return null; - } - - /** - * Validate the property with the given value. - * - * @param cascade - * if true cascade for assoc beans and collections. - * @param value - * the value to validate - * @return the list of errors that occurred. - */ - public final List validate(boolean cascade, Object value) { - - if (!isValueLoaded(value)) { - return null; - } - - ArrayList list = null; - for (int i = 0; i < validators.length; i++) { - if (!validators[i].isValid(value)) { - if (list == null) { - list = new ArrayList(); - } - Validator v = validators[i]; - list.add(new InvalidValue(v.getKey(), v.getAttributes(), descriptor.getFullName(), name, value)); - } - } - - if (list == null && cascade && cascadeValidate) { - // cascade the validation for assoc beans - InvalidValue recursive = validateCascade(value); - if (recursive != null) { - return InvalidValue.toList(recursive); - - } - } - return list; - } - public BeanProperty getBeanProperty() { return this; } diff --git a/src/main/java/com/avaje/ebeaninternal/server/deploy/BeanPropertyAssocMany.java b/src/main/java/com/avaje/ebeaninternal/server/deploy/BeanPropertyAssocMany.java index 8744430a0..b33afa787 100644 --- a/src/main/java/com/avaje/ebeaninternal/server/deploy/BeanPropertyAssocMany.java +++ b/src/main/java/com/avaje/ebeaninternal/server/deploy/BeanPropertyAssocMany.java @@ -9,7 +9,6 @@ import javax.persistence.PersistenceException; import com.avaje.ebean.EbeanServer; import com.avaje.ebean.Expression; -import com.avaje.ebean.InvalidValue; import com.avaje.ebean.Query; import com.avaje.ebean.SqlUpdate; import com.avaje.ebean.Transaction; @@ -314,18 +313,6 @@ public class BeanPropertyAssocMany extends BeanPropertyAssoc { help.add(collection, bean); } - @Override - public InvalidValue validateCascade(Object manyValue) { - - ArrayList errs = help.validate(manyValue); - - if (errs == null){ - return null; - } else { - return new InvalidValue("recurse.many", targetDescriptor.getFullName(), manyValue, InvalidValue.toArray(errs)); - } - } - /** * Refresh the appropriate list set or map. */ diff --git a/src/main/java/com/avaje/ebeaninternal/server/deploy/BeanPropertyAssocOne.java b/src/main/java/com/avaje/ebeaninternal/server/deploy/BeanPropertyAssocOne.java index 24394d9d2..68957aa9a 100644 --- a/src/main/java/com/avaje/ebeaninternal/server/deploy/BeanPropertyAssocOne.java +++ b/src/main/java/com/avaje/ebeaninternal/server/deploy/BeanPropertyAssocOne.java @@ -8,7 +8,6 @@ import java.util.List; import javax.persistence.PersistenceException; import com.avaje.ebean.EbeanServer; -import com.avaje.ebean.InvalidValue; import com.avaje.ebean.Query; import com.avaje.ebean.SqlUpdate; import com.avaje.ebean.Transaction; @@ -271,13 +270,6 @@ public class BeanPropertyAssocOne extends BeanPropertyAssoc { return true; } - @Override - public InvalidValue validateCascade(Object value) { - - BeanDescriptor target = getTargetDescriptor(); - return target.validate(true, value); - } - private boolean hasChangedEmbedded(Object bean, Object oldValues) { Object embValue = getValue(oldValues); diff --git a/src/main/java/com/avaje/ebeaninternal/server/deploy/BeanSetHelp.java b/src/main/java/com/avaje/ebeaninternal/server/deploy/BeanSetHelp.java index 244c339fe..476a71fd3 100644 --- a/src/main/java/com/avaje/ebeaninternal/server/deploy/BeanSetHelp.java +++ b/src/main/java/com/avaje/ebeaninternal/server/deploy/BeanSetHelp.java @@ -1,12 +1,10 @@ package com.avaje.ebeaninternal.server.deploy; -import java.util.ArrayList; import java.util.Iterator; import java.util.LinkedHashSet; import java.util.Set; import com.avaje.ebean.EbeanServer; -import com.avaje.ebean.InvalidValue; import com.avaje.ebean.Query; import com.avaje.ebean.Transaction; import com.avaje.ebean.bean.BeanCollection; @@ -91,25 +89,6 @@ public final class BeanSetHelp implements BeanCollectionHelp { return new BeanSet(loader, parentBean, propertyName); } - - public ArrayList validate(Object manyValue) { - - ArrayList errs = null; - - Set set = (Set)manyValue; - Iterator i = set.iterator(); - while (i.hasNext()) { - Object detailBean = i.next(); - InvalidValue invalid = targetDescriptor.validate(true, detailBean); - if (invalid != null){ - if (errs == null){ - errs = new ArrayList(); - } - errs.add(invalid); - } - } - return errs; - } public void refresh(EbeanServer server, Query query, Transaction t, Object parentBean) { diff --git a/src/main/java/com/avaje/ebeaninternal/server/deploy/meta/DeployBeanProperty.java b/src/main/java/com/avaje/ebeaninternal/server/deploy/meta/DeployBeanProperty.java index 2aa919d99..a171a14ba 100644 --- a/src/main/java/com/avaje/ebeaninternal/server/deploy/meta/DeployBeanProperty.java +++ b/src/main/java/com/avaje/ebeaninternal/server/deploy/meta/DeployBeanProperty.java @@ -3,10 +3,7 @@ package com.avaje.ebeaninternal.server.deploy.meta; import java.lang.reflect.Field; import java.lang.reflect.Method; import java.sql.Types; -import java.util.ArrayList; import java.util.HashMap; -import java.util.Iterator; -import java.util.List; import java.util.Map; import javax.persistence.EmbeddedId; @@ -19,7 +16,6 @@ import com.avaje.ebean.annotation.UpdatedTimestamp; import com.avaje.ebean.config.ScalarTypeConverter; import com.avaje.ebean.config.dbplatform.DbEncrypt; import com.avaje.ebean.config.dbplatform.DbEncryptFunction; -import com.avaje.ebean.validation.factory.Validator; import com.avaje.ebeaninternal.server.core.InternString; import com.avaje.ebeaninternal.server.deploy.BeanDescriptor.EntityType; import com.avaje.ebeaninternal.server.deploy.generatedproperty.GeneratedProperty; @@ -211,8 +207,6 @@ public class DeployBeanProperty { */ private GeneratedProperty generatedProperty; - private List validators = new ArrayList(); - private final DeployBeanDescriptor desc; private boolean undirectionalShadow; @@ -404,39 +398,6 @@ public class DeployBeanProperty { return null; } - /** - * Add a validator to this property. - */ - public void addValidator(Validator validator) { - validators.add(validator); - } - - /** - * Return true if the property contains a validator of a given type. - *

- * Used to detect if a validator has already been assigned when trying to - * automatically add validators such as Length and NotNull. - *

- */ - public boolean containsValidatorType(Class type) { - - Iterator it = validators.iterator(); - while (it.hasNext()) { - Validator validator = (Validator) it.next(); - if (validator.getClass().equals(type)) { - return true; - } - } - return false; - } - - /** - * Return the validators for this property. - */ - public Validator[] getValidators() { - return validators.toArray(new Validator[validators.size()]); - } - /** * Return the scalarType. This returns null for native JDBC types, otherwise * it is used to convert between logical types and jdbc types. diff --git a/src/main/java/com/avaje/ebeaninternal/server/deploy/meta/DeployBeanPropertyLists.java b/src/main/java/com/avaje/ebeaninternal/server/deploy/meta/DeployBeanPropertyLists.java index d039d9006..c857aed16 100644 --- a/src/main/java/com/avaje/ebeaninternal/server/deploy/meta/DeployBeanPropertyLists.java +++ b/src/main/java/com/avaje/ebeaninternal/server/deploy/meta/DeployBeanPropertyLists.java @@ -6,7 +6,6 @@ import java.util.LinkedHashMap; import java.util.List; import com.avaje.ebean.bean.BeanCollection.ModifyListenMode; -import com.avaje.ebean.validation.factory.Validator; import com.avaje.ebeaninternal.server.deploy.BeanDescriptor; import com.avaje.ebeaninternal.server.deploy.BeanDescriptorMap; import com.avaje.ebeaninternal.server.deploy.BeanProperty; @@ -157,23 +156,6 @@ public class DeployBeanPropertyLists { return derivedFirstVersionProp; } - public BeanProperty[] getPropertiesWithValidators(boolean recurse) { - - ArrayList list = new ArrayList(); - Iterator it = propertyMap.values().iterator(); - while (it.hasNext()) { - BeanProperty property = (BeanProperty) it.next(); - if (property.hasValidationRules(recurse)) { - list.add(property); - } - } - return list.toArray(new BeanProperty[list.size()]); - } - - public Validator[] getBeanValidators() { - return new Validator[0]; - } - public LinkedHashMap getPropertyMap() { return propertyMap; } diff --git a/src/main/java/com/avaje/ebeaninternal/server/deploy/parse/AnnotationAssocOnes.java b/src/main/java/com/avaje/ebeaninternal/server/deploy/parse/AnnotationAssocOnes.java index 38dad3e22..b929cee27 100644 --- a/src/main/java/com/avaje/ebeaninternal/server/deploy/parse/AnnotationAssocOnes.java +++ b/src/main/java/com/avaje/ebeaninternal/server/deploy/parse/AnnotationAssocOnes.java @@ -15,11 +15,11 @@ import javax.persistence.JoinColumns; import javax.persistence.JoinTable; import javax.persistence.ManyToOne; import javax.persistence.OneToOne; +import javax.validation.constraints.NotNull; import com.avaje.ebean.annotation.EmbeddedColumns; import com.avaje.ebean.annotation.Where; import com.avaje.ebean.config.NamingConvention; -import com.avaje.ebean.validation.NotNull; import com.avaje.ebeaninternal.server.deploy.BeanDescriptorManager; import com.avaje.ebeaninternal.server.deploy.BeanTable; import com.avaje.ebeaninternal.server.deploy.TableJoin; diff --git a/src/main/java/com/avaje/ebeaninternal/server/deploy/parse/AnnotationFields.java b/src/main/java/com/avaje/ebeaninternal/server/deploy/parse/AnnotationFields.java index ca82376b2..d682d0e2b 100644 --- a/src/main/java/com/avaje/ebeaninternal/server/deploy/parse/AnnotationFields.java +++ b/src/main/java/com/avaje/ebeaninternal/server/deploy/parse/AnnotationFields.java @@ -1,8 +1,5 @@ package com.avaje.ebeaninternal.server.deploy.parse; -import java.lang.annotation.Annotation; -import java.lang.reflect.Field; -import java.lang.reflect.Method; import java.sql.Types; import java.util.Iterator; import java.util.Map; @@ -23,6 +20,8 @@ import javax.persistence.Temporal; import javax.persistence.TemporalType; import javax.persistence.Transient; import javax.persistence.Version; +import javax.validation.constraints.NotNull; +import javax.validation.constraints.Size; import com.avaje.ebean.annotation.CreatedTimestamp; import com.avaje.ebean.annotation.EmbeddedColumns; @@ -36,11 +35,6 @@ import com.avaje.ebean.config.GlobalProperties; import com.avaje.ebean.config.dbplatform.DbEncrypt; import com.avaje.ebean.config.dbplatform.DbEncryptFunction; import com.avaje.ebean.config.dbplatform.IdType; -import com.avaje.ebean.validation.Length; -import com.avaje.ebean.validation.NotNull; -import com.avaje.ebean.validation.Pattern; -import com.avaje.ebean.validation.Patterns; -import com.avaje.ebean.validation.ValidatorMeta; import com.avaje.ebeaninternal.server.deploy.BeanDescriptor.EntityType; import com.avaje.ebeaninternal.server.deploy.generatedproperty.GeneratedPropertyFactory; import com.avaje.ebeaninternal.server.deploy.meta.DeployBeanProperty; @@ -92,7 +86,6 @@ public class AnnotationFields extends AnnotationParser { readField(prop); } - readValidations(prop); } } @@ -214,11 +207,11 @@ public class AnnotationFields extends AnnotationParser { prop.setNullable(false); } - Length length = get(prop, Length.class); - if (length != null) { - if (length.max() < Integer.MAX_VALUE) { + Size size = get(prop, Size.class); + if (size != null) { + if (size.max() < Integer.MAX_VALUE) { // explicitly specify a version column - prop.setDbLength(length.max()); + prop.setDbLength(size.max()); } } @@ -460,41 +453,4 @@ public class AnnotationFields extends AnnotationParser { } } - private void readValidations(DeployBeanProperty prop) { - - Field field = prop.getField(); - if (field != null) { - Annotation[] fieldAnnotations = field.getAnnotations(); - for (int i = 0; i < fieldAnnotations.length; i++) { - readValidations(prop, fieldAnnotations[i]); - } - } - - Method readMethod = prop.getReadMethod(); - if (readMethod != null) { - Annotation[] methAnnotations = readMethod.getAnnotations(); - for (int i = 0; i < methAnnotations.length; i++) { - readValidations(prop, methAnnotations[i]); - } - } - } - - private void readValidations(DeployBeanProperty prop, Annotation ann) { - Class type = ann.annotationType(); - if (type.equals(Patterns.class)) { - // treating this as a special case for now... - Patterns patterns = (Patterns) ann; - Pattern[] patternsArray = patterns.patterns(); - for (int i = 0; i < patternsArray.length; i++) { - util.createValidator(prop, patternsArray[i]); - } - - } else { - - ValidatorMeta meta = type.getAnnotation(ValidatorMeta.class); - if (meta != null) { - util.createValidator(prop, ann); - } - } - } } diff --git a/src/main/java/com/avaje/ebeaninternal/server/deploy/parse/DeployUtil.java b/src/main/java/com/avaje/ebeaninternal/server/deploy/parse/DeployUtil.java index 8038c36a4..f021d9060 100644 --- a/src/main/java/com/avaje/ebeaninternal/server/deploy/parse/DeployUtil.java +++ b/src/main/java/com/avaje/ebeaninternal/server/deploy/parse/DeployUtil.java @@ -1,8 +1,6 @@ package com.avaje.ebeaninternal.server.deploy.parse; -import java.lang.annotation.Annotation; import java.sql.Types; -import java.util.logging.Level; import java.util.logging.Logger; import javax.persistence.EnumType; @@ -17,7 +15,6 @@ import com.avaje.ebean.config.NamingConvention; import com.avaje.ebean.config.ServerConfig; import com.avaje.ebean.config.TableName; import com.avaje.ebean.config.dbplatform.DatabasePlatform; -import com.avaje.ebean.validation.factory.Validator; import com.avaje.ebeaninternal.server.deploy.meta.DeployBeanProperty; import com.avaje.ebeaninternal.server.deploy.meta.DeployBeanPropertyCompound; import com.avaje.ebeaninternal.server.type.DataEncryptSupport; @@ -50,8 +47,6 @@ public class DeployUtil { private final TypeManager typeManager; - private final ValidatorFactoryManager validatorFactoryManager; - private final String manyToManyAlias; private final DatabasePlatform dbPlatform; @@ -75,8 +70,6 @@ public class DeployUtil { // this alias is used for ManyToMany lazy loading queries this.manyToManyAlias = "zzzzzz"; - - this.validatorFactoryManager = new ValidatorFactoryManager(); } public TypeManager getTypeManager() { @@ -119,18 +112,6 @@ public class DeployUtil { return manyToManyAlias; } - public void createValidator(DeployBeanProperty prop, Annotation ann) { - try { - Validator validator = validatorFactoryManager.create(ann, prop.getPropertyType()); - if (validator != null){ - prop.addValidator(validator); - } - } catch (Exception e){ - String msg = "Error creating a validator on "+prop.getFullBeanName(); - logger.log(Level.SEVERE, msg, e); - } - } - public ScalarType setEnumScalarType(Enumerated enumerated, DeployBeanProperty prop) { Class enumType = prop.getPropertyType(); diff --git a/src/main/java/com/avaje/ebeaninternal/server/persist/DefaultPersistExecute.java b/src/main/java/com/avaje/ebeaninternal/server/persist/DefaultPersistExecute.java index 115de6e91..115a3441d 100644 --- a/src/main/java/com/avaje/ebeaninternal/server/persist/DefaultPersistExecute.java +++ b/src/main/java/com/avaje/ebeaninternal/server/persist/DefaultPersistExecute.java @@ -17,119 +17,109 @@ import com.avaje.ebeaninternal.server.deploy.BeanManager; *

*/ public final class DefaultPersistExecute implements PersistExecute { - - private final ExeCallableSql exeCallableSql; - - private final ExeUpdateSql exeUpdateSql; - - private final ExeOrmUpdate exeOrmUpdate; - - /** - * The default batch size. - */ - private final int defaultBatchSize; - /** - * Default for whether to call getGeneratedKeys after batch insert. - */ - private final boolean defaultBatchGenKeys; - - private final boolean validate; - - /** - * Construct this DmlPersistExecute. - */ - public DefaultPersistExecute(boolean validate, Binder binder, PstmtBatch pstmtBatch) { - - this.validate = validate; - this.exeOrmUpdate = new ExeOrmUpdate(binder, pstmtBatch); - this.exeUpdateSql = new ExeUpdateSql(binder, pstmtBatch); - this.exeCallableSql = new ExeCallableSql(binder, pstmtBatch); - - this.defaultBatchGenKeys = GlobalProperties.getBoolean("batch.getgeneratedkeys", true); - this.defaultBatchSize = GlobalProperties.getInt("batch.size", 20); - } + private final ExeCallableSql exeCallableSql; - public BatchControl createBatchControl(SpiTransaction t) { + private final ExeUpdateSql exeUpdateSql; - // create a BatchControl and set its defaults - return new BatchControl(t, defaultBatchSize, defaultBatchGenKeys); - } - - /** - * execute the bean insert request. - */ - public void executeInsertBean(PersistRequestBean request) { - - BeanManager mgr = request.getBeanManager(); - BeanPersister persister = mgr.getBeanPersister(); - - BeanPersistController controller = request.getBeanController(); - if (controller == null || controller.preInsert(request)) { - if (validate){ - request.validate(); - } - persister.insert(request); - // NOTE: the persister fires the postInsert so that this - // occurs before ebeanIntercept.setLoaded(true) - } - } - - /** - * execute the bean update request. - */ - public void executeUpdateBean(PersistRequestBean request) { - - BeanManager mgr = request.getBeanManager(); - BeanPersister persister = mgr.getBeanPersister(); - - BeanPersistController controller = request.getBeanController(); - if (controller == null || controller.preUpdate(request)) { - if (validate){ - request.validate(); - } - persister.update(request); - // NOTE: the persister fires the postUpdate so that this - // occurs before ebeanIntercept.setLoaded(true) - } - } + private final ExeOrmUpdate exeOrmUpdate; - - /** - * execute the bean delete request. - */ - public void executeDeleteBean(PersistRequestBean request) { + /** + * The default batch size. + */ + private final int defaultBatchSize; - BeanManager mgr = request.getBeanManager(); - BeanPersister persister = mgr.getBeanPersister(); - - BeanPersistController controller = request.getBeanController(); - if (controller == null || controller.preDelete(request)) { - - persister.delete(request); - // NOTE: the persister fires the postDelete - } - } + /** + * Default for whether to call getGeneratedKeys after batch insert. + */ + private final boolean defaultBatchGenKeys; - /** - * Execute the updateSqlRequest - */ - public int executeOrmUpdate(PersistRequestOrmUpdate request) { - return exeOrmUpdate.execute(request); + /** + * Construct this DmlPersistExecute. + */ + public DefaultPersistExecute(Binder binder, PstmtBatch pstmtBatch) { + + this.exeOrmUpdate = new ExeOrmUpdate(binder, pstmtBatch); + this.exeUpdateSql = new ExeUpdateSql(binder, pstmtBatch); + this.exeCallableSql = new ExeCallableSql(binder, pstmtBatch); + + this.defaultBatchGenKeys = GlobalProperties.getBoolean("batch.getgeneratedkeys", true); + this.defaultBatchSize = GlobalProperties.getInt("batch.size", 20); + } + + public BatchControl createBatchControl(SpiTransaction t) { + + // create a BatchControl and set its defaults + return new BatchControl(t, defaultBatchSize, defaultBatchGenKeys); + } + + /** + * execute the bean insert request. + */ + public void executeInsertBean(PersistRequestBean request) { + + BeanManager mgr = request.getBeanManager(); + BeanPersister persister = mgr.getBeanPersister(); + + BeanPersistController controller = request.getBeanController(); + if (controller == null || controller.preInsert(request)) { + persister.insert(request); + // NOTE: the persister fires the postInsert so that this + // occurs before ebeanIntercept.setLoaded(true) } - - /** - * Execute the updateSqlRequest - */ - public int executeSqlUpdate(PersistRequestUpdateSql request) { - return exeUpdateSql.execute(request); + } + + /** + * execute the bean update request. + */ + public void executeUpdateBean(PersistRequestBean request) { + + BeanManager mgr = request.getBeanManager(); + BeanPersister persister = mgr.getBeanPersister(); + + BeanPersistController controller = request.getBeanController(); + if (controller == null || controller.preUpdate(request)) { + persister.update(request); + // NOTE: the persister fires the postUpdate so that this + // occurs before ebeanIntercept.setLoaded(true) } - - /** - * Execute the CallableSqlRequest. - */ - public int executeSqlCallable(PersistRequestCallableSql request) { - return exeCallableSql.execute(request); + } + + /** + * execute the bean delete request. + */ + public void executeDeleteBean(PersistRequestBean request) { + + BeanManager mgr = request.getBeanManager(); + BeanPersister persister = mgr.getBeanPersister(); + + BeanPersistController controller = request.getBeanController(); + if (controller == null || controller.preDelete(request)) { + + persister.delete(request); + // NOTE: the persister fires the postDelete } + } + + /** + * Execute the updateSqlRequest + */ + public int executeOrmUpdate(PersistRequestOrmUpdate request) { + return exeOrmUpdate.execute(request); + } + + /** + * Execute the updateSqlRequest + */ + public int executeSqlUpdate(PersistRequestUpdateSql request) { + return exeUpdateSql.execute(request); + } + + /** + * Execute the CallableSqlRequest. + */ + public int executeSqlCallable(PersistRequestCallableSql request) { + return exeCallableSql.execute(request); + } } diff --git a/src/main/java/com/avaje/ebeaninternal/server/persist/DefaultPersister.java b/src/main/java/com/avaje/ebeaninternal/server/persist/DefaultPersister.java index 69de9737c..a32d00fb9 100644 --- a/src/main/java/com/avaje/ebeaninternal/server/persist/DefaultPersister.java +++ b/src/main/java/com/avaje/ebeaninternal/server/persist/DefaultPersister.java @@ -73,12 +73,11 @@ public final class DefaultPersister implements Persister { private final boolean defaultUpdateNullProperties; private final boolean defaultDeleteMissingChildren; - public DefaultPersister(SpiEbeanServer server, boolean validate, - Binder binder, BeanDescriptorManager descMgr, PstmtBatch pstmtBatch) { + public DefaultPersister(SpiEbeanServer server, Binder binder, BeanDescriptorManager descMgr, PstmtBatch pstmtBatch) { this.server = server; this.beanDescriptorManager = descMgr; - this.persistExecute = new DefaultPersistExecute(validate, binder, pstmtBatch); + this.persistExecute = new DefaultPersistExecute(binder, pstmtBatch); this.defaultUpdateNullProperties = server.isDefaultUpdateNullProperties(); this.defaultDeleteMissingChildren = server.isDefaultDeleteMissingChildren(); diff --git a/src/test/java/com/avaje/tests/model/basic/Address.java b/src/test/java/com/avaje/tests/model/basic/Address.java index 8d92c0775..9cb3689fd 100644 --- a/src/test/java/com/avaje/tests/model/basic/Address.java +++ b/src/test/java/com/avaje/tests/model/basic/Address.java @@ -8,8 +8,7 @@ import javax.persistence.Id; import javax.persistence.ManyToOne; import javax.persistence.Table; import javax.persistence.Version; - -import com.avaje.ebean.validation.Length; +import javax.validation.constraints.Size; /** * Address entity bean. @@ -21,15 +20,15 @@ public class Address { @Id Short id; - @Length(max=100) + @Size(max=100) @Column(name="line_1") String line1; - @Length(max=100) + @Size(max=100) @Column(name="line_2") String line2; - @Length(max=100) + @Size(max=100) String city; Timestamp cretime; diff --git a/src/test/java/com/avaje/tests/model/basic/Country.java b/src/test/java/com/avaje/tests/model/basic/Country.java index ab0915d4d..5563f1267 100644 --- a/src/test/java/com/avaje/tests/model/basic/Country.java +++ b/src/test/java/com/avaje/tests/model/basic/Country.java @@ -3,10 +3,10 @@ package com.avaje.tests.model.basic; import javax.persistence.Entity; import javax.persistence.Id; import javax.persistence.Table; +import javax.validation.constraints.Size; import com.avaje.ebean.annotation.CacheStrategy; import com.avaje.ebean.annotation.CacheTuning; -import com.avaje.ebean.validation.Length; /** * Country entity bean. @@ -18,10 +18,10 @@ import com.avaje.ebean.validation.Length; public class Country { @Id - @Length(max=2) + @Size(max=2) String code; - @Length(max=60) + @Size(max=60) String name; public String toString() { diff --git a/src/test/java/com/avaje/tests/model/basic/Customer.java b/src/test/java/com/avaje/tests/model/basic/Customer.java index bce89fd80..1acd0e2a6 100644 --- a/src/test/java/com/avaje/tests/model/basic/Customer.java +++ b/src/test/java/com/avaje/tests/model/basic/Customer.java @@ -11,11 +11,11 @@ import javax.persistence.ManyToOne; import javax.persistence.OneToMany; import javax.persistence.Table; import javax.persistence.Transient; +import javax.validation.constraints.NotNull; +import javax.validation.constraints.Size; import com.avaje.ebean.annotation.EnumMapping; import com.avaje.ebean.annotation.Where; -import com.avaje.ebean.validation.Length; -import com.avaje.ebean.validation.NotNull; /** * Customer entity bean. @@ -46,11 +46,11 @@ public class Customer extends BasicDomain { Status status; @NotNull - @Length(max=40) + @Size(max=40) //@Column(length=39,nullable=false) String name; - @Length(max=100) + @Size(max=100) String smallnote; Date anniversary; diff --git a/src/test/java/com/avaje/tests/model/basic/Order.java b/src/test/java/com/avaje/tests/model/basic/Order.java index 2b8dccef5..64ffc21c0 100644 --- a/src/test/java/com/avaje/tests/model/basic/Order.java +++ b/src/test/java/com/avaje/tests/model/basic/Order.java @@ -19,12 +19,12 @@ import javax.persistence.OrderBy; import javax.persistence.Table; import javax.persistence.Transient; import javax.persistence.Version; +import javax.validation.constraints.NotNull; import javax.xml.bind.annotation.XmlType; import com.avaje.ebean.annotation.CreatedTimestamp; import com.avaje.ebean.annotation.Formula; import com.avaje.ebean.annotation.Where; -import com.avaje.ebean.validation.NotNull; /** * Order entity bean. diff --git a/src/test/java/com/avaje/tests/model/basic/Phone.java b/src/test/java/com/avaje/tests/model/basic/Phone.java index cfe4f5939..d4f8c8610 100644 --- a/src/test/java/com/avaje/tests/model/basic/Phone.java +++ b/src/test/java/com/avaje/tests/model/basic/Phone.java @@ -11,8 +11,7 @@ import javax.persistence.Id; import javax.persistence.JoinColumn; import javax.persistence.ManyToOne; import javax.persistence.Table; - -import com.avaje.ebean.validation.NotNull; +import javax.validation.constraints.NotNull; @Entity(name = "Phone") @Table(name = "PHONES") diff --git a/src/test/java/com/avaje/tests/model/basic/Product.java b/src/test/java/com/avaje/tests/model/basic/Product.java index e17057424..df487f101 100644 --- a/src/test/java/com/avaje/tests/model/basic/Product.java +++ b/src/test/java/com/avaje/tests/model/basic/Product.java @@ -7,10 +7,10 @@ import javax.persistence.Entity; import javax.persistence.Id; import javax.persistence.Table; import javax.persistence.Version; +import javax.validation.constraints.Size; import com.avaje.ebean.annotation.CacheStrategy; import com.avaje.ebean.annotation.CreatedTimestamp; -import com.avaje.ebean.validation.Length; /** * Product entity bean. @@ -25,7 +25,7 @@ public class Product implements Serializable { @Id Integer id; - @Length(max=20) + @Size(max=20) String sku; String name; diff --git a/src/test/java/com/avaje/tests/model/basic/TWithPreInsert.java b/src/test/java/com/avaje/tests/model/basic/TWithPreInsert.java index 98bc511bd..aff62d408 100644 --- a/src/test/java/com/avaje/tests/model/basic/TWithPreInsert.java +++ b/src/test/java/com/avaje/tests/model/basic/TWithPreInsert.java @@ -2,8 +2,7 @@ package com.avaje.tests.model.basic; import javax.persistence.Entity; import javax.persistence.Id; - -import com.avaje.ebean.validation.NotEmpty; +import javax.validation.constraints.NotNull; @Entity public class TWithPreInsert { @@ -11,7 +10,7 @@ public class TWithPreInsert { @Id private Integer id; - @NotEmpty + @NotNull private String name; private String title;