This is an automated email from the git hooks/post-receive script. New commit to branch develop in repository observe. See https://gitlab.nuiton.org/codelutin/observe.git commit 7a0d2a91ce4ecff4caef1701c2e15f50321b4873 Author: Tony CHEMIT <chemit@codelutin.com> Date: Fri Sep 2 10:57:08 2016 +0200 Correction de la validation (permettre d'invoquer des méthodestatistiques dans les validateurs + ajout des méthodes qui étaient avant sur les entités --- .../ActivitySeine-service-error-validation.xml | 2 +- .../seine/Route-service-error-validation.xml | 2 +- .../src/main/resources/xwork.xml | 7 + .../service/actions/validate/ObserveValidator.java | 166 --------------------- .../validate/ServiceValidationException.java | 13 ++ .../actions/validate/ValidateServiceTopia.java | 130 ++++++++++------ .../actions/validate/ValidationDataContext.java | 65 ++++++-- .../validate/ValidationMessageDetector.java | 7 +- .../service/actions/validate/ValidatorsMap.java | 54 ++----- 9 files changed, 173 insertions(+), 273 deletions(-) diff --git a/services-topia-validation/src/main/resources/fr/ird/observe/entities/seine/ActivitySeine-service-error-validation.xml b/services-topia-validation/src/main/resources/fr/ird/observe/entities/seine/ActivitySeine-service-error-validation.xml index a855cf8..a0a5ed8 100644 --- a/services-topia-validation/src/main/resources/fr/ird/observe/entities/seine/ActivitySeine-service-error-validation.xml +++ b/services-topia-validation/src/main/resources/fr/ird/observe/entities/seine/ActivitySeine-service-error-validation.xml @@ -101,7 +101,7 @@ <!-- heure observation non duplique --> <field-validator type="fieldexpression" short-circuit="true"> <param name="expression"> - <![CDATA[ routeEntity.isTimeAvailable(topiaId, time) ]]> + <![CDATA[ isTimeAvailable(routeEntity, topiaId, time) ]]> </param> <message>validator.service.activity.duplicated.time</message> </field-validator> diff --git a/services-topia-validation/src/main/resources/fr/ird/observe/entities/seine/Route-service-error-validation.xml b/services-topia-validation/src/main/resources/fr/ird/observe/entities/seine/Route-service-error-validation.xml index 056c63f..e0768cf 100644 --- a/services-topia-validation/src/main/resources/fr/ird/observe/entities/seine/Route-service-error-validation.xml +++ b/services-topia-validation/src/main/resources/fr/ird/observe/entities/seine/Route-service-error-validation.xml @@ -45,7 +45,7 @@ <!-- jour observation non duplique --> <field-validator type="fieldexpression" short-circuit="true"> <param name="expression"><![CDATA[ - tripSeineEntity.isDateAvailable(topiaId, date) + isDateAvailable(tripSeineEntity, topiaId, date) ]]> </param> <message>validator.service.route.duplicated.date</message> diff --git a/services-topia-validation/src/main/resources/xwork.xml b/services-topia-validation/src/main/resources/xwork.xml new file mode 100644 index 0000000..04eb0b7 --- /dev/null +++ b/services-topia-validation/src/main/resources/xwork.xml @@ -0,0 +1,7 @@ +<!DOCTYPE xwork PUBLIC + "-//Apache Struts//XWork 2.0//EN" + "http://struts.apache.org/dtds/xwork-2.0.dtd"> + +<xwork> + <constant name="allowStaticMethodAccess" value="true"/> +</xwork> diff --git a/services-topia/src/main/java/fr/ird/observe/services/topia/service/actions/validate/ObserveValidator.java b/services-topia/src/main/java/fr/ird/observe/services/topia/service/actions/validate/ObserveValidator.java deleted file mode 100644 index 38ccc14..0000000 --- a/services-topia/src/main/java/fr/ird/observe/services/topia/service/actions/validate/ObserveValidator.java +++ /dev/null @@ -1,166 +0,0 @@ -/* - * #%L - * ObServe :: Services ToPIA Implementation - * %% - * Copyright (C) 2008 - 2016 IRD, Codelutin, Tony Chemit - * %% - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as - * published by the Free Software Foundation, either version 3 of the - * License, or (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public - * License along with this program. If not, see - * <http://www.gnu.org/licenses/gpl-3.0.html>. - * #L% - */ -package fr.ird.observe.services.topia.service.actions.validate; - -import com.google.common.base.Preconditions; -import com.opensymphony.xwork2.ActionContext; -import com.opensymphony.xwork2.util.ValueStack; -import org.apache.commons.logging.Log; -import org.apache.commons.logging.LogFactory; -import org.nuiton.validator.NuitonValidatorFactory; -import org.nuiton.validator.NuitonValidatorScope; -import org.nuiton.validator.bean.simple.SimpleBeanValidator; -import org.nuiton.validator.xwork2.XWork2ValidatorUtil; - -/** - * Une surcharge du validateur swing offert par jaxx pour pouvoir ajouter dans - * la stack le DataContext (pour faire de la validation sur le context de - * données d'un niveau supérieur (valider une marée à partir d'une route par - * exemple). - * - * @param <B> le type d'objet a valider - * @author Tony Chemit - chemit@codelutin.com - * @since 1.0 - */ -public class ObserveValidator<B> extends SimpleBeanValidator<B> { - - /** Logger */ - private static final Log log = LogFactory.getLog(ObserveValidator.class); - - /** un etat pour initialiser la stack une unique fois la stack */ - private static boolean init; - - private static ValidationDataContext validationDataContext; - - public ObserveValidator( - Class<B> type, - String context, - NuitonValidatorScope... scopes) { - super(NuitonValidatorFactory.getDefaultProvider(), type, context, scopes); - } - -// public static <B> ObserveValidator<B> newValidator(NuitonValidatorProvider provider, -// Class<B> type, -// String context, -// NuitonValidatorScope... scopes) { -// return new ObserveValidator<>( -// provider, -// type, -// context, -// scopes -// ); -// } - - public static <B> ObserveValidator<B> newObserveValidator(Class<B> type, - String context, - NuitonValidatorScope... scopes) { - return new ObserveValidator<>( - type, - context, - scopes - ); - } - -// public ObserveValidator(NuitonValidatorProvider provider, -// Class<B> type, -// String context, -// NuitonValidatorScope... scopes) { -// super(provider, type, context, scopes); -// } - - public static void reloadDataContext(ValidationDataContext validationDataContext, boolean strict) { - - if (validationDataContext != ObserveValidator.validationDataContext) { - - // keep this validation context - setValidationDataContext(validationDataContext); - - } - - ValueStack valueStack; - ActionContext context = ActionContext.getContext(); - if (context == null) { - Preconditions.checkState( - strict, - "Pas de context xworks enregistré... utiliser la methode " + ActionContext.class.getName() + "#setContext(context)"); - - valueStack = XWork2ValidatorUtil.getSharedValueStack(); - - } else { - - valueStack = context.getValueStack(); - - } - - if (valueStack != null) { - if (log.isDebugEnabled()) { - log.debug("Enregistrement du context de validation [" + validationDataContext + "] dans la valueStack de " + - "validation (" + valueStack + ')'); - } - - valueStack.push(validationDataContext); - } - - } - - public static ValidationDataContext getValidationDataContext() { - return validationDataContext; - } - - public static void setValidationDataContext(ValidationDataContext validationDataContext) { - ObserveValidator.validationDataContext = validationDataContext; - // a chaque fois qu'on change le contexte de validation il faudra reinitiliser la stack - setInit(false); - } - - private static boolean isInit() { - return init; - } - - private static void setInit(boolean init) { - ObserveValidator.init = init; - } - - @Override - protected void rebuildDelegateValidator(Class<B> beanType, - String context, - NuitonValidatorScope... scopes) { - super.rebuildDelegateValidator(beanType, context, scopes); - - if (!isInit()) { - - // on positionne dans la stack de dataContext pour pouvoir faire de la - // validation sur des objets dans le scope. - - ValidationDataContext dataContext = getValidationDataContext(); - - reloadDataContext(dataContext, true); - - // on marque pour ne jamais revenir ici - setInit(true); - - } - - } - - -} diff --git a/services-topia/src/main/java/fr/ird/observe/services/topia/service/actions/validate/ServiceValidationException.java b/services-topia/src/main/java/fr/ird/observe/services/topia/service/actions/validate/ServiceValidationException.java new file mode 100644 index 0000000..94c124c --- /dev/null +++ b/services-topia/src/main/java/fr/ird/observe/services/topia/service/actions/validate/ServiceValidationException.java @@ -0,0 +1,13 @@ +package fr.ird.observe.services.topia.service.actions.validate; + +/** + * Created on 01/09/16. + * + * @author Tony Chemit - chemit@codelutin.com + * @since 5.0 + */ +public class ServiceValidationException extends RuntimeException { + public ServiceValidationException(Exception e) { + super(e); + } +} diff --git a/services-topia/src/main/java/fr/ird/observe/services/topia/service/actions/validate/ValidateServiceTopia.java b/services-topia/src/main/java/fr/ird/observe/services/topia/service/actions/validate/ValidateServiceTopia.java index c912203..fc611ac 100644 --- a/services-topia/src/main/java/fr/ird/observe/services/topia/service/actions/validate/ValidateServiceTopia.java +++ b/services-topia/src/main/java/fr/ird/observe/services/topia/service/actions/validate/ValidateServiceTopia.java @@ -25,11 +25,21 @@ package fr.ird.observe.services.topia.service.actions.validate; import com.google.common.collect.ImmutableMap; import com.google.common.collect.ImmutableSet; import com.google.common.collect.Iterables; +import com.opensymphony.xwork2.ActionContext; +import com.opensymphony.xwork2.util.ValueStack; import fr.ird.observe.ObserveEntityEnum; import fr.ird.observe.entities.Entities; import fr.ird.observe.entities.ObserveDataEntity; import fr.ird.observe.entities.Trip; import fr.ird.observe.entities.referentiel.ObserveReferentialEntity; +import fr.ird.observe.services.dto.DataDto; +import fr.ird.observe.services.dto.DataReference; +import fr.ird.observe.services.dto.IdDto; +import fr.ird.observe.services.dto.constants.ReferentialLocale; +import fr.ird.observe.services.dto.longline.TripLonglineDto; +import fr.ird.observe.services.dto.referential.ReferentialDto; +import fr.ird.observe.services.dto.referential.ReferentialReference; +import fr.ird.observe.services.dto.seine.TripSeineDto; import fr.ird.observe.services.service.actions.validate.ValidateDataRequest; import fr.ird.observe.services.service.actions.validate.ValidateDataResult; import fr.ird.observe.services.service.actions.validate.ValidateReferentialsRequest; @@ -39,22 +49,20 @@ import fr.ird.observe.services.service.actions.validate.ValidateResultForDtoType import fr.ird.observe.services.service.actions.validate.ValidateService; import fr.ird.observe.services.service.actions.validate.ValidationMessage; import fr.ird.observe.services.topia.ObserveServiceTopia; -import fr.ird.observe.services.dto.DataDto; -import fr.ird.observe.services.dto.DataReference; -import fr.ird.observe.services.dto.IdDto; -import fr.ird.observe.services.dto.constants.ReferentialLocale; -import fr.ird.observe.services.dto.longline.TripLonglineDto; -import fr.ird.observe.services.dto.referential.ReferentialDto; -import fr.ird.observe.services.dto.referential.ReferentialReference; -import fr.ird.observe.services.dto.seine.TripSeineDto; import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; import org.nuiton.topia.persistence.TopiaEntity; import org.nuiton.validator.NuitonValidatorScope; +import org.nuiton.validator.bean.simple.SimpleBeanValidator; +import org.nuiton.validator.xwork2.XWork2ValidatorUtil; import java.util.Collection; import java.util.Map; import java.util.Set; +import java.util.concurrent.ExecutionException; +import java.util.concurrent.ExecutorService; +import java.util.concurrent.Executors; +import java.util.concurrent.Future; /** * @author Sylvain Bavencoff - bavencoff@codelutin.com @@ -62,66 +70,84 @@ import java.util.Set; public class ValidateServiceTopia extends ObserveServiceTopia implements ValidateService { private static final Log log = LogFactory.getLog(ValidateServiceTopia.class); + private static final ExecutorService EXECUTOR_SERVICE = Executors.newFixedThreadPool(5); @Override public ValidateReferentialsResult validateReferentials(ValidateReferentialsRequest request) { - ValidationDataContext validationDataContext = new ValidationDataContext(); + Future<ValidateReferentialsResult> future = EXECUTOR_SERVICE.submit(() -> { - ValidatorsMap validators = getValidators(request.getValidationContext(), - request.getScopes(), - Entities.REFERENCE_ENTITIES); + ValidationDataContext validationDataContext = new ValidationDataContext(); - ReferentialLocale referenceLocale = getReferentialLocale(); + initValidationEngine(validationDataContext); - //FIXME On ne peut pas charger cela avant d'avoir détecter un premier validateur - //FIXME Il faudrait mieux initialier de manière explicite le ActionContext + ValidatorsMap validators = getValidators( + request.getValidationContext(), + request.getScopes(), + Entities.REFERENCE_ENTITIES); - ObserveValidator.reloadDataContext(validationDataContext, false); + ReferentialLocale referenceLocale = getReferentialLocale(); - ValidationMessageDetector detector = new ValidationMessageDetector(validators, validationDataContext, referenceLocale); + ValidationMessageDetector detector = new ValidationMessageDetector(validators, validationDataContext, referenceLocale); - for (Class<? extends ReferentialDto> referentialType : request.getReferentialTypes()) { + for (Class<? extends ReferentialDto> referentialType : request.getReferentialTypes()) { - validateReferential(referentialType, detector); + validateReferential(referentialType, detector); - } + } - ImmutableMap validateResultForDtoTypeMap = buildResultForDtoTypes(detector); - return new ValidateReferentialsResult(request, validateResultForDtoTypeMap); + ImmutableMap validateResultForDtoTypeMap = buildResultForDtoTypes(detector); + return new ValidateReferentialsResult(request, validateResultForDtoTypeMap); + }); + try { + return future.get(); + } catch (InterruptedException | ExecutionException e) { + throw new ServiceValidationException(e); + } } @Override public ValidateDataResult validateData(ValidateDataRequest request) { - ValidationDataContext validationDataContext = new ValidationDataContext(); + Future<ValidateDataResult> future = EXECUTOR_SERVICE.submit(() -> { - ValidatorsMap validators = getValidators(request.getValidationContext(), - request.getScopes(), - Entities.DATA_ENTITIES); + ValidationDataContext validationDataContext = new ValidationDataContext(); + initValidationEngine(validationDataContext); - //FIXME On ne peut pas charger cela avant d'avoir détecter un premier validateur - //FIXME Il faudrait mieux initialier de manière explicite le ActionContext + ValidatorsMap validators = getValidators( + request.getValidationContext(), + request.getScopes(), + Entities.DATA_ENTITIES); - ReferentialLocale referenceLocale = getReferentialLocale(); + //FIXME On ne peut pas charger cela avant d'avoir détecter un premier validateur + //FIXME Il faudrait mieux initialier de manière explicite le ActionContext - ObserveValidator.reloadDataContext(validationDataContext, false); + ReferentialLocale referenceLocale = getReferentialLocale(); - ValidationMessageDetector detector = new ValidationMessageDetector(validators, validationDataContext, referenceLocale); + initValidationEngine(validationDataContext); - for (String dataId : request.getDataIds()) { + ValidationMessageDetector detector = new ValidationMessageDetector(validators, validationDataContext, referenceLocale); - validateData(dataId, detector); + for (String dataId : request.getDataIds()) { - } + validateData(dataId, detector); + + } - ImmutableMap<Class<? extends IdDto>, ValidateResultForDtoType> validateResultForDtoTypeMap = buildResultForDtoTypes(detector); - return new ValidateDataResult(request, validateResultForDtoTypeMap); + ImmutableMap<Class<? extends IdDto>, ValidateResultForDtoType> validateResultForDtoTypeMap = buildResultForDtoTypes(detector); + return new ValidateDataResult(request, validateResultForDtoTypeMap); + }); + + try { + return future.get(); + } catch (InterruptedException | ExecutionException e) { + throw new ServiceValidationException(e); + } } - protected ImmutableMap<Class<? extends IdDto>, ValidateResultForDtoType> buildResultForDtoTypes(ValidationMessageDetector detector) { + private ImmutableMap<Class<? extends IdDto>, ValidateResultForDtoType> buildResultForDtoTypes(ValidationMessageDetector detector) { ImmutableMap.Builder<Class<? extends IdDto>, ValidateResultForDtoType> forDtoTypeBuilder = new ImmutableMap.Builder<>(); @@ -187,7 +213,7 @@ public class ValidateServiceTopia extends ObserveServiceTopia implements Validat } - protected <D extends ReferentialDto, E extends ObserveReferentialEntity> void validateReferential(Class<D> referentialDtoType, ValidationMessageDetector detector) { + private <D extends ReferentialDto, E extends ObserveReferentialEntity> void validateReferential(Class<D> referentialDtoType, ValidationMessageDetector detector) { Class<E> referentialType = getReferentialEntityType(referentialDtoType); @@ -203,7 +229,7 @@ public class ValidateServiceTopia extends ObserveServiceTopia implements Validat } - protected void validateData(String dataId, ValidationMessageDetector detector) { + private void validateData(String dataId, ValidationMessageDetector detector) { Trip trip; @@ -229,13 +255,13 @@ public class ValidateServiceTopia extends ObserveServiceTopia implements Validat * @param beanTypes types des entités * @return le dictionnaire des validateurs par type d'entité. */ - protected ValidatorsMap getValidators(String context, Set<NuitonValidatorScope> scopes, ObserveEntityEnum... beanTypes) { + private ValidatorsMap getValidators(String context, Set<NuitonValidatorScope> scopes, ObserveEntityEnum... beanTypes) { ValidatorsMap result = new ValidatorsMap(); for (ObserveEntityEnum type : beanTypes) { // on cherche le validateur - ObserveValidator validator = getValidator(context, scopes, type.getContract()); + SimpleBeanValidator<?> validator = getValidator(context, scopes, type.getContract()); if (validator != null) { // on enregistre le validateur pour le contrat result.put(type.getContract(), validator); @@ -250,19 +276,19 @@ public class ValidateServiceTopia extends ObserveServiceTopia implements Validat /** * Obtenir le validateur d'un type objet * + * @param <B> type de l'objet à valider * @param context le nom du context de validation * @param scopes les scopes autorisés * @param klass type de l'objet à valider - * @param <B> type de l'objet à valider * @return le validateur trouvé ou {@code null} */ - protected <B extends TopiaEntity> ObserveValidator<B> getValidator(String context, - Set<NuitonValidatorScope> scopes, - Class<B> klass) { + private <B extends TopiaEntity> SimpleBeanValidator<B> getValidator(String context, + Set<NuitonValidatorScope> scopes, + Class<B> klass) { - ObserveValidator<B> valitator = ObserveValidator.newObserveValidator(klass, - context, - Iterables.toArray(scopes, NuitonValidatorScope.class)); + SimpleBeanValidator<B> valitator = SimpleBeanValidator.newValidator(klass, + context, + Iterables.toArray(scopes, NuitonValidatorScope.class)); Set<NuitonValidatorScope> effectiveScopes = valitator.getEffectiveScopes(); if (effectiveScopes.isEmpty()) { @@ -279,4 +305,12 @@ public class ValidateServiceTopia extends ObserveServiceTopia implements Validat } + private void initValidationEngine(ValidationDataContext validationDataContext) { + + ValueStack valueStack = XWork2ValidatorUtil.createValuestack(); + valueStack.push(validationDataContext); + ActionContext context = new ActionContext(valueStack.getContext()); + ActionContext.setContext(context); + + } } diff --git a/services-topia/src/main/java/fr/ird/observe/services/topia/service/actions/validate/ValidationDataContext.java b/services-topia/src/main/java/fr/ird/observe/services/topia/service/actions/validate/ValidationDataContext.java index 3958b4b..8a0b315 100644 --- a/services-topia/src/main/java/fr/ird/observe/services/topia/service/actions/validate/ValidationDataContext.java +++ b/services-topia/src/main/java/fr/ird/observe/services/topia/service/actions/validate/ValidationDataContext.java @@ -33,8 +33,11 @@ import fr.ird.observe.entities.seine.FloatingObject; import fr.ird.observe.entities.seine.Route; import fr.ird.observe.entities.seine.SetSeine; import fr.ird.observe.entities.seine.TripSeine; +import org.nuiton.util.DateUtil; +import java.util.Date; import java.util.List; +import java.util.Optional; /** * Contient les objets en cours de validation. @@ -44,25 +47,25 @@ import java.util.List; */ public class ValidationDataContext { - protected List<?> editingReferentielListEntity; + private List<?> editingReferentielListEntity; - protected Program programEntity; + private Program programEntity; - protected TripSeine tripSeineEntity; + private TripSeine tripSeineEntity; - protected TripLongline tripLonglineEntity; + private TripLongline tripLonglineEntity; - protected Route routeEntity; + private Route routeEntity; - protected ActivitySeine activitySeineEntity; + private ActivitySeine activitySeineEntity; - protected ActivityLongline activityLonglineEntity; + private ActivityLongline activityLonglineEntity; - protected SetSeine setSeineEntity; + private SetSeine setSeineEntity; - protected SetLongline setLonglineEntity; + private SetLongline setLonglineEntity; - protected FloatingObject floatingObjectEntity; + private FloatingObject floatingObjectEntity; public void clear() { editingReferentielListEntity = null; @@ -178,4 +181,46 @@ public class ValidationDataContext { this.editingReferentielListEntity = editingReferentielListEntity; } + // Ne pas supprimer, utilise dans la validation + public boolean isTimeAvailable(TripLongline trip, String activityId, Date time) { + boolean result = true; + if (trip.isActivityLonglineNotEmpty()) { + + Optional<ActivityLongline> first = trip.getActivityLongline().stream().filter(r -> !r.getTopiaId().equals(activityId) && DateUtil.getTime(time, true, false).equals(r.getTime())).findFirst(); + result = !first.isPresent(); + } + return result; + } + + // Ne pas supprimer, utilise dans la validation + public boolean isDateAvailable(TripSeine tripSeine, String routeId, Date date) { + boolean result = true; + if (tripSeine.isRouteNotEmpty()) { + + Optional<Route> first = tripSeine.getRoute().stream().filter(r -> !r.getTopiaId().equals(routeId) && DateUtil.getDay(date).equals(r.getDate())).findFirst(); + result = !first.isPresent(); + } + return result; + } + + // Ne pas supprimer, utilise dans la validation + public boolean isTimeAvailable(Route route, String activityId, Date time) { + boolean result = true; + if (route.isActivitySeineNotEmpty()) { + + Optional<ActivitySeine> first = route.getActivitySeine().stream().filter(r -> !r.getTopiaId().equals(activityId) && DateUtil.getTime(time, true, false).equals(r.getTime())).findFirst(); + result = !first.isPresent(); + } + return result; + } + + public float abs(Float f) { + return Math.abs(f); + } + + public float abs(Long f) { + return Math.abs(f); + } + + } diff --git a/services-topia/src/main/java/fr/ird/observe/services/topia/service/actions/validate/ValidationMessageDetector.java b/services-topia/src/main/java/fr/ird/observe/services/topia/service/actions/validate/ValidationMessageDetector.java index 8767f04..7fc724e 100644 --- a/services-topia/src/main/java/fr/ird/observe/services/topia/service/actions/validate/ValidationMessageDetector.java +++ b/services-topia/src/main/java/fr/ird/observe/services/topia/service/actions/validate/ValidationMessageDetector.java @@ -39,6 +39,7 @@ import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; import org.nuiton.topia.persistence.TopiaEntity; import org.nuiton.topia.persistence.TopiaEntityVisitor; +import org.nuiton.validator.bean.simple.SimpleBeanValidator; import org.nuiton.validator.bean.simple.SimpleBeanValidatorEvent; import org.nuiton.validator.bean.simple.SimpleBeanValidatorListener; @@ -176,7 +177,7 @@ public class ValidationMessageDetector { addPath(e); } explored.add(e); - ObserveValidator validator = getValidator(e.getClass()); + SimpleBeanValidator validator = getValidator(e.getClass()); if (validator != null) { validator.addSimpleBeanValidatorListener(this); @@ -243,7 +244,7 @@ public class ValidationMessageDetector { validationDataContext.clear(); // on reinitialise tous les validateurs - for (ObserveValidator<?> v : validators.values()) { + for (SimpleBeanValidator<?> v : validators.values()) { v.setBean(null); } } @@ -307,7 +308,7 @@ public class ValidationMessageDetector { } } - protected <T extends TopiaEntity> ObserveValidator<T> getValidator(Class<T> entityType) { + protected <T extends TopiaEntity> SimpleBeanValidator<T> getValidator(Class<T> entityType) { return validators.getValidator(entityType); } diff --git a/services-topia/src/main/java/fr/ird/observe/services/topia/service/actions/validate/ValidatorsMap.java b/services-topia/src/main/java/fr/ird/observe/services/topia/service/actions/validate/ValidatorsMap.java index cd767a4..d17f44c 100644 --- a/services-topia/src/main/java/fr/ird/observe/services/topia/service/actions/validate/ValidatorsMap.java +++ b/services-topia/src/main/java/fr/ird/observe/services/topia/service/actions/validate/ValidatorsMap.java @@ -28,7 +28,6 @@ import java.util.Collection; import java.util.EnumSet; import java.util.HashMap; import java.util.Map; -import java.util.Set; /** * Un dictionnaire de validateurs ordonnees par le type de leur bean. @@ -36,9 +35,9 @@ import java.util.Set; * @author Tony Chemit - chemit@codelutin.com * @since 2.1 */ -public class ValidatorsMap implements Map<Class<?>, ObserveValidator<?>> { +public class ValidatorsMap { - protected final Map<Class<?>, ObserveValidator<?>> delegate; + private final Map<Class<?>, SimpleBeanValidator<?>> delegate; public ValidatorsMap() { delegate = new HashMap<>(); @@ -47,74 +46,41 @@ public class ValidatorsMap implements Map<Class<?>, ObserveValidator<?>> { public NuitonValidatorScope[] getScopes() { EnumSet<NuitonValidatorScope> result = EnumSet.noneOf(NuitonValidatorScope.class); - for (SimpleBeanValidator<?> b : values()) { + for (SimpleBeanValidator<?> b : delegate.values()) { result.addAll(b.getScopes()); } return result.toArray(new NuitonValidatorScope[result.size()]); } - public <X> ObserveValidator<X> getValidator(Class<X> klass) { - return (ObserveValidator<X>) get(klass); + public <X> SimpleBeanValidator<X> getValidator(Class<X> klass) { + return (SimpleBeanValidator) get(klass); } - @Override public int size() { return delegate.size(); } - @Override public boolean isEmpty() { return delegate.isEmpty(); } - @Override - public boolean containsKey(Object key) { + public boolean containsKey(Class<?> key) { return delegate.containsKey(key); } - @Override - public boolean containsValue(Object value) { + public boolean containsValue(SimpleBeanValidator<?> value) { return delegate.containsValue(value); } - @Override - public ObserveValidator<?> get(Object key) { + public SimpleBeanValidator<?> get(Class<?> key) { return delegate.get(key); } - @Override - public ObserveValidator<?> put(Class<?> key, ObserveValidator<?> value) { + public SimpleBeanValidator<?> put(Class<?> key, SimpleBeanValidator<?> value) { return delegate.put(key, value); } - @Override - public ObserveValidator<?> remove(Object key) { - return delegate.remove(key); - } - - @Override - public void putAll(Map<? extends Class<?>, ? extends ObserveValidator<?>> m) { - delegate.putAll(m); - } - - @Override - public void clear() { - delegate.clear(); - } - - @Override - public Set<Class<?>> keySet() { - return delegate.keySet(); - } - - @Override - public Collection<ObserveValidator<?>> values() { + public Collection<SimpleBeanValidator<?>> values() { return delegate.values(); } - - @Override - public Set<Entry<Class<?>, ObserveValidator<?>>> entrySet() { - return delegate.entrySet(); - } - } -- To stop receiving notification emails like this one, please contact codelutin.com SCM administrator <admin+scm@codelutin.com>.